From e38ed569f95e563585b2db890996e969b4a0715c Mon Sep 17 00:00:00 2001 From: xiaojinfei <378266566@qq.com> Date: Fri, 9 Jan 2026 11:34:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E9=A2=84=E8=AD=A6=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=85=B3=E8=81=94=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/alert/warn/index.ts | 6 ++ src/views/warn/config/UpdateModal.vue | 90 ++++++++++++++++++++------- src/views/warn/config/warn.data.ts | 14 +++-- 3 files changed, 85 insertions(+), 25 deletions(-) diff --git a/src/api/alert/warn/index.ts b/src/api/alert/warn/index.ts index 376093b..6e74328 100644 --- a/src/api/alert/warn/index.ts +++ b/src/api/alert/warn/index.ts @@ -26,6 +26,12 @@ export function getWarnPageReal(params: WarnPageReqVO) { return defHttp.get({ url: '/alert/warn/page-real', params }) } +// 修改预警 +export function createWarn(data: WarnVO) { + return defHttp.post({ url: '/alert/warn/create', data }) +} + + // 修改预警 export function updateWarn(data: WarnVO) { return defHttp.put({ url: '/alert/warn/update', data }) diff --git a/src/views/warn/config/UpdateModal.vue b/src/views/warn/config/UpdateModal.vue index 8e12e3f..3403adf 100644 --- a/src/views/warn/config/UpdateModal.vue +++ b/src/views/warn/config/UpdateModal.vue @@ -5,7 +5,7 @@ import {useI18n} from '@/hooks/web/useI18n' import {useMessage} from '@/hooks/web/useMessage' import {BasicForm, useForm} from '@/components/Form' import {BasicModal, useModalInner} from '@/components/Modal' -import {getWarn, updateWarn} from '@/api/alert/warn' +import {getWarn, createWarn, updateWarn} from '@/api/alert/warn' import {getSearchFormSchema} from '@/views/run/instant/instant.data' import {Divider, Descriptions, DescriptionsItem} from 'ant-design-vue' import {getInstantPoint} from "@/api/alert/run/instant"; @@ -16,7 +16,7 @@ const emit = defineEmits(['success', 'register']) const {t} = useI18n() const {createMessage} = useMessage() const isUpdate = ref(true) - +const pointLoading = ref(true) // 新增的时候增加查询表单 const [registerQueryForm, { @@ -50,13 +50,43 @@ function getPointInfo(list, inputName) { } async function handleQuery() { - //先获取表单数据 - const queryValues = await validateQueryForm() - //查询各种点号信息 - const res = await getInstantPoint(queryValues.mpId) - //从结果中筛选inputName等于选中的inputName的项 - pointInfo.value = getPointInfo(res, queryValues?.inputName) + setProps({ + submitButtonOptions: { loading: true }, + }) + try { + //先获取表单数据 + const queryValues = await validateQueryForm() + pointLoading.value = true + //查询各种点号信息 + const res = await getInstantPoint(queryValues.mpId) + //从结果中筛选inputName等于选中的inputName的项 + pointInfo.value = getPointInfo(res, queryValues?.inputName) + // biasPointInfo:"XN.M00010001B" + // faultVariablePointInfo:"XN.M00010001F" + // id:1 + // inputInfo:"HN_01_1RRA010MT_AVALUE" + // inputName:"HN_01_1RRA010MT_AVALUE" + // outPointInfo:"XN.M00010001R" + // unit:"" + const {inputInfo, inputName, outPointInfo, ...rest} = pointInfo.value +//字段映射,后端字段和前端字段不一致,需要映射一下 + pointInfo.value = { + ...rest, + pointId: inputInfo, + pointName: inputName, + outputPoint: outPointInfo, + } + } + finally { + setProps({ + submitButtonOptions: { loading: false }, + }) + pointLoading.value = false + + } + } + const [registerModal, {setModalProps, closeModal}] = useModalInner(async (data) => { resetFields() setModalProps({width: 800, useWrapper: true, minHeight: 180, confirmLoading: false}) @@ -74,19 +104,35 @@ const [registerModal, {setModalProps, closeModal}] = useModalInner(async (data) await handleQuery() } }) + async function handleSubmit() { try { const values = await validate() + // ⭐ 条件校验(重点) + if (values.inputName !== pointInfo.value.pointName) { + createMessage.error('请确保点号信息与查询结果一致,如果不一致请重新查询') + return + } setModalProps({confirmLoading: true}) if (unref(isUpdate)) { - await updateWarn(values) - closeModal() - emit('success') - createMessage.success(t('common.saveSuccessText')) - } - else{ -// 新增预警 - + await updateWarn(values) + closeModal() + emit('success') + createMessage.success(t('common.saveSuccessText')) + } else { + // 新增预警 + //先拿查询表单数据 + const queryValues = await validateQueryForm() + // 再拿输入的数据 + const values = await validate() + // 合并三个数据 + const mergedValues = {...queryValues, ...values, ...pointInfo.value} + //构造报警表达式 + mergedValues.equation = `[${mergedValues.biasPointInfo}]>UPLIMIT or [${mergedValues.biasPointInfo}] + - {{ pointInfo?.inputInfo }} - {{ pointInfo?.inputName }} - {{ pointInfo?.inputInfo + "-重构值" }} - {{ pointInfo?.outPointInfo }} - {{ pointInfo?.inputInfo + "-偏差值" }} + {{ pointInfo?.pointName }} + {{ pointInfo?.pointId }} + {{ pointInfo?.pointName + "-重构值" }} + {{ pointInfo?.outputPoint }} + {{ pointInfo?.pointName + "-偏差值" }} {{ pointInfo?.biasPointInfo }} + diff --git a/src/views/warn/config/warn.data.ts b/src/views/warn/config/warn.data.ts index ad6e2f1..3a364e9 100644 --- a/src/views/warn/config/warn.data.ts +++ b/src/views/warn/config/warn.data.ts @@ -149,6 +149,12 @@ export const updateWarnForm: FormSchema[] = [ component: 'Input', required: true, show: false, + dynamicRules: ({ values }) => { + // 假设:有 warnId = 编辑,没有 = 新增 + return values.warnId + ? [{ required: true, message: '编号不能为空' }] + : [] + }, }, { label: '残差上限', @@ -562,7 +568,7 @@ export const InstantForm: FormSchema[] = [ component: 'Select', defaultValue: mpList.value?.[0]?.mpId, colProps: { span:10}, - componentProps: () => ({ + componentProps: ({ formModel, formActionType }) => ({ placeholder: '模型实例', allowClear: false, options:mpList.value.map(instant => ({ @@ -574,14 +580,14 @@ export const InstantForm: FormSchema[] = [ const res = await getInstantPoint(mpId) console.log(res) pointList.value=res; - formModel.inputName = res.data?.[0]?.inputName + formModel.inputName = res[0]?.inputName formActionType.setFieldsValue({ - inputName: res.data?.[0]?.inputName, + inputName: res[0]?.inputName, }) } })}, { - label: '预警点号', + label: '预警点', field: 'inputName', component: 'Select', defaultValue: pointList.value?.[0]?.inputName,