Commit 0de4e209d935ec18f9a3dc2dab63dc52508c97d9
Merge branch 'ft' into 'main_dev'
feat: 新增自定义过滤器编写和优化公共接口管理部分代码 See merge request yunteng/thingskit-front!604
Showing
5 changed files
with
78 additions
and
42 deletions
@@ -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 | }; |