Showing
11 changed files
with
101 additions
and
321 deletions
| ... | ... | @@ -9,12 +9,15 @@ export interface Specs { |
| 9 | 9 | length: string; |
| 10 | 10 | boolOpen: string; |
| 11 | 11 | boolClose: string; |
| 12 | + valueRange?: { | |
| 13 | + min: string; | |
| 14 | + max: string; | |
| 15 | + }; | |
| 12 | 16 | } |
| 13 | 17 | |
| 14 | 18 | export interface FunctionJson { |
| 15 | 19 | type: string; |
| 16 | - specs?: Partial<Specs>; | |
| 17 | - specsList?: ModelOfMatterParams[]; | |
| 20 | + specs?: Partial<Specs> | ModelOfMatterParams[]; | |
| 18 | 21 | } |
| 19 | 22 | |
| 20 | 23 | export interface ModelOfMatterParams { | ... | ... |
| 1 | 1 | <template> |
| 2 | - <div style="display: flex"> | |
| 3 | - <a-input | |
| 2 | + <div class="flex"> | |
| 3 | + <InputNumber | |
| 4 | 4 | placeholder="最小值" |
| 5 | - v-model:value="param.min" | |
| 5 | + :value="getValue.min" | |
| 6 | 6 | style="width: 38%" |
| 7 | - @input="emitChange" | |
| 7 | + @change="(value) => emitChange(value, 'min')" | |
| 8 | 8 | /> |
| 9 | 9 | <span style="width: 8px"></span> |
| 10 | 10 | <span>~</span> |
| 11 | 11 | <span style="width: 8px"></span> |
| 12 | - <a-input | |
| 12 | + <InputNumber | |
| 13 | 13 | placeholder="最大值" |
| 14 | - v-model:value="param.max" | |
| 14 | + :value="getValue.max" | |
| 15 | 15 | style="width: 38%" |
| 16 | - @input="emitChange" | |
| 16 | + @change="(value) => emitChange(value, 'max')" | |
| 17 | 17 | /> |
| 18 | 18 | </div> |
| 19 | 19 | </template> |
| 20 | 20 | <script lang="ts"> |
| 21 | - import { defineComponent, reactive, watchEffect } from 'vue'; | |
| 22 | - import { propTypes } from '/@/utils/propTypes'; | |
| 23 | - import { isEmpty } from '/@/utils/is'; | |
| 24 | - | |
| 25 | - export default defineComponent({ | |
| 26 | - name: 'JAddInput', | |
| 27 | - //--------------不继承Antd Design Vue Input的所有属性 否则控制台报大片警告-------------- | |
| 21 | + export default { | |
| 28 | 22 | inheritAttrs: false, |
| 29 | - props: { | |
| 30 | - value: propTypes.object.def({}), | |
| 31 | - }, | |
| 32 | - emits: ['change', 'update:value'], | |
| 33 | - setup(props, { emit }) { | |
| 34 | - const param = reactive({ | |
| 35 | - min: '', | |
| 36 | - max: '', | |
| 37 | - }); | |
| 38 | - watchEffect(() => { | |
| 39 | - initVal(); | |
| 40 | - }); | |
| 41 | - function initVal() { | |
| 42 | - if (props.value) { | |
| 43 | - param.min = props.value.min; | |
| 44 | - param.max = props.value.max; | |
| 45 | - } | |
| 46 | - } | |
| 47 | - function emitChange() { | |
| 48 | - emit('change', isEmpty(param) ? '' : param); | |
| 49 | - emit('update:value', isEmpty(param) ? '' : param); | |
| 50 | - } | |
| 51 | - return { | |
| 52 | - emitChange, | |
| 53 | - param, | |
| 23 | + }; | |
| 24 | +</script> | |
| 25 | +<script lang="ts" setup> | |
| 26 | + import { computed } from 'vue'; | |
| 27 | + import { InputNumber } from 'ant-design-vue'; | |
| 28 | + | |
| 29 | + const emit = defineEmits(['change', 'update:value']); | |
| 30 | + const props = withDefaults( | |
| 31 | + defineProps<{ | |
| 32 | + value?: { | |
| 33 | + min: Nullable<number>; | |
| 34 | + max: Nullable<number>; | |
| 54 | 35 | }; |
| 55 | - }, | |
| 36 | + }>(), | |
| 37 | + { | |
| 38 | + value: () => ({ min: null, max: null }), | |
| 39 | + } | |
| 40 | + ); | |
| 41 | + | |
| 42 | + const getValue = computed(() => { | |
| 43 | + const { value } = props; | |
| 44 | + return value; | |
| 56 | 45 | }); |
| 46 | + | |
| 47 | + function emitChange(value: number, key: 'min' | 'max') { | |
| 48 | + const _value = { ...props.value, [key]: value }; | |
| 49 | + emit('update:value', _value); | |
| 50 | + } | |
| 57 | 51 | </script> |
| 58 | 52 | <style scoped></style> | ... | ... |
| ... | ... | @@ -62,6 +62,8 @@ export const formSchemas: FormSchema[] = [ |
| 62 | 62 | field: FormField.VALUE_RANGE, |
| 63 | 63 | label: '取值范围', |
| 64 | 64 | component: 'CustomMinMaxInput', |
| 65 | + valueField: 'value', | |
| 66 | + changeEvent: 'update:value', | |
| 65 | 67 | colProps: { |
| 66 | 68 | span: 18, |
| 67 | 69 | }, |
| ... | ... | @@ -72,7 +74,7 @@ export const formSchemas: FormSchema[] = [ |
| 72 | 74 | { |
| 73 | 75 | field: FormField.STEP, |
| 74 | 76 | label: '步长', |
| 75 | - component: 'Input', | |
| 77 | + component: 'InputNumber', | |
| 76 | 78 | colProps: { |
| 77 | 79 | span: 18, |
| 78 | 80 | }, |
| ... | ... | @@ -198,6 +200,15 @@ export const formSchemas: FormSchema[] = [ |
| 198 | 200 | changeEvent: 'update:value', |
| 199 | 201 | colProps: { span: 24 }, |
| 200 | 202 | ifShow: ({ values }) => values[FormField.TYPE] === DateTypeEnum.IS_STRUCT, |
| 203 | + rules: [ | |
| 204 | + { | |
| 205 | + required: true, | |
| 206 | + validator(_rule, value, _callback) { | |
| 207 | + console.log(value); | |
| 208 | + return Promise.resolve(); | |
| 209 | + }, | |
| 210 | + }, | |
| 211 | + ], | |
| 201 | 212 | }, |
| 202 | 213 | { |
| 203 | 214 | field: FormField.REFARK, | ... | ... |
| ... | ... | @@ -48,18 +48,19 @@ export function transformFormValue(value: StructFormValue): Partial<ModelOfMatte |
| 48 | 48 | functionName, |
| 49 | 49 | identifier, |
| 50 | 50 | remark, |
| 51 | - specsList, | |
| 51 | + specs, | |
| 52 | 52 | } = value; |
| 53 | 53 | const { min, max } = valueRange! || {}; |
| 54 | 54 | const basic = { functionName, identifier, remark }; |
| 55 | 55 | let functionJson = {} as unknown as ModelOfMatterParams['functionJson']; |
| 56 | 56 | |
| 57 | + console.log(value); | |
| 57 | 58 | switch (type) { |
| 58 | 59 | case DateTypeEnum.IS_NUMBER_INT: |
| 59 | 60 | validateValueRangeAndStep(Number(min), Number(step), Number(max)); |
| 60 | 61 | functionJson = { |
| 61 | 62 | type, |
| 62 | - specs: { max, min, step, unit, unitName }, | |
| 63 | + specs: { max, min, valueRange, step, unit, unitName }, | |
| 63 | 64 | }; |
| 64 | 65 | break; |
| 65 | 66 | |
| ... | ... | @@ -67,7 +68,7 @@ export function transformFormValue(value: StructFormValue): Partial<ModelOfMatte |
| 67 | 68 | validateValueRangeAndStep(Number(min), Number(step), Number(max)); |
| 68 | 69 | functionJson = { |
| 69 | 70 | type, |
| 70 | - specs: { max, min, step, unit, unitName }, | |
| 71 | + specs: { max, min, valueRange, step, unit, unitName }, | |
| 71 | 72 | }; |
| 72 | 73 | break; |
| 73 | 74 | |
| ... | ... | @@ -92,7 +93,7 @@ export function transformFormValue(value: StructFormValue): Partial<ModelOfMatte |
| 92 | 93 | case DateTypeEnum.IS_STRUCT: |
| 93 | 94 | functionJson = { |
| 94 | 95 | type, |
| 95 | - specsList: specsList! as unknown as ModelOfMatterParams[], | |
| 96 | + specs: specs! as unknown as ModelOfMatterParams[], | |
| 96 | 97 | }; |
| 97 | 98 | break; |
| 98 | 99 | } | ... | ... |
| ... | ... | @@ -99,7 +99,7 @@ |
| 99 | 99 | </div> |
| 100 | 100 | </template> |
| 101 | 101 | <script lang="ts" setup> |
| 102 | - import { ref, nextTick, onUnmounted, onMounted } from 'vue'; | |
| 102 | + import { ref, nextTick, onUnmounted } from 'vue'; | |
| 103 | 103 | import { BasicTable, TableImg, useTable, TableAction, BasicColumn } from '/@/components/Table'; |
| 104 | 104 | import { columns, searchFormSchema, defaultObj } from './device.profile.data'; |
| 105 | 105 | import { useMessage } from '/@/hooks/web/useMessage'; |
| ... | ... | @@ -258,7 +258,6 @@ |
| 258 | 258 | } |
| 259 | 259 | |
| 260 | 260 | const [registerDrawer, { openDrawer }] = useDrawer(); |
| 261 | - onMounted(() => openDrawer(true)); | |
| 262 | 261 | //详情 |
| 263 | 262 | function handleDetailView(record: Recordable) { |
| 264 | 263 | openDrawer(true, { record }); | ... | ... |
| ... | ... | @@ -27,7 +27,7 @@ |
| 27 | 27 | <div class="flex justify-between items-end"> |
| 28 | 28 | <div class="flex gap-2"> |
| 29 | 29 | <Authority value=""> |
| 30 | - <Button v-if="isShowBtn" type="primary" @click="handleCreateOrEdit"> | |
| 30 | + <Button v-if="isShowBtn" type="primary" @click="handleCreateOrEdit()"> | |
| 31 | 31 | 新增物模型 |
| 32 | 32 | </Button> |
| 33 | 33 | <Button type="primary" @click="handleOpenTsl"> 物模型TSL </Button> |
| ... | ... | @@ -106,7 +106,6 @@ |
| 106 | 106 | </div> |
| 107 | 107 | </template> |
| 108 | 108 | <script lang="ts" setup> |
| 109 | - import { ref } from 'vue'; | |
| 110 | 109 | import { BasicTable, useTable, TableAction } from '/@/components/Table'; |
| 111 | 110 | import { useModal } from '/@/components/Modal'; |
| 112 | 111 | import { physicalColumn } from '../device.profile.data'; |
| ... | ... | @@ -120,6 +119,7 @@ |
| 120 | 119 | import { deleteModel, getModelList } from '/@/api/device/modelOfMatter'; |
| 121 | 120 | import { OpenModelOfMatterModelParams, OpenModelMode } from './cpns/physical/types'; |
| 122 | 121 | import { ModelOfMatterParams } from '/@/api/device/model/modelOfMatterModel'; |
| 122 | + import { ref } from 'vue'; | |
| 123 | 123 | defineEmits(['register']); |
| 124 | 124 | |
| 125 | 125 | defineProps<{ | ... | ... |
| ... | ... | @@ -2,6 +2,7 @@ |
| 2 | 2 | <div> |
| 3 | 3 | <BasicModal |
| 4 | 4 | :maskClosable="false" |
| 5 | + destroy-on-close | |
| 5 | 6 | v-bind="$attrs" |
| 6 | 7 | width="55rem" |
| 7 | 8 | @register="register" |
| ... | ... | @@ -24,7 +25,11 @@ |
| 24 | 25 | > |
| 25 | 26 | <TabPane :key="FunctionType.PROPERTIES" tab="属性" /> |
| 26 | 27 | <TabPane :key="FunctionType.SERVICE" tab="服务" /> |
| 27 | - <TabPane :key="FunctionType.EVENTS" tab="事件" /> | |
| 28 | + <TabPane | |
| 29 | + :key="FunctionType.EVENTS" | |
| 30 | + tab="事件" | |
| 31 | + :disabled="$props.record.transportType === 'TCP'" | |
| 32 | + /> | |
| 28 | 33 | </Tabs> |
| 29 | 34 | <Attribute v-show="activeKey === FunctionType.PROPERTIES" ref="AttrRef" /> |
| 30 | 35 | <Service v-show="activeKey === FunctionType.SERVICE" ref="ServiceRef" /> |
| ... | ... | @@ -62,6 +67,7 @@ |
| 62 | 67 | const ServiceRef = ref<InstanceType<typeof Service>>(); |
| 63 | 68 | const EventsRef = ref<InstanceType<typeof Events>>(); |
| 64 | 69 | const openModalMode = ref<OpenModelMode>(OpenModelMode.CREATE); |
| 70 | + const openModalParams = ref<OpenModelOfMatterModelParams>(); | |
| 65 | 71 | |
| 66 | 72 | const functionType = ref<FunctionType>(); |
| 67 | 73 | const { createMessage } = useMessage(); |
| ... | ... | @@ -83,6 +89,7 @@ |
| 83 | 89 | |
| 84 | 90 | const [register, { closeModal, setModalProps }] = useModalInner( |
| 85 | 91 | async (data: OpenModelOfMatterModelParams) => { |
| 92 | + openModalParams.value = data; | |
| 86 | 93 | const { mode, record } = data; |
| 87 | 94 | openModalMode.value = mode; |
| 88 | 95 | if (record) { |
| ... | ... | @@ -121,7 +128,7 @@ |
| 121 | 128 | if (activeKey.value == FunctionType.PROPERTIES) { |
| 122 | 129 | params = (await AttrRef.value?.getFormData()) || {}; |
| 123 | 130 | } else if (activeKey.value == FunctionType.SERVICE) { |
| 124 | - params = await ServiceRef.value?.getFormData(); | |
| 131 | + params = (await ServiceRef.value?.getFormData()) || {}; | |
| 125 | 132 | } else { |
| 126 | 133 | params = await EventsRef.value?.getFormData(); |
| 127 | 134 | } |
| ... | ... | @@ -130,7 +137,7 @@ |
| 130 | 137 | await createModel(params); |
| 131 | 138 | createMessage.success('创建成功'); |
| 132 | 139 | } else { |
| 133 | - params.id = props.record.id; | |
| 140 | + params.id = unref(openModalParams)?.record.id; | |
| 134 | 141 | await updateModel(params); |
| 135 | 142 | createMessage.success('修改成功'); |
| 136 | 143 | } | ... | ... |
| 1 | 1 | <template> |
| 2 | - <div> | |
| 3 | - <BasicForm @register="register" /> | |
| 4 | - </div> | |
| 2 | + <BasicForm @register="register" /> | |
| 5 | 3 | </template> |
| 6 | 4 | <script lang="ts" setup> |
| 7 | 5 | import { BasicForm, useForm } from '/@/components/Form'; |
| ... | ... | @@ -12,6 +10,7 @@ |
| 12 | 10 | StructFormValue, |
| 13 | 11 | StructRecord, |
| 14 | 12 | } from '/@/components/Form/src/externalCompns/components/StructForm/type'; |
| 13 | + import { isObject } from 'lodash'; | |
| 15 | 14 | |
| 16 | 15 | const [register, { validate, resetFields, setFieldsValue }] = useForm({ |
| 17 | 16 | labelWidth: 100, |
| ... | ... | @@ -42,11 +41,7 @@ |
| 42 | 41 | const value = { |
| 43 | 42 | ...record, |
| 44 | 43 | ...functionJson, |
| 45 | - ...specs, | |
| 46 | - valueRange: { | |
| 47 | - min: specs.min, | |
| 48 | - max: specs.max, | |
| 49 | - }, | |
| 44 | + ...(isObject(specs) ? specs : {}), | |
| 50 | 45 | }; |
| 51 | 46 | |
| 52 | 47 | setFieldsValue(value); | ... | ... |
| 1 | 1 | <template> |
| 2 | - <div> | |
| 3 | - <BasicForm @register="register"> | |
| 4 | - <template #outputParamSlot> | |
| 5 | - <div> | |
| 6 | - <template v-for="(item, index) in outputParamData" :key="item"> | |
| 7 | - <span style="display: none">{{ item }}</span> | |
| 8 | - <InputParamItem | |
| 9 | - :title="item.name" | |
| 10 | - :item="item" | |
| 11 | - class="mt-4" | |
| 12 | - :index="index" | |
| 13 | - :ref="dynamicBindRef.outputParamItemRef" | |
| 14 | - @delete="deleteOutParItem" | |
| 15 | - @edit="editOutParItem" | |
| 16 | - /> | |
| 17 | - </template> | |
| 18 | - <div style="display: flex" :class="{ 'mt-2': outputParamData.length > 0 }"> | |
| 19 | - <span class="add-style">+</span> | |
| 20 | - <span class="add-style" @click="handleAddOutParam">增加参数</span> | |
| 21 | - </div> | |
| 22 | - </div> | |
| 23 | - </template> | |
| 24 | - </BasicForm> | |
| 25 | - <AddParamsModal @register="registerModal" @data="getData" /> | |
| 26 | - </div> | |
| 2 | + <BasicForm @register="register" /> | |
| 27 | 3 | </template> |
| 28 | 4 | <script lang="ts" setup> |
| 29 | - import { ref, unref } from 'vue'; | |
| 30 | 5 | import { BasicForm, useForm } from '/@/components/Form'; |
| 31 | 6 | import { eventSchemas } from './config'; |
| 32 | - import { useModal } from '/@/components/Modal'; | |
| 33 | - import InputParamItem from './components/InputParamItem.vue'; | |
| 34 | - import AddParamsModal from './components/AddParamsModal.vue'; | |
| 35 | - import { buildUUID } from '/@/utils/uuid'; | |
| 7 | + import { ModelOfMatterParams } from '/@/api/device/model/modelOfMatterModel'; | |
| 36 | 8 | |
| 37 | - const outputParamData: any = ref([]); | |
| 38 | - const dynamicBindRef = { | |
| 39 | - outputParamItemRef: ref([]), | |
| 40 | - }; | |
| 41 | - | |
| 42 | - const [registerModal, { openModal }] = useModal(); | |
| 43 | - | |
| 44 | - const [register, { validate, setFieldsValue, resetFields }] = useForm({ | |
| 9 | + const [register, { validate, resetFields }] = useForm({ | |
| 45 | 10 | labelWidth: 100, |
| 46 | 11 | schemas: eventSchemas, |
| 47 | 12 | actionColOptions: { |
| ... | ... | @@ -52,70 +17,18 @@ |
| 52 | 17 | showActionButtonGroup: false, |
| 53 | 18 | }); |
| 54 | 19 | |
| 55 | - const getData = (d, f) => { | |
| 56 | - if (f == 'output') { | |
| 57 | - if (d.id !== null) { | |
| 58 | - const findIndex = unref(outputParamData).findIndex((f) => f.id == d.id); | |
| 59 | - if (findIndex !== -1) unref(outputParamData).splice(findIndex, 1, d); | |
| 60 | - } else { | |
| 61 | - unref(outputParamData).push({ ...d, id: buildUUID() }); | |
| 62 | - } | |
| 63 | - } | |
| 64 | - }; | |
| 65 | - | |
| 66 | - const handleAddOutParam = () => { | |
| 67 | - openModal(true, { | |
| 68 | - isUpdate: true, | |
| 69 | - flag: 'output', | |
| 70 | - excludeStruct: false, | |
| 71 | - }); | |
| 72 | - }; | |
| 73 | - | |
| 74 | - const deleteOutParItem = (index) => { | |
| 75 | - unref(outputParamData).splice(index, 1); | |
| 76 | - }; | |
| 77 | - | |
| 78 | - const editOutParItem = (item) => { | |
| 79 | - openModal(true, { | |
| 80 | - isUpdate: false, | |
| 81 | - record: item, | |
| 82 | - flag: 'output', | |
| 83 | - excludeStruct: false, | |
| 84 | - }); | |
| 85 | - }; | |
| 86 | - | |
| 87 | 20 | //回显数据 |
| 88 | - const setFormData = (v) => { | |
| 89 | - setFieldsValue(v[0]); | |
| 90 | - const { outputData } = v[0]; | |
| 91 | - if (outputData !== undefined) { | |
| 92 | - outputParamData.value = [...new Array(outputData.length).keys()]; | |
| 93 | - outputParamData.value = outputData; | |
| 94 | - } | |
| 95 | - }; | |
| 96 | - | |
| 97 | - //获取数据 | |
| 98 | - const getStructList = () => { | |
| 99 | - const val = unref(dynamicBindRef.outputParamItemRef)?.map((item: any) => item.getFormData()); | |
| 100 | - return val; | |
| 101 | - }; | |
| 21 | + const setFormData = () => {}; | |
| 102 | 22 | |
| 103 | 23 | async function getFormData() { |
| 104 | - const values = await validate(); | |
| 24 | + const values = (await validate()) as ModelOfMatterParams; | |
| 105 | 25 | if (!values) return; |
| 106 | - const outputData = getStructList(); | |
| 107 | - const { outputParam, ...value } = values; | |
| 108 | - console.log(outputParam); | |
| 109 | - return { | |
| 110 | - ...value, | |
| 111 | - ...{ outputData }, | |
| 112 | - }; | |
| 26 | + console.log(values); | |
| 113 | 27 | } |
| 114 | 28 | |
| 115 | 29 | //清空数据 |
| 116 | 30 | const resetFormData = () => { |
| 117 | 31 | resetFields(); |
| 118 | - outputParamData.value = []; | |
| 119 | 32 | }; |
| 120 | 33 | |
| 121 | 34 | defineExpose({ | ... | ... |
| 1 | 1 | <template> |
| 2 | - <div> | |
| 3 | - <BasicForm @register="register"> | |
| 4 | - <template #inputParamSlot> | |
| 5 | - <div> | |
| 6 | - <template v-for="(item, index) in inputParamData" :key="item.id"> | |
| 7 | - <span style="display: none">{{ item }}</span> | |
| 8 | - <InputParamItem | |
| 9 | - :title="item.name" | |
| 10 | - :item="item" | |
| 11 | - class="mt-4" | |
| 12 | - :index="index" | |
| 13 | - :ref="dynamicBindRef.inputParamItemRef" | |
| 14 | - @delete="deleteInParItem" | |
| 15 | - @edit="editInParItem" | |
| 16 | - /> | |
| 17 | - </template> | |
| 18 | - <div style="display: flex" :class="{ 'mt-2': inputParamData.length > 0 }"> | |
| 19 | - <span class="add-style">+</span> | |
| 20 | - <span class="add-style" @click="handleAddInParam">增加参数</span> | |
| 21 | - </div> | |
| 22 | - </div> | |
| 23 | - </template> | |
| 24 | - <template #outputParamSlot> | |
| 25 | - <div> | |
| 26 | - <template v-for="(item, index) in outputParamData" :key="item.id"> | |
| 27 | - <span style="display: none">{{ item }}</span> | |
| 28 | - <InputParamItem | |
| 29 | - :title="item.name" | |
| 30 | - :item="item" | |
| 31 | - class="mt-4" | |
| 32 | - :index="index" | |
| 33 | - :ref="dynamicBindRef.outputParamItemRef" | |
| 34 | - @delete="deleteOutParItem" | |
| 35 | - @edit="editOutParItem" | |
| 36 | - /> | |
| 37 | - </template> | |
| 38 | - <div style="display: flex" :class="{ 'mt-2': outputParamData.length > 0 }"> | |
| 39 | - <span class="add-style">+</span> | |
| 40 | - <span class="add-style" @click="handleAddOutParam">增加参数</span> | |
| 41 | - </div> | |
| 42 | - </div> | |
| 43 | - </template> | |
| 44 | - </BasicForm> | |
| 45 | - <AddParamsModal @register="registerModal" @data="getData" /> | |
| 46 | - </div> | |
| 2 | + <BasicForm @register="register" /> | |
| 47 | 3 | </template> |
| 48 | 4 | <script lang="ts" setup> |
| 49 | - import { ref, unref } from 'vue'; | |
| 50 | 5 | import { BasicForm, useForm } from '/@/components/Form'; |
| 51 | 6 | import { serviceSchemas } from './config'; |
| 52 | - import { useModal } from '/@/components/Modal'; | |
| 53 | - import InputParamItem from './components/InputParamItem.vue'; | |
| 54 | - import AddParamsModal from './components/AddParamsModal.vue'; | |
| 55 | - import { buildUUID } from '/@/utils/uuid'; | |
| 56 | - | |
| 57 | - const inputParamData: any = ref([]); | |
| 58 | - const outputParamData: any = ref([]); | |
| 59 | - const dynamicBindRef = { | |
| 60 | - inputParamItemRef: ref([]), | |
| 61 | - outputParamItemRef: ref([]), | |
| 62 | - }; | |
| 63 | - | |
| 64 | - const [registerModal, { openModal }] = useModal(); | |
| 65 | - | |
| 66 | - const [register, { validate, setFieldsValue, resetFields }] = useForm({ | |
| 7 | + import { ModelOfMatterParams } from '/@/api/device/model/modelOfMatterModel'; | |
| 8 | + import { FunctionType } from './config'; | |
| 9 | + const [register, { validate, resetFields }] = useForm({ | |
| 67 | 10 | labelWidth: 100, |
| 68 | 11 | schemas: serviceSchemas, |
| 69 | 12 | actionColOptions: { |
| ... | ... | @@ -74,111 +17,21 @@ |
| 74 | 17 | showActionButtonGroup: false, |
| 75 | 18 | }); |
| 76 | 19 | |
| 77 | - const getData = (d, f) => { | |
| 78 | - if (f == 'input') { | |
| 79 | - if (d.id !== null) { | |
| 80 | - const findIndex = unref(inputParamData).findIndex((f) => f.id == d.id); | |
| 81 | - if (findIndex !== -1) unref(inputParamData).splice(findIndex, 1, d); | |
| 82 | - } else { | |
| 83 | - unref(inputParamData).push({ ...d, id: buildUUID() }); | |
| 84 | - } | |
| 85 | - } else { | |
| 86 | - if (d.id !== null) { | |
| 87 | - const findIndex = unref(outputParamData).findIndex((f) => f.id == d.id); | |
| 88 | - if (findIndex !== -1) unref(outputParamData).splice(findIndex, 1, d); | |
| 89 | - } else { | |
| 90 | - unref(outputParamData).push({ ...d, id: buildUUID() }); | |
| 91 | - } | |
| 92 | - } | |
| 93 | - }; | |
| 94 | - | |
| 95 | - const handleAddInParam = () => { | |
| 96 | - openModal(true, { | |
| 97 | - isUpdate: true, | |
| 98 | - flag: 'input', | |
| 99 | - excludeStruct: false, | |
| 100 | - }); | |
| 101 | - }; | |
| 102 | - | |
| 103 | - const deleteInParItem = (index) => { | |
| 104 | - unref(inputParamData).splice(index, 1); | |
| 105 | - }; | |
| 106 | - | |
| 107 | - const editInParItem = (item) => { | |
| 108 | - openModal(true, { | |
| 109 | - isUpdate: false, | |
| 110 | - record: item, | |
| 111 | - flag: 'input', | |
| 112 | - excludeStruct: false, | |
| 113 | - }); | |
| 114 | - }; | |
| 115 | - | |
| 116 | - const handleAddOutParam = () => { | |
| 117 | - openModal(true, { | |
| 118 | - isUpdate: true, | |
| 119 | - flag: 'output', | |
| 120 | - excludeStruct: false, | |
| 121 | - }); | |
| 122 | - }; | |
| 123 | - | |
| 124 | - const deleteOutParItem = (index) => { | |
| 125 | - unref(outputParamData).splice(index, 1); | |
| 126 | - }; | |
| 127 | - | |
| 128 | - const editOutParItem = (item) => { | |
| 129 | - openModal(true, { | |
| 130 | - isUpdate: false, | |
| 131 | - record: item, | |
| 132 | - flag: 'output', | |
| 133 | - excludeStruct: false, | |
| 134 | - }); | |
| 135 | - }; | |
| 136 | - | |
| 137 | 20 | //回显数据 |
| 138 | - const setFormData = (v) => { | |
| 139 | - setFieldsValue(v[0]); | |
| 140 | - const { inputParams, outputParams } = v[0]; | |
| 141 | - if (outputParams !== undefined) { | |
| 142 | - outputParamData.value = [...new Array(outputParams.length).keys()]; | |
| 143 | - outputParamData.value = outputParams; | |
| 144 | - } | |
| 145 | - if (inputParams !== undefined) { | |
| 146 | - inputParamData.value = [...new Array(inputParams.length).keys()]; | |
| 147 | - inputParamData.value = inputParams; | |
| 148 | - } | |
| 149 | - }; | |
| 150 | - | |
| 151 | - const getInputStructList = () => { | |
| 152 | - const val = unref(dynamicBindRef.inputParamItemRef)?.map((item: any) => item.getFormData()); | |
| 153 | - return val; | |
| 154 | - }; | |
| 155 | - | |
| 156 | - const getOutputStructList = () => { | |
| 157 | - const val = unref(dynamicBindRef.outputParamItemRef)?.map((item: any) => item.getFormData()); | |
| 158 | - return val; | |
| 159 | - }; | |
| 21 | + const setFormData = () => {}; | |
| 160 | 22 | |
| 161 | 23 | //获取数据 |
| 162 | 24 | async function getFormData() { |
| 163 | - const values = await validate(); | |
| 25 | + const values = (await validate()) as ModelOfMatterParams; | |
| 164 | 26 | if (!values) return; |
| 165 | - const inputParams = getInputStructList(); | |
| 166 | - const outputParams = getOutputStructList(); | |
| 167 | - const { inputParam, outputParam, ...value } = values; | |
| 168 | - console.log(inputParam); | |
| 169 | - console.log(outputParam); | |
| 170 | - return { | |
| 171 | - ...value, | |
| 172 | - ...{ inputParams }, | |
| 173 | - ...{ outputParams }, | |
| 174 | - }; | |
| 27 | + values.functionType = FunctionType.SERVICE; | |
| 28 | + console.log(values); | |
| 29 | + return values; | |
| 175 | 30 | } |
| 176 | 31 | |
| 177 | 32 | //清空数据 |
| 178 | 33 | const resetFormData = () => { |
| 179 | 34 | resetFields(); |
| 180 | - inputParamData.value = []; | |
| 181 | - outputParamData.value = []; | |
| 182 | 35 | }; |
| 183 | 36 | |
| 184 | 37 | defineExpose({ | ... | ... |
| ... | ... | @@ -18,9 +18,10 @@ export enum FormField { |
| 18 | 18 | BOOL_OPEN = 'boolOpen', |
| 19 | 19 | LENGTH = 'length', |
| 20 | 20 | R_W_FLAG = 'rwFlag', |
| 21 | - SPECS_LIST = 'specsList', | |
| 21 | + SPECS_LIST = 'specs', | |
| 22 | 22 | CALL_TYPE = 'callType', |
| 23 | - INPUT_PARAM = 'inputParam', | |
| 23 | + INPUT_PARAM = 'inputData', | |
| 24 | + OUTPUT_PARAM = 'outputData', | |
| 24 | 25 | EVENT_TYPE = 'eventType', |
| 25 | 26 | |
| 26 | 27 | STRUCT = 'struct', |
| ... | ... | @@ -130,15 +131,17 @@ export const serviceSchemas: FormSchema[] = [ |
| 130 | 131 | { |
| 131 | 132 | field: FormField.INPUT_PARAM, |
| 132 | 133 | label: '输入参数', |
| 133 | - component: 'Input', | |
| 134 | - slot: 'inputParamSlot', | |
| 134 | + component: 'StructForm', | |
| 135 | + valueField: 'value', | |
| 136 | + changeEvent: 'update:value', | |
| 135 | 137 | colProps: { span: 24 }, |
| 136 | 138 | }, |
| 137 | 139 | { |
| 138 | - field: FormField.SPECS_LIST, | |
| 140 | + field: FormField.OUTPUT_PARAM, | |
| 139 | 141 | label: '输出参数', |
| 140 | - component: 'Input', | |
| 141 | - slot: 'outputParamSlot', | |
| 142 | + component: 'StructForm', | |
| 143 | + valueField: 'value', | |
| 144 | + changeEvent: 'update:value', | |
| 142 | 145 | colProps: { span: 24 }, |
| 143 | 146 | }, |
| 144 | 147 | { |
| ... | ... | @@ -200,10 +203,11 @@ export const eventSchemas: FormSchema[] = [ |
| 200 | 203 | }, |
| 201 | 204 | }, |
| 202 | 205 | { |
| 203 | - field: FormField.SPECS_LIST, | |
| 206 | + field: FormField.OUTPUT_PARAM, | |
| 204 | 207 | label: '输出参数', |
| 205 | - component: 'Input', | |
| 206 | - slot: 'outputParamSlot', | |
| 208 | + component: 'StructForm', | |
| 209 | + valueField: 'value', | |
| 210 | + changeEvent: 'update:value', | |
| 207 | 211 | colProps: { span: 24 }, |
| 208 | 212 | }, |
| 209 | 213 | { | ... | ... |