Commit b746dc51a14231d1c8dbd641504ba798b5131d1e
Merge branch 'ft_local_dev' into 'main'
pref:优化物模型相关代码 See merge request huang/yun-teng-iot-front!389
Showing
13 changed files
with
233 additions
and
142 deletions
@@ -17,7 +17,7 @@ | @@ -17,7 +17,7 @@ | ||
17 | <div> | 17 | <div> |
18 | <Typography> | 18 | <Typography> |
19 | <TypographyParagraph> | 19 | <TypographyParagraph> |
20 | - <blockquote style="background: #f2f2f2">{{ blockContent }}</blockquote> | 20 | + <blockquote style="background: #f2f2f2">{{ useBlockPhysicalContent }}</blockquote> |
21 | </TypographyParagraph> | 21 | </TypographyParagraph> |
22 | </Typography> | 22 | </Typography> |
23 | </div> | 23 | </div> |
@@ -50,23 +50,38 @@ | @@ -50,23 +50,38 @@ | ||
50 | import Service from './cpns/Service.vue'; | 50 | import Service from './cpns/Service.vue'; |
51 | import Events from './cpns/Events.vue'; | 51 | import Events from './cpns/Events.vue'; |
52 | import { mockData } from '../physical/cpns/components/mock'; | 52 | import { mockData } from '../physical/cpns/components/mock'; |
53 | + import useCommon from './hook/useCommon'; | ||
54 | + import { IAllData } from './types'; | ||
53 | 55 | ||
54 | defineEmits(['register']); | 56 | defineEmits(['register']); |
57 | + | ||
55 | const attrDisable = ref(false); | 58 | const attrDisable = ref(false); |
59 | + | ||
56 | const serveiceDisable = ref(false); | 60 | const serveiceDisable = ref(false); |
61 | + | ||
57 | const eventDisable = ref(false); | 62 | const eventDisable = ref(false); |
58 | - const blockContent = `属性一般是设备的运行状态,如当前温度等;服务是设备可被调用的方法,支持定义参数,如执行某项任务;事件则是设备上报的 | ||
59 | - 通知,如告警,需要被及时处理。`; | 63 | + |
64 | + const { useBlockPhysicalContent } = useCommon(); | ||
65 | + | ||
60 | const activeKey = ref('1'); | 66 | const activeKey = ref('1'); |
67 | + | ||
61 | const size = ref('small'); | 68 | const size = ref('small'); |
69 | + | ||
62 | const AttrRef = ref<InstanceType<typeof Attribute>>(); | 70 | const AttrRef = ref<InstanceType<typeof Attribute>>(); |
71 | + | ||
63 | const ServiceRef = ref<InstanceType<typeof Service>>(); | 72 | const ServiceRef = ref<InstanceType<typeof Service>>(); |
73 | + | ||
64 | const EventsRef = ref<InstanceType<typeof Events>>(); | 74 | const EventsRef = ref<InstanceType<typeof Events>>(); |
75 | + | ||
65 | const isUpdate = ref(false); | 76 | const isUpdate = ref(false); |
77 | + | ||
66 | const isViewDetail = ref(''); | 78 | const isViewDetail = ref(''); |
79 | + | ||
67 | const isText = ref(''); | 80 | const isText = ref(''); |
81 | + | ||
68 | const dType = ref(''); | 82 | const dType = ref(''); |
69 | - const allData: any = reactive({ | 83 | + |
84 | + const allData = reactive<IAllData>({ | ||
70 | properties: [], | 85 | properties: [], |
71 | events: [], | 86 | events: [], |
72 | services: [], | 87 | services: [], |
@@ -75,26 +90,33 @@ | @@ -75,26 +90,33 @@ | ||
75 | }); | 90 | }); |
76 | 91 | ||
77 | const setAttrFormData = (data: {}) => AttrRef.value?.setFormData(data); | 92 | const setAttrFormData = (data: {}) => AttrRef.value?.setFormData(data); |
93 | + | ||
78 | const setServiceFormData = (data: {}) => ServiceRef.value?.setFormData(data); | 94 | const setServiceFormData = (data: {}) => ServiceRef.value?.setFormData(data); |
95 | + | ||
79 | const setEventsFormData = (data: {}) => EventsRef.value?.setFormData(data); | 96 | const setEventsFormData = (data: {}) => EventsRef.value?.setFormData(data); |
97 | + | ||
80 | const enums = { | 98 | const enums = { |
81 | attr: setAttrFormData, | 99 | attr: setAttrFormData, |
82 | service: setServiceFormData, | 100 | service: setServiceFormData, |
83 | events: setEventsFormData, | 101 | events: setEventsFormData, |
84 | }; | 102 | }; |
103 | + | ||
85 | function action(val, data) { | 104 | function action(val, data) { |
86 | let F = enums[val]; | 105 | let F = enums[val]; |
87 | F(data); | 106 | F(data); |
88 | } | 107 | } |
108 | + | ||
89 | function dynamicDisable(a, s, e) { | 109 | function dynamicDisable(a, s, e) { |
90 | attrDisable.value = a; | 110 | attrDisable.value = a; |
91 | serveiceDisable.value = s; | 111 | serveiceDisable.value = s; |
92 | eventDisable.value = e; | 112 | eventDisable.value = e; |
93 | } | 113 | } |
114 | + | ||
94 | function dynamicActive(n, callback) { | 115 | function dynamicActive(n, callback) { |
95 | activeKey.value = n; | 116 | activeKey.value = n; |
96 | callback; | 117 | callback; |
97 | } | 118 | } |
119 | + | ||
98 | const dynamicData = (t, a, s, e) => { | 120 | const dynamicData = (t, a, s, e) => { |
99 | switch (t) { | 121 | switch (t) { |
100 | case 'attr': | 122 | case 'attr': |
@@ -111,6 +133,7 @@ | @@ -111,6 +133,7 @@ | ||
111 | break; | 133 | break; |
112 | } | 134 | } |
113 | }; | 135 | }; |
136 | + | ||
114 | const [register, { closeModal, setModalProps }] = useModalInner(async (data) => { | 137 | const [register, { closeModal, setModalProps }] = useModalInner(async (data) => { |
115 | setModalProps({ loading: true }); | 138 | setModalProps({ loading: true }); |
116 | handleCancel(false); | 139 | handleCancel(false); |
@@ -134,6 +157,7 @@ | @@ -134,6 +157,7 @@ | ||
134 | } | 157 | } |
135 | setModalProps({ loading: false }); | 158 | setModalProps({ loading: false }); |
136 | }); | 159 | }); |
160 | + | ||
137 | const handleCancel = (flag) => { | 161 | const handleCancel = (flag) => { |
138 | AttrRef.value?.resetFormData(); | 162 | AttrRef.value?.resetFormData(); |
139 | ServiceRef.value?.resetFormData(); | 163 | ServiceRef.value?.resetFormData(); |
@@ -149,6 +173,7 @@ | @@ -149,6 +173,7 @@ | ||
149 | closeModal(); | 173 | closeModal(); |
150 | } | 174 | } |
151 | }; | 175 | }; |
176 | + | ||
152 | const handleSubmit = async () => { | 177 | const handleSubmit = async () => { |
153 | if (activeKey.value == '1') { | 178 | if (activeKey.value == '1') { |
154 | const valueAttr = await AttrRef.value?.getFormData(); | 179 | const valueAttr = await AttrRef.value?.getFormData(); |
@@ -17,18 +17,21 @@ | @@ -17,18 +17,21 @@ | ||
17 | </div> | 17 | </div> |
18 | </template> | 18 | </template> |
19 | <script lang="ts" setup> | 19 | <script lang="ts" setup> |
20 | - import { ref, unref } from 'vue'; | 20 | + import { unref } from 'vue'; |
21 | import { BasicForm, useForm } from '/@/components/Form'; | 21 | import { BasicForm, useForm } from '/@/components/Form'; |
22 | import { attrSchemas } from './config'; | 22 | import { attrSchemas } from './config'; |
23 | import { useModal } from '/@/components/Modal'; | 23 | import { useModal } from '/@/components/Modal'; |
24 | - import { validateValueStruct } from '../hook/useValidateParital'; | ||
25 | - import { useChangeTypeGetTypeForm, useGetInOrOutData } from '../hook/useTypeGetForm'; | 24 | + import useParitalValid from '../hook/useParitalValid'; |
25 | + import useCommon from '../hook/useCommon'; | ||
26 | import AddParamsModal from './components/AddParamsModal.vue'; | 26 | import AddParamsModal from './components/AddParamsModal.vue'; |
27 | import CommomParam from './components/CommomParam.vue'; | 27 | import CommomParam from './components/CommomParam.vue'; |
28 | + import useDefineVar from '../hook/useDefineVar'; | ||
28 | 29 | ||
29 | - const inputParamData: any = ref([]); | 30 | + const { useChangeTypeGetTypeForm, useGetInOrOutData } = useCommon(); |
30 | 31 | ||
31 | - const CommomParamInParamRef = ref<InstanceType<typeof CommomParam>>(); | 32 | + const { validateValueStruct } = useParitalValid(); |
33 | + | ||
34 | + const { inputParamData, CommomParamInParamRef } = useDefineVar(); | ||
32 | 35 | ||
33 | const [registerModal, { openModal }] = useModal(); | 36 | const [registerModal, { openModal }] = useModal(); |
34 | 37 |
@@ -17,17 +17,18 @@ | @@ -17,17 +17,18 @@ | ||
17 | </div> | 17 | </div> |
18 | </template> | 18 | </template> |
19 | <script lang="ts" setup> | 19 | <script lang="ts" setup> |
20 | - import { ref, unref } from 'vue'; | 20 | + import { unref } from 'vue'; |
21 | import { BasicForm, useForm } from '/@/components/Form'; | 21 | import { BasicForm, useForm } from '/@/components/Form'; |
22 | import { eventSchemas } from './config'; | 22 | import { eventSchemas } from './config'; |
23 | import { useModal } from '/@/components/Modal'; | 23 | import { useModal } from '/@/components/Modal'; |
24 | import AddParamsModal from './components/AddParamsModal.vue'; | 24 | import AddParamsModal from './components/AddParamsModal.vue'; |
25 | import CommomParam from './components/CommomParam.vue'; | 25 | import CommomParam from './components/CommomParam.vue'; |
26 | - import { useGetInOrOutData } from '../hook/useTypeGetForm'; | 26 | + import useCommon from '../hook/useCommon'; |
27 | + import useDefineVar from '../hook/useDefineVar'; | ||
27 | 28 | ||
28 | - const inputParamData: any = ref([]); | 29 | + const { useGetInOrOutData } = useCommon(); |
29 | 30 | ||
30 | - const CommomParamInParamRef = ref<InstanceType<typeof CommomParam>>(); | 31 | + const { inputParamData, CommomParamInParamRef } = useDefineVar(); |
31 | 32 | ||
32 | const [registerModal, { openModal }] = useModal(); | 33 | const [registerModal, { openModal }] = useModal(); |
33 | 34 |
@@ -28,21 +28,19 @@ | @@ -28,21 +28,19 @@ | ||
28 | </div> | 28 | </div> |
29 | </template> | 29 | </template> |
30 | <script lang="ts" setup> | 30 | <script lang="ts" setup> |
31 | - import { ref, unref } from 'vue'; | 31 | + import { unref } from 'vue'; |
32 | import { BasicForm, useForm } from '/@/components/Form'; | 32 | import { BasicForm, useForm } from '/@/components/Form'; |
33 | import { serviceSchemas } from './config'; | 33 | import { serviceSchemas } from './config'; |
34 | import { useModal } from '/@/components/Modal'; | 34 | import { useModal } from '/@/components/Modal'; |
35 | import AddParamsModal from './components/AddParamsModal.vue'; | 35 | import AddParamsModal from './components/AddParamsModal.vue'; |
36 | import CommomParam from './components/CommomParam.vue'; | 36 | import CommomParam from './components/CommomParam.vue'; |
37 | - import { useGetInOrOutData } from '../hook/useTypeGetForm'; | 37 | + import useCommon from '../hook/useCommon'; |
38 | + import useDefineVar from '../hook/useDefineVar'; | ||
38 | 39 | ||
39 | - const inputParamData: any = ref([]); | 40 | + const { inputParamData, outputParamData, CommomParamInParamRef, CommomParamOutParamRef } = |
41 | + useDefineVar(); | ||
40 | 42 | ||
41 | - const outputParamData: any = ref([]); | ||
42 | - | ||
43 | - const CommomParamInParamRef = ref<InstanceType<typeof CommomParam>>(); | ||
44 | - | ||
45 | - const CommomParamOutParamRef = ref<InstanceType<typeof CommomParam>>(); | 43 | + const { useGetInOrOutData } = useCommon(); |
46 | 44 | ||
47 | const [registerModal, { openModal }] = useModal(); | 45 | const [registerModal, { openModal }] = useModal(); |
48 | 46 |
@@ -3,7 +3,7 @@ | @@ -3,7 +3,7 @@ | ||
3 | <div> | 3 | <div> |
4 | <Typography> | 4 | <Typography> |
5 | <TypographyParagraph> | 5 | <TypographyParagraph> |
6 | - <blockquote style="background: #f2f2f2">{{ blockContent }}</blockquote> | 6 | + <blockquote style="background: #f2f2f2">{{ useBlockContent }}</blockquote> |
7 | </TypographyParagraph> | 7 | </TypographyParagraph> |
8 | </Typography> | 8 | </Typography> |
9 | </div> | 9 | </div> |
@@ -38,14 +38,18 @@ | @@ -38,14 +38,18 @@ | ||
38 | import 'jsoneditor/dist/jsoneditor.min.css'; | 38 | import 'jsoneditor/dist/jsoneditor.min.css'; |
39 | import { Button, Typography, TypographyParagraph } from 'ant-design-vue'; | 39 | import { Button, Typography, TypographyParagraph } from 'ant-design-vue'; |
40 | import { defaultTslContent } from './config'; | 40 | import { defaultTslContent } from './config'; |
41 | + import useCommon from '../hook/useCommon'; | ||
41 | 42 | ||
42 | const { createMessage } = useMessage(); | 43 | const { createMessage } = useMessage(); |
43 | - const blockContent = `物模型是对设备在云端的功能描述,包括设备的属性、服务和事件。物联网平台通过定义一种物的描述语言来描述物模型,称之为 TSL(即 Thing | ||
44 | -Specification Language),采用 JSON 格式,您可以根据 TSL 组装上报设备的数据。您可以导出完整物模型,用于云端应用开发;您也可以只导出 | ||
45 | -精简物模型,配合设备端 SDK 实现设备开发。`; | 44 | + |
45 | + const { useBlockContent } = useCommon(); | ||
46 | + | ||
46 | const jsonValue = ref(defaultTslContent); | 47 | const jsonValue = ref(defaultTslContent); |
48 | + | ||
47 | const jsonInstance = ref(); | 49 | const jsonInstance = ref(); |
50 | + | ||
48 | const jsoneditorRef = ref(); | 51 | const jsoneditorRef = ref(); |
52 | + | ||
49 | onMounted(() => { | 53 | onMounted(() => { |
50 | nextTick(() => { | 54 | nextTick(() => { |
51 | let options = { | 55 | let options = { |
@@ -58,7 +62,9 @@ Specification Language),采用 JSON æ ¼å¼ï¼Œæ‚¨å¯ä»¥æ ¹æ® TSL ç»„è£…ä¸ŠæŠ | @@ -58,7 +62,9 @@ Specification Language),采用 JSON æ ¼å¼ï¼Œæ‚¨å¯ä»¥æ ¹æ® TSL ç»„è£…ä¸ŠæŠ | ||
58 | jsonInstance.value = editor; | 62 | jsonInstance.value = editor; |
59 | }); | 63 | }); |
60 | }); | 64 | }); |
65 | + | ||
61 | const { clipboardRef, copiedRef } = useCopyToClipboard(); | 66 | const { clipboardRef, copiedRef } = useCopyToClipboard(); |
67 | + | ||
62 | const handleCopy = () => { | 68 | const handleCopy = () => { |
63 | try { | 69 | try { |
64 | const valueRef = unref(jsonInstance).get(); | 70 | const valueRef = unref(jsonInstance).get(); |
@@ -81,9 +87,11 @@ Specification Language),采用 JSON æ ¼å¼ï¼Œæ‚¨å¯ä»¥æ ¹æ® TSL ç»„è£…ä¸ŠæŠ | @@ -81,9 +87,11 @@ Specification Language),采用 JSON æ ¼å¼ï¼Œæ‚¨å¯ä»¥æ ¹æ® TSL ç»„è£…ä¸ŠæŠ | ||
81 | if (!value) return; | 87 | if (!value) return; |
82 | return value; | 88 | return value; |
83 | }; | 89 | }; |
90 | + | ||
84 | const resetFormData = () => { | 91 | const resetFormData = () => { |
85 | unref(jsonInstance).set(defaultTslContent); | 92 | unref(jsonInstance).set(defaultTslContent); |
86 | }; | 93 | }; |
94 | + | ||
87 | const handlePremitter = () => { | 95 | const handlePremitter = () => { |
88 | const value = unref(jsonInstance).get(); | 96 | const value = unref(jsonInstance).get(); |
89 | return unref(jsonInstance).set(value); | 97 | return unref(jsonInstance).set(value); |
@@ -17,23 +17,20 @@ | @@ -17,23 +17,20 @@ | ||
17 | </div> | 17 | </div> |
18 | </template> | 18 | </template> |
19 | <script lang="ts" setup> | 19 | <script lang="ts" setup> |
20 | - import { ref, unref } from 'vue'; | 20 | + import { unref } from 'vue'; |
21 | import { BasicForm, useForm } from '/@/components/Form'; | 21 | import { BasicForm, useForm } from '/@/components/Form'; |
22 | import { addParamsSchemas } from '../config'; | 22 | import { addParamsSchemas } from '../config'; |
23 | import { useModal } from '/@/components/Modal'; | 23 | import { useModal } from '/@/components/Modal'; |
24 | - import { | ||
25 | - useChangeTypeGetTypeForm, | ||
26 | - useGetInOrOutData, | ||
27 | - useUpdateFormExcludeStruct, | ||
28 | - } from '../../hook/useTypeGetForm'; | 24 | + import useCommon from '../../hook/useCommon'; |
29 | import AddParamsModal from './AddParamsModal.vue'; | 25 | import AddParamsModal from './AddParamsModal.vue'; |
30 | import CommomParam from './CommomParam.vue'; | 26 | import CommomParam from './CommomParam.vue'; |
27 | + import useDefineVar from '../../hook/useDefineVar'; | ||
31 | 28 | ||
32 | defineEmits(['register']); | 29 | defineEmits(['register']); |
33 | 30 | ||
34 | - const inputParamData: any = ref([]); | 31 | + const { inputParamData, CommomParamInParamRef } = useDefineVar(); |
35 | 32 | ||
36 | - const CommomParamInParamRef = ref<InstanceType<typeof CommomParam>>(); | 33 | + const { useChangeTypeGetTypeForm, useGetInOrOutData, useUpdateFormExcludeStruct } = useCommon(); |
37 | 34 | ||
38 | const [registerModal, { openModal }] = useModal(); | 35 | const [registerModal, { openModal }] = useModal(); |
39 | 36 |
@@ -17,16 +17,24 @@ | @@ -17,16 +17,24 @@ | ||
17 | import { ref, computed, reactive } from 'vue'; | 17 | import { ref, computed, reactive } from 'vue'; |
18 | import { BasicModal, useModalInner } from '/@/components/Modal'; | 18 | import { BasicModal, useModalInner } from '/@/components/Modal'; |
19 | import AddParamForm from './AddParamForm.vue'; | 19 | import AddParamForm from './AddParamForm.vue'; |
20 | - import { validateValueStruct } from '../../hook/useValidateParital'; | 20 | + import useParitalValid from '../../hook/useParitalValid'; |
21 | 21 | ||
22 | const emits = defineEmits(['register', 'data']); | 22 | const emits = defineEmits(['register', 'data']); |
23 | + | ||
24 | + const { validateValueStruct } = useParitalValid(); | ||
25 | + | ||
23 | const setEditData: any = reactive({ | 26 | const setEditData: any = reactive({ |
24 | getEditData: {}, | 27 | getEditData: {}, |
25 | }); | 28 | }); |
29 | + | ||
26 | const AddParamFormRef = ref<InstanceType<typeof AddParamForm>>(); | 30 | const AddParamFormRef = ref<InstanceType<typeof AddParamForm>>(); |
31 | + | ||
27 | const isUpdate = ref(false); | 32 | const isUpdate = ref(false); |
33 | + | ||
28 | const isFlag = ref(''); | 34 | const isFlag = ref(''); |
35 | + | ||
29 | const excludeStruct = ref(false); | 36 | const excludeStruct = ref(false); |
37 | + | ||
30 | const getTitle = computed(() => (!isUpdate.value ? '编辑参数' : '新增参数')); | 38 | const getTitle = computed(() => (!isUpdate.value ? '编辑参数' : '新增参数')); |
31 | 39 | ||
32 | const [register, { closeModal, setModalProps }] = useModalInner(async (data) => { | 40 | const [register, { closeModal, setModalProps }] = useModalInner(async (data) => { |
@@ -15,6 +15,7 @@ | @@ -15,6 +15,7 @@ | ||
15 | </template> | 15 | </template> |
16 | <script lang="ts" setup> | 16 | <script lang="ts" setup> |
17 | const emit = defineEmits(['delete', 'edit']); | 17 | const emit = defineEmits(['delete', 'edit']); |
18 | + | ||
18 | const props = defineProps({ | 19 | const props = defineProps({ |
19 | index: { | 20 | index: { |
20 | type: Number, | 21 | type: Number, |
src/views/device/profiles/step/cpns/physical/hook/useCommon.ts
renamed from
src/views/device/profiles/step/cpns/physical/hook/useTypeGetForm.ts
1 | -import { validateValueBool, validateValueRangeAndStep } from './useValidateParital'; | 1 | +import useParitalValid from './useParitalValid'; |
2 | import { findDictItemByCode } from '/@/api/system/dict'; | 2 | import { findDictItemByCode } from '/@/api/system/dict'; |
3 | import { buildUUID } from '/@/utils/uuid'; | 3 | import { buildUUID } from '/@/utils/uuid'; |
4 | 4 | ||
5 | -///根据不同数据类型得到不同表单数据 | 5 | +///根据不同数据类型得到不同表单数据(模拟的阿里云数据结构) |
6 | type TForm = { | 6 | type TForm = { |
7 | dataType: string; | 7 | dataType: string; |
8 | max?: string; | 8 | max?: string; |
@@ -17,100 +17,120 @@ type TForm = { | @@ -17,100 +17,120 @@ type TForm = { | ||
17 | max: string; | 17 | max: string; |
18 | }; | 18 | }; |
19 | }; | 19 | }; |
20 | -export const useChangeTypeGetTypeForm = (type, options: TForm) => { | ||
21 | - switch (type) { | ||
22 | - //INT和DOUBLE收集表单一样 | ||
23 | - case 'INT': | ||
24 | - validateValueRangeAndStep( | ||
25 | - Number(options?.valueRange?.min), | ||
26 | - Number(options?.step), | ||
27 | - Number(options?.valueRange?.max) | ||
28 | - ); | ||
29 | - return { | ||
30 | - dataType: options?.dataType, | ||
31 | - max: options?.valueRange?.max, | ||
32 | - min: options?.valueRange?.min, | ||
33 | - step: options?.step, | ||
34 | - unit: options?.unit, | ||
35 | - }; | ||
36 | - case 'DOUBLE': | ||
37 | - validateValueRangeAndStep( | ||
38 | - Number(options?.valueRange?.min), | ||
39 | - Number(options?.step), | ||
40 | - Number(options?.valueRange?.max) | ||
41 | - ); | ||
42 | - return { | ||
43 | - dataType: options?.dataType, | ||
44 | - max: options?.valueRange?.max, | ||
45 | - min: options?.valueRange?.min, | ||
46 | - step: options?.step, | ||
47 | - unit: options?.unit, | ||
48 | - }; | ||
49 | - case 'BOOL': | ||
50 | - validateValueBool(Number(options?.boolClose), Number(options?.boolOpen)); | ||
51 | - return [ | ||
52 | - { | 20 | + |
21 | +export default () => { | ||
22 | + const { validateValueRangeAndStep, validateValueBool } = useParitalValid(); | ||
23 | + | ||
24 | + const useChangeTypeGetTypeForm = (type, options: TForm) => { | ||
25 | + switch (type) { | ||
26 | + //INT和DOUBLE收集表单一样 | ||
27 | + case 'INT': | ||
28 | + validateValueRangeAndStep( | ||
29 | + Number(options?.valueRange?.min), | ||
30 | + Number(options?.step), | ||
31 | + Number(options?.valueRange?.max) | ||
32 | + ); | ||
33 | + return { | ||
53 | dataType: options?.dataType, | 34 | dataType: options?.dataType, |
54 | - name: options?.boolClose, | ||
55 | - value: 0, | ||
56 | - }, | ||
57 | - { | 35 | + max: options?.valueRange?.max, |
36 | + min: options?.valueRange?.min, | ||
37 | + step: options?.step, | ||
38 | + unit: options?.unit, | ||
39 | + }; | ||
40 | + case 'DOUBLE': | ||
41 | + validateValueRangeAndStep( | ||
42 | + Number(options?.valueRange?.min), | ||
43 | + Number(options?.step), | ||
44 | + Number(options?.valueRange?.max) | ||
45 | + ); | ||
46 | + return { | ||
58 | dataType: options?.dataType, | 47 | dataType: options?.dataType, |
59 | - name: options?.boolOpen, | ||
60 | - value: 1, | ||
61 | - }, | ||
62 | - ]; | ||
63 | - case 'TEXT': | ||
64 | - return { | ||
65 | - dataType: options?.dataType, | ||
66 | - length: Number(options?.length), | ||
67 | - }; | ||
68 | - } | ||
69 | -}; | 48 | + max: options?.valueRange?.max, |
49 | + min: options?.valueRange?.min, | ||
50 | + step: options?.step, | ||
51 | + unit: options?.unit, | ||
52 | + }; | ||
53 | + case 'BOOL': | ||
54 | + validateValueBool(Number(options?.boolClose), Number(options?.boolOpen)); | ||
55 | + return [ | ||
56 | + { | ||
57 | + dataType: options?.dataType, | ||
58 | + name: options?.boolClose, | ||
59 | + value: 0, | ||
60 | + }, | ||
61 | + { | ||
62 | + dataType: options?.dataType, | ||
63 | + name: options?.boolOpen, | ||
64 | + value: 1, | ||
65 | + }, | ||
66 | + ]; | ||
67 | + case 'TEXT': | ||
68 | + return { | ||
69 | + dataType: options?.dataType, | ||
70 | + length: Number(options?.length), | ||
71 | + }; | ||
72 | + } | ||
73 | + }; | ||
70 | 74 | ||
71 | -//是否排除结构体 | ||
72 | -export const useUpdateFormExcludeStruct = async (F, U) => { | ||
73 | - const res: any = await findDictItemByCode({ dictCode: 'data_type' }); | ||
74 | - const optionTrue = res | ||
75 | - .map((m) => { | ||
76 | - if (F) { | ||
77 | - if (m.itemValue !== 'STRUCT') { | 75 | + //是否排除结构体 |
76 | + const useUpdateFormExcludeStruct = async (F, U) => { | ||
77 | + const res: any = await findDictItemByCode({ dictCode: 'data_type' }); | ||
78 | + const optionTrue = res | ||
79 | + .map((m) => { | ||
80 | + if (F) { | ||
81 | + if (m.itemValue !== 'STRUCT') { | ||
82 | + return { | ||
83 | + value: m.itemValue, | ||
84 | + label: m.itemText, | ||
85 | + }; | ||
86 | + } | ||
87 | + } else { | ||
78 | return { | 88 | return { |
79 | value: m.itemValue, | 89 | value: m.itemValue, |
80 | label: m.itemText, | 90 | label: m.itemText, |
81 | }; | 91 | }; |
82 | } | 92 | } |
93 | + }) | ||
94 | + .filter(Boolean); | ||
95 | + U({ | ||
96 | + field: 'dataType', | ||
97 | + componentProps: { | ||
98 | + options: optionTrue, | ||
99 | + }, | ||
100 | + }); | ||
101 | + }; | ||
102 | + | ||
103 | + //获取输入参数或者输出参数弹窗数据 | ||
104 | + const useGetInOrOutData = (d, f, inputData, outputData) => { | ||
105 | + if (f == 'input') { | ||
106 | + if (d.id !== null) { | ||
107 | + const findIndex = inputData.findIndex((f) => f.id == d.id); | ||
108 | + if (findIndex !== -1) inputData.splice(findIndex, 1, d); | ||
83 | } else { | 109 | } else { |
84 | - return { | ||
85 | - value: m.itemValue, | ||
86 | - label: m.itemText, | ||
87 | - }; | 110 | + inputData.push({ ...d, id: buildUUID() }); |
88 | } | 111 | } |
89 | - }) | ||
90 | - .filter(Boolean); | ||
91 | - U({ | ||
92 | - field: 'dataType', | ||
93 | - componentProps: { | ||
94 | - options: optionTrue, | ||
95 | - }, | ||
96 | - }); | ||
97 | -}; | ||
98 | - | ||
99 | -//获取输入参数或者输出参数弹窗数据 | ||
100 | -export const useGetInOrOutData = (d, f, inputData, outputData) => { | ||
101 | - if (f == 'input') { | ||
102 | - if (d.id !== null) { | ||
103 | - const findIndex = inputData.findIndex((f) => f.id == d.id); | ||
104 | - if (findIndex !== -1) inputData.splice(findIndex, 1, d); | ||
105 | } else { | 112 | } else { |
106 | - inputData.push({ ...d, id: buildUUID() }); | ||
107 | - } | ||
108 | - } else { | ||
109 | - if (d.id !== null) { | ||
110 | - const findIndex = outputData.findIndex((f) => f.id == d.id); | ||
111 | - if (findIndex !== -1) outputData.splice(findIndex, 1, d); | ||
112 | - } else { | ||
113 | - outputData.push({ ...d, id: buildUUID() }); | 113 | + if (d.id !== null) { |
114 | + const findIndex = outputData.findIndex((f) => f.id == d.id); | ||
115 | + if (findIndex !== -1) outputData.splice(findIndex, 1, d); | ||
116 | + } else { | ||
117 | + outputData.push({ ...d, id: buildUUID() }); | ||
118 | + } | ||
114 | } | 119 | } |
115 | - } | 120 | + }; |
121 | + | ||
122 | + const useBlockContent = `物模型是对设备在云端的功能描述,包括设备的属性、服务和事件。物联网平台通过定义一种物的描述语言来描述物模型,称之为 TSL(即 Thing | ||
123 | + Specification Language),采用 JSON 格式,您可以根据 TSL 组装上报设备的数据。您可以导出完整物模型,用于云端应用开发;您也可以只导出 | ||
124 | + 精简物模型,配合设备端 SDK 实现设备开发。`; | ||
125 | + | ||
126 | + const useBlockPhysicalContent = `属性一般是设备的运行状态,如当前温度等;服务是设备可被调用的方法,支持定义参数,如执行某项任务;事件则是设备上报的 | ||
127 | + 通知,如告警,需要被及时处理。`; | ||
128 | + | ||
129 | + return { | ||
130 | + useChangeTypeGetTypeForm, | ||
131 | + useUpdateFormExcludeStruct, | ||
132 | + useGetInOrOutData, | ||
133 | + useBlockContent, | ||
134 | + useBlockPhysicalContent, | ||
135 | + }; | ||
116 | }; | 136 | }; |
1 | +import { ref } from 'vue'; | ||
2 | +import CommomParam from './components/CommomParam.vue'; | ||
3 | + | ||
4 | +export default () => { | ||
5 | + const inputParamData: any = ref([]); | ||
6 | + const outputParamData: any = ref([]); | ||
7 | + const CommomParamInParamRef = ref<InstanceType<typeof CommomParam>>(); | ||
8 | + const CommomParamOutParamRef = ref<InstanceType<typeof CommomParam>>(); | ||
9 | + | ||
10 | + return { | ||
11 | + inputParamData, | ||
12 | + outputParamData, | ||
13 | + CommomParamInParamRef, | ||
14 | + CommomParamOutParamRef, | ||
15 | + }; | ||
16 | +}; |
src/views/device/profiles/step/cpns/physical/hook/useParitalValid.ts
renamed from
src/views/device/profiles/step/cpns/physical/hook/useValidateParital.ts
@@ -4,27 +4,34 @@ | @@ -4,27 +4,34 @@ | ||
4 | import { useMessage } from '/@/hooks/web/useMessage'; | 4 | import { useMessage } from '/@/hooks/web/useMessage'; |
5 | const { createMessage } = useMessage(); | 5 | const { createMessage } = useMessage(); |
6 | 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 | -}; | 7 | +export default () => { |
8 | + const validateValueRangeAndStep = (min, step, max) => { | ||
9 | + if (min > max) { | ||
10 | + createMessage.error('最大值必须大于最小值,整数型不能有小数位,单精度有效位为7,双精度为16'); | ||
11 | + throw '最大值必须大于最小值,整数型不能有小数位,单精度有效位为7,双精度为16'; | ||
12 | + } | ||
13 | + if (step > max - min) { | ||
14 | + createMessage.error('步长不能大于取值范围的差值'); | ||
15 | + throw '步长不能大于取值范围的差值'; | ||
16 | + } | ||
17 | + }; | ||
17 | 18 | ||
18 | -export const validateValueBool = (boolClose, boolOpen) => { | ||
19 | - if (boolClose == boolOpen) { | ||
20 | - createMessage.error('布尔值不能相同'); | ||
21 | - throw '布尔值不能相同'; | ||
22 | - } | ||
23 | -}; | 19 | + const validateValueBool = (boolClose, boolOpen) => { |
20 | + if (boolClose == boolOpen) { | ||
21 | + createMessage.error('布尔值不能相同'); | ||
22 | + throw '布尔值不能相同'; | ||
23 | + } | ||
24 | + }; | ||
24 | 25 | ||
25 | -export const validateValueStruct = (data: []) => { | ||
26 | - if (data.length === 0) { | ||
27 | - createMessage.error('struct不能为空'); | ||
28 | - throw 'struct不能为空'; | ||
29 | - } | 26 | + const validateValueStruct = (data: []) => { |
27 | + if (data.length === 0) { | ||
28 | + createMessage.error('struct不能为空'); | ||
29 | + throw 'struct不能为空'; | ||
30 | + } | ||
31 | + }; | ||
32 | + return { | ||
33 | + validateValueRangeAndStep, | ||
34 | + validateValueBool, | ||
35 | + validateValueStruct, | ||
36 | + }; | ||
30 | }; | 37 | }; |