From fe7af94343bc4c1c9cdad25937f07cd477b8b9ca Mon Sep 17 00:00:00 2001 From: panjianhua <97274247@qq.com> Date: Fri, 16 Sep 2022 23:11:10 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E8=AF=B7=E6=B1=82=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E5=8A=A8=E6=80=81=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/http.ts | 44 ++++++++++++++++--- src/enums/httpEnum.ts | 2 + src/packages/public/publicConfig.ts | 3 +- .../modules/chartEditStore/chartEditStore.ts | 5 ++- 4 files changed, 44 insertions(+), 10 deletions(-) diff --git a/src/api/http.ts b/src/api/http.ts index 73701e34..c43987b9 100644 --- a/src/api/http.ts +++ b/src/api/http.ts @@ -80,6 +80,26 @@ export const http = (type?: RequestHttpEnum) => { return get } } +const prefix = 'javascript:' +// 对输入字符进行转义处理 +export const translateStr = (target: string | object) => { + if (typeof target === 'string') { + if (target.startsWith(prefix)) { + const funcStr = target.split(prefix)[1] + const result = new Function(`${funcStr}`)() + return result + } else { + return target + } + } + for (const key in target) { + if (Object.prototype.hasOwnProperty.call(target, key)) { + const subTarget = (target as any)[key]; + (target as any)[key] = translateStr(subTarget) + } + } + return target +} /** * * 自定义请求 @@ -113,7 +133,7 @@ export const customizeHttp = (targetParams: RequestConfigType, globalParams: Req requestParamsBodyType, // SQL 请求对象 requestSQLContent, - // 请求内容 params / cookie / header / body: 同 requestParamsBodyType + // 请求内容 params / cookie / header / body / path: 同 requestParamsBodyType requestParams: targetRequestParams } = targetParams @@ -125,15 +145,25 @@ export const customizeHttp = (targetParams: RequestConfigType, globalParams: Req } // 处理头部 - const headers: RequestParamsObjType = { + let headers: RequestParamsObjType = { ...globalRequestParams.Header, ...targetRequestParams.Header, } + headers = translateStr(headers) // data 参数 let data: RequestParamsObjType | FormData | string = {} // params 参数 let params: RequestParamsObjType = targetRequestParams.Params + params = translateStr(params) + // path 参数 + let partUrl = requestUrl + const Path = targetRequestParams.Path + for (const key in Path) { + if (Object.prototype.hasOwnProperty.call(Path, key)) { + partUrl = partUrl.replace(`:${key}`, translateStr(Path[key])) + } + } // form 类型处理 let formData: FormData = new FormData() formData.set('default', 'defaultData') @@ -145,20 +175,20 @@ export const customizeHttp = (targetParams: RequestConfigType, globalParams: Req case RequestBodyEnum.JSON: headers['Content-Type'] = ContentTypeEnum.JSON - data = JSON.parse(targetRequestParams.Body['json']) + data = translateStr(JSON.parse(targetRequestParams.Body['json'])) // json 赋值给 data break case RequestBodyEnum.XML: headers['Content-Type'] = ContentTypeEnum.XML // xml 字符串赋值给 data - data = targetRequestParams.Body['xml'] + data = translateStr(targetRequestParams.Body['xml']) break case RequestBodyEnum.X_WWW_FORM_URLENCODED: headers['Content-Type'] = ContentTypeEnum.FORM_URLENCODED const bodyFormData = targetRequestParams.Body['x-www-form-urlencoded'] - for (const i in bodyFormData) formData.set(i, bodyFormData[i]) + for (const i in bodyFormData) formData.set(i, translateStr(bodyFormData[i])) // FormData 赋值给 data data = formData break @@ -167,7 +197,7 @@ export const customizeHttp = (targetParams: RequestConfigType, globalParams: Req headers['Content-Type'] = ContentTypeEnum.FORM_DATA const bodyFormUrlencoded = targetRequestParams.Body['form-data'] for (const i in bodyFormUrlencoded) { - formData.set(i, bodyFormUrlencoded[i]) + formData.set(i, translateStr(bodyFormUrlencoded[i])) } // FormData 赋值给 data data = formData @@ -181,7 +211,7 @@ export const customizeHttp = (targetParams: RequestConfigType, globalParams: Req } return axiosInstance({ - url: `${requestOriginUrl}${requestUrl}`, + url: `${requestOriginUrl}${partUrl}`, method: requestHttpType, data, params, diff --git a/src/enums/httpEnum.ts b/src/enums/httpEnum.ts index 12211e15..c649f9b3 100644 --- a/src/enums/httpEnum.ts +++ b/src/enums/httpEnum.ts @@ -99,6 +99,7 @@ export enum RequestParamsTypeEnum { PARAMS = 'Params', BODY = 'Body', HEADER = 'Header', + PATH = 'Path', } /** @@ -108,6 +109,7 @@ export type RequestParamsObjType = { [T: string]: string } export type RequestParams = { + [RequestParamsTypeEnum.PATH]: RequestParamsObjType [RequestParamsTypeEnum.PARAMS]: RequestParamsObjType [RequestParamsTypeEnum.HEADER]: RequestParamsObjType [RequestParamsTypeEnum.BODY]: { diff --git a/src/packages/public/publicConfig.ts b/src/packages/public/publicConfig.ts index 30122bed..903b95aa 100644 --- a/src/packages/public/publicConfig.ts +++ b/src/packages/public/publicConfig.ts @@ -31,7 +31,8 @@ const requestConfig: RequestConfigType = { xml: '' }, Header: {}, - Params: {} + Params: {}, + Path: {} } } diff --git a/src/store/modules/chartEditStore/chartEditStore.ts b/src/store/modules/chartEditStore/chartEditStore.ts index 3c87e155..85d21e66 100644 --- a/src/store/modules/chartEditStore/chartEditStore.ts +++ b/src/store/modules/chartEditStore/chartEditStore.ts @@ -137,7 +137,8 @@ export const useChartEditStore = defineStore({ xml: '' }, Header: {}, - Params: {} + Params: {}, + Path: {} } }, // 图表数组(需存储给后端) @@ -624,7 +625,7 @@ export const useChartEditStore = defineStore({ ids.push(item.id) }) } else { - ;(historyData[0] as CreateComponentGroupType).groupList.forEach(item => { + (historyData[0] as CreateComponentGroupType).groupList.forEach(item => { ids.push(item.id) }) } From 54797225765cc98593208e589225c6f02ef06b2c Mon Sep 17 00:00:00 2001 From: panjianhua <97274247@qq.com> Date: Sat, 17 Sep 2022 00:28:35 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dlocation.search?= =?UTF-8?q?=E5=B8=A6=E6=9D=A5=E7=9A=84=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/router.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/router.ts b/src/utils/router.ts index 5f104f56..c1582951 100644 --- a/src/utils/router.ts +++ b/src/utils/router.ts @@ -169,7 +169,7 @@ export const fetchRouteParams = () => { */ export const fetchRouteParamsLocation = () => { try { - return document.location.hash.split('/').pop() || '' + return (document.location.hash.split('/').pop() || '').split('?').shift() } catch (error) { window['$message'].warning('查询路由信息失败,请联系管理员!') return ''