| | |
| | | itemCategory: string |
| | | } |
| | | |
| | | export type IndValueParam = { |
| | | itemNo: string |
| | | startDate: string |
| | | endTime: string |
| | | } |
| | | |
| | | // 查询列表 |
| | | export const getItemPage = (params: PageParam) => { |
| | |
| | | export const getItemCurrentData = (itemNo: string) => { |
| | | return request.get({ url: '/data/api/query-ind/default-value?itemNo=' + itemNo}) |
| | | } |
| | | |
| | | export const getItemValueData = (params: IndValueParam) => { |
| | | return request.get({ url: '/data/ind-item-value/getList', params}) |
| | | } |
| | |
| | | CAMERA_BRAND = 'camera_brand', |
| | | CAPTURE_TYPE = 'capture_type', |
| | | MODEL_RESULT_TYPE = 'model_result_type', |
| | | DATA_QUALITY = 'data_quality' |
| | | DATA_QUALITY = 'data_quality', |
| | | SOLIDIFY_FLAG = 'ind_solidify_flag' |
| | | } |
| | |
| | | <el-input v-model="formData.unit"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="固化标识" prop="solidifyFlag"> |
| | | <el-select v-model="formData.solidifyFlag" |
| | | clearable |
| | | filterable |
| | | allow-create |
| | | placeholder="请选择"> |
| | | <el-option |
| | | v-for="dict in getStrDictOptions(DICT_TYPE.SOLIDIFY_FLAG)" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | |
| | | timeRange: '', |
| | | timeGranularity: '', |
| | | remark: '', |
| | | solidifyFlag: '', |
| | | atomItem:{ |
| | | dataSource:'', |
| | | dataSet: '', |
| | |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="8"> |
| | | <el-col :span="6"> |
| | | <el-form-item label="指标精度" prop="precision"> |
| | | <el-input v-model="formData.precision"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-col :span="6"> |
| | | <el-form-item label="转换系数" prop="coefficient"> |
| | | <el-input v-model="formData.coefficient"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-col :span="6"> |
| | | <el-form-item label="数量单位" prop="unit"> |
| | | <el-input v-model="formData.unit"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="固化标识" prop="solidifyFlag"> |
| | | <el-select v-model="formData.solidifyFlag" |
| | | clearable |
| | | filterable |
| | | allow-create |
| | | placeholder="请选择"> |
| | | <el-option |
| | | v-for="dict in getStrDictOptions(DICT_TYPE.SOLIDIFY_FLAG)" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | |
| | | <el-input v-model="formData.unit"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="固化标识" prop="solidifyFlag"> |
| | | <el-select v-model="formData.solidifyFlag" |
| | | clearable |
| | | filterable |
| | | allow-create |
| | | placeholder="请选择"> |
| | | <el-option |
| | | v-for="dict in getStrDictOptions(DICT_TYPE.SOLIDIFY_FLAG)" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="6"> |
对比新文件 |
| | |
| | | <template> |
| | | <el-dialog |
| | | title="历史值" |
| | | :close-on-click-modal="false" |
| | | width="50%" |
| | | v-model="visible" |
| | | > |
| | | <el-form |
| | | :inline="true" |
| | | :model="dataForm" |
| | | @keydown.enter="getDataList()" |
| | | > |
| | | <el-form-item label="开始时间"> |
| | | <el-date-picker |
| | | size="mini" |
| | | v-model="dataForm.startTime" |
| | | format="YYYY-MM-DD HH:mm:00" |
| | | value-format="YYYY-MM-DD HH:mm:00" |
| | | type="datetime" |
| | | :clearable="false" |
| | | placeholder="选择日期时间"/> |
| | | </el-form-item> |
| | | <el-form-item label="结束时间"> |
| | | <el-date-picker |
| | | size="mini" |
| | | v-model="dataForm.endTime" |
| | | format="YYYY-MM-DD HH:mm:00" |
| | | value-format="YYYY-MM-DD HH:mm:00" |
| | | type="datetime" |
| | | :clearable="false" |
| | | placeholder="选择日期时间"/> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button @click="getDataList()">查询</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div ref="chartDom" class="result-chart" v-loading="loading"></div> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script lang="ts" setup> |
| | | import {ref} from 'vue'; |
| | | import * as echarts from 'echarts'; |
| | | import * as ItemApi from '@/api/data/ind/item/item' |
| | | import {getYMDHM0} from "@/utils/dateUtil" |
| | | import download from "@/utils/download"; |
| | | |
| | | const message = useMessage() // 消息弹窗 |
| | | const visible = ref(false); |
| | | const chartDom = ref(null); |
| | | let myChart = null; |
| | | const chartParams = reactive({ |
| | | itemNo: undefined, |
| | | startTime: undefined, |
| | | endTime: undefined, |
| | | }) |
| | | const dataForm = ref({ |
| | | id: "", |
| | | itemNo: "", |
| | | itemName: "", |
| | | startTime: getYMDHM0(new Date() - 60 * 60 * 1000), |
| | | endTime: "", |
| | | }); |
| | | |
| | | /** 打开弹窗 */ |
| | | const open = async (row: object) => { |
| | | visible.value = true |
| | | dataForm.value.id = row.id; |
| | | dataForm.value.itemNo = row.itemNo; |
| | | dataForm.value.itemName = row.itemName; |
| | | getDataList(); |
| | | } |
| | | |
| | | defineExpose({open}) // 提供 open 方法,用于打开弹窗 |
| | | |
| | | const loading = ref(false) |
| | | |
| | | async function getDataList() { |
| | | visible.value = true; |
| | | loading.value = true |
| | | if (dataForm.value.id) { |
| | | try { |
| | | chartParams.itemNo = dataForm.value.itemNo; |
| | | chartParams.startTime = dataForm.value.startTime; |
| | | chartParams.endTime = dataForm.value.endTime; |
| | | const result = await ItemApi.getItemValueData(chartParams) |
| | | loading.value = false |
| | | let xData = result.map(obj => obj['dataTime']); |
| | | let yData = result.map(obj => obj['dataValue']); |
| | | let data = xData.map((x, index) => [x, yData[index]]); |
| | | let seriesData = [] |
| | | seriesData.push({ |
| | | name: dataForm.value.itemName, |
| | | type: "line", |
| | | data: data, |
| | | showSymbol: true, |
| | | smooth: false, |
| | | lineStyle: { |
| | | normal: { |
| | | color: "#5B8FF9", |
| | | width: 1, |
| | | }, |
| | | }, |
| | | }); |
| | | |
| | | myChart = echarts.init(chartDom.value); |
| | | const option = { |
| | | title: { |
| | | text: dataForm.value.itemName, |
| | | top: 0, |
| | | left: "1%", |
| | | textStyle: { |
| | | fontSize: 14, |
| | | }, |
| | | }, |
| | | tooltip: { |
| | | trigger: "axis", |
| | | axisPointer: { |
| | | type: "line", |
| | | lineStyle: { |
| | | color: "#cccccc", |
| | | width: "1", |
| | | type: "dashed", |
| | | }, |
| | | }, |
| | | }, |
| | | legend: { |
| | | show: false, |
| | | top: 10, |
| | | }, |
| | | grid: { |
| | | top: 30, |
| | | left: "3%", |
| | | right: "5%", |
| | | bottom: 10, |
| | | containLabel: true, |
| | | }, |
| | | xAxis: { |
| | | type: "category", |
| | | boundaryGap: false, |
| | | data: xData, |
| | | }, |
| | | yAxis: { |
| | | type: "value", |
| | | }, |
| | | dataZoom: [ |
| | | { |
| | | type: "inside", |
| | | }, |
| | | ], |
| | | series: seriesData, |
| | | }; |
| | | myChart.setOption(option); |
| | | } catch (error) { |
| | | console.error(error) |
| | | } |
| | | } |
| | | } |
| | | |
| | | </script> |
| | | <style> |
| | | .el-select { |
| | | width: 100%; |
| | | } |
| | | |
| | | .result-chart { |
| | | height: 500px; |
| | | } |
| | | </style> |
| | |
| | | 修改 |
| | | </el-button> |
| | | <el-button |
| | | v-hasPermi="['data:ind-item:update']" |
| | | link |
| | | type="primary" |
| | | @click="getCurrentData(scope.row.itemNo)"> |
| | | 当前值 |
| | | </el-button> |
| | | <el-button |
| | | link |
| | | type="primary" |
| | | @click="getHistoryData(scope.row)"> |
| | | 历史值 |
| | | </el-button> |
| | | <el-button |
| | | v-hasPermi="['data:ind-item:delete']" |
| | |
| | | <DerIndDefineForm ref="derFormRef" @success="getList" /> |
| | | <CalIndDefineForm ref="calFormRef" @success="getList" /> |
| | | <SelectItemType ref="itemTypeSel"/> |
| | | <IndCurrentData ref="indCurrentData" /> |
| | | <IndCurrentData ref="indCurrentData"/> |
| | | <IndHistoryChart ref="indHistoryChart"/> |
| | | </template> |
| | | |
| | | <script lang="ts" setup> |
| | |
| | | import * as ItemApi from '@/api/data/ind/item/item' |
| | | import * as CategoryApi from "@/api/data/ind/category"; |
| | | import IndCurrentData from './IndCurrentData.vue' |
| | | import IndHistoryChart from './IndHistoryChart.vue' |
| | | import {handleTree} from "@/utils/tree"; |
| | | |
| | | |
| | |
| | | } |
| | | } |
| | | const indCurrentData = ref() |
| | | |
| | | const getCurrentData = (itemNo: string) => { |
| | | indCurrentData.value.open(itemNo) |
| | | } |
| | | |
| | | const indHistoryChart = ref() |
| | | const getHistoryData = (raw: object) => { |
| | | indHistoryChart.value.open(raw) |
| | | } |
| | | |
| | | /** 删除按钮操作 */ |
| | | const handleDelete = async (id: number) => { |
| | | try { |