Commit e7a88598f1b5c893fa851dcae4f346857dd2ba9c

Authored by xp.Huang
2 parents d258fb30 52675b25

Merge branch 'ft-dev' into 'main'

style:修改设备配置上传图片样式,feat:新增数据转换名字重复功能,style:修改数据转换样式问题和按钮样式问题,fix:修复数据转换点击新增时数据...

See merge request huang/yun-teng-iot-front!122
@@ -40,10 +40,10 @@ export const deleteConvertApi = (ids: string[]) => { @@ -40,10 +40,10 @@ export const deleteConvertApi = (ids: string[]) => {
40 }; 40 };
41 41
42 // 查询配置名称是否存在 42 // 查询配置名称是否存在
43 -export const isExistDataManagerNameApi = (params?: TDataManagerModelQuery) => {  
44 - return defHttp.get({ 43 +export const isExistDataManagerNameApi = (check: {}) => {
  44 + return defHttp.post({
45 url: DataManagerApi.DATA_MANAGER_CONVERT_POST_CHECK_NAME, 45 url: DataManagerApi.DATA_MANAGER_CONVERT_POST_CHECK_NAME,
46 - params, 46 + data: check,
47 }); 47 });
48 }; 48 };
49 49
@@ -57,6 +57,7 @@ @@ -57,6 +57,7 @@
57 }); 57 });
58 const getTypeObj = reactive({ 58 const getTypeObj = reactive({
59 type: '', 59 type: '',
  60 + remark: '',
60 }); 61 });
61 const additionalInfoV = { 62 const additionalInfoV = {
62 additionalInfo: { 63 additionalInfo: {
@@ -150,24 +151,28 @@ @@ -150,24 +151,28 @@
150 getSonFormValue.value = await proxy.$refs.refTransferConfigParams.getSonValueDataFunc(); 151 getSonFormValue.value = await proxy.$refs.refTransferConfigParams.getSonValueDataFunc();
151 if (getModeSonFormValue.value?.type == 'org.thingsboard.rule.engine.kafka.TbKafkaNode') { 152 if (getModeSonFormValue.value?.type == 'org.thingsboard.rule.engine.kafka.TbKafkaNode') {
152 getTypeObj.type = 'org.thingsboard.rule.engine.kafka.TbKafkaNode'; 153 getTypeObj.type = 'org.thingsboard.rule.engine.kafka.TbKafkaNode';
  154 + getTypeObj.remark = getModeSonFormValue.value.remark;
153 getNameObj.name = getSonFormValue.value?.configuration?.name; 155 getNameObj.name = getSonFormValue.value?.configuration?.name;
154 commonFunc(); 156 commonFunc();
155 } else if ( 157 } else if (
156 getModeSonFormValue.value?.type == 'org.thingsboard.rule.engine.mqtt.TbMqttNode' 158 getModeSonFormValue.value?.type == 'org.thingsboard.rule.engine.mqtt.TbMqttNode'
157 ) { 159 ) {
158 getTypeObj.type = 'org.thingsboard.rule.engine.mqtt.TbMqttNode'; 160 getTypeObj.type = 'org.thingsboard.rule.engine.mqtt.TbMqttNode';
  161 + getTypeObj.remark = getModeSonFormValue.value.remark;
159 getNameObj.name = getSonFormValue.value?.configuration?.name; 162 getNameObj.name = getSonFormValue.value?.configuration?.name;
160 commonFunc(); 163 commonFunc();
161 } else if ( 164 } else if (
162 getModeSonFormValue.value?.type == 'org.thingsboard.rule.engine.rabbitmq.TbRabbitMqNode' 165 getModeSonFormValue.value?.type == 'org.thingsboard.rule.engine.rabbitmq.TbRabbitMqNode'
163 ) { 166 ) {
164 getTypeObj.type = 'org.thingsboard.rule.engine.rabbitmq.TbRabbitMqNode'; 167 getTypeObj.type = 'org.thingsboard.rule.engine.rabbitmq.TbRabbitMqNode';
  168 + getTypeObj.remark = getModeSonFormValue.value.remark;
165 getNameObj.name = getSonFormValue.value?.configuration?.name; 169 getNameObj.name = getSonFormValue.value?.configuration?.name;
166 commonFunc(); 170 commonFunc();
167 } else if ( 171 } else if (
168 getModeSonFormValue.value?.type == 'org.thingsboard.rule.engine.rest.TbRestApiCallNode' 172 getModeSonFormValue.value?.type == 'org.thingsboard.rule.engine.rest.TbRestApiCallNode'
169 ) { 173 ) {
170 getTypeObj.type = 'org.thingsboard.rule.engine.rest.TbRestApiCallNode'; 174 getTypeObj.type = 'org.thingsboard.rule.engine.rest.TbRestApiCallNode';
  175 + getTypeObj.remark = getModeSonFormValue.value.remark;
171 getNameObj.name = getSonFormValue.value?.configuration?.name; 176 getNameObj.name = getSonFormValue.value?.configuration?.name;
172 commonFunc(); 177 commonFunc();
173 } 178 }
@@ -192,12 +197,14 @@ @@ -192,12 +197,14 @@
192 await postAddConvertApi(allPostForm); 197 await postAddConvertApi(allPostForm);
193 createMessage.success('数据转换新增成功'); 198 createMessage.success('数据转换新增成功');
194 emit('success'); 199 emit('success');
  200 + defineClearFunc();
195 closeModal(); 201 closeModal();
196 } else { 202 } else {
197 await addOrEditFunc(); 203 await addOrEditFunc();
198 await postAddConvertApi(allPostForm); 204 await postAddConvertApi(allPostForm);
199 createMessage.success('数据转换编辑成功'); 205 createMessage.success('数据转换编辑成功');
200 emit('success'); 206 emit('success');
  207 + defineClearFunc();
201 closeModal(); 208 closeModal();
202 } 209 }
203 }; 210 };
@@ -24,12 +24,12 @@ export const columns: BasicColumn[] = [ @@ -24,12 +24,12 @@ export const columns: BasicColumn[] = [
24 : 'Api'; 24 : 'Api';
25 const color = 25 const color =
26 enable == 'KafKa' 26 enable == 'KafKa'
27 - ? '#0960cb' 27 + ? '#0099FF'
28 : enable == 'MQTT' 28 : enable == 'MQTT'
29 - ? '#ed6f6f' 29 + ? '#7C7CC9'
30 : enable == 'RabbitMq' 30 : enable == 'RabbitMq'
31 - ? '#efbd47'  
32 - : '#55d187'; 31 + ? '#E8A15E'
  32 + : '#81B1AB';
33 const text = 33 const text =
34 enable == 'KafKa' 34 enable == 'KafKa'
35 ? 'KafKa' 35 ? 'KafKa'
@@ -58,14 +58,14 @@ export const columns: BasicColumn[] = [ @@ -58,14 +58,14 @@ export const columns: BasicColumn[] = [
58 customRender: ({ record }) => { 58 customRender: ({ record }) => {
59 const status = record.status; 59 const status = record.status;
60 const enable = ~~status === 1; 60 const enable = ~~status === 1;
61 - const color = enable ? '#55d187' : '#efbd47'; 61 + const color = enable ? '#2aae67' : '#eb846f';
62 const text = enable ? '启用' : '禁用'; 62 const text = enable ? '启用' : '禁用';
63 return h(Tag, { color: color }, () => text); 63 return h(Tag, { color: color }, () => text);
64 }, 64 },
65 }, 65 },
66 { 66 {
67 title: '描述', 67 title: '描述',
68 - dataIndex: 'configuration.description', 68 + dataIndex: 'remark',
69 width: 200, 69 width: 200,
70 }, 70 },
71 { 71 {
@@ -80,7 +80,7 @@ export const searchFormSchema: FormSchema[] = [ @@ -80,7 +80,7 @@ export const searchFormSchema: FormSchema[] = [
80 field: 'name', 80 field: 'name',
81 label: '名称', 81 label: '名称',
82 component: 'Input', 82 component: 'Input',
83 - colProps: { span: 8 }, 83 + colProps: { span: 6 },
84 componentProps: { 84 componentProps: {
85 maxLength: 36, 85 maxLength: 36,
86 placeholder: '请输入名称', 86 placeholder: '请输入名称',
1 import { FormSchema } from '/@/components/Form'; 1 import { FormSchema } from '/@/components/Form';
2 import { findDictItemByCode } from '/@/api/system/dict'; 2 import { findDictItemByCode } from '/@/api/system/dict';
  3 +import { isExistDataManagerNameApi } from '/@/api/datamanager/dataManagerApi';
  4 +import { ref } from 'vue';
  5 +
  6 +const typeValue = ref('');
3 7
4 export enum CredentialsEnum { 8 export enum CredentialsEnum {
5 IS_ANONYMOUS = 'anonymous', 9 IS_ANONYMOUS = 'anonymous',
@@ -23,13 +27,28 @@ export const modeForm: FormSchema[] = [ @@ -23,13 +27,28 @@ export const modeForm: FormSchema[] = [
23 colProps: { 27 colProps: {
24 span: 13, 28 span: 13,
25 }, 29 },
  30 + componentProps({}) {
  31 + return {
  32 + api: findDictItemByCode,
  33 + params: {
  34 + dictCode: 'convert_data_to',
  35 + },
  36 + labelField: 'itemText',
  37 + valueField: 'itemValue',
  38 + onChange(value) {
  39 + typeValue.value = value;
  40 + },
  41 + };
  42 + },
  43 + },
  44 + {
  45 + field: 'remark',
  46 + label: '描述',
  47 + colProps: { span: 13 },
  48 + component: 'Input',
26 componentProps: { 49 componentProps: {
27 - api: findDictItemByCode,  
28 - params: {  
29 - dictCode: 'convert_data_to',  
30 - },  
31 - labelField: 'itemText',  
32 - valueField: 'itemValue', 50 + maxLength: 255,
  51 + placeholder: '请输入描述',
33 }, 52 },
34 }, 53 },
35 ]; 54 ];
@@ -95,6 +114,32 @@ export const modeKafkaForm: FormSchema[] = [ @@ -95,6 +114,32 @@ export const modeKafkaForm: FormSchema[] = [
95 maxLength: 255, 114 maxLength: 255,
96 placeholder: '请输入名称', 115 placeholder: '请输入名称',
97 }, 116 },
  117 + dynamicRules: ({ values }) => {
  118 + return [
  119 + {
  120 + required: true,
  121 + validator(_, value) {
  122 + return new Promise((resolve, reject) => {
  123 + if (value == '') {
  124 + reject('请输入名称');
  125 + } else {
  126 + if (values.name != undefined) {
  127 + isExistDataManagerNameApi({ name: value, type: typeValue.value }).then((data) => {
  128 + if (data == true) {
  129 + reject('名称已存在');
  130 + } else {
  131 + resolve();
  132 + }
  133 + });
  134 + } else {
  135 + resolve();
  136 + }
  137 + }
  138 + });
  139 + },
  140 + },
  141 + ];
  142 + },
98 }, 143 },
99 { 144 {
100 field: 'topicPattern', 145 field: 'topicPattern',
@@ -264,6 +309,32 @@ export const modeMqttForm: FormSchema[] = [ @@ -264,6 +309,32 @@ export const modeMqttForm: FormSchema[] = [
264 maxLength: 255, 309 maxLength: 255,
265 placeholder: '请输入名称', 310 placeholder: '请输入名称',
266 }, 311 },
  312 + dynamicRules: ({ values }) => {
  313 + return [
  314 + {
  315 + required: true,
  316 + validator(_, value) {
  317 + return new Promise((resolve, reject) => {
  318 + if (value == '') {
  319 + reject('请输入名称');
  320 + } else {
  321 + if (values.name != undefined) {
  322 + isExistDataManagerNameApi({ name: value, type: typeValue.value }).then((data) => {
  323 + if (data == true) {
  324 + reject('名称已存在');
  325 + } else {
  326 + resolve();
  327 + }
  328 + });
  329 + } else {
  330 + resolve();
  331 + }
  332 + }
  333 + });
  334 + },
  335 + },
  336 + ];
  337 + },
267 }, 338 },
268 { 339 {
269 field: 'topicPattern', 340 field: 'topicPattern',
@@ -431,6 +502,32 @@ export const modeRabbitMqForm: FormSchema[] = [ @@ -431,6 +502,32 @@ export const modeRabbitMqForm: FormSchema[] = [
431 maxLength: 255, 502 maxLength: 255,
432 placeholder: '请输入名称', 503 placeholder: '请输入名称',
433 }, 504 },
  505 + dynamicRules: ({ values }) => {
  506 + return [
  507 + {
  508 + required: true,
  509 + validator(_, value) {
  510 + return new Promise((resolve, reject) => {
  511 + if (value == '') {
  512 + reject('请输入名称');
  513 + } else {
  514 + if (values.name != undefined) {
  515 + isExistDataManagerNameApi({ name: value, type: typeValue.value }).then((data) => {
  516 + if (data == true) {
  517 + reject('名称已存在');
  518 + } else {
  519 + resolve();
  520 + }
  521 + });
  522 + } else {
  523 + resolve();
  524 + }
  525 + }
  526 + });
  527 + },
  528 + },
  529 + ];
  530 + },
434 }, 531 },
435 { 532 {
436 field: 'exchangeNamePattern', 533 field: 'exchangeNamePattern',
@@ -586,6 +683,32 @@ export const modeApiForm: FormSchema[] = [ @@ -586,6 +683,32 @@ export const modeApiForm: FormSchema[] = [
586 maxLength: 255, 683 maxLength: 255,
587 placeholder: '请输入名称', 684 placeholder: '请输入名称',
588 }, 685 },
  686 + dynamicRules: ({ values }) => {
  687 + return [
  688 + {
  689 + required: true,
  690 + validator(_, value) {
  691 + return new Promise((resolve, reject) => {
  692 + if (value == '') {
  693 + reject('请输入名称');
  694 + } else {
  695 + if (values.name != undefined) {
  696 + isExistDataManagerNameApi({ name: value, type: typeValue.value }).then((data) => {
  697 + if (data == true) {
  698 + reject('名称已存在');
  699 + } else {
  700 + resolve();
  701 + }
  702 + });
  703 + } else {
  704 + resolve();
  705 + }
  706 + }
  707 + });
  708 + },
  709 + },
  710 + ];
  711 + },
589 }, 712 },
590 { 713 {
591 field: 'restEndpointUrlPattern', 714 field: 'restEndpointUrlPattern',
@@ -30,7 +30,7 @@ @@ -30,7 +30,7 @@
30 width: 2.9vw; 30 width: 2.9vw;
31 height: 3.3vh; 31 height: 3.3vh;
32 background-color: #0960bd; 32 background-color: #0960bd;
33 - border-radius: 1px; 33 + border-radius: 2px;
34 cursor: pointer; 34 cursor: pointer;
35 text-align: center; 35 text-align: center;
36 line-height: 3.1vh; 36 line-height: 3.1vh;
@@ -44,7 +44,7 @@ @@ -44,7 +44,7 @@
44 height: 3.3vh; 44 height: 3.3vh;
45 margin-left: 1vw; 45 margin-left: 1vw;
46 background-color: #ed6f6f; 46 background-color: #ed6f6f;
47 - border-radius: 1px; 47 + border-radius: 2px;
48 cursor: pointer; 48 cursor: pointer;
49 text-align: center; 49 text-align: center;
50 line-height: 3.1vh; 50 line-height: 3.1vh;
@@ -59,60 +59,66 @@ @@ -59,60 +59,66 @@
59 </template> 59 </template>
60 <template #uploadAdd1="{ field }"> 60 <template #uploadAdd1="{ field }">
61 <span style="display: none">{{ field }}</span> 61 <span style="display: none">{{ field }}</span>
62 - <UploadDragger  
63 - v-model:fileList="fileList"  
64 - name="file"  
65 - :multiple="true"  
66 - action="https://www.mocky.io/v2/5cc8019d300000980a055e76"  
67 - @change="handleChange"  
68 - >  
69 - <p class="ant-upload-drag-icon">  
70 - <InboxOutlined />  
71 - </p>  
72 - <p class="ant-upload-text">Click or drag file to this area to upload</p>  
73 - <p class="ant-upload-hint">  
74 - Support for a single or bulk upload. Strictly prohibit from uploading company data or  
75 - other band files  
76 - </p>  
77 - </UploadDragger> 62 + <Upload>
  63 + <UploadDragger
  64 + v-model:fileList="fileList"
  65 + name="file"
  66 + :multiple="true"
  67 + action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
  68 + @change="handleChange"
  69 + >
  70 + <p class="ant-upload-drag-icon">
  71 + <InboxOutlined />
  72 + </p>
  73 + <p class="ant-upload-text">Click or drag file to this area to upload</p>
  74 + <p class="ant-upload-hint">
  75 + Support for a single or bulk upload. Strictly prohibit from uploading company data
  76 + or other band files
  77 + </p>
  78 + </UploadDragger>
  79 + </Upload>
78 </template> 80 </template>
79 <template #uploadAdd2="{ field }"> 81 <template #uploadAdd2="{ field }">
80 <span style="display: none">{{ field }}</span> 82 <span style="display: none">{{ field }}</span>
81 - <UploadDragger  
82 - v-model:fileList="fileList"  
83 - name="file"  
84 - :multiple="true"  
85 - action="https://www.mocky.io/v2/5cc8019d300000980a055e76"  
86 - @change="handleChange"  
87 - >  
88 - <p class="ant-upload-drag-icon">  
89 - <InboxOutlined />  
90 - </p>  
91 - <p class="ant-upload-text">Click or drag file to this area to upload</p>  
92 - <p class="ant-upload-hint">  
93 - Support for a single or bulk upload. Strictly prohibit from uploading company data or  
94 - other band files  
95 - </p>  
96 - </UploadDragger> 83 + <Upload>
  84 + <UploadDragger
  85 + v-model:fileList="fileList"
  86 + name="file"
  87 + :multiple="true"
  88 + action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
  89 + @change="handleChange"
  90 + >
  91 + <p class="ant-upload-drag-icon">
  92 + <InboxOutlined />
  93 + </p>
  94 + <p class="ant-upload-text">Click or drag file to this area to upload</p>
  95 + <p class="ant-upload-hint">
  96 + Support for a single or bulk upload. Strictly prohibit from uploading company data
  97 + or other band files
  98 + </p>
  99 + </UploadDragger>
  100 + </Upload>
97 </template> 101 </template>
98 <template #uploadAdd3="{ field }"> 102 <template #uploadAdd3="{ field }">
99 <span style="display: none">{{ field }}</span> 103 <span style="display: none">{{ field }}</span>
100 - <UploadDragger  
101 - v-model:fileList="fileList"  
102 - name="file"  
103 - :multiple="true"  
104 - action="https://www.mocky.io/v2/5cc8019d300000980a055e76"  
105 - @change="handleChange"  
106 - >  
107 - <p class="ant-upload-drag-icon">  
108 - <InboxOutlined />  
109 - </p>  
110 - <p class="ant-upload-text">Click or drag file to this area to upload</p>  
111 - <p class="ant-upload-hint">  
112 - Support for a single or bulk upload. Strictly prohibit from uploading company data or  
113 - other band files  
114 - </p>  
115 - </UploadDragger> 104 + <Upload>
  105 + <UploadDragger
  106 + v-model:fileList="fileList"
  107 + name="file"
  108 + :multiple="true"
  109 + action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
  110 + @change="handleChange"
  111 + >
  112 + <p class="ant-upload-drag-icon">
  113 + <InboxOutlined />
  114 + </p>
  115 + <p class="ant-upload-text">Click or drag file to this area to upload</p>
  116 + <p class="ant-upload-hint">
  117 + Support for a single or bulk upload. Strictly prohibit from uploading company data
  118 + or other band files
  119 + </p>
  120 + </UploadDragger>
  121 + </Upload>
116 </template> 122 </template>
117 </BasicForm> 123 </BasicForm>
118 </div> 124 </div>
@@ -136,8 +142,8 @@ @@ -136,8 +142,8 @@
136 [Descriptions.name]: Descriptions, 142 [Descriptions.name]: Descriptions,
137 [Descriptions.Item.name]: Descriptions.Item, 143 [Descriptions.Item.name]: Descriptions.Item,
138 InboxOutlined, 144 InboxOutlined,
139 -  
140 - [Upload.UploadDragger]: Upload.UploadDragger, 145 + Upload: Upload,
  146 + UploadDragger: Upload.UploadDragger,
141 }, 147 },
142 emits: ['next', 'prev', 'register'], 148 emits: ['next', 'prev', 'register'],
143 setup(_, { emit }) { 149 setup(_, { emit }) {
@@ -280,7 +286,7 @@ @@ -280,7 +286,7 @@
280 position: absolute; 286 position: absolute;
281 right: 1vw; 287 right: 1vw;
282 background-color: #0960bd; 288 background-color: #0960bd;
283 - border-radius: 1px; 289 + border-radius: 2px;
284 span { 290 span {
285 color: white; 291 color: white;
286 } 292 }
@@ -32,7 +32,7 @@ @@ -32,7 +32,7 @@
32 width: 2.9vw; 32 width: 2.9vw;
33 height: 3.3vh; 33 height: 3.3vh;
34 background-color: #0960bd; 34 background-color: #0960bd;
35 - border-radius: 1px; 35 + border-radius: 2px;
36 cursor: pointer; 36 cursor: pointer;
37 text-align: center; 37 text-align: center;
38 line-height: 3.1vh; 38 line-height: 3.1vh;
@@ -46,7 +46,7 @@ @@ -46,7 +46,7 @@
46 height: 3.3vh; 46 height: 3.3vh;
47 margin-left: 1vw; 47 margin-left: 1vw;
48 background-color: #ed6f6f; 48 background-color: #ed6f6f;
49 - border-radius: 1px; 49 + border-radius: 2px;
50 cursor: pointer; 50 cursor: pointer;
51 text-align: center; 51 text-align: center;
52 line-height: 3.1vh; 52 line-height: 3.1vh;
@@ -67,7 +67,7 @@ @@ -67,7 +67,7 @@
67 margin-left: 22vw; 67 margin-left: 22vw;
68 margin-top: 2vh; 68 margin-top: 2vh;
69 background-color: #0960bd; 69 background-color: #0960bd;
70 - border-radius: 1px; 70 + border-radius: 2px;
71 cursor: pointer; 71 cursor: pointer;
72 text-align: center; 72 text-align: center;
73 line-height: 3.1vh; 73 line-height: 3.1vh;
@@ -4,60 +4,66 @@ @@ -4,60 +4,66 @@
4 <BasicForm :showSubmitButton="false" @register="register"> 4 <BasicForm :showSubmitButton="false" @register="register">
5 <template #uploadAdd1="{ field }"> 5 <template #uploadAdd1="{ field }">
6 <span style="display: none">{{ field }}</span> 6 <span style="display: none">{{ field }}</span>
7 - <UploadDragger  
8 - v-model:fileList="fileList"  
9 - name="file"  
10 - :multiple="true"  
11 - action="https://www.mocky.io/v2/5cc8019d300000980a055e76"  
12 - @change="handleChange"  
13 - >  
14 - <p class="ant-upload-drag-icon">  
15 - <InboxOutlined />  
16 - </p>  
17 - <p class="ant-upload-text">Click or drag file to this area to upload</p>  
18 - <p class="ant-upload-hint">  
19 - Support for a single or bulk upload. Strictly prohibit from uploading company data or  
20 - other band files  
21 - </p>  
22 - </UploadDragger> 7 + <Upload>
  8 + <UploadDragger
  9 + v-model:fileList="fileList"
  10 + name="file"
  11 + :multiple="true"
  12 + action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
  13 + @change="handleChange"
  14 + >
  15 + <p class="ant-upload-drag-icon">
  16 + <InboxOutlined />
  17 + </p>
  18 + <p class="ant-upload-text">Click or drag file to this area to upload</p>
  19 + <p class="ant-upload-hint">
  20 + Support for a single or bulk upload. Strictly prohibit from uploading company data
  21 + or other band files
  22 + </p>
  23 + </UploadDragger>
  24 + </Upload>
23 </template> 25 </template>
24 <template #uploadAdd2="{ field }"> 26 <template #uploadAdd2="{ field }">
25 <span style="display: none">{{ field }}</span> 27 <span style="display: none">{{ field }}</span>
26 - <UploadDragger  
27 - v-model:fileList="fileList"  
28 - name="file"  
29 - :multiple="true"  
30 - action="https://www.mocky.io/v2/5cc8019d300000980a055e76"  
31 - @change="handleChange"  
32 - >  
33 - <p class="ant-upload-drag-icon">  
34 - <InboxOutlined />  
35 - </p>  
36 - <p class="ant-upload-text">Click or drag file to this area to upload</p>  
37 - <p class="ant-upload-hint">  
38 - Support for a single or bulk upload. Strictly prohibit from uploading company data or  
39 - other band files  
40 - </p>  
41 - </UploadDragger> 28 + <Upload>
  29 + <UploadDragger
  30 + v-model:fileList="fileList"
  31 + name="file"
  32 + :multiple="true"
  33 + action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
  34 + @change="handleChange"
  35 + >
  36 + <p class="ant-upload-drag-icon">
  37 + <InboxOutlined />
  38 + </p>
  39 + <p class="ant-upload-text">Click or drag file to this area to upload</p>
  40 + <p class="ant-upload-hint">
  41 + Support for a single or bulk upload. Strictly prohibit from uploading company data
  42 + or other band files
  43 + </p>
  44 + </UploadDragger>
  45 + </Upload>
42 </template> 46 </template>
43 <template #uploadAdd3="{ field }"> 47 <template #uploadAdd3="{ field }">
44 <span style="display: none">{{ field }}</span> 48 <span style="display: none">{{ field }}</span>
45 - <UploadDragger  
46 - v-model:fileList="fileList"  
47 - name="file"  
48 - :multiple="true"  
49 - action="https://www.mocky.io/v2/5cc8019d300000980a055e76"  
50 - @change="handleChange"  
51 - >  
52 - <p class="ant-upload-drag-icon">  
53 - <InboxOutlined />  
54 - </p>  
55 - <p class="ant-upload-text">Click or drag file to this area to upload</p>  
56 - <p class="ant-upload-hint">  
57 - Support for a single or bulk upload. Strictly prohibit from uploading company data or  
58 - other band files  
59 - </p>  
60 - </UploadDragger> 49 + <Upload>
  50 + <UploadDragger
  51 + v-model:fileList="fileList"
  52 + name="file"
  53 + :multiple="true"
  54 + action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
  55 + @change="handleChange"
  56 + >
  57 + <p class="ant-upload-drag-icon">
  58 + <InboxOutlined />
  59 + </p>
  60 + <p class="ant-upload-text">Click or drag file to this area to upload</p>
  61 + <p class="ant-upload-hint">
  62 + Support for a single or bulk upload. Strictly prohibit from uploading company data
  63 + or other band files
  64 + </p>
  65 + </UploadDragger>
  66 + </Upload>
61 </template> 67 </template>
62 </BasicForm> 68 </BasicForm>
63 </div> 69 </div>
@@ -78,8 +84,8 @@ @@ -78,8 +84,8 @@
78 [Descriptions.name]: Descriptions, 84 [Descriptions.name]: Descriptions,
79 [Descriptions.Item.name]: Descriptions.Item, 85 [Descriptions.Item.name]: Descriptions.Item,
80 InboxOutlined, 86 InboxOutlined,
81 -  
82 - [Upload.UploadDragger]: Upload.UploadDragger, 87 + Upload: Upload,
  88 + UploadDragger: Upload.UploadDragger,
83 }, 89 },
84 emits: ['next', 'prev', 'register'], 90 emits: ['next', 'prev', 'register'],
85 setup(_, { emit }) { 91 setup(_, { emit }) {
@@ -161,7 +167,7 @@ @@ -161,7 +167,7 @@
161 position: absolute; 167 position: absolute;
162 right: 1vw; 168 right: 1vw;
163 background-color: #0960bd; 169 background-color: #0960bd;
164 - border-radius: 1px; 170 + border-radius: 2px;
165 span { 171 span {
166 color: white; 172 color: white;
167 } 173 }
@@ -209,7 +209,7 @@ @@ -209,7 +209,7 @@
209 position: absolute; 209 position: absolute;
210 right: 1vw; 210 right: 1vw;
211 background-color: #0960bd; 211 background-color: #0960bd;
212 - border-radius: 1px; 212 + border-radius: 2px;
213 span { 213 span {
214 color: white; 214 color: white;
215 } 215 }
@@ -79,7 +79,7 @@ @@ -79,7 +79,7 @@
79 right: 8.6vw; 79 right: 8.6vw;
80 top: 6vh; 80 top: 6vh;
81 background-color: #0960bd; 81 background-color: #0960bd;
82 - border-radius: 1px; 82 + border-radius: 2px;
83 span { 83 span {
84 color: white; 84 color: white;
85 } 85 }
@@ -80,7 +80,6 @@ @@ -80,7 +80,6 @@
80 return getTransferConfigKafkaValue.value; 80 return getTransferConfigKafkaValue.value;
81 }; 81 };
82 const editSonValueDataFunc = (v) => { 82 const editSonValueDataFunc = (v) => {
83 - console.log(v.type);  
84 try { 83 try {
85 if (v.type == 'org.thingsboard.rule.engine.kafka.TbKafkaNode') { 84 if (v.type == 'org.thingsboard.rule.engine.kafka.TbKafkaNode') {
86 isWhereComp.value = v.type; 85 isWhereComp.value = v.type;
@@ -11,26 +11,23 @@ @@ -11,26 +11,23 @@
11 <a-button 11 <a-button
12 :disabled="disabledStatus1" 12 :disabled="disabledStatus1"
13 @click="handleDelete" 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 </a-button> 17 </a-button>
19 <a-button 18 <a-button
20 :disabled="disabledStatus2" 19 :disabled="disabledStatus2"
21 @click="handleMutiuteDisable" 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 </a-button> 24 </a-button>
27 <a-button 25 <a-button
28 :disabled="disabledStatus3" 26 :disabled="disabledStatus3"
29 @click="handleMutiuteEnable" 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 </a-button> 31 </a-button>
35 </template> 32 </template>
36 <template #action="{ record }"> 33 <template #action="{ record }">
@@ -71,8 +68,7 @@ @@ -71,8 +68,7 @@
71 }, 68 },
72 { 69 {
73 label: '禁用', 70 label: '禁用',
74 - icon: 'ant-design:close-outlined',  
75 - color: 'warning', 71 + icon: 'ant-design:close-circle-outlined',
76 popConfirm: { 72 popConfirm: {
77 title: '是否禁用?', 73 title: '是否禁用?',
78 confirm: handleDisable.bind(null, record), 74 confirm: handleDisable.bind(null, record),
@@ -168,9 +164,9 @@ @@ -168,9 +164,9 @@
168 }; 164 };
169 165
170 const handleEnableOrDisable = async (record: Recordable) => { 166 const handleEnableOrDisable = async (record: Recordable) => {
  167 + setLoading(true);
  168 + enableObj.convertIds.length = 0;
171 try { 169 try {
172 - setLoading(true);  
173 - enableObj.convertIds.length = 0;  
174 enableObj.status = record.status; 170 enableObj.status = record.status;
175 enableObj.convertIds.push(record.id as never); 171 enableObj.convertIds.push(record.id as never);
176 if (enableObj.status == 0) { 172 if (enableObj.status == 0) {
@@ -191,9 +187,9 @@ @@ -191,9 +187,9 @@
191 } 187 }
192 }; 188 };
193 const handleDisable = async (record: Recordable) => { 189 const handleDisable = async (record: Recordable) => {
  190 + setLoading(true);
  191 + enableObj.convertIds.length = 0;
194 try { 192 try {
195 - setLoading(true);  
196 - enableObj.convertIds.length = 0;  
197 enableObj.status = record.status; 193 enableObj.status = record.status;
198 enableObj.convertIds.push(record.id as never); 194 enableObj.convertIds.push(record.id as never);
199 if (enableObj.status == 1) { 195 if (enableObj.status == 1) {
@@ -228,6 +224,11 @@ @@ -228,6 +224,11 @@
228 const hasDisableStatus = isJudgeSelectRowsArr.value.map((m) => { 224 const hasDisableStatus = isJudgeSelectRowsArr.value.map((m) => {
229 return m.status; 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 hasDisableStatus.every((e) => { 232 hasDisableStatus.every((e) => {
232 if (e == 1) { 233 if (e == 1) {
233 disabledStatus3.value = true; 234 disabledStatus3.value = true;
@@ -251,12 +252,25 @@ @@ -251,12 +252,25 @@
251 }; 252 };
252 253
253 const handleDelete = async () => { 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 const handleMutiuteDisable = async () => { 272 const handleMutiuteDisable = async () => {
  273 + enableObj.convertIds.length = 0;
260 try { 274 try {
261 setLoading(true); 275 setLoading(true);
262 getSelectRowsArr.value = getSelectRows(); 276 getSelectRowsArr.value = getSelectRows();
@@ -283,6 +297,7 @@ @@ -283,6 +297,7 @@
283 }; 297 };
284 298
285 const handleMutiuteEnable = async () => { 299 const handleMutiuteEnable = async () => {
  300 + enableObj.convertIds.length = 0;
286 try { 301 try {
287 setLoading(true); 302 setLoading(true);
288 getSelectRowsArr.value = getSelectRows(); 303 getSelectRowsArr.value = getSelectRows();
@@ -125,6 +125,7 @@ @@ -125,6 +125,7 @@
125 current.value = 0; 125 current.value = 0;
126 isStatus.value = !data.isUpdate; 126 isStatus.value = !data.isUpdate;
127 //清空第一步数据 127 //清空第一步数据
  128 + proxy.$refs.DeviceProfileStep1Ref.resetIconFunc();
128 proxy.$refs.DeviceProfileStep1Ref.customResetStepOneFunc(); 129 proxy.$refs.DeviceProfileStep1Ref.customResetStepOneFunc();
129 proxy.$refs.DeviceProfileStep3Ref.clearAllRegisterFormFunc(); 130 proxy.$refs.DeviceProfileStep3Ref.clearAllRegisterFormFunc();
130 //报警详细信息 131 //报警详细信息
@@ -12,7 +12,9 @@ @@ -12,7 +12,9 @@
12 <ImpExcel @success="loadDataSuccess" dateFormat="YYYY-MM-DD"> 12 <ImpExcel @success="loadDataSuccess" dateFormat="YYYY-MM-DD">
13 <a-button @click="handleImport"> 导入设备配置 </a-button> 13 <a-button @click="handleImport"> 导入设备配置 </a-button>
14 </ImpExcel> 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 </template> 18 </template>
17 <template #action="{ record }"> 19 <template #action="{ record }">
18 <TableAction 20 <TableAction
@@ -75,10 +77,11 @@ @@ -75,10 +77,11 @@
75 let selectedRowKeys: string[] = reactive([]); 77 let selectedRowKeys: string[] = reactive([]);
76 const getPathUrl = ref(''); 78 const getPathUrl = ref('');
77 const getPathUrlName = ref(''); 79 const getPathUrlName = ref('');
  80 + const disabled = ref(true);
78 81
79 const { createMessage } = useMessage(); 82 const { createMessage } = useMessage();
80 const [registerModal, { openModal }] = useModal(); 83 const [registerModal, { openModal }] = useModal();
81 - const [registerModalDetail, { openModal: openModalDetail }] = useModal(); 84 + const [registerModalDetail] = useModal();
82 const [registerTable, { reload, getSelectRowKeys }] = useTable({ 85 const [registerTable, { reload, getSelectRowKeys }] = useTable({
83 title: '设备配置列表', 86 title: '设备配置列表',
84 pagination: true, 87 pagination: true,
@@ -179,6 +182,11 @@ @@ -179,6 +182,11 @@
179 } 182 }
180 const useSelectionChange = () => { 183 const useSelectionChange = () => {
181 selectedRowKeys = getSelectRowKeys(); 184 selectedRowKeys = getSelectRowKeys();
  185 + if (selectedRowKeys.length > 0) {
  186 + disabled.value = false;
  187 + } else {
  188 + disabled.value = true;
  189 + }
182 }; 190 };
183 async function handleTableDel() { 191 async function handleTableDel() {
184 await deviceConfigDelete(selectedRowKeys); 192 await deviceConfigDelete(selectedRowKeys);
@@ -219,6 +227,7 @@ @@ -219,6 +227,7 @@
219 reload(); 227 reload();
220 } 228 }
221 return { 229 return {
  230 + disabled,
222 deviceDetailRef, 231 deviceDetailRef,
223 setRowClassName, 232 setRowClassName,
224 registerModalDetail, 233 registerModalDetail,
1 <template> 1 <template>
2 <div class="step1"> 2 <div class="step1">
3 <div class="step1-form"> 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 </div> 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 </div> 29 </div>
48 </div> 30 </div>
49 </div> 31 </div>
@@ -173,8 +155,8 @@ @@ -173,8 +155,8 @@
173 :deep .ant-upload-select-picture-card { 155 :deep .ant-upload-select-picture-card {
174 display: inherit; 156 display: inherit;
175 float: none; 157 float: none;
176 - width: 8.6vw;  
177 - height: 17vh; 158 + width: 4.9vw;
  159 + height: 9.5vh;
178 margin-right: 8px; 160 margin-right: 8px;
179 text-align: center; 161 text-align: center;
180 vertical-align: top; 162 vertical-align: top;
@@ -9,6 +9,12 @@ import { alarmContactGetPage } from '/@/api/device/deviceConfigApi'; @@ -9,6 +9,12 @@ import { alarmContactGetPage } from '/@/api/device/deviceConfigApi';
9 export const step1Schemas: FormSchema[] = [ 9 export const step1Schemas: FormSchema[] = [
10 { 10 {
11 field: 'name', 11 field: 'name',
  12 + label: '上传图片',
  13 + component: 'Input',
  14 + slot: 'imageSelect',
  15 + },
  16 + {
  17 + field: 'name',
12 label: '配置名称', 18 label: '配置名称',
13 required: true, 19 required: true,
14 component: 'Input', 20 component: 'Input',
@@ -21,7 +21,7 @@ @@ -21,7 +21,7 @@
21 21
22 export default defineComponent({ 22 export default defineComponent({
23 components: { CollapseContainer, BasicForm, [Input.name]: Input }, 23 components: { CollapseContainer, BasicForm, [Input.name]: Input },
24 - props: ['deviceInfo1', 'editconditionFather', 'newConditionMapFather'], 24 + props: ['deviceInfo1', 'editConditionFather', 'newConditionMapFather'],
25 25
26 setup(props) { 26 setup(props) {
27 const fieldValue: any = ref({}); 27 const fieldValue: any = ref({});
@@ -56,9 +56,9 @@ @@ -56,9 +56,9 @@
56 56
57 //回显数据 57 //回显数据
58 const setFieldsFormValueFun = () => { 58 const setFieldsFormValueFun = () => {
59 - if (props.editconditionFather !== 1) { 59 + if (props.editConditionFather !== 1) {
60 setTimeout(() => { 60 setTimeout(() => {
61 - setFieldsValue(props.editconditionFather); 61 + setFieldsValue(props.editConditionFather);
62 }, 100); 62 }, 100);
63 } 63 }
64 }; 64 };
@@ -210,7 +210,7 @@ export const searchFormSchema: FormSchema[] = [ @@ -210,7 +210,7 @@ export const searchFormSchema: FormSchema[] = [
210 { 210 {
211 field: 'organizationId', 211 field: 'organizationId',
212 label: '所属组织', 212 label: '所属组织',
213 - colProps: { span: 8 }, 213 + colProps: { span: 6 },
214 component: 'ApiTreeSelect', 214 component: 'ApiTreeSelect',
215 componentProps: { 215 componentProps: {
216 api: async () => { 216 api: async () => {
@@ -224,7 +224,7 @@ export const searchFormSchema: FormSchema[] = [ @@ -224,7 +224,7 @@ export const searchFormSchema: FormSchema[] = [
224 field: 'name', 224 field: 'name',
225 label: '名称', 225 label: '名称',
226 component: 'Input', 226 component: 'Input',
227 - colProps: { span: 8 }, 227 + colProps: { span: 6 },
228 componentProps: { 228 componentProps: {
229 maxLength: 36, 229 maxLength: 36,
230 placeholder: '请输入名称', 230 placeholder: '请输入名称',
@@ -254,7 +254,7 @@ export const searchFormSchema: FormSchema[] = [ @@ -254,7 +254,7 @@ export const searchFormSchema: FormSchema[] = [
254 { label: '未启用', value: '0' }, 254 { label: '未启用', value: '0' },
255 ], 255 ],
256 }, 256 },
257 - colProps: { span: 4 }, 257 + colProps: { span: 6 },
258 }, 258 },
259 ]; 259 ];
260 260
@@ -716,3 +716,104 @@ export const useActionDrawerSchema: FormSchema[] = [ @@ -716,3 +716,104 @@ export const useActionDrawerSchema: FormSchema[] = [
716 slot: 'add', 716 slot: 'add',
717 }, 717 },
718 ]; 718 ];
  719 +
  720 +export const mockData = {
  721 + id: 'f90f3cc9-e6ab-41cd-86b8-bb3a8f71ae28',
  722 + creator: 'b75f1c80-0f94-4a06-84ef-253962bbfe9e',
  723 + createTime: '2022-02-21 15:03:44',
  724 + name: '测试3',
  725 + enabled: false,
  726 + description: '测试3',
  727 + tenantId: 'de10f9e0-8892-11ec-ac19-e398562c8b61',
  728 + organizationId: '0454b838-411b-425b-81c1-7cdcf9ef4816',
  729 + triggers: [
  730 + {
  731 + enabled: false,
  732 + tenantId: 'de10f9e0-8892-11ec-ac19-e398562c8b61',
  733 + deviceId: '38bbb9e6-7769-4c32-ad4d-f81df4e37044',
  734 + triggerEvent: 'DEVICE_ACT',
  735 + sceneLinkageId: 'f90f3cc9-e6ab-41cd-86b8-bb3a8f71ae28',
  736 + },
  737 + {
  738 + enabled: false,
  739 + tenantId: 'de10f9e0-8892-11ec-ac19-e398562c8b61',
  740 + deviceId: '242ffd69-fea8-4929-8815-9bd6f6b6d8bd',
  741 + triggerEvent: 'DEVICE_ACT',
  742 + sceneLinkageId: 'f90f3cc9-e6ab-41cd-86b8-bb3a8f71ae28',
  743 + },
  744 + {
  745 + enabled: false,
  746 + tenantId: 'de10f9e0-8892-11ec-ac19-e398562c8b61',
  747 + deviceId: 'ddb672d8-32ed-4f62-9a97-95af3d7a3c35',
  748 + triggerEvent: 'DEVICE_ACT',
  749 + sceneLinkageId: 'f90f3cc9-e6ab-41cd-86b8-bb3a8f71ae28',
  750 + },
  751 + {
  752 + enabled: false,
  753 + tenantId: 'de10f9e0-8892-11ec-ac19-e398562c8b61',
  754 + deviceId: 'ee10b318-1bb9-4e78-997b-726b184cc6be',
  755 + triggerEvent: 'DEVICE_ACT',
  756 + sceneLinkageId: 'f90f3cc9-e6ab-41cd-86b8-bb3a8f71ae28',
  757 + },
  758 + ],
  759 + doActions: [
  760 + {
  761 + enabled: false,
  762 + tenantId: 'de10f9e0-8892-11ec-ac19-e398562c8b61',
  763 + deviceId: '38bbb9e6-7769-4c32-ad4d-f81df4e37044',
  764 + outTarget: 'DEVICE_OUT',
  765 + sceneLinkageId: 'f90f3cc9-e6ab-41cd-86b8-bb3a8f71ae28',
  766 + },
  767 + {
  768 + enabled: false,
  769 + tenantId: 'de10f9e0-8892-11ec-ac19-e398562c8b61',
  770 + deviceId: '242ffd69-fea8-4929-8815-9bd6f6b6d8bd',
  771 + outTarget: 'DEVICE_OUT',
  772 + sceneLinkageId: 'f90f3cc9-e6ab-41cd-86b8-bb3a8f71ae28',
  773 + },
  774 + {
  775 + enabled: false,
  776 + tenantId: 'de10f9e0-8892-11ec-ac19-e398562c8b61',
  777 + deviceId: 'ddb672d8-32ed-4f62-9a97-95af3d7a3c35',
  778 + outTarget: 'DEVICE_OUT',
  779 + sceneLinkageId: 'f90f3cc9-e6ab-41cd-86b8-bb3a8f71ae28',
  780 + },
  781 + {
  782 + enabled: false,
  783 + tenantId: 'de10f9e0-8892-11ec-ac19-e398562c8b61',
  784 + deviceId: 'ee10b318-1bb9-4e78-997b-726b184cc6be',
  785 + outTarget: 'DEVICE_OUT',
  786 + sceneLinkageId: 'f90f3cc9-e6ab-41cd-86b8-bb3a8f71ae28',
  787 + },
  788 + ],
  789 + doConditions: [
  790 + {
  791 + enabled: false,
  792 + tenantId: 'de10f9e0-8892-11ec-ac19-e398562c8b61',
  793 + deviceId: '38bbb9e6-7769-4c32-ad4d-f81df4e37044',
  794 + status: 'DEVICE_STATUS',
  795 + sceneLinkageId: 'f90f3cc9-e6ab-41cd-86b8-bb3a8f71ae28',
  796 + },
  797 + {
  798 + enabled: false,
  799 + tenantId: 'de10f9e0-8892-11ec-ac19-e398562c8b61',
  800 + deviceId: '242ffd69-fea8-4929-8815-9bd6f6b6d8bd',
  801 + status: 'DEVICE_STATUS',
  802 + sceneLinkageId: 'f90f3cc9-e6ab-41cd-86b8-bb3a8f71ae28',
  803 + },
  804 + {
  805 + enabled: false,
  806 + tenantId: 'de10f9e0-8892-11ec-ac19-e398562c8b61',
  807 + deviceId: 'ddb672d8-32ed-4f62-9a97-95af3d7a3c35',
  808 + status: 'DEVICE_STATUS',
  809 + sceneLinkageId: 'f90f3cc9-e6ab-41cd-86b8-bb3a8f71ae28',
  810 + },
  811 + {
  812 + enabled: false,
  813 + tenantId: 'de10f9e0-8892-11ec-ac19-e398562c8b61',
  814 + deviceId: 'ee10b318-1bb9-4e78-997b-726b184cc6be',
  815 + status: 'DEVICE_STATUS',
  816 + sceneLinkageId: 'f90f3cc9-e6ab-41cd-86b8-bb3a8f71ae28',
  817 + },
  818 + ],
  819 +};
@@ -33,7 +33,6 @@ @@ -33,7 +33,6 @@
33 </template> 33 </template>
34 </BasicTable> 34 </BasicTable>
35 <SceneLinkAgeDrawer 35 <SceneLinkAgeDrawer
36 - :getChildrenData="echoEditData"  
37 @register="registerDrawer" 36 @register="registerDrawer"
38 @success="handleSuccess" 37 @success="handleSuccess"
39 ref="sceneLinkAgeDrawerRef" 38 ref="sceneLinkAgeDrawerRef"
@@ -41,7 +40,7 @@ @@ -41,7 +40,7 @@
41 </div> 40 </div>
42 </template> 41 </template>
43 <script lang="ts"> 42 <script lang="ts">
44 - import { defineComponent, reactive, getCurrentInstance, ref } from 'vue'; 43 + import { defineComponent, getCurrentInstance, ref } from 'vue';
45 import { BasicTable, useTable, TableAction } from '/@/components/Table'; 44 import { BasicTable, useTable, TableAction } from '/@/components/Table';
46 import { useDrawer } from '/@/components/Drawer'; 45 import { useDrawer } from '/@/components/Drawer';
47 import SceneLinkAgeDrawer from './useDrawer.vue'; 46 import SceneLinkAgeDrawer from './useDrawer.vue';
@@ -62,7 +61,6 @@ @@ -62,7 +61,6 @@
62 handleSuccess 61 handleSuccess
63 ); 62 );
64 let selectedRowKeys: Array<string> = []; 63 let selectedRowKeys: Array<string> = [];
65 - let echoEditData = reactive({});  
66 const [registerDrawer, { openDrawer }] = useDrawer(); 64 const [registerDrawer, { openDrawer }] = useDrawer();
67 const { createMessage } = useMessage(); 65 const { createMessage } = useMessage();
68 const [registerTable, { reload, getSelectRowKeys }] = useTable({ 66 const [registerTable, { reload, getSelectRowKeys }] = useTable({
@@ -88,21 +86,18 @@ @@ -88,21 +86,18 @@
88 }); 86 });
89 87
90 function handleAdd() { 88 function handleAdd() {
  89 + openDrawer(true, {
  90 + isUpdate: false,
  91 + });
91 try { 92 try {
92 - proxy.$refs.sceneLinkAgeDrawerRef.clearAllArrayFunc();  
93 setTimeout(() => { 93 setTimeout(() => {
94 proxy.$refs.sceneLinkAgeDrawerRef.defaultAddTrigger(); 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(); 95 + proxy.$refs.sceneLinkAgeDrawerRef.defaultAddCondition();
  96 + proxy.$refs.sceneLinkAgeDrawerRef.defaultAddAction();
  97 + }, 100);
100 } catch (e) { 98 } catch (e) {
101 return e; 99 return e;
102 } 100 }
103 - openDrawer(true, {  
104 - isUpdate: false,  
105 - });  
106 } 101 }
107 102
108 const useSelectionChange = () => { 103 const useSelectionChange = () => {
@@ -120,7 +115,6 @@ @@ -120,7 +115,6 @@
120 record, 115 record,
121 isUpdate: true, 116 isUpdate: true,
122 }); 117 });
123 - echoEditData = record;  
124 } 118 }
125 async function handleDelete(record: Recordable) { 119 async function handleDelete(record: Recordable) {
126 try { 120 try {
@@ -138,7 +132,6 @@ @@ -138,7 +132,6 @@
138 return { 132 return {
139 sceneLinkAgeDrawerRef, 133 sceneLinkAgeDrawerRef,
140 useSelectionChange, 134 useSelectionChange,
141 - echoEditData,  
142 registerTable, 135 registerTable,
143 registerDrawer, 136 registerDrawer,
144 handleAdd, 137 handleAdd,
1 <template> 1 <template>
2 - <BasicDrawer  
3 - v-bind="$attrs"  
4 - @register="registerDrawer"  
5 - showFooter  
6 - :title="getTitle"  
7 - width="1000px"  
8 - @ok="handleSubmit"  
9 - >  
10 - <div>  
11 - <BasicForm @register="registerForm" />  
12 - <!-- 触发器 --> 2 + <div>
  3 + <BasicDrawer
  4 + v-bind="$attrs"
  5 + @register="registerDrawer"
  6 + showFooter
  7 + :title="getTitle"
  8 + width="1000px"
  9 + @ok="handleSubmit"
  10 + @close="handleCancel"
  11 + >
13 <div> 12 <div>
14 - <template  
15 - v-for="(item, index) in isUpdate == false ? addTriggerPushData : editTriggerPushData"  
16 - :key="index"  
17 - >  
18 - <span style="display: none">{{ item + index }}</span>  
19 - <span style="position: relative; top: 3.2vh; left: 0.3vw">触发器 {{ index + 1 }}</span>  
20 - <div style="display: block">  
21 - <AddTriggerForm  
22 - :editTriggerFather="isUpdate == false ? 1 : item"  
23 - :newFilterMapFather="isUpdate == false ? 1 : newFilterMap"  
24 - :deviceInfo="getDeviceInfo"  
25 - ref="refTriggerChild"  
26 - />  
27 - </div>  
28 - <div style="height: 3vh"></div>  
29 - </template>  
30 - <div  
31 - style="  
32 - display: flex;  
33 - width: 11vw;  
34 - height: 4vh;  
35 - flex-direction: row;  
36 - justify-content: space-between;  
37 - "  
38 - >  
39 - <div style="display: flex; width: 4vw; height: 4vh">  
40 - <Button type="primary" style="border-radius: 10px" class="mt-5" @click="addTrigger"  
41 - >新增触发器</Button  
42 - >  
43 - </div>  
44 - <div style="display: flex; width: 4vw; height: 4vh">  
45 - <Button  
46 - v-if="addTriggerPushData.length != 0 || editTriggerPushData.length != 0"  
47 - type="default"  
48 - style="border-radius: 10px; background-color: rgba(237, 111, 111, 1)"  
49 - class="mt-5"  
50 - @click="removeTrigger"  
51 - >  
52 - <span style="color: white">删除</span></Button  
53 - > 13 + <BasicForm @register="registerForm" />
  14 + <!-- 触发器 -->
  15 + <div>
  16 + <template
  17 + v-for="(item, index) in isUpdate == false ? addTriggerPushData : editTriggerPushData"
  18 + :key="index"
  19 + >
  20 + <span style="display: none">{{ item + index }}</span>
  21 + <span style="position: relative; top: 3.2vh; left: 0.3vw">触发器 {{ index + 1 }}</span>
  22 + <div style="display: block">
  23 + <AddTriggerForm
  24 + :editTriggerFather="isUpdate == false ? 1 : item"
  25 + :newFilterMapFather="isUpdate == false ? 1 : newFilterMap"
  26 + :deviceInfo="getDeviceInfo"
  27 + ref="refTriggerChild"
  28 + />
  29 + </div>
  30 + <div style="height: 3vh"></div>
  31 + </template>
  32 + <div
  33 + style="
  34 + display: flex;
  35 + width: 11vw;
  36 + height: 4vh;
  37 + flex-direction: row;
  38 + justify-content: space-between;
  39 + "
  40 + >
  41 + <div style="display: flex; width: 4vw; height: 4vh">
  42 + <Button type="primary" style="border-radius: 10px" class="mt-5" @click="addTrigger"
  43 + >新增触发器</Button
  44 + >
  45 + </div>
  46 + <div style="display: flex; width: 4vw; height: 4vh">
  47 + <Button
  48 + v-if="addTriggerPushData.length != 0 || editTriggerPushData.length != 0"
  49 + type="default"
  50 + style="border-radius: 10px; background-color: rgba(237, 111, 111, 1)"
  51 + class="mt-5"
  52 + @click="removeTrigger"
  53 + >
  54 + <span style="color: white">删除</span></Button
  55 + >
  56 + </div>
54 </div> 57 </div>
55 </div> 58 </div>
56 - </div>  
57 - <div style="height: 5vh"></div>  
58 - <!-- 执行条件 -->  
59 - <div>  
60 - <template  
61 - v-for="(item, index) in isUpdate == false ? addConditionPushData : editConditionPushData"  
62 - :key="index"  
63 - >  
64 - <span style="display: none">{{ item + index }}</span>  
65 - <span style="position: relative; top: 3.2vh; left: 0.3vw">执行条件 {{ index + 1 }}</span>  
66 -  
67 - <div>  
68 - <AddConditiForm  
69 - :editConditionFather="isUpdate == false ? 1 : item"  
70 - :newConditionMapFather="isUpdate == false ? 1 : newConditionFilterMap"  
71 - :deviceInfo1="getDeviceInfo1"  
72 - ref="refConditionChild"  
73 - />  
74 - </div>  
75 - <div style="height: 3vh"></div>  
76 - </template>  
77 - <div  
78 - style="  
79 - display: flex;  
80 - width: 11vw;  
81 - height: 4vh;  
82 - flex-direction: row;  
83 - justify-content: space-between;  
84 - "  
85 - >  
86 - <div style="display: flex; width: 4vw; height: 4vh">  
87 - <Button type="primary" style="border-radius: 10px" class="mt-5" @click="addCondition"  
88 - >新增执行条件</Button  
89 - >  
90 - </div>  
91 - <div style="display: flex; width: 4vw; height: 4vh">  
92 - <Button  
93 - v-if="addConditionPushData.length != 0 || addConditionPushData.length != 0"  
94 - style="border-radius: 10px; background-color: rgba(237, 111, 111, 1)"  
95 - type="default"  
96 - class="mt-5"  
97 - @click="removeCondition"  
98 - >  
99 - <span style="color: white">删除</span></Button 59 + <div style="height: 5vh"></div>
  60 + <!-- 执行条件 -->
  61 + <div>
  62 + <template
  63 + v-for="(item, index) in isUpdate == false
  64 + ? addConditionPushData
  65 + : editConditionPushData"
  66 + :key="index"
  67 + >
  68 + <span style="display: none">{{ item + index }}</span>
  69 + <span style="position: relative; top: 3.2vh; left: 0.3vw"
  70 + >执行条件 {{ index + 1 }}</span
100 > 71 >
101 - </div>  
102 - </div>  
103 - </div>  
104 - <!-- 执行动作 -->  
105 - <div style="height: 5vh"></div>  
106 - <div>  
107 - <template  
108 - v-for="(item, index) in isUpdate == false ? addActionPushData : editActionPushData"  
109 - :key="index"  
110 - >  
111 - <span style="display: none">{{ item + index }}</span>  
112 - <span style="position: relative; top: 4.2vh; left: 0.65vw">执行动作 {{ index + 1 }}</span>  
113 72
114 - <div>  
115 - <AddActionForm  
116 - :editActionFather="isUpdate == false ? 1 : item"  
117 - :newActionMapFather="isUpdate == false ? 1 : newActionFilterMap"  
118 - :deviceInfo2="getDeviceInfo2"  
119 - ref="refActionChild"  
120 - />  
121 - </div>  
122 - <div style="height: 3vh"></div>  
123 - </template>  
124 - <div  
125 - style="  
126 - display: flex;  
127 - width: 11vw;  
128 - height: 4vh;  
129 - flex-direction: row;  
130 - justify-content: space-between;  
131 - "  
132 - >  
133 - <div style="display: flex; width: 4vw; height: 4vh">  
134 - <Button type="primary" style="border-radius: 10px" class="mt-5" @click="addAction"  
135 - >新增执行动作</Button  
136 - > 73 + <div>
  74 + <AddConditiForm
  75 + :editConditionFather="isUpdate == false ? 1 : item"
  76 + :newConditionMapFather="isUpdate == false ? 1 : newConditionFilterMap"
  77 + :deviceInfo1="getDeviceInfo1"
  78 + ref="refConditionChild"
  79 + />
  80 + </div>
  81 + <div style="height: 3vh"></div>
  82 + </template>
  83 + <div
  84 + style="
  85 + display: flex;
  86 + width: 11vw;
  87 + height: 4vh;
  88 + flex-direction: row;
  89 + justify-content: space-between;
  90 + "
  91 + >
  92 + <div style="display: flex; width: 4vw; height: 4vh">
  93 + <Button type="primary" style="border-radius: 10px" class="mt-5" @click="addCondition"
  94 + >新增执行条件</Button
  95 + >
  96 + </div>
  97 + <div style="display: flex; width: 4vw; height: 4vh">
  98 + <Button
  99 + v-if="addConditionPushData.length != 0 || editConditionPushData.length != 0"
  100 + style="border-radius: 10px; background-color: rgba(237, 111, 111, 1)"
  101 + type="default"
  102 + class="mt-5"
  103 + @click="removeCondition"
  104 + >
  105 + <span style="color: white">删除</span></Button
  106 + >
  107 + </div>
137 </div> 108 </div>
138 - <div style="display: flex; width: 4vw; height: 4vh">  
139 - <Button  
140 - v-if="addActionPushData.length > 0 || addActionPushData.length > 0"  
141 - style="border-radius: 10px; background-color: rgba(237, 111, 111, 1)"  
142 - type="default"  
143 - class="mt-5"  
144 - @click="removeAction"  
145 - >  
146 - <span style="color: white">删除</span></Button 109 + </div>
  110 + <!-- 执行动作 -->
  111 + <div style="height: 5vh"></div>
  112 + <div>
  113 + <template
  114 + v-for="(item, index) in isUpdate == false ? addActionPushData : editActionPushData"
  115 + :key="index"
  116 + >
  117 + <span style="display: none">{{ item + index }}</span>
  118 + <span style="position: relative; top: 4.2vh; left: 0.65vw"
  119 + >执行动作 {{ index + 1 }}</span
147 > 120 >
  121 +
  122 + <div>
  123 + <AddActionForm
  124 + :editActionFather="isUpdate == false ? 1 : item"
  125 + :newActionMapFather="isUpdate == false ? 1 : newActionFilterMap"
  126 + :deviceInfo2="getDeviceInfo2"
  127 + ref="refActionChild"
  128 + />
  129 + </div>
  130 + <div style="height: 3vh"></div>
  131 + </template>
  132 + <div
  133 + style="
  134 + display: flex;
  135 + width: 11vw;
  136 + height: 4vh;
  137 + flex-direction: row;
  138 + justify-content: space-between;
  139 + "
  140 + >
  141 + <div style="display: flex; width: 4vw; height: 4vh">
  142 + <Button type="primary" style="border-radius: 10px" class="mt-5" @click="addAction"
  143 + >新增执行动作</Button
  144 + >
  145 + </div>
  146 + <div style="display: flex; width: 4vw; height: 4vh">
  147 + <Button
  148 + v-if="addActionPushData.length != 0 || editActionPushData.length != 0"
  149 + style="border-radius: 10px; background-color: rgba(237, 111, 111, 1)"
  150 + type="default"
  151 + class="mt-5"
  152 + @click="removeAction"
  153 + >
  154 + <span style="color: white">删除</span></Button
  155 + >
  156 + </div>
148 </div> 157 </div>
  158 + <div style="height: 5vh"></div>
149 </div> 159 </div>
150 - <div style="height: 5vh"></div>  
151 </div> 160 </div>
152 - </div>  
153 - </BasicDrawer> 161 + </BasicDrawer>
  162 + </div>
154 </template> 163 </template>
155 <script lang="ts"> 164 <script lang="ts">
156 import { defineComponent, ref, computed, unref, reactive, getCurrentInstance, watch } from 'vue'; 165 import { defineComponent, ref, computed, unref, reactive, getCurrentInstance, watch } from 'vue';
157 import { BasicForm, useForm } from '/@/components/Form'; 166 import { BasicForm, useForm } from '/@/components/Form';
158 - import { formSchema, getData } from './config'; 167 + import { formSchema, getData, mockData } from './config';
159 import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; 168 import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
160 import { 169 import {
161 screenLinkPageAddApi, 170 screenLinkPageAddApi,
@@ -254,50 +263,31 @@ @@ -254,50 +263,31 @@
254 const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { 263 const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
255 await resetFields(); 264 await resetFields();
256 setDrawerProps({ confirmLoading: false }); 265 setDrawerProps({ confirmLoading: false });
257 - isUpdate.value = !!data?.isUpdate;  
258 - if (!unref(isUpdate)) {  
259 - editTriggerPushData.value = [];  
260 - editTriggerPushData.value.length = 0;  
261 - try {  
262 - setTimeout(() => {  
263 - // proxy.$refs.refTriggerChild.resetFieldsValueFunc();  
264 - proxy.$refs.refConditionChild.resetFieldsValueFunc();  
265 - proxy.$refs.refActionChild.resetFieldsValueFunc();  
266 - }, 50);  
267 - } catch (e) {  
268 - return e;  
269 - }  
270 - } else {  
271 - newFilterMap.value = [];  
272 - newConditionFilterMap.value = [];  
273 - newActionFilterMap.value = [];  
274 - clearAllArrayFunc();  
275 - editTriggerPushData.value = [];  
276 - editTriggerPushData.value.length = 0;  
277 - editConditionPushData.value = [];  
278 - editActionPushData.value = [];  
279 - lastEditRefTriggerChildDataArray.value = [];  
280 - getId.value = data.record.id;  
281 - getTenantId.value = data.record.tenantId;  
282 - await setFieldsValue({  
283 - ...data.record,  
284 - });  
285 - 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 - editConditionPushData.value = data.record.doConditions;  
295 - editActionPushData.value = data.record.doActions;  
296 - const options = await screenLinkPageByDeptIdGetDevice({  
297 - organizationId: data.record.organizationId,  
298 - }); 266 + isUpdate.value = data?.isUpdate;
  267 + if (isUpdate.value) {
299 try { 268 try {
300 - data.record.triggers.forEach((f1) => { 269 + getId.value = mockData.id;
  270 + getTenantId.value = mockData.tenantId;
  271 + await setFieldsValue({
  272 + ...data.record,
  273 + });
  274 + editTriggerPushData.value = mockData.triggers;
  275 + editConditionPushData.value = mockData.doConditions;
  276 + editActionPushData.value = mockData.doActions;
  277 + // editTriggerPushData.value.forEach((f) => {
  278 + // if (f?.id.length == 18) {
  279 + // editTriggerPushData.value.pop();
  280 + // if (editTriggerPushData.value.length) {
  281 + // editTriggerPushData.value.length = editTriggerPushData.value.length;
  282 + // }
  283 + // }
  284 + // });
  285 +
  286 + const options = await screenLinkPageByDeptIdGetDevice({
  287 + organizationId: mockData.organizationId,
  288 + });
  289 +
  290 + mockData.triggers.forEach((f1) => {
301 options.items?.forEach((f2) => { 291 options.items?.forEach((f2) => {
302 if (f2.id == f1.deviceId) { 292 if (f2.id == f1.deviceId) {
303 newFilterMap.value.push({ 293 newFilterMap.value.push({
@@ -308,7 +298,7 @@ @@ -308,7 +298,7 @@
308 }); 298 });
309 }); 299 });
310 300
311 - data.record.doConditions.forEach((f1) => { 301 + mockData.doConditions.forEach((f1) => {
312 options.items?.forEach((f2) => { 302 options.items?.forEach((f2) => {
313 if (f2.id == f1.deviceId) { 303 if (f2.id == f1.deviceId) {
314 newConditionFilterMap.value.push({ 304 newConditionFilterMap.value.push({
@@ -318,7 +308,7 @@ @@ -318,7 +308,7 @@
318 } 308 }
319 }); 309 });
320 }); 310 });
321 - data.record.doActions.forEach((f1) => { 311 + mockData.doActions.forEach((f1) => {
322 options.items?.forEach((f2) => { 312 options.items?.forEach((f2) => {
323 if (f2.id == f1.deviceId) { 313 if (f2.id == f1.deviceId) {
324 newActionFilterMap.value.push({ 314 newActionFilterMap.value.push({
@@ -328,34 +318,41 @@ @@ -328,34 +318,41 @@
328 } 318 }
329 }); 319 });
330 }); 320 });
331 - } catch (e) {} 321 + } catch (e) {
  322 + return e;
  323 + }
332 } 324 }
333 }); 325 });
334 - const getTitle = computed(() => (!unref(isUpdate) ? '新增场景联动' : '编辑场景联动')); 326 + const getTitle = computed(() => (isUpdate.value == false ? '新增场景联动' : '编辑场景联动'));
335 327
336 - const clearAllArrayFunc = () => {  
337 - unref(addTriggerPushData).length = 0;  
338 - unref(addConditionPushData).length = 0;  
339 - unref(addActionPushData).length = 0;  
340 - lastRefTriggerChildDataArray.value.length = 0;  
341 - lastRefConditionChildDataArray.value.length = 0;  
342 - lastRefActionChildDataArray.value.length = 0;  
343 - lastEditRefTriggerChildDataArray.value.length = 0;  
344 - };  
345 - const resetActionsAllArrayFunc = () => { 328 + const clearPushArrayFunc = () => {
346 try { 329 try {
  330 + proxy.$refs.refConditionChild.resetFieldsValueFunc();
  331 + proxy.$refs.refActionChild.resetFieldsValueFunc();
347 proxy.$refs.refActionChild.resetFieldsValueFunc(); 332 proxy.$refs.refActionChild.resetFieldsValueFunc();
348 - } catch (e) {  
349 - return e;  
350 - }  
351 - };  
352 - const clearActionsAllDevice = () => {  
353 - try {  
354 proxy.$refs.refActionChild.clearSelectDevice(); 333 proxy.$refs.refActionChild.clearSelectDevice();
  334 + newFilterMap.value.length = 0;
  335 + newConditionFilterMap.value.length = 0;
  336 + newActionFilterMap.value.length = 0;
  337 + editTriggerPushData.value.length = 0;
  338 + editConditionPushData.value.length = 0;
  339 + editActionPushData.value.length = 0;
  340 + lastEditRefTriggerChildDataArray.value.length = 0;
  341 + addTriggerPushData.value.length = 0;
  342 + addConditionPushData.value.length = 0;
  343 + addActionPushData.value.length = 0;
  344 + lastRefTriggerChildDataArray.value.length = 0;
  345 + lastRefConditionChildDataArray.value.length = 0;
  346 + lastRefActionChildDataArray.value.length = 0;
  347 + lastEditRefTriggerChildDataArray.value.length = 0;
355 } catch (e) { 348 } catch (e) {
356 return e; 349 return e;
357 } 350 }
358 }; 351 };
  352 + const handleCancel = () => {
  353 + clearPushArrayFunc();
  354 + };
  355 +
359 watch(getData, (newV) => { 356 watch(getData, (newV) => {
360 getDeviceInfo.value = newV; 357 getDeviceInfo.value = newV;
361 getDeviceInfo1.value = newV; 358 getDeviceInfo1.value = newV;
@@ -388,7 +385,7 @@ @@ -388,7 +385,7 @@
388 }; 385 };
389 386
390 const getDefaultValue = () => { 387 const getDefaultValue = () => {
391 - if (!unref(isUpdate)) { 388 + if (!isUpdate.value) {
392 delete getAllFormData.id; 389 delete getAllFormData.id;
393 delete getAllFormData.getTenantId; 390 delete getAllFormData.getTenantId;
394 refTriggerChildDataFunc(); 391 refTriggerChildDataFunc();
@@ -434,7 +431,7 @@ @@ -434,7 +431,7 @@
434 }; 431 };
435 432
436 const handleSubmit = async () => { 433 const handleSubmit = async () => {
437 - if (!unref(isUpdate)) { 434 + if (!isUpdate.value) {
438 getDefaultValue(); 435 getDefaultValue();
439 getValuesFormData = await validateFields(); 436 getValuesFormData = await validateFields();
440 if (!getValuesFormData) return; 437 if (!getValuesFormData) return;
@@ -442,6 +439,7 @@ @@ -442,6 +439,7 @@
442 await screenLinkPageAddApi(getAllFormData); 439 await screenLinkPageAddApi(getAllFormData);
443 createMessage.success('场景联动新增成功'); 440 createMessage.success('场景联动新增成功');
444 closeDrawer(); 441 closeDrawer();
  442 + handleCancel();
445 emit('success'); 443 emit('success');
446 } else { 444 } else {
447 getDefaultValue(); 445 getDefaultValue();
@@ -457,15 +455,12 @@ @@ -457,15 +455,12 @@
457 }; 455 };
458 const defaultAddTrigger = () => { 456 const defaultAddTrigger = () => {
459 if (unref(addTriggerPushData).length == 0) { 457 if (unref(addTriggerPushData).length == 0) {
460 - setTimeout(() => {  
461 - addTrigger();  
462 - }, 10); 458 + addTrigger();
463 } 459 }
464 }; 460 };
465 -  
466 //新增触发器 461 //新增触发器
467 const addTrigger = () => { 462 const addTrigger = () => {
468 - if (!unref(isUpdate)) { 463 + if (isUpdate.value == false) {
469 unref(addTriggerPushData).push(addTriggerData as never); 464 unref(addTriggerPushData).push(addTriggerData as never);
470 refTriggerChildDataFunc(); 465 refTriggerChildDataFunc();
471 lastRefTriggerChildData.value = refTriggerChildData.value; 466 lastRefTriggerChildData.value = refTriggerChildData.value;
@@ -478,7 +473,7 @@ @@ -478,7 +473,7 @@
478 } 473 }
479 }; 474 };
480 const removeTrigger = () => { 475 const removeTrigger = () => {
481 - if (!unref(isUpdate)) { 476 + if (!isUpdate.value) {
482 try { 477 try {
483 unref(addTriggerPushData).splice(0, 1); 478 unref(addTriggerPushData).splice(0, 1);
484 lastRefTriggerChildDataArray.value.splice(0, 1); 479 lastRefTriggerChildDataArray.value.splice(0, 1);
@@ -494,42 +489,42 @@ @@ -494,42 +489,42 @@
494 } 489 }
495 } 490 }
496 }; 491 };
  492 + //默认新增执行动作
  493 + const defaultAddAction = () => {
  494 + if (unref(addActionPushData).length == 0) {
  495 + addAction();
  496 + }
  497 + };
497 498
498 //新增执行条件 499 //新增执行条件
499 const addCondition = () => { 500 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);  
519 - };  
520 - const removeCondition = () => {  
521 - try {  
522 - unref(addConditionPushData).splice(0, 1);  
523 - lastRefConditionChildDataArray.value.splice(0, 1);  
524 - } catch (e) {  
525 - return e; 501 + if (!isUpdate.value) {
  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 + unref(editConditionPushData).push(addConditionData as never);
  508 + refConditionChildDataFunc();
  509 + lastRefConditionChildData.value = refConditionChildData.value;
  510 + lastEditRefConditionChildDataArray.value.push(lastRefConditionChildData.value as never);
526 } 511 }
527 }; 512 };
528 -  
529 - //新增执行动作  
530 - const defaultAddAction = () => {  
531 - if (unref(addActionPushData).length == 0) {  
532 - addAction(); 513 + const removeCondition = () => {
  514 + if (!isUpdate.value) {
  515 + try {
  516 + unref(addConditionPushData).splice(0, 1);
  517 + lastRefConditionChildDataArray.value.splice(0, 1);
  518 + } catch (e) {
  519 + return e;
  520 + }
  521 + } else {
  522 + try {
  523 + unref(editConditionPushData).splice(0, 1);
  524 + lastEditRefConditionChildDataArray.value.splice(0, 1);
  525 + } catch (e) {
  526 + return e;
  527 + }
533 } 528 }
534 }; 529 };
535 530
@@ -539,32 +534,38 @@ @@ -539,32 +534,38 @@
539 } 534 }
540 }; 535 };
541 const addAction = () => { 536 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); 537 + if (!isUpdate.value) {
  538 + unref(addActionPushData).push(addActionData as never);
  539 + refActionChildDataFunc();
  540 + lastRefActionChildData.value = refActionChildData.value;
  541 + lastRefActionChildDataArray.value.push(lastRefActionChildData.value as never);
  542 + } else {
  543 + unref(editActionPushData).push(addActionData as never);
  544 + refActionChildDataFunc();
  545 + lastRefActionChildData.value = refActionChildData.value;
  546 + lastEditRefActionChildDataArray.value.push(lastRefActionChildData.value as never);
  547 + }
557 }; 548 };
558 const removeAction = () => { 549 const removeAction = () => {
559 - try {  
560 - unref(addActionPushData).splice(0, 1);  
561 - lastRefActionChildDataArray.value.splice(0, 1);  
562 - } catch (e) {  
563 - return e; 550 + if (!isUpdate.value) {
  551 + try {
  552 + unref(addActionPushData).splice(0, 1);
  553 + lastRefActionChildDataArray.value.splice(0, 1);
  554 + } catch (e) {
  555 + return e;
  556 + }
  557 + } else {
  558 + try {
  559 + unref(editActionPushData).splice(0, 1);
  560 + lastEditRefActionChildDataArray.value.splice(0, 1);
  561 + } catch (e) {
  562 + return e;
  563 + }
564 } 564 }
565 }; 565 };
566 566
567 return { 567 return {
  568 + handleCancel,
568 defaultAddTrigger, 569 defaultAddTrigger,
569 defaultAddCondition, 570 defaultAddCondition,
570 newFilterMap, 571 newFilterMap,
@@ -574,11 +575,9 @@ @@ -574,11 +575,9 @@
574 editConditionPushData, 575 editConditionPushData,
575 editActionPushData, 576 editActionPushData,
576 isUpdate, 577 isUpdate,
577 - clearActionsAllDevice,  
578 getDeviceInfo, 578 getDeviceInfo,
579 getDeviceInfo1, 579 getDeviceInfo1,
580 getDeviceInfo2, 580 getDeviceInfo2,
581 - resetActionsAllArrayFunc,  
582 addActionPushData, 581 addActionPushData,
583 defaultAddAction, 582 defaultAddAction,
584 refActionChild, 583 refActionChild,
@@ -588,7 +587,6 @@ @@ -588,7 +587,6 @@
588 refConditionChild, 587 refConditionChild,
589 addCondition, 588 addCondition,
590 removeCondition, 589 removeCondition,
591 - clearAllArrayFunc,  
592 removeTrigger, 590 removeTrigger,
593 addTriggerPushData, 591 addTriggerPushData,
594 addTriggerData, 592 addTriggerData,