Commit 490a39e6d671cce88a680ed6f4b0deb907cd16bd

Authored by xp.Huang
2 parents 42b3abaa 139ee076

Merge branch 'ft_local_dev' into 'main'

fix:修改Teanbition上问题

See merge request huang/yun-teng-iot-front!385
  1 +{
  2 + "i18n-ally.localesPaths": ["src/locales", "src/locales/lang", "public/resource/tinymce/langs"]
  3 +}
@@ -186,7 +186,7 @@ export const getGATEWAYdevice = async (params: { organization: string }) => { @@ -186,7 +186,7 @@ export const getGATEWAYdevice = async (params: { organization: string }) => {
186 params, 186 params,
187 }); 187 });
188 return Promise.resolve<{ label: string; value: string }[]>( 188 return Promise.resolve<{ label: string; value: string }[]>(
189 - res.map((item) => ({ label: item.name, value: item.tbDeviceId })) 189 + res.map((item) => ({ label: item.name, value: item.id }))
190 ); 190 );
191 }; 191 };
192 192
@@ -25,6 +25,8 @@ @@ -25,6 +25,8 @@
25 import { useI18n } from '/@/hooks/web/useI18n'; 25 import { useI18n } from '/@/hooks/web/useI18n';
26 import { JWT_TOKEN_KEY } from '/@/enums/cacheEnum'; 26 import { JWT_TOKEN_KEY } from '/@/enums/cacheEnum';
27 import { getAuthCache } from '/@/utils/auth'; 27 import { getAuthCache } from '/@/utils/auth';
  28 + import { useMessage } from '/@/hooks/web/useMessage';
  29 +
28 export default defineComponent({ 30 export default defineComponent({
29 name: 'TinymceImageUpload', 31 name: 'TinymceImageUpload',
30 components: { Upload }, 32 components: { Upload },
@@ -39,6 +41,7 @@ @@ -39,6 +41,7 @@
39 }, 41 },
40 emits: ['uploading', 'done', 'error'], 42 emits: ['uploading', 'done', 'error'],
41 setup(props, { emit }) { 43 setup(props, { emit }) {
  44 + const { createMessage } = useMessage();
42 let uploading = false; 45 let uploading = false;
43 const token: string = getAuthCache(JWT_TOKEN_KEY); 46 const token: string = getAuthCache(JWT_TOKEN_KEY);
44 const { uploadUrl } = useGlobSetting(); 47 const { uploadUrl } = useGlobSetting();
@@ -55,7 +58,6 @@ @@ -55,7 +58,6 @@
55 }); 58 });
56 59
57 function handleChange(info: Recordable) { 60 function handleChange(info: Recordable) {
58 - console.log(info);  
59 const file = info.file; 61 const file = info.file;
60 const status = file?.status; 62 const status = file?.status;
61 const url = file?.response?.fileStaticUri; 63 const url = file?.response?.fileStaticUri;
@@ -72,6 +74,7 @@ @@ -72,6 +74,7 @@
72 loading.value = false; 74 loading.value = false;
73 uploading = false; 75 uploading = false;
74 } else if (status === 'error') { 76 } else if (status === 'error') {
  77 + createMessage.error('图片上传失败');
75 emit('error'); 78 emit('error');
76 loading.value = false; 79 loading.value = false;
77 uploading = false; 80 uploading = false;
@@ -10,9 +10,8 @@ @@ -10,9 +10,8 @@
10 <BasicForm @register="registerForm"> 10 <BasicForm @register="registerForm">
11 <template #alarmContactSlot="{ model, field }"> 11 <template #alarmContactSlot="{ model, field }">
12 <p style="display: none">{{ field }}</p> 12 <p style="display: none">{{ field }}</p>
13 - <p>{{ orgFunc(model['organizationId']) }}</p> 13 + <p style="display: none">{{ orgFunc(model['organizationId']) }}</p>
14 <a-select 14 <a-select
15 - style="top: -13px"  
16 placeholder="请选择告警联系人" 15 placeholder="请选择告警联系人"
17 mode="multiple" 16 mode="multiple"
18 v-model:value="model[field]" 17 v-model:value="model[field]"
@@ -113,7 +113,7 @@ @@ -113,7 +113,7 @@
113 label: '编辑', 113 label: '编辑',
114 auth: 'api:yt:device:update', 114 auth: 'api:yt:device:update',
115 icon: 'clarity:note-edit-line', 115 icon: 'clarity:note-edit-line',
116 - ifShow: authBtn(role) && record.customerId === undefined, 116 + ifShow: authBtn(role),
117 onClick: handleEdit.bind(null, record), 117 onClick: handleEdit.bind(null, record),
118 }, 118 },
119 ]" 119 ]"
@@ -16,8 +16,8 @@ @@ -16,8 +16,8 @@
16 /> 16 />
17 </template> 17 </template>
18 <div style="display: flex" :class="{ 'mt-2': outputParamData.length > 0 }"> 18 <div style="display: flex" :class="{ 'mt-2': outputParamData.length > 0 }">
19 - <span style="color: #0170cc; cursor: pointer">+</span>  
20 - <span style="color: #0170cc; cursor: pointer" @click="handleAddOutParam">增加参数</span> 19 + <span class="add-style">+</span>
  20 + <span class="add-style" @click="handleAddOutParam">增加参数</span>
21 </div> 21 </div>
22 </div> 22 </div>
23 </template> 23 </template>
@@ -40,7 +40,9 @@ @@ -40,7 +40,9 @@
40 const dynamicBindRef = { 40 const dynamicBindRef = {
41 outputParamItemRef: ref([]), 41 outputParamItemRef: ref([]),
42 }; 42 };
  43 +
43 const [registerModal, { openModal }] = useModal(); 44 const [registerModal, { openModal }] = useModal();
  45 +
44 const [register, { validate, setFieldsValue, resetFields }] = useForm({ 46 const [register, { validate, setFieldsValue, resetFields }] = useForm({
45 labelWidth: 100, 47 labelWidth: 100,
46 schemas: attrSchemas, 48 schemas: attrSchemas,
@@ -51,6 +53,7 @@ @@ -51,6 +53,7 @@
51 submitOnReset: false, 53 submitOnReset: false,
52 showActionButtonGroup: false, 54 showActionButtonGroup: false,
53 }); 55 });
  56 +
54 const getData = (d, f) => { 57 const getData = (d, f) => {
55 if (f == 'output') { 58 if (f == 'output') {
56 if (d.id !== null) { 59 if (d.id !== null) {
@@ -83,33 +86,38 @@ @@ -83,33 +86,38 @@
83 }); 86 });
84 }; 87 };
85 88
  89 + const setTypeData = (T, D) => {
  90 + if (T === 'INT' || T === 'DOUBLE' || T === 'TEXT') {
  91 + return {
  92 + ...D?.dataSpecs,
  93 + valueRange: D?.dataSpecs,
  94 + };
  95 + } else if (T === 'BOOL') {
  96 + return {
  97 + boolClose: D?.dataSpecsList[0]?.name,
  98 + boolOpen: D?.dataSpecsList[1]?.name,
  99 + };
  100 + }
  101 + };
  102 +
86 //回显数据 103 //回显数据
87 const setFormData = (v) => { 104 const setFormData = (v) => {
88 - setFieldsValue(v[0]);  
89 - setFieldsValue({  
90 - ...v[0].dataSpecs,  
91 - valueRange: v[0].dataSpecs,  
92 - boolClose:  
93 - v[0].dataSpecsList !== undefined || v[0].dataSpecsList !== null  
94 - ? v[0].dataSpecsList[0].name  
95 - : '',  
96 - boolOpen:  
97 - v[0].dataSpecsList !== undefined || v[0].dataSpecsList !== null  
98 - ? v[0].dataSpecsList[1].name  
99 - : '',  
100 - }); 105 + setFieldsValue({ ...v[0] });
  106 + setFieldsValue(setTypeData(v[0].dataType, v[0]));
101 const { dataSpecsList } = v[0]; 107 const { dataSpecsList } = v[0];
102 if (dataSpecsList !== undefined) { 108 if (dataSpecsList !== undefined) {
103 outputParamData.value = [...new Array(dataSpecsList.length).keys()]; 109 outputParamData.value = [...new Array(dataSpecsList.length).keys()];
104 outputParamData.value = dataSpecsList; 110 outputParamData.value = dataSpecsList;
105 } 111 }
106 }; 112 };
  113 +
