Showing
11 changed files
with
101 additions
and
321 deletions
@@ -9,12 +9,15 @@ export interface Specs { | @@ -9,12 +9,15 @@ export interface Specs { | ||
9 | length: string; | 9 | length: string; |
10 | boolOpen: string; | 10 | boolOpen: string; |
11 | boolClose: string; | 11 | boolClose: string; |
12 | + valueRange?: { | ||
13 | + min: string; | ||
14 | + max: string; | ||
15 | + }; | ||
12 | } | 16 | } |
13 | 17 | ||
14 | export interface FunctionJson { | 18 | export interface FunctionJson { |
15 | type: string; | 19 | type: string; |
16 | - specs?: Partial<Specs>; | ||
17 | - specsList?: ModelOfMatterParams[]; | 20 | + specs?: Partial<Specs> | ModelOfMatterParams[]; |
18 | } | 21 | } |
19 | 22 | ||
20 | export interface ModelOfMatterParams { | 23 | export interface ModelOfMatterParams { |
1 | <template> | 1 | <template> |
2 | - <div style="display: flex"> | ||
3 | - <a-input | 2 | + <div class="flex"> |
3 | + <InputNumber | ||
4 | placeholder="最小值" | 4 | placeholder="最小值" |
5 | - v-model:value="param.min" | 5 | + :value="getValue.min" |
6 | style="width: 38%" | 6 | style="width: 38%" |
7 | - @input="emitChange" | 7 | + @change="(value) => emitChange(value, 'min')" |
8 | /> | 8 | /> |
9 | <span style="width: 8px"></span> | 9 | <span style="width: 8px"></span> |
10 | <span>~</span> | 10 | <span>~</span> |
11 | <span style="width: 8px"></span> | 11 | <span style="width: 8px"></span> |
12 | - <a-input | 12 | + <InputNumber |
13 | placeholder="最大值" | 13 | placeholder="最大值" |
14 | - v-model:value="param.max" | 14 | + :value="getValue.max" |
15 | style="width: 38%" | 15 | style="width: 38%" |
16 | - @input="emitChange" | 16 | + @change="(value) => emitChange(value, 'max')" |
17 | /> | 17 | /> |
18 | </div> | 18 | </div> |
19 | </template> | 19 | </template> |
20 | <script lang="ts"> | 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 | inheritAttrs: false, | 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 | </script> | 51 | </script> |
58 | <style scoped></style> | 52 | <style scoped></style> |
@@ -62,6 +62,8 @@ export const formSchemas: FormSchema[] = [ | @@ -62,6 +62,8 @@ export const formSchemas: FormSchema[] = [ | ||
62 | field: FormField.VALUE_RANGE, | 62 | field: FormField.VALUE_RANGE, |
63 | label: '取值范围', | 63 | label: '取值范围', |
64 | component: 'CustomMinMaxInput', | 64 | component: 'CustomMinMaxInput', |
65 | + valueField: 'value', | ||
66 | + changeEvent: 'update:value', | ||
65 | colProps: { | 67 | colProps: { |
66 | span: 18, | 68 | span: 18, |
67 | }, | 69 | }, |
@@ -72,7 +74,7 @@ export const formSchemas: FormSchema[] = [ | @@ -72,7 +74,7 @@ export const formSchemas: FormSchema[] = [ | ||
72 | { | 74 | { |
73 | field: FormField.STEP, | 75 | field: FormField.STEP, |
74 | label: '步长', | 76 | label: '步长', |
75 | - component: 'Input', | 77 | + component: 'InputNumber', |
76 | colProps: { | 78 | colProps: { |
77 | span: 18, | 79 | span: 18, |
78 | }, | 80 | }, |
@@ -198,6 +200,15 @@ export const formSchemas: FormSchema[] = [ | @@ -198,6 +200,15 @@ export const formSchemas: FormSchema[] = [ | ||
198 | changeEvent: 'update:value', | 200 | changeEvent: 'update:value', |
199 | colProps: { span: 24 }, | 201 | colProps: { span: 24 }, |
200 | ifShow: ({ values }) => values[FormField.TYPE] === DateTypeEnum.IS_STRUCT, | 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 | field: FormField.REFARK, | 214 | field: FormField.REFARK, |
@@ -48,18 +48,19 @@ export function transformFormValue(value: StructFormValue): Partial<ModelOfMatte | @@ -48,18 +48,19 @@ export function transformFormValue(value: StructFormValue): Partial<ModelOfMatte | ||
48 | functionName, | 48 | functionName, |
49 | identifier, | 49 | identifier, |
50 | remark, | 50 | remark, |
51 | - specsList, | 51 | + specs, |
52 | } = value; | 52 | } = value; |
53 | const { min, max } = valueRange! || {}; | 53 | const { min, max } = valueRange! || {}; |
54 | const basic = { functionName, identifier, remark }; | 54 | const basic = { functionName, identifier, remark }; |
55 | let functionJson = {} as unknown as ModelOfMatterParams['functionJson']; | 55 | let functionJson = {} as unknown as ModelOfMatterParams['functionJson']; |
56 | 56 | ||
57 | + console.log(value); | ||
57 | switch (type) { | 58 | switch (type) { |
58 | case DateTypeEnum.IS_NUMBER_INT: | 59 | case DateTypeEnum.IS_NUMBER_INT: |
59 | validateValueRangeAndStep(Number(min), Number(step), Number(max)); | 60 | validateValueRangeAndStep(Number(min), Number(step), Number(max)); |
60 | functionJson = { | 61 | functionJson = { |
61 | type, | 62 | type, |
62 | - specs: { max, min, step, unit, unitName }, | 63 | + specs: { max, min, valueRange, step, unit, unitName }, |
63 | }; | 64 | }; |
64 | break; | 65 | break; |
65 | 66 | ||
@@ -67,7 +68,7 @@ export function transformFormValue(value: StructFormValue): Partial<ModelOfMatte | @@ -67,7 +68,7 @@ export function transformFormValue(value: StructFormValue): Partial<ModelOfMatte | ||
67 | validateValueRangeAndStep(Number(min), Number(step), Number(max)); | 68 | validateValueRangeAndStep(Number(min), Number(step), Number(max)); |
68 | functionJson = { | 69 | functionJson = { |
69 | type, | 70 | type, |
70 | - specs: { max, min, step, unit, unitName }, | 71 | + specs: { max, min, valueRange, step, unit, unitName }, |
71 | }; | 72 | }; |
72 | break; | 73 | break; |
73 | 74 | ||
@@ -92,7 +93,7 @@ export function transformFormValue(value: StructFormValue): Partial<ModelOfMatte | @@ -92,7 +93,7 @@ export function transformFormValue(value: StructFormValue): Partial<ModelOfMatte | ||
92 | case DateTypeEnum.IS_STRUCT: | 93 | case DateTypeEnum.IS_STRUCT: |
93 | functionJson = { | 94 | functionJson = { |
94 | type, | 95 | type, |
95 | - specsList: specsList! as unknown as ModelOfMatterParams[], | 96 | + specs: specs! as unknown as ModelOfMatterParams[], |
96 | }; | 97 | }; |
97 | break; | 98 | break; |
98 | } | 99 | } |
@@ -99,7 +99,7 @@ | @@ -99,7 +99,7 @@ | ||
99 | </div> | 99 | </div> |
100 | </template> | 100 | </template> |
101 | <script lang="ts" setup> | 101 | <script lang="ts" setup> |
102 | - import { ref, nextTick, onUnmounted, onMounted } from 'vue'; | 102 | + import { ref, nextTick, onUnmounted } from 'vue'; |
103 | import { BasicTable, TableImg, useTable, TableAction, BasicColumn } from '/@/components/Table'; | 103 | import { BasicTable, TableImg, useTable, TableAction, BasicColumn } from '/@/components/Table'; |
104 | import { columns, searchFormSchema, defaultObj } from './device.profile.data'; | 104 | import { columns, searchFormSchema, defaultObj } from './device.profile.data'; |
105 | import { useMessage } from '/@/hooks/web/useMessage'; | 105 | import { useMessage } from '/@/hooks/web/useMessage'; |
@@ -258,7 +258,6 @@ | @@ -258,7 +258,6 @@ | ||
258 | } | 258 | } |
259 | 259 | ||
260 | const [registerDrawer, { openDrawer }] = useDrawer(); | 260 | const [registerDrawer, { openDrawer }] = useDrawer(); |
261 | - onMounted(() => openDrawer(true)); | ||
262 | //详情 | 261 | //详情 |
263 | function handleDetailView(record: Recordable) { | 262 | function handleDetailView(record: Recordable) { |
264 | openDrawer(true, { record }); | 263 | openDrawer(true, { record }); |
@@ -27,7 +27,7 @@ | @@ -27,7 +27,7 @@ | ||
27 | <div class="flex justify-between items-end"> | 27 | <div class="flex justify-between items-end"> |
28 | <div class="flex gap-2"> | 28 | <div class="flex gap-2"> |
29 | <Authority value=""> | 29 | <Authority value=""> |
30 | - <Button v-if="isShowBtn" type="primary" @click="handleCreateOrEdit"> | 30 | + <Button v-if="isShowBtn" type="primary" @click="handleCreateOrEdit()"> |
31 | 新增物模型 | 31 | 新增物模型 |
32 | </Button> | 32 | </Button> |
33 | <Button type="primary" @click="handleOpenTsl"> 物模型TSL </Button> | 33 | <Button type="primary" @click="handleOpenTsl"> 物模型TSL </Button> |
@@ -106,7 +106,6 @@ | @@ -106,7 +106,6 @@ | ||
106 | </div> | 106 | </div> |
107 | </template> | 107 | </template> |
108 | <script lang="ts" setup> | 108 | <script lang="ts" setup> |
109 | - import { ref } from 'vue'; | ||
110 | import { BasicTable, useTable, TableAction } from '/@/components/Table'; | 109 | import { BasicTable, useTable, TableAction } from '/@/components/Table'; |
111 | import { useModal } from '/@/components/Modal'; | 110 | import { useModal } from '/@/components/Modal'; |
112 | import { physicalColumn } from '../device.profile.data'; | 111 | import { physicalColumn } from '../device.profile.data'; |
@@ -120,6 +119,7 @@ | @@ -120,6 +119,7 @@ | ||
120 | import { deleteModel, getModelList } from '/@/api/device/modelOfMatter'; | 119 | import { deleteModel, getModelList } from '/@/api/device/modelOfMatter'; |
121 | import { OpenModelOfMatterModelParams, OpenModelMode } from './cpns/physical/types'; | 120 | import { OpenModelOfMatterModelParams, OpenModelMode } from './cpns/physical/types'; |
122 | import { ModelOfMatterParams } from '/@/api/device/model/modelOfMatterModel'; | 121 | import { ModelOfMatterParams } from '/@/api/device/model/modelOfMatterModel'; |
122 | + import { ref } from 'vue'; | ||
123 | defineEmits(['register']); | 123 | defineEmits(['register']); |
124 | 124 | ||
125 | defineProps<{ | 125 | defineProps<{ |
@@ -2,6 +2,7 @@ | @@ -2,6 +2,7 @@ | ||
2 | <div> | 2 | <div> |
3 | <BasicModal | 3 | <BasicModal |
4 | :maskClosable="false" | 4 | :maskClosable="false" |
5 | + destroy-on-close | ||
5 | v-bind="$attrs" | 6 | v-bind="$attrs" |
6 | width="55rem" | 7 | width="55rem" |
7 | @register="register" | 8 | @register="register" |
@@ -24,7 +25,11 @@ | @@ -24,7 +25,11 @@ | ||
24 | > | 25 | > |
25 | <TabPane :key="FunctionType.PROPERTIES" tab="属性" /> | 26 | <TabPane :key="FunctionType.PROPERTIES" tab="属性" /> |
26 | <TabPane :key="FunctionType.SERVICE" tab="服务" /> | 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 | </Tabs> | 33 | </Tabs> |
29 | <Attribute v-show="activeKey === FunctionType.PROPERTIES" ref="AttrRef" /> | 34 | <Attribute v-show="activeKey === FunctionType.PROPERTIES" ref="AttrRef" /> |
30 | <Service v-show="activeKey === FunctionType.SERVICE" ref="ServiceRef" /> | 35 | <Service v-show="activeKey === FunctionType.SERVICE" ref="ServiceRef" /> |
@@ -62,6 +67,7 @@ | @@ -62,6 +67,7 @@ | ||
62 | const ServiceRef = ref<InstanceType<typeof Service>>(); | 67 | const ServiceRef = ref<InstanceType<typeof Service>>(); |
63 | const EventsRef = ref<InstanceType<typeof Events>>(); | 68 | const EventsRef = ref<InstanceType<typeof Events>>(); |
64 | const openModalMode = ref<OpenModelMode>(OpenModelMode.CREATE); | 69 | const openModalMode = ref<OpenModelMode>(OpenModelMode.CREATE); |
70 | + const openModalParams = ref<OpenModelOfMatterModelParams>(); | ||
65 | 71 | ||
66 | const functionType = ref<FunctionType>(); | 72 | const functionType = ref<FunctionType>(); |
67 | const { createMessage } = useMessage(); | 73 | const { createMessage } = useMessage(); |
@@ -83,6 +89,7 @@ | @@ -83,6 +89,7 @@ | ||
83 | 89 | ||
84 | const [register, { closeModal, setModalProps }] = useModalInner( | 90 | const [register, { closeModal, setModalProps }] = useModalInner( |
85 | async (data: OpenModelOfMatterModelParams) => { | 91 | async (data: OpenModelOfMatterModelParams) => { |
92 | + openModalParams.value = data; | ||
86 | const { mode, record } = data; | 93 | const { mode, record } = data; |
87 | openModalMode.value = mode; | 94 | openModalMode.value = mode; |
88 | if (record) { | 95 | if (record) { |
@@ -121,7 +128,7 @@ | @@ -121,7 +128,7 @@ | ||
121 | if (activeKey.value == FunctionType.PROPERTIES) { | 128 | if (activeKey.value == FunctionType.PROPERTIES) { |
122 | params = (await AttrRef.value?.getFormData()) || {}; | 129 | params = (await AttrRef.value?.getFormData()) || {}; |
123 | } else if (activeKey.value == FunctionType.SERVICE) { | 130 | } else if (activeKey.value == FunctionType.SERVICE) { |
124 | - params = await ServiceRef.value?.getFormData(); | 131 | + params = (await ServiceRef.value?.getFormData()) || {}; |
125 | } else { | 132 | } else { |
126 | params = await EventsRef.value?.getFormData(); | 133 | params = await EventsRef.value?.getFormData(); |
127 | } | 134 | } |
@@ -130,7 +137,7 @@ | @@ -130,7 +137,7 @@ | ||
130 | await createModel(params); | 137 | await createModel(params); |
131 | createMessage.success('创建成功'); | 138 | createMessage.success('创建成功'); |
132 | } else { | 139 | } else { |
133 | - params.id = props.record.id; | 140 | + params.id = unref(openModalParams)?.record.id; |
134 | await updateModel(params); | 141 | await updateModel(params); |
135 | createMessage.success('修改成功'); | 142 | createMessage.success('修改成功'); |
136 | } | 143 | } |
1 | <template> | 1 | <template> |
2 | - <div> | ||
3 | - <BasicForm @register="register" /> | ||
4 | - </div> | 2 | + <BasicForm @register="register" /> |
5 | </template> | 3 | </template> |
6 | <script lang="ts" setup> | 4 | <script lang="ts" setup> |
7 | import { BasicForm, useForm } from '/@/components/Form'; | 5 | import { BasicForm, useForm } from '/@/components/Form'; |
@@ -12,6 +10,7 @@ | @@ -12,6 +10,7 @@ | ||
12 | StructFormValue, | 10 | StructFormValue, |
13 | StructRecord, | 11 | StructRecord, |
14 | } from '/@/components/Form/src/externalCompns/components/StructForm/type'; | 12 | } from '/@/components/Form/src/externalCompns/components/StructForm/type'; |
13 | + import { isObject } from 'lodash'; | ||
15 | 14 | ||
16 | const [register, { validate, resetFields, setFieldsValue }] = useForm({ | 15 | const [register, { validate, resetFields, setFieldsValue }] = useForm({ |
17 | labelWidth: 100, | 16 | labelWidth: 100, |
@@ -42,11 +41,7 @@ | @@ -42,11 +41,7 @@ | ||
42 | const value = { | 41 | const value = { |
43 | ...record, | 42 | ...record, |
44 | ...functionJson, | 43 | ...functionJson, |
45 | - ...specs, | ||
46 | - valueRange: { | ||
47 | - min: specs.min, | ||
48 | - max: specs.max, | ||
49 | - }, | 44 | + ...(isObject(specs) ? specs : {}), |
50 | }; | 45 | }; |
51 | 46 | ||
52 | setFieldsValue(value); | 47 | setFieldsValue(value); |
1 | <template> | 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 | </template> | 3 | </template> |
28 | <script lang="ts" setup> | 4 | <script lang="ts" setup> |
29 | - import { ref, unref } from 'vue'; | ||
30 | import { BasicForm, useForm } from '/@/components/Form'; | 5 | import { BasicForm, useForm } from '/@/components/Form'; |
31 | import { eventSchemas } from './config'; | 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 | labelWidth: 100, | 10 | labelWidth: 100, |
46 | schemas: eventSchemas, | 11 | schemas: eventSchemas, |
47 | actionColOptions: { | 12 | actionColOptions: { |
@@ -52,70 +17,18 @@ | @@ -52,70 +17,18 @@ | ||
52 | showActionButtonGroup: false, | 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 | async function getFormData() { | 23 | async function getFormData() { |
104 | - const values = await validate(); | 24 | + const values = (await validate()) as ModelOfMatterParams; |
105 | if (!values) return; | 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 | const resetFormData = () => { | 30 | const resetFormData = () => { |
117 | resetFields(); | 31 | resetFields(); |
118 | - outputParamData.value = []; | ||
119 | }; | 32 | }; |
120 | 33 | ||
121 | defineExpose({ | 34 | defineExpose({ |
1 | <template> | 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 | </template> | 3 | </template> |
48 | <script lang="ts" setup> | 4 | <script lang="ts" setup> |
49 | - import { ref, unref } from 'vue'; | ||
50 | import { BasicForm, useForm } from '/@/components/Form'; | 5 | import { BasicForm, useForm } from '/@/components/Form'; |
51 | import { serviceSchemas } from './config'; | 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 | labelWidth: 100, | 10 | labelWidth: 100, |
68 | schemas: serviceSchemas, | 11 | schemas: serviceSchemas, |
69 | actionColOptions: { | 12 | actionColOptions: { |
@@ -74,111 +17,21 @@ | @@ -74,111 +17,21 @@ | ||
74 | showActionButtonGroup: false, | 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 | async function getFormData() { | 24 | async function getFormData() { |
163 | - const values = await validate(); | 25 | + const values = (await validate()) as ModelOfMatterParams; |
164 | if (!values) return; | 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 | const resetFormData = () => { | 33 | const resetFormData = () => { |
179 | resetFields(); | 34 | resetFields(); |
180 | - inputParamData.value = []; | ||
181 | - outputParamData.value = []; | ||
182 | }; | 35 | }; |
183 | 36 | ||
184 | defineExpose({ | 37 | defineExpose({ |
@@ -18,9 +18,10 @@ export enum FormField { | @@ -18,9 +18,10 @@ export enum FormField { | ||
18 | BOOL_OPEN = 'boolOpen', | 18 | BOOL_OPEN = 'boolOpen', |
19 | LENGTH = 'length', | 19 | LENGTH = 'length', |
20 | R_W_FLAG = 'rwFlag', | 20 | R_W_FLAG = 'rwFlag', |
21 | - SPECS_LIST = 'specsList', | 21 | + SPECS_LIST = 'specs', |
22 | CALL_TYPE = 'callType', | 22 | CALL_TYPE = 'callType', |
23 | - INPUT_PARAM = 'inputParam', | 23 | + INPUT_PARAM = 'inputData', |
24 | + OUTPUT_PARAM = 'outputData', | ||
24 | EVENT_TYPE = 'eventType', | 25 | EVENT_TYPE = 'eventType', |
25 | 26 | ||
26 | STRUCT = 'struct', | 27 | STRUCT = 'struct', |
@@ -130,15 +131,17 @@ export const serviceSchemas: FormSchema[] = [ | @@ -130,15 +131,17 @@ export const serviceSchemas: FormSchema[] = [ | ||
130 | { | 131 | { |
131 | field: FormField.INPUT_PARAM, | 132 | field: FormField.INPUT_PARAM, |
132 | label: '输入参数', | 133 | label: '输入参数', |
133 | - component: 'Input', | ||
134 | - slot: 'inputParamSlot', | 134 | + component: 'StructForm', |
135 | + valueField: 'value', | ||
136 | + changeEvent: 'update:value', | ||
135 | colProps: { span: 24 }, | 137 | colProps: { span: 24 }, |
136 | }, | 138 | }, |
137 | { | 139 | { |
138 | - field: FormField.SPECS_LIST, | 140 | + field: FormField.OUTPUT_PARAM, |
139 | label: '输出参数', | 141 | label: '输出参数', |
140 | - component: 'Input', | ||
141 | - slot: 'outputParamSlot', | 142 | + component: 'StructForm', |
143 | + valueField: 'value', | ||
144 | + changeEvent: 'update:value', | ||
142 | colProps: { span: 24 }, | 145 | colProps: { span: 24 }, |
143 | }, | 146 | }, |
144 | { | 147 | { |
@@ -200,10 +203,11 @@ export const eventSchemas: FormSchema[] = [ | @@ -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 | label: '输出参数', | 207 | label: '输出参数', |
205 | - component: 'Input', | ||
206 | - slot: 'outputParamSlot', | 208 | + component: 'StructForm', |
209 | + valueField: 'value', | ||
210 | + changeEvent: 'update:value', | ||
207 | colProps: { span: 24 }, | 211 | colProps: { span: 24 }, |
208 | }, | 212 | }, |
209 | { | 213 | { |