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