107 //获取结构体数据 114 //获取结构体数据
108 const getStructList = () => { 115 const getStructList = () => {
109 const val = unref(dynamicBindRef.outputParamItemRef)?.map((item: any) => item.getFormData()); 116 const val = unref(dynamicBindRef.outputParamItemRef)?.map((item: any) => item.getFormData());
110 return val; 117 return val;
111 }; 118 };
112 - const getBoolOrStruct = (T, S, B) => { 119 +
  120 + const getBoolOrStructData = (T, S, B) => {
113 if (T === 'STRUCT') { 121 if (T === 'STRUCT') {
114 return S; 122 return S;
115 } else { 123 } else {
@@ -126,20 +134,23 @@ @@ -126,20 +134,23 @@
126 } 134 }
127 const dataSpecs = useChangeTypeGetTypeForm(values.dataType, values); 135 const dataSpecs = useChangeTypeGetTypeForm(values.dataType, values);
128 const dataSpecsListBool = useChangeTypeGetTypeForm(values.dataType, values); 136 const dataSpecsListBool = useChangeTypeGetTypeForm(values.dataType, values);
129 - const { valueRange = null, step = null, unit = null, outputParam = null, ...value } = values;  
130 - console.log(outputParam);  
131 - console.log(step);  
132 - console.log(unit);  
133 - console.log(valueRange); 137 + const { valueRange, step, unit, outputParam, ...value } = values;
  138 + const none = {
  139 + ...outputParam,
  140 + ...step,
  141 + ...unit,
  142 + ...valueRange,
  143 + };
  144 + console.log(none);
134 return { 145 return {
135 ...value, 146 ...value,
136 ...{ dataSpecs }, 147 ...{ dataSpecs },
137 ...{ 148 ...{
138 - dataSpecsList: getBoolOrStruct(values.dataType, dataSpecsList, dataSpecsListBool), 149 + dataSpecsList: getBoolOrStructData(values.dataType, dataSpecsList, dataSpecsListBool),
139 }, 150 },
140 }; 151 };
141 } 152 }
142 - //清空数据 153 +
143 const resetFormData = () => { 154 const resetFormData = () => {
144 resetFields(); 155 resetFields();
145 outputParamData.value = []; 156 outputParamData.value = [];
@@ -151,4 +162,9 @@ @@ -151,4 +162,9 @@
151 getFormData, 162 getFormData,
152 }); 163 });
153 </script> 164 </script>
154 -<style lang="less" scoped></style> 165 +<style lang="less" scoped>
  166 + .add-style {
  167 + color: #0170cc;
  168 + cursor: pointer;
  169 + }
  170 +</style>
@@ -15,9 +15,9 @@ @@ -15,9 +15,9 @@
15 @edit="editOutParItem" 15 @edit="editOutParItem"
16 /> 16 />
17 </template> 17 </template>
18 - <div style="display: flex" class="mt-2">  
19 - <span style="color: #0170cc; cursor: pointer">+</span>  
20 - <span style="color: #0170cc; cursor: pointer" @click="handleAddOutParam">增加参数</span> 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> 21 </div>
22 </div> 22 </div>
23 </template> 23 </template>
@@ -38,7 +38,9 @@ @@ -38,7 +38,9 @@
38 const dynamicBindRef = { 38 const dynamicBindRef = {
39 outputParamItemRef: ref([]), 39 outputParamItemRef: ref([]),
40 }; 40 };
  41 +
41 const [registerModal, { openModal }] = useModal(); 42 const [registerModal, { openModal }] = useModal();
  43 +
42 const [register, { validate, setFieldsValue, resetFields }] = useForm({ 44 const [register, { validate, setFieldsValue, resetFields }] = useForm({
43 labelWidth: 100, 45 labelWidth: 100,
44 schemas: eventSchemas, 46 schemas: eventSchemas,
@@ -49,6 +51,7 @@ @@ -49,6 +51,7 @@
49 submitOnReset: false, 51 submitOnReset: false,
50 showActionButtonGroup: false, 52 showActionButtonGroup: false,
51 }); 53 });
  54 +
52 const getData = (d, f) => { 55 const getData = (d, f) => {
53 if (f == 'output') { 56 if (f == 'output') {
54 if (d.id !== null) { 57 if (d.id !== null) {
@@ -59,6 +62,7 @@ @@ -59,6 +62,7 @@
59 } 62 }
60 } 63 }
61 }; 64 };
  65 +
62 const handleAddOutParam = () => { 66 const handleAddOutParam = () => {
63 openModal(true, { 67 openModal(true, {
64 isUpdate: true, 68 isUpdate: true,
@@ -66,9 +70,11 @@ @@ -66,9 +70,11 @@
66 excludeStruct: false, 70 excludeStruct: false,
67 }); 71 });
68 }; 72 };
  73 +
69 const deleteOutParItem = (index) => { 74 const deleteOutParItem = (index) => {
70 unref(outputParamData).splice(index, 1); 75 unref(outputParamData).splice(index, 1);
71 }; 76 };
  77 +
72 const editOutParItem = (item) => { 78 const editOutParItem = (item) => {
73 openModal(true, { 79 openModal(true, {
74 isUpdate: false, 80 isUpdate: false,
@@ -77,6 +83,7 @@ @@ -77,6 +83,7 @@
77 excludeStruct: false, 83 excludeStruct: false,
78 }); 84 });
79 }; 85 };
  86 +
80 //回显数据 87 //回显数据
81 const setFormData = (v) => { 88 const setFormData = (v) => {
82 setFieldsValue(v[0]); 89 setFieldsValue(v[0]);
@@ -86,6 +93,7 @@ @@ -86,6 +93,7 @@
86 outputParamData.value = outputData; 93 outputParamData.value = outputData;
87 } 94 }
88 }; 95 };
  96 +
89 //获取数据 97 //获取数据
90 const getStructList = () => { 98 const getStructList = () => {
91 const val = unref(dynamicBindRef.outputParamItemRef)?.map((item: any) => item.getFormData()); 99 const val = unref(dynamicBindRef.outputParamItemRef)?.map((item: any) => item.getFormData());
@@ -96,13 +104,14 @@ @@ -96,13 +104,14 @@
96 const values = await validate(); 104 const values = await validate();
97 if (!values) return; 105 if (!values) return;
98 const outputData = getStructList(); 106 const outputData = getStructList();
99 - const { outputParam = null, ...value } = values; 107 + const { outputParam, ...value } = values;
100 console.log(outputParam); 108 console.log(outputParam);
101 return { 109 return {
102 ...value, 110 ...value,
103 ...{ outputData }, 111 ...{ outputData },
104 }; 112 };
105 } 113 }
  114 +
106 //清空数据 115 //清空数据
107 const resetFormData = () => { 116 const resetFormData = () => {
108 resetFields(); 117 resetFields();
@@ -115,4 +124,9 @@ @@ -115,4 +124,9 @@
115 getFormData, 124 getFormData,
116 }); 125 });
117 </script> 126 </script>
118 -<style lang="less" scoped></style> 127 +<style lang="less" scoped>
  128 + .add-style {
  129 + color: #0170cc;
  130 + cursor: pointer;
  131 + }
  132 +</style>
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 <BasicForm @register="register"> 3 <BasicForm @register="register">
4 <template #inputParamSlot> 4 <template #inputParamSlot>
5 <div> 5 <div>
6 - <template v-for="(item, index) in inputParamData" :key="item"> 6 + <template v-for="(item, index) in inputParamData" :key="item.id">
7 <span style="display: none">{{ item }}</span> 7 <span style="display: none">{{ item }}</span>
8 <InputParamItem 8 <InputParamItem
9 :title="item.name" 9 :title="item.name"
@@ -15,15 +15,15 @@ @@ -15,15 +15,15 @@
15 @edit="editInParItem" 15 @edit="editInParItem"
16 /> 16 />
17 </template> 17 </template>
18 - <div style="display: flex" class="mt-2">  
19 - <span style="color: #0170cc; cursor: pointer">+</span>  
20 - <span style="color: #0170cc; cursor: pointer" @click="handleAddInParam">增加参数</span> 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> 21 </div>
22 </div> 22 </div>
23 </template> 23 </template>
24 <template #outputParamSlot> 24 <template #outputParamSlot>
25 <div> 25 <div>
26 - <template v-for="(item, index) in outputParamData" :key="item"> 26 + <template v-for="(item, index) in outputParamData" :key="item.id">
27 <span style="display: none">{{ item }}</span> 27 <span style="display: none">{{ item }}</span>
28 <InputParamItem 28 <InputParamItem
29 :title="item.name" 29 :title="item.name"
@@ -35,9 +35,9 @@ @@ -35,9 +35,9 @@
35 @edit="editOutParItem" 35 @edit="editOutParItem"
36 /> 36 />
37 </template> 37 </template>
38 - <div style="display: flex" class="mt-2">  
39 - <span style="color: #0170cc; cursor: pointer">+</span>  
40 - <span style="color: #0170cc; cursor: pointer" @click="handleAddOutParam">增加参数</span> 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> 41 </div>
42 </div> 42 </div>
43 </template> 43 </template>
@@ -60,6 +60,7 @@ @@ -60,6 +60,7 @@
60 inputParamItemRef: ref([]), 60 inputParamItemRef: ref([]),
61 outputParamItemRef: ref([]), 61 outputParamItemRef: ref([]),
62 }; 62 };
  63 +
