Commit 81be0d18912900e60acd4cd278bc390263bfec91

Authored by fengtao
1 parent 688fb037

feat:mock模拟阿里云后端数据,物模型,新增编辑回显数据大致完成

@@ -20,13 +20,13 @@ @@ -20,13 +20,13 @@
20 </Typography> 20 </Typography>
21 </div> 21 </div>
22 <Tabs type="card" v-model:activeKey="activeKey" :size="size"> 22 <Tabs type="card" v-model:activeKey="activeKey" :size="size">
23 - <TabPane key="1" tab="属性"> 23 + <TabPane forceRender key="1" tab="属性">
24 <Attribute v-show="activeKey === '1'" ref="AttrRef" /> 24 <Attribute v-show="activeKey === '1'" ref="AttrRef" />
25 </TabPane> 25 </TabPane>
26 - <TabPane key="2" tab="服务"> 26 + <TabPane forceRender key="2" tab="服务">
27 <Service v-show="activeKey === '2'" ref="ServiceRef" /> 27 <Service v-show="activeKey === '2'" ref="ServiceRef" />
28 </TabPane> 28 </TabPane>
29 - <TabPane key="3" v-show="activeKey === '3'" tab="事件"> 29 + <TabPane forceRender key="3" v-show="activeKey === '3'" tab="事件">
30 <Events v-show="activeKey === '3'" ref="EventsRef" /> 30 <Events v-show="activeKey === '3'" ref="EventsRef" />
31 </TabPane> 31 </TabPane>
32 </Tabs> 32 </Tabs>
@@ -79,9 +79,11 @@ @@ -79,9 +79,11 @@
79 setModalProps({ title, showOkBtn: true, showCancelBtn: true }); 79 setModalProps({ title, showOkBtn: true, showCancelBtn: true });
80 } else { 80 } else {
81 setModalProps({ showOkBtn: false, showCancelBtn: false, title: '查看物模型' }); 81 setModalProps({ showOkBtn: false, showCancelBtn: false, title: '查看物模型' });
82 - AttrRef.value?.setFormData(mockData.properties);  
83 - ServiceRef.value?.setFormData(mockData.services);  
84 - EventsRef.value?.setFormData(mockData.events); 82 + nextTick(() => {
  83 + AttrRef.value?.setFormData(mockData.properties);
  84 + ServiceRef.value?.setFormData(mockData.services);
  85 + EventsRef.value?.setFormData(mockData.events);
  86 + });
85 } 87 }
86 setModalProps({ loading: false }); 88 setModalProps({ loading: false });
87 }); 89 });
@@ -50,11 +50,9 @@ @@ -50,11 +50,9 @@
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';  
54 - import { validateValueRangeAndStep } from '../hook/useValidateParital'; 53 + import { validateValueRangeAndStep, validateValueBool } from '../hook/useValidateParital';
55 import { buildUUID } from '/@/utils/uuid'; 54 import { buildUUID } from '/@/utils/uuid';
56 55
57 - // const { createMessage } = useMessage();  
58 const outputParamData: any = ref([]); 56 const outputParamData: any = ref([]);
59 const minMaxObj = reactive({ 57 const minMaxObj = reactive({
60 min: '', 58 min: '',
@@ -94,7 +92,7 @@ @@ -94,7 +92,7 @@
94 openModal(true, { 92 openModal(true, {
95 isUpdate: true, 93 isUpdate: true,
96 flag: 'output', 94 flag: 'output',
97 - excludeStruct: false, 95 + excludeStruct: true,
98 }); 96 });
99 }; 97 };
100 98
@@ -106,13 +104,24 @@ @@ -106,13 +104,24 @@
106 isUpdate: false, 104 isUpdate: false,
107 record: item, 105 record: item,
108 flag: 'output', 106 flag: 'output',
109 - excludeStruct: false, 107 + excludeStruct: true,
110 }); 108 });
111 }; 109 };
112 110
113 //回显数据 111 //回显数据
114 const setFormData = (v) => { 112 const setFormData = (v) => {
115 setFieldsValue(v[0]); 113 setFieldsValue(v[0]);
  114 + setFieldsValue({
  115 + ...v[0].dataSpecs,
  116 + boolClose:
  117 + v[0].dataSpecsList !== undefined || v[0].dataSpecsList !== null
  118 + ? v[0].dataSpecsList[0].name
  119 + : '',
  120 + boolOpen:
  121 + v[0].dataSpecsList !== undefined || v[0].dataSpecsList !== null
  122 + ? v[0].dataSpecsList[1].name
  123 + : '',
  124 + });
116 const { dataSpecsList } = v[0]; 125 const { dataSpecsList } = v[0];
117 if (dataSpecsList !== undefined) { 126 if (dataSpecsList !== undefined) {
118 outputParamData.value = [...new Array(dataSpecsList.length).keys()]; 127 outputParamData.value = [...new Array(dataSpecsList.length).keys()];
@@ -130,13 +139,26 @@ @@ -130,13 +139,26 @@
130 if (!values) return; 139 if (!values) return;
131 const dataSpecsList = getStructList(); 140 const dataSpecsList = getStructList();
132 validateValueRangeAndStep(Number(minMaxObj.min), Number(values.step), Number(minMaxObj.max)); 141 validateValueRangeAndStep(Number(minMaxObj.min), Number(values.step), Number(minMaxObj.max));
133 - const isStruct = values.dataType === 'STRUCT'; 142 + validateValueBool(Number(values.boolClose), Number(values.boolOpen));
134 const dataSpecs = { 143 const dataSpecs = {
135 ...minMaxObj, 144 ...minMaxObj,
136 ...{ step: values.step }, 145 ...{ step: values.step },
137 ...{ unit: values.unit }, 146 ...{ unit: values.unit },
138 ...{ dataType: values.dataType }, 147 ...{ dataType: values.dataType },
  148 + ...{ length: values.length },
139 }; 149 };
  150 + const dataSpecsListBool = [
  151 + {
  152 + dataType: values.dataType,
  153 + name: '0',
  154 + value: values.boolClose,
  155 + },
  156 + {
  157 + dataType: values.dataType,
  158 + name: '1',
  159 + value: values.boolOpen,
  160 + },
  161 + ];
140 const { valueRange, step, unit, outputParam, ...value } = values; 162 const { valueRange, step, unit, outputParam, ...value } = values;
141 console.log(valueRange); 163 console.log(valueRange);
142 console.log(step); 164 console.log(step);
@@ -144,8 +166,20 @@ @@ -144,8 +166,20 @@
144 console.log(outputParam); 166 console.log(outputParam);
145 return { 167 return {
146 ...value, 168 ...value,
147 - ...{ dataSpecs: isStruct ? null : dataSpecs },  
148 - ...{ dataSpecsList: isStruct ? dataSpecsList : null }, 169 + ...{
  170 + dataSpecs:
  171 + values.dataType === 'INT' || values.dataType === 'DOUBLE' || values.dataType === 'TEXT'
  172 + ? dataSpecs
  173 + : null,
  174 + },
  175 + ...{
  176 + dataSpecsList:
  177 + values.dataType === 'STRUCT'
  178 + ? dataSpecsList
  179 + : values.dataType === 'BOOL'
  180 + ? dataSpecsListBool
  181 + : null,
  182 + },
149 }; 183 };
150 } 184 }
151 //清空数据 185 //清空数据
@@ -74,6 +74,7 @@ @@ -74,6 +74,7 @@
74 isUpdate: false, 74 isUpdate: false,
75 record: item, 75 record: item,
76 flag: 'output', 76 flag: 'output',
  77 + excludeStruct: false,
77 }); 78 });
78 }; 79 };
79 //回显数据 80 //回显数据
@@ -114,6 +114,7 @@ @@ -114,6 +114,7 @@
114 isUpdate: false, 114 isUpdate: false,
115 record: item, 115 record: item,
116 flag: 'input', 116 flag: 'input',
  117 + excludeStruct: false,
