Merge remote-tracking branch 'origin/master'
| | |
| | | predictphase: string, |
| | | workchecked: number, |
| | | unittransfactor: string, |
| | | saveindex: string |
| | | saveindex: string, |
| | | iscumulant: number, |
| | | cumuldivisor: number, |
| | | cumulpoint: string |
| | | }, |
| | | dmModuleItem: { |
| | | id: string, |
| | |
| | | import {CommonEnabled} from "@/utils/constants"; |
| | | import {getItemList, ItemVO} from "@/api/data/plan/item"; |
| | | import * as ItemApi from '@/api/data/ind/item/item' |
| | | import {getPointSimpleList} from "@/api/data/da/point"; |
| | | |
| | | export interface ScheduleModelVO { |
| | | id: string |
| | |
| | | export const getModelParamList = async (id) => { |
| | | |
| | | const dataPointList = ref([] as DataPointApi.DaPointVO) |
| | | dataPointList.value = await DataPointApi.getPointList({}) |
| | | dataPointList.value = await DataPointApi.getPointSimpleList({}) |
| | | const pointList = [] |
| | | if (dataPointList.value) { |
| | | dataPointList.value.forEach(item => { |
| | |
| | | <ContentWrap v-if="dataForm.pointType === 'CALCULATE'"> |
| | | <el-table border stripe v-loading="tableLoading" :data="list"> |
| | | <el-table-column type="index" header-align="center" align="center" fixed="left" width="50"/> |
| | | <el-table-column fixed label="测点编码" header-align="center" align="left" min-width="130" prop="pointNo" /> |
| | | <el-table-column fixed label="测点编码" header-align="center" align="left" min-width="150" prop="pointNo" /> |
| | | <el-table-column fixed label="测点名称" header-align="center" align="left" min-width="240" prop="pointName" /> |
| | | <el-table-column fixed label="当前值" header-align="center" align="left" min-width="240" prop="currentValue" /> |
| | | <el-table-column fixed label="当前值" header-align="center" align="left" min-width="150" prop="currentValue" /> |
| | | </el-table> |
| | | <!-- 分页 --> |
| | | <Pagination |
| | |
| | | </el-table> |
| | | <!-- 分页 --> |
| | | <Pagination |
| | | v-model:limit="queryParams.limit" |
| | | v-model:page="queryParams.page" |
| | | v-model:limit="queryParams.pageSize" |
| | | v-model:page="queryParams.pageNo" |
| | | :total="total" |
| | | @pagination="getList" |
| | | /> |
| | |
| | | const total = ref(0) // 列表的总页数 |
| | | const list = ref([]) // 字典表格数据 |
| | | const queryParams = reactive({ |
| | | page: 1, |
| | | limit: 10, |
| | | pageNo: 1, |
| | | pageSize: 10, |
| | | configId: undefined, |
| | | title: undefined, |
| | | content: undefined, |
| | |
| | | <template> |
| | | <el-card shadow="never" class="aui-card--fill"> |
| | | <div class="mod-his__index"> |
| | | <el-form :inline="true" :model="formData" label-width="80px"> |
| | | <el-form :inline="true" :model="formData" label-width="70px"> |
| | | <el-form-item label="开始时间"> |
| | | <el-date-picker |
| | | v-model="formData.startTime" |
| | |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button-group> |
| | | <el-button type="primary" plain :icon="ArrowLeft" |
| | | <el-button type="primary" plain :icon="DArrowLeft" |
| | | :loading="loading1" @click="leftSearchDataByRange()"/> |
| | | <el-button type="primary" plain :icon="Search" |
| | | :loading="loading1" @click="getList()">查询 |
| | | </el-button> |
| | | <el-button type="primary" plain :icon="ArrowRight" |
| | | <el-button type="primary" plain :icon="DArrowRight" |
| | | :loading="loading1" @click="rightSearchDataByRange()"/> |
| | | </el-button-group> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button-group> |
| | | <el-button type="primary" plain :icon="CaretLeft" |
| | | @click="playChart(true)"/> |
| | | <el-button type="primary" plain :icon="VideoPlay" v-if="!isPlay" |
| | | @click="playHandle('play')"/> |
| | | <el-button type="primary" plain :icon="VideoPause" v-if="isPlay" |
| | | @click="playHandle('pause')"/> |
| | | <el-button type="primary" plain :icon="CaretRight" |
| | | @click="playChart(false)"/> |
| | | </el-button-group> |
| | | </el-form-item> |
| | | |
| | |
| | | </el-form> |
| | | <el-form :inline="true" :model="formData" label-width="100px"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-col :span="16"> |
| | | <el-form-item label="数据类型"> |
| | | <el-checkbox-group v-model="formData.chartCheck" @change="changeChartCheck"> |
| | | <el-checkbox v-for="item in formData.chartOptions" :label="item" |
| | |
| | | import {getYMDHMS} from "@/utils/dateUtil" |
| | | import * as McsApi from '@/api/model/mcs' |
| | | import * as echarts from "echarts"; |
| | | import {Search, ArrowLeft, ArrowRight,} from '@element-plus/icons-vue' |
| | | import {Search, DArrowLeft, DArrowRight, VideoPlay, VideoPause, CaretLeft, CaretRight} from '@element-plus/icons-vue' |
| | | |
| | | defineOptions({name: 'AnalysisformData'}) |
| | | |
| | |
| | | currentStamp60: '', |
| | | predictStamp: '', |
| | | chartCheck: ['T+L', '真实值'], |
| | | chartOptions: ['T+N', 'T+L', '当时', '真实值', '调整值'], |
| | | chartOptions: ['T+N', 'T+L', '当时', '真实值', '调整值', '预测累计', '真实累计'], |
| | | checkedItemData: [], |
| | | backItem: '', |
| | | backValue: 0, |
| | |
| | | const calRateFormRef = ref() |
| | | const calRateForm = ref({ |
| | | calItem: undefined, |
| | | IN_DEVIATION: 0, |
| | | OUT_DEVIATION: 0, |
| | | IN_DEVIATION: 10, |
| | | OUT_DEVIATION: 50, |
| | | IN_ACCURACY_RATE: 0, |
| | | OUT_ACCURACY_RATE: 0, |
| | | itemAvg: 0, |
| | |
| | | const itemDataObject = ref() |
| | | const timer = ref() |
| | | let myChart = null; |
| | | const isPlay = ref(false) |
| | | |
| | | const formRules = reactive({ |
| | | calItem: [{required: true, message: '预测项不能为空', trigger: 'blur'}], |
| | |
| | | }) |
| | | |
| | | /** 查询列表 */ |
| | | const getList = async () => { |
| | | const getList = async (isClear = true) => { |
| | | loading1.value = true |
| | | try { |
| | | if (!formData.value.chartCheck) { |
| | |
| | | formData.value.endTime = data.endTime |
| | | |
| | | let xAxisData = data.categories; |
| | | let defaultYAxis = [ |
| | | { |
| | | type: 'value', |
| | | name: "累计值", |
| | | splitLine: {show: false}, |
| | | axisLine: {show: true}, |
| | | position: 'right' |
| | | }, |
| | | { |
| | | type: 'value', |
| | | name: "", |
| | | splitLine: {show: false}, |
| | | axisLine: {show: true}, |
| | | position: 'left' |
| | | } |
| | | ]; |
| | | let yAxisData = []; |
| | | let offset = 0; |
| | | let yAxisIndex = 0; |
| | |
| | | }, |
| | | }); |
| | | itemDataObject.value = {} |
| | | yAxisData.push({ |
| | | type: 'value', |
| | | name: "累计值", |
| | | position: 'right', |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | axisLine: { |
| | | show: true, |
| | | lineStyle: {} |
| | | }, |
| | | axisLabel: { |
| | | formatter: '{value}' |
| | | } |
| | | }) |
| | | for (let i = 0; i < data.dataViewList.length; i++) { |
| | | let dataView = data.dataViewList[i] |
| | | itemDataObject.value[dataView.outId] = dataView; |
| | | let maxValue = dataView.maxValue; |
| | | let minValue = dataView.minValue; |
| | | yAxisIndex = formData.value.isMultipleY ? i : 0; |
| | | yAxisIndex = (formData.value.isMultipleY ? i : 0) + 1; |
| | | let yMax = maxValue; |
| | | if (maxValue < 0) { |
| | | maxValue = 1; |
| | |
| | | type: 'line', |
| | | yAxisIndex: yAxisIndex, |
| | | showSymbol: false, |
| | | smooth: true, |
| | | smooth: false, |
| | | lineStyle: { |
| | | width: 2 |
| | | } |
| | |
| | | } |
| | | if (chartCheckArray.indexOf('T+N') !== -1) { |
| | | let legendName = dataView.resultName + '(T+N)'; |
| | | legendData.push(legendName); |
| | | seriesData.push({ |
| | | name: legendName, |
| | | data: dataView.preDataN || [], |
| | | type: 'line', |
| | | yAxisIndex: yAxisIndex, |
| | | showSymbol: false, |
| | | smooth: true, |
| | | smooth: false, |
| | | lineStyle: { |
| | | width: 2 |
| | | } |
| | |
| | | showSymbol: false, |
| | | connectNulls: true, |
| | | yAxisIndex: yAxisIndex, |
| | | smooth: true, |
| | | smooth: false, |
| | | lineStyle: { |
| | | width: 2 |
| | | } |
| | |
| | | data: dataView.curData || [], |
| | | type: 'line', |
| | | yAxisIndex: yAxisIndex, |
| | | showSymbol: false, |
| | | smooth: true, |
| | | showSymbol: true, |
| | | smooth: false, |
| | | lineStyle: { |
| | | width: 2 |
| | | width: 3 |
| | | } |
| | | }); |
| | | } |
| | |
| | | yAxisIndex: yAxisIndex, |
| | | showSymbol: false, |
| | | connectNulls: true, |
| | | smooth: true, |
| | | smooth: false, |
| | | lineStyle: { |
| | | width: 2, |
| | | type: 'dashed' |
| | | } |
| | | }); |
| | | } |
| | | |
| | | if (chartCheckArray.indexOf('预测累计') !== -1) { |
| | | let legendName = dataView.resultName + '(预测累计)'; |
| | | legendData.push(legendName); |
| | | let seriesLeiJiData = [] |
| | | if (dataView.cumulantPreData) { |
| | | seriesLeiJiData = dataView.cumulantPreData |
| | | } |
| | | seriesData.push({ |
| | | name: legendName, |
| | | data: seriesLeiJiData, |
| | | type: 'line', |
| | | yAxisIndex: 0, |
| | | showSymbol: false, |
| | | connectNulls: true, |
| | | smooth: false, |
| | | lineStyle: { |
| | | width: 2, |
| | | type: 'dashed' |
| | | } |
| | | }); |
| | | } |
| | | |
| | | if (chartCheckArray.indexOf('真实累计') !== -1) { |
| | | let legendName = dataView.resultName + '(真实累计)'; |
| | | legendData.push(legendName); |
| | | let seriesLeiJiData = [] |
| | | if (dataView.cumulantRealData) { |
| | | seriesLeiJiData = dataView.cumulantRealData |
| | | } |
| | | seriesData.push({ |
| | | name: legendName, |
| | | data: seriesLeiJiData, |
| | | type: 'line', |
| | | yAxisIndex: 0, |
| | | showSymbol: false, |
| | | connectNulls: true, |
| | | smooth: false, |
| | | lineStyle: { |
| | | width: 2, |
| | | type: 'dashed' |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | myChart = echarts.init(dataAnalysisChart.value); |
| | | let option = { |
| | | title: { |
| | |
| | | boundaryGap: false, |
| | | data: xAxisData |
| | | }, |
| | | yAxis: formData.value.isMultipleY ? yAxisData : { |
| | | type: 'value', |
| | | splitLine: {show: false}, |
| | | axisLine: {show: true} |
| | | }, |
| | | yAxis: formData.value.isMultipleY ? yAxisData : defaultYAxis, |
| | | dataZoom: [ |
| | | { |
| | | type: 'inside', |
| | |
| | | ], |
| | | series: seriesData |
| | | } |
| | | if (isClear) { |
| | | myChart.clear() |
| | | } |
| | | myChart.setOption(option) |
| | | } finally { |
| | | loading1.value = false |
| | | } |
| | | |
| | | calItemBaseVale() |
| | | } |
| | | |
| | | onMounted(() => { |
| | |
| | | treeData.value = await McsApi.getPredictItemTree() |
| | | } |
| | | |
| | | function changeChartCheck(value) { |
| | | getList(true) |
| | | } |
| | | |
| | | function onChangeMultipleY() { |
| | | getList(true) |
| | | } |
| | | |
| | | function playChart(isBack = false) { |
| | | let mins = isBack ? formData.value.predictFreq * -1 : formData.value.predictFreq |
| | | let startTime = formData.value.startTime; |
| | | let endTime = formData.value.endTime; |
| | | let predictTime = formData.value.predictTime; |
| | | if (predictTime) { |
| | | predictTime = getYMDHMS(new Date(predictTime).getTime() + 1000 * 60 * mins); |
| | | formData.value.predictTime = predictTime; |
| | | } |
| | | if (startTime) { |
| | | startTime = getYMDHMS(new Date(startTime).getTime() + 1000 * 60 * mins); |
| | | formData.value.startTime = startTime; |
| | | } |
| | | if (endTime) { |
| | | endTime = getYMDHMS(new Date(endTime).getTime() + 1000 * 60 * mins); |
| | | formData.value.endTime = endTime; |
| | | } |
| | | getList(false); |
| | | } |
| | | |
| | | function playHandle(type) { |
| | | isPlay.value = 'play' === type |
| | | let doPlay = setInterval(function () { |
| | | if (isPlay.value) { |
| | | playChart() |
| | | } else { |
| | | clearInterval(doPlay); |
| | | } |
| | | if (new Date().getTime() - new Date(formData.value.predictTime).getTime() < 1000 * 60 ) { |
| | | isPlay.value = false |
| | | clearInterval(doPlay); |
| | | } |
| | | }, 1000) |
| | | } |
| | | |
| | | function leftSearchDataByRange() { |
| | | let mins = getRangeMins(); |
| | | let startTime = formData.value.startTime; |
| | | let endTime = formData.value.endTime; |
| | | let predictTime = formData.value.predictTime; |
| | | if (predictTime) { |
| | | predictTime = getYMDHMS(new Date(predictTime) - 1000 * 60 * mins); |
| | | predictTime = getYMDHMS(new Date(predictTime).getTime() - 1000 * 60 * mins); |
| | | formData.value.predictTime = predictTime; |
| | | } |
| | | if (startTime) { |
| | | startTime = getYMDHMS(new Date(startTime) - 1000 * 60 * mins); |
| | | startTime = getYMDHMS(new Date(startTime).getTime() - 1000 * 60 * mins); |
| | | formData.value.startTime = startTime; |
| | | } |
| | | if (endTime) { |
| | | endTime = getYMDHMS(new Date(endTime) - 1000 * 60 * mins); |
| | | endTime = getYMDHMS(new Date(endTime).getTime() - 1000 * 60 * mins); |
| | | formData.value.endTime = endTime; |
| | | } |
| | | getList(); |
| | | getList(false); |
| | | } |
| | | |
| | | function getRangeMins() { |
| | |
| | | function onCheckTree(data, checked, indeterminate) { |
| | | formData.value.checkedItemData = []; |
| | | if (checked.checkedNodes) { |
| | | formData.value.checkedItemData = [...checked.checkedNodes] |
| | | let cns = [...checked.checkedNodes] |
| | | for (let i = 0; i < cns.length; i++) { |
| | | if (cns[i].id.indexOf('-') !== -1) { |
| | | continue |
| | | } |
| | | formData.value.checkedItemData.push(cns[i]) |
| | | } |
| | | } |
| | | debounce(getList, 1000); |
| | | } |
| | |
| | | calRateForm.value.itemAvg = dataView.hisAvg; |
| | | calRateForm.value.realCumulant = dataView.hisCumulant; |
| | | } |
| | | calAccuracyRate() |
| | | } |
| | | |
| | | function calAccuracyRate() { |
| | | this.$refs['calRateForm'].validate((valid) => { |
| | | if (!valid) { |
| | | return false |
| | | } |
| | | let dataView = itemDataObject[calRateForm.value.calItem] |
| | | const valid = calRateFormRef.value.validate() |
| | | if (!valid) return |
| | | |
| | | let dataView = itemDataObject.value[calRateForm.value.calItem] |
| | | let seriesReaData = dataView.realData; |
| | | let seriesPreData = dataView.preDataL; |
| | | if (seriesReaData == null || seriesPreData == null || |
| | |
| | | calRateForm.value.IN_ACCURACY_RATE = Number(rateIn); |
| | | calRateForm.value.OUT_ACCURACY_RATE = Number(rateOut); |
| | | loading2.value = false; |
| | | }) |
| | | } |
| | | |
| | | function rightSearchDataByRange() { |
| | |
| | | let endTime = formData.value.endTime; |
| | | let predictTime = formData.value.predictTime; |
| | | if (predictTime) { |
| | | predictTime = getYMDHMS(new Date(predictTime) - 0 + 1000 * 60 * mins); |
| | | predictTime = getYMDHMS(new Date(predictTime).getTime() + 1000 * 60 * mins); |
| | | formData.value.predictTime = predictTime; |
| | | } |
| | | if (startTime) { |
| | | startTime = getYMDHMS(new Date(startTime) - 0 + 1000 * 60 * mins); |
| | | startTime = getYMDHMS(new Date(startTime).getTime() + 1000 * 60 * mins); |
| | | formData.value.startTime = startTime; |
| | | } |
| | | if (endTime) { |
| | | endTime = getYMDHMS(new Date(endTime) - 0 + 1000 * 60 * mins); |
| | | endTime = getYMDHMS(new Date(endTime).getTime() + 1000 * 60 * mins); |
| | | formData.value.endTime = endTime; |
| | | } |
| | | getList(); |
| | | getList(false); |
| | | } |
| | | |
| | | /** 重置表单 */ |
| | |
| | | currentStamp60: '', |
| | | predictStamp: '', |
| | | chartCheck: ['T+L', '真实值'], |
| | | chartOptions: ['T+N', 'T+L', '当时', '真实值', '调整值'], |
| | | chartOptions: ['T+N', 'T+L', '当时', '真实值', '调整值', '预测累计', '真实累计'], |
| | | checkedItemData: [], |
| | | backItem: '', |
| | | backValue: 0, |
| | |
| | | queryStep: 2, |
| | | isMultipleYRadio: '单坐标轴', |
| | | isMultipleY: false, |
| | | predictFreq: 3, |
| | | predictFreq: 2, |
| | | } |
| | | calRateForm.value = { |
| | | calItem: undefined, |
| | | IN_DEVIATION: 0, |
| | | OUT_DEVIATION: 0, |
| | | IN_DEVIATION: 10, |
| | | OUT_DEVIATION: 50, |
| | | IN_ACCURACY_RATE: 0, |
| | | OUT_ACCURACY_RATE: 0, |
| | | itemAvg: 0, |
| | |
| | | }, |
| | | }, |
| | | }) |
| | | //累计点 |
| | | if(viewData.cumulantRealData) { |
| | | legendData.push(key + "累计:" + '真实值') |
| | | seriesData.push({ |
| | | name: key + "累计:" + '真实值', |
| | | type: "line", |
| | | data: viewData.cumulantRealData, |
| | | showSymbol: false, |
| | | smooth: false, |
| | | lineStyle: { |
| | | normal: { |
| | | width: 1, |
| | | }, |
| | | }, |
| | | yAxisIndex: 1 |
| | | }) |
| | | } |
| | | if(viewData.cumulantPreData) { |
| | | legendData.push(key + "累计:" + '预测值') |
| | | seriesData.push({ |
| | | name: key + "累计:" + '预测值', |
| | | type: "line", |
| | | data: viewData.cumulantPreData, |
| | | showSymbol: false, |
| | | smooth: false, |
| | | lineStyle: { |
| | | normal: { |
| | | width: 1, |
| | | }, |
| | | }, |
| | | yAxisIndex: 1 |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | |
| | | boundaryGap: false, |
| | | data: data.categories, |
| | | }, |
| | | yAxis: { |
| | | yAxis: [ |
| | | { |
| | | type: "value", |
| | | name: '预测值/真实值' |
| | | }, |
| | | { |
| | | type: "value", |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | name: '累计值' |
| | | } |
| | | ], |
| | | dataZoom: [ |
| | | { |
| | | type: "inside", |
| | |
| | | <template> |
| | | <Dialog v-model="dialogVisible" :title="dialogTitle" width="60%"> |
| | | <Dialog v-model="dialogVisible" :title="dialogTitle" width="75%"> |
| | | <el-form |
| | | ref="formRef" |
| | | v-loading="formLoading" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row v-if="dataForm.itemtypename === 'MergeItem'"> |
| | | <div v-if="dataForm.itemtypename === 'MergeItem'"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="预测长度" prop="mmPredictItem.predictlength"> |
| | | <el-input |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-divider content-position="left">累计配置</el-divider> |
| | | <el-row> |
| | | <el-col :span="6"> |
| | | <el-form-item label="是否累计" prop="iscumulant"> |
| | | <el-select v-model="dataForm.iscumulant" placeholder="请选择" @change="(value) => iscumulantChange(dataForm)"> |
| | | <el-option |
| | | v-for="dict in getIntDictOptions(DICT_TYPE.COM_IS_INT)" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="累计除数" prop="cumuldivisor"> |
| | | <el-input-number v-model="dataForm.cumuldivisor" style="width: 100%" :disabled="dataForm.iscumulant !== 1" |
| | | :min="1" :max="60" |
| | | :controls="false"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="累计测点"> |
| | | <el-select |
| | | v-model="dataForm.cumulpoint" :disabled="dataForm.iscumulant !== 1" |
| | | filterable |
| | | clearable |
| | | placeholder="请选择"> |
| | | <el-option |
| | | v-for="item in pointList.filter(e => e.pointType === 'CUMULATE')" |
| | | :key="item.id" |
| | | :label="item.pointName" |
| | | :value="item.id"/> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <el-divider content-position="left" v-if="dataForm.itemtypename === 'NormalItem'">模型信息 |
| | | </el-divider> |
| | | <el-row :gutter="8" v-if="dataForm.itemtypename === 'NormalItem'"> |
| | |
| | | placeholder="请选择"> |
| | | <el-option |
| | | v-for="item in pointList" |
| | | :key="item.id" |
| | | :label="item.pointName" |
| | | :value="item.id"/> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="是否累计" align="center" width="150px"> |
| | | <template #default="scope"> |
| | | <el-select v-model="scope.row.iscumulant" placeholder="请选择" @change="(value) => iscumulantChange(scope.row)"> |
| | | <el-option |
| | | v-for="dict in getIntDictOptions(DICT_TYPE.COM_IS_INT)" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value" |
| | | /> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="累计除数" align="center" width="100px"> |
| | | <template #default="scope"> |
| | | <el-input-number v-model="scope.row.cumuldivisor" style="width: 100%" |
| | | :min="1" :max="60" :disabled="scope.row.iscumulant !== 1" |
| | | :controls="false"/> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="累计数据点" align="center"> |
| | | <template #default="scope"> |
| | | <el-select |
| | | v-model="scope.row.cumulpoint" |
| | | :disabled="scope.row.iscumulant !== 1" |
| | | filterable |
| | | clearable |
| | | placeholder="请选择"> |
| | | <el-option |
| | | v-for="item in pointList.filter(e => e.pointType === 'CUMULATE')" |
| | | :key="item.id" |
| | | :label="item.pointName" |
| | | :value="item.id"/> |
| | |
| | | import * as DaPoint from '@/api/data/da/point' |
| | | import {useUpload} from '@/api/model/pre/item' |
| | | import * as ScheduleModelApi from '@/api/model/sche/model' |
| | | import {getPointSimpleList} from "@/api/data/da/point"; |
| | | |
| | | const {uploadUrl, httpRequest} = useUpload() |
| | | |
| | |
| | | predictphase: undefined, |
| | | workchecked: 0, |
| | | unittransfactor: undefined, |
| | | saveindex: undefined |
| | | saveindex: undefined, |
| | | }, |
| | | dmModuleItem: { |
| | | id: undefined, |
| | |
| | | }, |
| | | mmModelArithSettingsList: [], |
| | | mmModelParamList: [], |
| | | pointId: undefined |
| | | pointId: undefined, |
| | | iscumulant: 0, |
| | | cumuldivisor: undefined, |
| | | cumulpoint: undefined, |
| | | }) |
| | | const formRules = reactive({ |
| | | 'mmPredictItem.itemname': [{required: true, message: '预测项名不能为空', trigger: 'blur'}], |
| | |
| | | trigger: 'blur' |
| | | }], |
| | | 'mmPredictItem.status': [{required: true, message: '是否启用不能为空', trigger: 'blur'}], |
| | | 'iscumulant': [{required: true, message: '是否累计不能为空', trigger: 'blur'}], |
| | | 'dmModuleItem.moduleid': [{required: true, message: '管网不能为空', trigger: 'blur'}], |
| | | 'dmModuleItem.itemorder': [{required: true, message: '排序不能为空', trigger: 'blur'}], |
| | | 'mmPredictItem.predictlength': [{required: true, message: '预测长度不能为空', trigger: 'blur'}], |
| | |
| | | mpkProjectList.value = await ProjectApi.list() |
| | | |
| | | // 获取数据点列表 |
| | | pointNoList.value = await DaPoint.getPointList(queryParams) |
| | | pointNoList.value = await DaPoint.getPointSimpleList(queryParams) |
| | | if (pointNoList.value.length > 0) { |
| | | pointList.value = [] |
| | | pointNoList.value.forEach(function (value) { |
| | |
| | | if (!formRef) return |
| | | const valid = await formRef.value.validate() |
| | | if (!valid) return |
| | | //校验累计配置 |
| | | if (dataForm.value.iscumulant === 1) { |
| | | if (dataForm.value.cumuldivisor == undefined) { |
| | | message.error("累计除数不为空") |
| | | return |
| | | } |
| | | } |
| | | //校验模型输出 |
| | | if (dataForm.value.itemtypename === 'NormalItem') { |
| | | if (dataForm.value.mmItemOutputList == undefined || dataForm.value.mmItemOutputList.length <= 0) { |
| | |
| | | |
| | | let flag = false |
| | | dataForm.value.mmItemOutputList.forEach(e => { |
| | | if (e.resultstr == undefined || e.resultstr === '' || e.resultType == undefined || e.resultType === '' || (e.resultType === 2 && (e.resultIndex == undefined || e.resultIndex === ''))) { |
| | | if (e.resultstr == undefined || e.resultstr === '' || e.resultType == undefined || e.resultType === '' |
| | | || (e.resultType === 2 && (e.resultIndex == undefined || e.resultIndex === '')) |
| | | || (e.iscumulant === 1 && e.cumuldivisor == undefined) |
| | | ) { |
| | | message.error("模型输出数据异常") |
| | | flag = true |
| | | return |
| | |
| | | row.resultIndex = 0 |
| | | } |
| | | } |
| | | function iscumulantChange(row) { |
| | | row.cumuldivisor = undefined |
| | | row.cumulpoint = undefined |
| | | } |
| | | |
| | | function orderRow(rows) { |
| | | let modelparamorder = 0 |
| | |
| | | predictphase: '', |
| | | workchecked: 0, |
| | | unittransfactor: '', |
| | | saveindex: '' |
| | | saveindex: '', |
| | | }, |
| | | dmModuleItem: { |
| | | id: '', |
| | |
| | | itemid: '', |
| | | expression: '', |
| | | num: '' |
| | | } |
| | | }, |
| | | iscumulant: 0, |
| | | cumuldivisor: undefined, |
| | | cumulpoint: '', |
| | | } |
| | | formRef.value?.resetFields() |
| | | } |