Commit d8175c884a52cfe7acd7021de5ce0b694c179a8e

Authored by xp.Huang
2 parents 69a0700e d6954312

Merge branch 'ft-dev' into 'main'

fix:修复场景联动新增数据重复问题,fix:场景联动编辑数据重复问题

See merge request huang/yun-teng-iot-front!132
... ... @@ -105,6 +105,11 @@ export interface ScreenAddModel {
105 105 updateTime?: string;
106 106 updater?: string;
107 107 }
  108 +
  109 +export interface IChangeStatus {
  110 + status?: number;
  111 + id?: string;
  112 +}
108 113 export interface ScreenUpdateModel {
109 114 createTime?: string;
110 115 creator?: string;
... ...
... ... @@ -5,6 +5,7 @@ import {
5 5 ScreenUpdateModel,
6 6 ScreenLinkPageQueryParam,
7 7 ScreenByDeptIdParams,
  8 + IChangeStatus,
8 9 } from '/@/api/ruleengine/model/ruleengineModel';
9 10
10 11 enum ScreenManagerApi {
... ... @@ -16,7 +17,7 @@ enum ScreenManagerApi {
16 17 SCREEN_DELETE_URL = '/sceneLinkage',
17 18 SCREEN_UPDATE_URL = '/sceneLinkage/update',
18 19 SCREEN_ORGANIZATION_URL = '/organization/me/list',
19   - SCREEN_CHANGE_STATUS = '/sceneLinkage/updateSceneStatus',
  20 + SCREEN_CHANGE_STATUS = '/convert/update/scene',
20 21 SCREEN_GET_BY_DEPTID = '/sceneLinkage/device/',
21 22 }
22 23
... ... @@ -78,10 +79,13 @@ export const screenLinkPageDeleteApi = (ids: string[]) => {
78 79
79 80 /**
80 81 * 改变场景联动状态
81   - * @param params sceneLinkageId status
  82 + * @param params id status
82 83 */
83   -export const screenLinkPagePutApi = (sceneLinkageId: string, status: number) =>
84   - defHttp.put({ url: ScreenManagerApi.SCREEN_CHANGE_STATUS + '/' + sceneLinkageId + '/' + status });
  84 +export const screenLinkPagePutApi = (params: IChangeStatus) =>
  85 + defHttp.post({
  86 + url: ScreenManagerApi.SCREEN_CHANGE_STATUS,
  87 + data: params,
  88 + });
85 89
86 90 /**
87 91 * 根据部门id获取设备列表
... ...
No preview for this file type
... ... @@ -135,6 +135,9 @@
135 135 stepThreeData: {},
136 136 });
137 137 } else if (isUpdate.value == 2) {
  138 + postEditId.value = data.record.id;
  139 + getBackendData = await deviceConfigGetDetail(postEditId.value);
  140 + editData.value = getBackendData;
138 141 proxy.$refs.DeviceProfileStep3Ref.isAddRuleStatusFunc(true);
139 142 isShowRule.value = true;
140 143 isShowOkBtnFalse.value = true;
... ... @@ -144,17 +147,17 @@
144 147 proxy.$refs.DeviceProfileStep1Ref.customResetStepOneFunc();
145 148 //回显第一步数据
146 149 proxy.$refs.DeviceProfileStep1Ref.setStepOneFieldsValueFunc({
147   - name: data.record.name,
148   - defaultRuleChainId: data.record.defaultRuleChainId,
149   - defaultQueueName: data.record.defaultQueueName,
150   - description: data.record.description,
  150 + name: editData.value.name,
  151 + defaultRuleChainId: editData.value.defaultRuleChainId,
  152 + defaultQueueName: editData.value.defaultQueueName,
  153 + description: editData.value.description,
151 154 });
152 155 proxy.$refs.DeviceProfileStep3Ref.clearProfileDataFunc();
153 156 proxy.$refs.DeviceProfileStep3Ref.addAlarmRule();
  157 + } else if (isUpdate.value == 3) {
154 158 postEditId.value = data.record.id;
155 159 getBackendData = await deviceConfigGetDetail(postEditId.value);
156 160 editData.value = getBackendData;
157   - } else if (isUpdate.value == 3) {
158 161 proxy.$refs.DeviceProfileStep3Ref.isAddRuleStatusFunc(false);
159 162 isShowRule.value = false;
160 163 isShowOkBtnFalse.value = false;
... ... @@ -164,16 +167,13 @@
164 167 proxy.$refs.DeviceProfileStep1Ref.customResetStepOneFunc();
165 168 //回显第一步数据
166 169 proxy.$refs.DeviceProfileStep1Ref.setStepOneFieldsValueFunc({
167   - name: data.record.name,
168   - defaultRuleChainId: data.record.defaultRuleChainId,
169   - defaultQueueName: data.record.defaultQueueName,
170   - description: data.record.description,
  170 + name: editData.value.name,
  171 + defaultRuleChainId: editData.value.defaultRuleChainId,
  172 + defaultQueueName: editData.value.defaultQueueName,
  173 + description: editData.value.description,
171 174 });
172 175 proxy.$refs.DeviceProfileStep3Ref.clearProfileDataFunc();
173 176 proxy.$refs.DeviceProfileStep3Ref.addAlarmRule();
174   - postEditId.value = data.record.id;
175   - getBackendData = await deviceConfigGetDetail(postEditId.value);
176   - editData.value = getBackendData;
177 177 }
178 178 });
179 179 function handleStepPrev() {
... ...
... ... @@ -9,7 +9,6 @@ export const alertContactsSchemas: FormSchema[] = [
9 9 component: 'ApiSelect',
10 10 componentProps: {
11 11 mode: 'multiple',
12   -
13 12 api: alarmContactGetPage,
14 13 labelField: 'username',
15 14 valueField: 'id',
... ...
... ... @@ -26,7 +26,7 @@ export const step1Schemas: FormSchema[] = [
26 26 //规则链(string)
27 27 {
28 28 field: 'defaultRuleChainId',
29   - label: '请选择规则链',
  29 + label: '规则链',
30 30 component: 'ApiSelect',
31 31 componentProps: {
32 32 api: async () => {
... ... @@ -48,6 +48,21 @@ export const step1Schemas: FormSchema[] = [
48 48 field: 'defaultQueueName',
49 49 label: '处理队列',
50 50 component: 'ApiSelect',
  51 + // componentProps: {
  52 + // api: async () => {
  53 + // const data = await findDictItemByCode({ dictCode: 'queen_execute_sequence' });
  54 + // const returnData = data.map((m) => {
  55 + // return {
  56 + // getLabelField: m.itemText,
  57 + // getValueField: m.itemValue,
  58 + // };
  59 + // });
  60 + // return returnData;
  61 + // },
  62 + // labelField: 'getLabelField',
  63 + // valueField: 'getValueField',
  64 + // immediate: true,
  65 + // },
51 66 componentProps: {
52 67 api: findDictItemByCode,
53 68 params: {
... ... @@ -55,8 +70,10 @@ export const step1Schemas: FormSchema[] = [
55 70 },
56 71 labelField: 'itemText',
57 72 valueField: 'itemValue',
  73 + resultField: 'items',
58 74 },
59 75 },
  76 +
60 77 {
61 78 label: '描述',
62 79 field: 'description',
... ... @@ -65,19 +82,6 @@ export const step1Schemas: FormSchema[] = [
65 82 maxLength: 255,
66 83 placeholder: '请输入描述',
67 84 },
68   - dynamicRules: () => {
69   - return [
70   - {
71   - required: false,
72   - validator: (_, value) => {
73   - if (String(value).length > 255) {
74   - return Promise.reject('字数不超过255个字');
75   - }
76   - return Promise.resolve();
77   - },
78   - },
79   - ];
80   - },
81 85 },
82 86 ];
83 87
... ...
... ... @@ -59,7 +59,7 @@
59 59 const updateFieldDeviceId = (v) => {
60 60 setTimeout(() => {
61 61 updateSchema({
62   - field: 'entityId',
  62 + field: 'deviceId',
63 63 componentProps: {
64 64 options: v,
65 65 },
... ... @@ -80,7 +80,7 @@
80 80 if (props.newActionMapFather !== 1) {
81 81 setTimeout(() => {
82 82 updateSchema({
83   - field: 'entityId',
  83 + field: 'deviceId',
84 84 componentProps: {
85 85 options: props.newActionMapFather,
86 86 },
... ... @@ -92,7 +92,7 @@
92 92 //新增清空设备选择
93 93 const clearSelectDevice = () => {
94 94 updateSchema({
95   - field: 'entityId',
  95 + field: 'deviceId',
96 96 componentProps: {
97 97 options: [],
98 98 },
... ...
... ... @@ -30,9 +30,17 @@ export enum AttributeActionEnum {
30 30
31 31 export enum AttrAndWenDuEnum {
32 32 IS_ALL_ATTR = 'ALL_ATTR',
33   - IS_WENDU_ACT = 'temp',
34   - IS_SHIDU = 'temp',
  33 + IS_WENDU_ACT = 'NUMERIC',
  34 + IS_SHIDU = 'NUMERIC',
  35 + IS_CONDITION_WENDU = 'NUMERIC2',
  36 + IS_CONDITION_SHIDU = 'NUMERIC1',
35 37 }
  38 +export const isConditionShiDu = (type: string) => {
  39 + return type === AttrAndWenDuEnum.IS_CONDITION_SHIDU;
  40 +};
  41 +export const isConditionWenDu = (type: string) => {
  42 + return type === AttrAndWenDuEnum.IS_CONDITION_WENDU;
  43 +};
36 44
37 45 export const isShiDu = (type: string) => {
38 46 return type === AttrAndWenDuEnum.IS_SHIDU;
... ... @@ -43,7 +51,7 @@ export const isWenDu = (type: string) => {
43 51 };
44 52
45 53 export const isTimeAll = (type: string) => {
46   - return type === TriggerEnum.IS_TIME_ALL;
  54 + return type === TriggerEnum.IS_TIME_ACT;
47 55 };
48 56
49 57 export const isMsg = (type: string) => {
... ... @@ -107,7 +115,7 @@ export const columns: BasicColumn[] = [
107 115 record.pendingStatus = true;
108 116 const newStatus = checked ? 1 : 0;
109 117 const { createMessage } = useMessage();
110   - screenLinkPagePutApi(record.id, newStatus)
  118 + screenLinkPagePutApi({ id: record.id, status: newStatus })
111 119 .then(() => {
112 120 record.status = newStatus;
113 121 if (record.status == 1) {
... ... @@ -265,7 +273,7 @@ export const useTriggerDrawerSchema: FormSchema[] = [
265 273 },
266 274 },
267 275 {
268   - field: 'entityIdCorn',
  276 + field: 'entityId1',
269 277 component: 'Input',
270 278 label: '',
271 279 componentProps: {
... ... @@ -275,7 +283,7 @@ export const useTriggerDrawerSchema: FormSchema[] = [
275 283 colProps: {
276 284 span: 12,
277 285 },
278   - ifShow: ({ values }) => isTime(Reflect.get(values, 'triggerType')),
  286 + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'triggerType')),
279 287 },
280 288 {
281 289 field: 'type1',
... ... @@ -320,8 +328,8 @@ export const useTriggerDrawerSchema: FormSchema[] = [
320 328 componentProps: {
321 329 placeholder: '全部属性',
322 330 options: [
323   - { label: '全部属性', value: 'All_ATTR' },
324   - { label: 'wendu', value: 'temp' },
  331 + { label: '全部属性', value: 'STRING' },
  332 + { label: 'wendu', value: 'NUMERIC' },
325 333 ],
326 334 },
327 335 ifShow: ({ values }) =>
... ... @@ -364,7 +372,7 @@ export const useTriggerDrawerSchema: FormSchema[] = [
364 372
365 373 ifShow: ({ values }) =>
366 374 isWenDu(Reflect.get(values, 'type2')) &&
367   - !isUpAndDown(Reflect.get(values, 'type')) &&
  375 + !isUpAndDown(Reflect.get(values, 'type1')) &&
368 376 !isTime(Reflect.get(values, 'triggerType')) &&
369 377 !isScene(Reflect.get(values, 'triggerType')) &&
370 378 !isHand(Reflect.get(values, 'triggerType')),
... ... @@ -374,7 +382,7 @@ export const useTriggerDrawerSchema: FormSchema[] = [
374 382 },
375 383
376 384 {
377   - field: 'entityIdScene',
  385 + field: 'entityId2',
378 386 label: '',
379 387 component: 'Select',
380 388 colProps: {
... ... @@ -456,21 +464,21 @@ export const useConditionDrawerSchema: FormSchema[] = [
456 464 ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'triggerType')),
457 465 },
458 466 {
459   - field: 'key',
  467 + field: 'type',
460 468 label: '',
461 469 component: 'Select',
462 470 componentProps: {
463 471 placeholder: '请选择或者输入属性',
464 472 options: [
465   - { label: 'shidu', value: 'temp' },
466   - { label: 'wendu', value: 'temp' },
  473 + { label: 'shidu', value: 'NUMERIC1' },
  474 + { label: 'wendu', value: 'NUMERIC2' },
467 475 ],
468 476 },
469 477 ifShow: ({ values }) => !isTimeAll(Reflect.get(values, 'triggerType')),
470 478 colProps: { span: 12 },
471 479 },
472 480 {
473   - field: 'operation',
  481 + field: 'operation1',
474 482 label: '',
475 483 component: 'Select',
476 484 componentProps: {
... ... @@ -484,11 +492,12 @@ export const useConditionDrawerSchema: FormSchema[] = [
484 492 ],
485 493 },
486 494 ifShow: ({ values }) =>
487   - isShiDu(Reflect.get(values, 'key')) && !isTimeAll(Reflect.get(values, 'triggerType')),
  495 + isConditionShiDu(Reflect.get(values, 'type')) &&
  496 + !isTimeAll(Reflect.get(values, 'triggerType')),
488 497 colProps: { span: 12 },
489 498 },
490 499 {
491   - field: 'value',
  500 + field: 'value1',
492 501 component: 'Input',
493 502 label: '',
494 503 componentProps: {
... ... @@ -497,14 +506,15 @@ export const useConditionDrawerSchema: FormSchema[] = [
497 506 },
498 507
499 508 ifShow: ({ values }) =>
500   - isShiDu(Reflect.get(values, 'key')) && !isTimeAll(Reflect.get(values, 'triggerType')),
  509 + isConditionShiDu(Reflect.get(values, 'type')) &&
  510 + !isTimeAll(Reflect.get(values, 'triggerType')),
501 511 colProps: {
502 512 span: 12,
503 513 },
504 514 },
505 515
506 516 {
507   - field: 'operation',
  517 + field: 'operation2',
508 518 label: '',
509 519 component: 'Select',
510 520 componentProps: {
... ... @@ -518,11 +528,12 @@ export const useConditionDrawerSchema: FormSchema[] = [
518 528 ],
519 529 },
520 530 ifShow: ({ values }) =>
521   - isWenDu(Reflect.get(values, 'key')) && !isTimeAll(Reflect.get(values, 'triggerType')),
  531 + isConditionWenDu(Reflect.get(values, 'type')) &&
  532 + !isTimeAll(Reflect.get(values, 'triggerType')),
522 533 colProps: { span: 12 },
523 534 },
524 535 {
525   - field: 'value',
  536 + field: 'value2',
526 537 component: 'Input',
527 538 label: '',
528 539 componentProps: {
... ... @@ -530,7 +541,8 @@ export const useConditionDrawerSchema: FormSchema[] = [
530 541 placeholder: '请输入比较值',
531 542 },
532 543 ifShow: ({ values }) =>
533   - isWenDu(Reflect.get(values, 'key')) && !isTimeAll(Reflect.get(values, 'triggerType')),
  544 + isConditionWenDu(Reflect.get(values, 'type')) &&
  545 + !isTimeAll(Reflect.get(values, 'triggerType')),
534 546 colProps: {
535 547 span: 12,
536 548 },
... ... @@ -554,7 +566,7 @@ export const useActionDrawerSchema: FormSchema[] = [
554 566 colProps: { span: 12 },
555 567 },
556 568 {
557   - field: 'entityId',
  569 + field: 'deviceId',
558 570 label: '',
559 571 component: 'Select',
560 572 componentProps: {
... ... @@ -606,7 +618,7 @@ export const useActionDrawerSchema: FormSchema[] = [
606 618 ifShow: ({ values }) => isMsg(Reflect.get(values, 'outTarget')),
607 619 },
608 620 {
609   - field: 'sceneLinkageId',
  621 + field: 'entityId',
610 622 label: '',
611 623 component: 'Select',
612 624 colProps: {
... ...
1 1 export interface IAddTrigger {
2 2 triggerType: string;
3   - deviceId: string;
  3 + entityId: string;
4 4 touchWay: string;
5 5 attributeChoose: string;
6 6 compare: string;
... ... @@ -9,7 +9,7 @@ export interface IAddTrigger {
9 9
10 10 export interface IAddCondition {
11 11 triggerType: string;
12   - deviceId: string;
  12 + entityId: string;
13 13 createTime: string;
14 14 updateTime: string;
15 15 compare: string;
... ...
... ... @@ -167,7 +167,7 @@
167 167 import AddTriggerForm from './addForm/trigger.vue';
168 168 import AddConditiForm from './addForm/condition.vue';
169 169 import AddActionForm from './addForm/doaction.vue';
170   - import { IAddTrigger, IAddCondition, IAddAction } from './index';
  170 + import { IAddTrigger } from './index';
171 171 import { Button } from '/@/components/Button';
172 172
173 173 export default defineComponent({
... ... @@ -184,8 +184,6 @@
184 184 setup(_, { emit }) {
185 185 const { proxy } = getCurrentInstance();
186 186 const lastEditRefTriggerChildDataArray = ref<[]>([]);
187   - const lastEditRefConditionChildDataArray = ref<[]>([]);
188   - const lastEditRefActionChildDataArray = ref<[]>([]);
189 187 const lastRefTriggerChildDataArray = ref<[]>([]);
190 188 const lastRefConditionChildDataArray = ref<[]>([]);
191 189 const lastRefActionChildDataArray = ref<[]>([]);
... ... @@ -200,42 +198,6 @@
200 198 compare: '',
201 199 value: '',
202 200 });
203   - const editTriggerData = reactive<IAddTrigger>({
204   - triggerType: '',
205   - entityId: '请选择设备',
206   - touchWay: '请选择触发方式',
207   - attributeChoose: '请选择属性',
208   - compare: '',
209   - value: '',
210   - });
211   - const addConditionData = reactive<IAddCondition>({
212   - triggerType: '',
213   - entityId: '',
214   - createTime: '',
215   - updateTime: '',
216   - compare: '',
217   - value: '',
218   - });
219   - const editConditionData = reactive<IAddCondition>({
220   - entityId: '请选择设备',
221   - createTime: '',
222   - updateTime: '',
223   - triggerType: '',
224   - compare: '',
225   - value: '',
226   - });
227   - const addActionData = reactive<IAddAction>({
228   - outTarget: '',
229   - entityId: '',
230   - command: '',
231   - sceneLinkageId: '',
232   - });
233   - const editActionData = reactive<IAddAction>({
234   - outTarget: '',
235   - entityId: '请选择设备',
236   - command: '请输入执行命令',
237   - sceneLinkageId: '',
238   - });
239 201 const addTriggerPushData = ref<[]>([]);
240 202 const addConditionPushData = ref<[]>([]);
241 203 const addActionPushData = ref<[]>([]);
... ... @@ -261,10 +223,9 @@
261 223 const newConditionFilterMap = ref<[]>([]);
262 224 const newActionFilterMap = ref<[]>([]);
263 225 let filterNewConditionArr = [];
264   - let filterNewActionArr = [];
265   - const pushEditArray = [];
266   - const pushEditConditionArray = [];
267   - const pushEditActionArray = [];
  226 + const pushEditArray = ref<any>([{}]);
  227 + const pushEditConditionArray = ref<any>([{}]);
  228 + const pushEditActionArray = ref<any>([{}]);
268 229 let filterArrayTrigger = [];
269 230 const filterArrayCondition = ref<[]>([]);
270 231 const filterArrayAction = ref<[]>([]);
... ... @@ -279,6 +240,7 @@
279 240 doActions: [],
280 241 };
281 242 let optionsItemArray = ref<[]>([]);
  243 + const isNoChange = ref(false);
282 244
283 245 const [registerForm, { resetFields, setFieldsValue, validateFields }] = useForm({
284 246 labelWidth: 120,
... ... @@ -291,8 +253,6 @@
291 253 isUpdate.value = !!data?.isUpdate;
292 254 if (!unref(isUpdate)) {
293 255 try {
294   - filterNewActionArr = [];
295   - filterNewActionArr.length = 0;
296 256 refTriggerChildData = {};
297 257 refConditionChildData = {};
298 258 refActionChildData = {};
... ... @@ -337,45 +297,51 @@
337 297 return e;
338 298 }
339 299 } else {
340   - newFilterMap.value = [];
341   - newConditionFilterMap.value = [];
342   - newActionFilterMap.value = [];
343   - clearAllArrayFunc();
344   - editTriggerPushData.value = [];
345   - editTriggerPushData.value.length = 0;
346   - editConditionPushData.value = [];
347   - editConditionPushData.value.length = 0;
348   - editActionPushData.value = [];
349   - editActionPushData.value.length = 0;
350   - lastEditRefTriggerChildDataArray.value = [];
351   - getId.value = data.record.id;
352   - getTenantId.value = data.record.tenantId;
353   - await setFieldsValue({
354   - ...data.record,
355   - });
356   - editTriggerPushData.value = data.record.triggers;
357   - editConditionPushData.value = data.record.doConditions;
358   - editActionPushData.value = data.record.doActions;
359   - const options = await screenLinkPageByDeptIdGetDevice({
360   - organizationId: data.record.organizationId,
361   - });
362 300 try {
  301 + pushEditArray.value = [];
  302 + pushEditArray.value.length = 0;
  303 + pushEditConditionArray.value.length = 0;
  304 + pushEditConditionArray.value = [];
  305 + pushEditActionArray.value = [];
  306 + pushEditActionArray.value.length = 0;
  307 + newFilterMap.value = [];
  308 + newConditionFilterMap.value = [];
  309 + newActionFilterMap.value = [];
  310 + clearAllArrayFunc();
  311 + editTriggerPushData.value = [];
  312 + editTriggerPushData.value.length = 0;
  313 + editConditionPushData.value = [];
  314 + editConditionPushData.value.length = 0;
  315 + editActionPushData.value = [];
  316 + editActionPushData.value.length = 0;
  317 + lastEditRefTriggerChildDataArray.value = [];
  318 + getId.value = data.record.id;
  319 + getTenantId.value = data.record.tenantId;
  320 + await setFieldsValue({
  321 + ...data.record,
  322 + });
  323 + editTriggerPushData.value = data.record.triggers;
  324 + isNoChange.value = true;
  325 + editConditionPushData.value = data.record.doConditions;
  326 + editActionPushData.value = data.record.doActions;
  327 + const options = await screenLinkPageByDeptIdGetDevice({
  328 + organizationId: data.record.organizationId,
  329 + });
363 330 data.record.triggers.forEach((f1) => {
364 331 options.items?.forEach((f2) => {
365   - if (f2.id == f1.entityId) {
  332 + if (f2.tbDeviceId == f1.entityId) {
366 333 newFilterMap.value.push({
367   - value: f2.id,
  334 + value: f2.tbDeviceId,
368 335 label: f2.name,
369 336 });
370 337 }
371 338 });
372 339 });
373   -
374 340 data.record.doConditions.forEach((f1) => {
375 341 options.items?.forEach((f2) => {
376   - if (f2.id == f1.entityId) {
  342 + if (f2.tbDeviceId == f1.entityId) {
377 343 newConditionFilterMap.value.push({
378   - value: f2.id,
  344 + value: f2.tbDeviceId,
379 345 label: f2.name,
380 346 });
381 347 }
... ... @@ -383,20 +349,24 @@
383 349 });
384 350 data.record.doActions.forEach((f1) => {
385 351 options.items?.forEach((f2) => {
386   - if (f2.id == f1.entityId) {
  352 + if (f2.tbDeviceId == f1.deviceId) {
387 353 newActionFilterMap.value.push({
388   - value: f2.id,
  354 + value: f2.tbDeviceId,
389 355 label: f2.name,
390 356 });
391 357 }
392 358 });
393 359 });
394   - } catch (e) {}
  360 + } catch (e) {
  361 + return e;
  362 + }
395 363 }
396 364 });
397 365 const getTitle = computed(() => (!unref(isUpdate) ? '新增场景联动' : '编辑场景联动'));
398 366 const handleClose = () => {
399   - pushEditArray.length = 0;
  367 + pushEditArray.value.length = 0;
  368 + pushEditConditionArray.value.length = 0;
  369 + pushEditActionArray.value.length = 0;
400 370 lastRefTriggerChildDataArray.value.length = 0;
401 371 lastRefTriggerChildDataArray.value = [];
402 372 lastRefConditionChildDataArray.value.length = 0;
... ... @@ -431,12 +401,9 @@
431 401 }
432 402 };
433 403 watch(getData, async (newV) => {
434   - // getDeviceInfo.value = newV;
435   - // getDeviceInfo1.value = newV;
436   - // getDeviceInfo2.value = newV;
437 404 const options = await screenLinkPageByDeptIdGetDevice({ organizationId: newV });
438 405 options.items.forEach((v) => {
439   - return (v.value = v.id), (v.label = v.name);
  406 + return (v.value = v.tbDeviceId), (v.label = v.name);
440 407 });
441 408 optionsItemArray.value = options.items;
442 409 updateDeviceIdFunc(optionsItemArray.value);
... ... @@ -457,7 +424,7 @@
457 424 }
458 425 };
459 426
460   - //触发器方法
  427 + //获取触发器方法
461 428 const refTriggerChildDataFunc = () => {
462 429 try {
463 430 refTriggerChildData = proxy.$refs.refTriggerChild.getFieldsValueFunc();
... ... @@ -465,7 +432,7 @@
465 432 return e;
466 433 }
467 434 };
468   - //执行条件方法
  435 + //获取执行条件方法
469 436 const refConditionChildDataFunc = () => {
470 437 try {
471 438 refConditionChildData = proxy.$refs.refConditionChild.getFieldsValueFunc();
... ... @@ -473,7 +440,7 @@
473 440 return e;
474 441 }
475 442 };
476   - //执行动作方法
  443 + //获取执行动作方法
477 444 const refActionChildDataFunc = () => {
478 445 try {
479 446 refActionChildData = proxy.$refs.refActionChild.getFieldsValueFunc();
... ... @@ -484,101 +451,75 @@
484 451
485 452 const getDefaultValue = () => {
486 453 if (!unref(isUpdate)) {
  454 + refTriggerChildDataFunc();
  455 + refConditionChildDataFunc();
  456 + refActionChildDataFunc();
  457 + const newTriggerArray = addTriggerPushData.value.concat(refTriggerChildData);
  458 + const newConditionArray = addConditionPushData.value.concat(refConditionChildData);
  459 + const newActionArray = addActionPushData.value.concat(refActionChildData);
  460 + newTriggerArray.shift();
  461 + newConditionArray.shift();
  462 + newActionArray.shift();
487 463 delete getAllFormData.id;
488 464 delete getAllFormData.getTenantId;
489 465 triggersObj = {
490   - triggers: lastRefTriggerChildDataArray.value,
  466 + triggers: newTriggerArray,
491 467 };
492 468 conditionsObj = {
493   - doConditions: lastRefConditionChildDataArray.value,
  469 + doConditions: newConditionArray,
494 470 };
495 471 actionsObj = {
496   - doActions: lastRefActionChildDataArray.value,
  472 + doActions: newActionArray,
497 473 };
498 474 Object.assign(getAllFormData, triggersObj, conditionsObj, actionsObj);
499 475 } else {
500   - refTriggerChildDataFunc();
501   - refConditionChildDataFunc();
502   - refActionChildDataFunc();
503   - pushEditArray.push(refTriggerChildData as never);
504   - pushEditConditionArray.push(refConditionChildData as never);
505   - pushEditActionArray.push(refActionChildData as never);
506   - pushEditArray.forEach((f) => {
507   - editTriggerPushData.value.push(f as never);
508   - });
509   - pushEditConditionArray.forEach((f) => {
510   - editConditionPushData.value.push(f as never);
511   - });
512   - pushEditActionArray.forEach((f) => {
513   - editActionPushData.value.push(f as never);
514   - });
515   - const filterTwoArrayTrigger = editTriggerPushData.value.filter((f) =>
516   - f?.hasOwnProperty('id')
517   - );
518   -
519   - const filterTwoArrayCondition = editConditionPushData.value.filter((f) =>
520   - f?.hasOwnProperty('id')
521   - );
522   -
523   - const filterTwoArrayAction = editActionPushData.value.filter((f) =>
524   - f?.hasOwnProperty('id')
525   - );
526   -
527   - const filterThreeArrayTrigger = editTriggerPushData.value.filter(
528   - (f) => f?.entityId == ''
529   - );
530   - const filterThreeArrayCondition = editConditionPushData.value.filter(
531   - (f) => f?.entityId == ''
532   - );
533   - const filterThreeArrayAction = editActionPushData.value.filter((f) => f?.entityId == '');
534   - const filterFourArrayTrigger = filterThreeArrayTrigger.filter(
535   - (f) => f?.triggerType !== ''
536   - );
537   - const filterFourArrayCondition = filterThreeArrayCondition.filter(
538   - (f) => f?.triggerType !== ''
539   - );
540   -
541   - const filterFourArrayAction = filterThreeArrayAction.filter((f) => f?.outTarget !== '');
542   -
543   - filterFourArrayTrigger.forEach((f) => {
544   - filterTwoArrayTrigger.push(f);
  476 + let kongTriggerObj = {};
  477 + let kongConditionObj = {};
  478 + let kongActionObj = {};
  479 + editTriggerPushData.value.forEach((f) => {
  480 + kongTriggerObj = f;
  481 + pushEditArray.value.push(kongTriggerObj);
545 482 });
546   - filterFourArrayCondition.forEach((f) => {
547   - filterTwoArrayCondition.push(f);
  483 + editConditionPushData.value.forEach((f) => {
  484 + kongConditionObj = f;
  485 + pushEditConditionArray.value.push(kongConditionObj);
548 486 });
549   - filterFourArrayAction.forEach((f) => {
550   - filterTwoArrayAction.push(f);
  487 + editActionPushData.value.forEach((f) => {
  488 + kongActionObj = f;
  489 + pushEditActionArray.value.push(kongActionObj);
551 490 });
552   -
553   - let editTriggersObj = {
554   - triggers: filterTwoArrayTrigger,
  491 + refTriggerChildDataFunc();
  492 + let newTriggerArray = pushEditArray.value.concat(refTriggerChildData);
  493 + newTriggerArray = newTriggerArray.filter((f) => Object.keys(f).length !== 0);
  494 + newTriggerArray.shift();
  495 + triggersObj = {
  496 + triggers: isNoChange.value ? editTriggerPushData.value : newTriggerArray,
555 497 };
556   - let editConditionsObj = {
557   - doConditions: filterTwoArrayCondition,
  498 + refConditionChildDataFunc();
  499 + let newConditionArray = pushEditConditionArray.value.concat(refConditionChildData);
  500 + newConditionArray = newConditionArray.filter((f) => Object.keys(f).length !== 0);
  501 + newConditionArray.shift();
  502 + conditionsObj = {
  503 + doConditions: newConditionArray,
558 504 };
559   - let editActionsObj = {
560   - doActions: filterTwoArrayAction,
  505 + refActionChildDataFunc();
  506 + let newActionArray = pushEditActionArray.value.concat(refActionChildData);
  507 + newActionArray = newActionArray.filter((f) => Object.keys(f).length !== 0);
  508 + newActionArray.shift();
  509 + actionsObj = {
  510 + doActions: newActionArray,
561 511 };
562   - Object.assign(getAllFormData, editTriggersObj, editConditionsObj, editActionsObj);
  512 + Object.assign(getAllFormData, triggersObj, conditionsObj, actionsObj);
563 513 }
564 514 };
565 515
566 516 const handleSubmit = async () => {
567 517 if (!unref(isUpdate)) {
568   - addTrigger();
569   - addCondition();
570   - addAction();
571 518 getDefaultValue();
572 519 getValuesFormData = await validateFields();
573 520 if (!getValuesFormData) return;
  521 + if (getAllFormData.doActions.length == 0) return createMessage.error('请填写执行动作');
574 522 Object.assign(getAllFormData, getValuesFormData);
575   - let kongObj = true;
576   - lastRefActionChildDataArray.value.forEach((f) => {
577   - if (Object.keys(f).length == 0) {
578   - kongObj = false;
579   - }
580   - });
581   - if (!kongObj) return createMessage.error('请填写执行动作');
582 523 await screenLinkPageAddApi(getAllFormData);
583 524 createMessage.success('场景联动新增成功');
584 525 closeDrawer();
... ... @@ -589,49 +530,41 @@
589 530 Object.assign(getAllFormData, getValuesFormData);
590 531 getAllFormData.id = getId.value;
591 532 getAllFormData.tenantId = getTenantId.value;
  533 + refTriggerChildData = {};
  534 + pushEditArray.value.length = 0;
  535 + pushEditConditionArray.value.length = 0;
  536 + pushEditActionArray.value.length = 0;
  537 + console.log('edit data', getAllFormData);
592 538 await screenLinkPageUpdateApi(getAllFormData);
593 539 createMessage.success('场景联动编辑成功');
594 540 closeDrawer();
595 541 emit('success');
596 542 }
597 543 };
598   -
599   - //默认添加触发器
600   - const defaultAddTrigger = () => {
601   - if (unref(addTriggerPushData).length == 0) {
602   - setTimeout(() => {
603   - addTrigger();
604   - }, 10);
605   - }
606   - };
607 544 //新增触发器
608 545 const addTrigger = () => {
609 546 if (!unref(isUpdate)) {
610   - unref(addTriggerPushData).push(addTriggerData as never);
611 547 refTriggerChildDataFunc();
612   - filterNewTriggerArr.push(refTriggerChildData as never);
613   - (lastRefTriggerChildDataArray.value as never[]) = filterNewTriggerArr.filter(
614   - (v) => Object.keys(v).length !== 0
615   - );
616   - const newGetTriggerData = lastRefTriggerChildDataArray.value.map((m) => {
  548 + unref(addTriggerPushData).push(refTriggerChildData as never);
  549 + addTriggerPushData.value = addTriggerPushData.value.map((m) => {
617 550 return {
618 551 triggerType: m?.triggerType,
619   - entityId: m?.entityId,
  552 + entityId: m?.entityId || m?.entityId1 || m?.entityId2,
620 553 triggerCondition: {
621 554 condition: [
622 555 {
623 556 key: {
624   - key: 'CO2',
625   - type: 'TIME_SERIES',
  557 + key: m.key1 == null ? 'CO2' : m.key1,
  558 + type: m.type1 == null ? 'TIME_SERIES' : m.type1,
626 559 },
627   - valueType: 'NUMERIC',
  560 + valueType: m.type2 == null ? 'NUMERIC' : m.type2,
628 561 value: {},
629 562 predicate: {
630   - type: 'NUMERIC',
  563 + type: m.type2 == null ? 'NUMERIC' : m.type2,
631 564 value: {
632   - defaultValue: Number(m.value),
  565 + defaultValue: Number(m.value) == null ? 0 : Number(m.value),
633 566 },
634   - operation: m.operation,
  567 + operation: m.operation == null ? 'GREATER_OR_EQUAL' : m.operation,
635 568 },
636 569 },
637 570 ],
... ... @@ -641,7 +574,6 @@
641 574 },
642 575 };
643 576 });
644   - lastRefTriggerChildDataArray.value = newGetTriggerData;
645 577 try {
646 578 setTimeout(() => {
647 579 proxy.$refs.refTriggerChild.updateFieldDeviceId(optionsItemArray.value);
... ... @@ -650,45 +582,70 @@
650 582 return e;
651 583 }
652 584 } else {
  585 + isNoChange.value = false;
  586 + unref(editTriggerPushData).push(refTriggerChildData as never);
653 587 refTriggerChildDataFunc();
654   - pushEditArray.push(refTriggerChildData as never);
655   - unref(editTriggerPushData).push(addTriggerData as never);
  588 + pushEditArray.value.push(refTriggerChildData);
  589 + pushEditArray.value = pushEditArray.value.map((m) => {
  590 + return {
  591 + triggerType: m?.triggerType,
  592 + entityId: m?.entityId || m?.entityId1 || m?.entityId2,
  593 + triggerCondition: {
  594 + condition: [
  595 + {
  596 + key: {
  597 + key: m.key1 == null ? 'CO2' : m.key1,
  598 + type: m.type1 == null ? 'TIME_SERIES' : m.type1,
  599 + },
  600 + valueType: m.type2 == null ? 'NUMERIC' : m.type2,
  601 + value: {},
  602 + predicate: {
  603 + type: m.type2 == null ? 'NUMERIC' : m.type2,
  604 + value: {
  605 + defaultValue: Number(m.value) == null ? 0 : Number(m.value),
  606 + },
  607 + operation: m.operation == null ? 'GREATER_OR_EQUAL' : m.operation,
  608 + },
  609 + },
  610 + ],
  611 + spec: {
  612 + type: 'SIMPLE',
  613 + },
  614 + },
  615 + };
  616 + });
  617 + try {
  618 + setTimeout(() => {
  619 + proxy.$refs.refTriggerChild.updateFieldDeviceId(optionsItemArray.value);
  620 + }, 150);
  621 + } catch (e) {
  622 + return e;
  623 + }
  624 + refTriggerChildData = {};
656 625 }
657 626 };
658 627 const removeTrigger = () => {
659 628 if (!unref(isUpdate)) {
660 629 try {
661   - unref(addTriggerPushData).splice(0, 1);
662   - lastRefTriggerChildDataArray.value.splice(0, 1);
  630 + unref(addTriggerPushData).pop();
663 631 } catch (e) {
664 632 return e;
665 633 }
666 634 } else {
667 635 try {
668   - unref(editTriggerPushData).splice(0, 1);
669   - lastEditRefTriggerChildDataArray.value.pop();
  636 + unref(editTriggerPushData).pop();
670 637 } catch (e) {
671 638 return e;
672 639 }
673 640 }
674 641 };
675 642
676   - //默认添加执行条件
677   - const defaultAddCondition = () => {
678   - if (unref(addConditionPushData).length == 0) {
679   - addCondition();
680   - }
681   - };
682 643 //新增执行条件
683 644 const addCondition = () => {
684 645 if (!unref(isUpdate)) {
685   - unref(addConditionPushData).push(addConditionData as never);
686 646 refConditionChildDataFunc();
687   - filterNewConditionArr.push(refConditionChildData as never);
688   - (lastRefConditionChildDataArray.value as never[]) = filterNewConditionArr.filter(
689   - (v) => Object.keys(v).length !== 0
690   - );
691   - const newGetConditionData = lastRefConditionChildDataArray.value.map((m) => {
  647 + unref(addConditionPushData).push(refConditionChildData as never);
  648 + addConditionPushData.value = addConditionPushData.value.map((m) => {
692 649 return {
693 650 triggerType: m?.triggerType,
694 651 entityId: m?.entityId,
... ... @@ -699,14 +656,29 @@
699 656 type: 'TIME_SERIES',
700 657 key: 'CO2',
701 658 },
702   - valueType: 'NUMERIC',
  659 + valueType:
  660 + m.type == 'NUMERIC1'
  661 + ? 'NUMERIC'
  662 + : m.type == 'NUMERIC2'
  663 + ? 'NUMERIC'
  664 + : 'NUMERIC',
703 665 value: {},
704 666 predicate: {
705   - type: 'NUMERIC',
  667 + type:
  668 + m.type == 'NUMERIC1'
  669 + ? 'NUMERIC'
  670 + : m.type == 'NUMERIC2'
  671 + ? 'NUMERIC'
  672 + : 'NUMERIC',
706 673 value: {
707   - defaultValue: Number(m.value),
  674 + defaultValue:
  675 + Number(m.value1) == null
  676 + ? 0
  677 + : Number(m.value1) || Number(m.value2) == null
  678 + ? 0
  679 + : Number(m.value2),
708 680 },
709   - operation: m.operation,
  681 + operation: m.operation1 || m.operatio2,
710 682 },
711 683 },
712 684 ],
... ... @@ -716,7 +688,6 @@
716 688 },
717 689 };
718 690 });
719   - lastRefConditionChildDataArray.value = newGetConditionData;
720 691 try {
721 692 setTimeout(() => {
722 693 proxy.$refs.refConditionChild.updateFieldDeviceId(optionsItemArray.value);
... ... @@ -725,23 +696,73 @@
725 696 return e;
726 697 }
727 698 } else {
  699 + isNoChange.value = false;
  700 + unref(editConditionPushData).push(refConditionChildData as never);
728 701 refConditionChildDataFunc();
729   - pushEditConditionArray.push(refConditionChildData as never);
730   - unref(editConditionPushData).push(addConditionData as never);
  702 + pushEditConditionArray.value.push(refConditionChildData);
  703 + pushEditConditionArray.value = pushEditConditionArray.value.map((m) => {
  704 + return {
  705 + triggerType: m?.triggerType,
  706 + entityId: m?.entityId,
  707 + triggerCondition: {
  708 + condition: [
  709 + {
  710 + key: {
  711 + type: 'TIME_SERIES',
  712 + key: 'CO2',
  713 + },
  714 + valueType:
  715 + m.type == 'NUMERIC1'
  716 + ? 'NUMERIC'
  717 + : m.type == 'NUMERIC2'
  718 + ? 'NUMERIC'
  719 + : 'NUMERIC',
  720 + value: {},
  721 + predicate: {
  722 + type:
  723 + m.type == 'NUMERIC1'
  724 + ? 'NUMERIC'
  725 + : m.type == 'NUMERIC2'
  726 + ? 'NUMERIC'
  727 + : 'NUMERIC',
  728 + value: {
  729 + defaultValue:
  730 + Number(m.value1) == null
  731 + ? 0
  732 + : Number(m.value1) || Number(m.value2) == null
  733 + ? 0
  734 + : Number(m.value2),
  735 + },
  736 + operation: m.operation1 || m.operatio2,
  737 + },
  738 + },
  739 + ],
  740 + spec: {
  741 + type: 'SIMPLE',
  742 + },
  743 + },
  744 + };
  745 + });
  746 + try {
  747 + setTimeout(() => {
  748 + proxy.$refs.refConditionChild.updateFieldDeviceId(optionsItemArray.value);
  749 + }, 150);
  750 + } catch (e) {
  751 + return e;
  752 + }
  753 + refConditionChildData = {};
731 754 }
732 755 };
733 756 const removeCondition = () => {
734 757 if (!unref(isUpdate)) {
735 758 try {
736   - unref(addConditionPushData).splice(0, 1);
737   - lastRefConditionChildDataArray.value.pop();
  759 + unref(addConditionPushData).pop();
738 760 } catch (e) {
739 761 return e;
740 762 }
741 763 } else {
742 764 try {
743 765 unref(editConditionPushData).splice(0, 1);
744   - lastEditRefConditionChildDataArray.value.pop();
745 766 } catch (e) {
746 767 return e;
747 768 }
... ... @@ -757,12 +778,8 @@
757 778 //新增执行动作
758 779 const addAction = () => {
759 780 if (!unref(isUpdate)) {
760   - unref(addActionPushData).push(addActionData as never);
761 781 refActionChildDataFunc();
762   - filterNewActionArr.push(refActionChildData as never);
763   - (lastRefActionChildDataArray.value as never[]) = filterNewActionArr.filter(
764   - (v) => Object.keys(v).length !== 0
765   - );
  782 + unref(addActionPushData).push(refActionChildData as never);
766 783 try {
767 784 setTimeout(() => {
768 785 proxy.$refs.refActionChild.updateFieldDeviceId(optionsItemArray.value);
... ... @@ -771,23 +788,30 @@
771 788 return e;
772 789 }
773 790 } else {
  791 + isNoChange.value = false;
  792 + unref(editActionPushData).push(refActionChildData as never);
774 793 refActionChildDataFunc();
775   - pushEditActionArray.push(refActionChildData as never);
776   - unref(editActionPushData).push(addActionData as never);
  794 + pushEditActionArray.value.push(refActionChildData);
  795 + try {
  796 + setTimeout(() => {
  797 + proxy.$refs.refActionChild.updateFieldDeviceId(optionsItemArray.value);
  798 + }, 150);
  799 + } catch (e) {
  800 + return e;
  801 + }
  802 + refActionChildData = {};
777 803 }
778 804 };
779 805 const removeAction = () => {
780 806 if (!unref(isUpdate)) {
781 807 try {
782   - unref(addActionPushData).splice(0, 1);
783   - lastRefActionChildDataArray.value.pop();
  808 + unref(addActionPushData).pop();
784 809 } catch (e) {
785 810 return e;
786 811 }
787 812 } else {
788 813 try {
789 814 unref(editActionPushData).splice(0, 1);
790   - lastEditRefActionChildDataArray.value.pop();
791 815 } catch (e) {
792 816 return e;
793 817 }
... ... @@ -797,8 +821,6 @@
797 821 return {
798 822 updateDeviceIdFunc,
799 823 handleClose,
800   - defaultAddTrigger,
801   - defaultAddCondition,
802 824 newFilterMap,
803 825 newConditionFilterMap,
804 826 newActionFilterMap,
... ...