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] =?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 = <T>(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 = <T>(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'