63 const [registerModal, { openModal }] = useModal(); 64 const [registerModal, { openModal }] = useModal();
64 65
65 const [register, { validate, setFieldsValue, resetFields }] = useForm({ 66 const [register, { validate, setFieldsValue, resetFields }] = useForm({
@@ -98,17 +99,11 @@ @@ -98,17 +99,11 @@
98 excludeStruct: false, 99 excludeStruct: false,
99 }); 100 });
100 }; 101 };
101 - const handleAddOutParam = () => {  
102 - openModal(true, {  
103 - isUpdate: true,  
104 - flag: 'output',  
105 - excludeStruct: false,  
106 - });  
107 - };  
108 102
109 const deleteInParItem = (index) => { 103 const deleteInParItem = (index) => {
110 unref(inputParamData).splice(index, 1); 104 unref(inputParamData).splice(index, 1);
111 }; 105 };
  106 +
112 const editInParItem = (item) => { 107 const editInParItem = (item) => {
113 openModal(true, { 108 openModal(true, {
114 isUpdate: false, 109 isUpdate: false,
@@ -117,9 +112,19 @@ @@ -117,9 +112,19 @@
117 excludeStruct: false, 112 excludeStruct: false,
118 }); 113 });
119 }; 114 };
  115 +
  116 + const handleAddOutParam = () => {
  117 + openModal(true, {
  118 + isUpdate: true,
  119 + flag: 'output',
  120 + excludeStruct: false,
  121 + });
  122 + };
  123 +
120 const deleteOutParItem = (index) => { 124 const deleteOutParItem = (index) => {
121 unref(outputParamData).splice(index, 1); 125 unref(outputParamData).splice(index, 1);
122 }; 126 };
  127 +
123 const editOutParItem = (item) => { 128 const editOutParItem = (item) => {
124 openModal(true, { 129 openModal(true, {
125 isUpdate: false, 130 isUpdate: false,
@@ -142,10 +147,12 @@ @@ -142,10 +147,12 @@
142 inputParamData.value = inputParams; 147 inputParamData.value = inputParams;
143 } 148 }
144 }; 149 };
  150 +
145 const getInputStructList = () => { 151 const getInputStructList = () => {
146 const val = unref(dynamicBindRef.inputParamItemRef)?.map((item: any) => item.getFormData()); 152 const val = unref(dynamicBindRef.inputParamItemRef)?.map((item: any) => item.getFormData());
147 return val; 153 return val;
148 }; 154 };
  155 +
149 const getOutputStructList = () => { 156 const getOutputStructList = () => {
150 const val = unref(dynamicBindRef.outputParamItemRef)?.map((item: any) => item.getFormData()); 157 const val = unref(dynamicBindRef.outputParamItemRef)?.map((item: any) => item.getFormData());
151 return val; 158 return val;
@@ -157,7 +164,7 @@ @@ -157,7 +164,7 @@
157 if (!values) return; 164 if (!values) return;
158 const inputParams = getInputStructList(); 165 const inputParams = getInputStructList();
159 const outputParams = getOutputStructList(); 166 const outputParams = getOutputStructList();
160 - const { inputParam = null, outputParam = null, ...value } = values; 167 + const { inputParam, outputParam, ...value } = values;
161 console.log(inputParam); 168 console.log(inputParam);
162 console.log(outputParam); 169 console.log(outputParam);
163 return { 170 return {
@@ -166,6 +173,7 @@ @@ -166,6 +173,7 @@
166 ...{ outputParams }, 173 ...{ outputParams },
167 }; 174 };
168 } 175 }
  176 +
169 //清空数据 177 //清空数据
170 const resetFormData = () => { 178 const resetFormData = () => {
171 resetFields(); 179 resetFields();
@@ -179,4 +187,9 @@ @@ -179,4 +187,9 @@
179 getFormData, 187 getFormData,
180 }); 188 });
181 </script> 189 </script>
182 -<style lang="less" scoped></style> 190 +<style lang="less" scoped>
  191 + .add-style {
  192 + color: #0170cc;
  193 + cursor: pointer;
  194 + }
  195 +</style>
@@ -15,9 +15,9 @@ @@ -15,9 +15,9 @@
15 @edit="editOutParItem" 15 @edit="editOutParItem"
16 /> 16 />
17 </template> 17 </template>
18 - <div style="display: flex" class="mt-2">  
19 - <span style="color: #0170cc; cursor: pointer">+</span>  
20 - <span style="color: #0170cc; cursor: pointer" @click="handleAddOutParam">增加参数</span> 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> 21 </div>
22 </div> 22 </div>
23 </template> 23 </template>
@@ -32,9 +32,8 @@ @@ -32,9 +32,8 @@
32 import { useModal } from '/@/components/Modal'; 32 import { useModal } from '/@/components/Modal';
33 import InputParamItem from './InputParamItem.vue'; 33 import InputParamItem from './InputParamItem.vue';
34 import AddParamsModal from './AddParamsModal.vue'; 34 import AddParamsModal from './AddParamsModal.vue';
35 - import { findDictItemByCode } from '/@/api/system/dict';  
36 import { buildUUID } from '/@/utils/uuid'; 35 import { buildUUID } from '/@/utils/uuid';
37 - import { useChangeTypeGetTypeForm } from '../../hook/useTypeGetForm'; 36 + import { useChangeTypeGetTypeForm, useUpdateFormExcludeStruct } from '../../hook/useTypeGetForm';
38 37
39 defineEmits(['register']); 38 defineEmits(['register']);
40 const outputParamData: any = ref([]); 39 const outputParamData: any = ref([]);
@@ -53,6 +52,7 @@ @@ -53,6 +52,7 @@
53 submitOnReset: false, 52 submitOnReset: false,
54 showActionButtonGroup: false, 53 showActionButtonGroup: false,
55 }); 54 });
  55 +