117 }); 118 });
118 }; 119 };
119 const deleteOutParItem = (index) => { 120 const deleteOutParItem = (index) => {
@@ -124,12 +125,12 @@ @@ -124,12 +125,12 @@
124 isUpdate: false, 125 isUpdate: false,
125 record: item, 126 record: item,
126 flag: 'output', 127 flag: 'output',
  128 + excludeStruct: false,
127 }); 129 });
128 }; 130 };
129 131
130 //回显数据 132 //回显数据
131 const setFormData = (v) => { 133 const setFormData = (v) => {
132 - console.log(v[0]);  
133 setFieldsValue(v[0]); 134 setFieldsValue(v[0]);
134 const { inputParams, outputParams } = v[0]; 135 const { inputParams, outputParams } = v[0];
135 if (outputParams !== undefined) { 136 if (outputParams !== undefined) {
@@ -40,11 +40,10 @@ @@ -40,11 +40,10 @@
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';  
44 - import { validateValueRangeAndStep } from '../../hook/useValidateParital'; 43 + import { validateValueRangeAndStep, validateValueBool } from '../../hook/useValidateParital';
  44 + import { buildUUID } from '/@/utils/uuid';
45 45
46 defineEmits(['register']); 46 defineEmits(['register']);
47 - // const { createMessage } = useMessage();  
48 const outputParamData: any = ref([]); 47 const outputParamData: any = ref([]);
49 const dynamicBindRef = { 48 const dynamicBindRef = {
50 outputParamItemRef: ref([]), 49 outputParamItemRef: ref([]),
@@ -70,10 +69,11 @@ @@ -70,10 +69,11 @@
70 69
71 const getData = (d, f) => { 70 const getData = (d, f) => {
72 if (f == 'output') { 71 if (f == 'output') {
73 - unref(outputParamData).push(d);  
74 if (d.id !== null) { 72 if (d.id !== null) {
75 - const findIndex = unref(outputParamData).findIndex((f) => f.id !== d.id);  
76 - if (findIndex !== -1) unref(outputParamData).splice(findIndex, 1); 73 + const findIndex = unref(outputParamData).findIndex((f) => f.id == d.id);
  74 + if (findIndex !== -1) unref(outputParamData).splice(findIndex, 1, d);
  75 + } else {
  76 + unref(outputParamData).push({ ...d, id: buildUUID() });
77 } 77 }
78 } 78 }
79 }; 79 };
@@ -94,6 +94,7 @@ @@ -94,6 +94,7 @@
94 isUpdate: false, 94 isUpdate: false,
95 record: item, 95 record: item,
96 flag: 'output', 96 flag: 'output',
  97 + excludeStruct: true,
97 }); 98 });
98 }; 99 };
99 100
@@ -124,26 +125,74 @@ @@ -124,26 +125,74 @@
124 }); 125 });
125 }; 126 };
126 127
  128 + const getOutputStructList = () => {
  129 + const val = unref(dynamicBindRef.outputParamItemRef)?.map((item: any) => item.getFormData());
  130 + return val;
  131 + };
