From 0111f428037580e92d033353bece46bdd77e43b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A5=94=E8=B7=91=E7=9A=84=E9=9D=A2=E6=9D=A1?= <1262327911@qq.com> Date: Tue, 17 Jan 2023 14:31:42 +0800 Subject: [PATCH 1/3] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96mock=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=EF=BC=8C=E4=BC=98=E5=8C=96=E6=8E=A5=E5=8F=A3=E5=BC=BA?= =?UTF-8?q?=E5=88=B6=E6=80=A7=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/axios.ts | 1 + src/api/mock/test.mock.ts | 11 ++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/api/axios.ts b/src/api/axios.ts index 9833998f..a64cfcd0 100644 --- a/src/api/axios.ts +++ b/src/api/axios.ts @@ -21,6 +21,7 @@ axiosInstance.interceptors.request.use( axiosInstance.interceptors.response.use( (res: AxiosResponse) => { const { code } = res.data as { code: number } + if (code === undefined || code === null) return Promise.resolve(res) if (code === ResultEnum.DATA_SUCCESS) return Promise.resolve(res.data) // 重定向 if (ErrorPageNameMap.get(code)) redirectErrorPage(code) diff --git a/src/api/mock/test.mock.ts b/src/api/mock/test.mock.ts index f84b8cc3..9db8cc78 100644 --- a/src/api/mock/test.mock.ts +++ b/src/api/mock/test.mock.ts @@ -10,8 +10,8 @@ export default { status: 200, msg: '请求成功', data: { - dimensions: ['product', 'dataOne'], - 'source|50': [ + dimensions: ['product', 'dataOne'], + 'source|20': [ { product: '@name', 'dataOne|0-900': 3 @@ -37,12 +37,13 @@ export default { status: 200, msg: '请求成功', data: { - dimensions: ['product', 'dataOne', 'dataTwo'], - 'source|50': [ + dimensions: ['product', 'dataOne', 'dataTwo', 'dataThree'], + 'source|20': [ { product: '@name', 'dataOne|100-900': 3, - 'dataTwo|100-900': 3 + 'dataTwo|100-900': 3, + 'dataThree|100-900': 3 } ] } From c7988f2d832c6f0100c549aec747690d71414f0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A5=94=E8=B7=91=E7=9A=84=E9=9D=A2=E6=9D=A1?= <1262327911@qq.com> Date: Tue, 17 Jan 2023 14:45:13 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=E5=A4=84=E7=90=86=E5=BA=8F=E5=88=97?= =?UTF-8?q?=E5=8C=96=E5=AF=BC=E8=87=B4=E6=97=B6=E9=97=B4=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/utils.ts b/src/utils/utils.ts index 4042eaed..c1fc2f67 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -305,7 +305,7 @@ export const JSONStringify = (data: T) => { } // 处理 undefined 丢失问题 if (typeof val === 'undefined') { - return 'undefined' + return null } return val }, From 923b7759f86eef4189ca2e2848b84e3a01cd5ec0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A5=94=E8=B7=91=E7=9A=84=E9=9D=A2=E6=9D=A1?= <1262327911@qq.com> Date: Tue, 17 Jan 2023 15:31:16 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=E6=8E=92=E9=99=A4=E5=8F=8D=E5=BA=8F?= =?UTF-8?q?=E5=88=97=E5=8C=96=E5=87=BD=E6=95=B0=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E8=A7=84=E8=8C=83=E4=BA=8B=E4=BB=B6=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/enums/eventEnum.ts | 31 +++++++++++++++++++ src/hooks/useLifeHandler.hook.ts | 3 +- src/packages/index.d.ts | 21 +------------ src/packages/public/publicConfig.ts | 3 +- src/utils/storage.ts | 2 +- src/utils/utils.ts | 2 ++ .../ChartEventAdvancedHandle/index.vue | 3 +- .../components/ChartEventBaseHandle/index.vue | 2 +- src/views/chart/hooks/useSync.hook.ts | 3 +- 9 files changed, 43 insertions(+), 27 deletions(-) create mode 100644 src/enums/eventEnum.ts diff --git a/src/enums/eventEnum.ts b/src/enums/eventEnum.ts new file mode 100644 index 00000000..a8110a71 --- /dev/null +++ b/src/enums/eventEnum.ts @@ -0,0 +1,31 @@ +// 基础事件类型(vue不加 on) +export enum BaseEvent { + // 点击 + ON_CLICK = 'click', + // 双击 + ON_DBL_CLICK = 'dblclick', + // 移入 + ON_MOUSE_ENTER = 'mouseenter', + // 移出 + ON_MOUSE_LEAVE = 'mouseleave', +} + +// vue3 生命周期事件 +export enum EventLife { + // 渲染之后 + VNODE_MOUNTED = 'vnodeMounted', + // 渲染之前 + VNODE_BEFORE_MOUNT = 'vnodeBeforeMount', +} + +// 内置字符串函数对象列表 +export const excludeParseEventKeyList = [ + EventLife.VNODE_BEFORE_MOUNT, + EventLife.VNODE_MOUNTED, + BaseEvent.ON_CLICK, + BaseEvent.ON_DBL_CLICK, + BaseEvent.ON_MOUSE_ENTER, + BaseEvent.ON_MOUSE_LEAVE, + //过滤器 + 'filter' +] \ No newline at end of file diff --git a/src/hooks/useLifeHandler.hook.ts b/src/hooks/useLifeHandler.hook.ts index 23ed5e00..2412a79a 100644 --- a/src/hooks/useLifeHandler.hook.ts +++ b/src/hooks/useLifeHandler.hook.ts @@ -1,4 +1,5 @@ -import { CreateComponentType, CreateComponentGroupType, EventLife, BaseEvent } from '@/packages/index.d' +import { CreateComponentType, CreateComponentGroupType } from '@/packages/index.d' +import { EventLife } from '@/enums/eventEnum' import * as echarts from 'echarts' // 所有图表组件集合对象 diff --git a/src/packages/index.d.ts b/src/packages/index.d.ts index f431bf75..e1f626b3 100644 --- a/src/packages/index.d.ts +++ b/src/packages/index.d.ts @@ -1,3 +1,4 @@ +import { BaseEvent, EventLife } from '@/enums/eventEnum' import type { GlobalThemeJsonType } from '@/settings/chartThemes/index' import type { RequestConfigType } from '@/store/modules/chartEditStore/chartEditStore.d' @@ -90,26 +91,6 @@ export const BlendModeEnumList = [ { label: '亮度', value: 'luminosity' } ] -// 基础事件类型(vue不加 on) -export enum BaseEvent { - // 点击 - ON_CLICK = 'click', - // 双击 - ON_DBL_CLICK = 'dblclick', - // 移入 - ON_MOUSE_ENTER = 'mouseenter', - // 移出 - ON_MOUSE_LEAVE = 'mouseleave', -} - -// vue3 生命周期事件 -export enum EventLife { - // 渲染之后 - VNODE_MOUNTED = 'vnodeMounted', - // 渲染之前 - VNODE_BEFORE_MOUNT = 'vnodeBeforeMount', -} - // 组件实例类 export interface PublicConfigType { id: string diff --git a/src/packages/public/publicConfig.ts b/src/packages/public/publicConfig.ts index 49dda2b0..c4288638 100644 --- a/src/packages/public/publicConfig.ts +++ b/src/packages/public/publicConfig.ts @@ -1,6 +1,7 @@ import { getUUID } from '@/utils' import { RequestConfigType } from '@/store/modules/chartEditStore/chartEditStore.d' import { groupTitle } from '@/settings/designSetting' +import { BaseEvent, EventLife } from '@/enums/eventEnum' import { RequestHttpEnum, RequestDataTypeEnum, @@ -9,8 +10,6 @@ import { RequestBodyEnum } from '@/enums/httpEnum' import { - BaseEvent, - EventLife, ChartFrameEnum, PublicConfigType, CreateComponentType, diff --git a/src/utils/storage.ts b/src/utils/storage.ts index 0cc733f0..5b9f6922 100644 --- a/src/utils/storage.ts +++ b/src/utils/storage.ts @@ -57,7 +57,7 @@ export const setSessionStorage = (k: string, v: T) => { export const getSessionStorage: (k: string) => any = (k: string) => { const item = window.sessionStorage.getItem(k) try { - return item ? JSON.parse(item) : item + return item ? JSONParse(item) : item } catch (err) { return item } diff --git a/src/utils/utils.ts b/src/utils/utils.ts index c1fc2f67..34161e04 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -10,6 +10,7 @@ import cloneDeep from 'lodash/cloneDeep' import { WinKeyboard } from '@/enums/editPageEnum' import { RequestHttpIntervalEnum, RequestParamsObjType } from '@/enums/httpEnum' import { CreateComponentType, CreateComponentGroupType } from '@/packages/index.d' +import { excludeParseEventKeyList } from '@/enums/eventEnum' /** * * 判断是否是开发环境 @@ -319,6 +320,7 @@ export const JSONStringify = (data: T) => { */ export const JSONParse = (data: string) => { return JSON.parse(data, (k, v) => { + if (excludeParseEventKeyList.includes(k)) return v if (typeof v === 'string' && v.indexOf && (v.indexOf('function') > -1 || v.indexOf('=>') > -1)) { return eval(`(function(){return ${v}})()`) } else if (typeof v === 'string' && v.indexOf && (v.indexOf('return ') > -1)) { diff --git a/src/views/chart/ContentConfigurations/components/ChartEvent/components/ChartEventAdvancedHandle/index.vue b/src/views/chart/ContentConfigurations/components/ChartEvent/components/ChartEventAdvancedHandle/index.vue index a697a628..581fefcb 100644 --- a/src/views/chart/ContentConfigurations/components/ChartEvent/components/ChartEventAdvancedHandle/index.vue +++ b/src/views/chart/ContentConfigurations/components/ChartEvent/components/ChartEventAdvancedHandle/index.vue @@ -164,7 +164,8 @@ import { useTargetData } from '../../../hooks/useTargetData.hook' import { templateList } from './importTemplate' import { npmPkgs } from '@/hooks' import { icon } from '@/plugins' -import { CreateComponentType, EventLife } from '@/packages/index.d' +import { CreateComponentType } from '@/packages/index.d' +import { EventLife } from '@/enums/eventEnum' const { targetData, chartEditStore } = useTargetData() const { DocumentTextIcon, ChevronDownIcon, PencilIcon } = icon.ionicons5 diff --git a/src/views/chart/ContentConfigurations/components/ChartEvent/components/ChartEventBaseHandle/index.vue b/src/views/chart/ContentConfigurations/components/ChartEvent/components/ChartEventBaseHandle/index.vue index ec01f60b..2defea36 100644 --- a/src/views/chart/ContentConfigurations/components/ChartEvent/components/ChartEventBaseHandle/index.vue +++ b/src/views/chart/ContentConfigurations/components/ChartEvent/components/ChartEventBaseHandle/index.vue @@ -127,7 +127,7 @@ import { ref, computed, watch, toRefs, toRaw } from 'vue' import { MonacoEditor } from '@/components/Pages/MonacoEditor' import { useTargetData } from '../../../hooks/useTargetData.hook' -import { CreateComponentType, BaseEvent } from '@/packages/index.d' +import { BaseEvent } from '@/enums/eventEnum' import { icon } from '@/plugins' const { targetData, chartEditStore } = useTargetData() diff --git a/src/views/chart/hooks/useSync.hook.ts b/src/views/chart/hooks/useSync.hook.ts index a0783962..9376e412 100644 --- a/src/views/chart/hooks/useSync.hook.ts +++ b/src/views/chart/hooks/useSync.hook.ts @@ -5,7 +5,8 @@ import { useChartHistoryStore } from '@/store/modules/chartHistoryStore/chartHis import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayoutStore' import { ChartLayoutStoreEnum } from '@/store/modules/chartLayoutStore/chartLayoutStore.d' import { fetchChartComponent, fetchConfigComponent, createComponent } from '@/packages/index' -import { BaseEvent, EventLife, CreateComponentType, CreateComponentGroupType } from '@/packages/index.d' +import { CreateComponentType, CreateComponentGroupType } from '@/packages/index.d' +import { BaseEvent, EventLife } from '@/enums/eventEnum' import { PublicGroupConfigClass } from '@/packages/public/publicConfig' import merge from 'lodash/merge'