Showing
28 changed files
with
1009 additions
and
601 deletions
... | ... | @@ -6,15 +6,16 @@ import { |
6 | 6 | } from './model/dataManagerModel'; |
7 | 7 | |
8 | 8 | enum DataManagerApi { |
9 | - DATA_MANAGER_CONVERT_ADD_OR_EDIT = '/convert', | |
10 | - DATA_MANAGER_CONVERT_DELETE = '/convert', | |
11 | - DATA_MANAGER_CONVERT_POST_CHECK_NAME = '/convert/check', | |
12 | - DATA_MANAGER_CONVERT_POST_ENABLE_OR_DISABLED = '/convert/update', | |
9 | + DATA_MANAGER_CONVERT_ADD_OR_EDIT = '/convert/config', | |
10 | + DATA_MANAGER_CONVERT_DELETE = '/convert/config', | |
11 | + DATA_MANAGER_CONVERT_POST_CHECK_NAME = '/convert/check/config', | |
12 | + DATA_MANAGER_CONVERT_POST_ENABLE_OR_DISABLED = '/convert/update/config', | |
13 | 13 | DATA_MANAGER_CONVERT_GET = '/convert', |
14 | 14 | } |
15 | 15 | |
16 | 16 | // 转换配置分页查询 |
17 | 17 | export const getConvertApi = (params: TDataManagerModelQuery) => { |
18 | + params.nodeType = 1; | |
18 | 19 | return defHttp.get<TDataManagerModelQuery>({ |
19 | 20 | url: DataManagerApi.DATA_MANAGER_CONVERT_GET, |
20 | 21 | params, |
... | ... | @@ -40,15 +41,16 @@ export const deleteConvertApi = (ids: string[]) => { |
40 | 41 | }; |
41 | 42 | |
42 | 43 | // 查询配置名称是否存在 |
43 | -export const isExistDataManagerNameApi = (params?: TDataManagerModelQuery) => { | |
44 | - return defHttp.get({ | |
44 | +export const isExistDataManagerNameApi = (check: {}) => { | |
45 | + return defHttp.post({ | |
45 | 46 | url: DataManagerApi.DATA_MANAGER_CONVERT_POST_CHECK_NAME, |
46 | - params, | |
47 | + data: check, | |
47 | 48 | }); |
48 | 49 | }; |
49 | 50 | |
50 | 51 | // 启用或者禁用配置 |
51 | 52 | export const isEnableOrDisableApi = (params: IEnableOrDisableModel) => { |
53 | + params.nodeType = 1; | |
52 | 54 | return defHttp.post<IEnableOrDisableModel>({ |
53 | 55 | url: DataManagerApi.DATA_MANAGER_CONVERT_POST_ENABLE_OR_DISABLED, |
54 | 56 | params, | ... | ... |
... | ... | @@ -5,6 +5,7 @@ export type TDataManagerModelQuery = BasicPageParams & TDataManagerParam; |
5 | 5 | export type TDataManagerParam = { |
6 | 6 | name?: string; |
7 | 7 | status?: string; |
8 | + nodeType?: number; | |
8 | 9 | }; |
9 | 10 | |
10 | 11 | export interface IDataManagerModel { |
... | ... | @@ -31,4 +32,5 @@ export interface IDataManagerModel { |
31 | 32 | export interface IEnableOrDisableModel { |
32 | 33 | convertIds?: [string]; |
33 | 34 | status?: number; |
35 | + nodeType?: number; | |
34 | 36 | } | ... | ... |
... | ... | @@ -65,7 +65,7 @@ function dynamicImport( |
65 | 65 | |
66 | 66 | // Turn background objects into routing objects |
67 | 67 | export function transformObjToRoute<T = AppRouteModule>(routeList: AppRouteModule[]): T[] { |
68 | - routeList.forEach((route) => { | |
68 | + routeList?.forEach((route) => { | |
69 | 69 | const component = route.component as string; |
70 | 70 | if (component) { |
71 | 71 | if (component.toUpperCase() === 'LAYOUT') { | ... | ... |
... | ... | @@ -123,19 +123,23 @@ export const usePermissionStore = defineStore({ |
123 | 123 | let homePath: string = userStore.getUserInfo.homePath || PageEnum.BASE_HOME; |
124 | 124 | function patcher(routes: AppRouteRecordRaw[], parentPath = '') { |
125 | 125 | if (parentPath) parentPath = parentPath + '/'; |
126 | - routes?.forEach((route: AppRouteRecordRaw) => { | |
127 | - const { path, children, redirect } = route; | |
128 | - const currentPath = path.startsWith('/') ? path : parentPath + path; | |
129 | - if (currentPath === homePath) { | |
130 | - if (redirect) { | |
131 | - homePath = route.redirect! as string; | |
132 | - } else { | |
133 | - route.meta = Object.assign({}, route.meta, { affix: true }); | |
134 | - throw new Error('end'); | |
126 | + try { | |
127 | + routes?.forEach((route: AppRouteRecordRaw) => { | |
128 | + const { path, children, redirect } = route; | |
129 | + const currentPath = path.startsWith('/') ? path : parentPath + path; | |
130 | + if (currentPath === homePath) { | |
131 | + if (redirect) { | |
132 | + homePath = route.redirect! as string; | |
133 | + } else { | |
134 | + route.meta = Object.assign({}, route.meta, { affix: true }); | |
135 | + throw new Error('end'); | |
136 | + } | |
135 | 137 | } |
136 | - } | |
137 | - children && children.length > 0 && patcher(children, currentPath); | |
138 | - }); | |
138 | + children && children.length > 0 && patcher(children, currentPath); | |
139 | + }); | |
140 | + } catch (e) { | |
141 | + return e; | |
142 | + } | |
139 | 143 | } |
140 | 144 | try { |
141 | 145 | patcher(routes); | ... | ... |
... | ... | @@ -57,6 +57,7 @@ |
57 | 57 | }); |
58 | 58 | const getTypeObj = reactive({ |
59 | 59 | type: '', |
60 | + remark: '', | |
60 | 61 | }); |
61 | 62 | const additionalInfoV = { |
62 | 63 | additionalInfo: { |
... | ... | @@ -146,28 +147,35 @@ |
146 | 147 | } |
147 | 148 | }; |
148 | 149 | const addOrEditFunc = async () => { |
150 | + if (!unref(isUpdate)) { | |
151 | + proxy.$refs.refTransferConfigParams.clearSonValueValidateFunc(); | |
152 | + } | |
149 | 153 | getModeSonFormValue.value = await proxy.$refs.refTransferConfigMode.getSonValueFunc(); |
150 | 154 | getSonFormValue.value = await proxy.$refs.refTransferConfigParams.getSonValueDataFunc(); |
151 | 155 | if (getModeSonFormValue.value?.type == 'org.thingsboard.rule.engine.kafka.TbKafkaNode') { |
152 | 156 | getTypeObj.type = 'org.thingsboard.rule.engine.kafka.TbKafkaNode'; |
157 | + getTypeObj.remark = getModeSonFormValue.value.remark; | |
153 | 158 | getNameObj.name = getSonFormValue.value?.configuration?.name; |
154 | 159 | commonFunc(); |
155 | 160 | } else if ( |
156 | 161 | getModeSonFormValue.value?.type == 'org.thingsboard.rule.engine.mqtt.TbMqttNode' |
157 | 162 | ) { |
158 | 163 | getTypeObj.type = 'org.thingsboard.rule.engine.mqtt.TbMqttNode'; |
164 | + getTypeObj.remark = getModeSonFormValue.value.remark; | |
159 | 165 | getNameObj.name = getSonFormValue.value?.configuration?.name; |
160 | 166 | commonFunc(); |
161 | 167 | } else if ( |
162 | 168 | getModeSonFormValue.value?.type == 'org.thingsboard.rule.engine.rabbitmq.TbRabbitMqNode' |
163 | 169 | ) { |
164 | 170 | getTypeObj.type = 'org.thingsboard.rule.engine.rabbitmq.TbRabbitMqNode'; |
171 | + getTypeObj.remark = getModeSonFormValue.value.remark; | |
165 | 172 | getNameObj.name = getSonFormValue.value?.configuration?.name; |
166 | 173 | commonFunc(); |
167 | 174 | } else if ( |
168 | 175 | getModeSonFormValue.value?.type == 'org.thingsboard.rule.engine.rest.TbRestApiCallNode' |
169 | 176 | ) { |
170 | 177 | getTypeObj.type = 'org.thingsboard.rule.engine.rest.TbRestApiCallNode'; |
178 | + getTypeObj.remark = getModeSonFormValue.value.remark; | |
171 | 179 | getNameObj.name = getSonFormValue.value?.configuration?.name; |
172 | 180 | commonFunc(); |
173 | 181 | } |
... | ... | @@ -192,12 +200,14 @@ |
192 | 200 | await postAddConvertApi(allPostForm); |
193 | 201 | createMessage.success('数据转换新增成功'); |
194 | 202 | emit('success'); |
203 | + defineClearFunc(); | |
195 | 204 | closeModal(); |
196 | 205 | } else { |
197 | 206 | await addOrEditFunc(); |
198 | 207 | await postAddConvertApi(allPostForm); |
199 | 208 | createMessage.success('数据转换编辑成功'); |
200 | 209 | emit('success'); |
210 | + defineClearFunc(); | |
201 | 211 | closeModal(); |
202 | 212 | } |
203 | 213 | }; | ... | ... |
... | ... | @@ -20,24 +20,24 @@ export const columns: BasicColumn[] = [ |
20 | 20 | : record.type === 'org.thingsboard.rule.engine.mqtt.TbMqttNode' |
21 | 21 | ? 'MQTT' |
22 | 22 | : record.type === 'org.thingsboard.rule.engine.rabbitmq.TbRabbitMqNode' |
23 | - ? 'RabbitMq' | |
24 | - : 'Api'; | |
23 | + ? 'RabbitMQ' | |
24 | + : 'REST_API'; | |
25 | 25 | const color = |
26 | 26 | enable == 'KafKa' |
27 | - ? '#0960cb' | |
27 | + ? '#0099FF' | |
28 | 28 | : enable == 'MQTT' |
29 | - ? '#ed6f6f' | |
30 | - : enable == 'RabbitMq' | |
31 | - ? '#efbd47' | |
32 | - : '#55d187'; | |
29 | + ? '#7C7CC9' | |
30 | + : enable == 'RabbitMQ' | |
31 | + ? '#E8A15E' | |
32 | + : '#81B1AB'; | |
33 | 33 | const text = |
34 | 34 | enable == 'KafKa' |
35 | 35 | ? 'KafKa' |
36 | 36 | : enable == 'MQTT' |
37 | 37 | ? 'MQTT' |
38 | - : enable == 'RabbitMq' | |
39 | - ? 'RabbitMq' | |
40 | - : 'Api'; | |
38 | + : enable == 'RabbitMQ' | |
39 | + ? 'RabbitMQ' | |
40 | + : 'REST_API'; | |
41 | 41 | return h(Tag, { color: color }, () => text); |
42 | 42 | }, |
43 | 43 | |
... | ... | @@ -47,8 +47,8 @@ export const columns: BasicColumn[] = [ |
47 | 47 | : record.type === 'org.thingsboard.rule.engine.mqtt.TbMqttNode' |
48 | 48 | ? 'MQTT' |
49 | 49 | : record.type === 'org.thingsboard.rule.engine.rabbitmq.TbRabbitMqNode' |
50 | - ? 'RabbitMq' | |
51 | - : 'Api'; | |
50 | + ? 'RabbitMQ' | |
51 | + : 'REST_API'; | |
52 | 52 | }, |
53 | 53 | }, |
54 | 54 | { |
... | ... | @@ -58,14 +58,14 @@ export const columns: BasicColumn[] = [ |
58 | 58 | customRender: ({ record }) => { |
59 | 59 | const status = record.status; |
60 | 60 | const enable = ~~status === 1; |
61 | - const color = enable ? '#55d187' : '#efbd47'; | |
61 | + const color = enable ? '#2aae67' : '#eb846f'; | |
62 | 62 | const text = enable ? '启用' : '禁用'; |
63 | 63 | return h(Tag, { color: color }, () => text); |
64 | 64 | }, |
65 | 65 | }, |
66 | 66 | { |
67 | 67 | title: '描述', |
68 | - dataIndex: 'configuration.description', | |
68 | + dataIndex: 'remark', | |
69 | 69 | width: 200, |
70 | 70 | }, |
71 | 71 | { |
... | ... | @@ -80,7 +80,7 @@ export const searchFormSchema: FormSchema[] = [ |
80 | 80 | field: 'name', |
81 | 81 | label: '名称', |
82 | 82 | component: 'Input', |
83 | - colProps: { span: 8 }, | |
83 | + colProps: { span: 6 }, | |
84 | 84 | componentProps: { |
85 | 85 | maxLength: 36, |
86 | 86 | placeholder: '请输入名称', | ... | ... |
1 | 1 | import { FormSchema } from '/@/components/Form'; |
2 | 2 | import { findDictItemByCode } from '/@/api/system/dict'; |
3 | +import { isExistDataManagerNameApi } from '/@/api/datamanager/dataManagerApi'; | |
4 | +import { ref } from 'vue'; | |
5 | +import { useMessage } from '/@/hooks/web/useMessage'; | |
6 | +const { createMessage } = useMessage(); | |
7 | + | |
8 | +const typeValue = ref(''); | |
3 | 9 | |
4 | 10 | export enum CredentialsEnum { |
5 | 11 | IS_ANONYMOUS = 'anonymous', |
... | ... | @@ -23,13 +29,28 @@ export const modeForm: FormSchema[] = [ |
23 | 29 | colProps: { |
24 | 30 | span: 13, |
25 | 31 | }, |
32 | + componentProps({}) { | |
33 | + return { | |
34 | + api: findDictItemByCode, | |
35 | + params: { | |
36 | + dictCode: 'convert_data_to', | |
37 | + }, | |
38 | + labelField: 'itemText', | |
39 | + valueField: 'itemValue', | |
40 | + onChange(value) { | |
41 | + typeValue.value = value; | |
42 | + }, | |
43 | + }; | |
44 | + }, | |
45 | + }, | |
46 | + { | |
47 | + field: 'remark', | |
48 | + label: '描述', | |
49 | + colProps: { span: 13 }, | |
50 | + component: 'Input', | |
26 | 51 | componentProps: { |
27 | - api: findDictItemByCode, | |
28 | - params: { | |
29 | - dictCode: 'convert_data_to', | |
30 | - }, | |
31 | - labelField: 'itemText', | |
32 | - valueField: 'itemValue', | |
52 | + maxLength: 255, | |
53 | + placeholder: '请输入描述', | |
33 | 54 | }, |
34 | 55 | }, |
35 | 56 | ]; |
... | ... | @@ -95,6 +116,39 @@ export const modeKafkaForm: FormSchema[] = [ |
95 | 116 | maxLength: 255, |
96 | 117 | placeholder: '请输入名称', |
97 | 118 | }, |
119 | + dynamicRules: ({ values }) => { | |
120 | + return [ | |
121 | + { | |
122 | + required: true, | |
123 | + validator(_, value) { | |
124 | + return new Promise((resolve, reject) => { | |
125 | + if (value == '') { | |
126 | + reject('请输入名称'); | |
127 | + } else { | |
128 | + if (values.name != undefined) { | |
129 | + isExistDataManagerNameApi({ | |
130 | + name: value, | |
131 | + type: | |
132 | + typeValue.value == '' | |
133 | + ? 'org.thingsboard.rule.engine.kafka.TbKafkaNode' | |
134 | + : typeValue.value, | |
135 | + }).then((data) => { | |
136 | + if (data == true) { | |
137 | + createMessage.error('名称已存在'); | |
138 | + resolve(); | |
139 | + } else { | |
140 | + resolve(); | |
141 | + } | |
142 | + }); | |
143 | + } else { | |
144 | + resolve(); | |
145 | + } | |
146 | + } | |
147 | + }); | |
148 | + }, | |
149 | + }, | |
150 | + ]; | |
151 | + }, | |
98 | 152 | }, |
99 | 153 | { |
100 | 154 | field: 'topicPattern', |
... | ... | @@ -264,6 +318,39 @@ export const modeMqttForm: FormSchema[] = [ |
264 | 318 | maxLength: 255, |
265 | 319 | placeholder: '请输入名称', |
266 | 320 | }, |
321 | + dynamicRules: ({ values }) => { | |
322 | + return [ | |
323 | + { | |
324 | + required: true, | |
325 | + validator(_, value) { | |
326 | + return new Promise((resolve, reject) => { | |
327 | + if (value == '') { | |
328 | + reject('请输入名称'); | |
329 | + } else { | |
330 | + if (values.name != undefined) { | |
331 | + isExistDataManagerNameApi({ | |
332 | + name: value, | |
333 | + type: | |
334 | + typeValue.value == '' | |
335 | + ? 'org.thingsboard.rule.engine.mqtt.TbMqttNode' | |
336 | + : typeValue.value, | |
337 | + }).then((data) => { | |
338 | + if (data == true) { | |
339 | + createMessage.error('名称已存在'); | |
340 | + resolve(); | |
341 | + } else { | |
342 | + resolve(); | |
343 | + } | |
344 | + }); | |
345 | + } else { | |
346 | + resolve(); | |
347 | + } | |
348 | + } | |
349 | + }); | |
350 | + }, | |
351 | + }, | |
352 | + ]; | |
353 | + }, | |
267 | 354 | }, |
268 | 355 | { |
269 | 356 | field: 'topicPattern', |
... | ... | @@ -431,6 +518,39 @@ export const modeRabbitMqForm: FormSchema[] = [ |
431 | 518 | maxLength: 255, |
432 | 519 | placeholder: '请输入名称', |
433 | 520 | }, |
521 | + dynamicRules: ({ values }) => { | |
522 | + return [ | |
523 | + { | |
524 | + required: true, | |
525 | + validator(_, value) { | |
526 | + return new Promise((resolve, reject) => { | |
527 | + if (value == '') { | |
528 | + reject('请输入名称'); | |
529 | + } else { | |
530 | + if (values.name != undefined) { | |
531 | + isExistDataManagerNameApi({ | |
532 | + name: value, | |
533 | + type: | |
534 | + typeValue.value == '' | |
535 | + ? 'org.thingsboard.rule.engine.rabbitmq.TbRabbitMqNode' | |
536 | + : typeValue.value, | |
537 | + }).then((data) => { | |
538 | + if (data == true) { | |
539 | + createMessage.error('名称已存在'); | |
540 | + resolve(); | |
541 | + } else { | |
542 | + resolve(); | |
543 | + } | |
544 | + }); | |
545 | + } else { | |
546 | + resolve(); | |
547 | + } | |
548 | + } | |
549 | + }); | |
550 | + }, | |
551 | + }, | |
552 | + ]; | |
553 | + }, | |
434 | 554 | }, |
435 | 555 | { |
436 | 556 | field: 'exchangeNamePattern', |
... | ... | @@ -535,7 +655,7 @@ export const modeRabbitMqForm: FormSchema[] = [ |
535 | 655 | }, |
536 | 656 | { |
537 | 657 | field: 'connectionTimeout', |
538 | - label: 'Connection', | |
658 | + label: 'Connect', | |
539 | 659 | colProps: { span: 12 }, |
540 | 660 | component: 'InputNumber', |
541 | 661 | defaultValue: 60000, |
... | ... | @@ -586,6 +706,39 @@ export const modeApiForm: FormSchema[] = [ |
586 | 706 | maxLength: 255, |
587 | 707 | placeholder: '请输入名称', |
588 | 708 | }, |
709 | + dynamicRules: ({ values }) => { | |
710 | + return [ | |
711 | + { | |
712 | + required: true, | |
713 | + validator(_, value) { | |
714 | + return new Promise((resolve, reject) => { | |
715 | + if (value == '') { | |
716 | + reject('请输入名称'); | |
717 | + } else { | |
718 | + if (values.name != undefined) { | |
719 | + isExistDataManagerNameApi({ | |
720 | + name: value, | |
721 | + type: | |
722 | + typeValue.value == '' | |
723 | + ? 'org.thingsboard.rule.engine.rest.TbRestApiCallNode' | |
724 | + : typeValue.value, | |
725 | + }).then((data) => { | |
726 | + if (data == true) { | |
727 | + createMessage.error('名称已存在'); | |
728 | + resolve(); | |
729 | + } else { | |
730 | + resolve(); | |
731 | + } | |
732 | + }); | |
733 | + } else { | |
734 | + resolve(); | |
735 | + } | |
736 | + } | |
737 | + }); | |
738 | + }, | |
739 | + }, | |
740 | + ]; | |
741 | + }, | |
589 | 742 | }, |
590 | 743 | { |
591 | 744 | field: 'restEndpointUrlPattern', | ... | ... |
... | ... | @@ -30,7 +30,7 @@ |
30 | 30 | width: 2.9vw; |
31 | 31 | height: 3.3vh; |
32 | 32 | background-color: #0960bd; |
33 | - border-radius: 1px; | |
33 | + border-radius: 2px; | |
34 | 34 | cursor: pointer; |
35 | 35 | text-align: center; |
36 | 36 | line-height: 3.1vh; |
... | ... | @@ -44,7 +44,7 @@ |
44 | 44 | height: 3.3vh; |
45 | 45 | margin-left: 1vw; |
46 | 46 | background-color: #ed6f6f; |
47 | - border-radius: 1px; | |
47 | + border-radius: 2px; | |
48 | 48 | cursor: pointer; |
49 | 49 | text-align: center; |
50 | 50 | line-height: 3.1vh; |
... | ... | @@ -59,7 +59,7 @@ |
59 | 59 | </template> |
60 | 60 | <template #uploadAdd1="{ field }"> |
61 | 61 | <span style="display: none">{{ field }}</span> |
62 | - <UploadDragger | |
62 | + <a-upload-dragger | |
63 | 63 | v-model:fileList="fileList" |
64 | 64 | name="file" |
65 | 65 | :multiple="true" |
... | ... | @@ -74,11 +74,11 @@ |
74 | 74 | Support for a single or bulk upload. Strictly prohibit from uploading company data or |
75 | 75 | other band files |
76 | 76 | </p> |
77 | - </UploadDragger> | |
77 | + </a-upload-dragger> | |
78 | 78 | </template> |
79 | 79 | <template #uploadAdd2="{ field }"> |
80 | 80 | <span style="display: none">{{ field }}</span> |
81 | - <UploadDragger | |
81 | + <a-upload-dragger | |
82 | 82 | v-model:fileList="fileList" |
83 | 83 | name="file" |
84 | 84 | :multiple="true" |
... | ... | @@ -93,11 +93,11 @@ |
93 | 93 | Support for a single or bulk upload. Strictly prohibit from uploading company data or |
94 | 94 | other band files |
95 | 95 | </p> |
96 | - </UploadDragger> | |
96 | + </a-upload-dragger> | |
97 | 97 | </template> |
98 | 98 | <template #uploadAdd3="{ field }"> |
99 | 99 | <span style="display: none">{{ field }}</span> |
100 | - <UploadDragger | |
100 | + <a-upload-dragger | |
101 | 101 | v-model:fileList="fileList" |
102 | 102 | name="file" |
103 | 103 | :multiple="true" |
... | ... | @@ -112,7 +112,7 @@ |
112 | 112 | Support for a single or bulk upload. Strictly prohibit from uploading company data or |
113 | 113 | other band files |
114 | 114 | </p> |
115 | - </UploadDragger> | |
115 | + </a-upload-dragger> | |
116 | 116 | </template> |
117 | 117 | </BasicForm> |
118 | 118 | </div> |
... | ... | @@ -136,8 +136,7 @@ |
136 | 136 | [Descriptions.name]: Descriptions, |
137 | 137 | [Descriptions.Item.name]: Descriptions.Item, |
138 | 138 | InboxOutlined, |
139 | - | |
140 | - [Upload.UploadDragger]: Upload.UploadDragger, | |
139 | + [Upload.Dragger.name]: Upload.Dragger, | |
141 | 140 | }, |
142 | 141 | emits: ['next', 'prev', 'register'], |
143 | 142 | setup(_, { emit }) { |
... | ... | @@ -276,11 +275,14 @@ |
276 | 275 | width: 45vw; |
277 | 276 | margin: 1vh 1vw; |
278 | 277 | position: relative; |
278 | + :deep .ant-input-number { | |
279 | + width: 18.35vw !important; | |
280 | + } | |
279 | 281 | :deep .ant-btn { |
280 | 282 | position: absolute; |
281 | 283 | right: 1vw; |
282 | 284 | background-color: #0960bd; |
283 | - border-radius: 1px; | |
285 | + border-radius: 2px; | |
284 | 286 | span { |
285 | 287 | color: white; |
286 | 288 | } | ... | ... |
... | ... | @@ -32,7 +32,7 @@ |
32 | 32 | width: 2.9vw; |
33 | 33 | height: 3.3vh; |
34 | 34 | background-color: #0960bd; |
35 | - border-radius: 1px; | |
35 | + border-radius: 2px; | |
36 | 36 | cursor: pointer; |
37 | 37 | text-align: center; |
38 | 38 | line-height: 3.1vh; |
... | ... | @@ -46,7 +46,7 @@ |
46 | 46 | height: 3.3vh; |
47 | 47 | margin-left: 1vw; |
48 | 48 | background-color: #ed6f6f; |
49 | - border-radius: 1px; | |
49 | + border-radius: 2px; | |
50 | 50 | cursor: pointer; |
51 | 51 | text-align: center; |
52 | 52 | line-height: 3.1vh; |
... | ... | @@ -67,7 +67,7 @@ |
67 | 67 | margin-left: 22vw; |
68 | 68 | margin-top: 2vh; |
69 | 69 | background-color: #0960bd; |
70 | - border-radius: 1px; | |
70 | + border-radius: 2px; | |
71 | 71 | cursor: pointer; |
72 | 72 | text-align: center; |
73 | 73 | line-height: 3.1vh; |
... | ... | @@ -115,17 +115,18 @@ |
115 | 115 | otherProperties: {}, |
116 | 116 | }); |
117 | 117 | |
118 | - const [register, { validate, setFieldsValue, resetFields: defineClearFunc }] = useForm({ | |
119 | - labelWidth: 80, | |
120 | - schemas: modeKafkaForm, | |
121 | - actionColOptions: { | |
122 | - span: 14, | |
123 | - }, | |
124 | - resetButtonOptions: { | |
125 | - text: '上一步', | |
126 | - }, | |
127 | - resetFunc: customResetFunc, | |
128 | - }); | |
118 | + const [register, { validate, setFieldsValue, resetFields: defineClearFunc, clearValidate }] = | |
119 | + useForm({ | |
120 | + labelWidth: 80, | |
121 | + schemas: modeKafkaForm, | |
122 | + actionColOptions: { | |
123 | + span: 14, | |
124 | + }, | |
125 | + resetButtonOptions: { | |
126 | + text: '上一步', | |
127 | + }, | |
128 | + resetFunc: customResetFunc, | |
129 | + }); | |
129 | 130 | |
130 | 131 | const [ |
131 | 132 | registerKeyAndValue, |
... | ... | @@ -138,6 +139,11 @@ |
138 | 139 | }, |
139 | 140 | }); |
140 | 141 | |
142 | + const clearValidateFunc = async () => { | |
143 | + console.log(1); | |
144 | + await clearValidate(['name']); | |
145 | + }; | |
146 | + | |
141 | 147 | const setStepTwoFieldsValueFunc = async (v, v1) => { |
142 | 148 | setFieldsValue(v); |
143 | 149 | vType.value = v1; |
... | ... | @@ -199,6 +205,7 @@ |
199 | 205 | } |
200 | 206 | }; |
201 | 207 | return { |
208 | + clearValidateFunc, | |
202 | 209 | getSonValueFunc, |
203 | 210 | keyAndValueArr, |
204 | 211 | register, |
... | ... | @@ -224,6 +231,9 @@ |
224 | 231 | width: 45vw; |
225 | 232 | margin: 1vh 1vw; |
226 | 233 | position: relative; |
234 | + :deep .ant-input-number { | |
235 | + width: 18.35vw !important; | |
236 | + } | |
227 | 237 | } |
228 | 238 | } |
229 | 239 | </style> | ... | ... |
... | ... | @@ -4,7 +4,7 @@ |
4 | 4 | <BasicForm :showSubmitButton="false" @register="register"> |
5 | 5 | <template #uploadAdd1="{ field }"> |
6 | 6 | <span style="display: none">{{ field }}</span> |
7 | - <UploadDragger | |
7 | + <a-upload-dragger | |
8 | 8 | v-model:fileList="fileList" |
9 | 9 | name="file" |
10 | 10 | :multiple="true" |
... | ... | @@ -19,11 +19,11 @@ |
19 | 19 | Support for a single or bulk upload. Strictly prohibit from uploading company data or |
20 | 20 | other band files |
21 | 21 | </p> |
22 | - </UploadDragger> | |
22 | + </a-upload-dragger> | |
23 | 23 | </template> |
24 | 24 | <template #uploadAdd2="{ field }"> |
25 | 25 | <span style="display: none">{{ field }}</span> |
26 | - <UploadDragger | |
26 | + <a-upload-dragger | |
27 | 27 | v-model:fileList="fileList" |
28 | 28 | name="file" |
29 | 29 | :multiple="true" |
... | ... | @@ -38,11 +38,11 @@ |
38 | 38 | Support for a single or bulk upload. Strictly prohibit from uploading company data or |
39 | 39 | other band files |
40 | 40 | </p> |
41 | - </UploadDragger> | |
41 | + </a-upload-dragger> | |
42 | 42 | </template> |
43 | 43 | <template #uploadAdd3="{ field }"> |
44 | 44 | <span style="display: none">{{ field }}</span> |
45 | - <UploadDragger | |
45 | + <a-upload-dragger | |
46 | 46 | v-model:fileList="fileList" |
47 | 47 | name="file" |
48 | 48 | :multiple="true" |
... | ... | @@ -57,7 +57,7 @@ |
57 | 57 | Support for a single or bulk upload. Strictly prohibit from uploading company data or |
58 | 58 | other band files |
59 | 59 | </p> |
60 | - </UploadDragger> | |
60 | + </a-upload-dragger> | |
61 | 61 | </template> |
62 | 62 | </BasicForm> |
63 | 63 | </div> |
... | ... | @@ -78,8 +78,7 @@ |
78 | 78 | [Descriptions.name]: Descriptions, |
79 | 79 | [Descriptions.Item.name]: Descriptions.Item, |
80 | 80 | InboxOutlined, |
81 | - | |
82 | - [Upload.UploadDragger]: Upload.UploadDragger, | |
81 | + [Upload.Dragger.name]: Upload.Dragger, | |
83 | 82 | }, |
84 | 83 | emits: ['next', 'prev', 'register'], |
85 | 84 | setup(_, { emit }) { |
... | ... | @@ -106,7 +105,6 @@ |
106 | 105 | submitFunc: customSubmitFunc, |
107 | 106 | }); |
108 | 107 | const setStepTwoFieldsValueFunc = (v, v1) => { |
109 | - console.log(v); | |
110 | 108 | setFieldsValue(v); |
111 | 109 | setFieldsValue({ |
112 | 110 | name: v1, |
... | ... | @@ -157,11 +155,14 @@ |
157 | 155 | width: 45vw; |
158 | 156 | margin: 1vh 1vw; |
159 | 157 | position: relative; |
158 | + :deep .ant-input-number { | |
159 | + width: 18.35vw !important; | |
160 | + } | |
160 | 161 | :deep .ant-btn { |
161 | 162 | position: absolute; |
162 | 163 | right: 1vw; |
163 | 164 | background-color: #0960bd; |
164 | - border-radius: 1px; | |
165 | + border-radius: 2px; | |
165 | 166 | span { |
166 | 167 | color: white; |
167 | 168 | } | ... | ... |
... | ... | @@ -205,11 +205,14 @@ |
205 | 205 | width: 44vw; |
206 | 206 | margin: 1vh 1vw; |
207 | 207 | position: relative; |
208 | + :deep .ant-input-number { | |
209 | + width: 17.85vw !important; | |
210 | + } | |
208 | 211 | :deep .ant-btn { |
209 | 212 | position: absolute; |
210 | 213 | right: 1vw; |
211 | 214 | background-color: #0960bd; |
212 | - border-radius: 1px; | |
215 | + border-radius: 2px; | |
213 | 216 | span { |
214 | 217 | color: white; |
215 | 218 | } | ... | ... |
... | ... | @@ -66,6 +66,16 @@ |
66 | 66 | return e; |
67 | 67 | } |
68 | 68 | }; |
69 | + const clearSonValueValidateFunc = () => { | |
70 | + try { | |
71 | + proxy.$refs.refTransferConfigKafka?.clearValidateFunc(); | |
72 | + // proxy.$refs.refTransferConfigMqtt?.customClearStepTwoValueFunc(); | |
73 | + // proxy.$refs.refTransferConfigRabbitMq?.customClearStepTwoValueFunc(); | |
74 | + // proxy.$refs.refTransferConfigApi?.customClearStepTwoValueFunc(); | |
75 | + } catch (e) { | |
76 | + return e; | |
77 | + } | |
78 | + }; | |
69 | 79 | const getSonValueDataFunc = () => { |
70 | 80 | if (isWhereComp.value == 'org.thingsboard.rule.engine.kafka.TbKafkaNode') { |
71 | 81 | getTransferConfigKafkaValue.value = proxy.$refs.refTransferConfigKafka.getSonValueFunc(); |
... | ... | @@ -80,7 +90,6 @@ |
80 | 90 | return getTransferConfigKafkaValue.value; |
81 | 91 | }; |
82 | 92 | const editSonValueDataFunc = (v) => { |
83 | - console.log(v.type); | |
84 | 93 | try { |
85 | 94 | if (v.type == 'org.thingsboard.rule.engine.kafka.TbKafkaNode') { |
86 | 95 | isWhereComp.value = v.type; |
... | ... | @@ -103,6 +112,7 @@ |
103 | 112 | } |
104 | 113 | }; |
105 | 114 | return { |
115 | + clearSonValueValidateFunc, | |
106 | 116 | clearSonValueDataFunc, |
107 | 117 | editSonValueDataFunc, |
108 | 118 | refTransferConfigKafka, | ... | ... |
... | ... | @@ -11,26 +11,23 @@ |
11 | 11 | <a-button |
12 | 12 | :disabled="disabledStatus1" |
13 | 13 | @click="handleDelete" |
14 | - style="background-color: rgba(237, 111, 111, 1)" | |
15 | - type="primary" | |
14 | + :type="disabledStatus1 ? 'default' : 'primary'" | |
16 | 15 | > |
17 | - <span style="color: white">批量删除</span> | |
16 | + <span :style="{ color: disabledStatus1 ? 'grey' : 'white' }">批量删除</span> | |
18 | 17 | </a-button> |
19 | 18 | <a-button |
20 | 19 | :disabled="disabledStatus2" |
21 | 20 | @click="handleMutiuteDisable" |
22 | - style="background-color: rgba(128, 128, 128.2)" | |
23 | - type="primary" | |
21 | + :type="disabledStatus2 ? 'default' : 'primary'" | |
24 | 22 | > |
25 | - <span style="color: white">批量禁用</span> | |
23 | + <span :style="{ color: disabledStatus2 ? 'grey' : 'white' }">批量禁用</span> | |
26 | 24 | </a-button> |
27 | 25 | <a-button |
28 | 26 | :disabled="disabledStatus3" |
29 | 27 | @click="handleMutiuteEnable" |
30 | - style="background-color: #55d187" | |
31 | - type="primary" | |
28 | + :type="disabledStatus3 ? 'default' : 'primary'" | |
32 | 29 | > |
33 | - <span style="color: white">批量启用</span> | |
30 | + <span :style="{ color: disabledStatus3 ? 'grey' : 'white' }">批量启用</span> | |
34 | 31 | </a-button> |
35 | 32 | </template> |
36 | 33 | <template #action="{ record }"> |
... | ... | @@ -71,8 +68,7 @@ |
71 | 68 | }, |
72 | 69 | { |
73 | 70 | label: '禁用', |
74 | - icon: 'ant-design:close-outlined', | |
75 | - color: 'warning', | |
71 | + icon: 'ant-design:close-circle-outlined', | |
76 | 72 | popConfirm: { |
77 | 73 | title: '是否禁用?', |
78 | 74 | confirm: handleDisable.bind(null, record), |
... | ... | @@ -168,9 +164,9 @@ |
168 | 164 | }; |
169 | 165 | |
170 | 166 | const handleEnableOrDisable = async (record: Recordable) => { |
167 | + setLoading(true); | |
168 | + enableObj.convertIds.length = 0; | |
171 | 169 | try { |
172 | - setLoading(true); | |
173 | - enableObj.convertIds.length = 0; | |
174 | 170 | enableObj.status = record.status; |
175 | 171 | enableObj.convertIds.push(record.id as never); |
176 | 172 | if (enableObj.status == 0) { |
... | ... | @@ -191,9 +187,9 @@ |
191 | 187 | } |
192 | 188 | }; |
193 | 189 | const handleDisable = async (record: Recordable) => { |
190 | + setLoading(true); | |
191 | + enableObj.convertIds.length = 0; | |
194 | 192 | try { |
195 | - setLoading(true); | |
196 | - enableObj.convertIds.length = 0; | |
197 | 193 | enableObj.status = record.status; |
198 | 194 | enableObj.convertIds.push(record.id as never); |
199 | 195 | if (enableObj.status == 1) { |
... | ... | @@ -228,6 +224,11 @@ |
228 | 224 | const hasDisableStatus = isJudgeSelectRowsArr.value.map((m) => { |
229 | 225 | return m.status; |
230 | 226 | }); |
227 | + if (hasDisableStatus.length == 0) { | |
228 | + disabledStatus1.value = true; | |
229 | + disabledStatus2.value = true; | |
230 | + disabledStatus3.value = true; | |
231 | + } | |
231 | 232 | hasDisableStatus.every((e) => { |
232 | 233 | if (e == 1) { |
233 | 234 | disabledStatus3.value = true; |
... | ... | @@ -251,12 +252,25 @@ |
251 | 252 | }; |
252 | 253 | |
253 | 254 | const handleDelete = async () => { |
254 | - await deleteConvertApi(selectedRowKeys.value); | |
255 | - createMessage.success('删除成功'); | |
256 | - reload(); | |
257 | - clearSelectedRowKeys(); | |
255 | + try { | |
256 | + setLoading(true); | |
257 | + const data = await deleteConvertApi(selectedRowKeys.value); | |
258 | + if (data == true) { | |
259 | + createMessage.success('删除成功'); | |
260 | + setLoading(false); | |
261 | + reload(); | |
262 | + } else { | |
263 | + createMessage.error('删除失败'); | |
264 | + } | |
265 | + } catch (e) { | |
266 | + return e; | |
267 | + } finally { | |
268 | + setLoading(false); | |
269 | + clearSelectedRowKeys(); | |
270 | + } | |
258 | 271 | }; |
259 | 272 | const handleMutiuteDisable = async () => { |
273 | + enableObj.convertIds.length = 0; | |
260 | 274 | try { |
261 | 275 | setLoading(true); |
262 | 276 | getSelectRowsArr.value = getSelectRows(); |
... | ... | @@ -283,6 +297,7 @@ |
283 | 297 | }; |
284 | 298 | |
285 | 299 | const handleMutiuteEnable = async () => { |
300 | + enableObj.convertIds.length = 0; | |
286 | 301 | try { |
287 | 302 | setLoading(true); |
288 | 303 | getSelectRowsArr.value = getSelectRows(); | ... | ... |
... | ... | @@ -120,11 +120,13 @@ |
120 | 120 | const [register, { closeModal }] = useModalInner(async (data) => { |
121 | 121 | isUpdate.value = data.isUpdate; |
122 | 122 | if (isUpdate.value == 1) { |
123 | + proxy.$refs.DeviceProfileStep3Ref.isAddRuleStatusFunc(true); | |
123 | 124 | isShowRule.value = true; |
124 | 125 | isShowOkBtnFalse.value = true; |
125 | 126 | current.value = 0; |
126 | 127 | isStatus.value = !data.isUpdate; |
127 | 128 | //清空第一步数据 |
129 | + proxy.$refs.DeviceProfileStep1Ref.resetIconFunc(); | |
128 | 130 | proxy.$refs.DeviceProfileStep1Ref.customResetStepOneFunc(); |
129 | 131 | proxy.$refs.DeviceProfileStep3Ref.clearAllRegisterFormFunc(); |
130 | 132 | //报警详细信息 |
... | ... | @@ -133,6 +135,7 @@ |
133 | 135 | stepThreeData: {}, |
134 | 136 | }); |
135 | 137 | } else if (isUpdate.value == 2) { |
138 | + proxy.$refs.DeviceProfileStep3Ref.isAddRuleStatusFunc(true); | |
136 | 139 | isShowRule.value = true; |
137 | 140 | isShowOkBtnFalse.value = true; |
138 | 141 | current.value = 0; |
... | ... | @@ -152,6 +155,7 @@ |
152 | 155 | getBackendData = await deviceConfigGetDetail(postEditId.value); |
153 | 156 | editData.value = getBackendData; |
154 | 157 | } else if (isUpdate.value == 3) { |
158 | + proxy.$refs.DeviceProfileStep3Ref.isAddRuleStatusFunc(false); | |
155 | 159 | isShowRule.value = false; |
156 | 160 | isShowOkBtnFalse.value = false; |
157 | 161 | current.value = 0; |
... | ... | @@ -214,6 +218,9 @@ |
214 | 218 | stepThreeData: editData.value?.profileData.alarms[0].createRules, |
215 | 219 | stepThreeClearData: editData.value?.profileData.alarms[0].clearRule, |
216 | 220 | }); |
221 | + proxy.$refs.DeviceProfileStep3Ref.setCreateRegisterFormChangeDetailFunc( | |
222 | + editData.value?.profileData.alarms[0].createRules | |
223 | + ); | |
217 | 224 | proxy.$refs.DeviceProfileStep3Ref.setRegisterFormClearChangeDetailFunc({ |
218 | 225 | alarmDetails: editData.value?.profileData.alarms[0].clearRule.alarmDetails, |
219 | 226 | }); |
... | ... | @@ -232,6 +239,9 @@ |
232 | 239 | stepThreeData: editData.value?.profileData.alarms[0].createRules, |
233 | 240 | stepThreeClearData: editData.value?.profileData.alarms[0].clearRule, |
234 | 241 | }); |
242 | + proxy.$refs.DeviceProfileStep3Ref.setCreateRegisterFormChangeDetailFunc( | |
243 | + editData.value?.profileData.alarms[0].createRules | |
244 | + ); | |
235 | 245 | proxy.$refs.DeviceProfileStep3Ref.setRegisterFormClearChangeDetailFunc({ |
236 | 246 | alarmDetails: editData.value?.profileData.alarms[0].clearRule.alarmDetails, |
237 | 247 | }); |
... | ... | @@ -312,6 +322,11 @@ |
312 | 322 | |
313 | 323 | const handleCancel = () => { |
314 | 324 | closeModal(); |
325 | + try { | |
326 | + proxy.$refs.DeviceProfileStep4Ref.clearAlaramContactAndNoticeMethodFunc(); | |
327 | + } catch (e) { | |
328 | + return e; | |
329 | + } | |
315 | 330 | }; |
316 | 331 | return { |
317 | 332 | isShowRule, | ... | ... |
... | ... | @@ -12,7 +12,9 @@ |
12 | 12 | <ImpExcel @success="loadDataSuccess" dateFormat="YYYY-MM-DD"> |
13 | 13 | <a-button @click="handleImport"> 导入设备配置 </a-button> |
14 | 14 | </ImpExcel> |
15 | - <a-button danger color="error" @click="handleTableDel"> 删除 </a-button> | |
15 | + <a-button danger color="error" @click="handleTableDel" :disabled="disabled"> | |
16 | + 批量删除 | |
17 | + </a-button> | |
16 | 18 | </template> |
17 | 19 | <template #action="{ record }"> |
18 | 20 | <TableAction |
... | ... | @@ -75,10 +77,11 @@ |
75 | 77 | let selectedRowKeys: string[] = reactive([]); |
76 | 78 | const getPathUrl = ref(''); |
77 | 79 | const getPathUrlName = ref(''); |
80 | + const disabled = ref(true); | |
78 | 81 | |
79 | 82 | const { createMessage } = useMessage(); |
80 | 83 | const [registerModal, { openModal }] = useModal(); |
81 | - const [registerModalDetail, { openModal: openModalDetail }] = useModal(); | |
84 | + const [registerModalDetail] = useModal(); | |
82 | 85 | const [registerTable, { reload, getSelectRowKeys }] = useTable({ |
83 | 86 | title: '设备配置列表', |
84 | 87 | pagination: true, |
... | ... | @@ -179,6 +182,11 @@ |
179 | 182 | } |
180 | 183 | const useSelectionChange = () => { |
181 | 184 | selectedRowKeys = getSelectRowKeys(); |
185 | + if (selectedRowKeys.length > 0) { | |
186 | + disabled.value = false; | |
187 | + } else { | |
188 | + disabled.value = true; | |
189 | + } | |
182 | 190 | }; |
183 | 191 | async function handleTableDel() { |
184 | 192 | await deviceConfigDelete(selectedRowKeys); |
... | ... | @@ -219,6 +227,7 @@ |
219 | 227 | reload(); |
220 | 228 | } |
221 | 229 | return { |
230 | + disabled, | |
222 | 231 | deviceDetailRef, |
223 | 232 | setRowClassName, |
224 | 233 | registerModalDetail, | ... | ... |
1 | 1 | <template> |
2 | 2 | <div class="step1"> |
3 | 3 | <div class="step1-form"> |
4 | - <div | |
5 | - style=" | |
6 | - width: 12vw; | |
7 | - height: 24vh; | |
8 | - margin-left: 25px; | |
9 | - display: flex; | |
10 | - justify-content: space-between; | |
11 | - align-items: center; | |
12 | - " | |
13 | - > | |
14 | - <div style="width: 4vw; height: 24vh">请上传图片</div> | |
15 | - <div class="device-icon-style" style="width: 8vw; height: 24vh"> | |
16 | - <Upload | |
17 | - style="width: 20vw" | |
18 | - name="avatar" | |
19 | - list-type="picture-card" | |
20 | - class="avatar-uploader" | |
21 | - :show-upload-list="false" | |
22 | - :customRequest="customUploadqrcodePic" | |
23 | - :before-upload="beforeUploadqrcodePic" | |
24 | - > | |
25 | - <img | |
26 | - style="text-align: center; width: 13vw; height: 15vh" | |
27 | - v-if="peresonalPic" | |
28 | - :src="peresonalPic" | |
29 | - alt="avatar" | |
30 | - /> | |
31 | - <div v-else> | |
32 | - <div style="margin-top: 30px"> | |
33 | - <PlusOutlined style="font-size: 30px; margin-left: -166px" /> | |
4 | + <div> | |
5 | + <BasicForm @register="register"> | |
6 | + <template #imageSelect> | |
7 | + <Upload | |
8 | + style="width: 20vw" | |
9 | + name="avatar" | |
10 | + list-type="picture-card" | |
11 | + class="avatar-uploader" | |
12 | + :show-upload-list="false" | |
13 | + :customRequest="customUploadqrcodePic" | |
14 | + :before-upload="beforeUploadqrcodePic" | |
15 | + > | |
16 | + <img | |
17 | + v-if="peresonalPic" | |
18 | + :src="peresonalPic" | |
19 | + alt="avatar" | |
20 | + style="width: 6.25rem; height: 6.25rem" | |
21 | + /> | |
22 | + <div v-else> | |
23 | + <PlusOutlined /> | |
24 | + <div class="ant-upload-text">图片上传</div> | |
34 | 25 | </div> |
35 | - <div | |
36 | - class="ant-upload-text flex" | |
37 | - style="width: 280px; height: 130px; align-items: center; margin-left: 43px" | |
38 | - > | |
39 | - 请上传图片</div | |
40 | - > | |
41 | - </div> | |
42 | - </Upload> | |
43 | - </div> | |
44 | - </div> | |
45 | - <div style="margin-top: -50px"> | |
46 | - <BasicForm @register="register" /> | |
26 | + </Upload> | |
27 | + </template> | |
28 | + </BasicForm> | |
47 | 29 | </div> |
48 | 30 | </div> |
49 | 31 | </div> |
... | ... | @@ -173,8 +155,8 @@ |
173 | 155 | :deep .ant-upload-select-picture-card { |
174 | 156 | display: inherit; |
175 | 157 | float: none; |
176 | - width: 8.6vw; | |
177 | - height: 17vh; | |
158 | + width: 4.9vw; | |
159 | + height: 9.5vh; | |
178 | 160 | margin-right: 8px; |
179 | 161 | text-align: center; |
180 | 162 | vertical-align: top; | ... | ... |
... | ... | @@ -7,6 +7,7 @@ |
7 | 7 | <template #action> |
8 | 8 | <div class="cursor-pointer"> |
9 | 9 | <img |
10 | + v-if="isAddRuleStatus" | |
10 | 11 | style="cursor: pointer" |
11 | 12 | @click="deleteAlarmRule(index)" |
12 | 13 | alt="移除" |
... | ... | @@ -68,10 +69,20 @@ |
68 | 69 | <!-- 报警严重程度 --> |
69 | 70 | <div style="margin-left: 10px; margin-top: 20px" |
70 | 71 | ><BasicForm @register="registerFormCreateAlarm" /> |
72 | + <div | |
73 | + v-for="(i8, index8) in getStepThreeEditStatus ? createAlarmArray : []" | |
74 | + :key="index8" | |
75 | + style="position: relative" | |
76 | + > | |
77 | + <p | |
78 | + style="position: absolute; top: -6vh; left: 6.5vw" | |
79 | + v-if="index8 == createIndex" | |
80 | + >{{ formatAlarmFunc(i8) }}</p | |
81 | + > | |
82 | + </div> | |
71 | 83 | </div> |
72 | 84 | <!-- 报警严重程度 --> |
73 | - | |
74 | - <div style="margin-left: 5px; margin-top: -50px"> | |
85 | + <div style="margin-left: 5px; margin-top: -35px"> | |
75 | 86 | <div style="color: #f5594e" class="ml-4" |
76 | 87 | >报警规则条件: |
77 | 88 | <Button |
... | ... | @@ -89,25 +100,7 @@ |
89 | 100 | :key="index2" |
90 | 101 | > |
91 | 102 | <p v-if="index2 == createIndex && !getStepThreeEditStatus" |
92 | - >报警规则条件:{{ | |
93 | - v2.predicate.operation == 'EQUAL' | |
94 | - ? v2.key.key + '等于' + v2.predicate.value.defaultValue | |
95 | - : v2.predicate.operation == 'STARTS_WITH' | |
96 | - ? v2.key.key + '开始于' + v2.predicate.value.defaultValue | |
97 | - : v2.predicate.operation == 'ENDS_WITH' | |
98 | - ? v2.key.key + '结束于' + v2.predicate.value.defaultValue | |
99 | - : v2.predicate.operation == 'NOT_CONTAINS' | |
100 | - ? v2.key.key + '不包含' + v2.predicate.value.defaultValue | |
101 | - : v2.predicate.operation == 'NOT_EQUAL' | |
102 | - ? v2.key.key + '不等于' + v2.predicate.value.defaultValue | |
103 | - : v2.predicate.operation == 'GREATER' | |
104 | - ? v2.key.key + '大于' + v2.predicate.value.defaultValue | |
105 | - : v2.predicate.operation == 'LESS' | |
106 | - ? v2.key.key + '小于' + v2.predicate.value.defaultValue | |
107 | - : v2.predicate.operation == 'GREATER_OR_EQUAL' | |
108 | - ? v2.key.key + '大于或等于' + v2.predicate.value.defaultValue | |
109 | - : v2.key.key + '小于或等于' + v2.predicate.value.defaultValue | |
110 | - }}</p | |
103 | + >报警规则条件:{{ formatAddRuleFunc(v2) }}</p | |
111 | 104 | > |
112 | 105 | <p v-if="index2 == createIndex && getStepThreeEditStatus" |
113 | 106 | >报警规则条件:{{ openRuleConditionComp(v2) }}</p |
... | ... | @@ -149,6 +142,18 @@ |
149 | 142 | <div style="position: absolute; top: -5px; left: 106px; width: 581px"> |
150 | 143 | <BasicForm @register="registerFormChangeDetail" /> |
151 | 144 | </div> |
145 | + <div | |
146 | + v-for="(i7, index7) in getStepThreeEditStatus | |
147 | + ? detailDetailModelArray | |
148 | + : []" | |
149 | + :key="index7" | |
150 | + > | |
151 | + <p | |
152 | + style="margin-top: 1.5vh; margin-left: 5.6vw" | |
153 | + v-if="index7 == createIndex" | |
154 | + >{{ i7 }}</p | |
155 | + > | |
156 | + </div> | |
152 | 157 | </div> |
153 | 158 | <div style="margin-top: 25px; position: relative"> |
154 | 159 | <div style="margin-left: -14px"> |
... | ... | @@ -162,6 +167,7 @@ |
162 | 167 | style="display: inline-block; position: relative; top: -257px; left: 757px" |
163 | 168 | > |
164 | 169 | <img |
170 | + v-if="isAddRuleStatus" | |
165 | 171 | style="cursor: pointer" |
166 | 172 | @click="deleteCondition(index, createIndex)" |
167 | 173 | alt="移除" |
... | ... | @@ -173,7 +179,11 @@ |
173 | 179 | </div> |
174 | 180 | </template> |
175 | 181 | <div> |
176 | - <a-button style="border-radius: 10px" class="mt-5" @click="addCreateRole(index)" | |
182 | + <a-button | |
183 | + v-if="isAddRuleStatus" | |
184 | + style="border-radius: 10px" | |
185 | + class="mt-5" | |
186 | + @click="addCreateRole(index)" | |
177 | 187 | ><PlusCircleOutlined />添加创建条件</a-button |
178 | 188 | > |
179 | 189 | </div> |
... | ... | @@ -227,25 +237,7 @@ |
227 | 237 | <span style="display: none">{{ index4 }}</span> |
228 | 238 | |
229 | 239 | <p v-if="!getStepThreeEditStatus" |
230 | - >报警规则条件:{{ | |
231 | - v4.predicate.operation == 'EQUAL' | |
232 | - ? v4.key.key + '等于' + v4.predicate.value.defaultValue | |
233 | - : v4.predicate.operation == 'STARTS_WITH' | |
234 | - ? v4.key.key + '开始于' + v4.predicate.value.defaultValue | |
235 | - : v4.predicate.operation == 'ENDS_WITH' | |
236 | - ? v4.key.key + '结束于' + v4.predicate.value.defaultValue | |
237 | - : v4.predicate.operation == 'NOT_CONTAINS' | |
238 | - ? v4.key.key + '不包含' + v4.predicate.value.defaultValue | |
239 | - : v4.predicate.operation == 'NOT_EQUAL' | |
240 | - ? v4.key.key + '不等于' + v4.predicate.value.defaultValue | |
241 | - : v4.predicate.operation == 'GREATER' | |
242 | - ? v4.key.key + '大于' + v4.predicate.value.defaultValue | |
243 | - : v4.predicate.operation == 'LESS' | |
244 | - ? v4.key.key + '小于' + v4.predicate.value.defaultValue | |
245 | - : v4.predicate.operation == 'GREATER_OR_EQUAL' | |
246 | - ? v4.key.key + '大于或等于' + v4.predicate.value.defaultValue | |
247 | - : v4.key.key + '小于或等于' + v4.predicate.value.defaultValue | |
248 | - }}</p | |
240 | + >报警规则条件:{{ formatClearRuleFunc(v4) }}</p | |
249 | 241 | > |
250 | 242 | <p v-if="getStepThreeEditStatus" |
251 | 243 | >报警规则条件:{{ openClearRuleConditionComp(v4) }}</p |
... | ... | @@ -313,7 +305,11 @@ |
313 | 305 | <div class="flex justify-center" style="display: fixed; bottom: 100px"> |
314 | 306 | <a-button class="mr-5" @click="prevStep">上一步</a-button> |
315 | 307 | <a-button @click="handleFormStep3toStep4Next">下一步</a-button> |
316 | - <a-button style="margin-left: 20px" type="primary" @click="addAlarmRule" | |
308 | + <a-button | |
309 | + v-if="isAddRuleStatus" | |
310 | + style="margin-left: 20px" | |
311 | + type="primary" | |
312 | + @click="addAlarmRule" | |
317 | 313 | >添加报警规则</a-button |
318 | 314 | > |
319 | 315 | </div> |
... | ... | @@ -354,6 +350,7 @@ |
354 | 350 | emits: ['prev', 'next', 'redo', 'handleFormStep3toStep4Next'], |
355 | 351 | props: ['getAllStepThreeData', 'isAddOrEdit', 'isShowAddRule'], |
356 | 352 | setup(props, { emit }) { |
353 | + const isAddRuleStatus = ref(true); | |
357 | 354 | const { proxy } = getCurrentInstance(); |
358 | 355 | const changeGetDetailValue = ref({}); |
359 | 356 | const changeGetClearDetailValue = ref({}); |
... | ... | @@ -462,9 +459,7 @@ |
462 | 459 | schedule: {}, |
463 | 460 | }); |
464 | 461 | let kongRuleConditionObj = reactive({ |
465 | - condition: { | |
466 | - condition: {}, | |
467 | - }, | |
462 | + condition: {}, | |
468 | 463 | }); |
469 | 464 | let fliterTempRuleConditionTempArr = ref<[]>([]); |
470 | 465 | let fliterTempOpenRuleTempArr = ref<[]>([]); |
... | ... | @@ -476,6 +471,10 @@ |
476 | 471 | const getFilterStepThreeEditClearArr = ref<[]>([]); |
477 | 472 | const getFilterStepThreeClearDetailEditArr = ref<[]>([]); |
478 | 473 | let getIsShowAddRule = true; |
474 | + | |
475 | + const detailDetailModelArray = ref<[]>([]); | |
476 | + const createAlarmArray = ref<[]>([]); | |
477 | + | |
479 | 478 | // getIsShowAddRule.value = props.isShowAddRule; |
480 | 479 | // console.log(getIsShowAddRule.value); |
481 | 480 | setTimeout(() => { |
... | ... | @@ -485,6 +484,9 @@ |
485 | 484 | const log = (e) => { |
486 | 485 | console.log(e); |
487 | 486 | }; |
487 | + const isAddRuleStatusFunc = (v) => { | |
488 | + isAddRuleStatus.value = v; | |
489 | + }; | |
488 | 490 | //编辑清空操作 |
489 | 491 | const clearProfileDataFunc = () => { |
490 | 492 | profileData.value.splice(0, 1); |
... | ... | @@ -550,8 +552,8 @@ |
550 | 552 | registerFormChangeDetail, |
551 | 553 | { |
552 | 554 | getFieldsValue: getRegisterFormChangeDetail, |
553 | - setFieldsValue: setRegisterFormChangeDetail, | |
554 | 555 | resetFields: resetRegisterFormChangeDetail, |
556 | + // setFieldsValue: setCreateRegisterFormChangeDetail, | |
555 | 557 | }, |
556 | 558 | ] = useForm({ |
557 | 559 | labelWidth: 120, |
... | ... | @@ -626,6 +628,8 @@ |
626 | 628 | getFilterStepThreeEditArr.value = []; |
627 | 629 | getFilterStepThreeEditClearArr.value = []; |
628 | 630 | getStepThreeEditStatus.value = false; |
631 | + detailDetailModelArray.value = []; | |
632 | + createAlarmArray.value = []; | |
629 | 633 | }; |
630 | 634 | const initClearCreateRuleFunc = () => { |
631 | 635 | profileData.value.forEach((f) => { |
... | ... | @@ -655,7 +659,7 @@ |
655 | 659 | const setRegisterFormCreateAlarmFunc = (v) => { |
656 | 660 | setRegisterFormCreateAlarm(v); |
657 | 661 | }; |
658 | - // | |
662 | + | |
659 | 663 | const optionsAlaram = [ |
660 | 664 | { |
661 | 665 | value: 'CRITICAL', |
... | ... | @@ -702,40 +706,29 @@ |
702 | 706 | ? '定时启用' |
703 | 707 | : '自定义启用'; |
704 | 708 | }; |
705 | - const optionsOperation = [ | |
706 | - { label: '等于', value: 'EQUAL' }, | |
707 | - { label: '不等于', value: 'NOT_EQUAL' }, | |
708 | - { label: '开始于', value: 'STARTS_WITH' }, | |
709 | - { label: '结束于', value: 'ENDS_WITH' }, | |
710 | - { label: '包含', value: 'CONTAINS' }, | |
711 | - { label: '不包含', value: 'NOT_CONTAINS' }, | |
712 | - { label: '大于', value: 'GREATER' }, | |
713 | - { label: '小于', value: 'LESS' }, | |
714 | - { label: '大于或等于', value: 'GREATER_OR_EQUAL' }, | |
715 | - { label: '小于或等于', value: 'LESS_OR_EQUAL' }, | |
716 | - ]; | |
717 | 709 | //清除报警规则 |
718 | 710 | const openClearRuleConditionComp = (v4) => { |
719 | 711 | try { |
720 | - let clearRuleObj = {}; | |
721 | - v4.condition.condition?.forEach((f) => { | |
722 | - clearRuleObj = f; | |
712 | + let formatMap = v4.condition.condition.map((f) => { | |
713 | + return f.predicate.operation == 'EQUAL' | |
714 | + ? f.key.key + '等于' + f.predicate.value.defaultValue | |
715 | + : f.predicate.operation == 'STARTS_WITH' | |
716 | + ? f.key.key + '开始于' + f.predicate.value.defaultValue | |
717 | + : f.predicate.operation == 'ENDS_WITH' | |
718 | + ? f.key.key + '结束于' + f.predicate.value.defaultValue | |
719 | + : f.predicate.operation == 'NOT_CONTAINS' | |
720 | + ? f.key.key + '不包含' + f.predicate.value.defaultValue | |
721 | + : f.predicate.operation == 'NOT_EQUAL' | |
722 | + ? f.key.key + '不等于' + f.predicate.value.defaultValue | |
723 | + : f.predicate.operation == 'GREATER' | |
724 | + ? f.key.key + '大于' + f.predicate.value.defaultValue | |
725 | + : f.predicate.operation == 'LESS' | |
726 | + ? f.key.key + '小于' + f.predicate.value.defaultValue | |
727 | + : f.predicate.operation == 'GREATER_OR_EQUAL' | |
728 | + ? f.key.key + '大于或等于' + f.predicate.value.defaultValue | |
729 | + : f.key.key + '小于或等于' + f.predicate.value.defaultValue; | |
723 | 730 | }); |
724 | - return clearRuleObj?.predicate?.operation == 'LESS_OR_EQUAL' | |
725 | - ? clearRuleObj?.key?.key + '小于或等于' + clearRuleObj?.predicate?.value?.defaultValue | |
726 | - : clearRuleObj?.predicate?.operation == 'EQUAL' | |
727 | - ? clearRuleObj?.key?.key + '等于' + clearRuleObj?.predicate?.value?.defaultValue | |
728 | - : clearRuleObj?.predicate?.operation == 'NOT_EQUAL' | |
729 | - ? clearRuleObj?.key?.key + '不等于' + clearRuleObj?.predicate?.value?.defaultValue | |
730 | - : clearRuleObj?.predicate?.operation == 'ENDS_WITH' | |
731 | - ? clearRuleObj?.key?.key + '结束于' + clearRuleObj?.predicate?.value?.defaultValue | |
732 | - : clearRuleObj?.predicate?.operation == 'CONTAINS' | |
733 | - ? clearRuleObj?.key?.key + '包含' + clearRuleObj?.predicate?.value?.defaultValue | |
734 | - : clearRuleObj?.predicate?.operation == 'GREATER' | |
735 | - ? clearRuleObj?.key?.key + '大于' + clearRuleObj?.predicate?.value?.defaultValue | |
736 | - : clearRuleObj?.predicate?.operation == 'LESS' | |
737 | - ? clearRuleObj?.key?.key + '小于' + clearRuleObj?.predicate?.value?.defaultValue | |
738 | - : clearRuleObj?.key?.key + '小于或等于' + clearRuleObj?.predicate?.value?.defaultValue; | |
731 | + return formatMap; | |
739 | 732 | } catch (e) { |
740 | 733 | return e; |
741 | 734 | } |
... | ... | @@ -757,27 +750,26 @@ |
757 | 750 | openRuleConditObj = v2[i]; |
758 | 751 | } |
759 | 752 | } |
760 | - let createRuleObj = {}; | |
761 | - openRuleConditObj?.condition?.condition?.forEach((f) => { | |
762 | - createRuleObj = f; | |
753 | + let formatMap = openRuleConditObj?.condition?.condition.map((f) => { | |
754 | + return f.predicate.operation == 'EQUAL' | |
755 | + ? f.key.key + '等于' + f.predicate.value.defaultValue | |
756 | + : f.predicate.operation == 'STARTS_WITH' | |
757 | + ? f.key.key + '开始于' + f.predicate.value.defaultValue | |
758 | + : f.predicate.operation == 'ENDS_WITH' | |
759 | + ? f.key.key + '结束于' + f.predicate.value.defaultValue | |
760 | + : f.predicate.operation == 'NOT_CONTAINS' | |
761 | + ? f.key.key + '不包含' + f.predicate.value.defaultValue | |
762 | + : f.predicate.operation == 'NOT_EQUAL' | |
763 | + ? f.key.key + '不等于' + f.predicate.value.defaultValue | |
764 | + : f.predicate.operation == 'GREATER' | |
765 | + ? f.key.key + '大于' + f.predicate.value.defaultValue | |
766 | + : f.predicate.operation == 'LESS' | |
767 | + ? f.key.key + '小于' + f.predicate.value.defaultValue | |
768 | + : f.predicate.operation == 'GREATER_OR_EQUAL' | |
769 | + ? f.key.key + '大于或等于' + f.predicate.value.defaultValue | |
770 | + : f.key.key + '小于或等于' + f.predicate.value.defaultValue; | |
763 | 771 | }); |
764 | - return createRuleObj?.predicate?.operation == 'LESS_OR_EQUAL' | |
765 | - ? createRuleObj?.key?.key + '小于或等于' + createRuleObj?.predicate?.value?.defaultValue | |
766 | - : createRuleObj?.predicate?.operation == 'EQUAL' | |
767 | - ? createRuleObj?.key?.key + '等于' + createRuleObj?.predicate?.value?.defaultValue | |
768 | - : createRuleObj?.predicate?.operation == 'NOT_EQUAL' | |
769 | - ? createRuleObj?.key?.key + '不等于' + createRuleObj?.predicate?.value?.defaultValue | |
770 | - : createRuleObj?.predicate?.operation == 'ENDS_WITH' | |
771 | - ? createRuleObj?.key?.key + '结束于' + createRuleObj?.predicate?.value?.defaultValue | |
772 | - : createRuleObj?.predicate?.operation == 'CONTAINS' | |
773 | - ? createRuleObj?.key?.key + '包含' + createRuleObj?.predicate?.value?.defaultValue | |
774 | - : createRuleObj?.predicate?.operation == 'GREATER' | |
775 | - ? createRuleObj?.key?.key + '大于' + createRuleObj?.predicate?.value?.defaultValue | |
776 | - : createRuleObj?.predicate?.operation == 'LESS' | |
777 | - ? createRuleObj?.key?.key + '小于' + createRuleObj?.predicate?.value?.defaultValue | |
778 | - : createRuleObj?.key?.key + | |
779 | - '小于或等于' + | |
780 | - createRuleObj?.predicate?.value?.defaultValue; | |
772 | + return formatMap; | |
781 | 773 | } catch (e) { |
782 | 774 | return e; |
783 | 775 | } |
... | ... | @@ -798,13 +790,25 @@ |
798 | 790 | o[v] = getStepThreeEditArr.value[v]; |
799 | 791 | getFilterStepThreeEditArr.value.push(o as never); |
800 | 792 | }); |
801 | - console.log(getFilterStepThreeEditArr.value); | |
802 | - | |
803 | - // setRegisterFormChangeDetail({ | |
804 | - // alarmDetails: v.stepThreeData[0].createRules['MAJOR'].alarmDetails, | |
805 | - // }); | |
806 | 793 | } |
807 | 794 | }; |
795 | + const setCreateRegisterFormChangeDetailFunc = (v) => { | |
796 | + for (let i in v) { | |
797 | + detailDetailModelArray.value.push(v[i].alarmDetails as never); | |
798 | + createAlarmArray.value.push(i as never); | |
799 | + } | |
800 | + }; | |
801 | + const formatAlarmFunc = (v) => { | |
802 | + return v == 'CRITICAL' | |
803 | + ? '危险' | |
804 | + : v == 'MAJOR' | |
805 | + ? '重要' | |
806 | + : v == 'MINOR' | |
807 | + ? '次要' | |
808 | + : v == 'WARNING' | |
809 | + ? '警告' | |
810 | + : '不确定'; | |
811 | + }; | |
808 | 812 | |
809 | 813 | //清除修改详情模板 |
810 | 814 | const setRegisterFormClearChangeDetailFunc = (v) => { |
... | ... | @@ -829,7 +833,9 @@ |
829 | 833 | addNewOpenRule.schedule = enableObj.value as never; |
830 | 834 | addNewRuleTem.condition.condition = ruleObj.value as never; |
831 | 835 | tempOpenRuleTempArr.value.push(addNewOpenRule.schedule as never); |
832 | - tempRuleConditionTempArr.value.push(addNewRuleTem.condition.condition as never); | |
836 | + tempRuleConditionTempArr.value.push({ | |
837 | + condition: addNewRuleTem.condition.condition, | |
838 | + }); | |
833 | 839 | }; |
834 | 840 | |
835 | 841 | const getClearOpenRuleAndRuleCondition = () => { |
... | ... | @@ -867,7 +873,7 @@ |
867 | 873 | }); |
868 | 874 | |
869 | 875 | tempRuleConditionTempArr.value.forEach((f3) => { |
870 | - kongRuleConditionObj.condition.condition = f3; | |
876 | + kongRuleConditionObj.condition = f3; | |
871 | 877 | }); |
872 | 878 | |
873 | 879 | createRulesObj.value[addChangeSeverity.value?.default] = { |
... | ... | @@ -920,11 +926,33 @@ |
920 | 926 | //规则条件 |
921 | 927 | const getAllFieldsRuleFunc = (v) => { |
922 | 928 | ruleObj.value = v; |
923 | - let splitRuleObj = {}; | |
924 | - ruleObj.value.forEach((f) => { | |
925 | - splitRuleObj = f; | |
929 | + addNewRuleTem.condition.condition = ruleObj.value as never; | |
930 | + fliterTempRuleConditionTempArr.value.push({ | |
931 | + condition: addNewRuleTem.condition.condition, | |
932 | + }); | |
933 | + }; | |
934 | + //格式化新增 | |
935 | + const formatAddRuleFunc = (v) => { | |
936 | + let formatMap = v.condition.map((f) => { | |
937 | + return f.predicate.operation == 'EQUAL' | |
938 | + ? f.key.key + '等于' + f.predicate.value.defaultValue | |
939 | + : f.predicate.operation == 'STARTS_WITH' | |
940 | + ? f.key.key + '开始于' + f.predicate.value.defaultValue | |
941 | + : f.predicate.operation == 'ENDS_WITH' | |
942 | + ? f.key.key + '结束于' + f.predicate.value.defaultValue | |
943 | + : f.predicate.operation == 'NOT_CONTAINS' | |
944 | + ? f.key.key + '不包含' + f.predicate.value.defaultValue | |
945 | + : f.predicate.operation == 'NOT_EQUAL' | |
946 | + ? f.key.key + '不等于' + f.predicate.value.defaultValue | |
947 | + : f.predicate.operation == 'GREATER' | |
948 | + ? f.key.key + '大于' + f.predicate.value.defaultValue | |
949 | + : f.predicate.operation == 'LESS' | |
950 | + ? f.key.key + '小于' + f.predicate.value.defaultValue | |
951 | + : f.predicate.operation == 'GREATER_OR_EQUAL' | |
952 | + ? f.key.key + '大于或等于' + f.predicate.value.defaultValue | |
953 | + : f.key.key + '小于或等于' + f.predicate.value.defaultValue; | |
926 | 954 | }); |
927 | - fliterTempRuleConditionTempArr.value.push(splitRuleObj as never); | |
955 | + return formatMap; | |
928 | 956 | }; |
929 | 957 | //清除报警规则 |
930 | 958 | //启用规则 |
... | ... | @@ -935,14 +963,33 @@ |
935 | 963 | //规则条件 |
936 | 964 | const getAllClearFieldsRuleFunc = (v) => { |
937 | 965 | ruleLastObj.value = v; |
938 | - let splitRuleObj = {}; | |
939 | - ruleLastObj.value.forEach((f) => { | |
940 | - splitRuleObj = f; | |
966 | + addNewRuleTem.condition.condition = ruleLastObj.value as never; | |
967 | + fliterClearTempRuleConditionTempArr.value.push({ | |
968 | + condition: addNewRuleTem.condition.condition, | |
941 | 969 | }); |
942 | - fliterClearTempRuleConditionTempArr.value.push(splitRuleObj as never); | |
943 | - // if (fliterClearTempRuleConditionTempArr.value.length == 0) { | |
944 | - // fliterClearTempRuleConditionTempArr.value = ruleLastObj.value; | |
945 | - // } | |
970 | + }; | |
971 | + | |
972 | + const formatClearRuleFunc = (v) => { | |
973 | + let formatMap = v.condition.map((f) => { | |
974 | + return f.predicate.operation == 'EQUAL' | |
975 | + ? f.key.key + '等于' + f.predicate.value.defaultValue | |
976 | + : f.predicate.operation == 'STARTS_WITH' | |
977 | + ? f.key.key + '开始于' + f.predicate.value.defaultValue | |
978 | + : f.predicate.operation == 'ENDS_WITH' | |
979 | + ? f.key.key + '结束于' + f.predicate.value.defaultValue | |
980 | + : f.predicate.operation == 'NOT_CONTAINS' | |
981 | + ? f.key.key + '不包含' + f.predicate.value.defaultValue | |
982 | + : f.predicate.operation == 'NOT_EQUAL' | |
983 | + ? f.key.key + '不等于' + f.predicate.value.defaultValue | |
984 | + : f.predicate.operation == 'GREATER' | |
985 | + ? f.key.key + '大于' + f.predicate.value.defaultValue | |
986 | + : f.predicate.operation == 'LESS' | |
987 | + ? f.key.key + '小于' + f.predicate.value.defaultValue | |
988 | + : f.predicate.operation == 'GREATER_OR_EQUAL' | |
989 | + ? f.key.key + '大于或等于' + f.predicate.value.defaultValue | |
990 | + : f.key.key + '小于或等于' + f.predicate.value.defaultValue; | |
991 | + }); | |
992 | + return formatMap; | |
946 | 993 | }; |
947 | 994 | |
948 | 995 | //生成uuid |
... | ... | @@ -1057,6 +1104,12 @@ |
1057 | 1104 | }; |
1058 | 1105 | |
1059 | 1106 | return { |
1107 | + isAddRuleStatusFunc, | |
1108 | + isAddRuleStatus, | |
1109 | + formatAlarmFunc, | |
1110 | + createAlarmArray, | |
1111 | + formatClearRuleFunc, | |
1112 | + formatAddRuleFunc, | |
1060 | 1113 | getFilterStepThreeClearDetailEditArr, |
1061 | 1114 | getIsShowAddRule, |
1062 | 1115 | openRuleConditionComp, |
... | ... | @@ -1127,6 +1180,8 @@ |
1127 | 1180 | registerFormCreateAlarm, |
1128 | 1181 | addCreateRole, |
1129 | 1182 | deleteCondition, |
1183 | + setCreateRegisterFormChangeDetailFunc, | |
1184 | + detailDetailModelArray, | |
1130 | 1185 | }; |
1131 | 1186 | }, |
1132 | 1187 | }); | ... | ... |
... | ... | @@ -9,6 +9,12 @@ import { alarmContactGetPage } from '/@/api/device/deviceConfigApi'; |
9 | 9 | export const step1Schemas: FormSchema[] = [ |
10 | 10 | { |
11 | 11 | field: 'name', |
12 | + label: '上传图片', | |
13 | + component: 'Input', | |
14 | + slot: 'imageSelect', | |
15 | + }, | |
16 | + { | |
17 | + field: 'name', | |
12 | 18 | label: '配置名称', |
13 | 19 | required: true, |
14 | 20 | component: 'Input', | ... | ... |
... | ... | @@ -12,16 +12,16 @@ |
12 | 12 | </CollapseContainer> |
13 | 13 | </template> |
14 | 14 | <script lang="ts"> |
15 | - import { defineComponent, ref, watch } from 'vue'; | |
15 | + import { defineComponent, ref } from 'vue'; | |
16 | 16 | import { CollapseContainer } from '/@/components/Container/index'; |
17 | 17 | import { BasicForm, useForm } from '/@/components/Form/index'; |
18 | 18 | import { Input } from 'ant-design-vue'; |
19 | 19 | import { useConditionDrawerSchema } from '../config'; |
20 | - import { screenLinkPageByDeptIdGetDevice } from '/@/api/ruleengine/ruleengineApi'; | |
20 | + // import { screenLinkPageByDeptIdGetDevice } from '/@/api/ruleengine/ruleengineApi'; | |
21 | 21 | |
22 | 22 | export default defineComponent({ |
23 | 23 | components: { CollapseContainer, BasicForm, [Input.name]: Input }, |
24 | - props: ['deviceInfo1', 'editconditionFather', 'newConditionMapFather'], | |
24 | + props: ['deviceInfo1', 'editConditionFather', 'newConditionMapFather'], | |
25 | 25 | |
26 | 26 | setup(props) { |
27 | 27 | const fieldValue: any = ref({}); |
... | ... | @@ -38,27 +38,37 @@ |
38 | 38 | const resetFieldsValueFunc = () => { |
39 | 39 | resetFields(); |
40 | 40 | }; |
41 | - watch( | |
42 | - () => props.deviceInfo1, | |
43 | - async (newV) => { | |
44 | - const options = await screenLinkPageByDeptIdGetDevice({ organizationId: newV }); | |
45 | - options.items.forEach((v) => { | |
46 | - return (v.value = v.id), (v.label = v.name); | |
47 | - }); | |
41 | + // watch( | |
42 | + // () => props.deviceInfo1, | |
43 | + // async (newV) => { | |
44 | + // const options = await screenLinkPageByDeptIdGetDevice({ organizationId: newV }); | |
45 | + // options.items.forEach((v) => { | |
46 | + // return (v.value = v.id), (v.label = v.name); | |
47 | + // }); | |
48 | + // updateSchema({ | |
49 | + // field: 'entityId', | |
50 | + // componentProps: { | |
51 | + // options: options.items, | |
52 | + // }, | |
53 | + // }); | |
54 | + // } | |
55 | + // ); | |
56 | + const updateFieldDeviceId = (v) => { | |
57 | + setTimeout(() => { | |
48 | 58 | updateSchema({ |
49 | - field: 'deviceId', | |
59 | + field: 'entityId', | |
50 | 60 | componentProps: { |
51 | - options: options.items, | |
61 | + options: v, | |
52 | 62 | }, |
53 | 63 | }); |
54 | - } | |
55 | - ); | |
64 | + }, 10); | |
65 | + }; | |
56 | 66 | |
57 | 67 | //回显数据 |
58 | 68 | const setFieldsFormValueFun = () => { |
59 | - if (props.editconditionFather !== 1) { | |
69 | + if (props.editConditionFather !== 1) { | |
60 | 70 | setTimeout(() => { |
61 | - setFieldsValue(props.editconditionFather); | |
71 | + setFieldsValue(props.editConditionFather); | |
62 | 72 | }, 100); |
63 | 73 | } |
64 | 74 | }; |
... | ... | @@ -67,7 +77,7 @@ |
67 | 77 | if (props.newConditionMapFather !== 1) { |
68 | 78 | setTimeout(() => { |
69 | 79 | updateSchema({ |
70 | - field: 'deviceId', | |
80 | + field: 'entityId', | |
71 | 81 | componentProps: { |
72 | 82 | options: props.newConditionMapFather, |
73 | 83 | }, |
... | ... | @@ -79,7 +89,7 @@ |
79 | 89 | //新增清空设备选择 |
80 | 90 | const clearSelectDevice = () => { |
81 | 91 | updateSchema({ |
82 | - field: 'deviceId', | |
92 | + field: 'entityId', | |
83 | 93 | componentProps: { |
84 | 94 | options: [], |
85 | 95 | }, |
... | ... | @@ -87,13 +97,14 @@ |
87 | 97 | }; |
88 | 98 | // const editSelectDevice = (v) => { |
89 | 99 | // updateSchema({ |
90 | - // field: 'deviceId', | |
100 | + // field: 'entityId', | |
91 | 101 | // componentProps: { |
92 | 102 | // options: v, |
93 | 103 | // }, |
94 | 104 | // }); |
95 | 105 | // }; |
96 | 106 | return { |
107 | + updateFieldDeviceId, | |
97 | 108 | resetFieldsValueFunc, |
98 | 109 | clearSelectDevice, |
99 | 110 | editSelectDevice, | ... | ... |
... | ... | @@ -12,12 +12,12 @@ |
12 | 12 | </CollapseContainer> |
13 | 13 | </template> |
14 | 14 | <script lang="ts"> |
15 | - import { defineComponent, ref, watch } from 'vue'; | |
15 | + import { defineComponent, ref } from 'vue'; | |
16 | 16 | import { CollapseContainer } from '/@/components/Container/index'; |
17 | 17 | import { BasicForm, useForm } from '/@/components/Form/index'; |
18 | 18 | import { Input } from 'ant-design-vue'; |
19 | 19 | import { useActionDrawerSchema } from '../config'; |
20 | - import { screenLinkPageByDeptIdGetDevice } from '/@/api/ruleengine/ruleengineApi'; | |
20 | + // import { screenLinkPageByDeptIdGetDevice } from '/@/api/ruleengine/ruleengineApi'; | |
21 | 21 | |
22 | 22 | export default defineComponent({ |
23 | 23 | components: { CollapseContainer, BasicForm, [Input.name]: Input }, |
... | ... | @@ -34,25 +34,38 @@ |
34 | 34 | const getFieldsValueFunc = () => { |
35 | 35 | fieldValue.value = getFieldsValue(); |
36 | 36 | return fieldValue.value; |
37 | + // return new Promise((resolve) => { | |
38 | + // resolve(fieldValue.value); | |
39 | + // }); | |
37 | 40 | }; |
38 | 41 | const resetFieldsValueFunc = () => { |
39 | 42 | resetFields(); |
40 | 43 | }; |
41 | - watch( | |
42 | - () => props.deviceInfo2, | |
43 | - async (newV) => { | |
44 | - const options = await screenLinkPageByDeptIdGetDevice({ organizationId: newV }); | |
45 | - options.items.forEach((v) => { | |
46 | - return (v.value = v.id), (v.label = v.name); | |
47 | - }); | |
44 | + // watch( | |
45 | + // () => props.deviceInfo2, | |
46 | + // async (newV) => { | |
47 | + // const options = await screenLinkPageByDeptIdGetDevice({ organizationId: newV }); | |
48 | + // options.items.forEach((v) => { | |
49 | + // return (v.value = v.id), (v.label = v.name); | |
50 | + // }); | |
51 | + // updateSchema({ | |
52 | + // field: 'entityId', | |
53 | + // componentProps: { | |
54 | + // options: options.items, | |
55 | + // }, | |
56 | + // }); | |
57 | + // } | |
58 | + // ); | |
59 | + const updateFieldDeviceId = (v) => { | |
60 | + setTimeout(() => { | |
48 | 61 | updateSchema({ |
49 | - field: 'deviceId', | |
62 | + field: 'entityId', | |
50 | 63 | componentProps: { |
51 | - options: options.items, | |
64 | + options: v, | |
52 | 65 | }, |
53 | 66 | }); |
54 | - } | |
55 | - ); | |
67 | + }, 10); | |
68 | + }; | |
56 | 69 | |
57 | 70 | //回显数据 |
58 | 71 | const setFieldsFormValueFun = () => { |
... | ... | @@ -67,7 +80,7 @@ |
67 | 80 | if (props.newActionMapFather !== 1) { |
68 | 81 | setTimeout(() => { |
69 | 82 | updateSchema({ |
70 | - field: 'deviceId', | |
83 | + field: 'entityId', | |
71 | 84 | componentProps: { |
72 | 85 | options: props.newActionMapFather, |
73 | 86 | }, |
... | ... | @@ -79,7 +92,7 @@ |
79 | 92 | //新增清空设备选择 |
80 | 93 | const clearSelectDevice = () => { |
81 | 94 | updateSchema({ |
82 | - field: 'deviceId', | |
95 | + field: 'entityId', | |
83 | 96 | componentProps: { |
84 | 97 | options: [], |
85 | 98 | }, |
... | ... | @@ -87,13 +100,14 @@ |
87 | 100 | }; |
88 | 101 | // const editSelectDevice = (v) => { |
89 | 102 | // updateSchema({ |
90 | - // field: 'deviceId', | |
103 | + // field: 'entityId', | |
91 | 104 | // componentProps: { |
92 | 105 | // options: v, |
93 | 106 | // }, |
94 | 107 | // }); |
95 | 108 | // }; |
96 | 109 | return { |
110 | + updateFieldDeviceId, | |
97 | 111 | clearSelectDevice, |
98 | 112 | editSelectDevice, |
99 | 113 | resetFieldsValueFunc, |
... | ... | @@ -111,7 +125,7 @@ |
111 | 125 | vertical-align: middle; |
112 | 126 | display: inline-block; |
113 | 127 | position: relative; |
114 | - top: 25px; | |
128 | + top: 20px; | |
115 | 129 | left: 5px; |
116 | 130 | } |
117 | 131 | </style> | ... | ... |
... | ... | @@ -14,12 +14,12 @@ |
14 | 14 | </div> |
15 | 15 | </template> |
16 | 16 | <script lang="ts"> |
17 | - import { defineComponent, ref, watch } from 'vue'; | |
17 | + import { defineComponent, ref } from 'vue'; | |
18 | 18 | import { CollapseContainer } from '/@/components/Container/index'; |
19 | 19 | import { BasicForm, useForm } from '/@/components/Form/index'; |
20 | 20 | import { Input } from 'ant-design-vue'; |
21 | 21 | import { useTriggerDrawerSchema } from '../config'; |
22 | - import { screenLinkPageByDeptIdGetDevice } from '/@/api/ruleengine/ruleengineApi'; | |
22 | + // import { screenLinkPageByDeptIdGetDevice } from '/@/api/ruleengine/ruleengineApi'; | |
23 | 23 | |
24 | 24 | export default defineComponent({ |
25 | 25 | components: { CollapseContainer, BasicForm, [Input.name]: Input }, |
... | ... | @@ -36,20 +36,20 @@ |
36 | 36 | fieldValue.value = getFieldsValue(); |
37 | 37 | return fieldValue.value; |
38 | 38 | }; |
39 | - watch( | |
40 | - () => props.deviceInfo, | |
41 | - async (newV) => { | |
42 | - const options = await screenLinkPageByDeptIdGetDevice({ organizationId: newV }); | |
43 | - options.items.forEach((v) => { | |
44 | - return (v.value = v.id), (v.label = v.name); | |
45 | - }); | |
46 | - updateFieldDeviceId(options.items); | |
47 | - } | |
48 | - ); | |
39 | + // watch( | |
40 | + // () => props.deviceInfo | |
41 | + // // async (newV) => { | |
42 | + // // const options = await screenLinkPageByDeptIdGetDevice({ organizationId: newV }); | |
43 | + // // options.items.forEach((v) => { | |
44 | + // // return (v.value = v.id), (v.label = v.name); | |
45 | + // // }); | |
46 | + // // updateFieldDeviceId(options.items); | |
47 | + // // } | |
48 | + // ); | |
49 | 49 | const updateFieldDeviceId = (v) => { |
50 | 50 | setTimeout(() => { |
51 | 51 | updateSchema({ |
52 | - field: 'deviceId', | |
52 | + field: 'entityId', | |
53 | 53 | componentProps: { |
54 | 54 | options: v, |
55 | 55 | }, |
... | ... | @@ -57,9 +57,7 @@ |
57 | 57 | }, 10); |
58 | 58 | }; |
59 | 59 | const resetFieldsValueFunc = () => { |
60 | - setTimeout(() => { | |
61 | - resetFields(); | |
62 | - }, 100); | |
60 | + resetFields(); | |
63 | 61 | }; |
64 | 62 | |
65 | 63 | //回显数据 |
... | ... | @@ -67,7 +65,7 @@ |
67 | 65 | if (props.editTriggerFather != 1) { |
68 | 66 | setTimeout(() => { |
69 | 67 | setFieldsValue(props.editTriggerFather); |
70 | - }, 100); | |
68 | + }, 10); | |
71 | 69 | } |
72 | 70 | }; |
73 | 71 | |
... | ... | @@ -75,7 +73,7 @@ |
75 | 73 | //新增清空设备选择 |
76 | 74 | const clearSelectDevice = () => { |
77 | 75 | updateSchema({ |
78 | - field: 'deviceId', | |
76 | + field: 'entityId', | |
79 | 77 | componentProps: { |
80 | 78 | options: [], |
81 | 79 | }, |
... | ... | @@ -85,7 +83,7 @@ |
85 | 83 | if (props.newFilterMapFather != 1) { |
86 | 84 | setTimeout(() => { |
87 | 85 | updateSchema({ |
88 | - field: 'deviceId', | |
86 | + field: 'entityId', | |
89 | 87 | componentProps: { |
90 | 88 | options: props.newFilterMapFather, |
91 | 89 | }, | ... | ... |
... | ... | @@ -14,13 +14,13 @@ import { copyTransFun } from '/@/utils/fnUtils'; |
14 | 14 | */ |
15 | 15 | |
16 | 16 | export enum TriggerEnum { |
17 | - IS_DEVICE_ACT = 'DEVICE_ACT', | |
18 | - IS_TIME_ACT = 'TIME_ACT', | |
19 | - IS_SCENE_ACT = 'SCENE_ACT', | |
17 | + IS_DEVICE_ACT = 'DEVICE_TRIGGER', | |
18 | + IS_TIME_ACT = 'SCHEDULE_TRIGGER', | |
19 | + IS_SCENE_ACT = 'SCENE_TRIGGER', | |
20 | 20 | IS_HAND_ACT = 'HAND_ACT', |
21 | 21 | IS_MSG_NOTIFY = 'MSG_NOTIFY', |
22 | 22 | IS_DEVICE_STATUS = 'DEVICE_STATUS', |
23 | - IS_TIME_ALL = 'TIME_ALL', | |
23 | + IS_TIME_ALL = 'SCHEDULE_TRIGGER', | |
24 | 24 | } |
25 | 25 | |
26 | 26 | export enum AttributeActionEnum { |
... | ... | @@ -37,6 +37,7 @@ export enum AttrAndWenDuEnum { |
37 | 37 | export const isShiDu = (type: string) => { |
38 | 38 | return type === AttrAndWenDuEnum.IS_SHIDU; |
39 | 39 | }; |
40 | + | |
40 | 41 | export const isWenDu = (type: string) => { |
41 | 42 | return type === AttrAndWenDuEnum.IS_WENDU_ACT; |
42 | 43 | }; |
... | ... | @@ -77,13 +78,13 @@ export const columns: BasicColumn[] = [ |
77 | 78 | }, |
78 | 79 | { |
79 | 80 | title: '触发方式', |
80 | - dataIndex: 'triggerEvent', | |
81 | + dataIndex: 'triggerType', | |
81 | 82 | format: (text: string, record: Recordable) => { |
82 | - return record.triggers[0]?.triggerEvent == 'DEVICE_ACT' | |
83 | + return record.triggers[0]?.triggerType == 'DEVICE_TRIGGER' | |
83 | 84 | ? '设备触发' |
84 | - : record.triggers[0]?.triggerEvent == 'TIME_ACT' | |
85 | + : record.triggers[0]?.triggerType == 'SCHEDULE_TRIGGER' | |
85 | 86 | ? '定时触发' |
86 | - : record.triggers[0]?.triggerEvent == 'SCENE_ACT' | |
87 | + : record.triggers[0]?.triggerType == 'SCENE_TRIGGER' | |
87 | 88 | ? '场景触发' |
88 | 89 | : '手动触发'; |
89 | 90 | }, |
... | ... | @@ -166,10 +167,10 @@ export const formSchema: FormSchema[] = [ |
166 | 167 | }, |
167 | 168 | onChange: async (v) => { |
168 | 169 | if (v == undefined) { |
169 | - formModel.deviceId = undefined; | |
170 | + formModel.entityId = undefined; | |
170 | 171 | const { updateSchema } = formActionType; |
171 | 172 | updateSchema({ |
172 | - field: 'deviceId', | |
173 | + field: 'entityId', | |
173 | 174 | componentProps: { |
174 | 175 | options: undefined, |
175 | 176 | }, |
... | ... | @@ -190,19 +191,6 @@ export const formSchema: FormSchema[] = [ |
190 | 191 | maxLength: 255, |
191 | 192 | placeholder: '请输入描述', |
192 | 193 | }, |
193 | - dynamicRules: () => { | |
194 | - return [ | |
195 | - { | |
196 | - required: false, | |
197 | - validator: (_, value) => { | |
198 | - if (String(value).length > 255) { | |
199 | - return Promise.reject('字数不超过255个字'); | |
200 | - } | |
201 | - return Promise.resolve(); | |
202 | - }, | |
203 | - }, | |
204 | - ]; | |
205 | - }, | |
206 | 194 | }, |
207 | 195 | ]; |
208 | 196 | |
... | ... | @@ -210,7 +198,7 @@ export const searchFormSchema: FormSchema[] = [ |
210 | 198 | { |
211 | 199 | field: 'organizationId', |
212 | 200 | label: '所属组织', |
213 | - colProps: { span: 8 }, | |
201 | + colProps: { span: 6 }, | |
214 | 202 | component: 'ApiTreeSelect', |
215 | 203 | componentProps: { |
216 | 204 | api: async () => { |
... | ... | @@ -224,24 +212,11 @@ export const searchFormSchema: FormSchema[] = [ |
224 | 212 | field: 'name', |
225 | 213 | label: '名称', |
226 | 214 | component: 'Input', |
227 | - colProps: { span: 8 }, | |
215 | + colProps: { span: 6 }, | |
228 | 216 | componentProps: { |
229 | 217 | maxLength: 36, |
230 | 218 | placeholder: '请输入名称', |
231 | 219 | }, |
232 | - dynamicRules: () => { | |
233 | - return [ | |
234 | - { | |
235 | - required: false, | |
236 | - validator: (_, value) => { | |
237 | - if (String(value).length > 36) { | |
238 | - return Promise.reject('字数不超过36个字'); | |
239 | - } | |
240 | - return Promise.resolve(); | |
241 | - }, | |
242 | - }, | |
243 | - ]; | |
244 | - }, | |
245 | 220 | }, |
246 | 221 | { |
247 | 222 | field: 'status', |
... | ... | @@ -254,37 +229,37 @@ export const searchFormSchema: FormSchema[] = [ |
254 | 229 | { label: '未启用', value: '0' }, |
255 | 230 | ], |
256 | 231 | }, |
257 | - colProps: { span: 4 }, | |
232 | + colProps: { span: 6 }, | |
258 | 233 | }, |
259 | 234 | ]; |
260 | 235 | |
261 | 236 | export const useTriggerDrawerSchema: FormSchema[] = [ |
262 | 237 | { |
263 | - field: 'triggerEvent', | |
238 | + field: 'triggerType', | |
264 | 239 | label: '', |
265 | 240 | component: 'Select', |
266 | 241 | componentProps: { |
267 | 242 | placeholder: '设备触发', |
268 | 243 | options: [ |
269 | - { label: '设备触发', value: 'DEVICE_ACT' }, | |
270 | - { label: '定时触发', value: 'TIME_ACT' }, | |
271 | - { label: '场景触发', value: 'SCENE_ACT' }, | |
244 | + { label: '设备触发', value: 'DEVICE_TRIGGER' }, | |
245 | + { label: '定时触发', value: 'SCHEDULE_TRIGGER' }, | |
246 | + { label: '场景触发', value: 'SCENE_TRIGGER' }, | |
272 | 247 | { label: '手动触发', value: 'HAND_ACT' }, |
273 | 248 | ], |
274 | 249 | }, |
275 | 250 | colProps: { span: 12 }, |
276 | 251 | }, |
277 | 252 | { |
278 | - field: 'deviceId', | |
253 | + field: 'entityId', | |
279 | 254 | label: '', |
280 | 255 | component: 'Select', |
281 | 256 | componentProps: { |
282 | 257 | placeholder: '请选择设备', |
283 | 258 | }, |
284 | 259 | ifShow: ({ values }) => |
285 | - !isTime(Reflect.get(values, 'triggerEvent')) && | |
286 | - !isScene(Reflect.get(values, 'triggerEvent')) && | |
287 | - !isHand(Reflect.get(values, 'triggerEvent')), | |
260 | + !isTime(Reflect.get(values, 'triggerType')) && | |
261 | + !isScene(Reflect.get(values, 'triggerType')) && | |
262 | + !isHand(Reflect.get(values, 'triggerType')), | |
288 | 263 | colProps: { |
289 | 264 | span: 12, |
290 | 265 | }, |
... | ... | @@ -300,7 +275,7 @@ export const useTriggerDrawerSchema: FormSchema[] = [ |
300 | 275 | colProps: { |
301 | 276 | span: 12, |
302 | 277 | }, |
303 | - ifShow: ({ values }) => isTime(Reflect.get(values, 'triggerEvent')), | |
278 | + ifShow: ({ values }) => isTime(Reflect.get(values, 'triggerType')), | |
304 | 279 | }, |
305 | 280 | { |
306 | 281 | field: 'touchWay', |
... | ... | @@ -314,9 +289,9 @@ export const useTriggerDrawerSchema: FormSchema[] = [ |
314 | 289 | ], |
315 | 290 | }, |
316 | 291 | ifShow: ({ values }) => |
317 | - !isTime(Reflect.get(values, 'triggerEvent')) && | |
318 | - !isScene(Reflect.get(values, 'triggerEvent')) && | |
319 | - !isHand(Reflect.get(values, 'triggerEvent')), | |
292 | + !isTime(Reflect.get(values, 'triggerType')) && | |
293 | + !isScene(Reflect.get(values, 'triggerType')) && | |
294 | + !isHand(Reflect.get(values, 'triggerType')), | |
320 | 295 | colProps: { span: 12 }, |
321 | 296 | }, |
322 | 297 | { |
... | ... | @@ -334,9 +309,9 @@ export const useTriggerDrawerSchema: FormSchema[] = [ |
334 | 309 | colProps: { span: 12 }, |
335 | 310 | ifShow: ({ values }) => |
336 | 311 | isUpAndDown(Reflect.get(values, 'touchWay')) && |
337 | - !isTime(Reflect.get(values, 'triggerEvent')) && | |
338 | - !isScene(Reflect.get(values, 'triggerEvent')) && | |
339 | - !isHand(Reflect.get(values, 'triggerEvent')), | |
312 | + !isTime(Reflect.get(values, 'triggerType')) && | |
313 | + !isScene(Reflect.get(values, 'triggerType')) && | |
314 | + !isHand(Reflect.get(values, 'triggerType')), | |
340 | 315 | }, |
341 | 316 | { |
342 | 317 | field: 'attributeChoose', |
... | ... | @@ -350,9 +325,9 @@ export const useTriggerDrawerSchema: FormSchema[] = [ |
350 | 325 | ], |
351 | 326 | }, |
352 | 327 | ifShow: ({ values }) => |
353 | - !isTime(Reflect.get(values, 'triggerEvent')) && | |
354 | - !isScene(Reflect.get(values, 'triggerEvent')) && | |
355 | - !isHand(Reflect.get(values, 'triggerEvent')) && | |
328 | + !isTime(Reflect.get(values, 'triggerType')) && | |
329 | + !isScene(Reflect.get(values, 'triggerType')) && | |
330 | + !isHand(Reflect.get(values, 'triggerType')) && | |
356 | 331 | !isUpAndDown(Reflect.get(values, 'touchWay')), |
357 | 332 | colProps: { span: 12 }, |
358 | 333 | }, |
... | ... | @@ -373,9 +348,9 @@ export const useTriggerDrawerSchema: FormSchema[] = [ |
373 | 348 | ifShow: ({ values }) => |
374 | 349 | isWenDu(Reflect.get(values, 'attributeChoose')) && |
375 | 350 | !isUpAndDown(Reflect.get(values, 'touchWay')) && |
376 | - !isTime(Reflect.get(values, 'triggerEvent')) && | |
377 | - !isScene(Reflect.get(values, 'triggerEvent')) && | |
378 | - !isHand(Reflect.get(values, 'triggerEvent')), | |
351 | + !isTime(Reflect.get(values, 'triggerType')) && | |
352 | + !isScene(Reflect.get(values, 'triggerType')) && | |
353 | + !isHand(Reflect.get(values, 'triggerType')), | |
379 | 354 | colProps: { span: 12 }, |
380 | 355 | }, |
381 | 356 | { |
... | ... | @@ -390,9 +365,9 @@ export const useTriggerDrawerSchema: FormSchema[] = [ |
390 | 365 | ifShow: ({ values }) => |
391 | 366 | isWenDu(Reflect.get(values, 'attributeChoose')) && |
392 | 367 | !isUpAndDown(Reflect.get(values, 'touchWay')) && |
393 | - !isTime(Reflect.get(values, 'triggerEvent')) && | |
394 | - !isScene(Reflect.get(values, 'triggerEvent')) && | |
395 | - !isHand(Reflect.get(values, 'triggerEvent')), | |
368 | + !isTime(Reflect.get(values, 'triggerType')) && | |
369 | + !isScene(Reflect.get(values, 'triggerType')) && | |
370 | + !isHand(Reflect.get(values, 'triggerType')), | |
396 | 371 | colProps: { |
397 | 372 | span: 12, |
398 | 373 | }, |
... | ... | @@ -413,7 +388,7 @@ export const useTriggerDrawerSchema: FormSchema[] = [ |
413 | 388 | { label: '场景触发器3', value: '3' }, |
414 | 389 | ], |
415 | 390 | }, |
416 | - ifShow: ({ values }) => isScene(Reflect.get(values, 'triggerEvent')), | |
391 | + ifShow: ({ values }) => isScene(Reflect.get(values, 'triggerType')), | |
417 | 392 | }, |
418 | 393 | |
419 | 394 | { |
... | ... | @@ -426,41 +401,32 @@ export const useTriggerDrawerSchema: FormSchema[] = [ |
426 | 401 | componentProps: { |
427 | 402 | placeholder: '暂不实现', |
428 | 403 | }, |
429 | - ifShow: ({ values }) => isHand(Reflect.get(values, 'triggerEvent')), | |
430 | - }, | |
431 | - { | |
432 | - field: '0', | |
433 | - component: 'Input', | |
434 | - label: ' ', | |
435 | - colProps: { | |
436 | - span: 12, | |
437 | - }, | |
438 | - slot: 'add', | |
404 | + ifShow: ({ values }) => isHand(Reflect.get(values, 'triggerType')), | |
439 | 405 | }, |
440 | 406 | ]; |
441 | 407 | |
442 | 408 | export const useConditionDrawerSchema: FormSchema[] = [ |
443 | 409 | { |
444 | - field: 'status', | |
410 | + field: 'triggerType', | |
445 | 411 | label: '', |
446 | 412 | component: 'Select', |
447 | 413 | componentProps: { |
448 | 414 | placeholder: '设备状态', |
449 | 415 | options: [ |
450 | - { label: '设备触发', value: 'DEVICE_STATUS' }, | |
451 | - { label: '时间范围', value: 'TIME_ALL' }, | |
416 | + { label: '设备触发', value: 'DEVICE_TRIGGER' }, | |
417 | + { label: '时间范围', value: 'SCHEDULE_TRIGGER' }, | |
452 | 418 | ], |
453 | 419 | }, |
454 | 420 | colProps: { span: 12 }, |
455 | 421 | }, |
456 | 422 | { |
457 | - field: 'deviceId', | |
423 | + field: 'entityId', | |
458 | 424 | label: '', |
459 | 425 | component: 'Select', |
460 | 426 | componentProps: { |
461 | 427 | placeholder: '请选择设备', |
462 | 428 | }, |
463 | - ifShow: ({ values }) => !isTimeAll(Reflect.get(values, 'status')), | |
429 | + ifShow: ({ values }) => !isTimeAll(Reflect.get(values, 'triggerType')), | |
464 | 430 | colProps: { |
465 | 431 | span: 12, |
466 | 432 | }, |
... | ... | @@ -475,7 +441,7 @@ export const useConditionDrawerSchema: FormSchema[] = [ |
475 | 441 | colProps: { |
476 | 442 | span: 12, |
477 | 443 | }, |
478 | - ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'status')), | |
444 | + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'triggerType')), | |
479 | 445 | }, |
480 | 446 | { |
481 | 447 | field: 'updateTime', |
... | ... | @@ -487,7 +453,7 @@ export const useConditionDrawerSchema: FormSchema[] = [ |
487 | 453 | colProps: { |
488 | 454 | span: 12, |
489 | 455 | }, |
490 | - ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'status')), | |
456 | + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'triggerType')), | |
491 | 457 | }, |
492 | 458 | { |
493 | 459 | field: 'property', |
... | ... | @@ -500,19 +466,7 @@ export const useConditionDrawerSchema: FormSchema[] = [ |
500 | 466 | { label: 'wendu', value: 'WENDU' }, |
501 | 467 | ], |
502 | 468 | }, |
503 | - ifShow: ({ values }) => !isTimeAll(Reflect.get(values, 'status')), | |
504 | - colProps: { span: 12 }, | |
505 | - }, | |
506 | - { | |
507 | - field: 'wu', | |
508 | - label: '', | |
509 | - component: 'Input', | |
510 | - componentProps: { | |
511 | - placeholder: '无', | |
512 | - style: { | |
513 | - visibility: 'hidden', | |
514 | - }, | |
515 | - }, | |
469 | + ifShow: ({ values }) => !isTimeAll(Reflect.get(values, 'triggerType')), | |
516 | 470 | colProps: { span: 12 }, |
517 | 471 | }, |
518 | 472 | { |
... | ... | @@ -530,7 +484,7 @@ export const useConditionDrawerSchema: FormSchema[] = [ |
530 | 484 | ], |
531 | 485 | }, |
532 | 486 | ifShow: ({ values }) => |
533 | - isShiDu(Reflect.get(values, 'property')) && !isTimeAll(Reflect.get(values, 'status')), | |
487 | + isShiDu(Reflect.get(values, 'property')) && !isTimeAll(Reflect.get(values, 'triggerType')), | |
534 | 488 | colProps: { span: 12 }, |
535 | 489 | }, |
536 | 490 | { |
... | ... | @@ -543,7 +497,7 @@ export const useConditionDrawerSchema: FormSchema[] = [ |
543 | 497 | }, |
544 | 498 | |
545 | 499 | ifShow: ({ values }) => |
546 | - isShiDu(Reflect.get(values, 'property')) && !isTimeAll(Reflect.get(values, 'status')), | |
500 | + isShiDu(Reflect.get(values, 'property')) && !isTimeAll(Reflect.get(values, 'triggerType')), | |
547 | 501 | colProps: { |
548 | 502 | span: 12, |
549 | 503 | }, |
... | ... | @@ -564,7 +518,7 @@ export const useConditionDrawerSchema: FormSchema[] = [ |
564 | 518 | ], |
565 | 519 | }, |
566 | 520 | ifShow: ({ values }) => |
567 | - isWenDu(Reflect.get(values, 'property')) && !isTimeAll(Reflect.get(values, 'status')), | |
521 | + isWenDu(Reflect.get(values, 'property')) && !isTimeAll(Reflect.get(values, 'triggerType')), | |
568 | 522 | colProps: { span: 12 }, |
569 | 523 | }, |
570 | 524 | { |
... | ... | @@ -576,20 +530,11 @@ export const useConditionDrawerSchema: FormSchema[] = [ |
576 | 530 | placeholder: '请输入比较值', |
577 | 531 | }, |
578 | 532 | ifShow: ({ values }) => |
579 | - isWenDu(Reflect.get(values, 'property')) && !isTimeAll(Reflect.get(values, 'status')), | |
533 | + isWenDu(Reflect.get(values, 'property')) && !isTimeAll(Reflect.get(values, 'triggerType')), | |
580 | 534 | colProps: { |
581 | 535 | span: 12, |
582 | 536 | }, |
583 | 537 | }, |
584 | - { | |
585 | - field: '0', | |
586 | - component: 'Input', | |
587 | - label: ' ', | |
588 | - colProps: { | |
589 | - span: 12, | |
590 | - }, | |
591 | - slot: 'add', | |
592 | - }, | |
593 | 538 | ]; |
594 | 539 | |
595 | 540 | export const useActionDrawerSchema: FormSchema[] = [ |
... | ... | @@ -599,20 +544,19 @@ export const useActionDrawerSchema: FormSchema[] = [ |
599 | 544 | component: 'Select', |
600 | 545 | required: true, |
601 | 546 | componentProps: { |
602 | - placeholder: '设备输出', | |
547 | + placeholder: '请选择设备输出', | |
603 | 548 | options: [ |
604 | 549 | { label: '设备输出', value: 'DEVICE_OUT' }, |
605 | 550 | { label: '消息通知', value: 'MSG_NOTIFY' }, |
606 | - { label: '场景联动', value: 'SCENE_ACT' }, | |
551 | + { label: '场景联动', value: 'SCENE_TRIGGER' }, | |
607 | 552 | ], |
608 | 553 | }, |
609 | 554 | colProps: { span: 12 }, |
610 | 555 | }, |
611 | 556 | { |
612 | - field: 'deviceId', | |
557 | + field: 'entityId', | |
613 | 558 | label: '', |
614 | 559 | component: 'Select', |
615 | - required: true, | |
616 | 560 | componentProps: { |
617 | 561 | placeholder: '请选择设备', |
618 | 562 | }, |
... | ... | @@ -623,11 +567,9 @@ export const useActionDrawerSchema: FormSchema[] = [ |
623 | 567 | }, |
624 | 568 | }, |
625 | 569 | { |
626 | - field: 'command', | |
570 | + field: 'doContext', | |
627 | 571 | component: 'Input', |
628 | 572 | label: '', |
629 | - required: true, | |
630 | - | |
631 | 573 | componentProps: { |
632 | 574 | maxLength: 255, |
633 | 575 | placeholder: '请输入下发指定', |
... | ... | @@ -639,18 +581,6 @@ export const useActionDrawerSchema: FormSchema[] = [ |
639 | 581 | }, |
640 | 582 | }, |
641 | 583 | { |
642 | - field: 'wu1', | |
643 | - label: '', | |
644 | - component: 'Input', | |
645 | - componentProps: { | |
646 | - placeholder: '无', | |
647 | - style: { | |
648 | - visibility: 'hidden', | |
649 | - }, | |
650 | - }, | |
651 | - colProps: { span: 12 }, | |
652 | - }, | |
653 | - { | |
654 | 584 | field: 'wu2', |
655 | 585 | component: 'Input', |
656 | 586 | label: '', |
... | ... | @@ -706,13 +636,4 @@ export const useActionDrawerSchema: FormSchema[] = [ |
706 | 636 | colProps: { span: 12 }, |
707 | 637 | ifShow: ({ values }) => isScene(Reflect.get(values, 'outTarget')), |
708 | 638 | }, |
709 | - { | |
710 | - field: '0', | |
711 | - component: 'Input', | |
712 | - label: ' ', | |
713 | - colProps: { | |
714 | - span: 12, | |
715 | - }, | |
716 | - slot: 'add', | |
717 | - }, | |
718 | 639 | ]; | ... | ... |
1 | 1 | export interface IAddTrigger { |
2 | - id: string; | |
3 | - triggerEvent: string; | |
2 | + triggerType: string; | |
4 | 3 | deviceId: string; |
5 | 4 | touchWay: string; |
6 | 5 | attributeChoose: string; |
... | ... | @@ -9,18 +8,15 @@ export interface IAddTrigger { |
9 | 8 | } |
10 | 9 | |
11 | 10 | export interface IAddCondition { |
12 | - id: string; | |
13 | - status: string; | |
11 | + triggerType: string; | |
14 | 12 | deviceId: string; |
15 | 13 | createTime: string; |
16 | 14 | updateTime: string; |
17 | - property: string; | |
18 | 15 | compare: string; |
19 | 16 | value: string; |
20 | 17 | } |
21 | 18 | |
22 | 19 | export interface IAddAction { |
23 | - id: string; | |
24 | 20 | outTarget: string; |
25 | 21 | deviceId: string; |
26 | 22 | command: string; | ... | ... |
... | ... | @@ -33,7 +33,6 @@ |
33 | 33 | </template> |
34 | 34 | </BasicTable> |
35 | 35 | <SceneLinkAgeDrawer |
36 | - :getChildrenData="echoEditData" | |
37 | 36 | @register="registerDrawer" |
38 | 37 | @success="handleSuccess" |
39 | 38 | ref="sceneLinkAgeDrawerRef" |
... | ... | @@ -41,7 +40,7 @@ |
41 | 40 | </div> |
42 | 41 | </template> |
43 | 42 | <script lang="ts"> |
44 | - import { defineComponent, reactive, getCurrentInstance, ref } from 'vue'; | |
43 | + import { defineComponent, getCurrentInstance, ref } from 'vue'; | |
45 | 44 | import { BasicTable, useTable, TableAction } from '/@/components/Table'; |
46 | 45 | import { useDrawer } from '/@/components/Drawer'; |
47 | 46 | import SceneLinkAgeDrawer from './useDrawer.vue'; |
... | ... | @@ -62,7 +61,6 @@ |
62 | 61 | handleSuccess |
63 | 62 | ); |
64 | 63 | let selectedRowKeys: Array<string> = []; |
65 | - let echoEditData = reactive({}); | |
66 | 64 | const [registerDrawer, { openDrawer }] = useDrawer(); |
67 | 65 | const { createMessage } = useMessage(); |
68 | 66 | const [registerTable, { reload, getSelectRowKeys }] = useTable({ |
... | ... | @@ -88,21 +86,18 @@ |
88 | 86 | }); |
89 | 87 | |
90 | 88 | function handleAdd() { |
89 | + openDrawer(true, { | |
90 | + isUpdate: false, | |
91 | + }); | |
91 | 92 | try { |
92 | - proxy.$refs.sceneLinkAgeDrawerRef.clearAllArrayFunc(); | |
93 | 93 | setTimeout(() => { |
94 | - proxy.$refs.sceneLinkAgeDrawerRef.defaultAddTrigger(); | |
95 | - }, 10); | |
96 | - proxy.$refs.sceneLinkAgeDrawerRef.defaultAddCondition(); | |
97 | - proxy.$refs.sceneLinkAgeDrawerRef.defaultAddAction(); | |
98 | - proxy.$refs.sceneLinkAgeDrawerRef.resetActionsAllArrayFunc(); | |
99 | - proxy.$refs.sceneLinkAgeDrawerRef.clearActionsAllDevice(); | |
94 | + // proxy.$refs.sceneLinkAgeDrawerRef.defaultAddTrigger(); | |
95 | + // proxy.$refs.sceneLinkAgeDrawerRef.defaultAddCondition(); | |
96 | + proxy.$refs.sceneLinkAgeDrawerRef.defaultAddAction(); | |
97 | + }, 50); | |
100 | 98 | } catch (e) { |
101 | 99 | return e; |
102 | 100 | } |
103 | - openDrawer(true, { | |
104 | - isUpdate: false, | |
105 | - }); | |
106 | 101 | } |
107 | 102 | |
108 | 103 | const useSelectionChange = () => { |
... | ... | @@ -120,7 +115,6 @@ |
120 | 115 | record, |
121 | 116 | isUpdate: true, |
122 | 117 | }); |
123 | - echoEditData = record; | |
124 | 118 | } |
125 | 119 | async function handleDelete(record: Recordable) { |
126 | 120 | try { |
... | ... | @@ -138,7 +132,6 @@ |
138 | 132 | return { |
139 | 133 | sceneLinkAgeDrawerRef, |
140 | 134 | useSelectionChange, |
141 | - echoEditData, | |
142 | 135 | registerTable, |
143 | 136 | registerDrawer, |
144 | 137 | handleAdd, | ... | ... |
... | ... | @@ -6,6 +6,7 @@ |
6 | 6 | :title="getTitle" |
7 | 7 | width="1000px" |
8 | 8 | @ok="handleSubmit" |
9 | + @close="handleClose" | |
9 | 10 | > |
10 | 11 | <div> |
11 | 12 | <BasicForm @register="registerForm" /> |
... | ... | @@ -16,13 +17,13 @@ |
16 | 17 | :key="index" |
17 | 18 | > |
18 | 19 | <span style="display: none">{{ item + index }}</span> |
19 | - <span style="position: relative; top: 3.2vh; left: 0.3vw">触发器 {{ index + 1 }}</span> | |
20 | + <span style="position: relative; top: 3.2vh; left: 0.5vw">触发器 {{ index + 1 }}</span> | |
20 | 21 | <div style="display: block"> |
21 | 22 | <AddTriggerForm |
23 | + ref="refTriggerChild" | |
22 | 24 | :editTriggerFather="isUpdate == false ? 1 : item" |
23 | 25 | :newFilterMapFather="isUpdate == false ? 1 : newFilterMap" |
24 | 26 | :deviceInfo="getDeviceInfo" |
25 | - ref="refTriggerChild" | |
26 | 27 | /> |
27 | 28 | </div> |
28 | 29 | <div style="height: 3vh"></div> |
... | ... | @@ -56,13 +57,13 @@ |
56 | 57 | </div> |
57 | 58 | <div style="height: 5vh"></div> |
58 | 59 | <!-- 执行条件 --> |
59 | - <div> | |
60 | + <div class="condition-style"> | |
60 | 61 | <template |
61 | 62 | v-for="(item, index) in isUpdate == false ? addConditionPushData : editConditionPushData" |
62 | 63 | :key="index" |
63 | 64 | > |
64 | 65 | <span style="display: none">{{ item + index }}</span> |
65 | - <span style="position: relative; top: 3.2vh; left: 0.3vw">执行条件 {{ index + 1 }}</span> | |
66 | + <span style="position: relative; top: 3.2vh; left: 0.5vw">执行条件 {{ index + 1 }}</span> | |
66 | 67 | |
67 | 68 | <div> |
68 | 69 | <AddConditiForm |
... | ... | @@ -90,7 +91,7 @@ |
90 | 91 | </div> |
91 | 92 | <div style="display: flex; width: 4vw; height: 4vh"> |
92 | 93 | <Button |
93 | - v-if="addConditionPushData.length != 0 || addConditionPushData.length != 0" | |
94 | + v-if="addConditionPushData.length != 0 || editConditionPushData.length != 0" | |
94 | 95 | style="border-radius: 10px; background-color: rgba(237, 111, 111, 1)" |
95 | 96 | type="default" |
96 | 97 | class="mt-5" |
... | ... | @@ -137,7 +138,7 @@ |
137 | 138 | </div> |
138 | 139 | <div style="display: flex; width: 4vw; height: 4vh"> |
139 | 140 | <Button |
140 | - v-if="addActionPushData.length > 0 || addActionPushData.length > 0" | |
141 | + v-if="addActionPushData.length !== 0 || editActionPushData.length !== 0" | |
141 | 142 | style="border-radius: 10px; background-color: rgba(237, 111, 111, 1)" |
142 | 143 | type="default" |
143 | 144 | class="mt-5" |
... | ... | @@ -182,44 +183,59 @@ |
182 | 183 | emits: ['success', 'register', 'registerForm'], |
183 | 184 | setup(_, { emit }) { |
184 | 185 | const { proxy } = getCurrentInstance(); |
185 | - const lastRefTriggerChildDataArray = ref<[]>([]); | |
186 | 186 | const lastEditRefTriggerChildDataArray = ref<[]>([]); |
187 | 187 | const lastEditRefConditionChildDataArray = ref<[]>([]); |
188 | 188 | const lastEditRefActionChildDataArray = ref<[]>([]); |
189 | + const lastRefTriggerChildDataArray = ref<[]>([]); | |
189 | 190 | const lastRefConditionChildDataArray = ref<[]>([]); |
190 | 191 | const lastRefActionChildDataArray = ref<[]>([]); |
191 | - const lastRefTriggerChildData: any = ref({}); | |
192 | - const lastRefConditionChildData: any = ref({}); | |
193 | - const lastRefActionChildData: any = ref({}); | |
194 | - const refTriggerChildData: any = ref({}); | |
195 | - const refConditionChildData: any = ref({}); | |
196 | - const refActionChildData: any = ref({}); | |
192 | + let refTriggerChildData: any = reactive({}); | |
193 | + let refConditionChildData: any = reactive({}); | |
194 | + let refActionChildData: any = reactive({}); | |
197 | 195 | const addTriggerData = reactive<IAddTrigger>({ |
198 | - id: Date.now() + Math.random() + '', | |
199 | - triggerEvent: '', | |
200 | - deviceId: '', | |
196 | + triggerType: '', | |
197 | + entityId: '', | |
201 | 198 | touchWay: '', |
202 | 199 | attributeChoose: '', |
203 | 200 | compare: '', |
204 | 201 | value: '', |
205 | 202 | }); |
203 | + const editTriggerData = reactive<IAddTrigger>({ | |
204 | + triggerType: '', | |
205 | + entityId: '请选择设备', | |
206 | + touchWay: '请选择触发方式', | |
207 | + attributeChoose: '请选择属性', | |
208 | + compare: '', | |
209 | + value: '', | |
210 | + }); | |
206 | 211 | const addConditionData = reactive<IAddCondition>({ |
207 | - id: Date.now() + Math.random() + '', | |
208 | - status: '', | |
209 | - deviceId: '', | |
212 | + triggerType: '', | |
213 | + entityId: '', | |
210 | 214 | createTime: '', |
211 | 215 | updateTime: '', |
212 | - property: '', | |
216 | + compare: '', | |
217 | + value: '', | |
218 | + }); | |
219 | + const editConditionData = reactive<IAddCondition>({ | |
220 | + entityId: '请选择设备', | |
221 | + createTime: '', | |
222 | + updateTime: '', | |
223 | + triggerType: '', | |
213 | 224 | compare: '', |
214 | 225 | value: '', |
215 | 226 | }); |
216 | 227 | const addActionData = reactive<IAddAction>({ |
217 | - id: Date.now() + Math.random() + '', | |
218 | 228 | outTarget: '', |
219 | - deviceId: '', | |
229 | + entityId: '', | |
220 | 230 | command: '', |
221 | 231 | sceneLinkageId: '', |
222 | 232 | }); |
233 | + const editActionData = reactive<IAddAction>({ | |
234 | + outTarget: '', | |
235 | + entityId: '请选择设备', | |
236 | + command: '请输入执行命令', | |
237 | + sceneLinkageId: '', | |
238 | + }); | |
223 | 239 | const addTriggerPushData = ref<[]>([]); |
224 | 240 | const addConditionPushData = ref<[]>([]); |
225 | 241 | const addActionPushData = ref<[]>([]); |
... | ... | @@ -234,7 +250,7 @@ |
234 | 250 | const getConditionChildData = ref(null); |
235 | 251 | const { createMessage } = useMessage(); |
236 | 252 | const isUpdate = ref(true); |
237 | - const getAllFormData: any = reactive({}); | |
253 | + let getAllFormData: any = reactive({}); | |
238 | 254 | let getValuesFormData: any = reactive({}); |
239 | 255 | const getId = ref(''); |
240 | 256 | const getTenantId = ref(''); |
... | ... | @@ -244,6 +260,26 @@ |
244 | 260 | const newFilterMap = ref<[]>([]); |
245 | 261 | const newConditionFilterMap = ref<[]>([]); |
246 | 262 | const newActionFilterMap = ref<[]>([]); |
263 | + let filterNewConditionArr = []; | |
264 | + let filterNewActionArr = []; | |
265 | + const pushEditArray = []; | |
266 | + const pushEditConditionArray = []; | |
267 | + const pushEditActionArray = []; | |
268 | + let filterArrayTrigger = []; | |
269 | + const filterArrayCondition = ref<[]>([]); | |
270 | + const filterArrayAction = ref<[]>([]); | |
271 | + let filterNewTriggerArr = []; | |
272 | + | |
273 | + let triggersObj = { | |
274 | + triggers: [], | |
275 | + }; | |
276 | + let conditionsObj = { | |
277 | + doConditions: [], | |
278 | + }; | |
279 | + let actionsObj = { | |
280 | + doActions: [], | |
281 | + }; | |
282 | + let optionsItemArray = ref<[]>([]); | |
247 | 283 | |
248 | 284 | const [registerForm, { resetFields, setFieldsValue, validateFields }] = useForm({ |
249 | 285 | labelWidth: 120, |
... | ... | @@ -256,14 +292,47 @@ |
256 | 292 | setDrawerProps({ confirmLoading: false }); |
257 | 293 | isUpdate.value = !!data?.isUpdate; |
258 | 294 | if (!unref(isUpdate)) { |
259 | - editTriggerPushData.value = []; | |
260 | - editTriggerPushData.value.length = 0; | |
261 | 295 | try { |
262 | - setTimeout(() => { | |
263 | - // proxy.$refs.refTriggerChild.resetFieldsValueFunc(); | |
264 | - proxy.$refs.refConditionChild.resetFieldsValueFunc(); | |
265 | - proxy.$refs.refActionChild.resetFieldsValueFunc(); | |
266 | - }, 50); | |
296 | + refTriggerChildData = {}; | |
297 | + refConditionChildData = {}; | |
298 | + refActionChildData = {}; | |
299 | + getAllFormData = {}; | |
300 | + triggersObj = { | |
301 | + triggers: [], | |
302 | + }; | |
303 | + conditionsObj = { | |
304 | + doConditions: [], | |
305 | + }; | |
306 | + actionsObj = { | |
307 | + doActions: [], | |
308 | + }; | |
309 | + filterNewTriggerArr.length = 0; | |
310 | + filterNewConditionArr.length = 0; | |
311 | + lastRefTriggerChildDataArray.value.length = 0; | |
312 | + lastRefConditionChildDataArray.value.length = 0; | |
313 | + lastRefActionChildDataArray.value.length = 0; | |
314 | + editTriggerPushData.value.length = 0; | |
315 | + editConditionPushData.value.length = 0; | |
316 | + editActionPushData.value.length = 0; | |
317 | + addTriggerPushData.value.length = 0; | |
318 | + addConditionPushData.value.length = 0; | |
319 | + addActionPushData.value.length = 0; | |
320 | + handleClose(); | |
321 | + optionsItemArray.value.length = 0; | |
322 | + try { | |
323 | + setTimeout(() => { | |
324 | + proxy.$refs.refTriggerChild.resetFieldsValueFunc(); | |
325 | + proxy.$refs.refTriggerChild.clearSelectDevice(); | |
326 | + proxy.$refs.refConditionChild.resetFieldsValueFunc(); | |
327 | + proxy.$refs.refConditionChild.clearSelectDevice(); | |
328 | + proxy.$refs.refActionChild.resetFieldsValueFunc(); | |
329 | + proxy.$refs.refActionChild.clearSelectDevice(); | |
330 | + clearActionsAllDevice(); | |
331 | + resetActionsAllArrayFunc(); | |
332 | + }, 200); | |
333 | + } catch (e) { | |
334 | + return e; | |
335 | + } | |
267 | 336 | } catch (e) { |
268 | 337 | return e; |
269 | 338 | } |
... | ... | @@ -275,7 +344,9 @@ |
275 | 344 | editTriggerPushData.value = []; |
276 | 345 | editTriggerPushData.value.length = 0; |
277 | 346 | editConditionPushData.value = []; |
347 | + editConditionPushData.value.length = 0; | |
278 | 348 | editActionPushData.value = []; |
349 | + editActionPushData.value.length = 0; | |
279 | 350 | lastEditRefTriggerChildDataArray.value = []; |
280 | 351 | getId.value = data.record.id; |
281 | 352 | getTenantId.value = data.record.tenantId; |
... | ... | @@ -283,14 +354,6 @@ |
283 | 354 | ...data.record, |
284 | 355 | }); |
285 | 356 | editTriggerPushData.value = data.record.triggers; |
286 | - editTriggerPushData.value.forEach((f) => { | |
287 | - if (f?.id.length == 18) { | |
288 | - editTriggerPushData.value.pop(); | |
289 | - if (editTriggerPushData.value.length) { | |
290 | - editTriggerPushData.value.length = editTriggerPushData.value.length; | |
291 | - } | |
292 | - } | |
293 | - }); | |
294 | 357 | editConditionPushData.value = data.record.doConditions; |
295 | 358 | editActionPushData.value = data.record.doActions; |
296 | 359 | const options = await screenLinkPageByDeptIdGetDevice({ |
... | ... | @@ -299,7 +362,7 @@ |
299 | 362 | try { |
300 | 363 | data.record.triggers.forEach((f1) => { |
301 | 364 | options.items?.forEach((f2) => { |
302 | - if (f2.id == f1.deviceId) { | |
365 | + if (f2.id == f1.entityId) { | |
303 | 366 | newFilterMap.value.push({ |
304 | 367 | value: f2.id, |
305 | 368 | label: f2.name, |
... | ... | @@ -310,7 +373,7 @@ |
310 | 373 | |
311 | 374 | data.record.doConditions.forEach((f1) => { |
312 | 375 | options.items?.forEach((f2) => { |
313 | - if (f2.id == f1.deviceId) { | |
376 | + if (f2.id == f1.entityId) { | |
314 | 377 | newConditionFilterMap.value.push({ |
315 | 378 | value: f2.id, |
316 | 379 | label: f2.name, |
... | ... | @@ -320,7 +383,7 @@ |
320 | 383 | }); |
321 | 384 | data.record.doActions.forEach((f1) => { |
322 | 385 | options.items?.forEach((f2) => { |
323 | - if (f2.id == f1.deviceId) { | |
386 | + if (f2.id == f1.entityId) { | |
324 | 387 | newActionFilterMap.value.push({ |
325 | 388 | value: f2.id, |
326 | 389 | label: f2.name, |
... | ... | @@ -332,6 +395,17 @@ |
332 | 395 | } |
333 | 396 | }); |
334 | 397 | const getTitle = computed(() => (!unref(isUpdate) ? '新增场景联动' : '编辑场景联动')); |
398 | + const handleClose = () => { | |
399 | + pushEditArray.length = 0; | |
400 | + lastRefTriggerChildDataArray.value.length = 0; | |
401 | + lastRefTriggerChildDataArray.value = []; | |
402 | + lastRefConditionChildDataArray.value.length = 0; | |
403 | + lastRefActionChildDataArray.value.length = 0; | |
404 | + lastRefActionChildDataArray.value = []; | |
405 | + filterArrayTrigger.length = 0; | |
406 | + filterArrayCondition.value.length = 0; | |
407 | + filterArrayAction.value.length = 0; | |
408 | + }; | |
335 | 409 | |
336 | 410 | const clearAllArrayFunc = () => { |
337 | 411 | unref(addTriggerPushData).length = 0; |
... | ... | @@ -356,16 +430,37 @@ |
356 | 430 | return e; |
357 | 431 | } |
358 | 432 | }; |
359 | - watch(getData, (newV) => { | |
360 | - getDeviceInfo.value = newV; | |
361 | - getDeviceInfo1.value = newV; | |
362 | - getDeviceInfo2.value = newV; | |
433 | + watch(getData, async (newV) => { | |
434 | + // getDeviceInfo.value = newV; | |
435 | + // getDeviceInfo1.value = newV; | |
436 | + // getDeviceInfo2.value = newV; | |
437 | + const options = await screenLinkPageByDeptIdGetDevice({ organizationId: newV }); | |
438 | + options.items.forEach((v) => { | |
439 | + return (v.value = v.id), (v.label = v.name); | |
440 | + }); | |
441 | + optionsItemArray.value = options.items; | |
442 | + updateDeviceIdFunc(optionsItemArray.value); | |
443 | + try { | |
444 | + proxy.$refs.refActionChild.updateFieldDeviceId(optionsItemArray.value); | |
445 | + } catch (e) { | |
446 | + return e; | |
447 | + } | |
363 | 448 | }); |
364 | 449 | |
450 | + const updateDeviceIdFunc = (v) => { | |
451 | + try { | |
452 | + proxy.$refs.refTriggerChild.updateFieldDeviceId(v); | |
453 | + proxy.$refs.refConditionChild.updateFieldDeviceId(v); | |
454 | + proxy.$refs.refActionChild.updateFieldDeviceId(v); | |
455 | + } catch (e) { | |
456 | + return e; | |
457 | + } | |
458 | + }; | |
459 | + | |
365 | 460 | //触发器方法 |
366 | 461 | const refTriggerChildDataFunc = () => { |
367 | 462 | try { |
368 | - refTriggerChildData.value = proxy.$refs.refTriggerChild.getFieldsValueFunc(); | |
463 | + refTriggerChildData = proxy.$refs.refTriggerChild.getFieldsValueFunc(); | |
369 | 464 | } catch (e) { |
370 | 465 | return e; |
371 | 466 | } |
... | ... | @@ -373,7 +468,7 @@ |
373 | 468 | //执行条件方法 |
374 | 469 | const refConditionChildDataFunc = () => { |
375 | 470 | try { |
376 | - refConditionChildData.value = proxy.$refs.refConditionChild.getFieldsValueFunc(); | |
471 | + refConditionChildData = proxy.$refs.refConditionChild.getFieldsValueFunc(); | |
377 | 472 | } catch (e) { |
378 | 473 | return e; |
379 | 474 | } |
... | ... | @@ -381,7 +476,7 @@ |
381 | 476 | //执行动作方法 |
382 | 477 | const refActionChildDataFunc = () => { |
383 | 478 | try { |
384 | - refActionChildData.value = proxy.$refs.refActionChild.getFieldsValueFunc(); | |
479 | + refActionChildData = proxy.$refs.refActionChild.getFieldsValueFunc(); | |
385 | 480 | } catch (e) { |
386 | 481 | return e; |
387 | 482 | } |
... | ... | @@ -394,20 +489,16 @@ |
394 | 489 | refTriggerChildDataFunc(); |
395 | 490 | refConditionChildDataFunc(); |
396 | 491 | refActionChildDataFunc(); |
397 | - lastRefTriggerChildDataArray.value.push(refTriggerChildData.value as never); | |
398 | - lastRefConditionChildDataArray.value.push(refConditionChildData.value as never); | |
399 | - lastRefActionChildDataArray.value.push(refActionChildData.value as never); | |
400 | - //删除第一个 | |
401 | - lastRefTriggerChildDataArray.value.shift(); | |
402 | - lastRefConditionChildDataArray.value.shift(); | |
403 | - lastRefActionChildDataArray.value.shift(); | |
404 | - const triggersObj = { | |
492 | + lastRefTriggerChildDataArray.value.push(refTriggerChildData as never); | |
493 | + lastRefConditionChildDataArray.value.push(refConditionChildData as never); | |
494 | + lastRefActionChildDataArray.value.push(refActionChildData as never); | |
495 | + triggersObj = { | |
405 | 496 | triggers: lastRefTriggerChildDataArray.value, |
406 | 497 | }; |
407 | - const conditionsObj = { | |
498 | + conditionsObj = { | |
408 | 499 | doConditions: lastRefConditionChildDataArray.value, |
409 | 500 | }; |
410 | - const actionsObj = { | |
501 | + actionsObj = { | |
411 | 502 | doActions: lastRefActionChildDataArray.value, |
412 | 503 | }; |
413 | 504 | Object.assign(getAllFormData, triggersObj, conditionsObj, actionsObj); |
... | ... | @@ -415,30 +506,82 @@ |
415 | 506 | refTriggerChildDataFunc(); |
416 | 507 | refConditionChildDataFunc(); |
417 | 508 | refActionChildDataFunc(); |
418 | - lastEditRefTriggerChildDataArray.value.push(refTriggerChildData.value as never); | |
419 | - lastEditRefConditionChildDataArray.value.push(refConditionChildData.value as never); | |
420 | - lastEditRefActionChildDataArray.value.push(refActionChildData.value as never); | |
421 | - lastRefConditionChildDataArray.value.push(refConditionChildData.value as never); | |
422 | - lastRefActionChildDataArray.value.push(refActionChildData.value as never); | |
423 | - const triggersObj = { | |
424 | - triggers: lastEditRefTriggerChildDataArray.value, | |
509 | + pushEditArray.push(refTriggerChildData as never); | |
510 | + pushEditConditionArray.push(refConditionChildData as never); | |
511 | + pushEditActionArray.push(refActionChildData as never); | |
512 | + pushEditArray.forEach((f) => { | |
513 | + editTriggerPushData.value.push(f as never); | |
514 | + }); | |
515 | + pushEditConditionArray.forEach((f) => { | |
516 | + editConditionPushData.value.push(f as never); | |
517 | + }); | |
518 | + pushEditActionArray.forEach((f) => { | |
519 | + editActionPushData.value.push(f as never); | |
520 | + }); | |
521 | + const filterTwoArrayTrigger = editTriggerPushData.value.filter((f) => | |
522 | + f?.hasOwnProperty('id') | |
523 | + ); | |
524 | + | |
525 | + const filterTwoArrayCondition = editConditionPushData.value.filter((f) => | |
526 | + f?.hasOwnProperty('id') | |
527 | + ); | |
528 | + | |
529 | + const filterTwoArrayAction = editActionPushData.value.filter((f) => | |
530 | + f?.hasOwnProperty('id') | |
531 | + ); | |
532 | + | |
533 | + const filterThreeArrayTrigger = editTriggerPushData.value.filter( | |
534 | + (f) => f?.entityId == '' | |
535 | + ); | |
536 | + const filterThreeArrayCondition = editConditionPushData.value.filter( | |
537 | + (f) => f?.entityId == '' | |
538 | + ); | |
539 | + const filterThreeArrayAction = editActionPushData.value.filter((f) => f?.entityId == ''); | |
540 | + const filterFourArrayTrigger = filterThreeArrayTrigger.filter( | |
541 | + (f) => f?.triggerType !== '' | |
542 | + ); | |
543 | + const filterFourArrayCondition = filterThreeArrayCondition.filter( | |
544 | + (f) => f?.triggerType !== '' | |
545 | + ); | |
546 | + | |
547 | + const filterFourArrayAction = filterThreeArrayAction.filter((f) => f?.outTarget !== ''); | |
548 | + | |
549 | + filterFourArrayTrigger.forEach((f) => { | |
550 | + filterTwoArrayTrigger.push(f); | |
551 | + }); | |
552 | + filterFourArrayCondition.forEach((f) => { | |
553 | + filterTwoArrayCondition.push(f); | |
554 | + }); | |
555 | + filterFourArrayAction.forEach((f) => { | |
556 | + filterTwoArrayAction.push(f); | |
557 | + }); | |
558 | + | |
559 | + let editTriggersObj = { | |
560 | + triggers: filterTwoArrayTrigger, | |
425 | 561 | }; |
426 | - const conditionsObj = { | |
427 | - doConditions: lastRefConditionChildDataArray.value, | |
562 | + let editConditionsObj = { | |
563 | + doConditions: filterTwoArrayCondition, | |
428 | 564 | }; |
429 | - const actionsObj = { | |
430 | - doActions: lastRefActionChildDataArray.value, | |
565 | + let editActionsObj = { | |
566 | + doActions: filterTwoArrayAction, | |
431 | 567 | }; |
432 | - Object.assign(getAllFormData, triggersObj, conditionsObj, actionsObj); | |
568 | + Object.assign(getAllFormData, editTriggersObj, editConditionsObj, editActionsObj); | |
433 | 569 | } |
434 | 570 | }; |
435 | 571 | |
436 | 572 | const handleSubmit = async () => { |
437 | 573 | if (!unref(isUpdate)) { |
574 | + let kongObj = true; | |
438 | 575 | getDefaultValue(); |
439 | 576 | getValuesFormData = await validateFields(); |
440 | 577 | if (!getValuesFormData) return; |
441 | 578 | Object.assign(getAllFormData, getValuesFormData); |
579 | + lastRefActionChildDataArray.value.forEach((f) => { | |
580 | + if (Object.keys(f).length == 0) { | |
581 | + kongObj = false; | |
582 | + } | |
583 | + }); | |
584 | + if (!kongObj) return createMessage.error('请填写执行动作'); | |
442 | 585 | await screenLinkPageAddApi(getAllFormData); |
443 | 586 | createMessage.success('场景联动新增成功'); |
444 | 587 | closeDrawer(); |
... | ... | @@ -455,6 +598,8 @@ |
455 | 598 | emit('success'); |
456 | 599 | } |
457 | 600 | }; |
601 | + | |
602 | + //默认添加触发器 | |
458 | 603 | const defaultAddTrigger = () => { |
459 | 604 | if (unref(addTriggerPushData).length == 0) { |
460 | 605 | setTimeout(() => { |
... | ... | @@ -462,19 +607,27 @@ |
462 | 607 | }, 10); |
463 | 608 | } |
464 | 609 | }; |
465 | - | |
466 | 610 | //新增触发器 |
467 | 611 | const addTrigger = () => { |
468 | 612 | if (!unref(isUpdate)) { |
469 | 613 | unref(addTriggerPushData).push(addTriggerData as never); |
470 | 614 | refTriggerChildDataFunc(); |
471 | - lastRefTriggerChildData.value = refTriggerChildData.value; | |
472 | - lastRefTriggerChildDataArray.value.push(lastRefTriggerChildData.value as never); | |
615 | + // refTriggerChildData; | |
616 | + filterNewTriggerArr.push(refTriggerChildData as never); | |
617 | + (lastRefTriggerChildDataArray.value as never[]) = filterNewTriggerArr.filter( | |
618 | + (v) => Object.keys(v).length !== 0 | |
619 | + ); | |
620 | + try { | |
621 | + setTimeout(() => { | |
622 | + proxy.$refs.refTriggerChild.updateFieldDeviceId(optionsItemArray.value); | |
623 | + }, 150); | |
624 | + } catch (e) { | |
625 | + return e; | |
626 | + } | |
473 | 627 | } else { |
474 | - unref(editTriggerPushData).push(addTriggerData as never); | |
475 | 628 | refTriggerChildDataFunc(); |
476 | - lastRefTriggerChildData.value = refTriggerChildData.value; | |
477 | - lastEditRefTriggerChildDataArray.value.push(lastRefTriggerChildData.value as never); | |
629 | + pushEditArray.push(refTriggerChildData as never); | |
630 | + unref(editTriggerPushData).push(addTriggerData as never); | |
478 | 631 | } |
479 | 632 | }; |
480 | 633 | const removeTrigger = () => { |
... | ... | @@ -488,83 +641,108 @@ |
488 | 641 | } else { |
489 | 642 | try { |
490 | 643 | unref(editTriggerPushData).splice(0, 1); |
491 | - lastEditRefTriggerChildDataArray.value.splice(0, 1); | |
644 | + lastEditRefTriggerChildDataArray.value.pop(); | |
492 | 645 | } catch (e) { |
493 | 646 | return e; |
494 | 647 | } |
495 | 648 | } |
496 | 649 | }; |
497 | 650 | |
651 | + //默认添加执行条件 | |
652 | + const defaultAddCondition = () => { | |
653 | + if (unref(addConditionPushData).length == 0) { | |
654 | + addCondition(); | |
655 | + } | |
656 | + }; | |
498 | 657 | //新增执行条件 |
499 | 658 | const addCondition = () => { |
500 | - // if (!unref(isUpdate)) { | |
501 | - // console.log('add'); | |
502 | - // unref(addConditionPushData).push(addConditionData as never); | |
503 | - // refConditionChildDataFunc(); | |
504 | - // lastRefConditionChildData.value = refConditionChildData.value; | |
505 | - // lastRefConditionChildDataArray.value.push(lastRefConditionChildData.value as never); | |
506 | - // } else { | |
507 | - // console.log('edit'); | |
508 | - | |
509 | - // unref(editConditionPushData).push(addConditionData as never); | |
510 | - // console.log(unref(editConditionPushData)); | |
511 | - // refConditionChildDataFunc(); | |
512 | - // lastRefConditionChildData.value = refConditionChildData.value; | |
513 | - // lastEditRefConditionChildDataArray.value.push(lastRefConditionChildData.value as never); | |
514 | - // } | |
515 | - unref(addConditionPushData).push(addConditionData as never); | |
516 | - refConditionChildDataFunc(); | |
517 | - lastRefConditionChildData.value = refConditionChildData.value; | |
518 | - lastRefConditionChildDataArray.value.push(lastRefConditionChildData.value as never); | |
659 | + if (!unref(isUpdate)) { | |
660 | + unref(addConditionPushData).push(addConditionData as never); | |
661 | + refConditionChildDataFunc(); | |
662 | + filterNewConditionArr.push(refConditionChildData as never); | |
663 | + (lastRefConditionChildDataArray.value as never[]) = filterNewConditionArr.filter( | |
664 | + (v) => Object.keys(v).length !== 0 | |
665 | + ); | |
666 | + try { | |
667 | + setTimeout(() => { | |
668 | + proxy.$refs.refConditionChild.updateFieldDeviceId(optionsItemArray.value); | |
669 | + }, 150); | |
670 | + } catch (e) { | |
671 | + return e; | |
672 | + } | |
673 | + } else { | |
674 | + refConditionChildDataFunc(); | |
675 | + pushEditConditionArray.push(refConditionChildData as never); | |
676 | + unref(editConditionPushData).push(addConditionData as never); | |
677 | + } | |
519 | 678 | }; |
520 | 679 | const removeCondition = () => { |
521 | - try { | |
522 | - unref(addConditionPushData).splice(0, 1); | |
523 | - lastRefConditionChildDataArray.value.splice(0, 1); | |
524 | - } catch (e) { | |
525 | - return e; | |
680 | + if (!unref(isUpdate)) { | |
681 | + try { | |
682 | + unref(addConditionPushData).splice(0, 1); | |
683 | + lastRefConditionChildDataArray.value.pop(); | |
684 | + } catch (e) { | |
685 | + return e; | |
686 | + } | |
687 | + } else { | |
688 | + try { | |
689 | + unref(editConditionPushData).splice(0, 1); | |
690 | + lastEditRefConditionChildDataArray.value.pop(); | |
691 | + } catch (e) { | |
692 | + return e; | |
693 | + } | |
526 | 694 | } |
527 | 695 | }; |
528 | 696 | |
529 | - //新增执行动作 | |
697 | + //默认新增执行动作 | |
530 | 698 | const defaultAddAction = () => { |
531 | 699 | if (unref(addActionPushData).length == 0) { |
532 | 700 | addAction(); |
533 | 701 | } |
534 | 702 | }; |
535 | - | |
536 | - const defaultAddCondition = () => { | |
537 | - if (unref(addConditionPushData).length == 0) { | |
538 | - addCondition(); | |
539 | - } | |
540 | - }; | |
703 | + //新增执行动作 | |
541 | 704 | const addAction = () => { |
542 | - // if (!unref(isUpdate)) { | |
543 | - // unref(addActionPushData).push(addActionData as never); | |
544 | - // refActionChildDataFunc(); | |
545 | - // lastRefActionChildData.value = refActionChildData.value; | |
546 | - // lastRefActionChildDataArray.value.push(lastRefActionChildData.value as never); | |
547 | - // } else { | |
548 | - // unref(editActionPushData).push(addActionData as never); | |
549 | - // refActionChildDataFunc(); | |
550 | - // lastRefActionChildData.value = refActionChildData.value; | |
551 | - // lastEditRefActionChildDataArray.value.push(lastRefActionChildData.value as never); | |
552 | - // } | |
553 | - unref(addActionPushData).push(addActionData as never); | |
554 | - refActionChildDataFunc(); | |
555 | - lastRefActionChildData.value = refActionChildData.value; | |
556 | - lastRefActionChildDataArray.value.push(lastRefActionChildData.value as never); | |
705 | + if (!unref(isUpdate)) { | |
706 | + unref(addActionPushData).push(addActionData as never); | |
707 | + refActionChildDataFunc(); | |
708 | + filterNewActionArr.push(refActionChildData as never); | |
709 | + (lastRefActionChildDataArray.value as never[]) = filterNewActionArr.filter( | |
710 | + (v) => Object.keys(v).length !== 0 | |
711 | + ); | |
712 | + try { | |
713 | + setTimeout(() => { | |
714 | + proxy.$refs.refActionChild.updateFieldDeviceId(optionsItemArray.value); | |
715 | + }, 150); | |
716 | + } catch (e) { | |
717 | + return e; | |
718 | + } | |
719 | + } else { | |
720 | + refActionChildDataFunc(); | |
721 | + pushEditActionArray.push(refActionChildData as never); | |
722 | + unref(editActionPushData).push(addActionData as never); | |
723 | + } | |
557 | 724 | }; |
558 | 725 | const removeAction = () => { |
559 | - try { | |
560 | - unref(addActionPushData).splice(0, 1); | |
561 | - lastRefActionChildDataArray.value.splice(0, 1); | |
562 | - } catch (e) { | |
563 | - return e; | |
726 | + if (!unref(isUpdate)) { | |
727 | + try { | |
728 | + unref(addActionPushData).splice(0, 1); | |
729 | + lastRefActionChildDataArray.value.pop(); | |
730 | + } catch (e) { | |
731 | + return e; | |
732 | + } | |
733 | + } else { | |
734 | + try { | |
735 | + unref(editActionPushData).splice(0, 1); | |
736 | + lastEditRefActionChildDataArray.value.pop(); | |
737 | + } catch (e) { | |
738 | + return e; | |
739 | + } | |
564 | 740 | } |
565 | 741 | }; |
566 | 742 | |
567 | 743 | return { |
744 | + updateDeviceIdFunc, | |
745 | + handleClose, | |
568 | 746 | defaultAddTrigger, |
569 | 747 | defaultAddCondition, |
570 | 748 | newFilterMap, |
... | ... | @@ -605,3 +783,11 @@ |
605 | 783 | }, |
606 | 784 | }); |
607 | 785 | </script> |
786 | + | |
787 | +<style lang="less" scoped> | |
788 | + .condition-style { | |
789 | + :deep .ant-calendar-picker { | |
790 | + width: 24.9vw !important; | |
791 | + } | |
792 | + } | |
793 | +</style> | ... | ... |
... | ... | @@ -7,7 +7,9 @@ |
7 | 7 | > |
8 | 8 | <template #toolbar> |
9 | 9 | <a-button type="primary" @click="handleAdd"> 新增租户配置 </a-button> |
10 | - <a-button color="error" @click="handleMutilteDelete"> 批量删除 </a-button> | |
10 | + <a-button color="error" :disabled="disabled" @click="handleMutilteDelete"> | |
11 | + 批量删除 | |
12 | + </a-button> | |
11 | 13 | </template> |
12 | 14 | <template #action="{ record }"> |
13 | 15 | <TableAction |
... | ... | @@ -38,7 +40,7 @@ |
38 | 40 | </div> |
39 | 41 | </template> |
40 | 42 | <script lang="ts"> |
41 | - import { defineComponent, reactive } from 'vue'; | |
43 | + import { defineComponent, reactive, ref } from 'vue'; | |
42 | 44 | import { BasicTable, useTable, TableAction } from '/@/components/Table'; |
43 | 45 | import { useDrawer } from '/@/components/Drawer'; |
44 | 46 | import TenantSettingDrawer from './useDrawer.vue'; |
... | ... | @@ -50,6 +52,7 @@ |
50 | 52 | name: 'Index', |
51 | 53 | components: { BasicTable, TenantSettingDrawer, TableAction }, |
52 | 54 | setup() { |
55 | + const disabled = ref(true); | |
53 | 56 | let echoEditData = reactive({}); |
54 | 57 | let selectedRowKeys: Array<string> = []; |
55 | 58 | const [registerDrawer, { openDrawer }] = useDrawer(); |
... | ... | @@ -97,6 +100,11 @@ |
97 | 100 | } |
98 | 101 | const useSelectionChange = () => { |
99 | 102 | selectedRowKeys = getSelectRowKeys(); |
103 | + if (selectedRowKeys.length !== 0) { | |
104 | + disabled.value = false; | |
105 | + } else { | |
106 | + disabled.value = true; | |
107 | + } | |
100 | 108 | }; |
101 | 109 | const handleMutilteDelete = async () => { |
102 | 110 | await deleteTenantProfileApi(selectedRowKeys); |
... | ... | @@ -107,6 +115,7 @@ |
107 | 115 | reload(); |
108 | 116 | } |
109 | 117 | return { |
118 | + disabled, | |
110 | 119 | echoEditData, |
111 | 120 | registerTable, |
112 | 121 | registerDrawer, | ... | ... |