Commit 07334e5eadabad51276d63b97d5b28b4eb27def4
Merge branch 'f-dev' into 'main'
fix:修改场景联动新增或者编辑 设备、属性、条件筛选、清除告警验证问题 See merge request huang/yun-teng-iot-front!237
Showing
5 changed files
with
90 additions
and
22 deletions
| 1 | <template> | 1 | <template> | 
| 2 | <BasicModal | 2 | <BasicModal | 
| 3 | - :useWrapper="true" | ||
| 4 | width="82vw" | 3 | width="82vw" | 
| 5 | :height="compHeight" | 4 | :height="compHeight" | 
| 6 | v-bind="$attrs" | 5 | v-bind="$attrs" | 
| 7 | @register="registerModal" | 6 | @register="registerModal" | 
| 8 | @ok="handleSubmit" | 7 | @ok="handleSubmit" | 
| 9 | :draggable="false" | 8 | :draggable="false" | 
| 9 | + class="basic-modal" | ||
| 10 | + className="{styles.headSetPop}" | ||
| 10 | > | 11 | > | 
| 11 | <div | 12 | <div | 
| 12 | style=" | 13 | style=" | 
| @@ -254,4 +255,7 @@ | @@ -254,4 +255,7 @@ | ||
| 254 | transition: border-color 0.3s ease; | 255 | transition: border-color 0.3s ease; | 
| 255 | } | 256 | } | 
| 256 | } | 257 | } | 
| 258 | + .headSetPop :global(.ant-modal-header) { | ||
| 259 | + padding: 27px 0px !important; | ||
| 260 | + } | ||
| 257 | </style> | 261 | </style> | 
| @@ -586,10 +586,10 @@ | @@ -586,10 +586,10 @@ | ||
| 586 | getTriggerFormValue.value = unref(skipUnwrap.triggerItemRefs)?.map((item) => | 586 | getTriggerFormValue.value = unref(skipUnwrap.triggerItemRefs)?.map((item) => | 
| 587 | genTriggerOrConditionData(item.getFieldsValueFunc()) | 587 | genTriggerOrConditionData(item.getFieldsValueFunc()) | 
| 588 | ); | 588 | ); | 
| 589 | - getConditionFormValue.value = unref(skipUnwrap.conditionItemRefs).map((item) => | 589 | + getConditionFormValue.value = unref(skipUnwrap.conditionItemRefs)?.map((item) => | 
| 590 | genTriggerOrConditionData(item.getFieldsValueFunc()) | 590 | genTriggerOrConditionData(item.getFieldsValueFunc()) | 
| 591 | ); | 591 | ); | 
| 592 | - getActionFormValue.value = unref(skipUnwrap.actionItemRefs).map((item) => | 592 | + getActionFormValue.value = unref(skipUnwrap.actionItemRefs)?.map((item) => | 
| 593 | genActionData(item.getFieldsValueFunc()) | 593 | genActionData(item.getFieldsValueFunc()) | 
| 594 | ); | 594 | ); | 
| 595 | }; | 595 | }; | 
| @@ -611,21 +611,6 @@ | @@ -611,21 +611,6 @@ | ||
| 611 | id: unref(id), | 611 | id: unref(id), | 
| 612 | tenantId: unref(tenantId), | 612 | tenantId: unref(tenantId), | 
| 613 | }; | 613 | }; | 
| 614 | - //TODO fengtao---修改之前如果是新增,如果条件筛选页面打开,但没填值,还是可以新增成功 | ||
| 615 | - const typeBoolean = postAddOrEditData?.triggers?.some((f) => { | ||
| 616 | - let type = false; | ||
| 617 | - f?.triggerCondition?.condition?.condition?.some((s) => { | ||
| 618 | - if (s?.predicate?.value?.defaultValue == undefined) { | ||
| 619 | - type = true; | ||
| 620 | - } else { | ||
| 621 | - type = false; | ||
| 622 | - } | ||
| 623 | - }); | ||
| 624 | - return type; | ||
| 625 | - }); | ||
| 626 | - if (typeBoolean) return createMessage.error('请填写条件筛选'); | ||
| 627 | - //TODO 先暂时不加验证--设备-属性-填了加验证 | ||
| 628 | - //TODO fengtao | ||
| 629 | await screenLinkPageAddApi(postAddOrEditData, unref(isUpdate)); | 614 | await screenLinkPageAddApi(postAddOrEditData, unref(isUpdate)); | 
| 630 | createMessage.success(`${unref(isUpdate) ? '编辑' : '新增'}成功`); | 615 | createMessage.success(`${unref(isUpdate) ? '编辑' : '新增'}成功`); | 
| 631 | closeDrawer(); | 616 | closeDrawer(); | 
| @@ -69,6 +69,7 @@ | @@ -69,6 +69,7 @@ | ||
| 69 | import AlarmSchedule from './AlarmSchedule.vue'; | 69 | import AlarmSchedule from './AlarmSchedule.vue'; | 
| 70 | import { useModal } from '/@/components/Modal'; | 70 | import { useModal } from '/@/components/Modal'; | 
| 71 | import { cloneDeep } from 'lodash-es'; | 71 | import { cloneDeep } from 'lodash-es'; | 
| 72 | + import { useMessage } from '/@/hooks/web/useMessage'; | ||
| 72 | 73 | ||
| 73 | const props = defineProps({ | 74 | const props = defineProps({ | 
| 74 | title: { | 75 | title: { | 
| @@ -85,6 +86,8 @@ | @@ -85,6 +86,8 @@ | ||
| 85 | }, | 86 | }, | 
| 86 | }); | 87 | }); | 
| 87 | const emit = defineEmits(['delete']); | 88 | const emit = defineEmits(['delete']); | 
| 89 | + const { createMessage } = useMessage(); | ||
| 90 | + | ||
| 88 | const isUpdate = ref(false); | 91 | const isUpdate = ref(false); | 
| 89 | const conditionScreeningRef = ref(); | 92 | const conditionScreeningRef = ref(); | 
| 90 | const [registerForm, { resetFields, getFieldsValue, updateSchema, setFieldsValue }] = useForm({ | 93 | const [registerForm, { resetFields, getFieldsValue, updateSchema, setFieldsValue }] = useForm({ | 
| @@ -99,6 +102,30 @@ | @@ -99,6 +102,30 @@ | ||
| 99 | const predicate = conditionScreeningRef?.value?.refItem?.conditionScreeningRefs?.value?.map( | 102 | const predicate = conditionScreeningRef?.value?.refItem?.conditionScreeningRefs?.value?.map( | 
| 100 | (item) => item.getFieldsValue() | 103 | (item) => item.getFieldsValue() | 
| 101 | ); | 104 | ); | 
| 105 | + //TODO-fengtao-设备、属性、条件筛选验证 | ||
| 106 | + const validate = getFieldsValue(); | ||
| 107 | + if (validate.device == 'PART') { | ||
| 108 | + if (validate.entityId == undefined) return createMessage.error('请选择设备'); | ||
| 109 | + } | ||
| 110 | + if (validate.type2 == '' || validate.type2 == null) return createMessage.error('请选择属性'); | ||
| 111 | + if (predicate == undefined) return createMessage.error('请填写条件筛选'); | ||
| 112 | + let predicateIsRequired = false; | ||
| 113 | + if (predicate) { | ||
| 114 | + predicate.some((f) => { | ||
| 115 | + let arr = Object.keys(f); | ||
| 116 | + if (arr.length == 0) { | ||
| 117 | + predicateIsRequired = true; | ||
| 118 | + } | ||
| 119 | + if (f.operation == undefined) { | ||
| 120 | + predicateIsRequired = true; | ||
| 121 | + } | ||
| 122 | + if (f.value == undefined) { | ||
| 123 | + predicateIsRequired = true; | ||
| 124 | + } | ||
| 125 | + }); | ||
| 126 | + } | ||
| 127 | + if (predicateIsRequired) return createMessage.error('请填写条件筛选'); | ||
| 128 | + //TODO-fengtao-设备、属性、条件筛选验证 | ||
| 102 | return { ...getFieldsValue(), predicate, schedule: alarmScheduleRef.value.scheduleData }; | 129 | return { ...getFieldsValue(), predicate, schedule: alarmScheduleRef.value.scheduleData }; | 
| 103 | }; | 130 | }; | 
| 104 | 131 | 
| @@ -68,6 +68,7 @@ | @@ -68,6 +68,7 @@ | ||
| 68 | import 'jsoneditor/dist/jsoneditor.min.css'; | 68 | import 'jsoneditor/dist/jsoneditor.min.css'; | 
| 69 | import { QuestionCircleOutlined } from '@ant-design/icons-vue'; | 69 | import { QuestionCircleOutlined } from '@ant-design/icons-vue'; | 
| 70 | import ClearAlarm from './ClearAlarm.vue'; | 70 | import ClearAlarm from './ClearAlarm.vue'; | 
| 71 | + import { useMessage } from '/@/hooks/web/useMessage'; | ||
| 71 | 72 | ||
| 72 | const props = defineProps({ | 73 | const props = defineProps({ | 
| 73 | actionIndex: { | 74 | actionIndex: { | 
| @@ -99,6 +100,8 @@ | @@ -99,6 +100,8 @@ | ||
| 99 | const refItem = { | 100 | const refItem = { | 
| 100 | clearRuleRefs: ref([]), | 101 | clearRuleRefs: ref([]), | 
| 101 | }; | 102 | }; | 
| 103 | + const { createMessage } = useMessage(); | ||
| 104 | + | ||
| 102 | const emit = defineEmits(['deleteAction', 'getActionFormArr']); | 105 | const emit = defineEmits(['deleteAction', 'getActionFormArr']); | 
| 103 | const options = computed(() => { | 106 | const options = computed(() => { | 
| 104 | return [ | 107 | return [ | 
| @@ -133,6 +136,51 @@ | @@ -133,6 +136,51 @@ | ||
| 133 | schedule: item.alarmScheduleRef.scheduleData, | 136 | schedule: item.alarmScheduleRef.scheduleData, | 
| 134 | }; | 137 | }; | 
| 135 | }); | 138 | }); | 
| 139 | + //TODO-fengtao-清除告警验证 | ||
| 140 | + let deviceIdIsRequired = false; | ||
| 141 | + let attrIsRequired = false; | ||
| 142 | + let predicateIsRequired = false; | ||
| 143 | + let predicateDoubleIsRequired = false; | ||
| 144 | + if (clearRule) { | ||
| 145 | + clearRule.some((s) => { | ||
| 146 | + if (s.device == 'PART') { | ||
| 147 | + if (s.entityId == undefined) { | ||
| 148 | + deviceIdIsRequired = true; | ||
| 149 | + } | ||
| 150 | + } | ||
| 151 | + if (s.type2 == '' || s.type2 == null) { | ||
| 152 | + attrIsRequired = true; | ||
| 153 | + } | ||
| 154 | + if (s.predicate == undefined) { | ||
| 155 | + predicateIsRequired = true; | ||
| 156 | + } | ||
| 157 | + if (s?.predicate) { | ||
| 158 | + s?.predicate.some((f) => { | ||
| 159 | + let arr = Object.keys(f); | ||
| 160 | + if (arr.length == 0) { | ||
| 161 | + predicateDoubleIsRequired = true; | ||
| 162 | + } | ||
| 163 | + if (f.operation == undefined) { | ||
| 164 | + predicateDoubleIsRequired = true; | ||
| 165 | + } | ||
| 166 | + if (f.value == undefined) { | ||
| 167 | + predicateDoubleIsRequired = true; | ||
| 168 | + } | ||
| 169 | + }); | ||
| 170 | + } | ||
| 171 | + }); | ||
| 172 | + } | ||
| 173 | + if (deviceIdIsRequired) return createMessage.error('请选择设备'); | ||
| 174 | + if (attrIsRequired) return createMessage.error('请选择属性'); | ||
| 175 | + if (predicateIsRequired) return createMessage.error('请填写条件筛选'); | ||
| 176 | + if (predicateDoubleIsRequired) return createMessage.error('请填写条件筛选'); | ||
| 177 | + //TODO-fengtao-清除告警验证 | ||
| 178 | + //TODO-fengtao-设备验证 | ||
| 179 | + const validate = getFieldsValue(); | ||
| 180 | + if (validate.device == 'PART') { | ||
| 181 | + if (validate.deviceId == undefined) return createMessage.error('请选择设备'); | ||
| 182 | + } | ||
| 183 | + //TODO-fengtao-设备验证 | ||
| 136 | return { | 184 | return { | 
| 137 | ...getFieldsValue(), | 185 | ...getFieldsValue(), | 
| 138 | doContext: unref(jsonInstance.value)?.get(), | 186 | doContext: unref(jsonInstance.value)?.get(), | 
| @@ -163,7 +211,6 @@ | @@ -163,7 +211,6 @@ | ||
| 163 | }; | 211 | }; | 
| 164 | }); | 212 | }); | 
| 165 | deviceListItem.value = deviceList.value; | 213 | deviceListItem.value = deviceList.value; | 
| 166 | - console.log(' deviceListItem.value', deviceListItem.value); | ||
| 167 | updateSchema({ | 214 | updateSchema({ | 
| 168 | field: 'deviceId', | 215 | field: 'deviceId', | 
| 169 | componentProps: { | 216 | componentProps: { | 
| @@ -144,16 +144,21 @@ | @@ -144,16 +144,21 @@ | ||
| 144 | .then((res) => { | 144 | .then((res) => { | 
| 145 | closeDrawer(); //关闭侧框 | 145 | closeDrawer(); //关闭侧框 | 
| 146 | emit('success'); | 146 | emit('success'); | 
| 147 | + setTimeout(() => { | ||
| 148 | + setDrawerProps({ confirmLoading: false }); | ||
| 149 | + }, 300); | ||
| 147 | }) | 150 | }) | 
| 148 | .catch((e) => { | 151 | .catch((e) => { | 
| 149 | const { createMessage } = useMessage(); | 152 | const { createMessage } = useMessage(); | 
| 150 | createMessage.error(`${e.message}`); | 153 | createMessage.error(`${e.message}`); | 
| 154 | + }) | ||
| 155 | + .finally(() => { | ||
| 156 | + setTimeout(() => { | ||
| 157 | + setDrawerProps({ confirmLoading: false }); | ||
| 158 | + }, 300); | ||
| 151 | }); | 159 | }); | 
| 152 | } catch (e) { | 160 | } catch (e) { | 
| 153 | } finally { | 161 | } finally { | 
| 154 | - setTimeout(() => { | ||
| 155 | - setDrawerProps({ confirmLoading: false }); | ||
| 156 | - }, 300); | ||
| 157 | } | 162 | } | 
| 158 | } | 163 | } | 
| 159 | 164 |