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 | 1 | <template> | 
| 2 | 2 | <BasicModal | 
| 3 | - :useWrapper="true" | |
| 4 | 3 | width="82vw" | 
| 5 | 4 | :height="compHeight" | 
| 6 | 5 | v-bind="$attrs" | 
| 7 | 6 | @register="registerModal" | 
| 8 | 7 | @ok="handleSubmit" | 
| 9 | 8 | :draggable="false" | 
| 9 | + class="basic-modal" | |
| 10 | + className="{styles.headSetPop}" | |
| 10 | 11 | > | 
| 11 | 12 | <div | 
| 12 | 13 | style=" | 
| ... | ... | @@ -254,4 +255,7 @@ | 
| 254 | 255 | transition: border-color 0.3s ease; | 
| 255 | 256 | } | 
| 256 | 257 | } | 
| 258 | + .headSetPop :global(.ant-modal-header) { | |
| 259 | + padding: 27px 0px !important; | |
| 260 | + } | |
| 257 | 261 | </style> | ... | ... | 
| ... | ... | @@ -586,10 +586,10 @@ | 
| 586 | 586 | getTriggerFormValue.value = unref(skipUnwrap.triggerItemRefs)?.map((item) => | 
| 587 | 587 | genTriggerOrConditionData(item.getFieldsValueFunc()) | 
| 588 | 588 | ); | 
| 589 | - getConditionFormValue.value = unref(skipUnwrap.conditionItemRefs).map((item) => | |
| 589 | + getConditionFormValue.value = unref(skipUnwrap.conditionItemRefs)?.map((item) => | |
| 590 | 590 | genTriggerOrConditionData(item.getFieldsValueFunc()) | 
| 591 | 591 | ); | 
| 592 | - getActionFormValue.value = unref(skipUnwrap.actionItemRefs).map((item) => | |
| 592 | + getActionFormValue.value = unref(skipUnwrap.actionItemRefs)?.map((item) => | |
| 593 | 593 | genActionData(item.getFieldsValueFunc()) | 
| 594 | 594 | ); | 
| 595 | 595 | }; | 
| ... | ... | @@ -611,21 +611,6 @@ | 
| 611 | 611 | id: unref(id), | 
| 612 | 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 | 614 | await screenLinkPageAddApi(postAddOrEditData, unref(isUpdate)); | 
| 630 | 615 | createMessage.success(`${unref(isUpdate) ? '编辑' : '新增'}成功`); | 
| 631 | 616 | closeDrawer(); | ... | ... | 
| ... | ... | @@ -69,6 +69,7 @@ | 
| 69 | 69 | import AlarmSchedule from './AlarmSchedule.vue'; | 
| 70 | 70 | import { useModal } from '/@/components/Modal'; | 
| 71 | 71 | import { cloneDeep } from 'lodash-es'; | 
| 72 | + import { useMessage } from '/@/hooks/web/useMessage'; | |
| 72 | 73 | |
| 73 | 74 | const props = defineProps({ | 
| 74 | 75 | title: { | 
| ... | ... | @@ -85,6 +86,8 @@ | 
| 85 | 86 | }, | 
| 86 | 87 | }); | 
| 87 | 88 | const emit = defineEmits(['delete']); | 
| 89 | + const { createMessage } = useMessage(); | |
| 90 | + | |
| 88 | 91 | const isUpdate = ref(false); | 
| 89 | 92 | const conditionScreeningRef = ref(); | 
| 90 | 93 | const [registerForm, { resetFields, getFieldsValue, updateSchema, setFieldsValue }] = useForm({ | 
| ... | ... | @@ -99,6 +102,30 @@ | 
| 99 | 102 | const predicate = conditionScreeningRef?.value?.refItem?.conditionScreeningRefs?.value?.map( | 
| 100 | 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 | 129 | return { ...getFieldsValue(), predicate, schedule: alarmScheduleRef.value.scheduleData }; | 
| 103 | 130 | }; | 
| 104 | 131 | ... | ... | 
| ... | ... | @@ -68,6 +68,7 @@ | 
| 68 | 68 | import 'jsoneditor/dist/jsoneditor.min.css'; | 
| 69 | 69 | import { QuestionCircleOutlined } from '@ant-design/icons-vue'; | 
| 70 | 70 | import ClearAlarm from './ClearAlarm.vue'; | 
| 71 | + import { useMessage } from '/@/hooks/web/useMessage'; | |
| 71 | 72 | |
| 72 | 73 | const props = defineProps({ | 
| 73 | 74 | actionIndex: { | 
| ... | ... | @@ -99,6 +100,8 @@ | 
| 99 | 100 | const refItem = { | 
| 100 | 101 | clearRuleRefs: ref([]), | 
| 101 | 102 | }; | 
| 103 | + const { createMessage } = useMessage(); | |
| 104 | + | |
| 102 | 105 | const emit = defineEmits(['deleteAction', 'getActionFormArr']); | 
| 103 | 106 | const options = computed(() => { | 
| 104 | 107 | return [ | 
| ... | ... | @@ -133,6 +136,51 @@ | 
| 133 | 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 | 184 | return { | 
| 137 | 185 | ...getFieldsValue(), | 
| 138 | 186 | doContext: unref(jsonInstance.value)?.get(), | 
| ... | ... | @@ -163,7 +211,6 @@ | 
| 163 | 211 | }; | 
| 164 | 212 | }); | 
| 165 | 213 | deviceListItem.value = deviceList.value; | 
| 166 | - console.log(' deviceListItem.value', deviceListItem.value); | |
| 167 | 214 | updateSchema({ | 
| 168 | 215 | field: 'deviceId', | 
| 169 | 216 | componentProps: { | ... | ... | 
| ... | ... | @@ -144,16 +144,21 @@ | 
| 144 | 144 | .then((res) => { | 
| 145 | 145 | closeDrawer(); //关闭侧框 | 
| 146 | 146 | emit('success'); | 
| 147 | + setTimeout(() => { | |
| 148 | + setDrawerProps({ confirmLoading: false }); | |
| 149 | + }, 300); | |
| 147 | 150 | }) | 
| 148 | 151 | .catch((e) => { | 
| 149 | 152 | const { createMessage } = useMessage(); | 
| 150 | 153 | createMessage.error(`${e.message}`); | 
| 154 | + }) | |
| 155 | + .finally(() => { | |
| 156 | + setTimeout(() => { | |
| 157 | + setDrawerProps({ confirmLoading: false }); | |
| 158 | + }, 300); | |
| 151 | 159 | }); | 
| 152 | 160 | } catch (e) { | 
| 153 | 161 | } finally { | 
| 154 | - setTimeout(() => { | |
| 155 | - setDrawerProps({ confirmLoading: false }); | |
| 156 | - }, 300); | |
| 157 | 162 | } | 
| 158 | 163 | } | 
| 159 | 164 | ... | ... |