Commit 0de4e209d935ec18f9a3dc2dab63dc52508c97d9

Authored by xp.Huang
2 parents 5e7bad23 6e3285a0

Merge branch 'ft' into 'main_dev'

feat: 新增自定义过滤器编写和优化公共接口管理部分代码

See merge request yunteng/thingskit-front!604
@@ -96,7 +96,7 @@ @@ -96,7 +96,7 @@
96 await nextTick(); 96 await nextTick();
97 const jsCode = aceEditor.value.getValue(); 97 const jsCode = aceEditor.value.getValue();
98 const res = getRestData.value ?? props.restData; 98 const res = getRestData.value ?? props.restData;
99 - const fn = new Function('data', 'res', jsCode)(res?.data, res); 99 + const fn = new Function('res', jsCode)(res);
100 emits('changeAceContent', fn); 100 emits('changeAceContent', fn);
101 } catch (error) { 101 } catch (error) {
102 return `过滤函数错误,日志:${error}`; 102 return `过滤函数错误,日志:${error}`;
@@ -115,7 +115,8 @@ @@ -115,7 +115,8 @@
115 return aceEditor?.value?.getValue(); 115 return aceEditor?.value?.getValue();
116 }; 116 };
117 117
118 - const setValue = (data) => { 118 + const setValue = async (data) => {
  119 + await nextTick();
119 return aceEditor?.value?.setValue(data); 120 return aceEditor?.value?.setValue(data);
120 }; 121 };
121 122
@@ -94,6 +94,9 @@ @@ -94,6 +94,9 @@
94 interfaceType: { 94 interfaceType: {
95 type: String, 95 type: String,
96 }, 96 },
  97 + filterValue: {
  98 + type: String,
  99 + },
