Commit cb4c0ff3d09c1d8db528dfb1b314b660dedbc807
Merge branch 'ft_local_dev' into 'main'
feat:收集物模型表单数据 See merge request huang/yun-teng-iot-front!365
Showing
13 changed files
with
475 additions
and
86 deletions
| @@ -35,7 +35,7 @@ | @@ -35,7 +35,7 @@ | ||
| 35 | </div> | 35 | </div> |
| 36 | </template> | 36 | </template> |
| 37 | <script lang="ts" setup> | 37 | <script lang="ts" setup> |
| 38 | - import { ref, unref, reactive } from 'vue'; | 38 | + import { ref, unref, reactive, nextTick } from 'vue'; |
| 39 | import { BasicModal, useModalInner } from '/@/components/Modal'; | 39 | import { BasicModal, useModalInner } from '/@/components/Modal'; |
| 40 | import { Tabs, TabPane, Typography, TypographyParagraph } from 'ant-design-vue'; | 40 | import { Tabs, TabPane, Typography, TypographyParagraph } from 'ant-design-vue'; |
| 41 | import Attribute from './cpns/Attribute.vue'; | 41 | import Attribute from './cpns/Attribute.vue'; |
| @@ -70,19 +70,25 @@ | @@ -70,19 +70,25 @@ | ||
| 70 | if (!unref(isViewDetail)) { | 70 | if (!unref(isViewDetail)) { |
| 71 | const title = !unref(isUpdate) ? '编辑物模型' : '新增物模型'; | 71 | const title = !unref(isUpdate) ? '编辑物模型' : '新增物模型'; |
| 72 | if (!unref(isUpdate)) { | 72 | if (!unref(isUpdate)) { |
| 73 | - AttrRef.value?.setFormData(mockData.properties); | 73 | + nextTick(() => { |
| 74 | + AttrRef.value?.setFormData(mockData.properties); | ||
| 75 | + ServiceRef.value?.setFormData(mockData.services); | ||
| 76 | + EventsRef.value?.setFormData(mockData.events); | ||
| 77 | + }); | ||
| 74 | } | 78 | } |
| 75 | setModalProps({ title, showOkBtn: true, showCancelBtn: true }); | 79 | setModalProps({ title, showOkBtn: true, showCancelBtn: true }); |
| 76 | - if (!unref(isUpdate)) { | ||
| 77 | - } | ||
| 78 | } else { | 80 | } else { |
| 79 | setModalProps({ showOkBtn: false, showCancelBtn: false, title: '查看物模型' }); | 81 | setModalProps({ showOkBtn: false, showCancelBtn: false, title: '查看物模型' }); |
| 80 | AttrRef.value?.setFormData(mockData.properties); | 82 | AttrRef.value?.setFormData(mockData.properties); |
| 83 | + ServiceRef.value?.setFormData(mockData.services); | ||
| 84 | + EventsRef.value?.setFormData(mockData.events); | ||
| 81 | } | 85 | } |
| 82 | setModalProps({ loading: false }); | 86 | setModalProps({ loading: false }); |
| 83 | }); | 87 | }); |
| 84 | const handleCancel = (flag) => { | 88 | const handleCancel = (flag) => { |
| 85 | AttrRef.value?.resetFormData(); | 89 | AttrRef.value?.resetFormData(); |
| 90 | + ServiceRef.value?.resetFormData(); | ||
| 91 | + EventsRef.value?.resetFormData(); | ||
| 86 | activeKey.value = '1'; | 92 | activeKey.value = '1'; |
| 87 | allData.properties = []; | 93 | allData.properties = []; |
| 88 | allData.events = []; | 94 | allData.events = []; |
| @@ -92,9 +98,16 @@ | @@ -92,9 +98,16 @@ | ||
| 92 | } | 98 | } |
| 93 | }; | 99 | }; |
| 94 | const handleSubmit = async () => { | 100 | const handleSubmit = async () => { |
| 95 | - const value = await AttrRef.value?.getFormData(); | ||
| 96 | - if (!value) return; | ||
| 97 | - allData.properties.push(value); | 101 | + if (activeKey.value == '1') { |
| 102 | + const valueAttr = await AttrRef.value?.getFormData(); | ||
| 103 | + allData.properties.push(valueAttr); | ||
| 104 | + } else if (activeKey.value == '2') { | ||
| 105 | + const valueService = await ServiceRef.value?.getFormData(); | ||
| 106 | + allData.services.push(valueService); | ||
| 107 | + } else { | ||
| 108 | + const valueEvents = await EventsRef.value?.getFormData(); | ||
| 109 | + allData.events.push(valueEvents); | ||
| 110 | + } | ||
| 98 | console.log('搜集值', allData); | 111 | console.log('搜集值', allData); |
| 99 | closeModal(); | 112 | closeModal(); |
| 100 | }; | 113 | }; |
| @@ -50,9 +50,11 @@ | @@ -50,9 +50,11 @@ | ||
| 50 | import InputParamItem from './components/InputParamItem.vue'; | 50 | import InputParamItem from './components/InputParamItem.vue'; |
| 51 | import AddParamsModal from './components/AddParamsModal.vue'; | 51 | import AddParamsModal from './components/AddParamsModal.vue'; |
| 52 | import { Input } from 'ant-design-vue'; | 52 | import { Input } from 'ant-design-vue'; |
| 53 | - import { useMessage } from '/@/hooks/web/useMessage'; | 53 | + // import { useMessage } from '/@/hooks/web/useMessage'; |
| 54 | + import { validateValueRangeAndStep } from '../hook/useValidateParital'; | ||
| 55 | + import { buildUUID } from '/@/utils/uuid'; | ||
| 54 | 56 | ||
| 55 | - const { createMessage } = useMessage(); | 57 | + // const { createMessage } = useMessage(); |
| 56 | const outputParamData: any = ref([]); | 58 | const outputParamData: any = ref([]); |
| 57 | const minMaxObj = reactive({ | 59 | const minMaxObj = reactive({ |
| 58 | min: '', | 60 | min: '', |
| @@ -79,10 +81,11 @@ | @@ -79,10 +81,11 @@ | ||
| 79 | 81 | ||
| 80 | const getData = (d, f) => { | 82 | const getData = (d, f) => { |
| 81 | if (f == 'output') { | 83 | if (f == 'output') { |
| 82 | - unref(outputParamData).push(d); | ||
| 83 | if (d.id !== null) { | 84 | if (d.id !== null) { |
| 84 | - const findIndex = unref(outputParamData).findIndex((f) => f.id !== d.id); | ||
| 85 | - if (findIndex !== -1) unref(outputParamData).splice(findIndex, 1); | 85 | + const findIndex = unref(outputParamData).findIndex((f) => f.id == d.id); |
| 86 | + if (findIndex !== -1) unref(outputParamData).splice(findIndex, 1, d); | ||
| 87 | + } else { | ||
| 88 | + unref(outputParamData).push({ ...d, id: buildUUID() }); | ||
| 86 | } | 89 | } |
| 87 | } | 90 | } |
| 88 | }; | 91 | }; |
| @@ -91,7 +94,7 @@ | @@ -91,7 +94,7 @@ | ||
| 91 | openModal(true, { | 94 | openModal(true, { |
| 92 | isUpdate: true, | 95 | isUpdate: true, |
| 93 | flag: 'output', | 96 | flag: 'output', |
| 94 | - excludeStruct: true, | 97 | + excludeStruct: false, |
| 95 | }); | 98 | }); |
| 96 | }; | 99 | }; |
| 97 | 100 | ||
| @@ -103,7 +106,7 @@ | @@ -103,7 +106,7 @@ | ||
| 103 | isUpdate: false, | 106 | isUpdate: false, |
| 104 | record: item, | 107 | record: item, |
| 105 | flag: 'output', | 108 | flag: 'output', |
| 106 | - excludeStruct: true, | 109 | + excludeStruct: false, |
| 107 | }); | 110 | }); |
| 108 | }; | 111 | }; |
| 109 | 112 | ||
| @@ -111,13 +114,10 @@ | @@ -111,13 +114,10 @@ | ||
| 111 | const setFormData = (v) => { | 114 | const setFormData = (v) => { |
| 112 | setFieldsValue(v[0]); | 115 | setFieldsValue(v[0]); |
| 113 | const { dataSpecsList } = v[0]; | 116 | const { dataSpecsList } = v[0]; |
| 114 | - outputParamData.value = [...new Array(dataSpecsList.length).keys()]; | ||
| 115 | - outputParamData.value = v[0].dataSpecsList; | ||
| 116 | - // dataSpecsList.forEach((item, index) => { | ||
| 117 | - // nextTick(() => { | ||
| 118 | - // unref(dynamicBindRef.outputParamItemRef)[index].setFormData(dataSpecsList) | ||
| 119 | - // }) | ||
| 120 | - // }); | 117 | + if (dataSpecsList !== undefined) { |
| 118 | + outputParamData.value = [...new Array(dataSpecsList.length).keys()]; | ||
| 119 | + outputParamData.value = dataSpecsList; | ||
| 120 | + } | ||
| 121 | }; | 121 | }; |
| 122 | //获取数据 | 122 | //获取数据 |
| 123 | const getStructList = () => { | 123 | const getStructList = () => { |
| @@ -129,14 +129,7 @@ | @@ -129,14 +129,7 @@ | ||
| 129 | const values = await validate(); | 129 | const values = await validate(); |
| 130 | if (!values) return; | 130 | if (!values) return; |
| 131 | const dataSpecsList = getStructList(); | 131 | const dataSpecsList = getStructList(); |
| 132 | - if (Number(minMaxObj.min) > Number(minMaxObj.max)) { | ||
| 133 | - createMessage.error('最大值必须大于最小值,整数型不能有小数位,单精度有效位为7,双精度为16'); | ||
| 134 | - throw '最大值必须大于最小值,整数型不能有小数位,单精度有效位为7,双精度为16'; | ||
| 135 | - } | ||
| 136 | - if (Number(values.step) > Number(minMaxObj.max) - Number(minMaxObj.min)) { | ||
| 137 | - createMessage.error('步长不能大于取值范围的差值'); | ||
| 138 | - throw '步长不能大于取值范围的差值'; | ||
| 139 | - } | 132 | + validateValueRangeAndStep(Number(minMaxObj.min), Number(values.step), Number(minMaxObj.max)); |
| 140 | const isStruct = values.dataType === 'STRUCT'; | 133 | const isStruct = values.dataType === 'STRUCT'; |
| 141 | const dataSpecs = { | 134 | const dataSpecs = { |
| 142 | ...minMaxObj, | 135 | ...minMaxObj, |
| @@ -144,12 +137,13 @@ | @@ -144,12 +137,13 @@ | ||
| 144 | ...{ unit: values.unit }, | 137 | ...{ unit: values.unit }, |
| 145 | ...{ dataType: values.dataType }, | 138 | ...{ dataType: values.dataType }, |
| 146 | }; | 139 | }; |
| 147 | - Reflect.deleteProperty(values, 'valueRange'); | ||
| 148 | - Reflect.deleteProperty(values, 'step'); | ||
| 149 | - Reflect.deleteProperty(values, 'unit'); | ||
| 150 | - Reflect.deleteProperty(values, 'outputParam'); | 140 | + const { valueRange, step, unit, outputParam, ...value } = values; |
| 141 | + console.log(valueRange); | ||
| 142 | + console.log(step); | ||
| 143 | + console.log(unit); | ||
| 144 | + console.log(outputParam); | ||
| 151 | return { | 145 | return { |
| 152 | - ...values, | 146 | + ...value, |
| 153 | ...{ dataSpecs: isStruct ? null : dataSpecs }, | 147 | ...{ dataSpecs: isStruct ? null : dataSpecs }, |
| 154 | ...{ dataSpecsList: isStruct ? dataSpecsList : null }, | 148 | ...{ dataSpecsList: isStruct ? dataSpecsList : null }, |
| 155 | }; | 149 | }; |
| @@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
| 6 | <template v-for="(item, index) in outputParamData" :key="item"> | 6 | <template v-for="(item, index) in outputParamData" :key="item"> |
| 7 | <span style="display: none">{{ item }}</span> | 7 | <span style="display: none">{{ item }}</span> |
| 8 | <InputParamItem | 8 | <InputParamItem |
| 9 | - :title="item.configName" | 9 | + :title="item.name" |
| 10 | :item="item" | 10 | :item="item" |
| 11 | class="mt-4" | 11 | class="mt-4" |
| 12 | :index="index" | 12 | :index="index" |
| @@ -32,6 +32,7 @@ | @@ -32,6 +32,7 @@ | ||
| 32 | import { useModal } from '/@/components/Modal'; | 32 | import { useModal } from '/@/components/Modal'; |
| 33 | import InputParamItem from './components/InputParamItem.vue'; | 33 | import InputParamItem from './components/InputParamItem.vue'; |
| 34 | import AddParamsModal from './components/AddParamsModal.vue'; | 34 | import AddParamsModal from './components/AddParamsModal.vue'; |
| 35 | + import { buildUUID } from '/@/utils/uuid'; | ||
| 35 | 36 | ||
| 36 | const outputParamData: any = ref([]); | 37 | const outputParamData: any = ref([]); |
| 37 | const dynamicBindRef = { | 38 | const dynamicBindRef = { |
| @@ -50,10 +51,11 @@ | @@ -50,10 +51,11 @@ | ||
| 50 | }); | 51 | }); |
| 51 | const getData = (d, f) => { | 52 | const getData = (d, f) => { |
| 52 | if (f == 'output') { | 53 | if (f == 'output') { |
| 53 | - unref(outputParamData).push(d); | ||
| 54 | if (d.id !== null) { | 54 | if (d.id !== null) { |
| 55 | - const findIndex = unref(outputParamData).findIndex((f) => f.id !== d.id); | ||
| 56 | - if (findIndex !== -1) unref(outputParamData).splice(findIndex, 1); | 55 | + const findIndex = unref(outputParamData).findIndex((f) => f.id == d.id); |
| 56 | + if (findIndex !== -1) unref(outputParamData).splice(findIndex, 1, d); | ||
| 57 | + } else { | ||
| 58 | + unref(outputParamData).push({ ...d, id: buildUUID() }); | ||
| 57 | } | 59 | } |
| 58 | } | 60 | } |
| 59 | }; | 61 | }; |
| @@ -76,13 +78,29 @@ | @@ -76,13 +78,29 @@ | ||
| 76 | }; | 78 | }; |
| 77 | //回显数据 | 79 | //回显数据 |
| 78 | const setFormData = (v) => { | 80 | const setFormData = (v) => { |
| 79 | - setFieldsValue(v); | 81 | + setFieldsValue(v[0]); |
| 82 | + const { outputData } = v[0]; | ||
| 83 | + if (outputData !== undefined) { | ||
| 84 | + outputParamData.value = [...new Array(outputData.length).keys()]; | ||
| 85 | + outputParamData.value = outputData; | ||
| 86 | + } | ||
| 80 | }; | 87 | }; |
| 81 | //获取数据 | 88 | //获取数据 |
| 89 | + const getStructList = () => { | ||
| 90 | + const val = unref(dynamicBindRef.outputParamItemRef)?.map((item: any) => item.getFormData()); | ||
| 91 | + return val; | ||
| 92 | + }; | ||
| 93 | + | ||
| 82 | async function getFormData() { | 94 | async function getFormData() { |
| 83 | const values = await validate(); | 95 | const values = await validate(); |
| 84 | if (!values) return; | 96 | if (!values) return; |
| 85 | - return values; | 97 | + const outputData = getStructList(); |
| 98 | + const { outputParam, ...value } = values; | ||
| 99 | + console.log(outputParam); | ||
| 100 | + return { | ||
| 101 | + ...value, | ||
| 102 | + ...{ outputData }, | ||
| 103 | + }; | ||
| 86 | } | 104 | } |
| 87 | //清空数据 | 105 | //清空数据 |
| 88 | const resetFormData = () => { | 106 | const resetFormData = () => { |
| @@ -52,6 +52,7 @@ | @@ -52,6 +52,7 @@ | ||
| 52 | import { useModal } from '/@/components/Modal'; | 52 | import { useModal } from '/@/components/Modal'; |
| 53 | import InputParamItem from './components/InputParamItem.vue'; | 53 | import InputParamItem from './components/InputParamItem.vue'; |
| 54 | import AddParamsModal from './components/AddParamsModal.vue'; | 54 | import AddParamsModal from './components/AddParamsModal.vue'; |
| 55 | + import { buildUUID } from '/@/utils/uuid'; | ||
| 55 | 56 | ||
| 56 | const inputParamData: any = ref([]); | 57 | const inputParamData: any = ref([]); |
| 57 | const outputParamData: any = ref([]); | 58 | const outputParamData: any = ref([]); |
| @@ -74,16 +75,18 @@ | @@ -74,16 +75,18 @@ | ||
| 74 | 75 | ||
| 75 | const getData = (d, f) => { | 76 | const getData = (d, f) => { |
| 76 | if (f == 'input') { | 77 | if (f == 'input') { |
| 77 | - unref(inputParamData).push(d); | ||
| 78 | if (d.id !== null) { | 78 | if (d.id !== null) { |
| 79 | - const findIndex = unref(inputParamData).findIndex((f) => f.id !== d.id); | ||
| 80 | - if (findIndex !== -1) unref(inputParamData).splice(findIndex, 1); | 79 | + const findIndex = unref(inputParamData).findIndex((f) => f.id == d.id); |
| 80 | + if (findIndex !== -1) unref(inputParamData).splice(findIndex, 1, d); | ||
| 81 | + } else { | ||
| 82 | + unref(inputParamData).push({ ...d, id: buildUUID() }); | ||
| 81 | } | 83 | } |
| 82 | } else { | 84 | } else { |
| 83 | - unref(outputParamData).push(d); | ||
| 84 | if (d.id !== null) { | 85 | if (d.id !== null) { |
| 85 | - const findIndex = unref(outputParamData).findIndex((f) => f.id !== d.id); | ||
| 86 | - if (findIndex !== -1) unref(outputParamData).splice(findIndex, 1); | 86 | + const findIndex = unref(outputParamData).findIndex((f) => f.id == d.id); |
| 87 | + if (findIndex !== -1) unref(outputParamData).splice(findIndex, 1, d); | ||
| 88 | + } else { | ||
| 89 | + unref(outputParamData).push({ ...d, id: buildUUID() }); | ||
| 87 | } | 90 | } |
| 88 | } | 91 | } |
| 89 | }; | 92 | }; |
| @@ -126,13 +129,41 @@ | @@ -126,13 +129,41 @@ | ||
| 126 | 129 | ||
| 127 | //回显数据 | 130 | //回显数据 |
| 128 | const setFormData = (v) => { | 131 | const setFormData = (v) => { |
| 129 | - setFieldsValue(v); | 132 | + console.log(v[0]); |
| 133 | + setFieldsValue(v[0]); | ||
| 134 | + const { inputParams, outputParams } = v[0]; | ||
| 135 | + if (outputParams !== undefined) { | ||
| 136 | + outputParamData.value = [...new Array(outputParams.length).keys()]; | ||
| 137 | + outputParamData.value = outputParams; | ||
| 138 | + } | ||
| 139 | + if (inputParams !== undefined) { | ||
| 140 | + inputParamData.value = [...new Array(inputParams.length).keys()]; | ||
| 141 | + inputParamData.value = inputParams; | ||
| 142 | + } | ||
| 143 | + }; | ||
| 144 | + const getInputStructList = () => { | ||
| 145 | + const val = unref(dynamicBindRef.inputParamItemRef)?.map((item: any) => item.getFormData()); | ||
| 146 | + return val; | ||
| 130 | }; | 147 | }; |
| 148 | + const getOutputStructList = () => { | ||
| 149 | + const val = unref(dynamicBindRef.outputParamItemRef)?.map((item: any) => item.getFormData()); | ||
| 150 | + return val; | ||
| 151 | + }; | ||
| 152 | + | ||
| 131 | //获取数据 | 153 | //获取数据 |
| 132 | async function getFormData() { | 154 | async function getFormData() { |
| 133 | const values = await validate(); | 155 | const values = await validate(); |
| 134 | if (!values) return; | 156 | if (!values) return; |
| 135 | - return values; | 157 | + const inputParams = getInputStructList(); |
| 158 | + const outputParams = getOutputStructList(); | ||
| 159 | + const { inputParam, outputParam, ...value } = values; | ||
| 160 | + console.log(outputParam); | ||
| 161 | + console.log(inputParam); | ||
| 162 | + return { | ||
| 163 | + ...value, | ||
| 164 | + ...{ inputParams }, | ||
| 165 | + ...{ outputParams }, | ||
| 166 | + }; | ||
| 136 | } | 167 | } |
| 137 | //清空数据 | 168 | //清空数据 |
| 138 | const resetFormData = () => { | 169 | const resetFormData = () => { |
| @@ -33,17 +33,18 @@ | @@ -33,17 +33,18 @@ | ||
| 33 | </div> | 33 | </div> |
| 34 | </template> | 34 | </template> |
| 35 | <script lang="ts" setup> | 35 | <script lang="ts" setup> |
| 36 | - import { reactive, ref, unref } from 'vue'; | 36 | + import { reactive, ref, unref, nextTick } from 'vue'; |
| 37 | import { BasicForm, useForm } from '/@/components/Form'; | 37 | import { BasicForm, useForm } from '/@/components/Form'; |
| 38 | import { addParamsSchemas } from '../config'; | 38 | import { addParamsSchemas } from '../config'; |
| 39 | import { useModal } from '/@/components/Modal'; | 39 | import { useModal } from '/@/components/Modal'; |
| 40 | import InputParamItem from './InputParamItem.vue'; | 40 | import InputParamItem from './InputParamItem.vue'; |
| 41 | import AddParamsModal from './AddParamsModal.vue'; | 41 | import AddParamsModal from './AddParamsModal.vue'; |
| 42 | import { findDictItemByCode } from '/@/api/system/dict'; | 42 | import { findDictItemByCode } from '/@/api/system/dict'; |
| 43 | - import { useMessage } from '/@/hooks/web/useMessage'; | 43 | + // import { useMessage } from '/@/hooks/web/useMessage'; |
| 44 | + import { validateValueRangeAndStep } from '../../hook/useValidateParital'; | ||
| 44 | 45 | ||
| 45 | defineEmits(['register']); | 46 | defineEmits(['register']); |
| 46 | - const { createMessage } = useMessage(); | 47 | + // const { createMessage } = useMessage(); |
| 47 | const outputParamData: any = ref([]); | 48 | const outputParamData: any = ref([]); |
| 48 | const dynamicBindRef = { | 49 | const dynamicBindRef = { |
| 49 | outputParamItemRef: ref([]), | 50 | outputParamItemRef: ref([]), |
| @@ -126,30 +127,21 @@ | @@ -126,30 +127,21 @@ | ||
| 126 | const getFormData = async () => { | 127 | const getFormData = async () => { |
| 127 | const values = await validate(); | 128 | const values = await validate(); |
| 128 | if (!values) return; | 129 | if (!values) return; |
| 129 | - if (Number(minMaxObj.min) > Number(minMaxObj.max)) { | ||
| 130 | - createMessage.error('最大值必须大于最小值,整数型不能有小数位,单精度有效位为7,双精度为16'); | ||
| 131 | - throw '最大值必须大于最小值,整数型不能有小数位,单精度有效位为7,双精度为16'; | ||
| 132 | - } | ||
| 133 | - if (Number(values.step) > Number(minMaxObj.max) - Number(minMaxObj.min)) { | ||
| 134 | - createMessage.error('步长不能大于取值范围的差值'); | ||
| 135 | - throw '步长不能大于取值范围的差值'; | ||
| 136 | - } | 130 | + validateValueRangeAndStep(Number(minMaxObj.min), Number(values.step), Number(minMaxObj.max)); |
| 137 | const childSpecsDTO = { | 131 | const childSpecsDTO = { |
| 138 | dataType: values.dataType, | 132 | dataType: values.dataType, |
| 139 | - max: values.max, | ||
| 140 | - min: values.min, | ||
| 141 | - step: values.step, | ||
| 142 | - unit: values.unit, | ||
| 143 | - }; | ||
| 144 | - const dataSpecs = { | ||
| 145 | - dataType: values.dataType, | ||
| 146 | - max: values.max, | ||
| 147 | - min: values.min, | 133 | + max: minMaxObj.max, |
| 134 | + min: minMaxObj.min, | ||
| 148 | step: values.step, | 135 | step: values.step, |
| 149 | unit: values.unit, | 136 | unit: values.unit, |
| 150 | }; | 137 | }; |
| 138 | + const dataSpecs = childSpecsDTO; | ||
| 139 | + const { step, unit, valueRange, ...value } = values; | ||
| 140 | + console.log(valueRange); | ||
| 141 | + console.log(step); | ||
| 142 | + console.log(unit); | ||
| 151 | return { | 143 | return { |
| 152 | - ...values, | 144 | + ...value, |
| 153 | ...{ dataSpecs }, | 145 | ...{ dataSpecs }, |
| 154 | ...{ childSpecsDTO }, | 146 | ...{ childSpecsDTO }, |
| 155 | ...{ | 147 | ...{ |
| @@ -160,6 +152,13 @@ | @@ -160,6 +152,13 @@ | ||
| 160 | }; | 152 | }; |
| 161 | const setFormData = (v) => { | 153 | const setFormData = (v) => { |
| 162 | setFieldsValue(v); | 154 | setFieldsValue(v); |
| 155 | + setFieldsValue({ | ||
| 156 | + ...v.dataSpecs, | ||
| 157 | + }); | ||
| 158 | + nextTick(() => { | ||
| 159 | + minMaxObj.min = v?.dataSpecs?.min; | ||
| 160 | + minMaxObj.max = v?.dataSpecs?.max; | ||
| 161 | + }); | ||
| 163 | }; | 162 | }; |
| 164 | const resetFormData = () => { | 163 | const resetFormData = () => { |
| 165 | resetFields(); | 164 | resetFields(); |
| @@ -34,7 +34,7 @@ | @@ -34,7 +34,7 @@ | ||
| 34 | isUpdate.value = data.isUpdate; | 34 | isUpdate.value = data.isUpdate; |
| 35 | isFlag.value = data.flag; | 35 | isFlag.value = data.flag; |
| 36 | excludeStruct.value = data.excludeStruct; | 36 | excludeStruct.value = data.excludeStruct; |
| 37 | - AddParamFormRef.value?.setFormData(data.record); | 37 | + !isUpdate.value ? AddParamFormRef.value?.setFormData(data.record) : ''; |
| 38 | setEditData.getEditData = data.record; | 38 | setEditData.getEditData = data.record; |
| 39 | setModalProps({ loading: false }); | 39 | setModalProps({ loading: false }); |
| 40 | if (excludeStruct.value) { | 40 | if (excludeStruct.value) { |
| @@ -14,8 +14,6 @@ | @@ -14,8 +14,6 @@ | ||
| 14 | </div> | 14 | </div> |
| 15 | </template> | 15 | </template> |
| 16 | <script lang="ts" setup> | 16 | <script lang="ts" setup> |
| 17 | - import { buildUUID } from '/@/utils/uuid'; | ||
| 18 | - | ||
| 19 | const emit = defineEmits(['delete', 'edit']); | 17 | const emit = defineEmits(['delete', 'edit']); |
| 20 | const props = defineProps({ | 18 | const props = defineProps({ |
| 21 | index: { | 19 | index: { |
| @@ -38,7 +36,6 @@ | @@ -38,7 +36,6 @@ | ||
| 38 | const handleEdit = (item, index) => { | 36 | const handleEdit = (item, index) => { |
| 39 | const value = { | 37 | const value = { |
| 40 | ...item, | 38 | ...item, |
| 41 | - ...{ id: buildUUID() }, | ||
| 42 | ...{ index }, | 39 | ...{ index }, |
| 43 | }; | 40 | }; |
| 44 | emit('edit', value); | 41 | emit('edit', value); |
| @@ -47,9 +44,6 @@ | @@ -47,9 +44,6 @@ | ||
| 47 | const getFormData = () => { | 44 | const getFormData = () => { |
| 48 | return props.item; | 45 | return props.item; |
| 49 | }; | 46 | }; |
| 50 | - // const setFormData = (v) => { | ||
| 51 | - // console.log(v) | ||
| 52 | - // } | ||
| 53 | defineExpose({ | 47 | defineExpose({ |
| 54 | getFormData, | 48 | getFormData, |
| 55 | }); | 49 | }); |
| 1 | +import { buildUUID } from '/@/utils/uuid'; | ||
| 2 | + | ||
| 1 | export const mockData = { | 3 | export const mockData = { |
| 2 | _ppk: {}, | 4 | _ppk: {}, |
| 3 | - events: [], | 5 | + events: [ |
| 6 | + { | ||
| 7 | + createTs: 1666344382193, | ||
| 8 | + custom: true, | ||
| 9 | + description: '33', | ||
| 10 | + eventName: '事件1', | ||
| 11 | + eventType: 'ALERT_EVENT_TYPE', | ||
| 12 | + identifier: 'i1', | ||
| 13 | + outputData: [ | ||
| 14 | + { | ||
| 15 | + id: buildUUID(), | ||
| 16 | + custom: true, | ||
| 17 | + dataSpecs: { | ||
| 18 | + dataType: 'INT', | ||
| 19 | + max: '20', | ||
| 20 | + min: '10', | ||
| 21 | + step: '3', | ||
| 22 | + unit: 'W/㎡', | ||
| 23 | + unitName: '太阳总辐射', | ||
| 24 | + }, | ||
| 25 | + dataType: 'INT', | ||
| 26 | + direction: 'PARAM_OUTPUT', | ||
| 27 | + identifier: 'i1', | ||
| 28 | + name: '参数1', | ||
| 29 | + paraOrder: 0, | ||
| 30 | + }, | ||
| 31 | + ], | ||
| 32 | + productKey: 'hsrnXEfGFDv', | ||
| 33 | + required: false, | ||
| 34 | + }, | ||
| 35 | + ], | ||
| 4 | productKey: 'hsrnXEfGFDv', | 36 | productKey: 'hsrnXEfGFDv', |
| 5 | properties: [ | 37 | properties: [ |
| 6 | { | 38 | { |
| @@ -9,6 +41,7 @@ export const mockData = { | @@ -9,6 +41,7 @@ export const mockData = { | ||
| 9 | customFlag: true, | 41 | customFlag: true, |
| 10 | dataSpecsList: [ | 42 | dataSpecsList: [ |
| 11 | { | 43 | { |
| 44 | + id: buildUUID(), | ||
| 12 | childDataType: 'INT', | 45 | childDataType: 'INT', |
| 13 | childName: '测试参数1', | 46 | childName: '测试参数1', |
| 14 | childSpecsDTO: { | 47 | childSpecsDTO: { |
| @@ -34,6 +67,7 @@ export const mockData = { | @@ -34,6 +67,7 @@ export const mockData = { | ||
| 34 | name: '测试参数1', | 67 | name: '测试参数1', |
| 35 | }, | 68 | }, |
| 36 | { | 69 | { |
| 70 | + id: buildUUID(), | ||
| 37 | childDataType: 'INT', | 71 | childDataType: 'INT', |
| 38 | childName: '测试参数2', | 72 | childName: '测试参数2', |
| 39 | childSpecsDTO: { | 73 | childSpecsDTO: { |
| @@ -69,5 +103,251 @@ export const mockData = { | @@ -69,5 +103,251 @@ export const mockData = { | ||
| 69 | std: false, | 103 | std: false, |
| 70 | }, | 104 | }, |
| 71 | ], | 105 | ], |
| 72 | - services: [], | 106 | + services: [ |
| 107 | + { | ||
| 108 | + callType: 'ASYNC', | ||
| 109 | + createTs: 1666343456853, | ||
| 110 | + custom: true, | ||
| 111 | + description: '4343', | ||
| 112 | + identifier: 'Iide1', | ||
| 113 | + inputParams: [ | ||
| 114 | + { | ||
| 115 | + id: buildUUID(), | ||
| 116 | + custom: true, | ||
| 117 | + dataSpecs: { | ||
| 118 | + dataType: 'INT', | ||
| 119 | + max: '20', | ||
| 120 | + min: '10', | ||
| 121 | + step: '2', | ||
| 122 | + unit: 'dS/m', | ||
| 123 | + unitName: '土壤EC值', | ||
| 124 | + }, | ||
| 125 | + dataType: 'INT', | ||
| 126 | + direction: 'PARAM_INPUT', | ||
| 127 | + identifier: 'i1', | ||
| 128 | + name: '参数名字1', | ||
| 129 | + paraOrder: 0, | ||
| 130 | + }, | ||
| 131 | + ], | ||
| 132 | + outputParams: [ | ||
| 133 | + { | ||
| 134 | + id: buildUUID(), | ||
| 135 | + custom: true, | ||
| 136 | + dataSpecs: { | ||
| 137 | + dataType: 'INT', | ||
| 138 | + max: '20', | ||
| 139 | + min: '10', | ||
| 140 | + step: '3', | ||
| 141 | + unit: 'pH', | ||
| 142 | + unitName: 'PH值', | ||
| 143 | + }, | ||
| 144 | + dataType: 'INT', | ||
| 145 | + direction: 'PARAM_OUTPUT', | ||
| 146 | + identifier: 'i2', | ||
| 147 | + name: '输出参数2', | ||
| 148 | + paraOrder: 0, | ||
| 149 | + }, | ||
| 150 | + ], | ||
| 151 | + productKey: 'hsrnXEfGFDv', | ||
| 152 | + required: false, | ||
| 153 | + serviceName: '服务1', | ||
| 154 | + }, | ||
| 155 | + ], | ||
| 73 | }; | 156 | }; |
| 157 | + | ||
| 158 | +// { | ||
| 159 | +// _ppk: {}, | ||
| 160 | +// events: [], | ||
| 161 | +// productKey: 'hsrnXEfGFDv', | ||
| 162 | +// properties: [ | ||
| 163 | +// { | ||
| 164 | +// createTs: 1666259889029, | ||
| 165 | +// custom: true, | ||
| 166 | +// customFlag: true, | ||
| 167 | +// dataSpecsList: [ | ||
| 168 | +// { | ||
| 169 | +// id: buildUUID(), | ||
| 170 | +// childDataType: 'INT', | ||
| 171 | +// childName: '测试参数1', | ||
| 172 | +// childSpecsDTO: { | ||
| 173 | +// dataType: 'INT', | ||
| 174 | +// max: '30', | ||
| 175 | +// min: '20', | ||
| 176 | +// step: '1', | ||
| 177 | +// unit: 'mm/hour', | ||
| 178 | +// unitName: '降雨量', | ||
| 179 | +// }, | ||
| 180 | +// custom: true, | ||
| 181 | +// dataSpecs: { | ||
| 182 | +// dataType: 'INT', | ||
| 183 | +// max: '30', | ||
| 184 | +// min: '20', | ||
| 185 | +// step: '1', | ||
| 186 | +// unit: 'mm/hour', | ||
| 187 | +// unitName: '降雨量', | ||
| 188 | +// }, | ||
| 189 | +// dataType: 'STRUCT', | ||
| 190 | +// identifier: 'iden2', | ||
| 191 | +// isStd: 0, | ||
| 192 | +// name: '测试参数1', | ||
| 193 | +// }, | ||
| 194 | +// { | ||
| 195 | +// id: buildUUID(), | ||
| 196 | +// childDataType: 'INT', | ||
| 197 | +// childName: '测试参数2', | ||
| 198 | +// childSpecsDTO: { | ||
| 199 | +// dataType: 'INT', | ||
| 200 | +// max: '40', | ||
| 201 | +// min: '30', | ||
| 202 | +// step: '2', | ||
| 203 | +// unit: 'pH', | ||
| 204 | +// unitName: 'PH值', | ||
| 205 | +// }, | ||
| 206 | +// custom: true, | ||
| 207 | +// dataSpecs: { | ||
| 208 | +// dataType: 'INT', | ||
| 209 | +// max: '40', | ||
| 210 | +// min: '30', | ||
| 211 | +// step: '2', | ||
| 212 | +// unit: 'pH', | ||
| 213 | +// unitName: 'PH值', | ||
| 214 | +// }, | ||
| 215 | +// dataType: 'STRUCT', | ||
| 216 | +// identifier: 'idne2', | ||
| 217 | +// isStd: 0, | ||
| 218 | +// name: '测试参数2', | ||
| 219 | +// }, | ||
| 220 | +// ], | ||
| 221 | +// dataType: 'STRUCT', | ||
| 222 | +// description: '21212', | ||
| 223 | +// identifier: 'iden1', | ||
| 224 | +// name: '测试功能', | ||
| 225 | +// productKey: 'hsrnXEfGFDv', | ||
| 226 | +// required: false, | ||
| 227 | +// rwFlag: 'READ_WRITE', | ||
| 228 | +// std: false, | ||
| 229 | +// }, | ||
| 230 | +// ], | ||
| 231 | +// services: [], | ||
| 232 | +// }; | ||
| 233 | + | ||
| 234 | +// { | ||
| 235 | +// "_ppk": {}, | ||
| 236 | +// "events": [], | ||
| 237 | +// "productKey": "hsrnXEfGFDv", | ||
| 238 | +// "properties": [ | ||
| 239 | +// { | ||
| 240 | +// "createTs": 1666259889029, | ||
| 241 | +// "custom": true, | ||
| 242 | +// "customFlag": true, | ||
| 243 | +// "dataSpecsList": [ | ||
| 244 | +// { | ||
| 245 | +// "childDataType": "INT", | ||
| 246 | +// "childName": "测试参数1", | ||
| 247 | +// "childSpecsDTO": { | ||
| 248 | +// "dataType": "INT", | ||
| 249 | +// "max": "30", | ||
| 250 | +// "min": "20", | ||
| 251 | +// "step": "1", | ||
| 252 | +// "unit": "mm/hour", | ||
| 253 | +// "unitName": "降雨量" | ||
| 254 | +// }, | ||
| 255 | +// "custom": true, | ||
| 256 | +// "dataSpecs": { | ||
| 257 | +// "dataType": "INT", | ||
| 258 | +// "max": "30", | ||
| 259 | +// "min": "20", | ||
| 260 | +// "step": "1", | ||
| 261 | +// "unit": "mm/hour", | ||
| 262 | +// "unitName": "降雨量" | ||
| 263 | +// }, | ||
| 264 | +// "dataType": "STRUCT", | ||
| 265 | +// "identifier": "iden2", | ||
| 266 | +// "isStd": 0, | ||
| 267 | +// "name": "测试参数1" | ||
| 268 | +// }, | ||
| 269 | +// { | ||
| 270 | +// "childDataType": "INT", | ||
| 271 | +// "childName": "测试参数2", | ||
| 272 | +// "childSpecsDTO": { | ||
| 273 | +// "dataType": "INT", | ||
| 274 | +// "max": "40", | ||
| 275 | +// "min": "30", | ||
| 276 | +// "step": "2", | ||
| 277 | +// "unit": "pH", | ||
| 278 | +// "unitName": "PH值" | ||
| 279 | +// }, | ||
| 280 | +// "custom": true, | ||
| 281 | +// "dataSpecs": { | ||
| 282 | +// "dataType": "INT", | ||
| 283 | +// "max": "40", | ||
| 284 | +// "min": "30", | ||
| 285 | +// "step": "2", | ||
| 286 | +// "unit": "pH", | ||
| 287 | +// "unitName": "PH值" | ||
| 288 | +// }, | ||
| 289 | +// "dataType": "STRUCT", | ||
| 290 | +// "identifier": "idne2", | ||
| 291 | +// "isStd": 0, | ||
| 292 | +// "name": "测试参数2" | ||
| 293 | +// } | ||
| 294 | +// ], | ||
| 295 | +// "dataType": "STRUCT", | ||
| 296 | +// "description": "21212", | ||
| 297 | +// "identifier": "iden1", | ||
| 298 | +// "name": "测试功能", | ||
| 299 | +// "productKey": "hsrnXEfGFDv", | ||
| 300 | +// "required": false, | ||
| 301 | +// "rwFlag": "READ_WRITE", | ||
| 302 | +// "std": false | ||
| 303 | +// } | ||
| 304 | +// ], | ||
| 305 | +// "services": [ | ||
| 306 | +// { | ||
| 307 | +// "callType": "ASYNC", | ||
| 308 | +// "createTs": 1666343456853, | ||
| 309 | +// "custom": true, | ||
| 310 | +// "description": "4343", | ||
| 311 | +// "identifier": "Iide1", | ||
| 312 | +// "inputParams": [ | ||
| 313 | +// { | ||
| 314 | +// "custom": true, | ||
| 315 | +// "dataSpecs": { | ||
| 316 | +// "dataType": "INT", | ||
| 317 | +// "max": "20", | ||
| 318 | +// "min": "10", | ||
| 319 | +// "step": "2", | ||
| 320 | +// "unit": "dS/m", | ||
| 321 | +// "unitName": "土壤EC值" | ||
| 322 | +// }, | ||
| 323 | +// "dataType": "INT", | ||
| 324 | +// "direction": "PARAM_INPUT", | ||
| 325 | +// "identifier": "i1", | ||
| 326 | +// "name": "参数名字1", | ||
| 327 | +// "paraOrder": 0 | ||
| 328 | +// } | ||
| 329 | +// ], | ||
| 330 | +// "outputParams": [ | ||
| 331 | +// { | ||
| 332 | +// "custom": true, | ||
| 333 | +// "dataSpecs": { | ||
| 334 | +// "dataType": "INT", | ||
| 335 | +// "max": "20", | ||
| 336 | +// "min": "10", | ||
| 337 | +// "step": "3", | ||
| 338 | +// "unit": "pH", | ||
| 339 | +// "unitName": "PH值" | ||
| 340 | +// }, | ||
| 341 | +// "dataType": "INT", | ||
| 342 | +// "direction": "PARAM_OUTPUT", | ||
| 343 | +// "identifier": "i2", | ||
| 344 | +// "name": "输出参数2", | ||
| 345 | +// "paraOrder": 0 | ||
| 346 | +// } | ||
| 347 | +// ], | ||
| 348 | +// "productKey": "hsrnXEfGFDv", | ||
| 349 | +// "required": false, | ||
| 350 | +// "serviceName": "服务1" | ||
| 351 | +// } | ||
| 352 | +// ] | ||
| 353 | +// } |
| @@ -157,7 +157,7 @@ export const attrSchemas: FormSchema[] = [ | @@ -157,7 +157,7 @@ export const attrSchemas: FormSchema[] = [ | ||
| 157 | colProps: { | 157 | colProps: { |
| 158 | span: 24, | 158 | span: 24, |
| 159 | }, | 159 | }, |
| 160 | - defaultValue: 'readonly', | 160 | + defaultValue: 'READ_ONLY', |
| 161 | componentProps: { | 161 | componentProps: { |
| 162 | placeholder: '请选择读写类型', | 162 | placeholder: '请选择读写类型', |
| 163 | api: findDictItemByCode, | 163 | api: findDictItemByCode, |
| @@ -263,7 +263,7 @@ export const serviceSchemas: FormSchema[] = [ | @@ -263,7 +263,7 @@ export const serviceSchemas: FormSchema[] = [ | ||
| 263 | 263 | ||
| 264 | export const eventSchemas: FormSchema[] = [ | 264 | export const eventSchemas: FormSchema[] = [ |
| 265 | { | 265 | { |
| 266 | - field: 'configName', | 266 | + field: 'eventName', |
| 267 | label: '功能名称', | 267 | label: '功能名称', |
| 268 | required: true, | 268 | required: true, |
| 269 | component: 'Input', | 269 | component: 'Input', |
| @@ -276,7 +276,7 @@ export const eventSchemas: FormSchema[] = [ | @@ -276,7 +276,7 @@ export const eventSchemas: FormSchema[] = [ | ||
| 276 | }, | 276 | }, |
| 277 | }, | 277 | }, |
| 278 | { | 278 | { |
| 279 | - field: 'configName1', | 279 | + field: 'identifier', |
| 280 | label: '标识符', | 280 | label: '标识符', |
| 281 | required: true, | 281 | required: true, |
| 282 | component: 'Input', | 282 | component: 'Input', |
| @@ -289,7 +289,7 @@ export const eventSchemas: FormSchema[] = [ | @@ -289,7 +289,7 @@ export const eventSchemas: FormSchema[] = [ | ||
| 289 | }, | 289 | }, |
| 290 | }, | 290 | }, |
| 291 | { | 291 | { |
| 292 | - field: 'brand', | 292 | + field: 'eventType', |
| 293 | component: 'ApiRadioGroup', | 293 | component: 'ApiRadioGroup', |
| 294 | label: '事件类型', | 294 | label: '事件类型', |
| 295 | required: true, | 295 | required: true, |
| 1 | +/** | ||
| 2 | + * 校验部分字段 | ||
| 3 | + */ | ||
| 4 | +import { useMessage } from '/@/hooks/web/useMessage'; | ||
| 5 | +const { createMessage } = useMessage(); | ||
| 6 | + | ||
| 7 | +export const validateValueRangeAndStep = (min, step, max) => { | ||
| 8 | + if (min > max) { | ||
| 9 | + createMessage.error('最大值必须大于最小值,整数型不能有小数位,单精度有效位为7,双精度为16'); | ||
| 10 | + throw '最大值必须大于最小值,整数型不能有小数位,单精度有效位为7,双精度为16'; | ||
| 11 | + } | ||
| 12 | + if (step > max - min) { | ||
| 13 | + createMessage.error('步长不能大于取值范围的差值'); | ||
| 14 | + throw '步长不能大于取值范围的差值'; | ||
| 15 | + } | ||
| 16 | +}; |
| @@ -46,11 +46,11 @@ | @@ -46,11 +46,11 @@ | ||
| 46 | const selectOptions: Ref<SelectTypes['options']> = ref([ | 46 | const selectOptions: Ref<SelectTypes['options']> = ref([ |
| 47 | { | 47 | { |
| 48 | label: '电表转换脚本', | 48 | label: '电表转换脚本', |
| 49 | - value: 1, | 49 | + value: '2dadsasd212asddafd1', |
| 50 | }, | 50 | }, |
| 51 | { | 51 | { |
| 52 | label: '水表转换脚本', | 52 | label: '水表转换脚本', |
| 53 | - value: 2, | 53 | + value: 'dasdads776216dasdb1212sx', |
| 54 | }, | 54 | }, |
| 55 | ]); | 55 | ]); |
| 56 | onMounted(() => {}); | 56 | onMounted(() => {}); |
| @@ -78,7 +78,14 @@ | @@ -78,7 +78,14 @@ | ||
| 78 | }; | 78 | }; |
| 79 | 79 | ||
| 80 | const getFormData = () => { | 80 | const getFormData = () => { |
| 81 | - return selectScript; | 81 | + const value = { |
| 82 | + ...{ | ||
| 83 | + scriptId: selectScript.script, | ||
| 84 | + dataFormat: 'HEX', | ||
| 85 | + type: 'TCP', | ||
| 86 | + }, | ||
| 87 | + }; | ||
| 88 | + return value; | ||
| 82 | }; | 89 | }; |
| 83 | const resetFormData = () => { | 90 | const resetFormData = () => { |
| 84 | selectScript.script = null; | 91 | selectScript.script = null; |
| @@ -16,6 +16,11 @@ | @@ -16,6 +16,11 @@ | ||
| 16 | <a-input v-if="ifAdd" v-model:value="scriptForm.scriptName" placeholder="请输入脚本名称" /> | 16 | <a-input v-if="ifAdd" v-model:value="scriptForm.scriptName" placeholder="请输入脚本名称" /> |
| 17 | <a-input v-else v-model:value="scriptForm.inputParams" placeholder="请输入参数" /> | 17 | <a-input v-else v-model:value="scriptForm.inputParams" placeholder="请输入参数" /> |
| 18 | </a-form-item> | 18 | </a-form-item> |
| 19 | + <a-form-item label="上报数据类型" name="reportType"> | ||
| 20 | + <a-space direction="vertical"> | ||
| 21 | + <a-radio-group v-model:value="scriptForm.reportType" :options="typeOptions" /> | ||
| 22 | + </a-space> | ||
| 23 | + </a-form-item> | ||
| 19 | <a-form-item | 24 | <a-form-item |
| 20 | label="脚本内容" | 25 | label="脚本内容" |
| 21 | name="scriptContent" | 26 | name="scriptContent" |
| @@ -55,7 +60,7 @@ | @@ -55,7 +60,7 @@ | ||
| 55 | </div> | 60 | </div> |
| 56 | </template> | 61 | </template> |
| 57 | <script setup lang="ts"> | 62 | <script setup lang="ts"> |
| 58 | - import { ref, unref, reactive } from 'vue'; | 63 | + import { ref, unref, reactive, onMounted, toRef } from 'vue'; |
| 59 | import ace from 'ace-builds'; | 64 | import ace from 'ace-builds'; |
| 60 | import { Card, Button } from 'ant-design-vue'; | 65 | import { Card, Button } from 'ant-design-vue'; |
| 61 | import 'ace-builds/src-noconflict/theme-chrome'; // 默认设置的主题 | 66 | import 'ace-builds/src-noconflict/theme-chrome'; // 默认设置的主题 |
| @@ -64,6 +69,7 @@ | @@ -64,6 +69,7 @@ | ||
| 64 | import { CopyOutlined } from '@ant-design/icons-vue'; | 69 | import { CopyOutlined } from '@ant-design/icons-vue'; |
| 65 | import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard'; | 70 | import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard'; |
| 66 | import { useMessage } from '/@/hooks/web/useMessage'; | 71 | import { useMessage } from '/@/hooks/web/useMessage'; |
| 72 | + import { findDictItemByCode } from '/@/api/system/dict'; | ||
| 67 | 73 | ||
| 68 | defineEmits(['register']); | 74 | defineEmits(['register']); |
| 69 | defineProps({ | 75 | defineProps({ |
| @@ -75,11 +81,24 @@ | @@ -75,11 +81,24 @@ | ||
| 75 | scriptContent: '', | 81 | scriptContent: '', |
| 76 | inputParams: '', | 82 | inputParams: '', |
| 77 | outputParams: '', | 83 | outputParams: '', |
| 84 | + reportType: ['define 16'], | ||
| 85 | + }); | ||
| 86 | + const reportTypeOptions = reactive({ | ||
| 87 | + typeOptions: [], | ||
| 78 | }); | 88 | }); |
| 89 | + const typeOptions = toRef(reportTypeOptions, 'typeOptions'); | ||
| 79 | const { createMessage } = useMessage(); | 90 | const { createMessage } = useMessage(); |
| 80 | const { clipboardRef, copiedRef } = useCopyToClipboard(); | 91 | const { clipboardRef, copiedRef } = useCopyToClipboard(); |
| 81 | const aceEditor = ref(); | 92 | const aceEditor = ref(); |
| 82 | const aceRef = ref(); | 93 | const aceRef = ref(); |
| 94 | + onMounted(async () => { | ||
| 95 | + const res: any = await findDictItemByCode({ | ||
| 96 | + dictCode: 'report_data_type', | ||
| 97 | + }); | ||
| 98 | + reportTypeOptions.typeOptions = res.map((m) => { | ||
| 99 | + return { label: m.itemText, value: m.itemValue }; | ||
| 100 | + }); | ||
| 101 | + }); | ||
| 83 | // 初始化编辑器 | 102 | // 初始化编辑器 |
| 84 | const initEditor = (jsScript?: string) => { | 103 | const initEditor = (jsScript?: string) => { |
| 85 | aceEditor.value = ace.edit(aceRef.value, { | 104 | aceEditor.value = ace.edit(aceRef.value, { |
| @@ -2,6 +2,7 @@ import { BasicColumn, FormSchema } from '/@/components/Table'; | @@ -2,6 +2,7 @@ import { BasicColumn, FormSchema } from '/@/components/Table'; | ||
| 2 | import moment from 'moment'; | 2 | import moment from 'moment'; |
| 3 | import { h } from 'vue'; | 3 | import { h } from 'vue'; |
| 4 | import { Tag } from 'ant-design-vue'; | 4 | import { Tag } from 'ant-design-vue'; |
| 5 | +import { findDictItemByCode } from '/@/api/system/dict'; | ||
| 5 | 6 | ||
| 6 | // 表格配置 | 7 | // 表格配置 |
| 7 | export const columns: BasicColumn[] = [ | 8 | export const columns: BasicColumn[] = [ |
| @@ -83,6 +84,23 @@ export const formSchema: FormSchema[] = [ | @@ -83,6 +84,23 @@ export const formSchema: FormSchema[] = [ | ||
| 83 | colProps: { span: 24 }, | 84 | colProps: { span: 24 }, |
| 84 | }, | 85 | }, |
| 85 | { | 86 | { |
| 87 | + field: 'unit', | ||
| 88 | + label: '上报数据类型', | ||
| 89 | + component: 'ApiSelect', | ||
| 90 | + colProps: { | ||
| 91 | + span: 23, | ||
| 92 | + }, | ||
| 93 | + componentProps: { | ||
| 94 | + placeholder: '请上报数据类型', | ||
| 95 | + api: findDictItemByCode, | ||
| 96 | + params: { | ||
| 97 | + dictCode: 'report_data_type', | ||
| 98 | + }, | ||
| 99 | + labelField: 'itemText', | ||
| 100 | + valueField: 'itemValue', | ||
| 101 | + }, | ||
| 102 | + }, | ||
| 103 | + { | ||
| 86 | field: 'remark', | 104 | field: 'remark', |
| 87 | label: '', | 105 | label: '', |
| 88 | required: true, | 106 | required: true, |