Commit 0dee33021ef8abb323edbdd8f5d6101fe61e9d45
Merge branch 'ft-dev' into 'main'
feat:租户配置联调分页、新增、删除接口,wip:设备配置联调新增、分页、删除接口 See merge request huang/yun-teng-iot-front!41
Showing
19 changed files
with
371 additions
and
342 deletions
@@ -30,10 +30,9 @@ export const deviceConfigGetDetail = (id: string) => { | @@ -30,10 +30,9 @@ export const deviceConfigGetDetail = (id: string) => { | ||
30 | /** | 30 | /** |
31 | * 获取规则链 | 31 | * 获取规则链 |
32 | */ | 32 | */ |
33 | -export const deviceConfigGetRuleChain = (params: {}) => { | 33 | +export const deviceConfigGetRuleChain = () => { |
34 | return defHttp.get({ | 34 | return defHttp.get({ |
35 | url: EDeviceConfigApi.DEVICE_CONFIG_GET_RULECHAIN, | 35 | url: EDeviceConfigApi.DEVICE_CONFIG_GET_RULECHAIN, |
36 | - params, | ||
37 | }); | 36 | }); |
38 | }; | 37 | }; |
39 | 38 |
@@ -28,20 +28,42 @@ enum Api { | @@ -28,20 +28,42 @@ enum Api { | ||
28 | getTenantRoles = '/admin/tenant/roles/', | 28 | getTenantRoles = '/admin/tenant/roles/', |
29 | postAddTenantProfile = '/tenantProfile', | 29 | postAddTenantProfile = '/tenantProfile', |
30 | getTenantProfile = '/tenantProfiles', | 30 | getTenantProfile = '/tenantProfiles', |
31 | + deleteTenantProfile = '/tenantProfiles', | ||
32 | +} | ||
33 | + | ||
34 | +export async function deleteTenantProfileApi(tenantIds) { | ||
35 | + await defHttp.delete( | ||
36 | + { | ||
37 | + url: `${Api.deleteTenantProfile}/${tenantIds}`, | ||
38 | + }, | ||
39 | + { | ||
40 | + joinPrefix: false, | ||
41 | + } | ||
42 | + ); | ||
31 | } | 43 | } |
32 | 44 | ||
33 | export const getTableTenantProfileApi = (params?: QueryTenantProfilesParam) => { | 45 | export const getTableTenantProfileApi = (params?: QueryTenantProfilesParam) => { |
34 | - return defHttp.get({ | ||
35 | - params: params, | ||
36 | - url: Api.getTenantProfile, | ||
37 | - }); | 46 | + return defHttp.get( |
47 | + { | ||
48 | + params: params, | ||
49 | + url: Api.getTenantProfile, | ||
50 | + }, | ||
51 | + { | ||
52 | + joinPrefix: false, | ||
53 | + } | ||
54 | + ); | ||
38 | }; | 55 | }; |
39 | 56 | ||
40 | export async function saveTenantProfileApi(params: tenantProfileDTO) { | 57 | export async function saveTenantProfileApi(params: tenantProfileDTO) { |
41 | - await defHttp.post({ | ||
42 | - params: params, | ||
43 | - url: Api.postAddTenantProfile, | ||
44 | - }); | 58 | + await defHttp.post( |
59 | + { | ||
60 | + params: params, | ||
61 | + url: Api.postAddTenantProfile, | ||
62 | + }, | ||
63 | + { | ||
64 | + joinPrefix: false, | ||
65 | + } | ||
66 | + ); | ||
45 | } | 67 | } |
46 | 68 | ||
47 | export function getTenantPage(params: TenantPageRequestParams) { | 69 | export function getTenantPage(params: TenantPageRequestParams) { |
src/components/Application/src/AppTest.vue
0 → 100644
1 | +<template> 111</template> |
@@ -41,7 +41,7 @@ | @@ -41,7 +41,7 @@ | ||
41 | 41 | ||
42 | import { defineComponent } from 'vue'; | 42 | import { defineComponent } from 'vue'; |
43 | import { Dropdown, Menu, Popconfirm } from 'ant-design-vue'; | 43 | import { Dropdown, Menu, Popconfirm } from 'ant-design-vue'; |
44 | - import { Icon } from '/@/components/Icon'; | 44 | + // import { Icon } from '/@/components/Icon'; |
45 | import { omit } from 'lodash-es'; | 45 | import { omit } from 'lodash-es'; |
46 | import { isFunction } from '/@/utils/is'; | 46 | import { isFunction } from '/@/utils/is'; |
47 | 47 | ||
@@ -52,7 +52,7 @@ | @@ -52,7 +52,7 @@ | ||
52 | Menu, | 52 | Menu, |
53 | MenuItem: Menu.Item, | 53 | MenuItem: Menu.Item, |
54 | MenuDivider: Menu.Divider, | 54 | MenuDivider: Menu.Divider, |
55 | - Icon, | 55 | + // Icon, |
56 | Popconfirm, | 56 | Popconfirm, |
57 | }, | 57 | }, |
58 | props: { | 58 | props: { |
@@ -16,7 +16,12 @@ | @@ -16,7 +16,12 @@ | ||
16 | </a-steps> | 16 | </a-steps> |
17 | </div> | 17 | </div> |
18 | <div class="mt-5"> | 18 | <div class="mt-5"> |
19 | - <DeviceProfileStep1 :echoStep1="editEchoData" @next="handleStepNext1" v-if="current === 0" /> | 19 | + <DeviceProfileStep1 |
20 | + ref="DeviceProfileStep1Ref" | ||
21 | + :echoStep1="editEchoData" | ||
22 | + @next="handleStepNext1" | ||
23 | + v-if="current === 0" | ||
24 | + /> | ||
20 | <DeviceProfileStep2 | 25 | <DeviceProfileStep2 |
21 | :echoStep2="editEchoData" | 26 | :echoStep2="editEchoData" |
22 | @prev="handleStepPrev" | 27 | @prev="handleStepPrev" |
@@ -66,6 +71,7 @@ | @@ -66,6 +71,7 @@ | ||
66 | }, | 71 | }, |
67 | emits: ['success', 'register'], | 72 | emits: ['success', 'register'], |
68 | setup(_, { emit }) { | 73 | setup(_, { emit }) { |
74 | + const DeviceProfileStep1Ref = ref(null); | ||
69 | const { createMessage } = useMessage(); | 75 | const { createMessage } = useMessage(); |
70 | const getStepData = ref(null); | 76 | const getStepData = ref(null); |
71 | const { proxy } = getCurrentInstance(); | 77 | const { proxy } = getCurrentInstance(); |
@@ -84,14 +90,16 @@ | @@ -84,14 +90,16 @@ | ||
84 | const [register, { closeModal }] = useModalInner((data) => { | 90 | const [register, { closeModal }] = useModalInner((data) => { |
85 | isUpdate.value = !!data?.isUpdate; | 91 | isUpdate.value = !!data?.isUpdate; |
86 | if (!unref(isUpdate)) { | 92 | if (!unref(isUpdate)) { |
93 | + console.log('新增'); | ||
87 | current.value = 0; | 94 | current.value = 0; |
88 | postDeviceConfogData.value = {}; | 95 | postDeviceConfogData.value = {}; |
96 | + proxy.$refs.DeviceProfileStep1Ref.customResetFunc(); | ||
89 | } | 97 | } |
90 | if (unref(isUpdate)) { | 98 | if (unref(isUpdate)) { |
99 | + console.log('编辑'); | ||
91 | current.value = 0; | 100 | current.value = 0; |
92 | postEditId.value = data.record.id; | 101 | postEditId.value = data.record.id; |
93 | editEchoData.value = data.record; | 102 | editEchoData.value = data.record; |
94 | - editEchoData.value.key = 'edit'; | ||
95 | } | 103 | } |
96 | }); | 104 | }); |
97 | function handleStepPrev() { | 105 | function handleStepPrev() { |
@@ -145,10 +153,11 @@ | @@ -145,10 +153,11 @@ | ||
145 | emit('success'); | 153 | emit('success'); |
146 | } | 154 | } |
147 | }; | 155 | }; |
148 | - const handleCancel = async () => { | ||
149 | - console.log(2); | 156 | + const handleCancel = () => { |
157 | + return; | ||
150 | }; | 158 | }; |
151 | return { | 159 | return { |
160 | + DeviceProfileStep1Ref, | ||
152 | editEchoData, | 161 | editEchoData, |
153 | getStepData, | 162 | getStepData, |
154 | handleStep3Next, | 163 | handleStep3Next, |
@@ -166,10 +166,12 @@ | @@ -166,10 +166,12 @@ | ||
166 | } | 166 | } |
167 | 167 | ||
168 | const [register1, { openModal: openModalExcel }] = useModal(); | 168 | const [register1, { openModal: openModalExcel }] = useModal(); |
169 | - function handleExport(record: Recordable) { | ||
170 | - openModalExcel(); | 169 | + const handleExport = (record: Recordable) => { |
171 | console.log(record); | 170 | console.log(record); |
172 | - } | 171 | + setTimeout(() => { |
172 | + openModalExcel(); | ||
173 | + }, 50); | ||
174 | + }; | ||
173 | function handleImport() { | 175 | function handleImport() { |
174 | console.log('record'); | 176 | console.log('record'); |
175 | } | 177 | } |
@@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
6 | </div> | 6 | </div> |
7 | </template> | 7 | </template> |
8 | <script lang="ts"> | 8 | <script lang="ts"> |
9 | - import { defineComponent, watch } from 'vue'; | 9 | + import { defineComponent, watch, onMounted } from 'vue'; |
10 | import { BasicForm, useForm } from '/@/components/Form'; | 10 | import { BasicForm, useForm } from '/@/components/Form'; |
11 | import { step1Schemas } from './data'; | 11 | import { step1Schemas } from './data'; |
12 | import { Select, Input, Divider } from 'ant-design-vue'; | 12 | import { Select, Input, Divider } from 'ant-design-vue'; |
@@ -19,7 +19,7 @@ | @@ -19,7 +19,7 @@ | ||
19 | [Input.Group.name]: Input.Group, | 19 | [Input.Group.name]: Input.Group, |
20 | [Divider.name]: Divider, | 20 | [Divider.name]: Divider, |
21 | }, | 21 | }, |
22 | - emits: ['next'], | 22 | + emits: ['next', 'resetFunc'], |
23 | props: { | 23 | props: { |
24 | echoStep1: Object, | 24 | echoStep1: Object, |
25 | }, | 25 | }, |
@@ -35,15 +35,16 @@ | @@ -35,15 +35,16 @@ | ||
35 | text: '下一步', | 35 | text: '下一步', |
36 | }, | 36 | }, |
37 | submitFunc: customSubmitFunc, | 37 | submitFunc: customSubmitFunc, |
38 | + // resetFunc: customResetFunc, | ||
38 | }); | 39 | }); |
40 | + onMounted(() => { | ||
41 | + setFieldsValue({ ...props.echoStep1 }); | ||
42 | + }); | ||
43 | + | ||
39 | watch( | 44 | watch( |
40 | () => props.echoStep1, | 45 | () => props.echoStep1, |
41 | (newV) => { | 46 | (newV) => { |
42 | - if (newV?.key == 'edit') { | ||
43 | - setFieldsValue({ ...newV }); | ||
44 | - } else { | ||
45 | - resetFields(); | ||
46 | - } | 47 | + setFieldsValue({ ...newV }); |
47 | } | 48 | } |
48 | ); | 49 | ); |
49 | async function customSubmitFunc() { | 50 | async function customSubmitFunc() { |
@@ -53,7 +54,14 @@ | @@ -53,7 +54,14 @@ | ||
53 | } catch (error) {} | 54 | } catch (error) {} |
54 | } | 55 | } |
55 | 56 | ||
56 | - return { register }; | 57 | + const customResetFunc = async () => { |
58 | + await resetFields(); | ||
59 | + // try { | ||
60 | + // emit('resetFunc', resetValue); | ||
61 | + // } catch (error) {} | ||
62 | + }; | ||
63 | + | ||
64 | + return { register, customResetFunc }; | ||
57 | }, | 65 | }, |
58 | }); | 66 | }); |
59 | </script> | 67 | </script> |
@@ -132,7 +132,7 @@ | @@ -132,7 +132,7 @@ | ||
132 | </template> | 132 | </template> |
133 | 133 | ||
134 | <script lang="ts"> | 134 | <script lang="ts"> |
135 | - import { defineComponent, ref, unref, getCurrentInstance, watch, onMounted } from 'vue'; | 135 | + import { defineComponent, ref, unref, getCurrentInstance, watch } from 'vue'; |
136 | import type { alarmListItem } from '../types/index'; | 136 | import type { alarmListItem } from '../types/index'; |
137 | import { CollapseContainer } from '/@/components/Container/index'; | 137 | import { CollapseContainer } from '/@/components/Container/index'; |
138 | import { BasicForm, useForm } from '/@/components/Form'; | 138 | import { BasicForm, useForm } from '/@/components/Form'; |
@@ -278,7 +278,6 @@ | @@ -278,7 +278,6 @@ | ||
278 | }; | 278 | }; |
279 | const getAllFieldsEnabFunc = (v) => { | 279 | const getAllFieldsEnabFunc = (v) => { |
280 | enableObj.value = v; | 280 | enableObj.value = v; |
281 | - console.log(enableObj.value); | ||
282 | }; | 281 | }; |
283 | const getAllFieldsRuleFunc = (v) => { | 282 | const getAllFieldsRuleFunc = (v) => { |
284 | ruleObj.value = v; | 283 | ruleObj.value = v; |
@@ -286,32 +285,43 @@ | @@ -286,32 +285,43 @@ | ||
286 | value: ruleObj.value?.value, | 285 | value: ruleObj.value?.value, |
287 | }; | 286 | }; |
288 | const predicate = { | 287 | const predicate = { |
289 | - predicate: ruleObj.value?.predicate, | 288 | + operation: 'GREATER_OR_EQUAL', |
289 | + value: { | ||
290 | + defaultValue: 12, | ||
291 | + }, | ||
292 | + type: 'NUMERIC', | ||
293 | + }; | ||
294 | + const spec = { | ||
295 | + // type: ruleObj.value?.spec, | ||
296 | + type: 'SIMPLE', | ||
290 | }; | 297 | }; |
298 | + | ||
291 | const getCondition = { | 299 | const getCondition = { |
292 | condition: [ | 300 | condition: [ |
293 | { | 301 | { |
294 | key: { | 302 | key: { |
295 | type: ruleObj.value?.type, | 303 | type: ruleObj.value?.type, |
296 | - key: ruleObj.value?.type, | 304 | + key: ruleObj.value?.key, |
297 | }, | 305 | }, |
298 | valueType: ruleObj.value?.valueType, | 306 | valueType: ruleObj.value?.valueType, |
299 | value, | 307 | value, |
300 | predicate, | 308 | predicate, |
301 | }, | 309 | }, |
302 | ], | 310 | ], |
311 | + spec, | ||
303 | }; | 312 | }; |
304 | 313 | ||
305 | - const spec = { | ||
306 | - spec: ruleObj.value?.spec, | ||
307 | - }; | 314 | + // const spec = { |
315 | + // spec: ruleObj.value?.spec, | ||
316 | + // }; | ||
308 | 317 | ||
309 | const getValueConditon = { | 318 | const getValueConditon = { |
310 | - spec, | 319 | + // spec, |
311 | condition: getCondition, | 320 | condition: getCondition, |
312 | }; | 321 | }; |
313 | Object.assign(additionalObj.value, getValueConditon); | 322 | Object.assign(additionalObj.value, getValueConditon); |
314 | }; | 323 | }; |
324 | + | ||
315 | const handleFormStep3toStep4Next = async () => { | 325 | const handleFormStep3toStep4Next = async () => { |
316 | try { | 326 | try { |
317 | const scheduleValue = { | 327 | const scheduleValue = { |
@@ -338,6 +348,10 @@ | @@ -338,6 +348,10 @@ | ||
338 | createRules: getAdditionalPropObj, | 348 | createRules: getAdditionalPropObj, |
339 | }; | 349 | }; |
340 | const valueRegisterForm = await validateRegisterForm(); | 350 | const valueRegisterForm = await validateRegisterForm(); |
351 | + const valueRegisterFormAndId = { | ||
352 | + alarmType: Object.values(valueRegisterForm)[0], | ||
353 | + }; | ||
354 | + | ||
341 | const valueRegisterFormHighSetting = await validateRegisterFormHighSetting(); | 355 | const valueRegisterFormHighSetting = await validateRegisterFormHighSetting(); |
342 | const valueRegisterFormCreateAlarm = await validateRegisterFormCreateAlarm(); | 356 | const valueRegisterFormCreateAlarm = await validateRegisterFormCreateAlarm(); |
343 | const getValueRegisterFormHighSetting = { | 357 | const getValueRegisterFormHighSetting = { |
@@ -347,7 +361,7 @@ | @@ -347,7 +361,7 @@ | ||
347 | 361 | ||
348 | Object.assign( | 362 | Object.assign( |
349 | emptyObj.value, | 363 | emptyObj.value, |
350 | - valueRegisterForm, | 364 | + valueRegisterFormAndId, |
351 | getValueRegisterFormHighSetting, | 365 | getValueRegisterFormHighSetting, |
352 | getCreateRulesAllObj | 366 | getCreateRulesAllObj |
353 | ); | 367 | ); |
@@ -356,7 +370,6 @@ | @@ -356,7 +370,6 @@ | ||
356 | alarms: alarmss.value, | 370 | alarms: alarmss.value, |
357 | }; | 371 | }; |
358 | Object.assign(getAllFormData.value, getAlarms); | 372 | Object.assign(getAllFormData.value, getAlarms); |
359 | - console.log('第三步的数据', getAllFormData.value); | ||
360 | emit('next', getAllFormData.value); | 373 | emit('next', getAllFormData.value); |
361 | } catch (error) {} | 374 | } catch (error) {} |
362 | }; | 375 | }; |
@@ -369,19 +382,19 @@ | @@ -369,19 +382,19 @@ | ||
369 | isRuleAlarmRuleConditions.value = 1; | 382 | isRuleAlarmRuleConditions.value = 1; |
370 | setTimeout(() => { | 383 | setTimeout(() => { |
371 | openModal1(true); | 384 | openModal1(true); |
372 | - }, 10); | 385 | + }, 50); |
373 | }; | 386 | }; |
374 | const handleOpenEnableRule = () => { | 387 | const handleOpenEnableRule = () => { |
375 | isRuleAlarmRuleConditions.value = 2; | 388 | isRuleAlarmRuleConditions.value = 2; |
376 | setTimeout(() => { | 389 | setTimeout(() => { |
377 | openModal2(true); | 390 | openModal2(true); |
378 | - }, 10); | 391 | + }, 50); |
379 | }; | 392 | }; |
380 | const handleOpenAlaramRuleConditions = () => { | 393 | const handleOpenAlaramRuleConditions = () => { |
381 | isRuleAlarmRuleConditions.value = 3; | 394 | isRuleAlarmRuleConditions.value = 3; |
382 | setTimeout(() => { | 395 | setTimeout(() => { |
383 | openModal3(true); | 396 | openModal3(true); |
384 | - }, 10); | 397 | + }, 50); |
385 | }; | 398 | }; |
386 | 399 | ||
387 | return { | 400 | return { |
1 | { | 1 | { |
2 | - "alarmProfile": { | ||
3 | - "alarmContactId": "string", | ||
4 | - "createTime": "2021-12-20T08:19:59.510Z", | ||
5 | - "creator": "string", | ||
6 | - "defaultConfig": "string", | ||
7 | - "description": "string", | ||
8 | - "deviceProfileId": "string", | ||
9 | - "enabled": true, | ||
10 | - "icon": "string", | ||
11 | - "id": "string", | ||
12 | - "messageMode": "string", | ||
13 | - "name": "string", | ||
14 | - "roleIds": [ | ||
15 | - "string" | ||
16 | - ], | ||
17 | - "tenantExpireTime": "2021-12-20T08:19:59.511Z", | ||
18 | - "tenantId": "string", | ||
19 | - "tenantStatus": "DISABLED", | ||
20 | - "updateTime": "2021-12-20T08:19:59.511Z", | ||
21 | - "updater": "string" | ||
22 | - }, | ||
23 | - "convertJs": "string", | ||
24 | - "createTime": "2021-12-20T08:19:59.511Z", | ||
25 | - "creator": "string", | ||
26 | - "defaultConfig": "string", | ||
27 | - "defaultQueueName": "string", | ||
28 | - "defaultRuleChainId": "string", | ||
29 | - "description": "string", | ||
30 | - "enabled": true, | ||
31 | - "icon": "string", | ||
32 | - "id": "string", | ||
33 | - "name": "string", | ||
34 | "profileData": { | 2 | "profileData": { |
35 | - "configuration": {}, | ||
36 | - "transportConfiguration": {}, | ||
37 | - "provisionConfiguration": { | ||
38 | - "provisionDeviceSecret": "string" | ||
39 | - }, | ||
40 | - "alarms": [ | ||
41 | - { | ||
42 | - "id": "highTemperatureAlarmID", | ||
43 | - "alarmType": "High Temperature Alarm", | ||
44 | - "propagate": true, | ||
45 | - "propagateRelationTypes": [ | ||
46 | - "string" | ||
47 | - ], | ||
48 | - "createRules": { | ||
49 | - "additionalProp1": { | ||
50 | - "condition": { | ||
51 | - "condition": [ | ||
52 | - { | ||
53 | - "key": { | ||
54 | - "type": "TIME_SERIES", | ||
55 | - "key": "temp" | ||
56 | - }, | ||
57 | - "valueType": "NUMERIC", | ||
58 | - "value": {}, | ||
59 | - "predicate": {} | ||
60 | - } | ||
61 | - ], | ||
62 | - "spec": {} | ||
63 | - }, | ||
64 | - "schedule": { | ||
65 | - "type": "ANY_TIME" | ||
66 | - }, | ||
67 | - "alarmDetails": "string", | ||
68 | - "dashboardId": { | ||
69 | - "id": "784f394c-42b6-435a-983c-b7beff2784f9", | ||
70 | - "entityType": "DASHBOARD" | ||
71 | - } | ||
72 | - }, | ||
73 | - "additionalProp2": { | ||
74 | - "condition": { | ||
75 | - "condition": [ | ||
76 | - { | ||
77 | - "key": { | ||
78 | - "type": "TIME_SERIES", | ||
79 | - "key": "temp" | ||
80 | - }, | ||
81 | - "valueType": "NUMERIC", | ||
82 | - "value": {}, | ||
83 | - "predicate": {} | ||
84 | - } | ||
85 | - ], | ||
86 | - "spec": {} | ||
87 | - }, | ||
88 | - "schedule": { | ||
89 | - "type": "ANY_TIME" | ||
90 | - }, | ||
91 | - "alarmDetails": "string", | ||
92 | - "dashboardId": { | ||
93 | - "id": "784f394c-42b6-435a-983c-b7beff2784f9", | ||
94 | - "entityType": "DASHBOARD" | ||
95 | - } | ||
96 | - }, | ||
97 | - "additionalProp3": { | ||
98 | - "condition": { | ||
99 | - "condition": [ | ||
100 | - { | ||
101 | - "key": { | ||
102 | - "type": "TIME_SERIES", | ||
103 | - "key": "temp" | ||
104 | - }, | ||
105 | - "valueType": "NUMERIC", | ||
106 | - "value": {}, | ||
107 | - "predicate": {} | ||
108 | - } | ||
109 | - ], | ||
110 | - "spec": {} | ||
111 | - }, | ||
112 | - "schedule": { | ||
113 | - "type": "ANY_TIME" | ||
114 | - }, | ||
115 | - "alarmDetails": "string", | ||
116 | - "dashboardId": { | ||
117 | - "id": "784f394c-42b6-435a-983c-b7beff2784f9", | ||
118 | - "entityType": "DASHBOARD" | ||
119 | - } | ||
120 | - } | ||
121 | - }, | ||
122 | - "clearRule": { | ||
123 | - "condition": { | ||
124 | - "condition": [ | ||
125 | - { | ||
126 | - "key": { | ||
127 | - "type": "TIME_SERIES", | ||
128 | - "key": "temp" | ||
129 | - }, | ||
130 | - "valueType": "NUMERIC", | ||
131 | - "value": {}, | ||
132 | - "predicate": {} | ||
133 | - } | ||
134 | - ], | ||
135 | - "spec": {} | ||
136 | - }, | ||
137 | - "schedule": { | ||
138 | - "type": "ANY_TIME" | ||
139 | - }, | ||
140 | - "alarmDetails": "string", | ||
141 | - "dashboardId": { | ||
142 | - "id": "784f394c-42b6-435a-983c-b7beff2784f9", | ||
143 | - "entityType": "DASHBOARD" | ||
144 | - } | ||
145 | - } | ||
146 | - } | ||
147 | - ] | 3 | + "configuration": { |
4 | + "maxDevices": "1", | ||
5 | + "maxAssets": "1", | ||
6 | + "maxCustomers": "1", | ||
7 | + "maxUsers": "1", | ||
8 | + "maxDashboards": "1", | ||
9 | + "maxRuleChains": "1", | ||
10 | + "maxResourcesInBytes": "1", | ||
11 | + "maxOtaPackagesInBytes": "1", | ||
12 | + "maxTransportMessages": "1", | ||
13 | + "maxTransportDataPoints": "1", | ||
14 | + "maxREExecutions": "1", | ||
15 | + "maxJSExecutions": "1", | ||
16 | + "maxDPStorageDays": "1", | ||
17 | + "defaultStorageTtlDays": "1", | ||
18 | + "alarmsTtlDays": "1", | ||
19 | + "rpcTtlDays": "1", | ||
20 | + "maxRuleNodeExecutionsPerMessage": "1", | ||
21 | + "maxEmails": "1", | ||
22 | + "maxSms": "1", | ||
23 | + "maxCreatedAlarms": "1", | ||
24 | + "transportTenantMsgRateLimit": "1", | ||
25 | + "transportTenantTelemetryMsgRateLimit": "1", | ||
26 | + "transportTenantTelemetryDataPointsRateLimit": "1", | ||
27 | + "transportDeviceMsgRateLimit": "1", | ||
28 | + "transportDeviceTelemetryMsgRateLimit": "1", | ||
29 | + "transportDeviceTelemetryDataPointsRateLimit": "1" | ||
30 | + } | ||
148 | }, | 31 | }, |
149 | - "roleIds": [ | ||
150 | - "string" | ||
151 | - ], | ||
152 | - "tbProfileId": "string", | ||
153 | - "tenantExpireTime": "2021-12-20T08:19:59.511Z", | ||
154 | - "tenantId": "string", | ||
155 | - "tenantStatus": "DISABLED", | ||
156 | - "transportType": "COAP", | ||
157 | - "updateTime": "2021-12-20T08:19:59.511Z", | ||
158 | - "updater": "string" | 32 | + "name": "1", |
33 | + "isolatedTbRuleEngine": true, | ||
34 | + "description": "1" | ||
159 | } | 35 | } |
1 | { | 1 | { |
2 | - "name": "设备配置1", | ||
3 | - "description": "设备配置1", | ||
4 | - "transportType": "COAP", | 2 | + "name": "租户配置测试1", |
3 | + "isolatedTbCore": true, | ||
4 | + "isolatedTbRuleEngine": null, | ||
5 | "profileData": { | 5 | "profileData": { |
6 | - "alarms": [ | ||
7 | - { | ||
8 | - "alarmType": "设备配置1", | ||
9 | - "propagate": true, | ||
10 | - "propagateRelationTypes": [ | ||
11 | - "设备配置1" | ||
12 | - ], | ||
13 | - "createRules": { | ||
14 | - "WARNING": { | ||
15 | - "alarmDetails": "设备配置1", | ||
16 | - "schedule": { | ||
17 | - "type": "SPECIFIC_TIME" | ||
18 | - }, | ||
19 | - "spec": { | ||
20 | - "spec": "HOURS" | ||
21 | - }, | ||
22 | - "condition": { | ||
23 | - "condition": [ | ||
24 | - { | ||
25 | - "key": { | ||
26 | - "type": "TIME_SERIES", | ||
27 | - "key": "TIME_SERIES" | ||
28 | - }, | ||
29 | - "valueType": "CURRENT_DEVICE", | ||
30 | - "value": { | ||
31 | - "value": "设备配置1" | ||
32 | - }, | ||
33 | - "predicate": { | ||
34 | - "predicate": "设备配置1" | ||
35 | - } | ||
36 | - } | ||
37 | - ] | ||
38 | - } | ||
39 | - } | ||
40 | - } | ||
41 | - } | ||
42 | - ] | 6 | + "configuration": { |
7 | + "maxDevices": 1, | ||
8 | + "maxAssets": 1, | ||
9 | + "maxCustomers": 1, | ||
10 | + "maxUsers": 1, | ||
11 | + "maxDashboards": 1, | ||
12 | + "maxRuleChains": 1, | ||
13 | + "maxResourcesInBytes": 1, | ||
14 | + "maxOtaPackagesInBytes": 1, | ||
15 | + "transportTenantMsgRateLimit": "1", | ||
16 | + "transportTenantTelemetryMsgRateLimit": "1", | ||
17 | + "transportTenantTelemetryDataPointsRateLimit": "1", | ||
18 | + "transportDeviceMsgRateLimit": "当前客户", | ||
19 | + "transportDeviceTelemetryMsgRateLimit": "1", | ||
20 | + "transportDeviceTelemetryDataPointsRateLimit": "d", | ||
21 | + "maxTransportMessages": 1, | ||
22 | + "maxTransportDataPoints": 1, | ||
23 | + "maxREExecutions": 1, | ||
24 | + "maxJSExecutions": 1, | ||
25 | + "maxDPStorageDays": 1, | ||
26 | + "maxRuleNodeExecutionsPerMessage": 1, | ||
27 | + "maxEmails": 1, | ||
28 | + "maxSms": 1, | ||
29 | + "maxCreatedAlarms": 1, | ||
30 | + "defaultStorageTtlDays": 1, | ||
31 | + "alarmsTtlDays": 1, | ||
32 | + "rpcTtlDays": 1, | ||
33 | + "type": "DEFAULT" | ||
34 | + } | ||
43 | }, | 35 | }, |
44 | - "alarmProfile": { | ||
45 | - "alarmContactId": "ce350734-9504-48c2-82d2-277e3fe5583f", | ||
46 | - "messageMode": "PHONE_MESSAGE" | ||
47 | - } | 36 | + "description": "1" |
48 | } | 37 | } |
src/views/device/profile/step/cpns/3.json
deleted
100644 → 0
1 | -{ | ||
2 | - "name": "设备配置", | ||
3 | - "description": "设备配置", | ||
4 | - "transportType": "COAP", | ||
5 | - "profileData": { | ||
6 | - "alarms": [ | ||
7 | - { | ||
8 | - "alarmType": "设备配置", | ||
9 | - "propagate": true, | ||
10 | - "propagateRelationTypes": [ | ||
11 | - "设备配置" | ||
12 | - ], | ||
13 | - "createRules": { | ||
14 | - "MINOR": { | ||
15 | - "schedule": { | ||
16 | - "type": "SPECIFIC_TIME" | ||
17 | - } | ||
18 | - } | ||
19 | - } | ||
20 | - } | ||
21 | - ] | ||
22 | - }, | ||
23 | - "alarmProfile": { | ||
24 | - "alarmContactId": "ce350734-9504-48c2-82d2-277e3fe5583f", | ||
25 | - "messageMode": "DING_TALK_MESSAGE" | ||
26 | - } | ||
27 | -} |
1 | import { FormSchema, BasicColumn } from '/@/components/Table'; | 1 | import { FormSchema, BasicColumn } from '/@/components/Table'; |
2 | +import { DescItem } from '/@/components/Description/index'; | ||
2 | 3 | ||
3 | /** | 4 | /** |
4 | * 所使用的枚举值 | 5 | * 所使用的枚举值 |
@@ -8,7 +9,15 @@ export enum TriggerEnum { | @@ -8,7 +9,15 @@ export enum TriggerEnum { | ||
8 | IS_DEVICE_ACT = '', | 9 | IS_DEVICE_ACT = '', |
9 | IS_TIME_ACT = 'TIME_SERIES', | 10 | IS_TIME_ACT = 'TIME_SERIES', |
10 | IS_SCENE_ACT = 'CONSTANT', | 11 | IS_SCENE_ACT = 'CONSTANT', |
12 | + IS_CURRENT_CUSTOMER = 'CURRENT_CUSTOMER', | ||
13 | + IS_CURRENT_DEVICE = 'CURRENT_DEVICE', | ||
11 | } | 14 | } |
15 | +export const isCurrentCus = (type: string) => { | ||
16 | + return type === TriggerEnum.IS_CURRENT_CUSTOMER; | ||
17 | +}; | ||
18 | +export const isCurrentDev = (type: string) => { | ||
19 | + return type === TriggerEnum.IS_CURRENT_DEVICE; | ||
20 | +}; | ||
12 | 21 | ||
13 | export const isShiDu = (type: string) => { | 22 | export const isShiDu = (type: string) => { |
14 | return type === TriggerEnum.IS_DEVICE_ACT; | 23 | return type === TriggerEnum.IS_DEVICE_ACT; |
@@ -29,14 +38,37 @@ export const columns: BasicColumn[] = [ | @@ -29,14 +38,37 @@ export const columns: BasicColumn[] = [ | ||
29 | }, | 38 | }, |
30 | { | 39 | { |
31 | title: '键类型', | 40 | title: '键类型', |
32 | - dataIndex: 'value', | 41 | + dataIndex: 'type', |
42 | + width: 200, | ||
43 | + }, | ||
44 | +]; | ||
45 | +export const columnsView: BasicColumn[] = [ | ||
46 | + { | ||
47 | + title: '键名', | ||
48 | + dataIndex: 'key', | ||
49 | + width: 200, | ||
50 | + }, | ||
51 | + { | ||
52 | + title: '键类型', | ||
53 | + dataIndex: 'type', | ||
33 | width: 200, | 54 | width: 200, |
34 | }, | 55 | }, |
35 | ]; | 56 | ]; |
36 | 57 | ||
37 | -export const formSchema: FormSchema[] = [ | 58 | +export const DescDetailSchema: DescItem[] = [ |
59 | + { | ||
60 | + field: 'key', | ||
61 | + label: '键名', | ||
62 | + }, | ||
38 | { | 63 | { |
39 | field: 'type', | 64 | field: 'type', |
65 | + label: '键类型', | ||
66 | + }, | ||
67 | +]; | ||
68 | + | ||
69 | +export const formSchema: FormSchema[] = [ | ||
70 | + { | ||
71 | + field: 'type1', | ||
40 | label: '条件类型', | 72 | label: '条件类型', |
41 | colProps: { span: 24 }, | 73 | colProps: { span: 24 }, |
42 | component: 'Select', | 74 | component: 'Select', |
@@ -50,23 +82,23 @@ export const formSchema: FormSchema[] = [ | @@ -50,23 +82,23 @@ export const formSchema: FormSchema[] = [ | ||
50 | }, | 82 | }, |
51 | }, | 83 | }, |
52 | { | 84 | { |
53 | - field: 'valueType', | 85 | + field: 'valueType1', |
54 | label: '动态源类型', | 86 | label: '动态源类型', |
55 | colProps: { span: 24 }, | 87 | colProps: { span: 24 }, |
56 | component: 'Select', | 88 | component: 'Select', |
57 | componentProps: { | 89 | componentProps: { |
58 | placeholder: '请选择动态源类型', | 90 | placeholder: '请选择动态源类型', |
59 | options: [ | 91 | options: [ |
60 | - { label: '无动态值', value: '' }, | ||
61 | - { label: '当前租户', value: 'CURRENT_CUSTOMER' }, | ||
62 | - { label: '当前客户', value: 'CURRENT_CUSTOMER' }, | ||
63 | - { label: '当前设备', value: 'CURRENT_DEVICE' }, | 92 | + { label: '无动态值', value: 'STRING' }, |
93 | + { label: '当前租户', value: 'NUMERIC' }, | ||
94 | + { label: '当前客户', value: 'BOOLEAN' }, | ||
95 | + { label: '当前设备', value: 'NUMERIC' }, | ||
64 | ], | 96 | ], |
65 | }, | 97 | }, |
66 | ifShow: ({ values }) => isWenDu(Reflect.get(values, 'type')), | 98 | ifShow: ({ values }) => isWenDu(Reflect.get(values, 'type')), |
67 | }, | 99 | }, |
68 | { | 100 | { |
69 | - field: 'value', | 101 | + field: 'value1', |
70 | label: '源属性', | 102 | label: '源属性', |
71 | colProps: { span: 24 }, | 103 | colProps: { span: 24 }, |
72 | component: 'Input', | 104 | component: 'Input', |
@@ -76,23 +108,23 @@ export const formSchema: FormSchema[] = [ | @@ -76,23 +108,23 @@ export const formSchema: FormSchema[] = [ | ||
76 | ifShow: ({ values }) => isWenDu(Reflect.get(values, 'type')), | 108 | ifShow: ({ values }) => isWenDu(Reflect.get(values, 'type')), |
77 | }, | 109 | }, |
78 | { | 110 | { |
79 | - field: 'valueType', | 111 | + field: 'valueType1', |
80 | label: '动态源类型', | 112 | label: '动态源类型', |
81 | colProps: { span: 24 }, | 113 | colProps: { span: 24 }, |
82 | component: 'Select', | 114 | component: 'Select', |
83 | componentProps: { | 115 | componentProps: { |
84 | placeholder: '请选择动态源类型', | 116 | placeholder: '请选择动态源类型', |
85 | options: [ | 117 | options: [ |
86 | - { label: '无动态值', value: '' }, | ||
87 | - { label: '当前租户', value: 'CURRENT_TENANT' }, | ||
88 | - { label: '当前客户', value: 'CURRENT_CUSTOMER' }, | ||
89 | - { label: '当前设备', value: 'CURRENT_DEVICE' }, | 118 | + { label: '无动态值', value: 'BOOLEAN' }, |
119 | + { label: '当前租户', value: 'STRING' }, | ||
120 | + { label: '当前客户', value: 'NUMERIC' }, | ||
121 | + { label: '当前设备', value: 'COMPLEX' }, | ||
90 | ], | 122 | ], |
91 | }, | 123 | }, |
92 | ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'type')), | 124 | ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'type')), |
93 | }, | 125 | }, |
94 | { | 126 | { |
95 | - field: 'value', | 127 | + field: 'value1', |
96 | label: '源属性', | 128 | label: '源属性', |
97 | colProps: { span: 24 }, | 129 | colProps: { span: 24 }, |
98 | component: 'Input', | 130 | component: 'Input', |
@@ -102,7 +134,7 @@ export const formSchema: FormSchema[] = [ | @@ -102,7 +134,7 @@ export const formSchema: FormSchema[] = [ | ||
102 | ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'type')), | 134 | ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'type')), |
103 | }, | 135 | }, |
104 | { | 136 | { |
105 | - field: 'predicate', | 137 | + field: 'predicate1', |
106 | label: '持续时间值', | 138 | label: '持续时间值', |
107 | colProps: { span: 24 }, | 139 | colProps: { span: 24 }, |
108 | component: 'Input', | 140 | component: 'Input', |
@@ -112,7 +144,7 @@ export const formSchema: FormSchema[] = [ | @@ -112,7 +144,7 @@ export const formSchema: FormSchema[] = [ | ||
112 | ifShow: ({ values }) => isWenDu(Reflect.get(values, 'type')), | 144 | ifShow: ({ values }) => isWenDu(Reflect.get(values, 'type')), |
113 | }, | 145 | }, |
114 | { | 146 | { |
115 | - field: 'spec', | 147 | + field: 'spec1', |
116 | label: '时间单位', | 148 | label: '时间单位', |
117 | colProps: { span: 24 }, | 149 | colProps: { span: 24 }, |
118 | component: 'Select', | 150 | component: 'Select', |
@@ -138,4 +170,13 @@ export const formSchema: FormSchema[] = [ | @@ -138,4 +170,13 @@ export const formSchema: FormSchema[] = [ | ||
138 | rules: [{ message: '事件计数应在1到2147483637之间', trigger: 'blur' }], | 170 | rules: [{ message: '事件计数应在1到2147483637之间', trigger: 'blur' }], |
139 | ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'type')), | 171 | ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'type')), |
140 | }, | 172 | }, |
173 | + { | ||
174 | + field: '', | ||
175 | + label: '', | ||
176 | + component: 'Checkbox', | ||
177 | + renderComponentContent: 'Inherit from owner', | ||
178 | + ifShow: ({ values }) => | ||
179 | + isCurrentCus(Reflect.get(values, 'valueType')) || | ||
180 | + isCurrentDev(Reflect.get(values, 'valueType')), | ||
181 | + }, | ||
141 | ]; | 182 | ]; |
@@ -5,9 +5,9 @@ import { FormSchema } from '/@/components/Table'; | @@ -5,9 +5,9 @@ import { FormSchema } from '/@/components/Table'; | ||
5 | */ | 5 | */ |
6 | 6 | ||
7 | export enum TriggerEnum { | 7 | export enum TriggerEnum { |
8 | - IS_DEVICE_ACT = '1', | ||
9 | - IS_TIME_ACT = '2', | ||
10 | - IS_SCENE_ACT = '3', | 8 | + IS_DEVICE_ACT = '属性', |
9 | + IS_TIME_ACT = 'TIME_SERIES', | ||
10 | + IS_SCENE_ACT = '常量', | ||
11 | } | 11 | } |
12 | 12 | ||
13 | export const isShiDu = (type: string) => { | 13 | export const isShiDu = (type: string) => { |
@@ -23,73 +23,73 @@ export const isTimeAll = (type: string) => { | @@ -23,73 +23,73 @@ export const isTimeAll = (type: string) => { | ||
23 | 23 | ||
24 | export const formSchema: FormSchema[] = [ | 24 | export const formSchema: FormSchema[] = [ |
25 | { | 25 | { |
26 | - field: 'default', | 26 | + field: 'type', |
27 | label: '键类型', | 27 | label: '键类型', |
28 | colProps: { span: 24 }, | 28 | colProps: { span: 24 }, |
29 | component: 'Select', | 29 | component: 'Select', |
30 | componentProps: { | 30 | componentProps: { |
31 | placeholder: '请选择键类型', | 31 | placeholder: '请选择键类型', |
32 | options: [ | 32 | options: [ |
33 | - { label: '属性', value: '1' }, | ||
34 | - { label: 'Timeseries', value: '2' }, | ||
35 | - { label: '常量', value: '3' }, | 33 | + { label: '属性', value: '属性' }, |
34 | + { label: 'Timeseries', value: 'TIME_SERIES' }, | ||
35 | + { label: '常量', value: '常量' }, | ||
36 | ], | 36 | ], |
37 | }, | 37 | }, |
38 | }, | 38 | }, |
39 | { | 39 | { |
40 | - field: '2', | 40 | + field: 'key', |
41 | label: '键名', | 41 | label: '键名', |
42 | colProps: { span: 24 }, | 42 | colProps: { span: 24 }, |
43 | component: 'Select', | 43 | component: 'Select', |
44 | componentProps: { | 44 | componentProps: { |
45 | placeholder: '请选择键名', | 45 | placeholder: '请选择键名', |
46 | options: [ | 46 | options: [ |
47 | - { label: 'active', value: '' }, | ||
48 | - { label: 'inactivityAlarmTime', value: '' }, | ||
49 | - { label: 'lastActivityTime', value: '' }, | ||
50 | - { label: 'lastConnectTime', value: '' }, | ||
51 | - { label: 'lastDisconnectTime', value: '' }, | 47 | + { label: 'active', value: 'active' }, |
48 | + { label: 'inactivityAlarmTime', value: 'inactivityAlarmTime' }, | ||
49 | + { label: 'lastActivityTime', value: 'lastActivityTime' }, | ||
50 | + { label: 'lastConnectTime', value: 'lastConnectTime' }, | ||
51 | + { label: 'lastDisconnectTime', value: 'lastDisconnectTime' }, | ||
52 | ], | 52 | ], |
53 | }, | 53 | }, |
54 | - ifShow: ({ values }) => isShiDu(Reflect.get(values, 'default')), | 54 | + ifShow: ({ values }) => isShiDu(Reflect.get(values, 'type')), |
55 | }, | 55 | }, |
56 | { | 56 | { |
57 | - field: '21', | 57 | + field: 'key', |
58 | label: '键名', | 58 | label: '键名', |
59 | colProps: { span: 24 }, | 59 | colProps: { span: 24 }, |
60 | component: 'Select', | 60 | component: 'Select', |
61 | componentProps: { | 61 | componentProps: { |
62 | placeholder: '请选择键名', | 62 | placeholder: '请选择键名', |
63 | options: [ | 63 | options: [ |
64 | - { label: 'CO2', value: '' }, | ||
65 | - { label: 'temp', value: '' }, | ||
66 | - { label: 'temp', value: '' }, | 64 | + { label: 'CO2', value: 'CO2' }, |
65 | + { label: 'temp', value: 'temp' }, | ||
66 | + { label: 'wet', value: 'wet' }, | ||
67 | ], | 67 | ], |
68 | }, | 68 | }, |
69 | - ifShow: ({ values }) => isWenDu(Reflect.get(values, 'default')), | 69 | + ifShow: ({ values }) => isWenDu(Reflect.get(values, 'type')), |
70 | }, | 70 | }, |
71 | { | 71 | { |
72 | - field: '22', | 72 | + field: 'key', |
73 | label: '键名', | 73 | label: '键名', |
74 | colProps: { span: 24 }, | 74 | colProps: { span: 24 }, |
75 | component: 'Input', | 75 | component: 'Input', |
76 | componentProps: { | 76 | componentProps: { |
77 | placeholder: '请输入键名', | 77 | placeholder: '请输入键名', |
78 | }, | 78 | }, |
79 | - ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'default')), | 79 | + ifShow: ({ values }) => isTimeAll(Reflect.get(values, 'type')), |
80 | }, | 80 | }, |
81 | { | 81 | { |
82 | - field: '3', | 82 | + field: 'valueType', |
83 | label: '值类型', | 83 | label: '值类型', |
84 | colProps: { span: 24 }, | 84 | colProps: { span: 24 }, |
85 | component: 'Select', | 85 | component: 'Select', |
86 | componentProps: { | 86 | componentProps: { |
87 | placeholder: '请选择值类型', | 87 | placeholder: '请选择值类型', |
88 | options: [ | 88 | options: [ |
89 | - { label: '字符串', value: '' }, | ||
90 | - { label: '数字', value: '' }, | ||
91 | - { label: '布尔值', value: '' }, | ||
92 | - { label: '日期时间', value: '' }, | 89 | + { label: '字符串', value: 'STRING' }, |
90 | + { label: '数字', value: 'NUMERIC' }, | ||
91 | + { label: '布尔值', value: 'BOOLEAN' }, | ||
92 | + { label: '日期时间', value: 'COMPLEX' }, | ||
93 | ], | 93 | ], |
94 | }, | 94 | }, |
95 | }, | 95 | }, |
@@ -15,28 +15,37 @@ | @@ -15,28 +15,37 @@ | ||
15 | import { BasicModal, useModalInner } from '/@/components/Modal'; | 15 | import { BasicModal, useModalInner } from '/@/components/Modal'; |
16 | import { BasicForm, useForm } from '/@/components/Form'; | 16 | import { BasicForm, useForm } from '/@/components/Form'; |
17 | import { formSchema } from './config'; | 17 | import { formSchema } from './config'; |
18 | - // import { useMessage } from '/@/hooks/web/useMessage'; | ||
19 | 18 | ||
20 | export default defineComponent({ | 19 | export default defineComponent({ |
21 | name: 'index', | 20 | name: 'index', |
22 | components: { BasicModal, BasicForm }, | 21 | components: { BasicModal, BasicForm }, |
23 | emits: ['success', 'register'], | 22 | emits: ['success', 'register'], |
24 | - setup() { | ||
25 | - // const { createMessage } = useMessage(); | 23 | + setup(_, { emit }) { |
26 | const isUpdate = ref(true); | 24 | const isUpdate = ref(true); |
25 | + const getValue: any = ref(null); | ||
27 | const getTitle = computed(() => (!unref(isUpdate) ? '新增键名筛选器' : '编辑键名筛选器')); | 26 | const getTitle = computed(() => (!unref(isUpdate) ? '新增键名筛选器' : '编辑键名筛选器')); |
28 | - const [register] = useModalInner((data) => { | ||
29 | - isUpdate.value = !!data?.isUpdate; | ||
30 | - }); | ||
31 | - const [registerForm] = useForm({ | 27 | + const [registerForm, { getFieldsValue, setFieldsValue, resetFields }] = useForm({ |
32 | labelWidth: 120, | 28 | labelWidth: 120, |
33 | schemas: formSchema, | 29 | schemas: formSchema, |
34 | }); | 30 | }); |
31 | + const [register, { closeModal }] = useModalInner(async (data) => { | ||
32 | + isUpdate.value = !!data?.isUpdate; | ||
33 | + if (unref(isUpdate)) { | ||
34 | + await setFieldsValue({ | ||
35 | + ...data.record, | ||
36 | + }); | ||
37 | + } else { | ||
38 | + await resetFields(); | ||
39 | + } | ||
40 | + }); | ||
41 | + | ||
35 | const handleSubmit = () => { | 42 | const handleSubmit = () => { |
36 | - console.log(1); | 43 | + getValue.value = getFieldsValue(); |
44 | + emit('success', getValue.value); | ||
45 | + closeModal(); | ||
37 | }; | 46 | }; |
38 | const handleCancel = () => { | 47 | const handleCancel = () => { |
39 | - console.log(1); | 48 | + return; |
40 | }; | 49 | }; |
41 | return { | 50 | return { |
42 | registerForm, | 51 | registerForm, |
@@ -7,7 +7,7 @@ | @@ -7,7 +7,7 @@ | ||
7 | @ok="handleSubmit" | 7 | @ok="handleSubmit" |
8 | > | 8 | > |
9 | <CollapseContainer title="键名筛选器" class="border mb-8"> | 9 | <CollapseContainer title="键名筛选器" class="border mb-8"> |
10 | - <BasicTable @register="registerTable"> | 10 | + <BasicTable :resizeHeightOffset="200" @register="registerTable" :dataSource="getTableApiData"> |
11 | <template #toolbar> | 11 | <template #toolbar> |
12 | <a-button type="primary" @click="handleAddKey"> 新增键名筛选器 </a-button> | 12 | <a-button type="primary" @click="handleAddKey"> 新增键名筛选器 </a-button> |
13 | </template> | 13 | </template> |
@@ -33,18 +33,20 @@ | @@ -33,18 +33,20 @@ | ||
33 | </template> | 33 | </template> |
34 | </BasicTable> | 34 | </BasicTable> |
35 | </CollapseContainer> | 35 | </CollapseContainer> |
36 | - <CollapseContainer title="筛选器预览" class="border mb-8"><div>1</div> </CollapseContainer> | 36 | + <CollapseContainer title="筛选器预览" class="border mb-8"> |
37 | + <BasicTable :resizeHeightOffset="200" :columns="columnsView" :dataSource="detailData" /> | ||
38 | + </CollapseContainer> | ||
37 | <BasicForm :showResetButton="false" :showSubmitButton="false" @register="registerForm" /> | 39 | <BasicForm :showResetButton="false" :showSubmitButton="false" @register="registerForm" /> |
38 | </BasicModal> | 40 | </BasicModal> |
39 | - <KeyValueModal @register="registerModal" /> | 41 | + <KeyValueModal @register="registerModal" @success="handleSuccess" /> |
40 | </template> | 42 | </template> |
41 | <script lang="ts"> | 43 | <script lang="ts"> |
42 | - import { defineComponent, ref, computed, unref } from 'vue'; | 44 | + import { defineComponent, ref, computed, unref, onMounted } from 'vue'; |
43 | import { BasicModal, useModalInner } from '/@/components/Modal'; | 45 | import { BasicModal, useModalInner } from '/@/components/Modal'; |
44 | import { BasicForm, useForm } from '/@/components/Form'; | 46 | import { BasicForm, useForm } from '/@/components/Form'; |
45 | - import { formSchema, columns } from './config'; | 47 | + import { formSchema, columns, DescDetailSchema, columnsView } from './config'; |
46 | import { CollapseContainer } from '/@/components/Container/index'; | 48 | import { CollapseContainer } from '/@/components/Container/index'; |
47 | - import { BasicTable, useTable } from '/@/components/Table'; | 49 | + import { BasicTable, useTable, TableAction } from '/@/components/Table'; |
48 | import { useModal } from '/@/components/Modal'; | 50 | import { useModal } from '/@/components/Modal'; |
49 | import KeyValueModal from './cpns/index.vue'; | 51 | import KeyValueModal from './cpns/index.vue'; |
50 | 52 | ||
@@ -56,23 +58,25 @@ | @@ -56,23 +58,25 @@ | ||
56 | BasicForm, | 58 | BasicForm, |
57 | CollapseContainer, | 59 | CollapseContainer, |
58 | BasicTable, | 60 | BasicTable, |
61 | + TableAction, | ||
59 | }, | 62 | }, |
60 | emits: ['success', 'register', 'getAllFieldsRule'], | 63 | emits: ['success', 'register', 'getAllFieldsRule'], |
61 | setup(_, { emit }) { | 64 | setup(_, { emit }) { |
65 | + const getTableApiData: any = ref([]); | ||
66 | + const detailData: any = ref([]); | ||
67 | + const receiveData: any = ref(null); | ||
62 | const isUpdate = ref(true); | 68 | const isUpdate = ref(true); |
63 | const [registerForm, { getFieldsValue }] = useForm({ | 69 | const [registerForm, { getFieldsValue }] = useForm({ |
64 | labelWidth: 120, | 70 | labelWidth: 120, |
65 | schemas: formSchema, | 71 | schemas: formSchema, |
66 | }); | 72 | }); |
67 | const [registerModal, { openModal }] = useModal(); | 73 | const [registerModal, { openModal }] = useModal(); |
68 | - | ||
69 | const getTitle = computed(() => (!unref(isUpdate) ? '添加报警规则条件' : '编辑报警规则条件')); | 74 | const getTitle = computed(() => (!unref(isUpdate) ? '添加报警规则条件' : '编辑报警规则条件')); |
70 | const [register, { closeModal }] = useModalInner((data) => { | 75 | const [register, { closeModal }] = useModalInner((data) => { |
71 | isUpdate.value = !!data?.isUpdate; | 76 | isUpdate.value = !!data?.isUpdate; |
72 | }); | 77 | }); |
73 | - const [registerTable] = useTable({ | 78 | + const [registerTable, { reload }] = useTable({ |
74 | title: '键名筛选器', | 79 | title: '键名筛选器', |
75 | - // api: deviceConfigGetQuery, | ||
76 | columns, | 80 | columns, |
77 | bordered: true, | 81 | bordered: true, |
78 | showIndexColumn: false, | 82 | showIndexColumn: false, |
@@ -83,9 +87,16 @@ | @@ -83,9 +87,16 @@ | ||
83 | slots: { customRender: 'action' }, | 87 | slots: { customRender: 'action' }, |
84 | }, | 88 | }, |
85 | }); | 89 | }); |
90 | + | ||
86 | const handleSubmit = () => { | 91 | const handleSubmit = () => { |
87 | - const values = getFieldsValue(); | ||
88 | - emit('getAllFieldsRule', values); | 92 | + if (unref(isUpdate.value)) { |
93 | + console.log(1); | ||
94 | + const values = getFieldsValue(); | ||
95 | + getTableApiData.value.push(values); | ||
96 | + detailData.value.push(values); | ||
97 | + } | ||
98 | + // const values = getFieldsValue(); | ||
99 | + emit('getAllFieldsRule', receiveData.value); | ||
89 | closeModal(); | 100 | closeModal(); |
90 | }; | 101 | }; |
91 | const handleAddKey = () => { | 102 | const handleAddKey = () => { |
@@ -93,15 +104,38 @@ | @@ -93,15 +104,38 @@ | ||
93 | isUpdate: false, | 104 | isUpdate: false, |
94 | }); | 105 | }); |
95 | }; | 106 | }; |
96 | - const handleEdit = () => { | 107 | + const handleEdit = (record: Recordable) => { |
97 | openModal(true, { | 108 | openModal(true, { |
98 | isUpdate: true, | 109 | isUpdate: true, |
110 | + record, | ||
99 | }); | 111 | }); |
100 | }; | 112 | }; |
101 | - const handleDelete = () => { | ||
102 | - console.log(1); | 113 | + const handleDelete = (record: Recordable) => { |
114 | + console.log(record); | ||
115 | + getTableApiData.value.splice(0, 1); | ||
116 | + detailData.value.splice(0, 1); | ||
117 | + reload(); | ||
103 | }; | 118 | }; |
119 | + const handleSuccess = (v) => { | ||
120 | + receiveData.value = v; | ||
121 | + console.log(receiveData.value); | ||
122 | + setTimeout(() => { | ||
123 | + doFunc(); | ||
124 | + }, 10); | ||
125 | + }; | ||
126 | + const doFunc = () => { | ||
127 | + getTableApiData.value.push(receiveData.value); | ||
128 | + detailData.value.push(receiveData.value); | ||
129 | + }; | ||
130 | + onMounted(() => { | ||
131 | + console.log(1); | ||
132 | + }); | ||
104 | return { | 133 | return { |
134 | + columnsView, | ||
135 | + DescDetailSchema, | ||
136 | + detailData, | ||
137 | + getTableApiData, | ||
138 | + handleSuccess, | ||
105 | handleEdit, | 139 | handleEdit, |
106 | handleDelete, | 140 | handleDelete, |
107 | registerModal, | 141 | registerModal, |
@@ -21,10 +21,21 @@ export const step1Schemas: FormSchema[] = [ | @@ -21,10 +21,21 @@ export const step1Schemas: FormSchema[] = [ | ||
21 | label: '请选择规则链', | 21 | label: '请选择规则链', |
22 | component: 'ApiSelect', | 22 | component: 'ApiSelect', |
23 | componentProps: { | 23 | componentProps: { |
24 | + // api: async () => { | ||
25 | + // const data = await deviceConfigGetRuleChain(); | ||
26 | + // const returnData = data.map((m) => { | ||
27 | + // return { | ||
28 | + // labelField: m.name, | ||
29 | + // valueField: m.id.id, | ||
30 | + // }; | ||
31 | + // }); | ||
32 | + // console.log(returnData); | ||
33 | + // return returnData; | ||
34 | + // }, | ||
24 | api: deviceConfigGetRuleChain, | 35 | api: deviceConfigGetRuleChain, |
25 | labelField: 'name', | 36 | labelField: 'name', |
26 | - valueField: 'type', | ||
27 | - resultField: '', | 37 | + valueField: '', |
38 | + // resultField: '', | ||
28 | }, | 39 | }, |
29 | }, | 40 | }, |
30 | // { | 41 | // { |
@@ -3,6 +3,18 @@ import { numberRule } from '/@/utils/rules'; | @@ -3,6 +3,18 @@ import { numberRule } from '/@/utils/rules'; | ||
3 | 3 | ||
4 | export const formSchema: FormSchema[] = [ | 4 | export const formSchema: FormSchema[] = [ |
5 | { | 5 | { |
6 | + required: true, | ||
7 | + field: 'type', | ||
8 | + label: '类型', | ||
9 | + component: 'Select', | ||
10 | + colProps: { span: 24 }, | ||
11 | + componentProps: { | ||
12 | + placeholder: '请选择类型', | ||
13 | + options: [{ label: '默认', value: 'DEFAULT' }], | ||
14 | + }, | ||
15 | + rules: numberRule, | ||
16 | + }, | ||
17 | + { | ||
6 | field: 'maxDevices', | 18 | field: 'maxDevices', |
7 | label: '最大设备数(0-无限制)', | 19 | label: '最大设备数(0-无限制)', |
8 | component: 'Input', | 20 | component: 'Input', |
@@ -7,7 +7,7 @@ | @@ -7,7 +7,7 @@ | ||
7 | > | 7 | > |
8 | <template #toolbar> | 8 | <template #toolbar> |
9 | <a-button type="primary" @click="handleAdd"> 新增租户配置 </a-button> | 9 | <a-button type="primary" @click="handleAdd"> 新增租户配置 </a-button> |
10 | - <a-button type="error" @click="handleToolbarDel"> 删除 </a-button> | 10 | + <!-- <a-button type="error" @click="handleToolbarDel"> 删除 </a-button> --> |
11 | </template> | 11 | </template> |
12 | <template #action="{ record }"> | 12 | <template #action="{ record }"> |
13 | <TableAction | 13 | <TableAction |
@@ -44,7 +44,7 @@ | @@ -44,7 +44,7 @@ | ||
44 | import TenantSettingDrawer from './useDrawer.vue'; | 44 | import TenantSettingDrawer from './useDrawer.vue'; |
45 | import { columns } from './config'; | 45 | import { columns } from './config'; |
46 | import { useMessage } from '/@/hooks/web/useMessage'; | 46 | import { useMessage } from '/@/hooks/web/useMessage'; |
47 | - import { getTableTenantProfileApi } from '/@/api/tenant/tenantApi'; | 47 | + import { getTableTenantProfileApi, deleteTenantProfileApi } from '/@/api/tenant/tenantApi'; |
48 | 48 | ||
49 | export default defineComponent({ | 49 | export default defineComponent({ |
50 | name: 'Index', | 50 | name: 'Index', |
@@ -96,9 +96,9 @@ | @@ -96,9 +96,9 @@ | ||
96 | }); | 96 | }); |
97 | echoEditData = record; | 97 | echoEditData = record; |
98 | } | 98 | } |
99 | - async function handleDelete() { | ||
100 | - // let ids = [record.id]; | ||
101 | - // await screenLinkPageDeleteApi(ids); | 99 | + async function handleDelete(record: Recordable) { |
100 | + let ids = record.id; | ||
101 | + await deleteTenantProfileApi(ids); | ||
102 | createMessage.success('删除成功'); | 102 | createMessage.success('删除成功'); |
103 | reload(); | 103 | reload(); |
104 | } | 104 | } |
@@ -33,16 +33,25 @@ | @@ -33,16 +33,25 @@ | ||
33 | let getValuesFormData: any = reactive({}); | 33 | let getValuesFormData: any = reactive({}); |
34 | const { proxy } = getCurrentInstance(); | 34 | const { proxy } = getCurrentInstance(); |
35 | const getChildData = ref(null); | 35 | const getChildData = ref(null); |
36 | - const [registerForm, { validateFields, getFieldsValue, resetFields }] = useForm({ | ||
37 | - schemas: formSchema, | ||
38 | - showActionButtonGroup: false, | ||
39 | - }); | 36 | + const editGetId: any = ref(''); |
37 | + const [registerForm, { validateFields, getFieldsValue, resetFields, setFieldsValue }] = | ||
38 | + useForm({ | ||
39 | + schemas: formSchema, | ||
40 | + showActionButtonGroup: false, | ||
41 | + }); | ||
40 | const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { | 42 | const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { |
41 | //清除表单值 | 43 | //清除表单值 |
42 | proxy.$refs.getChildData.funcResetFields(); | 44 | proxy.$refs.getChildData.funcResetFields(); |
43 | await resetFields(); | 45 | await resetFields(); |
44 | setDrawerProps({ confirmLoading: false }); | 46 | setDrawerProps({ confirmLoading: false }); |
45 | isUpdate.value = !!data?.isUpdate; | 47 | isUpdate.value = !!data?.isUpdate; |
48 | + //编辑 | ||
49 | + if (unref(isUpdate)) { | ||
50 | + editGetId.value = data.record.id; | ||
51 | + await setFieldsValue({ | ||
52 | + ...data.record, | ||
53 | + }); | ||
54 | + } | ||
46 | }); | 55 | }); |
47 | const getTitle = computed(() => (!unref(isUpdate) ? '新增租户配置' : '编辑租户配置')); | 56 | const getTitle = computed(() => (!unref(isUpdate) ? '新增租户配置' : '编辑租户配置')); |
48 | 57 | ||
@@ -66,6 +75,27 @@ | @@ -66,6 +75,27 @@ | ||
66 | closeDrawer(); | 75 | closeDrawer(); |
67 | emit('success'); | 76 | emit('success'); |
68 | resetFields(); | 77 | resetFields(); |
78 | + if (unref(isUpdate)) { | ||
79 | + let res = validateFields(); | ||
80 | + if (!res) return; | ||
81 | + getValuesFormData = getFieldsValue(); | ||
82 | + getValuesFormData.id = editGetId.value; | ||
83 | + let getChildValues = proxy.$refs.getChildData.getAllFields(); | ||
84 | + let profileData1 = { | ||
85 | + configuration: getChildValues, | ||
86 | + }; | ||
87 | + Object.assign( | ||
88 | + postAllData, | ||
89 | + { | ||
90 | + profileData: profileData1, | ||
91 | + }, | ||
92 | + getValuesFormData | ||
93 | + ); | ||
94 | + await saveTenantProfileApi(postAllData); | ||
95 | + createMessage.success('租户配置编辑成功'); | ||
96 | + closeDrawer(); | ||
97 | + emit('success'); | ||
98 | + } | ||
69 | } | 99 | } |
70 | return { | 100 | return { |
71 | getChildData, | 101 | getChildData, |