From 7b1ce6433c5a0617ddb73e18bda610f925b709fd Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期二, 12 十一月 2024 14:12:04 +0800
Subject: [PATCH] 预测项详情

---
 src/views/model/pre/item/MmPredictItemForm.vue |   49 +++---
 /dev/null                                      |  140 --------------------
 src/api/model/pre/type/index.ts                |   43 ++++++
 src/views/model/pre/type/index.vue             |    2 
 src/views/model/pre/item/index.vue             |   10 +
 src/utils/dict.ts                              |    1 
 src/api/model/pre/item/index.ts                |  145 +++++++++++++++++---
 src/api/model/sche/model/index.ts              |    2 
 src/views/model/pre/type/ItemTypeForm.vue      |    2 
 src/views/model/pre/analysis/index.vue         |    2 
 10 files changed, 203 insertions(+), 193 deletions(-)

diff --git a/src/api/model/pre/item/index.ts b/src/api/model/pre/item/index.ts
index 795ca65..e27d8c4 100644
--- a/src/api/model/pre/item/index.ts
+++ b/src/api/model/pre/item/index.ts
@@ -1,43 +1,140 @@
 import request from '@/config/axios'
+import {UploadRequestOptions} from "element-plus/es/components/upload/src/upload";
 
-export interface MmItemTypeVO {
-  id: string
+export interface MmPredictItemVO {
+  id: string,
   itemtypename: string,
-  itemclasstype: string,
-  assemblyname: string
+  mmPredictItem: {
+    id: string,
+    itemno: string,
+    itemname: string,
+    caltypeid: string,
+    itemtypeid: string,
+    predictlength: string,
+    granularity: number,
+    status: string,
+    isfuse: number,
+    predictphase: string,
+    workchecked: number,
+    unittransfactor: string,
+    saveindex: string
+  },
+  dmModuleItem: {
+    id: string,
+    moduleid: string,
+    itemid: string,
+    itemorder: number,
+    status: number,
+    categoryid: string
+  },
+  mmItemOutput: {
+    id: string,
+    itemid: string,
+    pointid: string,
+    resulttableid: string,
+    tagname: string,
+    outputorder: number
+  },
+  mmPredictModel: {
+    id: string,
+    modelno: string,
+    modelname: string,
+    itemid: string,
+    arithid: string,
+    trainsamplength: number,
+    predictsamplength: string,
+    isonlinetrain: string,
+    modelpath: string,
+    isnormal: string,
+    normalmax: string,
+    normalmin: string,
+    status: number,
+    classname: string,
+    methodname: string,
+    modelparamstructure: string,
+    resultstrid: string,
+    settingmap: string
+  },
+  mmPredictMergeItem: {
+    id: string,
+    itemid: string,
+    expression: string,
+    num: string
+  },
+  modelparamtypeList: [],
+  mmModelArithSettingsList: [],
+  mmModelParamList: []
 }
 
-export interface MmItemTypePageReqVO extends PageParam {
-  itemtypename?: string
+export interface MmPredictItemPageReqVO extends PageParam {
+  itemno?: string,
+  itemname?: string,
 }
 
-// 查询MmItemType列表
-export const getMmItemTypePage = (params: MmItemTypePageReqVO) => {
-  return request.get({ url: '/model/pre/item-type/page', params })
+// 查询MmPredictItem列表
+export const getMmPredictItemPage = (params: MmPredictItemPageReqVO) => {
+  return request.get({ url: '/model/pre/item/page', params })
 }
 
-// 查询MmItemType详情
-export const getMmItemType = (id: number) => {
-  return request.get({ url: `/model/pre/item-type/get/${id}`})
+// 查询MmPredictItem详情
+export const getMmPredictItem = (id: number) => {
+  return request.get({ url: `/model/pre/item/get/${id}`})
 }
 
-// 新增MmItemType
-export const createMmItemType = (data: MmItemTypeVO) => {
-  return request.post({ url: '/model/pre/item-type/create', data })
+// 新增MmPredictItem
+export const createMmPredictItem = (data: MmPredictItemVO) => {
+  return request.post({ url: '/model/pre/item/create', data })
 }
 
-// 修改MmItemType
-export const updateMmItemType = (data: MmItemTypeVO) => {
-  return request.put({ url: '/model/pre/item-type/update', data })
+// 修改MmPredictItem
+export const updateMmPredictItem = (data: MmPredictItemVO) => {
+  return request.put({ url: '/model/pre/item/update', data })
 }
 
-// 删除MmItemType
-export const deleteMmItemType = (id: number) => {
-  return request.delete({ url: '/model/pre/item-type/delete?id=' + id })
+// 删除MmPredictItem
+export const deleteMmPredictItem = (id: number) => {
+  return request.delete({ url: '/model/pre/item/delete?id=' + id })
 }
 
+// 查询MmPredictItem列表
+export const getMmPredictItemList = (params) => {
+  return request.get({ url: `/model/pre/item/list`, params})
+}
 
-// 查询getItemTypeList详情
-export const getItemTypeList = () => {
-  return request.get({ url: `/model/pre/item-type/list`})
+export const updateModel = (data: any) => {
+  return request.upload({ url: '/model/pre/item/upload-model', data })
+}
+
+export const useUpload = () => {
+  const uploadUrl = import.meta.env.VITE_BASE_URL + '/admin-api/model/pre/item/upload-model'
+
+  const httpRequest = async (options: UploadRequestOptions) => {
+    return new Promise((resolve, reject) => {
+      updateModel({ file: options.file })
+        .then((res) => {
+          if (res.code === 0) {
+            resolve(res)
+          } else {
+            reject(res)
+          }
+        })
+        .catch((res) => {
+          reject(res)
+        })
+    })
+
+  }
+
+  return {
+    uploadUrl,
+    httpRequest
+  }
+}
+
+export const getMmPredictItemTree = () => {
+  return request.get({ url: `/model/pre/item/tree`})
+}
+
+export const getViewCharts = (params) => {
+  return request.get({ url: `/model/pre/item/view-charts`,params})
 }
diff --git a/src/api/model/pre/predict/index.ts b/src/api/model/pre/predict/index.ts
deleted file mode 100644
index e27d8c4..0000000
--- a/src/api/model/pre/predict/index.ts
+++ /dev/null
@@ -1,140 +0,0 @@
-import request from '@/config/axios'
-import {UploadRequestOptions} from "element-plus/es/components/upload/src/upload";
-
-export interface MmPredictItemVO {
-  id: string,
-  itemtypename: string,
-  mmPredictItem: {
-    id: string,
-    itemno: string,
-    itemname: string,
-    caltypeid: string,
-    itemtypeid: string,
-    predictlength: string,
-    granularity: number,
-    status: string,
-    isfuse: number,
-    predictphase: string,
-    workchecked: number,
-    unittransfactor: string,
-    saveindex: string
-  },
-  dmModuleItem: {
-    id: string,
-    moduleid: string,
-    itemid: string,
-    itemorder: number,
-    status: number,
-    categoryid: string
-  },
-  mmItemOutput: {
-    id: string,
-    itemid: string,
-    pointid: string,
-    resulttableid: string,
-    tagname: string,
-    outputorder: number
-  },
-  mmPredictModel: {
-    id: string,
-    modelno: string,
-    modelname: string,
-    itemid: string,
-    arithid: string,
-    trainsamplength: number,
-    predictsamplength: string,
-    isonlinetrain: string,
-    modelpath: string,
-    isnormal: string,
-    normalmax: string,
-    normalmin: string,
-    status: number,
-    classname: string,
-    methodname: string,
-    modelparamstructure: string,
-    resultstrid: string,
-    settingmap: string
-  },
-  mmPredictMergeItem: {
-    id: string,
-    itemid: string,
-    expression: string,
-    num: string
-  },
-  modelparamtypeList: [],
-  mmModelArithSettingsList: [],
-  mmModelParamList: []
-}
-
-export interface MmPredictItemPageReqVO extends PageParam {
-  itemno?: string,
-  itemname?: string,
-}
-
-// 查询MmPredictItem列表
-export const getMmPredictItemPage = (params: MmPredictItemPageReqVO) => {
-  return request.get({ url: '/model/pre/item/page', params })
-}
-
-// 查询MmPredictItem详情
-export const getMmPredictItem = (id: number) => {
-  return request.get({ url: `/model/pre/item/get/${id}`})
-}
-
-// 新增MmPredictItem
-export const createMmPredictItem = (data: MmPredictItemVO) => {
-  return request.post({ url: '/model/pre/item/create', data })
-}
-
-// 修改MmPredictItem
-export const updateMmPredictItem = (data: MmPredictItemVO) => {
-  return request.put({ url: '/model/pre/item/update', data })
-}
-
-// 删除MmPredictItem
-export const deleteMmPredictItem = (id: number) => {
-  return request.delete({ url: '/model/pre/item/delete?id=' + id })
-}
-
-// 查询MmPredictItem列表
-export const getMmPredictItemList = (params) => {
-  return request.get({ url: `/model/pre/item/list`, params})
-}
-
-export const updateModel = (data: any) => {
-  return request.upload({ url: '/model/pre/item/upload-model', data })
-}
-
-export const useUpload = () => {
-  const uploadUrl = import.meta.env.VITE_BASE_URL + '/admin-api/model/pre/item/upload-model'
-
-  const httpRequest = async (options: UploadRequestOptions) => {
-    return new Promise((resolve, reject) => {
-      updateModel({ file: options.file })
-        .then((res) => {
-          if (res.code === 0) {
-            resolve(res)
-          } else {
-            reject(res)
-          }
-        })
-        .catch((res) => {
-          reject(res)
-        })
-    })
-
-  }
-
-  return {
-    uploadUrl,
-    httpRequest
-  }
-}
-
-export const getMmPredictItemTree = () => {
-  return request.get({ url: `/model/pre/item/tree`})
-}
-
-export const getViewCharts = (params) => {
-  return request.get({ url: `/model/pre/item/view-charts`,params})
-}
diff --git a/src/api/model/pre/type/index.ts b/src/api/model/pre/type/index.ts
new file mode 100644
index 0000000..795ca65
--- /dev/null
+++ b/src/api/model/pre/type/index.ts
@@ -0,0 +1,43 @@
+import request from '@/config/axios'
+
+export interface MmItemTypeVO {
+  id: string
+  itemtypename: string,
+  itemclasstype: string,
+  assemblyname: string
+}
+
+export interface MmItemTypePageReqVO extends PageParam {
+  itemtypename?: string
+}
+
+// 查询MmItemType列表
+export const getMmItemTypePage = (params: MmItemTypePageReqVO) => {
+  return request.get({ url: '/model/pre/item-type/page', params })
+}
+
+// 查询MmItemType详情
+export const getMmItemType = (id: number) => {
+  return request.get({ url: `/model/pre/item-type/get/${id}`})
+}
+
+// 新增MmItemType
+export const createMmItemType = (data: MmItemTypeVO) => {
+  return request.post({ url: '/model/pre/item-type/create', data })
+}
+
+// 修改MmItemType
+export const updateMmItemType = (data: MmItemTypeVO) => {
+  return request.put({ url: '/model/pre/item-type/update', data })
+}
+
+// 删除MmItemType
+export const deleteMmItemType = (id: number) => {
+  return request.delete({ url: '/model/pre/item-type/delete?id=' + id })
+}
+
+
+// 查询getItemTypeList详情
+export const getItemTypeList = () => {
+  return request.get({ url: `/model/pre/item-type/list`})
+}
diff --git a/src/api/model/sche/model/index.ts b/src/api/model/sche/model/index.ts
index b0bf106..3c5b8bc 100644
--- a/src/api/model/sche/model/index.ts
+++ b/src/api/model/sche/model/index.ts
@@ -1,6 +1,6 @@
 import request from '@/config/axios'
 import * as DataPointApi from '@/api/data/da/point'
-import * as PredictItemApi from '@/api/model/pre/predict'
+import * as PredictItemApi from '@/api/model/pre/item'
 import {CommonEnabled} from "@/utils/constants";
 
 export interface ScheduleModelVO {
diff --git a/src/utils/dict.ts b/src/utils/dict.ts
index c3f922e..33fca5d 100644
--- a/src/utils/dict.ts
+++ b/src/utils/dict.ts
@@ -163,6 +163,7 @@
   MODEL_METHOD_SETTING_TYPE = 'model_method_setting_type',
   MODEL_METHOD_SETTING_VALUE_TYPE = 'model_method_setting_value_type',
   PRED_GRANULARITY = 'pred_granularity',
+  ITEM_RUN_STATUS = 'item_run_status',
 
   // ========== DATA - 数据平台模块  ==========
   DATA_FIELD_TYPE = 'data_field_type',
diff --git a/src/views/model/pre/analysis/index.vue b/src/views/model/pre/analysis/index.vue
index 5daac39..b21627a 100644
--- a/src/views/model/pre/analysis/index.vue
+++ b/src/views/model/pre/analysis/index.vue
@@ -172,7 +172,7 @@
   import * as CategoryApi from "@/api/data/ind/category";
   import * as DmModule from '@/api/model/pre/dm'
   import * as ItemApi from "@/api/data/ind/item/item";
-  import * as MmPredictItem from '@/api/model/pre/predict'
+  import * as MmPredictItem from '@/api/model/pre/item'
   import * as echarts from "echarts";
   import { onMounted, ref } from 'vue';
   import { Search, ArrowLeft, ArrowRight,} from '@element-plus/icons-vue'
diff --git a/src/views/model/pre/item/MmPredictItemForm.vue b/src/views/model/pre/item/MmPredictItemForm.vue
index 85fa6d6..2e72784 100644
--- a/src/views/model/pre/item/MmPredictItemForm.vue
+++ b/src/views/model/pre/item/MmPredictItemForm.vue
@@ -228,9 +228,9 @@
         :data="dataForm.mmModelArithSettingsList"
         border
         style="width: 100%; margin-top: 5px;">
-        <el-table-column prop="key" label="键" align="center"/>
-        <el-table-column prop="name" label="名称" align="center"/>
-        <el-table-column prop="valuetype" label="类型" align="center"/>
+        <el-table-column prop="key" label="键" align="center" min-width="150"/>
+        <el-table-column prop="name" label="名称" align="center" min-width="150"/>
+        <el-table-column prop="valuetype" label="类型" align="center" min-width="150"/>
         <el-table-column prop="" label="值" align="center" min-width="150">
           <template #default="scope">
             <el-input size="mini" v-model="scope.row.value" maxlength="256"
@@ -281,18 +281,18 @@
                              style="width:100%;hight:100%"/>
           </template>
         </el-table-column>
-        <el-table-column prop="" label="操作" width="140" align="center">
+        <el-table-column prop="" label="操作" width="120" align="center">
           <template #default="scope">
             <el-button
               @click="addRow(scope.$index, dataForm.mmModelParamList)"
               type="text"
-              size="small">
+              size="mini">
               添加
             </el-button>
             <el-button
               @click="deleteRow(scope.$index, dataForm.mmModelParamList)"
               type="text"
-              size="small">
+              size="mini">
               删除
             </el-button>
           </template>
@@ -317,8 +317,8 @@
               <el-option
                 v-for="(item, index) in predictItemList"
                 :key="index"
-                :label="item.name"
-                :value="item.code"/>
+                :label="item.itemname"
+                :value="item.itemno"/>
             </el-select>
           </template>
         </el-table-column>
@@ -331,7 +331,7 @@
           label="运算符"
           align="center">
           <template #default="scope">
-            <el-select v-model="scope.row.operator" placeholder="请选择">
+            <el-select v-model="scope.row.operator" placeholder="请选择" clearable>
               <el-option
                 v-for="item in operatorList"
                 :key="item"
@@ -370,13 +370,13 @@
 </template>
 <script lang="ts" setup>
 import {DICT_TYPE, getIntDictOptions, getStrDictOptions} from '@/utils/dict'
-import * as MmPredictItem from '@/api/model/pre/predict'
-import * as MmItemType from '@/api/model/pre/item'
+import * as MmPredictItem from '@/api/model/pre/item'
+import * as MmItemType from '@/api/model/pre/type'
 import * as DmModule from '@/api/model/pre/dm'
 import * as MmResultTable from '@/api/model/pre/result'
 import * as ProjectApi from '@/api/model/mpk/project'
 import * as DaPoint from '@/api/data/da/point'
-import {useUpload} from '@/api/model/pre/predict'
+import {useUpload} from '@/api/model/pre/item'
 import * as ScheduleModelApi from '@/api/model/sche/model'
 
 const {uploadUrl, httpRequest} = useUpload()
@@ -504,15 +504,6 @@
   resetForm()
   resetFields(dataForm.value)
   setDefaultFields()
-  // 修改时,设置数据
-  if (id) {
-    formLoading.value = true
-    try {
-      getInfo(id)
-    } finally {
-      /*formLoading.value = false*/
-    }
-  }
 
   // 加载参数列表
   modelparamListMap.value = await ScheduleModelApi.getModelParamList()
@@ -525,7 +516,6 @@
   if (!dataForm.value.id) {
     dataForm.value.mmPredictItem.itemtypeid = itemTypeList.value[0].id
   }
-  dataForm.value.itemtypename = itemTypeMap[dataForm.value.mmPredictItem.itemtypeid]
 
   // 获取管网列表
   moduleList.value = await DmModule.getModuleList()
@@ -536,6 +526,11 @@
   // 获取mpk项目列表
   mpkProjectList.value = await ProjectApi.list()
 
+  // 获取normal列表
+  predictItemList.value = await MmPredictItem.getMmPredictItemList({
+    itemtypename: 'NormalItem'
+  })
+
   // 获取数据点列表
   pointNoList.value = await DaPoint.getPointList(queryParams)
   if (pointNoList.value.length > 0) {
@@ -545,6 +540,15 @@
     })
   }
 
+  // 修改时,设置数据
+  if (id) {
+    formLoading.value = true
+    try {
+      getInfo(id)
+    } finally {
+      /*formLoading.value = false*/
+    }
+  }
   formLoading.value = false
 }
 defineExpose({open}) // 提供 open 方法,用于打开弹窗
@@ -609,6 +613,7 @@
 
 const getInfo = async (id) => {
   dataForm.value = await MmPredictItem.getMmPredictItem(id)
+  dataForm.value.itemtypename = itemTypeMap[dataForm.value.mmPredictItem.itemtypeid]
   expressionList.value = []
   if (dataForm.value.mmPredictMergeItem && dataForm.value.mmPredictMergeItem.expression) {
     let expression = dataForm.value.mmPredictMergeItem.expression
diff --git a/src/views/model/pre/item/index.vue b/src/views/model/pre/item/index.vue
index 53f57f6..1118ea6 100644
--- a/src/views/model/pre/item/index.vue
+++ b/src/views/model/pre/item/index.vue
@@ -81,8 +81,12 @@
         </template>
       </el-table-column>
       <el-table-column label="运行时间" align="center" prop="lastTime"/>
-      <el-table-column label="运行状态" align="center" prop="runStatus"/>
-      <el-table-column label="运行耗时" align="center" prop="duration"/>
+      <el-table-column label="运行状态" align="center" prop="runStatus">
+        <template #default="scope">
+          <dict-tag :type="DICT_TYPE.ITEM_RUN_STATUS" :value="scope.row.runStatus" />
+        </template>
+      </el-table-column>
+      <el-table-column label="运行耗时(s)" align="center" prop="duration"/>
       <el-table-column label="操作" align="center" min-width="120" fixed="right">
         <template #default="scope">
           <el-button
@@ -126,7 +130,7 @@
 <script lang="ts" setup>
 import MmPredictItemForm from './MmPredictItemForm.vue'
 import MmPredictItemChart from './MmPredictItemChart.vue'
-import * as MmPredictItem from '@/api/model/pre/predict'
+import * as MmPredictItem from '@/api/model/pre/item'
 import {DICT_TYPE} from "@/utils/dict";
 
 defineOptions({name: 'DataMmPredictItem'})
diff --git a/src/views/model/pre/type/ItemTypeForm.vue b/src/views/model/pre/type/ItemTypeForm.vue
index 5131d27..eb457f4 100644
--- a/src/views/model/pre/type/ItemTypeForm.vue
+++ b/src/views/model/pre/type/ItemTypeForm.vue
@@ -36,7 +36,7 @@
   </Dialog>
 </template>
 <script lang="ts" setup>
-import * as MmItemType from '@/api/model/pre/item'
+import * as MmItemType from '@/api/model/pre/type'
 
 defineOptions({name: 'DataMmItemTypeForm'})
 
diff --git a/src/views/model/pre/type/index.vue b/src/views/model/pre/type/index.vue
index 39d8216..601d7c1 100644
--- a/src/views/model/pre/type/index.vue
+++ b/src/views/model/pre/type/index.vue
@@ -82,7 +82,7 @@
 </template>
 <script lang="ts" setup>
 import MmItemTypeForm from './ItemTypeForm.vue'
-import * as MmItemType from '@/api/model/pre/item'
+import * as MmItemType from '@/api/model/pre/type'
 
 defineOptions({name: 'DataMmItemType'})
 

--
Gitblit v1.9.3