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,