From cd9f113e55f8bf78065861f21c687283e0af4221 Mon Sep 17 00:00:00 2001 From: liriming <1343021927@qq.com> Date: 星期一, 23 九月 2024 09:05:56 +0800 Subject: [PATCH] pre模块修改 --- src/views/model/pre/dm/index.vue | 6 src/views/model/pre/item/index.vue | 6 src/views/model/pre/predict/index.vue | 6 src/api/data/da/point/index.ts | 5 src/api/model/pre/item/index.ts | 16 src/api/model/pre/result/index.ts | 21 + src/api/model/sche/model/index.ts | 9 src/views/model/pre/predict/MmPredictItemForm.vue | 775 +++++++++++++++++++++++++++++++++++++++++++---- src/api/model/pre/dm/index.ts | 5 src/views/model/pre/result/index.vue | 18 src/api/model/pre/predict/index.ts | 91 ++++- 11 files changed, 833 insertions(+), 125 deletions(-) diff --git a/src/api/data/da/point/index.ts b/src/api/data/da/point/index.ts index 0b55b99..f10d933 100644 --- a/src/api/data/da/point/index.ts +++ b/src/api/data/da/point/index.ts @@ -28,6 +28,11 @@ return request.get({ url: '/data/da/point/page', params }) } +// 查询DaPoint列表 +export const getPointList = (params: DaPointPageReqVO) => { + return request.get({ url: '/data/da/point/list', params }) +} + // 查询DaPoint详情 export const getDaPoint = (id: number) => { return request.get({ url: `/data/da/point/info/${id}`}) diff --git a/src/api/model/pre/dm/index.ts b/src/api/model/pre/dm/index.ts index 2dd925c..042614b 100644 --- a/src/api/model/pre/dm/index.ts +++ b/src/api/model/pre/dm/index.ts @@ -36,3 +36,8 @@ export const deleteDmModule = (id: number) => { return request.delete({ url: '/model/pre/module/delete?id=' + id }) } + +// 查询getModuleList详情 +export const getModuleList = () => { + return request.get({ url: `/model/pre/module/list`}) +} diff --git a/src/api/model/pre/item/index.ts b/src/api/model/pre/item/index.ts index 30a9017..795ca65 100644 --- a/src/api/model/pre/item/index.ts +++ b/src/api/model/pre/item/index.ts @@ -13,25 +13,31 @@ // 查询MmItemType列表 export const getMmItemTypePage = (params: MmItemTypePageReqVO) => { - return request.get({ url: '/pre/item-type/page', params }) + return request.get({ url: '/model/pre/item-type/page', params }) } // 查询MmItemType详情 export const getMmItemType = (id: number) => { - return request.get({ url: `/pre/item-type/get/${id}`}) + return request.get({ url: `/model/pre/item-type/get/${id}`}) } // 新增MmItemType export const createMmItemType = (data: MmItemTypeVO) => { - return request.post({ url: '/pre/item-type/create', data }) + return request.post({ url: '/model/pre/item-type/create', data }) } // 修改MmItemType export const updateMmItemType = (data: MmItemTypeVO) => { - return request.put({ url: '/pre/item-type/update', data }) + return request.put({ url: '/model/pre/item-type/update', data }) } // 删除MmItemType export const deleteMmItemType = (id: number) => { - return request.delete({ url: '/pre/item-type/delete?id=' + id }) + 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/pre/predict/index.ts b/src/api/model/pre/predict/index.ts index 3b0798e..2059286 100644 --- a/src/api/model/pre/predict/index.ts +++ b/src/api/model/pre/predict/index.ts @@ -1,22 +1,68 @@ import request from '@/config/axios' export interface MmPredictItemVO { - id: string - itemno: string, - itemname: string, - itemtypeid: string, + id: string, itemtypename: string, - granularity: number, - isfuse: number, - workchecked: number, - moduleid: string, - itemorder: number, - status: number, - categoryid: string, - pointid: string, - tagname: string, - resulttableid: string, - tablename: 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: string, + 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 { @@ -26,25 +72,30 @@ // 查询MmPredictItem列表 export const getMmPredictItemPage = (params: MmPredictItemPageReqVO) => { - return request.get({ url: '/pre/result-table/page', params }) + return request.get({ url: '/model/pre/predict-item/page', params }) } // 查询MmPredictItem详情 export const getMmPredictItem = (id: number) => { - return request.get({ url: `/pre/result-table/get/${id}`}) + return request.get({ url: `/model/pre/predict-item/get/${id}`}) } // 新增MmPredictItem export const createMmPredictItem = (data: MmPredictItemVO) => { - return request.post({ url: '/pre/result-table/create', data }) + return request.post({ url: '/model/pre/predict-item/create', data }) } // 修改MmPredictItem export const updateMmPredictItem = (data: MmPredictItemVO) => { - return request.put({ url: '/pre/result-table/update', data }) + return request.put({ url: '/model/pre/predict-item/update', data }) } // 删除MmPredictItem export const deleteMmPredictItem = (id: number) => { - return request.delete({ url: '/pre/result-table/delete?id=' + id }) + return request.delete({ url: '/model/pre/predict-item/delete?id=' + id }) +} + +// 查询getMmPredictItemList详情 +export const getMmPredictItemList = () => { + return request.get({ url: `/model/pre/predict-item/list`}) } diff --git a/src/api/model/pre/result/index.ts b/src/api/model/pre/result/index.ts index 04ad0fb..5561e94 100644 --- a/src/api/model/pre/result/index.ts +++ b/src/api/model/pre/result/index.ts @@ -11,25 +11,36 @@ // 查询MmResultTable列表 export const getMmResultTablePage = (params: MmResultTablePageReqVO) => { - return request.get({ url: '/pre/predict-item/page', params }) + return request.get({ url: '/model/pre/result-table/page', params }) } // 查询MmResultTable详情 export const getMmResultTable = (id: number) => { - return request.get({ url: `/pre/predict-item/get/${id}`}) + return request.get({ url: `/model/pre/result-table/get/${id}`}) } // 新增MmResultTable export const createMmResultTable = (data: MmResultTableVO) => { - return request.post({ url: '/pre/predict-item/create', data }) + return request.post({ url: '/model/pre/result-table/create', data }) } // 修改MmResultTable export const updateMmResultTable = (data: MmResultTableVO) => { - return request.put({ url: '/pre/predict-item/update', data }) + return request.put({ url: '/model/pre/result-table/update', data }) } // 删除MmResultTable export const deleteMmResultTable = (id: number) => { - return request.delete({ url: '/pre/predict-item/delete?id=' + id }) + return request.delete({ url: '/model/pre/result-table/delete?id=' + id }) +} + + +// 查询getResulttableList详情 +export const getResulttableList = () => { + return request.get({ url: `/model/pre/result-table/list`}) +} + +// 查询getResulttableList详情 +export const getResultstridList = () => { + return request.get({ url: `/model/pre/model-resultstr/list`}) } diff --git a/src/api/model/sche/model/index.ts b/src/api/model/sche/model/index.ts index cece2cf..6fd6866 100644 --- a/src/api/model/sche/model/index.ts +++ b/src/api/model/sche/model/index.ts @@ -25,6 +25,10 @@ datalength: number } +export interface WorkPrecessParamVO { + processType: string +} + export interface ScheduleModelPageReqVO extends PageParam { modelCode?: string modelName?: string @@ -64,3 +68,8 @@ export const getModelParamList = (modelparamListMap) => { modelparamListMap['point'] = [] } + +// 查询getScheduleWorkPrecessList列表 +export const getScheduleWorkPrecessList = (data: WorkPrecessParamVO) => { + return request.get({ url: '/model/sche/model/work-process/list/all'},data) +} diff --git a/src/views/model/pre/dm/index.vue b/src/views/model/pre/dm/index.vue index dd14eee..cc14b63 100644 --- a/src/views/model/pre/dm/index.vue +++ b/src/views/model/pre/dm/index.vue @@ -30,7 +30,7 @@ type="primary" plain @click="openForm('create')" - v-hasPermi="['system:tenant:create']" + v-hasPermi="['model:pre-module:create']" > <Icon icon="ep:plus" class="mr-5px" /> 新增 @@ -55,7 +55,7 @@ link type="primary" @click="openForm('update', scope.row.id)" - v-hasPermi="['system:tenant:update']" + v-hasPermi="['model:pre-module:update']" > 编辑 </el-button> @@ -63,7 +63,7 @@ link type="danger" @click="handleDelete(scope.row.id)" - v-hasPermi="['system:tenant:delete']" + v-hasPermi="['model:pre-module:delete']" > 删除 </el-button> diff --git a/src/views/model/pre/item/index.vue b/src/views/model/pre/item/index.vue index 21df860..99562f7 100644 --- a/src/views/model/pre/item/index.vue +++ b/src/views/model/pre/item/index.vue @@ -30,7 +30,7 @@ type="primary" plain @click="openForm('create')" - v-hasPermi="['system:tenant:create']" + v-hasPermi="['model:pre-item:create']" > <Icon icon="ep:plus" class="mr-5px" /> 新增 @@ -52,7 +52,7 @@ link type="primary" @click="openForm('update', scope.row.id)" - v-hasPermi="['system:tenant:update']" + v-hasPermi="['model:pre-item:update']" > 编辑 </el-button> @@ -60,7 +60,7 @@ link type="danger" @click="handleDelete(scope.row.id)" - v-hasPermi="['system:tenant:delete']" + v-hasPermi="['model:pre-item:delete']" > 删除 </el-button> diff --git a/src/views/model/pre/predict/MmPredictItemForm.vue b/src/views/model/pre/predict/MmPredictItemForm.vue index 9117ab0..7e1b8b9 100644 --- a/src/views/model/pre/predict/MmPredictItemForm.vue +++ b/src/views/model/pre/predict/MmPredictItemForm.vue @@ -3,101 +3,355 @@ <el-form ref="formRef" v-loading="formLoading" - :model="formData" + :model="dataForm" :rules="formRules" label-width="120px" > + <el-divider content-position="left">基本信息</el-divider> <el-row> <el-col :span="12"> - <el-form-item label="编号" prop="itemno"> - <el-input v-model="formData.itemno" placeholder="请输入编号"/> + <el-form-item label="预测项名" prop="mmPredictItem.itemname"> + <el-input v-model="dataForm.mmPredictItem.itemname" placeholder="预测项名" + maxlength="50" + clearable/> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="预测项名" prop="itemname"> - <el-input v-model="formData.itemname" placeholder="请输入预测项名"/> + <el-form-item label="编号" prop="mmPredictItem.itemno"> + <el-input v-model="dataForm.mmPredictItem.itemno" placeholder="编号" maxlength="50" + clearable/> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> - <el-form-item label="类型ID" prop="itemtypeid"> - <el-input v-model="formData.itemtypeid" placeholder="请输入类型ID"/> + <el-form-item label="类型" prop="mmPredictItem.itemtypeid"> + <el-select v-model="dataForm.mmPredictItem.itemtypeid" + @change="changeItemtype" + placeholder="请选择"> + <el-option + v-for="item in itemTypeList" + :key="item.id" + :label="item.itemtypename" + :value="item.id"/> + </el-select> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="类型名称" prop="itemtypename"> - <el-input v-model="formData.itemtypename" placeholder="请输入类型名称"/> + <el-form-item label="粒度" prop="mmPredictItem.granularity"> + <el-input v-model="dataForm.mmPredictItem.granularity" placeholder="粒度" maxlength="5" + clearable/> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> - <el-form-item label="粒度" prop="granularity"> - <el-input v-model="formData.granularity" placeholder="请输入粒度"/> + <el-form-item label="是否检查" prop="mmPredictItem.workchecked"> + <el-select v-model="dataForm.mmPredictItem.workchecked" placeholder="请选择"> + <el-option + v-for="item in isList" + :key="item.code" + :label="item.name" + :value="item.code"/> + </el-select> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="是否融合" prop="isfuse"> - <el-input v-model="formData.isfuse" placeholder="请输入是否融合"/> + <el-form-item label="是否启用" prop="dmModuleItem.status"> + <el-select v-model="dataForm.dmModuleItem.status" placeholder="请选择"> + <el-option + v-for="item in isList" + :key="item.code" + :label="item.name" + :value="item.code"/> + </el-select> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> - <el-form-item label="是否检查" prop="workchecked"> - <el-input v-model="formData.workchecked" placeholder="请输入是否检查"/> + <el-form-item label="管网" prop="dmModuleItem.moduleid"> + <el-select v-model="dataForm.dmModuleItem.moduleid" placeholder="请选择"> + <el-option + v-for="item in moduleList" + :key="item.id" + :label="item.modulename" + :value="item.id"/> + </el-select> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="模块ID" prop="moduleid"> - <el-input v-model="formData.moduleid" placeholder="请输入模块ID"/> + <el-form-item label="类别" prop="dmModuleItem.categoryid"> + <el-input v-model="dataForm.dmModuleItem.categoryid" placeholder="类别" maxlength="64" + clearable/> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> - <el-form-item label="排序" prop="itemorder"> - <el-input v-model="formData.itemorder" placeholder="请输入排序"/> + <el-form-item label="排序" prop="dmModuleItem.itemorder"> + <el-input v-model="dataForm.dmModuleItem.itemorder" placeholder="排序" maxlength="36" + clearable/> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="是否启用" prop="status"> - <el-input v-model="formData.status" placeholder="请输入是否启用"/> + <el-form-item label="数据点" prop="mmItemOutput.pointid"> + <el-select + v-model="dataForm.mmItemOutput.pointid" + filterable + @change="changeOutputPoint" + placeholder="请选择"> + <el-option + v-for="item in pointList" + :key="item.id" + :label="item.pointname" + :value="item.id"/> + </el-select> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> - <el-form-item label="类别ID" prop="categoryid"> - <el-input v-model="formData.categoryid" placeholder="请输入类别ID"/> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="数据点ID" prop="pointid"> - <el-input v-model="formData.pointid" placeholder="请输入数据点ID"/> + <el-form-item label="保存点位" prop="mmPredictItem.saveindex"> + <el-select v-model="dataForm.mmPredictItem.saveindex" placeholder="请选择"> + <el-option + v-for="item in saveIndexList" + :key="item.code" + :label="item.name" + :value="item.code"/> + </el-select> </el-form-item> </el-col> </el-row> - <el-row> + <el-row v-if="dataForm.itemtypename === 'MergeItem'"> <el-col :span="12"> - <el-form-item label="数据点名称" prop="tagname"> - <el-input v-model="formData.tagname" placeholder="请输入数据点名称"/> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="存放表ID" prop="resulttableid"> - <el-input v-model="formData.resulttableid" placeholder="请输入存放表ID"/> + <el-form-item label="预测长度" prop="mmPredictItem.predictlength"> + <el-input v-model="dataForm.mmPredictItem.predictlength" placeholder="预测长度" + maxlength="5" + clearable/> </el-form-item> </el-col> </el-row> - <el-row> + <el-divider content-position="left" v-if="dataForm.itemtypename === 'NormalItem'">模型信息 + </el-divider> + <el-row v-if="dataForm.itemtypename === 'NormalItem'"> + <el-col :span="24"> + <el-form-item label="模型名称" prop="mmPredictModel.modelname"> + <el-input v-model="dataForm.mmPredictModel.modelname" placeholder="模型名称" + maxlength="50" + clearable/> + </el-form-item> + </el-col> <el-col :span="12"> - <el-form-item label="存放表" prop="tablename"> - <el-input v-model="formData.tablename" placeholder="请输入存放表"/> + <el-form-item label="编号" prop="mmPredictModel.modelno" v-if="!!dataForm.id"> + <el-input v-model="dataForm.mmPredictModel.modelno" placeholder="编号" maxlength="32" + clearable + disabled/> </el-form-item> </el-col> </el-row> + <el-row v-if="dataForm.itemtypename === 'NormalItem'"> + <el-col :span="12"> + <el-form-item label="上传模型" prop="itemorder"> + <el-upload + class="upload-demo" + :limit="1" + :file-list="fileList" + :before-upload="beforeUpload" + :on-success="uploadModelSuccess" + :on-error="uploadModelError" + :action="uploadModelUrl"> + <el-button size="small" type="primary" @click="setReplaceModelOnly(0)">点击上传 + </el-button> + <el-button size="small" type="primary" @click="setReplaceModelOnly(1)" + v-if="!!dataForm.id">只替换模型 + </el-button> + </el-upload> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="结果" prop="mmPredictModel.resultstrid"> + <el-select v-model="dataForm.mmPredictModel.resultstrid" placeholder="请选择"> + <el-option + v-for="item in resultstridList" + :key="item.id" + :label="item.resultstr" + :value="item.id"/> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row v-if="dataForm.itemtypename === 'NormalItem'"> + <el-col :span="24"> + <el-form-item label="路径" prop="mmPredictModel.modelpath"> + <el-input v-model="dataForm.mmPredictModel.modelpath" placeholder="路径" maxlength="32" + clearable + disabled/> + </el-form-item> + </el-col> + </el-row> + <el-row v-if="dataForm.itemtypename === 'NormalItem'"> + <el-col :span="24"> + <el-form-item label="类名" prop="mmPredictModel.classname"> + <el-input v-model="dataForm.mmPredictModel.classname" placeholder="类名" maxlength="32" + clearable + disabled/> + </el-form-item> + </el-col> + </el-row> + <el-row v-if="dataForm.itemtypename === 'NormalItem'"> + <el-col :span="12"> + <el-form-item label="方法名" prop="mmPredictModel.methodname"> + <el-input v-model="dataForm.mmPredictModel.methodname" placeholder="方法名" + maxlength="32" clearable + disabled/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="参数" prop="mmPredictModel.modelparamstructure"> + <el-input v-model="dataForm.mmPredictModel.modelparamstructure" placeholder="参数" + maxlength="32" clearable + disabled/> + </el-form-item> + </el-col> + </el-row> + + <el-table + v-if="dataForm.itemtypename === 'NormalItem'" + :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="" label="值" align="center"> + <template #default="scope"> + <el-input v-model="scope.row.value" maxlength="256" clearable + style="width:100%;hight:100%"/> + </template> + </el-table-column> + </el-table> + + <el-divider content-position="left" v-if="dataForm.itemtypename === 'NormalItem'">输入参数 + </el-divider> + <el-table + :data="dataForm.mmModelParamList" + border + style="width: 100%; margin-top: 5px;"> + <el-table-column prop="modelparamportorder" label="端口" width="60" align="center"/> + <el-table-column prop="modelparamorder" label="序号" width="60" align="center"/> + <el-table-column prop="" label="类型" width="200" align="center"> + <template #default="scope"> + <el-select v-model="scope.row.modelparamtype" + @change="changeModelparamtype(value, scope.row)" placeholder="请选择"> + <el-option + v-for="item in dataForm.modelparamtypeList" + :key="item" + :label="item" + :value="item"/> + </el-select> + </template> + </el-table-column> + <el-table-column prop="" label="参数名称" align="center"> + <template #default="scope"> + <el-select + v-model="scope.row.modelparamid" + filterable + @change="changeModelparam(scope.row)" + placeholder="请选择"> + <el-option + v-for="(item, index) in modelparamListMap[scope.row.modelparamtype]" + :key="index" + :label="item.name" + :value="item.id"/> + </el-select> + </template> + </el-table-column> + <el-table-column prop="" label="参数长度" width="120" align="center"> + <template #default="scope"> + <el-input v-model="scope.row.datalength" maxlength="50" clearable + style="width:100%;hight:100%"/> + </template> + </el-table-column> + <el-table-column prop="" label="操作" width="100" align="center"> + <template #default="scope"> + <el-button + @click="addRow(scope.$index, dataForm.mmModelParamList)" + type="text" + size="small"> + 添加 + </el-button> + <el-button + @click="deleteRow(scope.$index, dataForm.mmModelParamList)" + type="text" + size="small"> + 删除 + </el-button> + </template> + </el-table-column> + </el-table> + <el-divider content-position="left" v-if="dataForm.itemtypename === 'MergeItem'">表达式 + </el-divider> + <el-table + :data="expressionList" + border + style="width: 100%; margin-top: 5px;"> + <el-table-column + prop="" + label="预测项" + align="center"> + <template #default="scope"> + <el-select + v-model="scope.row.point" + filterable + placeholder="请选择"> + <el-option + v-for="(item, index) in predictItemList" + :key="index" + :label="item.name" + :value="item.code"/> + </el-select> + </template> + </el-table-column> + <el-table-column + prop="point" + label="编号" + align="center"/> + <el-table-column + prop="" + label="运算符" + align="center"> + <template #default="scope"> + <el-select v-model="scope.row.operator" placeholder="请选择"> + <el-option + v-for="item in operatorList" + :key="item" + :label="item" + :value="item"/> + </el-select> + </template> + </el-table-column> + <el-table-column + prop="" + label="操作" + width="100" + align="center"> + <template #default="scope"> + <el-button + @click="addExpressionRow(scope.$index, expressionList)" + type="text" + size="small"> + 添加 + </el-button> + <el-button + @click="deleteExpressionRow(scope.$index, expressionList)" + type="text" + size="small"> + 删除 + </el-button> + </template> + </el-table-column> + </el-table> </el-form> <template #footer> <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button> @@ -107,36 +361,133 @@ </template> <script lang="ts" setup> import * as MmPredictItem from '@/api/model/pre/predict' +import * as MmItemType from '@/api/model/pre/item' +import * as DmModule from '@/api/model/pre/dm' +import * as MmResultTable from '@/api/model/pre/result' +import * as DaPoint from '@/api/data/da/point' +import request from "@/config/axios"; +import * as ScheduleModelApi from '@/api/model/sche/model' defineOptions({name: 'DataMmPredictItemForm'}) const {t} = useI18n() // 国际化 const message = useMessage() // 消息弹窗 const dialogVisible = ref(false) // 弹窗的是否展示 +const pointLoading = ref(false) // 弹窗的是否展示 const dialogTitle = ref('') // 弹窗的标题 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 const formType = ref('') // 表单的类型:create - 新增;update - 修改 -const formData = ref({ - id: undefined, - itemno: undefined, - itemname: undefined, - itemtypeid: undefined, - itemtypename: undefined, - granularity: undefined, - isfuse: undefined, - workchecked: undefined, - moduleid: undefined, - itemorder: undefined, - status: undefined, - categoryid: undefined, - pointid: undefined, - tagname: undefined, - resulttableid: undefined, - tablename: undefined, +const uploadModelUrl = '' +const itemTypeList = ref([]) +const itemTypeMap = ref({}) +const moduleList = ref([]) +const resulttableList = ref([]) +const resultstridList = ref([]) +const pointList = ref([]) +const pointMap = ref({}) +const predictItemList = ref([]) +const modelparamList = ref([]) +const modelparamListMap = ref([]) +const modelparamMap = ref({}) +const expressionList = ref([]) +const fileList = ref([]) +const operatorList = ['+', '-'] +const replaceModelOnly = ref(0) +const queryParams = reactive({ + pageNo: 1, + pageSize: 10, + pointNo: undefined, + pointName: undefined, +}) +const isList = ref([ + { + code: 0, + name: '否' + }, + { + code: 1, + name: '是' + }]) +const saveIndexList = ref([ + { + code: '2', + name: 'T+2' + }, + { + code: '30', + name: 'T+30' + }, + { + code: 'n', + name: 'T+n' + }]) +const dataForm = ref({ + id: '', + itemtypename: '', + mmPredictItem: { + id: '', + itemno: '', + itemname: '', + caltypeid: '', + itemtypeid: '', + predictlength: '', + granularity: '', + status: '', + isfuse: '', + predictphase: '', + workchecked: 0, + unittransfactor: '', + saveindex: '' + }, + dmModuleItem: { + id: '', + moduleid: '', + itemid: '', + itemorder: '', + status: 1, + categoryid: '' + }, + mmItemOutput: { + id: '', + itemid: '', + pointid: '', + resulttableid: '3cc2b483-3a01-40f7-a419-0c260210d8eb', + tagname: '', + outputorder: 1 + }, + mmPredictModel: { + id: '', + modelno: '', + modelname: '', + itemid: '', + arithid: '', + trainsamplength: '', + predictsamplength: '', + isonlinetrain: '', + modelpath: '', + isnormal: '', + normalmax: '', + normalmin: '', + status: 1, + classname: '', + methodname: '', + modelparamstructure: '', + resultstrid: '', + settingmap: '' + }, + mmPredictMergeItem: { + id: '', + itemid: '', + expression: '', + num: '' + }, + modelparamtypeList: ['DATAPOINT', 'PREDICTITEM', 'DAYWORKPROCESSPLAN', 'MONTHWORKPROCESSPLAN', 'ST_PLAN_NQ', 'ST_PLAN_BQ', 'ST_PLAN_NQ_HI', 'ST_PLAN_BQ_HI'], + mmModelArithSettingsList: [], + mmModelParamList: [] }) const formRules = reactive({ - itemno: [{required: true, message: '编号不能为空', trigger: 'blur'}], - itemname: [{required: true, message: '预测项名不能为空', trigger: 'blur'}], + // itemno: [{required: true, message: '编号不能为空', trigger: 'blur'}], + // itemname: [{required: true, message: '预测项名不能为空', trigger: 'blur'}], }) const formRef = ref() // 表单 Ref @@ -150,7 +501,7 @@ if (id) { formLoading.value = true try { - formData.value = await MmPredictItem.getMmPredictItem(id) + dataForm.value = await MmPredictItem.getMmPredictItem(id) } finally { formLoading.value = false } @@ -168,7 +519,7 @@ // 提交请求 formLoading.value = true try { - const data = formData.value as unknown as MmPredictItem.MmPredictItemVO + const data = dataForm.value as unknown as MmPredictItem.MmPredictItemVO if (formType.value === 'create') { await MmPredictItem.createMmPredictItem(data) message.success(t('common.createSuccess')) @@ -183,27 +534,297 @@ formLoading.value = false } } +const setReplaceModelOnly = (value) => { + replaceModelOnly.value = value +} +const beforeUpload = (file) => { + let fileName = file.name + let first = fileName.lastIndexOf('.') + let nameLength = fileName.length + let fileSuffix = fileName.substring(first + 1, nameLength) + if (fileSuffix !== 'miail') { + message.error('只能上传miail类型文件') + return + } +} +const uploadModelSuccess = (response, file, fileList) => { + if (response.code === 0) { + message.success(t('上传成功')) + dataForm.value.mmModelArithSettingsList = [] + if (!replaceModelOnly) { + dataForm.value.mmModelParamList = [] + } + dataForm.value.mmPredictModel.modelpath = '' + dataForm.value.mmPredictModel.modelparamstructure = '' + if (response.data.loadFieldSetList && response.data.loadFieldSetList[0].propertyList) { + response.data.loadFieldSetList[0].propertyList.forEach((value) => { + if (value.key !== 'data1') { + dataForm.value.mmModelArithSettingsList.push({ + key: value.key, + name: value.name, + valuetype: value.valueType, + value: value.value + }) + } + }, this) + } + dataForm.value.mmPredictModel.classname = response.data.className + dataForm.value.mmPredictModel.methodname = response.data.methodName + if (response.data.paramPathList) { + dataForm.value.mmPredictModel.modelpath = response.data.paramPathList[0] + } + if (response.data.paramsArray) { + dataForm.value.mmPredictModel.modelparamstructure = response.data.paramsArray.join(',') + } + if (response.data.paramsCount && !replaceModelOnly) { + for (let i = 0; i < response.data.paramsCount; i++) { + dataForm.value.mmModelParamList.push({ + modelparamportorder: (i + 1), + modelparamorder: (i + 1), + modelparamtype: '', + modelparamid: '', + modelparamname: '', + datalength: 0 + }) + } + } + if (response.data.settingConfigMap && response.data.settingConfigMap.settingMap) { + dataForm.value.mmPredictModel.settingmap = JSON.stringify(response.data.settingConfigMap.settingMap) + } + } else { + message.error('上传失败!' + response.msg) + return + } + fileList = [] +} +const uploadModelError = (file, err, fileList) => { +} +const changeModelparam = (row) => { + row.modelparamname = modelparamMap[row.modelparamid] +} +const changeItemtype = (value) => { + dataForm.value.itemtypename = itemTypeMap[value] +} +const changeModelparamtype = (value, row) => { + row.modelparamid = '' +} +const changeOutputPoint = (value) => { + dataForm.value.mmItemOutput.tagname = pointMap[value] +} +const deleteExpressionRow = (index, rows) => { + rows.splice(index, 1) +} +const addExpressionRow = (index, rows) => { + let row = JSON.parse(JSON.stringify(rows[index])) + rows.splice(index, 0, row) +} +const deleteRow = (index: string, rows) => { + if (!rows || rows.length === 1) { + message.error('不能全部删除!') + return + } + rows.splice(index, 1) + orderRow(rows) +} +const addRow = (index: string, rows) => { + let row = JSON.parse(JSON.stringify(rows[index])) + rows.splice(index, 0, row) + orderRow(rows) +} +const orderRow = (rows) => { + let modelparamorder = 0 + let modelparamportorder = 0 + rows.forEach(function (value) { + if (value.modelparamportorder !== modelparamportorder) { + modelparamportorder = value.modelparamportorder + modelparamorder = 1 + } + value.modelparamorder = modelparamorder + modelparamorder++ + }) +} +// 获取预测项类型列表 +const getItemTypeList = async () => { + itemTypeList.value = [] + itemTypeList.value = await MmItemType.getItemTypeList() + itemTypeList.value.forEach((value) => { + itemTypeMap[value.id] = value.itemtypename + }) + if (!dataForm.value.id) { + // dataForm.value.mmPredictItem.itemtypeid = itemTypeList[0].id + } +} +// 获取管网列表 +const getModuleList = async () => { + moduleList.value = [] + moduleList.value = await DmModule.getModuleList() +} + +const getResulttableList = async () => { + resulttableList.value = [] + resulttableList.value = await MmResultTable.getResulttableList() +} +const getResultstridList = async () => { + resultstridList.value = [] + resultstridList.value = await MmResultTable.getResultstridList() +} +const getPointList = async () => { + pointLoading.value = true + pointList.value = await DaPoint.getPointList(queryParams) + pointList.value.forEach((value) => { + pointList.value.push(value) + pointMap[value.id] = value.pointname + }) +} +const getModelparamList = async () => { + modelparamListMap.value = [] + modelparamList.value = [] + predictItemList.value = [] + let pointRes = await DaPoint.getPointList(queryParams) + let paramList = [] + pointRes.forEach((value) => { + paramList.push({ + id: value.id, + code: value.pointno, + name: value.pointname, + type: 'DATAPOINT' + }) + modelparamMap[value.id] = value.pointname + }) + modelparamListMap['DATAPOINT'] = paramList; + + let predictRes = await MmPredictItem.getMmPredictItemList + paramList = [] + predictRes.forEach((value) => { + paramList.push({ + id: value.id, + code: value.itemno, + name: value.itemname, + type: 'PREDICTITEM' + }) + if (value.id !== dataForm.value.id) { + predictItemList.push({ + id: value.id, + code: value.itemno, + name: value.itemname + }) + } + modelparamMap[value.id] = value.itemname + }) + modelparamListMap['PREDICTITEM'] = paramList; + + const dayParams = { + 'processType': '日计划' + } + let dayScheduleRes = await ScheduleModelApi.getScheduleWorkPrecessList(dayParams) + paramList = [] + dayScheduleRes.forEach((value) => { + paramList.push({ + id: value.id, + code: value.code, + name: value.aliasName, + type: 'DAYWORKPROCESSPLAN' + }) + modelparamMap[value.id] = value.aliasName + }) + modelparamListMap['DAYWORKPROCESSPLAN'] = paramList; + + const monthParams = { + 'processType': '月计划' + } + let monthScheduleRes = await ScheduleModelApi.getScheduleWorkPrecessList(monthParams) + paramList = [] + monthScheduleRes.forEach((value) => { + paramList.push({ + id: value.id, + code: value.code, + name: value.aliasName, + type: 'MONTHWORKPROCESSPLAN' + }) + modelparamMap[value.id] = value.aliasName + }) + modelparamListMap['MONTHWORKPROCESSPLAN'] = paramList; +} /** 重置表单 */ const resetForm = () => { - formData.value = { - id: undefined, - itemno: undefined, - itemname: undefined, - itemtypeid: undefined, - itemtypename: undefined, - granularity: undefined, - isfuse: undefined, - workchecked: undefined, - moduleid: undefined, - itemorder: undefined, - status: undefined, - categoryid: undefined, - pointid: undefined, - tagname: undefined, - resulttableid: undefined, - tablename: undefined, + dataForm.value = { + mmModelArithSettingsList: [], + mmModelParamList: [], + modelparamtypeList: [], + id: '', + itemtypename: '', + mmPredictItem: { + id: '', + itemno: '', + itemname: '', + caltypeid: '', + itemtypeid: '', + predictlength: '', + granularity: '', + status: '', + isfuse: '', + predictphase: '', + workchecked: 0, + unittransfactor: '', + saveindex: '' + }, + dmModuleItem: { + id: '', + moduleid: '', + itemid: '', + itemorder: '', + status: 1, + categoryid: '' + }, + mmItemOutput: { + id: '', + itemid: '', + pointid: '', + resulttableid: '3cc2b483-3a01-40f7-a419-0c260210d8eb', + tagname: '', + outputorder: 1 + }, + mmPredictModel: { + id: '', + modelno: '', + modelname: '', + itemid: '', + arithid: '', + trainsamplength: '', + predictsamplength: '', + isonlinetrain: '', + modelpath: '', + isnormal: '', + normalmax: '', + normalmin: '', + status: 1, + classname: '', + methodname: '', + modelparamstructure: '', + resultstrid: '', + settingmap: '' + }, + mmPredictMergeItem: { + id: '', + itemid: '', + expression: '', + num: '' + } } formRef.value?.resetFields() } + +onMounted(() => { + init() +}) + +const init = async () => { + getItemTypeList() + getModuleList() + getPointList() + getModelparamList() + getResulttableList() + getResultstridList() +} </script> diff --git a/src/views/model/pre/predict/index.vue b/src/views/model/pre/predict/index.vue index 1d3ec86..1e6ff7f 100644 --- a/src/views/model/pre/predict/index.vue +++ b/src/views/model/pre/predict/index.vue @@ -39,7 +39,7 @@ type="primary" plain @click="openForm('create')" - v-hasPermi="['system:tenant:create']" + v-hasPermi="['model:pre-predict:create']" > <Icon icon="ep:plus" class="mr-5px" /> 新增 @@ -73,7 +73,7 @@ link type="primary" @click="openForm('update', scope.row.id)" - v-hasPermi="['system:tenant:update']" + v-hasPermi="['model:pre-predict:update']" > 编辑 </el-button> @@ -81,7 +81,7 @@ link type="danger" @click="handleDelete(scope.row.id)" - v-hasPermi="['system:tenant:delete']" + v-hasPermi="['model:pre-predict:delete']" > 删除 </el-button> diff --git a/src/views/model/pre/result/index.vue b/src/views/model/pre/result/index.vue index 49d2411..271e8d6 100644 --- a/src/views/model/pre/result/index.vue +++ b/src/views/model/pre/result/index.vue @@ -30,7 +30,7 @@ type="primary" plain @click="openForm('create')" - v-hasPermi="['system:tenant:create']" + v-hasPermi="['model:pre-result:create']" > <Icon icon="ep:plus" class="mr-5px" /> 新增 @@ -50,7 +50,7 @@ link type="primary" @click="openForm('update', scope.row.id)" - v-hasPermi="['system:tenant:update']" + v-hasPermi="['model:pre-result:update']" > 编辑 </el-button> @@ -58,7 +58,7 @@ link type="danger" @click="handleDelete(scope.row.id)" - v-hasPermi="['system:tenant:delete']" + v-hasPermi="['model:pre-result:delete']" > 删除 </el-button> @@ -75,14 +75,14 @@ </ContentWrap> <!-- 表单弹窗:添加/修改 --> - <MmPredictItemForm ref="formRef" @success="getList" /> + <MmResultTableForm ref="formRef" @success="getList" /> </template> <script lang="ts" setup> -import MmPredictItemForm from './MmResultTableForm.vue' -import * as MmPredictItem from '@/api/model/pre/dm' +import MmResultTableForm from './MmResultTableForm.vue' +import * as MmResultTable from '@/api/model/pre/result' -defineOptions({name: 'DataMmPredictItem'}) +defineOptions({name: 'DataMmResultTable'}) const message = useMessage() // 消息弹窗 const {t} = useI18n() // 国际化 @@ -102,7 +102,7 @@ const getList = async () => { loading.value = true try { - const page = await MmPredictItem.getMmPredictItemPage(queryParams) + const page = await MmResultTable.getMmResultTablePage(queryParams) list.value = page.list total.value = page.total } finally { @@ -134,7 +134,7 @@ // 删除的二次确认 await message.delConfirm() // 发起删除 - await MmPredictItem.deleteMmPredictItem(id) + await MmResultTable.deleteMmResultTable(id) message.success(t('common.delSuccess')) // 刷新列表 await getList() -- Gitblit v1.9.3