| | |
| | | :on-error="uploadModelError" |
| | | :action="uploadUrl" |
| | | :show-file-list="false" |
| | | v-loading="updateModelLoading" |
| | | :http-request="httpRequest"> |
| | | <el-button type="primary" @click="setReplaceModelOnly(false)"> |
| | | <Icon icon="ep:upload"/> |
| | |
| | | </el-table-column> |
| | | <el-table-column label="数据点" align="center"> |
| | | <template #default="scope"> |
| | | <el-select |
| | | <el-select-v2 |
| | | v-model="scope.row.pointid" |
| | | filterable |
| | | :options="pointList || []" |
| | | placeholder="请选择" |
| | | :props="{value:'id',label:'pointName'}" |
| | | clearable |
| | | filterable |
| | | @change="(value) => changeOutputPoint(value,scope.row)" |
| | | placeholder="请选择"> |
| | | <el-option |
| | | v-for="item in pointList" |
| | | :key="item.id" |
| | | :label="item.pointName" |
| | | :value="item.id"/> |
| | | </el-select> |
| | | :fit-input-width="false" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="是否累计" align="center" width="150px"> |
| | |
| | | </el-table-column> |
| | | <el-table-column label="累计数据点" align="center"> |
| | | <template #default="scope"> |
| | | <el-select |
| | | <el-select-v2 |
| | | v-model="scope.row.cumulpoint" |
| | | :disabled="scope.row.iscumulant !== 1" |
| | | filterable |
| | | :options="pointList.filter(e => e.pointType === 'CUMULATE') || []" |
| | | placeholder="请选择" |
| | | :props="{value:'id',label:'pointName'}" |
| | | 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> |
| | | filterable |
| | | :fit-input-width="false" |
| | | :disabled="scope.row.iscumulant !== 1" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="" label="操作" width="80" align="center"> |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="" label="参数名称" align="center"> |
| | | <template #default="scope"> |
| | | <el-select v-if="scope.row.modelparamtype === 'NormalItem'" |
| | | <el-select-v2 v-if="scope.row.modelparamtype === 'NormalItem'" |
| | | v-model="scope.row.modelparamid" |
| | | :options="modelparamListMap['NormalItem'] || []" |
| | | placeholder="请选择" |
| | | :props="{value:'value',label:'label',options:'children'}" |
| | | clearable |
| | | filterable |
| | | @change="changeModelparam(scope.row)" |
| | | style="width: 100%"> |
| | | <el-option-group |
| | | v-for="group in modelparamListMap['NormalItem']" |
| | | :key="group.value" |
| | | :label="group.label" |
| | | > |
| | | <el-option |
| | | v-for="item in group.children" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | </el-option-group> |
| | | </el-select> |
| | | <el-select v-else |
| | | :fit-input-width="false" |
| | | /> |
| | | <el-select-v2 v-else |
| | | v-model="scope.row.modelparamid" |
| | | :options="modelparamListMap[scope.row.modelparamtype] || []" |
| | | placeholder="请选择" |
| | | :props="{value:'id',label:'name'}" |
| | | clearable |
| | | 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> |
| | | :fit-input-width="false" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="" label="参数长度" width="120" align="center"> |
| | |
| | | const pointList = ref([]) |
| | | const pointMap = ref({}) |
| | | const modelparamListMap = ref({}) |
| | | const modelparamMap = ref({}) |
| | | const expressionList = ref([]) |
| | | const fileList = ref([]) |
| | | const operatorList = ['+', '-'] |
| | | const replaceModelOnly = ref(false) |
| | | const updateModelLoading = ref(false) |
| | | const queryParams = reactive({ |
| | | pageNo: 1, |
| | | pageSize: 10, |
| | |
| | | return |
| | | } |
| | | |
| | | 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 === '')) |
| | | || (e.iscumulant === 1 && e.cumuldivisor == undefined) |
| | | ) { |
| | | message.error("模型输出数据异常") |
| | | flag = true |
| | | return |
| | | message.error("输出数据异常") |
| | | throw new Error('输出数据异常'); |
| | | } |
| | | }) |
| | | if (flag) return |
| | | |
| | | |
| | | // 校验是否有预测长度参数 |
| | | const predictLength = dataForm.value.mmModelArithSettingsList?.find(e => e.key === 'predictLength')?.value; |
| | | if (predictLength === undefined) { |
| | | message.error("缺少模型设置参数【predictLength(预测长度)】") |
| | | return |
| | | } |
| | | dataForm.value.mmPredictItem.predictlength = predictLength |
| | | |
| | | //校验模型输入 |
| | | dataForm.value.mmModelParamList.forEach(e => { |
| | | if (e.modelparamid == undefined || e.modelparamid == '') { |
| | | message.error("输入数据异常") |
| | | throw new Error('输入数据异常'); |
| | | } |
| | | // ind_ascii类型输出的序号必须是1,且所在端口序号最大为1(一个ind_ascii类型输入独占一个端口) |
| | | if (e.modelparamtype === 'IND_ASCII') { |
| | | if (e.modelparamorder != 1 || dataForm.value.mmModelParamList.filter(p => p.modelparamportorder === e.modelparamportorder).length != 1) { |
| | | message.error("输入数据异常:IND_ASCII类型输入独占一个端口") |
| | | throw new Error('输入数据异常:IND_ASCII类型输入独占一个端口'); |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | if (dataForm.value.itemtypename === 'MergeItem') { |
| | | if (expressionList.value == undefined || expressionList.value.length <= 1) { |
| | |
| | | if (flag) return |
| | | } |
| | | |
| | | |
| | | // 提交请求 |
| | | formLoading.value = true |
| | | try { |
| | |
| | | } else { |
| | | dataForm.value.mmPredictMergeItem.expression = '' |
| | | } |
| | | if (dataForm.value.mmModelArithSettingsList) { |
| | | for (let item of dataForm.value.mmModelArithSettingsList) { |
| | | if (item.key === 'predictLength') { |
| | | dataForm.value.mmPredictItem.predictlength = item.value |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (formType.value === 'create') { |
| | | await MmPredictItem.createMmPredictItem(data) |
| | | message.success(t('common.createSuccess')) |
| | |
| | | } |
| | | |
| | | function beforeUpload(file) { |
| | | updateModelLoading.value = true |
| | | let fileName = file.name |
| | | let first = fileName.lastIndexOf('.') |
| | | let nameLength = fileName.length |
| | |
| | | } |
| | | |
| | | function uploadModelSuccess(response, file, fileList) { |
| | | if (response.code === 0) { |
| | | message.success(t('上传成功')) |
| | | dataForm.value.mmModelArithSettingsList = [] |
| | | if (!replaceModelOnly.value) { |
| | | 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(function (value) { |
| | | //匹配 data数字 |
| | | if (!/^data\d+$/.test(value.key)) { |
| | | dataForm.value.mmModelArithSettingsList.push({ |
| | | key: value.key, |
| | | name: value.name, |
| | | valuetype: value.valueType, |
| | | value: value.value |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | dataForm.value.mmPredictModel.modelname = response.data.originalFilename |
| | | 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.value) { |
| | | for (let i = 0; i < response.data.paramsCount; i++) { |
| | | dataForm.value.mmModelParamList.push({ |
| | | modelparamportorder: (i + 1), |
| | | modelparamorder: (i + 1), |
| | | modelparamtype: '', |
| | | modelparamid: '', |
| | | modelparamname: '', |
| | | datalength: 0 |
| | | try { |
| | | if (response.code === 0) { |
| | | message.success(t('上传成功')) |
| | | dataForm.value.mmModelArithSettingsList = [] |
| | | if (!replaceModelOnly.value) { |
| | | 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(function (value) { |
| | | //匹配 data数字 |
| | | if (!/^data\d+$/.test(value.key)) { |
| | | dataForm.value.mmModelArithSettingsList.push({ |
| | | key: value.key, |
| | | name: value.name, |
| | | valuetype: value.valueType, |
| | | value: value.value |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | dataForm.value.mmPredictModel.modelname = response.data.originalFilename |
| | | 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.value) { |
| | | 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 |
| | | } |
| | | 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 = [] |
| | | }finally { |
| | | updateModelLoading.value = false |
| | | } |
| | | fileList = [] |
| | | |
| | | } |
| | | |
| | | function uploadModelError(file, err, fileList) { |
| | | } |
| | | |
| | | function changeModelparam(row) { |
| | | row.modelparamname = modelparamMap[row.modelparamid] |
| | | updateModelLoading.value = false |
| | | } |
| | | |
| | | function changeItemtype(value) { |