127 const getFormData = async () => { 132 const getFormData = async () => {
128 const values = await validate(); 133 const values = await validate();
129 if (!values) return; 134 if (!values) return;
130 validateValueRangeAndStep(Number(minMaxObj.min), Number(values.step), Number(minMaxObj.max)); 135 validateValueRangeAndStep(Number(minMaxObj.min), Number(values.step), Number(minMaxObj.max));
  136 + validateValueBool(Number(values.boolClose), Number(values.boolOpen));
  137 + const outputParams = getOutputStructList();
  138 + outputParams.forEach((f) => {
  139 + f.dataType = 'STRUCT';
  140 + });
  141 + //int double类型
131 const childSpecsDTO = { 142 const childSpecsDTO = {
132 dataType: values.dataType, 143 dataType: values.dataType,
133 max: minMaxObj.max, 144 max: minMaxObj.max,
134 min: minMaxObj.min, 145 min: minMaxObj.min,
135 step: values.step, 146 step: values.step,
136 unit: values.unit, 147 unit: values.unit,
  148 + length: values.length,
137 }; 149 };
138 const dataSpecs = childSpecsDTO; 150 const dataSpecs = childSpecsDTO;
139 - const { step, unit, valueRange, ...value } = values; 151 + //bool类型
  152 + const childEnumSpecsDTO = [
  153 + {
  154 + dataType: values.dataType,
  155 + name: '0',
  156 + value: values.boolClose,
  157 + },
  158 + {
  159 + dataType: values.dataType,
  160 + name: '1',
  161 + value: values.boolOpen,
  162 + },
  163 + ];
  164 + const dataSpecsList = childEnumSpecsDTO;
  165 + //text类型
  166 + //其他类型
  167 + const { boolClose, boolOpen, step, unit, valueRange, ...value } = values;
140 console.log(valueRange); 168 console.log(valueRange);
141 console.log(step); 169 console.log(step);
142 console.log(unit); 170 console.log(unit);
  171 + console.log(boolClose);
  172 + console.log(boolOpen);
143 return { 173 return {
144 ...value, 174 ...value,
145 - ...{ dataSpecs },  
146 - ...{ childSpecsDTO }, 175 + ...{
  176 + dataSpecs:
  177 + values.dataType === 'INT' || values.dataType === 'DOUBLE' || values.dataType === 'TEXT'
  178 + ? dataSpecs
  179 + : null,
  180 + },
  181 + ...{
  182 + childSpecsDTO:
  183 + values.dataType === 'INT' || values.dataType === 'DOUBLE' || values.dataType === 'TEXT'
  184 + ? childSpecsDTO
  185 + : null,
  186 + },
  187 + ...{
  188 + dataSpecsList:
  189 + values.dataType === 'BOOL'
  190 + ? dataSpecsList
  191 + : values.dataType === 'STRUCT'
  192 + ? outputParams
  193 + : null,
  194 + },
  195 + ...{ childEnumSpecsDTO: values.dataType === 'BOOL' ? childEnumSpecsDTO : null },
147 ...{ 196 ...{
148 childDataType: values.dataType, 197 childDataType: values.dataType,
149 childName: values.name, 198 childName: values.name,
@@ -151,10 +200,35 @@ @@ -151,10 +200,35 @@
151 }; 200 };
152 }; 201 };
153 const setFormData = (v) => { 202 const setFormData = (v) => {
  203 + console.log(v);
154 setFieldsValue(v); 204 setFieldsValue(v);
155 setFieldsValue({ 205 setFieldsValue({
156 ...v.dataSpecs, 206 ...v.dataSpecs,
157 }); 207 });
  208 + try {
  209 + setFieldsValue({
  210 + boolClose: v.dataType == 'BOOL' ? v.dataSpecsList[0].name : '',
  211 + boolOpen: v.dataType == 'BOOL' ? v.dataSpecsList[1].name : '',
  212 + });
  213 + } catch (e) {
  214 + console.log(e);
  215 + }
  216 + const { dataSpecsList, dataType, childDataType } = v;
  217 + if (childDataType == 'BOOL') {
  218 + setFieldsValue({
  219 + dataType: childDataType,
  220 + boolClose: dataSpecsList[0].name,
  221 + boolOpen: dataSpecsList[1].name,
  222 + });
  223 + }
  224 + try {
  225 + if (dataType == 'BOOL' || dataType == 'STRUCT') {
  226 + outputParamData.value = [...new Array(dataSpecsList.length).keys()];
  227 + outputParamData.value = dataSpecsList;
  228 + }
  229 + } catch (e) {
  230 + console.log(e);
  231 + }
158 nextTick(() => { 232 nextTick(() => {
159 minMaxObj.min = v?.dataSpecs?.min; 233 minMaxObj.min = v?.dataSpecs?.min;
160 minMaxObj.max = v?.dataSpecs?.max; 234 minMaxObj.max = v?.dataSpecs?.max;
1 import { buildUUID } from '/@/utils/uuid'; 1 import { buildUUID } from '/@/utils/uuid';
2 2
  3 +//模拟阿里云属性服务事件服务端格式
3 export const mockData = { 4 export const mockData = {
4 _ppk: {}, 5 _ppk: {},
5 events: [ 6 events: [
6 { 7 {
7 - createTs: 1666344382193, 8 + createTs: 1666596472189,
8 custom: true, 9 custom: true,
9 - description: '33',  
10 - eventName: '事件1',  
11 - eventType: 'ALERT_EVENT_TYPE',  
12 - identifier: 'i1', 10 + description: '监播动作结果上报事件',
  11 + eventName: '监播动作结果上报事件',
  12 + eventType: 'INFO_EVENT_TYPE',
  13 + identifier: 'MonitorActionEvent',
13 outputData: [ 14 outputData: [
14 { 15 {
15 id: buildUUID(), 16 id: buildUUID(),
16 custom: true, 17 custom: true,
17 dataSpecs: { 18 dataSpecs: {
18 dataType: 'INT', 19 dataType: 'INT',
19 - max: '20',  
20 - min: '10',  
21 - step: '3',  
22 - unit: 'W/㎡',  
23 - unitName: '太阳总辐射', 20 + max: '1024',
  21 + min: '-1024',
  22 + precise: 0,
  23 + step: '1',
  24 + unit: '',
  25 + unitName: '无',
24 }, 26 },
25 dataType: 'INT', 27 dataType: 'INT',
26 direction: 'PARAM_OUTPUT', 28 direction: 'PARAM_OUTPUT',
27 - identifier: 'i1',  
28 - name: '参数1', 29 + identifier: 'ActionType',
  30 + name: '监播操作类型',
29 paraOrder: 0, 31 paraOrder: 0,
30 }, 32 },
  33 + {
  34 + id: buildUUID(),
  35 + custom: true,
  36 + dataSpecs: {
  37 + dataType: 'TEXT',
  38 + length: 1024,
  39 + },
  40 + dataType: 'TEXT',
  41 + direction: 'PARAM_OUTPUT',
  42 + identifier: 'FileKey',
  43 + name: '上传文件ossKey',
  44 + paraOrder: 1,
  45 + },
  46 + {
  47 + id: buildUUID(),
  48 + custom: true,
  49 + dataSpecsList: [
  50 + {
  51 + id: buildUUID(),
  52 + dataType: 'BOOL',
  53 + name: '1',
  54 + value: 0,
  55 + },
  56 + {
  57 + id: buildUUID(),
  58 + dataType: 'BOOL',
  59 + name: '0',
  60 + value: 1,
  61 + },
  62 + ],
  63 + dataType: 'BOOL',
  64 + direction: 'PARAM_OUTPUT',
  65 + identifier: 'Extension',
  66 + name: '扩展信息',
  67 + paraOrder: 2,
  68 + },
  69 + {
  70 + id: buildUUID(),
  71 + custom: true,
  72 + dataSpecsList: [
  73 + {
  74 + id: buildUUID(),
  75 + childDataType: 'DOUBLE',
  76 + childName: '峰值',
  77 + childSpecsDTO: {
  78 + dataType: 'DOUBLE',
  79 + max: '33',
  80 + min: '22',
  81 + step: '2',
  82 + unit: 'm³/s',
  83 + unitName: '立方米每秒',
  84 + },
  85 + custom: true,
  86 + dataSpecs: {
  87 + dataType: 'DOUBLE',
  88 + max: '33',
  89 + min: '22',
  90 + step: '2',
  91 + unit: 'm³/s',
  92 + unitName: '立方米每秒',
  93 + },
  94 + dataType: 'STRUCT',
  95 + identifier: 'bass',
  96 + isStd: 0,
  97 + name: '峰值',
  98 + },
  99 + {
  100 + id: buildUUID(),
  101 + childDataType: 'BOOL',
  102 + childEnumSpecsDTO: [
  103 + {
  104 + dataType: 'BOOL',
  105 + name: '1',
  106 + value: 0,
  107 + },
  108 + {
  109 + dataType: 'BOOL',
  110 + name: '0',
  111 + value: 1,
  112 + },
  113 + ],
  114 + childName: '平均速率',
  115 + custom: true,
  116 + dataSpecsList: [
  117 + {
  118 + id: buildUUID(),
  119 + dataType: 'BOOL',
  120 + name: '1',
  121 + value: 0,
  122 + },
  123 + {
  124 + id: buildUUID(),
  125 + dataType: 'BOOL',
  126 + name: '0',
  127 + value: 1,
  128 + },
  129 + ],
  130 + dataType: 'STRUCT',
  131 + identifier: 'average',
  132 + isStd: 0,
  133 + name: '平均速率',
  134 + },
  135 + ],
  136 + dataType: 'STRUCT',
  137 + direction: 'PARAM_OUTPUT',
  138 + identifier: 'ceshi',
  139 + name: '网速',
  140 + paraOrder: 3,
  141 + },
31 ], 142 ],
32 productKey: 'hsrnXEfGFDv', 143 productKey: 'hsrnXEfGFDv',
33 required: false, 144 required: false,
@@ -36,67 +147,123 @@ export const mockData = { @@ -36,67 +147,123 @@ export const mockData = {
36 productKey: 'hsrnXEfGFDv', 147 productKey: 'hsrnXEfGFDv',
37 properties: [ 148 properties: [
38 { 149 {
39 - createTs: 1666259889029, 150 + createTs: 1666604372638,
40 custom: true, 151 custom: true,
41 customFlag: true, 152 customFlag: true,
42 dataSpecsList: [ 153 dataSpecsList: [
43 { 154 {
44 - id: buildUUID(), 155 + childDataType: 'BOOL',
  156 + childEnumSpecsDTO: [
  157 + {
  158 + dataType: 'BOOL',
  159 + name: '左眼',
  160 + value: 0,
  161 + },
  162 + {
  163 + dataType: 'BOOL',
  164 + name: '右眼',
  165 + value: 1,
  166 + },
  167 + ],
  168 + childName: '眼睛',
  169 + custom: true,
  170 + dataSpecsList: [
  171 + {
  172 + dataType: 'BOOL',
  173 + name: '左眼',
  174 + value: 0,
  175 + },
  176 + {
  177 + dataType: 'BOOL',
  178 + name: '右眼',
  179 + value: 1,
  180 + },
  181 + ],
  182 + dataType: 'STRUCT',
  183 + identifier: 'Eye',
  184 + isStd: 0,
  185 + name: '眼睛',
  186 + },
  187 + {
45 childDataType: 'INT', 188 childDataType: 'INT',
46 - childName: '测试参数1', 189 + childName: '鼻子',
47 childSpecsDTO: { 190 childSpecsDTO: {
48 dataType: 'INT', 191 dataType: 'INT',
49 - max: '30',  
50 - min: '20',  
51 - step: '1',  
52 - unit: 'mm/hour',  
53 - unitName: '降雨量', 192 + max: '22',
  193 + min: '12',
  194 + step: '5',
  195 + unit: '只',
  196 + unitName: '只',
54 }, 197 },
55 custom: true, 198 custom: true,
56 dataSpecs: { 199 dataSpecs: {
57 dataType: 'INT', 200 dataType: 'INT',
58 - max: '30',  
59 - min: '20',  
60 - step: '1',  
61 - unit: 'mm/hour',  
62 - unitName: '降雨量', 201 + max: '22',
  202 + min: '12',
  203 + step: '5',
  204 + unit: '只',
  205 + unitName: '只',
63 }, 206 },
64 dataType: 'STRUCT', 207 dataType: 'STRUCT',
65 - identifier: 'iden2', 208 + identifier: 'Boless',
66 isStd: 0, 209 isStd: 0,
67 - name: '测试参数1', 210 + name: '鼻子',
68 }, 211 },
69 { 212 {
70 - id: buildUUID(),  
71 - childDataType: 'INT',  
72 - childName: '测试参数2', 213 + childDataType: 'TEXT',
  214 + childName: '脸颊',
73 childSpecsDTO: { 215 childSpecsDTO: {
74 - dataType: 'INT',  
75 - max: '40',  
76 - min: '30',  
77 - step: '2',  
78 - unit: 'pH',  
79 - unitName: 'PH值', 216 + dataType: 'TEXT',
  217 + length: 10240,
80 }, 218 },
81 custom: true, 219 custom: true,
82 dataSpecs: { 220 dataSpecs: {
83 - dataType: 'INT',  
84 - max: '40',  
85 - min: '30',  
86 - step: '2',  
87 - unit: 'pH',  
88 - unitName: 'PH值', 221 + dataType: 'TEXT',
  222 + length: 10240,
89 }, 223 },
90 dataType: 'STRUCT', 224 dataType: 'STRUCT',
91 - identifier: 'idne2', 225 + identifier: 'Facebook',
92 isStd: 0, 226 isStd: 0,
93 - name: '测试参数2', 227 + name: '脸颊',
  228 + },
  229 + {
  230 + childDataType: 'BOOL',
  231 + childEnumSpecsDTO: [
  232 + {
  233 + dataType: 'BOOL',
  234 + name: '左耳',
  235 + value: 0,
  236 + },
  237 + {
  238 + dataType: 'BOOL',
  239 + name: '右耳',
  240 + value: 1,
  241 + },
  242 + ],
  243 + childName: '耳朵',
  244 + custom: true,
  245 + dataSpecsList: [
  246 + {
  247 + dataType: 'BOOL',
  248 + name: '左耳',
  249 + value: 0,
  250 + },
  251 + {
  252 + dataType: 'BOOL',
  253 + name: '右耳',
  254 + value: 1,
  255 + },
  256 + ],
  257 + dataType: 'STRUCT',
  258 + identifier: 'Eyear',
  259 + isStd: 0,
  260 + name: '耳朵',
94 }, 261 },
95 ], 262 ],
96 dataType: 'STRUCT', 263 dataType: 'STRUCT',
97 - description: '21212',  
98 - identifier: 'iden1',  
99 - name: '测试功能', 264 + description: '用于人脸特征下发,基于人脸门禁1.0物模型\n设备级开关',
  265 + identifier: 'SupportFaceFeature',
  266 + name: '支持人脸特征下发',
100 productKey: 'hsrnXEfGFDv', 267 productKey: 'hsrnXEfGFDv',
101 required: false, 268 required: false,
102 rwFlag: 'READ_WRITE', 269 rwFlag: 'READ_WRITE',
@@ -105,249 +272,329 @@ export const mockData = { @@ -105,249 +272,329 @@ export const mockData = {
105 ], 272 ],
106 services: [ 273 services: [
107 { 274 {
108 - callType: 'ASYNC',  
109 - createTs: 1666343456853, 275 + callType: 'SYNC',
  276 + createTs: 1666603858325,
110 custom: true, 277 custom: true,
111 - description: '4343',  
112 - identifier: 'Iide1', 278 + description: '更新模型',
  279 + identifier: 'UpdateModel',
113 inputParams: [ 280 inputParams: [
114 { 281 {
115 id: buildUUID(), 282 id: buildUUID(),
116 custom: true, 283 custom: true,
117 dataSpecs: { 284 dataSpecs: {
  285 + dataType: 'TEXT',
  286 + length: 128,
  287 + },
  288 + dataType: 'TEXT',
  289 + direction: 'PARAM_INPUT',
  290 + identifier: 'UpdateTaskID',
  291 + name: '更新任务ID',
  292 + paraOrder: 0,
  293 + },
  294 + {
  295 + id: buildUUID(),
  296 + custom: true,
  297 + dataSpecs: {
  298 + dataType: 'TEXT',
  299 + length: 128,
  300 + },
  301 + dataType: 'TEXT',
  302 + direction: 'PARAM_INPUT',
  303 + identifier: 'AlgorithmID',
  304 + name: '算法任务唯一标识',
  305 + paraOrder: 1,
  306 + },
  307 + {
  308 + id: buildUUID(),
  309 +
  310 + custom: true,
  311 + dataSpecs: {
  312 + dataType: 'TEXT',
  313 + length: 64,
  314 + },
  315 + dataType: 'TEXT',
  316 + direction: 'PARAM_INPUT',
  317 + identifier: 'AlgorithmName',
  318 + name: '算法名称',
  319 + paraOrder: 2,
  320 + },
  321 + {
  322 + id: buildUUID(),
  323 +
  324 + custom: true,
  325 + dataSpecs: {
118 dataType: 'INT', 326 dataType: 'INT',
119 - max: '20',  
120 - min: '10',  
121 - step: '2',  
122 - unit: 'dS/m',  
123 - unitName: '土壤EC值', 327 + max: '128',
  328 + min: '0',
  329 + precise: 0,
  330 + step: '1',
  331 + unit: '',
  332 + unitName: '无',
124 }, 333 },
125 dataType: 'INT', 334 dataType: 'INT',
126 direction: 'PARAM_INPUT', 335 direction: 'PARAM_INPUT',
127 - identifier: 'i1',  
128 - name: '参数名字1',  
129 - paraOrder: 0, 336 + identifier: 'NumThreads',
  337 + name: '使用线程数',
  338 + paraOrder: 4,
  339 + },
  340 + {
  341 + id: buildUUID(),
  342 +
  343 + custom: true,
  344 + dataSpecs: {
  345 + dataType: 'TEXT',
  346 + length: 128,
  347 + },
  348 + dataType: 'TEXT',
  349 + direction: 'PARAM_INPUT',
  350 + identifier: 'ModelID',
  351 + name: '模型唯一标识',
  352 + paraOrder: 5,
  353 + },
  354 + {
  355 + id: buildUUID(),
  356 +
  357 + custom: true,
  358 + dataSpecs: {
  359 + dataType: 'TEXT',
  360 + length: 64,
  361 + },
  362 + dataType: 'TEXT',
  363 + direction: 'PARAM_INPUT',
  364 + identifier: 'ModelName',
  365 + name: '模型名称',
  366 + paraOrder: 6,
  367 + },
  368 + {
  369 + id: buildUUID(),
  370 +
  371 + custom: true,
  372 + dataSpecs: {
  373 + dataType: 'TEXT',
  374 + length: 64,
  375 + },
  376 + dataType: 'TEXT',
  377 + direction: 'PARAM_INPUT',
  378 + identifier: 'ModelVersion',
  379 + name: '模型版本',
  380 + paraOrder: 7,
  381 + },
  382 + {
  383 + id: buildUUID(),
  384 +
  385 + custom: true,
  386 + dataSpecs: {
  387 + dataType: 'TEXT',
  388 + length: 1024,
  389 + },
  390 + dataType: 'TEXT',
  391 + direction: 'PARAM_INPUT',
  392 + identifier: 'ModelURL',
  393 + name: '模型地址',
  394 + paraOrder: 8,
  395 + },
  396 + {
  397 + id: buildUUID(),
  398 +
  399 + custom: true,
  400 + dataSpecs: {
  401 + dataType: 'TEXT',
  402 + length: 128,
  403 + },
  404 + dataType: 'TEXT',
  405 + direction: 'PARAM_INPUT',
  406 + identifier: 'ModelMD5',
  407 + name: '模型文件MD5',
  408 + paraOrder: 9,
  409 + },
  410 + {
  411 + id: buildUUID(),
  412 +
  413 + custom: true,
  414 + dataSpecs: {
  415 + dataType: 'TEXT',
  416 + length: 64,
  417 + },
  418 + dataType: 'TEXT',
  419 + direction: 'PARAM_INPUT',
  420 + identifier: 'ModelPlatform',
  421 + name: '模型平台',
  422 + paraOrder: 10,
  423 + },
  424 + {
  425 + id: buildUUID(),
  426 +
  427 + custom: true,
  428 + dataSpecs: {
  429 + dataType: 'TEXT',
  430 + length: 128,
  431 + },
  432 + dataType: 'TEXT',
  433 + direction: 'PARAM_INPUT',
  434 + identifier: 'ModelTaskID',
  435 + name: '模型生成任务ID',
  436 + paraOrder: 11,
  437 + },
  438 + {
  439 + id: buildUUID(),
  440 +
  441 + custom: true,
  442 + dataSpecs: {
  443 + dataType: 'TEXT',
  444 + length: 64,
  445 + },
  446 + dataType: 'TEXT',
  447 + direction: 'PARAM_INPUT',
  448 + identifier: 'ModelEncryptType',
  449 + name: '模型加密方式',
  450 + paraOrder: 12,
  451 + },
  452 + {
  453 + id: buildUUID(),
  454 +
  455 + custom: true,
  456 + dataSpecs: {
  457 + dataType: 'TEXT',
  458 + length: 2048,
  459 + },
  460 + dataType: 'TEXT',
  461 + direction: 'PARAM_INPUT',
  462 + identifier: 'ModelExtension',
  463 + name: '扩展信息',
  464 + paraOrder: 13,
  465 + },
  466 + {
  467 + id: buildUUID(),
  468 +
  469 + custom: true,
  470 + dataSpecsList: [
  471 + {
  472 + id: buildUUID(),
  473 +
  474 + childDataType: 'TEXT',
  475 + childName: '模型结构体参数1',
  476 + childSpecsDTO: {
  477 + dataType: 'TEXT',
  478 + length: 10240,
  479 + },
  480 + custom: true,
  481 + dataSpecs: {
  482 + dataType: 'TEXT',
  483 + length: 10240,
  484 + },
  485 + dataType: 'STRUCT',
  486 + identifier: 'ModelParams1',
  487 + isStd: 0,
  488 + name: '模型结构体参数1',
  489 + },
  490 + {
  491 + id: buildUUID(),
  492 +
  493 + childDataType: 'BOOL',
  494 + childEnumSpecsDTO: [
  495 + {
  496 + dataType: 'BOOL',
  497 + name: '1',
  498 + value: 0,
  499 + },
  500 + {
  501 + dataType: 'BOOL',
  502 + name: '0',
  503 + value: 1,
  504 + },
  505 + ],
  506 + childName: '模型结构体参数2',
  507 + custom: true,
  508 + dataSpecsList: [
  509 + {
  510 + id: buildUUID(),
  511 +
  512 + dataType: 'BOOL',
  513 + name: '1',
  514 + value: 0,
  515 + },
  516 + {
  517 + id: buildUUID(),
  518 +
  519 + dataType: 'BOOL',
  520 + name: '0',
  521 + value: 1,
  522 + },
  523 + ],
  524 + dataType: 'STRUCT',
  525 + identifier: 'ModelParams2',
  526 + isStd: 0,
  527 + name: '模型结构体参数2',
  528 + },
  529 + ],
  530 + dataType: 'STRUCT',
  531 + direction: 'PARAM_INPUT',
  532 + identifier: 'ModelStruct',
  533 + name: '模型结构体',
  534 + paraOrder: 3,
130 }, 535 },
131 ], 536 ],
132 outputParams: [ 537 outputParams: [
133 { 538 {
134 id: buildUUID(), 539 id: buildUUID(),
  540 +
  541 + custom: true,
  542 + dataSpecs: {
  543 + dataType: 'TEXT',
  544 + length: 10240,
  545 + },
  546 + dataType: 'TEXT',
  547 + direction: 'PARAM_OUTPUT',
  548 + identifier: 'Django',
  549 + name: 'django',
  550 + paraOrder: 0,
  551 + },
  552 + {
  553 + id: buildUUID(),
  554 +
  555 + custom: true,
  556 + dataSpecsList: [
  557 + {
  558 + id: buildUUID(),
  559 +
  560 + dataType: 'BOOL',
  561 + name: '1',
  562 + value: 0,
  563 + },
  564 + {
  565 + id: buildUUID(),
  566 + dataType: 'BOOL',
  567 + name: '0',
  568 + value: 1,
  569 + },
  570 + ],
  571 + dataType: 'BOOL',
  572 + direction: 'PARAM_OUTPUT',
  573 + identifier: 'Flask',
  574 + name: 'flask',
  575 + paraOrder: 1,
  576 + },
  577 + {
  578 + id: buildUUID(),
135 custom: true, 579 custom: true,
136 dataSpecs: { 580 dataSpecs: {
137 dataType: 'INT', 581 dataType: 'INT',
138 - max: '20',  
139 - min: '10', 582 + max: '22',
  583 + min: '11',
140 step: '3', 584 step: '3',
141 - unit: 'pH',  
142 - unitName: 'PH值', 585 + unit: '只',
  586 + unitName: '只',
143 }, 587 },
144 dataType: 'INT', 588 dataType: 'INT',
145 direction: 'PARAM_OUTPUT', 589 direction: 'PARAM_OUTPUT',
146 - identifier: 'i2',  
147 - name: '输出参数2',  
148 - paraOrder: 0, 590 + identifier: 'Tornado',
  591 + name: 'tornado',
  592 + paraOrder: 2,
149 }, 593 },
150 ], 594 ],
151 productKey: 'hsrnXEfGFDv', 595 productKey: 'hsrnXEfGFDv',
152 required: false, 596 required: false,
153 - serviceName: '服务1', 597 + serviceName: '更新模型',
154 }, 598 },
155 ], 599 ],
156 }; 600 };
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 -// }  
@@ -139,14 +139,17 @@ export const attrSchemas: FormSchema[] = [ @@ -139,14 +139,17 @@ export const attrSchemas: FormSchema[] = [
139 }, 139 },
140 { 140 {
141 field: 'length', 141 field: 'length',
142 - component: 'Input', 142 + component: 'InputNumber',
143 required: true, 143 required: true,
144 label: '数据长度', 144 label: '数据长度',
145 - defaultValue: '10240', 145 + defaultValue: 10240,
146 colProps: { 146 colProps: {
147 - span: 18, 147 + span: 8,
  148 + },
  149 + componentProps: {
  150 + max: 10240,
  151 + min: 1,
148 }, 152 },
149 - suffix: '字节',  
150 ifShow: ({ values }) => isString(values.dataType), 153 ifShow: ({ values }) => isString(values.dataType),
151 }, 154 },
152 { 155 {
@@ -224,7 +227,7 @@ export const serviceSchemas: FormSchema[] = [ @@ -224,7 +227,7 @@ export const serviceSchemas: FormSchema[] = [
224 colProps: { 227 colProps: {
225 span: 24, 228 span: 24,
226 }, 229 },
227 - defaultValue: 'asynchronous', 230 + defaultValue: 'ASYNC',
228 componentProps: { 231 componentProps: {
229 placeholder: '请选择调用方式', 232 placeholder: '请选择调用方式',
230 api: findDictItemByCode, 233 api: findDictItemByCode,
@@ -296,7 +299,7 @@ export const eventSchemas: FormSchema[] = [ @@ -296,7 +299,7 @@ export const eventSchemas: FormSchema[] = [
296 colProps: { 299 colProps: {
297 span: 24, 300 span: 24,
298 }, 301 },
299 - defaultValue: 'message', 302 + defaultValue: 'INFO_EVENT_TYPE',
300 componentProps: { 303 componentProps: {
301 placeholder: '请选择事件类型', 304 placeholder: '请选择事件类型',
302 api: findDictItemByCode, 305 api: findDictItemByCode,
@@ -400,7 +403,7 @@ export const addParamsSchemas: FormSchema[] = [ @@ -400,7 +403,7 @@ export const addParamsSchemas: FormSchema[] = [
400 { 403 {
401 field: 'structSlot', 404 field: 'structSlot',
402 label: 'JSON 对象', 405 label: 'JSON 对象',
403 - required: true, 406 + // required: true,
404 component: 'Input', 407 component: 'Input',
405 slot: 'structSlot', 408 slot: 'structSlot',
406 colProps: { 409 colProps: {
@@ -436,14 +439,17 @@ export const addParamsSchemas: FormSchema[] = [ @@ -436,14 +439,17 @@ export const addParamsSchemas: FormSchema[] = [
436 }, 439 },
437 { 440 {
438 field: 'length', 441 field: 'length',
439 - component: 'Input', 442 + component: 'InputNumber',
440 required: true, 443 required: true,
441 label: '数据长度', 444 label: '数据长度',
442 - defaultValue: '10240', 445 + defaultValue: 10240,
443 colProps: { 446 colProps: {
444 - span: 24, 447 + span: 8,
  448 + },
  449 + componentProps: {
  450 + max: 50000,
  451 + min: 1,
445 }, 452 },
446 - suffix: '字节',  
447 ifShow: ({ values }) => isString(values.dataType), 453 ifShow: ({ values }) => isString(values.dataType),
448 }, 454 },
449 { 455 {
@@ -14,3 +14,10 @@ export const validateValueRangeAndStep = (min, step, max) => { @@ -14,3 +14,10 @@ export const validateValueRangeAndStep = (min, step, max) => {
14 throw '步长不能大于取值范围的差值'; 14 throw '步长不能大于取值范围的差值';
15 } 15 }
16 }; 16 };
  17 +
  18 +export const validateValueBool = (boolClose, boolOpen) => {
  19 + if (boolClose == boolOpen) {
  20 + createMessage.error('布尔值不能相同');
  21 + throw '布尔值不能相同';
  22 + }
  23 +};