Showing
4 changed files
with
66 additions
and
79 deletions
... | ... | @@ -18,23 +18,23 @@ |
18 | 18 | mode="multiple" |
19 | 19 | labelInValue |
20 | 20 | allowClear |
21 | - @deselect="handleDeSelect" | |
22 | 21 | notFoundContent="请选择设备" |
23 | 22 | /> |
24 | 23 | <div style="margin-top: 1.5vh"></div> |
25 | - <DeviceAttrCpns | |
26 | - ref="deviceAttrRef" | |
27 | - @change="handleChange" | |
28 | - :value="deviceList" | |
29 | - :orgId="organizationId || orgId" | |
30 | - :deSelectValue="deSelectValue" | |
31 | - /> | |
24 | + <div v-for="(item, index) in deviceList" :key="index"> | |
25 | + <DeviceAttrCpns | |
26 | + ref="deviceAttrRef" | |
27 | + @change="handleChange" | |
28 | + :value="item" | |
29 | + :orgId="organizationId || orgId" | |
30 | + /> | |
31 | + </div> | |
32 | 32 | </template> |
33 | 33 | </BasicForm> |
34 | 34 | </BasicDrawer> |
35 | 35 | </template> |
36 | 36 | <script lang="ts" setup> |
37 | - import { ref, computed, unref, reactive, watch } from 'vue'; | |
37 | + import { ref, computed, unref, reactive, watch, nextTick } from 'vue'; | |
38 | 38 | import { BasicForm, useForm } from '/@/components/Form'; |
39 | 39 | import { formSchema, organizationId } from './config.data'; |
40 | 40 | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; |
... | ... | @@ -50,10 +50,9 @@ |
50 | 50 | const isUpdate = ref(true); |
51 | 51 | const editId = ref(''); |
52 | 52 | const orgId = ref(''); |
53 | - let deviceAttrData: any = ref([]); | |
54 | 53 | const selectOptions: any = ref([]); |
55 | 54 | const selectDevice = ref([]); |
56 | - const deviceList = ref([]); | |
55 | + const deviceList: any = ref([]); | |
57 | 56 | watch(organizationId, async (newValue: string) => { |
58 | 57 | if (!newValue) return; |
59 | 58 | //获取设备 |
... | ... | @@ -71,11 +70,6 @@ |
71 | 70 | const handleDeviceChange = (e) => { |
72 | 71 | deviceList.value = e; |
73 | 72 | }; |
74 | - const deSelectValue = ref(''); | |
75 | - const handleDeSelect = ({ key }) => { | |
76 | - //取消选中的key | |
77 | - deSelectValue.value = key; | |
78 | - }; | |
79 | 73 | const [registerForm, { validate, setFieldsValue, resetFields }] = useForm({ |
80 | 74 | labelWidth: 120, |
81 | 75 | schemas: formSchema, |
... | ... | @@ -129,29 +123,29 @@ |
129 | 123 | ]; |
130 | 124 | selectDevice.value = deviceIds; |
131 | 125 | //回显设备属性 TODO 模拟的数据 待服务端返回 |
132 | - deviceAttrData.value = [ | |
126 | + deviceList.value = [ | |
133 | 127 | { |
134 | - device: '8943f0b0-f1f7-11ec-98ad-a9680487d1e0', | |
128 | + value: '8a4cc9a0-f201-11ec-98ad-a9680487d1e0', | |
135 | 129 | attribute: 'CO2', |
136 | - name: '宝马默认设备', | |
130 | + label: '奥迪网关子设备', | |
137 | 131 | }, |
138 | 132 | { |
139 | - device: '8f5b4280-f29e-11ec-98ad-a9680487d1e0', | |
133 | + value: '8943f0b0-f1f7-11ec-98ad-a9680487d1e0', | |
140 | 134 | attribute: 'co', |
141 | - name: '新增奥迪测试设备', | |
135 | + label: '宝马默认设备', | |
142 | 136 | }, |
143 | 137 | { |
144 | - device: '54e199d0-f1f7-11ec-98ad-a9680487d1e0', | |
138 | + value: '6d9043f0-f1f7-11ec-98ad-a9680487d1e0', | |
145 | 139 | attribute: 'hot', |
146 | - name: '奥迪默认设备', | |
140 | + label: '奔驰默认设备', | |
147 | 141 | }, |
148 | 142 | { |
149 | - device: '6d9043f0-f1f7-11ec-98ad-a9680487d1e0', | |
143 | + value: '8f5b4280-f29e-11ec-98ad-a9680487d1e0', | |
150 | 144 | attribute: 'wet', |
151 | - name: '奔驰默认设备', | |
145 | + label: '新增奥迪测试设备', | |
152 | 146 | }, |
153 | 147 | ]; |
154 | - deviceAttrRef.value?.echoDynamicInputFunc(deviceAttrData.value); | |
148 | + nextTick(() => {}); | |
155 | 149 | } else { |
156 | 150 | editId.value = ''; |
157 | 151 | orgId.value = ''; |
... | ... | @@ -162,7 +156,9 @@ |
162 | 156 | }); |
163 | 157 | const getAttrDevice: any = ref([]); |
164 | 158 | const getTitle = computed(() => (!unref(isUpdate) ? '新增报表配置' : '编辑报表配置')); |
165 | - const handleChange = (e) => (getAttrDevice.value = e); | |
159 | + const handleChange = (e) => { | |
160 | + getAttrDevice.value.push(e); | |
161 | + }; | |
166 | 162 | let postObj: any = reactive({}); |
167 | 163 | let queryCondition: any = reactive({}); |
168 | 164 | let executeContent: any = reactive({}); | ... | ... |
... | ... | @@ -38,14 +38,14 @@ |
38 | 38 | device: string; |
39 | 39 | } |
40 | 40 | const props = defineProps({ |
41 | - value: propTypes.array.def([]), | |
41 | + value: propTypes.object.def({}), | |
42 | 42 | orgId: propTypes.string.def(''), |
43 | 43 | }); |
44 | 44 | const emits = defineEmits(['change', 'update:value']); |
45 | 45 | const selectOptions = ref<SelectTypes['options']>([]); |
46 | 46 | //获取属性 |
47 | 47 | const getAttr = async (orgId, deviceId) => { |
48 | - const res = await getAttribute(orgId, deviceId.join(',')); | |
48 | + const res = await getAttribute(orgId, deviceId); | |
49 | 49 | selectOptions.value = res.map((o) => { |
50 | 50 | return { |
51 | 51 | label: o, |
... | ... | @@ -55,25 +55,20 @@ |
55 | 55 | }; |
56 | 56 | //动态数据 |
57 | 57 | const dynamicInput: UnwrapRef<{ params: Params[] }> = reactive({ params: [] }); |
58 | - //监听传入数据value | |
59 | - watchEffect(() => { | |
58 | + const rEffect = watchEffect(() => { | |
60 | 59 | initVal(); |
61 | 60 | }); |
61 | + rEffect(); | |
62 | 62 | /** |
63 | 63 | * 初始化数值 |
64 | 64 | */ |
65 | 65 | async function initVal() { |
66 | - dynamicInput.params = []; | |
67 | - if (props.value && props.orgId) { | |
68 | - let jsonObj = props.value; | |
69 | - const deviceId = jsonObj.map((m: any) => m.value); | |
70 | - await getAttr(props.orgId, deviceId); | |
71 | - jsonObj.forEach((item: any) => { | |
72 | - dynamicInput.params.push({ | |
73 | - attribute: '', | |
74 | - device: item.label, | |
75 | - value: item.value, | |
76 | - }); | |
66 | + if (props.orgId && props.value.value) { | |
67 | + await getAttr(props.orgId, props.value.value); | |
68 | + dynamicInput.params.push({ | |
69 | + device: props.value.label, | |
70 | + value: props.value.value, | |
71 | + attribute: props.value.attribute == '' ? '' : props.value.attribute, | |
77 | 72 | }); |
78 | 73 | } |
79 | 74 | } |
... | ... | @@ -81,32 +76,12 @@ |
81 | 76 | * 数值改变 |
82 | 77 | */ |
83 | 78 | function emitChange() { |
84 | - let obj: any = []; | |
85 | - if (dynamicInput.params.length > 0) { | |
86 | - dynamicInput.params.forEach((item: Params) => { | |
87 | - obj.push({ | |
88 | - attribute: item.attribute, | |
89 | - device: item.value, | |
90 | - }); | |
91 | - }); | |
92 | - } | |
93 | - console.log('emitChange', obj); | |
79 | + let obj: any = dynamicInput.params[0]; | |
94 | 80 | emits('change', obj); |
95 | 81 | emits('update:value', obj); |
96 | 82 | } |
97 | - //回显 | |
98 | - const echoDynamicInputFunc = (o) => { | |
99 | - dynamicInput.params = []; | |
100 | - o.forEach((m: any) => { | |
101 | - dynamicInput.params.push({ | |
102 | - device: m.name, | |
103 | - attribute: m.attribute, | |
104 | - value: m.device, | |
105 | - }); | |
106 | - }); | |
107 | - }; | |
108 | 83 | defineExpose({ |
109 | - echoDynamicInputFunc, | |
84 | + getAttr, | |
110 | 85 | }); |
111 | 86 | </script> |
112 | 87 | <style scoped lang="css"> | ... | ... |
... | ... | @@ -4,13 +4,24 @@ import moment from 'moment'; |
4 | 4 | import { h } from 'vue'; |
5 | 5 | import { Tag } from 'ant-design-vue'; |
6 | 6 | |
7 | +///任务组名Enum | |
8 | +export enum EJobGroup { | |
9 | + DEFAULT = 'DEFAULT', | |
10 | + SYSTEM = 'SYSTEM', | |
11 | + REPORT = 'REPORT', | |
12 | +} | |
13 | + | |
7 | 14 | //任务详细配置 |
8 | 15 | export const personSchema: DescItem[] = [ |
9 | 16 | { |
10 | 17 | field: 'jobGroup', |
11 | 18 | label: '任务分组:', |
12 | 19 | render: (_, data) => { |
13 | - return data.jobGroup == 'Default' ? '默认' : data.jobGroup == 'System' ? '系统' : '报表'; | |
20 | + return data.jobGroup == EJobGroup.DEFAULT | |
21 | + ? '默认' | |
22 | + : data.jobGroup == EJobGroup.SYSTEM | |
23 | + ? '系统' | |
24 | + : '报表'; | |
14 | 25 | }, |
15 | 26 | }, |
16 | 27 | { |
... | ... | @@ -62,9 +73,9 @@ export const columnSchedue: BasicColumn[] = [ |
62 | 73 | dataIndex: 'jobGroup', |
63 | 74 | width: 120, |
64 | 75 | format: (_text: string, record: Recordable) => { |
65 | - return record.jobGroup === 'Default' | |
76 | + return record.jobGroup === EJobGroup.DEFAULT | |
66 | 77 | ? '默认' |
67 | - : record.jobGroup === 'System' | |
78 | + : record.jobGroup === EJobGroup.SYSTEM | |
68 | 79 | ? '系统' |
69 | 80 | : '报表'; |
70 | 81 | }, |
... | ... | @@ -121,15 +132,15 @@ export const searchSchedueFormSchema: FormSchema[] = [ |
121 | 132 | options: [ |
122 | 133 | { |
123 | 134 | label: '默认', |
124 | - value: 'Default', | |
135 | + value: EJobGroup.DEFAULT, | |
125 | 136 | }, |
126 | 137 | { |
127 | 138 | label: '系统', |
128 | - value: 'System', | |
139 | + value: EJobGroup.SYSTEM, | |
129 | 140 | }, |
130 | 141 | { |
131 | 142 | label: '报表', |
132 | - value: 'Report', | |
143 | + value: EJobGroup.REPORT, | |
133 | 144 | }, |
134 | 145 | ], |
135 | 146 | placeholder: '请选择任务组名', |
... | ... | @@ -176,7 +187,11 @@ export const scheduleLogDetailSchema: DescItem[] = [ |
176 | 187 | field: 'jobGroup', |
177 | 188 | label: '任务组名:', |
178 | 189 | render: (_, data) => { |
179 | - return data.jobGroup == 'Default' ? '默认' : data.jobGroup == 'System' ? '系统' : '报表'; | |
190 | + return data.jobGroup == EJobGroup.DEFAULT | |
191 | + ? '默认' | |
192 | + : data.jobGroup == EJobGroup.SYSTEM | |
193 | + ? '系统' | |
194 | + : '报表'; | |
180 | 195 | }, |
181 | 196 | }, |
182 | 197 | { | ... | ... |
1 | 1 | import { BasicColumn, FormSchema } from '/@/components/Table'; |
2 | 2 | import type { FormSchema as QFormSchema } from '/@/components/Form/index'; |
3 | 3 | import { JCronValidator } from '/@/components/Form'; |
4 | +import { EJobGroup } from './config.data'; | |
4 | 5 | |
5 | 6 | // 定时任务表格配置 |
6 | 7 | export const columnSchedue: BasicColumn[] = [ |
... | ... | @@ -14,9 +15,9 @@ export const columnSchedue: BasicColumn[] = [ |
14 | 15 | dataIndex: 'jobGroup', |
15 | 16 | width: 120, |
16 | 17 | format: (_text: string, record: Recordable) => { |
17 | - return record.jobGroup === 'Default' | |
18 | + return record.jobGroup === EJobGroup.DEFAULT | |
18 | 19 | ? '默认' |
19 | - : record.jobGroup === 'System' | |
20 | + : record.jobGroup === EJobGroup.SYSTEM | |
20 | 21 | ? '系统' |
21 | 22 | : '报表'; |
22 | 23 | }, |
... | ... | @@ -60,15 +61,15 @@ export const searchSchedueFormSchema: FormSchema[] = [ |
60 | 61 | options: [ |
61 | 62 | { |
62 | 63 | label: '默认', |
63 | - value: 'Default', | |
64 | + value: EJobGroup.DEFAULT, | |
64 | 65 | }, |
65 | 66 | { |
66 | 67 | label: '系统', |
67 | - value: 'System', | |
68 | + value: EJobGroup.SYSTEM, | |
68 | 69 | }, |
69 | 70 | { |
70 | 71 | label: '报表', |
71 | - value: 'Report', | |
72 | + value: EJobGroup.REPORT, | |
72 | 73 | }, |
73 | 74 | ], |
74 | 75 | placeholder: '请选择任务组名', |
... | ... | @@ -120,15 +121,15 @@ export const formSchema: QFormSchema[] = [ |
120 | 121 | options: [ |
121 | 122 | { |
122 | 123 | label: '默认', |
123 | - value: 'Default', | |
124 | + value: EJobGroup.DEFAULT, | |
124 | 125 | }, |
125 | 126 | { |
126 | 127 | label: '系统', |
127 | - value: 'System', | |
128 | + value: EJobGroup.SYSTEM, | |
128 | 129 | }, |
129 | 130 | { |
130 | 131 | label: '报表', |
131 | - value: 'Report', | |
132 | + value: EJobGroup.REPORT, | |
132 | 133 | }, |
133 | 134 | ], |
134 | 135 | }, | ... | ... |