56 const getData = (d, f) => { 56 const getData = (d, f) => {
57 if (f == 'output') { 57 if (f == 'output') {
58 if (d.id !== null) { 58 if (d.id !== null) {
@@ -75,6 +75,7 @@ @@ -75,6 +75,7 @@
75 const deleteOutParItem = (index) => { 75 const deleteOutParItem = (index) => {
76 unref(outputParamData).splice(index, 1); 76 unref(outputParamData).splice(index, 1);
77 }; 77 };
  78 +
78 const editOutParItem = (item) => { 79 const editOutParItem = (item) => {
79 openModal(true, { 80 openModal(true, {
80 isUpdate: false, 81 isUpdate: false,
@@ -84,37 +85,11 @@ @@ -84,37 +85,11 @@
84 }); 85 });
85 }; 86 };
86 87
87 - const updateFormExcludeStruct = async (flag) => {  
88 - const res: any = await findDictItemByCode({ dictCode: 'data_type' });  
89 - const optionTrue = res  
90 - .map((m) => {  
91 - if (flag) {  
92 - if (m.itemValue !== 'STRUCT') {  
93 - return {  
94 - value: m.itemValue,  
95 - label: m.itemText,  
96 - };  
97 - }  
98 - } else {  
99 - return {  
100 - value: m.itemValue,  
101 - label: m.itemText,  
102 - };  
103 - }  
104 - })  
105 - .filter(Boolean);  
106 - updateSchema({  
107 - field: 'dataType',  
108 - componentProps: {  
109 - options: optionTrue,  
110 - },  
111 - });  
112 - }; 88 + const updateFormExcludeStruct = (flag) => useUpdateFormExcludeStruct(flag, updateSchema);
  89 +
  90 + const getOutputStructList = () =>
  91 + unref(dynamicBindRef.outputParamItemRef)?.map((item: any) => item.getFormData());
113 92
114 - const getOutputStructList = () => {  
115 - const val = unref(dynamicBindRef.outputParamItemRef)?.map((item: any) => item.getFormData());  
116 - return val;  
117 - };  
118 const getBoolOrStruct = (T, S, B) => { 93 const getBoolOrStruct = (T, S, B) => {
119 if (T === 'STRUCT') { 94 if (T === 'STRUCT') {
120 return S; 95 return S;
@@ -124,6 +99,7 @@ @@ -124,6 +99,7 @@
124 return B; 99 return B;
125 } 100 }
126 }; 101 };
  102 +
127 const getIntOrText = (T, D) => { 103 const getIntOrText = (T, D) => {
128 if (T === 'STRUCT') { 104 if (T === 'STRUCT') {
129 return null; 105 return null;
@@ -131,41 +107,46 @@ @@ -131,41 +107,46 @@
131 return D; 107 return D;
132 } 108 }
133 }; 109 };
  110 +
134 const getFormData = async () => { 111 const getFormData = async () => {
135 const values = await validate(); 112 const values = await validate();
136 if (!values) return; 113 if (!values) return;
137 const outputParams = getOutputStructList(); 114 const outputParams = getOutputStructList();
138 outputParams.forEach((f) => { 115 outputParams.forEach((f) => {
139 f.dataType = 'STRUCT'; 116 f.dataType = 'STRUCT';
  117 + f.childDataType = values.dataType;
  118 + f.childName = values.name;
140 }); 119 });
141 - const childSpecsDTO = useChangeTypeGetTypeForm(values.dataType, values);  
142 - const dataSpecs = childSpecsDTO;  
143 - const childEnumSpecsDTO = useChangeTypeGetTypeForm(values.dataType, values);  
144 - const dataSpecsList = childEnumSpecsDTO; 120 + const dataSpecs = useChangeTypeGetTypeForm(values.dataType, values);
  121 + const dataSpecsList = useChangeTypeGetTypeForm(values.dataType, values);
145 const { boolClose, boolOpen, step, unit, valueRange, ...value } = values; 122 const { boolClose, boolOpen, step, unit, valueRange, ...value } = values;
146 - console.log(boolClose);  
147 - console.log(boolOpen);  
148 - console.log(step);  
149 - console.log(unit);  
150 - console.log(valueRange); 123 + const none = {
  124 + ...boolClose,
  125 + ...boolOpen,
  126 + ...step,
  127 + ...unit,
  128 + ...valueRange,
  129 + };
  130 + console.log(none);
151 return { 131 return {
152 ...value, 132 ...value,
153 ...{ 133 ...{
154 dataSpecs: getIntOrText(values.dataType, dataSpecs), 134 dataSpecs: getIntOrText(values.dataType, dataSpecs),
155 }, 135 },
156 - ...{  
157 - childSpecsDTO: getIntOrText(values.dataType, childSpecsDTO),  
158 - }, 136 + // ...{
  137 + // childSpecsDTO: getIntOrText(values.dataType, dataSpecs),
  138 + // },
159 ...{ 139 ...{
160 dataSpecsList: getBoolOrStruct(values.dataType, outputParams, dataSpecsList), 140 dataSpecsList: getBoolOrStruct(values.dataType, outputParams, dataSpecsList),
161 }, 141 },
162 - ...{ childEnumSpecsDTO: getBoolOrStruct(values.dataType, outputParams, childEnumSpecsDTO) },  
163 - ...{  
164 - childDataType: values.dataType,  
165 - childName: values.name,  
166 - }, 142 + // ...{ childEnumSpecsDTO: getBoolOrStruct(values.dataType, outputParams, dataSpecsList) },
  143 + // ...{
  144 + // childDataType: values.dataType,
  145 + // childName: values.name,
  146 + // },
167 }; 147 };
168 }; 148 };
  149 +
169 const setFormData = (v) => { 150 const setFormData = (v) => {
170 setFieldsValue(v); 151 setFieldsValue(v);
171 setFieldsValue({ 152 setFieldsValue({
@@ -197,6 +178,7 @@ @@ -197,6 +178,7 @@
197 console.log(e); 178 console.log(e);
198 } 179 }
199 }; 180 };
  181 +
200 const resetFormData = () => { 182 const resetFormData = () => {
201 resetFields(); 183 resetFields();
202 outputParamData.value = []; 184 outputParamData.value = [];
@@ -210,4 +192,9 @@ @@ -210,4 +192,9 @@
210 }); 192 });
211 </script> 193 </script>
212 194
213 -<style lang="less" scope></style> 195 +<style lang="less" scope>
  196 + .add-style {
  197 + color: #0170cc;
  198 + cursor: pointer;
  199 + }
  200 +</style>
@@ -51,6 +51,7 @@ @@ -51,6 +51,7 @@
51 closeModal(); 51 closeModal();
52 } 52 }
53 }; 53 };
  54 +
54 const handleSubmit = async () => { 55 const handleSubmit = async () => {
55 const value = await AddParamFormRef.value?.getFormData(); 56 const value = await AddParamFormRef.value?.getFormData();
56 if (!value) return; 57 if (!value) return;
@@ -68,7 +69,5 @@ @@ -68,7 +69,5 @@
68 ); 69 );
69 handleCancel(true); 70 handleCancel(true);
70 }; 71 };
71 - defineExpose({});  
72 </script> 72 </script>
73 -  
74 <style lang="less" scope></style> 73 <style lang="less" scope></style>
@@ -30,9 +30,11 @@ @@ -30,9 +30,11 @@
30 default: () => {}, 30 default: () => {},
31 }, 31 },
32 }); 32 });
  33 +
33 const handleDelete = (index) => { 34 const handleDelete = (index) => {
34 emit('delete', index); 35 emit('delete', index);
35 }; 36 };
  37 +