97 }); 100 });
98 101
99 const emits = defineEmits(['activeKey']); 102 const emits = defineEmits(['activeKey']);
@@ -142,7 +145,6 @@ @@ -142,7 +145,6 @@
142 145
143 const onCloseTest = () => excuteTestRef.value?.resetValue(true); 146 const onCloseTest = () => excuteTestRef.value?.resetValue(true);
144 147
145 - //if-else-if-else分支优化  
146 const dataForTypeMap = [ 148 const dataForTypeMap = [
147 [(type) => type === 'Params', (data) => paramsCellTableRef.value?.setValue(data)], 149 [(type) => type === 'Params', (data) => paramsCellTableRef.value?.setValue(data)],
148 [(type) => type === 'Body', (data) => bodyRef.value?.setValue(data)], 150 [(type) => type === 'Body', (data) => bodyRef.value?.setValue(data)],
@@ -191,9 +193,14 @@ @@ -191,9 +193,14 @@
191 }; 193 };
192 }; 194 };
193 195
194 - const handleTestParamsInterface = () => { 196 + const commonExcuteRef = () => {
195 excuteTestRef.value?.showTest(); 197 excuteTestRef.value?.showTest();
196 excuteTestRef.value?.resetValue(false); 198 excuteTestRef.value?.resetValue(false);
  199 + excuteTestRef.value?.editSetFilterValue(props.filterValue);
  200 + };
  201 +
  202 + const handleTestParamsInterface = () => {
  203 + commonExcuteRef();
197 let value = getValue(false) as any; 204 let value = getValue(false) as any;
198 dataMap.mapParamsObj = { 205 dataMap.mapParamsObj = {
199 list: value?.Params, 206 list: value?.Params,
@@ -204,8 +211,7 @@ @@ -204,8 +211,7 @@
204 const handleTestBodyInterface = () => { 211 const handleTestBodyInterface = () => {
205 let value = getValue(false) as any; 212 let value = getValue(false) as any;
206 const type = value?.Body?.requestParamsBodyType; 213 const type = value?.Body?.requestParamsBodyType;
207 - excuteTestRef.value?.showTest();  
208 - excuteTestRef.value?.resetValue(false); 214 + commonExcuteRef();
209 let values = []; 215 let values = [];
210 for (let i in value?.Body) if (i === type) values = value?.Body[i]; 216 for (let i in value?.Body) if (i === type) values = value?.Body[i];
211 dataMap.mapBodyObj = { 217 dataMap.mapBodyObj = {
@@ -216,8 +222,7 @@ @@ -216,8 +222,7 @@
216 }; 222 };
217 223
218 const handleTestHeaderInterface = () => { 224 const handleTestHeaderInterface = () => {
219 - excuteTestRef.value?.showTest();  
220 - excuteTestRef.value?.resetValue(false); 225 + commonExcuteRef();
221 let value = getValue(false) as any; 226 let value = getValue(false) as any;
222 dataMap.mapHeaderObj = { 227 dataMap.mapHeaderObj = {
223 list: value?.Header, 228 list: value?.Header,
@@ -22,7 +22,7 @@ @@ -22,7 +22,7 @@
22 method === RequestMethodTypeEnum.WEBSOCKET 22 method === RequestMethodTypeEnum.WEBSOCKET
23 ? 11 23 ? 11
24 : httpType === RequestHttpTypeEnum.POST 24 : httpType === RequestHttpTypeEnum.POST
25 - ? 4 25 + ? 6
26 : 6 26 : 6
27 " 27 "
28 > 28 >
@@ -41,7 +41,7 @@ @@ -41,7 +41,7 @@
41 method === RequestMethodTypeEnum.WEBSOCKET 41 method === RequestMethodTypeEnum.WEBSOCKET
42 ? 12 42 ? 12
43 : httpType === RequestHttpTypeEnum.POST 43 : httpType === RequestHttpTypeEnum.POST
44 - ? 19 44 + ? 17
45 : 17 45 : 17
46 " 46 "
47 style="position: relative" 47 style="position: relative"
@@ -50,7 +50,7 @@ @@ -50,7 +50,7 @@
50 (method === RequestMethodTypeEnum.WEBSOCKET 50 (method === RequestMethodTypeEnum.WEBSOCKET
51 ? 1.5 51 ? 1.5
52 : httpType === RequestHttpTypeEnum.POST 52 : httpType === RequestHttpTypeEnum.POST
53 - ? -1.5 53 + ? -0.25
54 : 0) + 'vw', 54 : 0) + 'vw',
55 }" 55 }"
56 > 56 >
@@ -236,9 +236,9 @@ @@ -236,9 +236,9 @@
236 send(JSON.stringify(socketMessage.sendValue)); 236 send(JSON.stringify(socketMessage.sendValue));
237 }, 237 },
238 onMessage(_, e) { 238 onMessage(_, e) {
239 - const { data } = JSON.parse(e.data);  
240 - getRestData.value = data;  
241 - commonRest(data, jsonEditorRef.value?.setJsonValue); 239 + const rest = JSON.parse(e.data);
  240 + getRestData.value = rest;
  241 + commonRest(rest, jsonEditorRef.value?.setJsonValue);
242 }, 242 },
243 onDisconnected() { 243 onDisconnected() {
244 close(); 244 close();
@@ -308,10 +308,17 @@ @@ -308,10 +308,17 @@
308 return aceTypeIsJsEditorRef?.value?.getValue(); 308 return aceTypeIsJsEditorRef?.value?.getValue();
309 }; 309 };
310 310
  311 + //编辑回显过滤器函数的内容
  312 + const editSetFilterValue = async (filterValue) => {
  313 + await nextTick();
  314 + aceTypeIsJsEditorRef?.value?.setValue(filterValue);
  315 + };
  316 +
311 defineExpose({ 317 defineExpose({
312 resetValue, 318 resetValue,
313 showTest, 319 showTest,
314 getFilterValue, 320 getFilterValue,
  321 + editSetFilterValue,
315 }); 322 });
316 </script> 323 </script>
317 324
@@ -25,6 +25,7 @@ @@ -25,6 +25,7 @@
25 :requestOriginUrl="model['requestOriginUrl']" 25 :requestOriginUrl="model['requestOriginUrl']"
26 :originUrlType="model['originUrlType']" 26 :originUrlType="model['originUrlType']"
27 :interfaceType="model['interfaceType']" 27 :interfaceType="model['interfaceType']"
  28 + :filterValue="editSetFilter"
28 /> 29 />
29 </template> 30 </template>
30 <template #slotFillAddress="{ model }"> 31 <template #slotFillAddress="{ model }">
@@ -71,7 +72,13 @@ @@ -71,7 +72,13 @@
71 import { Tag } from 'ant-design-vue'; 72 import { Tag } from 'ant-design-vue';
72 import { RequestMethodTypeEnum, RequestOriginTypeEnum } from './config/enum'; 73 import { RequestMethodTypeEnum, RequestOriginTypeEnum } from './config/enum';
73 74
74 - const { resetReqHttpType, isServerUrl, resetUpdateSchema } = useUtils(); 75 + const {
  76 + resetReqHttpType,
  77 + isServerUrl,
  78 + resetUpdateSchema,
  79 + validateRequestTypeAndUrl,
  80 + getOriginUrlType,
  81 + } = useUtils();
75 82
76 const emits = defineEmits(['success', 'register']); 83 const emits = defineEmits(['success', 'register']);
77 84
@@ -81,6 +88,8 @@ @@ -81,6 +88,8 @@
81 88
82 const putId = ref(''); 89 const putId = ref('');
83 90
  91 + const editSetFilter = ref('');
  92 +
84 const simpleRequestRef = ref<InstanceType<typeof SimpleRequest>>(); 93 const simpleRequestRef = ref<InstanceType<typeof SimpleRequest>>();
85 94
86 const templateFillAddress = (method, type) => { 95 const templateFillAddress = (method, type) => {
@@ -126,9 +135,11 @@ @@ -126,9 +135,11 @@
126 setDrawerProps({ title }); 135 setDrawerProps({ title });
127 updateSchema(resetUpdateSchema); 136 updateSchema(resetUpdateSchema);
128 isUpdate.value = data.isUpdate; 137 isUpdate.value = data.isUpdate;
129 - !isUpdate.value ? (putId.value = '') : (putId.value = data.record.id); 138 + !isUpdate.value ? (putId.value = '') : (putId.value = data.record?.id);
130 simpleRequestRef.value?.resetValue(); 139 simpleRequestRef.value?.resetValue();
  140 + editSetFilter.value = '';
131 if (isUpdate.value) { 141 if (isUpdate.value) {
  142 + editSetFilter.value = data.record?.filter;
132 await setFieldsValue({ 143 await setFieldsValue({
133 ...data.record, 144 ...data.record,
134 requestContentType: String(data.record?.requestContentType), 145 requestContentType: String(data.record?.requestContentType),
@@ -152,31 +163,14 @@ @@ -152,31 +163,14 @@
152 }); 163 });
153 164
154 const handleSubmit = async () => { 165 const handleSubmit = async () => {
155 - setDrawerProps({ loading: true });  
156 try { 166 try {
  167 + setDrawerProps({ loading: true });
157 const values = await validate(); 168 const values = await validate();
158 if (!values) return; 169 if (!values) return;
159 - const isRequestHttpTypeAndUrlEmpty = values?.requestHttpTypeAndUrl;  
160 - if (values.requestContentType === RequestMethodTypeEnum.COMMOM) {  
161 - if (  
162 - !Reflect.get(isRequestHttpTypeAndUrlEmpty, 'requestHttpType') ||  
163 - !Reflect.get(isRequestHttpTypeAndUrlEmpty, 'requestUrl')  
164 - ) {  
165 - createMessage.error('请填写请求类型&地址');  
166 - throw Error('请填写请求类型&地址');  
167 - }  
168 - } else if (values.requestContentType === RequestMethodTypeEnum.WEBSOCKET) {  
169 - if (!Reflect.get(isRequestHttpTypeAndUrlEmpty, 'requestUrl')) {  
170 - createMessage.error('请填写请求类型&地址');  
171 - throw Error('请填写请求类型&地址');  
172 - }  
173 - } 170 + validateRequestTypeAndUrl(values);
174 const Objects = simpleRequestRef.value?.getValue(true); 171 const Objects = simpleRequestRef.value?.getValue(true);
175 const filter = simpleRequestRef.value?.getFilterValue(); 172 const filter = simpleRequestRef.value?.getFilterValue();
176 - const requestOriginUrl =  
177 - values['originUrlType'] === RequestOriginTypeEnum.SERVER_URL  
178 - ? 'localhost'  
179 - : values['requestOriginUrl']; 173 + const requestOriginUrl = getOriginUrlType(values);
180 const data = { 174 const data = {
181 ...values, 175 ...values,
182 id: !putId.value ? null : putId.value, 176 id: !putId.value ? null : putId.value,
@@ -186,7 +180,7 @@ @@ -186,7 +180,7 @@
186 }, 180 },
187 ...Objects, 181 ...Objects,
188 }), 182 }),
189 - filter: !filter ? null : filter, 183 + filter: !putId.value ? filter : filter ? filter : editSetFilter.value,
190 requestOriginUrl, 184 requestOriginUrl,
191 requestHttpType: values['requestHttpTypeAndUrl']?.requestHttpType, 185 requestHttpType: values['requestHttpTypeAndUrl']?.requestHttpType,
192 requestUrl: values['requestHttpTypeAndUrl']?.requestUrl, 186 requestUrl: values['requestHttpTypeAndUrl']?.requestUrl,
1 import { commonHttpPlaceHolder, websocketPlaceHolder } from '../config/constants'; 1 import { commonHttpPlaceHolder, websocketPlaceHolder } from '../config/constants';
2 -import { RequestMethodTypeEnum } from '../config/enum'; 2 +import { RequestMethodTypeEnum, RequestOriginTypeEnum } from '../config/enum';
3 import { otherHttp } from '/@/utils/http/axios'; 3 import { otherHttp } from '/@/utils/http/axios';
4 import { tableItems } from '../config/types'; 4 import { tableItems } from '../config/types';
  5 +import { useMessage } from '/@/hooks/web/useMessage';
5 6
6 export const useUtils = () => { 7 export const useUtils = () => {
  8 + const { createMessage } = useMessage();
7 //获取多个key 9 //获取多个key
8 const getMultipleKeys = (list) => { 10 const getMultipleKeys = (list) => {
9 let temps = []; 11 let temps = [];
@@ -164,10 +166,7 @@ export const useUtils = () => { @@ -164,10 +166,7 @@ export const useUtils = () => {
164 } else if (typeof data === 'string') { 166 } else if (typeof data === 'string') {
165 fn(data); 167 fn(data);
166 } else if (Array.isArray(data)) { 168 } else if (Array.isArray(data)) {
167 - const temp = {  
168 - data,  
169 - };  
170 - fn(temp); 169 + fn(data);
171 } else { 170 } else {
172 fn(JSON.stringify(data)); 171 fn(JSON.stringify(data));
173 } 172 }
@@ -231,6 +230,34 @@ export const useUtils = () => { @@ -231,6 +230,34 @@ export const useUtils = () => {
231 } 230 }
232 } 231 }
233 232
  233 + //验证请求类型&地址
  234 + const errorMsg = () => {
  235 + createMessage.error('请填写请求类型&地址');
  236 + throw Error('请填写请求类型&地址');
  237 + };
  238 + const validateRequestTypeAndUrl = (values) => {
  239 + const isRequestHttpTypeAndUrlEmpty = values?.requestHttpTypeAndUrl;
  240 + if (values.requestContentType === RequestMethodTypeEnum.COMMOM) {
  241 + if (
  242 + !Reflect.get(isRequestHttpTypeAndUrlEmpty, 'requestHttpType') ||
  243 + !Reflect.get(isRequestHttpTypeAndUrlEmpty, 'requestUrl')
  244 + ) {
  245 + return errorMsg();
  246 + }
  247 + } else if (values.requestContentType === RequestMethodTypeEnum.WEBSOCKET) {
  248 + if (!Reflect.get(isRequestHttpTypeAndUrlEmpty, 'requestUrl')) {
  249 + return errorMsg();
  250 + }
  251 + }
  252 + };
  253 +
  254 + //获取originUrlType
  255 + const getOriginUrlType = (values) => {
  256 + return values['originUrlType'] === RequestOriginTypeEnum.SERVER_URL
  257 + ? 'localhost'
  258 + : values['requestOriginUrl'];
  259 + };
  260 +
234 return { 261 return {
235 getMultipleKeys, 262 getMultipleKeys,
236 pushObj, 263 pushObj,
@@ -246,5 +273,7 @@ export const useUtils = () => { @@ -246,5 +273,7 @@ export const useUtils = () => {
246 commonParams, 273 commonParams,
247 CommonFuncValue, 274 CommonFuncValue,
248 ParamsFuncValue, 275 ParamsFuncValue,
  276 + validateRequestTypeAndUrl,
  277 + getOriginUrlType,
249 }; 278 };
250 }; 279 };