36 const handleEdit = (item, index) => { 38 const handleEdit = (item, index) => {
37 const value = { 39 const value = {
38 ...item, 40 ...item,
@@ -44,6 +46,7 @@ @@ -44,6 +46,7 @@
44 const getFormData = () => { 46 const getFormData = () => {
45 return props.item; 47 return props.item;
46 }; 48 };
  49 +
47 defineExpose({ 50 defineExpose({
48 getFormData, 51 getFormData,
49 }); 52 });
@@ -146,6 +146,68 @@ export const mockData = { @@ -146,6 +146,68 @@ export const mockData = {
146 ], 146 ],
147 productKey: 'hsrnXEfGFDv', 147 productKey: 'hsrnXEfGFDv',
148 properties: [ 148 properties: [
  149 + // {
  150 + // createTs: 1667876342551,
  151 + // custom: true,
  152 + // customFlag: true,
  153 + // dataSpecs: {
  154 + // dataType: 'TEXT',
  155 + // length: 10240,
  156 + // },
  157 + // dataType: 'TEXT',
  158 + // description: '内容推荐',
  159 + // identifier: 'Brightness',
  160 + // name: '亮度百分比',
  161 + // productKey: 'hsrnXEfGFDv',
  162 + // required: false,
  163 + // rwFlag: 'READ_WRITE',
  164 + // std: false,
  165 + // },
  166 + // {
  167 + // createTs: 1667876342551,
  168 + // custom: true,
  169 + // customFlag: 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: 'BOOL',
  183 + // description: '内容推荐',
  184 + // identifier: 'Brightness',
  185 + // name: '亮度百分比',
  186 + // productKey: 'hsrnXEfGFDv',
  187 + // required: false,
  188 + // rwFlag: 'READ_WRITE',
  189 + // std: false,
  190 + // },
  191 + // {
  192 + // createTs: 1667876342551,
  193 + // custom: true,
  194 + // customFlag: true,
  195 + // dataSpecs: {
  196 + // dataType: 'INT',
  197 + // max: '1024',
  198 + // min: '-1024',
  199 + // step: '1',
  200 + // unit: 'var',
  201 + // },
  202 + // dataType: 'INT',
  203 + // description: '内容推荐。0:未知状态,1:熄屏,2:亮屏',
  204 + // identifier: 'RunningState',
  205 + // name: '运行状态',
  206 + // productKey: 'hsrnXEfGFDv',
  207 + // required: false,
  208 + // rwFlag: 'READ_WRITE',
  209 + // std: false,
  210 + // },
149 { 211 {
150 createTs: 1666604372638, 212 createTs: 1666604372638,
151 custom: true, 213 custom: true,
@@ -272,14 +334,13 @@ export const mockData = { @@ -272,14 +334,13 @@ export const mockData = {
272 ], 334 ],
273 services: [ 335 services: [
274 { 336 {
275 - callType: 'SYNC',  
276 - createTs: 1666603858325, 337 + callType: 'ASYNC',
  338 + createTs: 1667963835032,
277 custom: true, 339 custom: true,
278 - description: '更新模型',  
279 - identifier: 'UpdateModel', 340 + description: '配置模型',
  341 + identifier: 'ConfigModel',
280 inputParams: [ 342 inputParams: [
281 { 343 {
282 - id: buildUUID(),  
283 custom: true, 344 custom: true,
284 dataSpecs: { 345 dataSpecs: {
285 dataType: 'TEXT', 346 dataType: 'TEXT',
@@ -287,314 +348,479 @@ export const mockData = { @@ -287,314 +348,479 @@ export const mockData = {
287 }, 348 },
288 dataType: 'TEXT', 349 dataType: 'TEXT',
289 direction: 'PARAM_INPUT', 350 direction: 'PARAM_INPUT',
290 - identifier: 'UpdateTaskID',  
291 - name: '更新任务ID', 351 + identifier: 'AlgorithmID',
  352 + name: '算法任务-人脸识别',
292 paraOrder: 0, 353 paraOrder: 0,
293 }, 354 },
294 { 355 {
295 - id: buildUUID(),  
296 custom: true, 356 custom: true,
297 dataSpecs: { 357 dataSpecs: {
298 - dataType: 'TEXT',  
299 - length: 128, 358 + dataType: 'DOUBLE',
  359 + max: '22',
  360 + min: '11',
  361 + step: '3',
  362 + unit: 'mm/hour',
  363 + unitName: '降雨量',
300 }, 364 },
301 - dataType: 'TEXT', 365 + dataType: 'DOUBLE',
302 direction: 'PARAM_INPUT', 366 direction: 'PARAM_INPUT',
303 - identifier: 'AlgorithmID',  
304 - name: '算法任务唯一标识', 367 + identifier: 'Threshold',
  368 + name: '结果置信度阈值',
305 paraOrder: 1, 369 paraOrder: 1,
306 }, 370 },
307 { 371 {
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, 372 custom: true,
325 dataSpecs: { 373 dataSpecs: {
326 dataType: 'INT', 374 dataType: 'INT',
327 - max: '128',  
328 - min: '0',  
329 - precise: 0, 375 + max: '1024',
  376 + min: '-1024',
330 step: '1', 377 step: '1',
331 - unit: '',  
332 - unitName: '无', 378 + unit: 'W/㎡',
  379 + unitName: '太阳总辐射',
333 }, 380 },
334 dataType: 'INT', 381 dataType: 'INT',
335 direction: 'PARAM_INPUT', 382 direction: 'PARAM_INPUT',
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, 383 + identifier: 'Switch',
  384 + name: '功能开关',
  385 + paraOrder: 2,
451 }, 386 },
452 { 387 {
453 - id: buildUUID(),  
454 -  
455 custom: true, 388 custom: true,
456 - dataSpecs: {  
457 - dataType: 'TEXT',  
458 - length: 2048,  
459 - },  
460 - dataType: 'TEXT', 389 + dataSpecsList: [
  390 + {
  391 + dataType: 'BOOL',
  392 + name: '关',
  393 + value: 0,
  394 + },
  395 + {
  396 + dataType: 'BOOL',
  397 + name: '开',
  398 + value: 1,
  399 + },
  400 + ],
  401 + dataType: 'BOOL',
461 direction: 'PARAM_INPUT', 402 direction: 'PARAM_INPUT',
462 - identifier: 'ModelExtension',  
463 - name: '扩展信息',  
464 - paraOrder: 13, 403 + identifier: 'NumThreads',
  404 + name: '使用线程数',
  405 + paraOrder: 3,
465 }, 406 },
466 { 407 {
467 - id: buildUUID(),  
468 -  
469 custom: true, 408 custom: true,
470 dataSpecsList: [ 409 dataSpecsList: [
471 { 410 {
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', 411 childDataType: 'BOOL',
494 childEnumSpecsDTO: [ 412 childEnumSpecsDTO: [
495 { 413 {
496 dataType: 'BOOL', 414 dataType: 'BOOL',
497 - name: '1', 415 + name: '1',
498 value: 0, 416 value: 0,
499 }, 417 },
500 { 418 {
501 dataType: 'BOOL', 419 dataType: 'BOOL',
502 - name: '0', 420 + name: '开1',
503 value: 1, 421 value: 1,
504 }, 422 },
505 ], 423 ],
506 - childName: '模型结构体参数2', 424 + childName: '结构体里面1',
507 custom: true, 425 custom: true,
508 dataSpecsList: [ 426 dataSpecsList: [
509 { 427 {
510 - id: buildUUID(),  
511 -  
512 dataType: 'BOOL', 428 dataType: 'BOOL',
513 - name: '1', 429 + name: '1',
514 value: 0, 430 value: 0,
515 }, 431 },
516 { 432 {
517 - id: buildUUID(),  
518 -  
519 dataType: 'BOOL', 433 dataType: 'BOOL',
520 - name: '0', 434 + name: '开1',
521 value: 1, 435 value: 1,
522 }, 436 },
523 ], 437 ],
524 dataType: 'STRUCT', 438 dataType: 'STRUCT',
525 - identifier: 'ModelParams2', 439 + identifier: 's11',
526 isStd: 0, 440 isStd: 0,
527 - name: '模型结构体参数2', 441 + name: '结构体里面1',
528 }, 442 },
529 - ],  
530 - dataType: 'STRUCT',  
531 - direction: 'PARAM_INPUT',  
532 - identifier: 'ModelStruct',  
533 - name: '模型结构体',  
534 - paraOrder: 3,  
535 - },  
536 - ],  
537 - outputParams: [  
538 - {  
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 { 443 {
558 - id: buildUUID(),  
559 -  
560 - dataType: 'BOOL',  
561 - name: '1',  
562 - value: 0, 444 + childDataType: 'TEXT',
  445 + childName: '结构体里面2',
  446 + childSpecsDTO: {
  447 + dataType: 'TEXT',
  448 + length: 10240,
  449 + },
  450 + custom: true,
  451 + dataSpecs: {
  452 + dataType: 'TEXT',
  453 + length: 10240,
  454 + },
  455 + dataType: 'STRUCT',
  456 + identifier: 's2',
  457 + isStd: 0,
  458 + name: '结构体里面2',
563 }, 459 },
564 { 460 {
565 - id: buildUUID(),  
566 - dataType: 'BOOL',  
567 - name: '0',  
568 - value: 1, 461 + childDataType: 'DOUBLE',
  462 + childName: '结构体里面3',
  463 + childSpecsDTO: {
  464 + dataType: 'DOUBLE',
  465 + max: '22',
  466 + min: '11',
  467 + step: '3',
  468 + unit: 'mm/s',
  469 + unitName: '毫米每秒',
  470 + },
  471 + custom: true,
  472 + dataSpecs: {
  473 + dataType: 'DOUBLE',
  474 + max: '22',
  475 + min: '11',
  476 + step: '3',
  477 + unit: 'mm/s',
  478 + unitName: '毫米每秒',
  479 + },
  480 + dataType: 'STRUCT',
  481 + identifier: 's3',
  482 + isStd: 0,
  483 + name: '结构体里面3',
569 }, 484 },
570 ], 485 ],
571 - dataType: 'BOOL',  
572 - direction: 'PARAM_OUTPUT',  
573 - identifier: 'Flask',  
574 - name: 'flask',  
575 - paraOrder: 1,  
576 - },  
577 - {  
578 - id: buildUUID(),  
579 - custom: true,  
580 - dataSpecs: {  
581 - dataType: 'INT',  
582 - max: '22',  
583 - min: '11',  
584 - step: '3',  
585 - unit: '只',  
586 - unitName: '只',  
587 - },  
588 - dataType: 'INT',  
589 - direction: 'PARAM_OUTPUT',  
590 - identifier: 'Tornado',  
591 - name: 'tornado',  
592 - paraOrder: 2, 486 + dataType: 'STRUCT',
  487 + direction: 'PARAM_INPUT',
  488 + identifier: 's1',
  489 + name: '结构体1',
  490 + paraOrder: 4,
593 }, 491 },
594 ], 492 ],
  493 + outputParams: [],
595 productKey: 'hsrnXEfGFDv', 494 productKey: 'hsrnXEfGFDv',
596 required: false, 495 required: false,
597 - serviceName: '更新模型', 496 + serviceName: '配置模型',
598 }, 497 },
599 ], 498 ],
  499 + // services: [
  500 + // {
  501 + // callType: 'SYNC',
  502 + // createTs: 1666603858325,
  503 + // custom: true,
  504 + // description: '更新模型',
  505 + // identifier: 'UpdateModel',
  506 + // inputParams: [
  507 + // {
  508 + // id: buildUUID(),
  509 + // custom: true,
  510 + // dataSpecs: {
  511 + // dataType: 'TEXT',
  512 + // length: 128,
  513 + // },
  514 + // dataType: 'TEXT',
  515 + // direction: 'PARAM_INPUT',
  516 + // identifier: 'UpdateTaskID',
  517 + // name: '更新任务ID',
  518 + // paraOrder: 0,
  519 + // },
  520 + // {
  521 + // id: buildUUID(),
  522 + // custom: true,
  523 + // dataSpecs: {
  524 + // dataType: 'TEXT',
  525 + // length: 128,
  526 + // },
  527 + // dataType: 'TEXT',
  528 + // direction: 'PARAM_INPUT',
  529 + // identifier: 'AlgorithmID',
  530 + // name: '算法任务唯一标识',
  531 + // paraOrder: 1,
  532 + // },
  533 + // {
  534 + // id: buildUUID(),
  535 +
  536 + // custom: true,
  537 + // dataSpecs: {
  538 + // dataType: 'TEXT',
  539 + // length: 64,
  540 + // },
  541 + // dataType: 'TEXT',
  542 + // direction: 'PARAM_INPUT',
  543 + // identifier: 'AlgorithmName',
  544 + // name: '算法名称',
  545 + // paraOrder: 2,
  546 + // },
  547 + // {
  548 + // id: buildUUID(),
  549 +
  550 + // custom: true,
  551 + // dataSpecs: {
  552 + // dataType: 'INT',
  553 + // max: '128',
  554 + // min: '0',
  555 + // precise: 0,
  556 + // step: '1',
  557 + // unit: '',
  558 + // unitName: '无',
  559 + // },
  560 + // dataType: 'INT',
  561 + // direction: 'PARAM_INPUT',
  562 + // identifier: 'NumThreads',
  563 + // name: '使用线程数',
  564 + // paraOrder: 4,
  565 + // },
  566 + // {
  567 + // id: buildUUID(),
  568 +
  569 + // custom: true,
  570 + // dataSpecs: {
  571 + // dataType: 'TEXT',
  572 + // length: 128,
  573 + // },
  574 + // dataType: 'TEXT',
  575 + // direction: 'PARAM_INPUT',
  576 + // identifier: 'ModelID',
  577 + // name: '模型唯一标识',
  578 + // paraOrder: 5,
  579 + // },
  580 + // {
  581 + // id: buildUUID(),
  582 +
  583 + // custom: true,
  584 + // dataSpecs: {
  585 + // dataType: 'TEXT',
  586 + // length: 64,
  587 + // },
  588 + // dataType: 'TEXT',
  589 + // direction: 'PARAM_INPUT',
  590 + // identifier: 'ModelName',
  591 + // name: '模型名称',
  592 + // paraOrder: 6,
  593 + // },
  594 + // {
  595 + // id: buildUUID(),
  596 +
  597 + // custom: true,
  598 + // dataSpecs: {
  599 + // dataType: 'TEXT',
  600 + // length: 64,
  601 + // },
  602 + // dataType: 'TEXT',
  603 + // direction: 'PARAM_INPUT',
  604 + // identifier: 'ModelVersion',
  605 + // name: '模型版本',
  606 + // paraOrder: 7,
  607 + // },
  608 + // {
  609 + // id: buildUUID(),
  610 +
  611 + // custom: true,
  612 + // dataSpecs: {
  613 + // dataType: 'TEXT',
  614 + // length: 1024,
  615 + // },
  616 + // dataType: 'TEXT',
  617 + // direction: 'PARAM_INPUT',
  618 + // identifier: 'ModelURL',
  619 + // name: '模型地址',
  620 + // paraOrder: 8,
  621 + // },
  622 + // {
  623 + // id: buildUUID(),
  624 +
  625 + // custom: true,
  626 + // dataSpecs: {
  627 + // dataType: 'TEXT',
  628 + // length: 128,
  629 + // },
  630 + // dataType: 'TEXT',
  631 + // direction: 'PARAM_INPUT',
  632 + // identifier: 'ModelMD5',
  633 + // name: '模型文件MD5',
  634 + // paraOrder: 9,
  635 + // },
  636 + // {
  637 + // id: buildUUID(),
  638 +
  639 + // custom: true,
  640 + // dataSpecs: {
  641 + // dataType: 'TEXT',
  642 + // length: 64,
  643 + // },
  644 + // dataType: 'TEXT',
  645 + // direction: 'PARAM_INPUT',
  646 + // identifier: 'ModelPlatform',
  647 + // name: '模型平台',
  648 + // paraOrder: 10,
  649 + // },
  650 + // {
  651 + // id: buildUUID(),
  652 +
  653 + // custom: true,
  654 + // dataSpecs: {
  655 + // dataType: 'TEXT',
  656 + // length: 128,
  657 + // },
  658 + // dataType: 'TEXT',
  659 + // direction: 'PARAM_INPUT',
  660 + // identifier: 'ModelTaskID',
  661 + // name: '模型生成任务ID',
  662 + // paraOrder: 11,
  663 + // },
  664 + // {
  665 + // id: buildUUID(),
  666 +
  667 + // custom: true,
  668 + // dataSpecs: {
  669 + // dataType: 'TEXT',
  670 + // length: 64,
  671 + // },
  672 + // dataType: 'TEXT',
  673 + // direction: 'PARAM_INPUT',
  674 + // identifier: 'ModelEncryptType',
  675 + // name: '模型加密方式',
  676 + // paraOrder: 12,
  677 + // },
  678 + // {
  679 + // id: buildUUID(),
  680 +
  681 + // custom: true,
  682 + // dataSpecs: {
  683 + // dataType: 'TEXT',
  684 + // length: 2048,
  685 + // },
  686 + // dataType: 'TEXT',
  687 + // direction: 'PARAM_INPUT',
  688 + // identifier: 'ModelExtension',
  689 + // name: '扩展信息',
  690 + // paraOrder: 13,
  691 + // },
  692 + // {
  693 + // id: buildUUID(),
  694 +
  695 + // custom: true,
  696 + // dataSpecsList: [
  697 + // {
  698 + // id: buildUUID(),
  699 +
  700 + // childDataType: 'TEXT',
  701 + // childName: '模型结构体参数1',
  702 + // childSpecsDTO: {
  703 + // dataType: 'TEXT',
  704 + // length: 10240,
  705 + // },
  706 + // custom: true,
  707 + // dataSpecs: {
  708 + // dataType: 'TEXT',
  709 + // length: 10240,
  710 + // },
  711 + // dataType: 'STRUCT',
  712 + // identifier: 'ModelParams1',
  713 + // isStd: 0,
  714 + // name: '模型结构体参数1',
  715 + // },
  716 + // {
  717 + // id: buildUUID(),
  718 +
  719 + // childDataType: 'BOOL',
  720 + // childEnumSpecsDTO: [
  721 + // {
  722 + // dataType: 'BOOL',
  723 + // name: '1',
  724 + // value: 0,
  725 + // },
  726 + // {
  727 + // dataType: 'BOOL',
  728 + // name: '0',
  729 + // value: 1,
  730 + // },
  731 + // ],
  732 + // childName: '模型结构体参数2',
  733 + // custom: true,
  734 + // dataSpecsList: [
  735 + // {
  736 + // id: buildUUID(),
  737 +
  738 + // dataType: 'BOOL',
  739 + // name: '1',
  740 + // value: 0,
  741 + // },
  742 + // {
  743 + // id: buildUUID(),
  744 +
  745 + // dataType: 'BOOL',
  746 + // name: '0',
  747 + // value: 1,
  748 + // },
  749 + // ],
  750 + // dataType: 'STRUCT',
  751 + // identifier: 'ModelParams2',
  752 + // isStd: 0,
  753 + // name: '模型结构体参数2',
  754 + // },
  755 + // ],
  756 + // dataType: 'STRUCT',
  757 + // direction: 'PARAM_INPUT',
  758 + // identifier: 'ModelStruct',
  759 + // name: '模型结构体',
  760 + // paraOrder: 3,
  761 + // },
  762 + // ],
  763 + // outputParams: [
  764 + // {
  765 + // id: buildUUID(),
  766 +
  767 + // custom: true,
  768 + // dataSpecs: {
  769 + // dataType: 'TEXT',
  770 + // length: 10240,
  771 + // },
  772 + // dataType: 'TEXT',
  773 + // direction: 'PARAM_OUTPUT',
  774 + // identifier: 'Django',
  775 + // name: 'django',
  776 + // paraOrder: 0,
  777 + // },
  778 + // {
  779 + // id: buildUUID(),
  780 +
  781 + // custom: true,
  782 + // dataSpecsList: [
  783 + // {
  784 + // id: buildUUID(),
  785 +
  786 + // dataType: 'BOOL',
  787 + // name: '1',
  788 + // value: 0,
  789 + // },
  790 + // {
  791 + // id: buildUUID(),
  792 + // dataType: 'BOOL',
  793 + // name: '0',
  794 + // value: 1,
  795 + // },
  796 + // ],
  797 + // dataType: 'BOOL',
  798 + // direction: 'PARAM_OUTPUT',
  799 + // identifier: 'Flask',
  800 + // name: 'flask',
  801 + // paraOrder: 1,
  802 + // },
  803 + // {
  804 + // id: buildUUID(),
  805 + // custom: true,
  806 + // dataSpecs: {
  807 + // dataType: 'INT',
  808 + // max: '22',
  809 + // min: '11',
  810 + // step: '3',
  811 + // unit: '只',
  812 + // unitName: '只',
  813 + // },
  814 + // dataType: 'INT',
  815 + // direction: 'PARAM_OUTPUT',
  816 + // identifier: 'Tornado',
  817 + // name: 'tornado',
  818 + // paraOrder: 2,
  819 + // },
  820 + // ],
  821 + // productKey: 'hsrnXEfGFDv',
  822 + // required: false,
  823 + // serviceName: '更新模型',
  824 + // },
  825 + // ],
600 }; 826 };
1 -// {  
2 -// "_ppk": {},  
3 -// "events": [],  
4 -// "productKey": "hsrnXEfGFDv",  
5 -// "properties": [  
6 -// {  
7 -// "createTs": 1667876342551,  
8 -// "custom": true,  
9 -// "customFlag": true,  
10 -// "dataSpecs": {  
11 -// "dataType": "INT",  
12 -// "max": "1024",  
13 -// "min": "-1024",  
14 -// "step": "1",  
15 -// "unit": ""  
16 -// },  
17 -// "dataType": "INT",  
18 -// "description": "内容推荐。0:未知状态,1:熄屏,2:亮屏",  
19 -// "identifier": "RunningState",  
20 -// "name": "运行状态",  
21 -// "productKey": "hsrnXEfGFDv",  
22 -// "required": false,  
23 -// "rwFlag": "READ_WRITE",  
24 -// "std": false  
25 -// }  
26 -// ],  
27 -// "services": []  
28 -// }  
29 -  
30 -// {  
31 -// "_ppk": {},  
32 -// "events": [],  
33 -// "productKey": "hsrnXEfGFDv",  
34 -// "properties": [  
35 -// {  
36 -// "createTs": 1667876342551,  
37 -// "custom": true,  
38 -// "customFlag": true,  
39 -// "dataSpecs": {  
40 -// "dataType": "DOUBLE",  
41 -// "max": "20",  
42 -// "min": "10",  
43 -// "step": "3",  
44 -// "unit": "var",  
45 -// "unitName": "乏"  
46 -// },  
47 -// "dataType": "DOUBLE",  
48 -// "description": "内容推荐",  
49 -// "identifier": "Brightness",  
50 -// "name": "亮度百分比",  
51 -// "productKey": "hsrnXEfGFDv",  
52 -// "required": false,  
53 -// "rwFlag": "READ_WRITE",  
54 -// "std": false  
55 -// }  
56 -// ],  
57 -// "services": []  
58 -// }  
59 -  
60 -// {  
61 -// "_ppk": {},  
62 -// "events": [],  
63 -// "productKey": "hsrnXEfGFDv",  
64 -// "properties": [  
65 -// {  
66 -// "createTs": 1667876342551,  
67 -// "custom": true,  
68 -// "customFlag": true,  
69 -// "dataSpecs": {  
70 -// "dataType": "TEXT",  
71 -// "length": 10240  
72 -// },  
73 -// "dataType": "TEXT",  
74 -// "description": "内容推荐",  
75 -// "identifier": "Brightness",  
76 -// "name": "亮度百分比",  
77 -// "productKey": "hsrnXEfGFDv",  
78 -// "required": false,  
79 -// "rwFlag": "READ_WRITE",  
80 -// "std": false  
81 -// }  
82 -// ],  
83 -// "services": []  
84 -// }  
85 -  
86 -// {  
87 -// "_ppk": {},  
88 -// "events": [],  
89 -// "productKey": "hsrnXEfGFDv",  
90 -// "properties": [  
91 -// {  
92 -// "createTs": 1667876342551,  
93 -// "custom": true,  
94 -// "customFlag": true,  
95 -// "dataSpecsList": [  
96 -// {  
97 -// "childDataType": "INT",  
98 -// "childName": "int类型",  
99 -// "childSpecsDTO": {  
100 -// "dataType": "INT",  
101 -// "max": "22",  
102 -// "min": "11",  
103 -// "step": "3",  
104 -// "unit": "mg/kg",  
105 -// "unitName": "毫克每千克"  
106 -// },  
107 -// "custom": true,  
108 -// "dataSpecs": {  
109 -// "dataType": "INT",  
110 -// "max": "22",  
111 -// "min": "11",  
112 -// "step": "3",  
113 -// "unit": "mg/kg",  
114 -// "unitName": "毫克每千克"  
115 -// },  
116 -// "dataType": "STRUCT",  
117 -// "identifier": "int",  
118 -// "isStd": 0,  
119 -// "name": "int类型"  
120 -// },  
121 -// {  
122 -// "childDataType": "BOOL",  
123 -// "childEnumSpecsDTO": [  
124 -// {  
125 -// "dataType": "BOOL",  
126 -// "name": "222",  
127 -// "value": 0  
128 -// },  
129 -// {  
130 -// "dataType": "BOOL",  
131 -// "name": "1111",  
132 -// "value": 1  
133 -// }  
134 -// ],  
135 -// "childName": "bool类型",  
136 -// "custom": true,  
137 -// "dataSpecsList": [  
138 -// {  
139 -// "dataType": "BOOL",  
140 -// "name": "222",  
141 -// "value": 0  
142 -// },  
143 -// {  
144 -// "dataType": "BOOL",  
145 -// "name": "1111",  
146 -// "value": 1  
147 -// }  
148 -// ],  
149 -// "dataType": "STRUCT",  
150 -// "identifier": "bool",  
151 -// "isStd": 0,  
152 -// "name": "bool类型"  
153 -// },  
154 -// {  
155 -// "childDataType": "TEXT",  
156 -// "childName": "text类型",  
157 -// "childSpecsDTO": {  
158 -// "dataType": "TEXT",  
159 -// "length": 10240  
160 -// },  
161 -// "custom": true,  
162 -// "dataSpecs": {  
163 -// "dataType": "TEXT",  
164 -// "length": 10240  
165 -// },  
166 -// "dataType": "STRUCT",  
167 -// "identifier": "text",  
168 -// "isStd": 0,  
169 -// "name": "text类型"  
170 -// }  
171 -// ],  
172 -// "dataType": "STRUCT",  
173 -// "description": "内容推荐",  
174 -// "identifier": "Brightness",  
175 -// "name": "亮度百分比",  
176 -// "productKey": "hsrnXEfGFDv",  
177 -// "required": false,  
178 -// "rwFlag": "READ_WRITE",  
179 -// "std": false  
180 -// }  
181 -// ],  
182 -// "services": []  
183 -// }  
184 -  
185 -  
186 -{  
187 - "_ppk": {},  
188 - "events": [],  
189 - "productKey": "hsrnXEfGFDv",  
190 - "properties": [  
191 - {  
192 - "createTs": 1667876342551,  
193 - "custom": true,  
194 - "customFlag": true,  
195 - "dataSpecsList": [  
196 - {  
197 - "childDataType": "INT",  
198 - "childName": "int类型",  
199 - "childSpecsDTO": {  
200 - "dataType": "INT",  
201 - "max": "22",  
202 - "min": "11",  
203 - "step": "3",  
204 - "unit": "mg/kg",  
205 - "unitName": "毫克每千克"  
206 - },  
207 - "custom": true,  
208 - "dataSpecs": {  
209 - "dataType": "INT",  
210 - "max": "22",  
211 - "min": "11",  
212 - "step": "3",  
213 - "unit": "mg/kg",  
214 - "unitName": "毫克每千克"  
215 - },  
216 - "dataType": "STRUCT",  
217 - "identifier": "int",  
218 - "isStd": 0,  
219 - "name": "int类型"  
220 - },  
221 - {  
222 - "childDataType": "BOOL",  
223 - "childEnumSpecsDTO": [  
224 - {  
225 - "dataType": "BOOL",  
226 - "name": "222",  
227 - "value": 0  
228 - },  
229 - {  
230 - "dataType": "BOOL",  
231 - "name": "1111",  
232 - "value": 1  
233 - }  
234 - ],  
235 - "childName": "bool类型",  
236 - "custom": true,  
237 - "dataSpecsList": [  
238 - {  
239 - "dataType": "BOOL",  
240 - "name": "222",  
241 - "value": 0  
242 - },  
243 - {  
244 - "dataType": "BOOL",  
245 - "name": "1111",  
246 - "value": 1  
247 - }  
248 - ],  
249 - "dataType": "STRUCT",  
250 - "identifier": "bool",  
251 - "isStd": 0,  
252 - "name": "bool类型"  
253 - },  
254 - {  
255 - "childDataType": "TEXT",  
256 - "childName": "text类型",  
257 - "childSpecsDTO": {  
258 - "dataType": "TEXT",  
259 - "length": 10240  
260 - },  
261 - "custom": true,  
262 - "dataSpecs": {  
263 - "dataType": "TEXT",  
264 - "length": 10240  
265 - },  
266 - "dataType": "STRUCT",  
267 - "identifier": "text",  
268 - "isStd": 0,  
269 - "name": "text类型"  
270 - }  
271 - ],  
272 - "dataType": "STRUCT",  
273 - "description": "内容推荐",  
274 - "identifier": "Brightness",  
275 - "name": "亮度百分比",  
276 - "productKey": "hsrnXEfGFDv",  
277 - "required": false,  
278 - "rwFlag": "READ_WRITE",  
279 - "std": false  
280 - }  
281 - ],  
282 - "services": [  
283 - {  
284 - "callType": "SYNC",  
285 - "createTs": 1667901147172,  
286 - "custom": true,  
287 - "identifier": "DeleteModel",  
288 - "inputParams": [  
289 - {  
290 - "custom": true,  
291 - "dataSpecsList": [  
292 - {  
293 - "childDataType": "INT",  
294 - "childName": "a",  
295 - "childSpecsDTO": {  
296 - "dataType": "INT",  
297 - "max": "22",  
298 - "min": "11",  
299 - "step": "3",  
300 - "unit": "W/㎡",  
301 - "unitName": "太阳总辐射"  
302 - },  
303 - "custom": true,  
304 - "dataSpecs": {  
305 - "dataType": "INT",  
306 - "max": "22",  
307 - "min": "11",  
308 - "step": "3",  
309 - "unit": "W/㎡",  
310 - "unitName": "太阳总辐射"  
311 - },  
312 - "dataType": "STRUCT",  
313 - "identifier": "a",  
314 - "isStd": 0,  
315 - "name": "a"  
316 - },  
317 - {  
318 - "childDataType": "BOOL",  
319 - "childEnumSpecsDTO": [  
320 - {  
321 - "dataType": "BOOL",  
322 - "name": "2",  
323 - "value": 0  
324 - },  
325 - {  
326 - "dataType": "BOOL",  
327 - "name": "3",  
328 - "value": 1  
329 - }  
330 - ],  
331 - "childName": "b",  
332 - "custom": true,  
333 - "dataSpecsList": [  
334 - {  
335 - "dataType": "BOOL",  
336 - "name": "2",  
337 - "value": 0  
338 - },  
339 - {  
340 - "dataType": "BOOL",  
341 - "name": "3",  
342 - "value": 1  
343 - }  
344 - ],  
345 - "dataType": "STRUCT",  
346 - "identifier": "b",  
347 - "isStd": 0,  
348 - "name": "b"  
349 - }  
350 - ],  
351 - "dataType": "STRUCT",  
352 - "direction": "PARAM_INPUT",  
353 - "identifier": "AlgorithmID",  
354 - "name": "算法任务唯一标识",  
355 - "paraOrder": 0  
356 - }  
357 - ],  
358 - "outputParams": [],  
359 - "productKey": "hsrnXEfGFDv",  
360 - "required": false,  
361 - "serviceName": "删除模型"  
362 - }  
363 - ]  
364 -}  
1 import { validateValueBool, validateValueRangeAndStep } from './useValidateParital'; 1 import { validateValueBool, validateValueRangeAndStep } from './useValidateParital';
  2 +import { findDictItemByCode } from '/@/api/system/dict';
2 3
3 ///根据不同数据类型得到不同表单数据 4 ///根据不同数据类型得到不同表单数据
4 type TForm = { 5 type TForm = {
@@ -49,13 +50,13 @@ export const useChangeTypeGetTypeForm = (type, options: TForm) => { @@ -49,13 +50,13 @@ export const useChangeTypeGetTypeForm = (type, options: TForm) => {
49 return [ 50 return [
50 { 51 {
51 dataType: options?.dataType, 52 dataType: options?.dataType,
52 - name: '0',  
53 - value: options?.boolClose, 53 + name: options?.boolClose,
  54 + value: '0',
54 }, 55 },
55 { 56 {
56 dataType: options?.dataType, 57 dataType: options?.dataType,
57 - name: '1',  
58 - value: options?.boolOpen, 58 + name: options?.boolOpen,
  59 + value: '1',
59 }, 60 },
60 ]; 61 ];
61 case 'TEXT': 62 case 'TEXT':
@@ -65,3 +66,31 @@ export const useChangeTypeGetTypeForm = (type, options: TForm) => { @@ -65,3 +66,31 @@ export const useChangeTypeGetTypeForm = (type, options: TForm) => {
65 }; 66 };
66 } 67 }
67 }; 68 };
  69 +
  70 +//是否排除结构体
  71 +export const useUpdateFormExcludeStruct = async (F, U) => {
  72 + const res: any = await findDictItemByCode({ dictCode: 'data_type' });
  73 + const optionTrue = res
  74 + .map((m) => {
  75 + if (F) {
  76 + if (m.itemValue !== 'STRUCT') {
  77 + return {
  78 + value: m.itemValue,
  79 + label: m.itemText,
  80 + };
  81 + }
  82 + } else {
  83 + return {
  84 + value: m.itemValue,
  85 + label: m.itemText,
  86 + };
  87 + }
  88 + })
  89 + .filter(Boolean);
  90 + U({
  91 + field: 'dataType',
  92 + componentProps: {
  93 + options: optionTrue,
  94 + },
  95 + });
  96 +};
@@ -142,6 +142,7 @@ @@ -142,6 +142,7 @@
142 }; 142 };
143 updateOrCreateTenant(req) 143 updateOrCreateTenant(req)
144 .then((res) => { 144 .then((res) => {
  145 + console.log(res);
145 closeDrawer(); //关闭侧框 146 closeDrawer(); //关闭侧框
146 emit('success'); 147 emit('success');
147 setTimeout(() => { 148 setTimeout(() => {
@@ -159,9 +160,11 @@ @@ -159,9 +160,11 @@
159 }); 160 });
160 } catch (e) { 161 } catch (e) {
161 } finally { 162 } finally {
  163 + setTimeout(() => {
  164 + setDrawerProps({ confirmLoading: false });
  165 + }, 300);
162 } 166 }
163 } 167 }
164 -  
165 return { 168 return {
166 registerDrawer, 169 registerDrawer,
167 tenantForm, 170 tenantForm,