From b6d366e86db7523c7baf96c9abe7d824778473a4 Mon Sep 17 00:00:00 2001
From: tnt group <dodu@live.cn>
Date: Wed, 12 Oct 2022 16:41:49 +0800
Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E8=BF=87=E6=BB=A4=E6=96=B9?=
 =?UTF-8?q?=E6=B3=95=E5=A2=9E=E5=8A=A0api=E8=BF=94=E5=9B=9E=E9=A1=B6?=
 =?UTF-8?q?=E7=BA=A7=E5=AF=B9=E8=B1=A1=E4=BD=9C=E4=B8=BA=E5=8F=82=E6=95=B0?=
 =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=BC=BA=E8=BF=87=E6=BB=A4=E5=99=A8=E5=85=BC?=
 =?UTF-8?q?=E5=AE=B9=E6=80=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/hooks/useChartDataFetch.hook.ts           |  8 +++---
 src/utils/utils.ts                            | 25 ++++++-------------
 .../components/ChartDataAjax/index.vue        |  8 +++---
 .../ChartDataMonacoEditor/index.vue           | 21 ++++++++++------
 4 files changed, 29 insertions(+), 33 deletions(-)

diff --git a/src/hooks/useChartDataFetch.hook.ts b/src/hooks/useChartDataFetch.hook.ts
index 9a0b7c0f..df48ae16 100644
--- a/src/hooks/useChartDataFetch.hook.ts
+++ b/src/hooks/useChartDataFetch.hook.ts
@@ -59,18 +59,18 @@ export const useChartDataFetch = (
 
         const fetchFn = async () => {
           const res = await customizeHttp(toRaw(targetComponent.request), toRaw(chartEditStore.requestGlobalConfig))
-          if (res && res.data) {
+          if (res) {
             try {
               const filter = targetComponent.filter
               // eCharts 组件配合 vChart 库更新方式
               if (chartFrame === ChartFrameEnum.ECHARTS) {
                 if (vChartRef.value) {
-                  vChartRef.value.setOption({ dataset: newFunctionHandle(res.data, filter) })
+                  vChartRef.value.setOption({ dataset: newFunctionHandle(res?.data, res, filter) })
                 }
               }
               // 更新回调函数
               if (updateCallback) {
-                updateCallback(newFunctionHandle(res.data, filter))
+                updateCallback(newFunctionHandle(res?.data, res, filter))
               }
             } catch (error) {
               console.error(error)
@@ -90,7 +90,7 @@ export const useChartDataFetch = (
       }
       // eslint-disable-next-line no-empty
     } catch (error) {
-      console.log(error);
+      console.log(error)
     }
   }
 
diff --git a/src/utils/utils.ts b/src/utils/utils.ts
index 8b686eb0..ed607783 100644
--- a/src/utils/utils.ts
+++ b/src/utils/utils.ts
@@ -22,7 +22,7 @@ export const isDev = () => {
  * @param { Number } randomLength
  */
 export const getUUID = (randomLength = 10) => {
-  return Number(Math.random().toString().substr(2, randomLength) + Date.now()).toString(36)
+  return Number(Math.random().toString().substring(2, randomLength) + Date.now()).toString(36)
 }
 
 /**
@@ -43,21 +43,8 @@ export const renderLang = (lang: string, set = {}, tag = 'span') => {
   return () => h(tag, set, { default: () => window['$t'](lang) })
 }
 
-/**
- * ! 编译会报错,暂不使用
- * * 处理 vite 中无法使用 require 的问题,utils 文件为根路径
- * @param path
- * @param name
- * @returns url
- */
-// export const requireUrl = (path: string, name: string) => {
-//   return new URL(`${path}/${name}`, import.meta.url).href
-// }
-
 /**
  * * 获取错误处理图片,默认 404 图
- * @param path
- * @param name
  * @returns url
  */
 export const requireErrorImg = () => {
@@ -193,14 +180,16 @@ export const canvasCut = (html: HTMLElement | null, callback?: Function) => {
 /**
  * * 函数过滤器
  * @param data 数据值
+ * @param res 返回顶级对象
  * @param funcStr 函数字符串
- * @param toString 转为字符串
+ * @param isToString 是否转为字符串
  * @param errorCallBack 错误回调函数
  * @param successCallBack 成功回调函数
  * @returns
  */
 export const newFunctionHandle = (
   data: any,
+  res: any,
   funcStr?: string,
   isToString?: boolean,
   errorCallBack?: Function,
@@ -208,8 +197,8 @@ export const newFunctionHandle = (
 ) => {
   try {
     if (!funcStr) return data
-    const fn = new Function('data', funcStr)
-    const fnRes = fn(cloneDeep(data))
+    const fn = new Function('data', 'res', funcStr)
+    const fnRes = fn(cloneDeep(data), cloneDeep(res))
     const resHandle = isToString ? toString(fnRes) : fnRes
     // 成功回调
     successCallBack && successCallBack(resHandle)
@@ -258,5 +247,5 @@ export const objToCookie = (obj: RequestParamsObjType) => {
   for (const key in obj) {
     str += key + '=' + obj[key] + ';'
   }
-  return str.substr(0, str.length - 1)
+  return str.substring(0, str.length - 1)
 }
diff --git a/src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataAjax/index.vue b/src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataAjax/index.vue
index 2c03df5b..07dd0dad 100644
--- a/src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataAjax/index.vue
+++ b/src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataAjax/index.vue
@@ -127,15 +127,15 @@ const sendHandle = async () => {
   try {
     const res = await customizeHttp(toRaw(targetData.value.request), toRaw(chartEditStore.requestGlobalConfig))
     loading.value = false
-    if (res && res.data) {
-      targetData.value.option.dataset = newFunctionHandle(res.data, targetData.value.filter)
+    if (res) {
+      targetData.value.option.dataset = newFunctionHandle(res?.data, res, targetData.value.filter)
       showMatching.value = true
       return
     }
-    window['$message'].warning('数据异常,请检查参数!')
+    window['$message'].warning('数据异常,请检查参数!@@@@')
   } catch (error) {
     loading.value = false
-    window['$message'].warning('数据异常,请检查参数!')
+    window['$message'].warning('数据异常,请检查参数!@@@@')
   }
 }
 
diff --git a/src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataMonacoEditor/index.vue b/src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataMonacoEditor/index.vue
index f890f2f7..879b00d5 100644
--- a/src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataMonacoEditor/index.vue
+++ b/src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataMonacoEditor/index.vue
@@ -1,7 +1,7 @@
 <template>
   <template v-if="targetData.filter">
     <n-card>
-      <p><span class="func-keyword">function</span>&nbsp;&nbsp;filter(data)&nbsp;&nbsp;{</p>
+      <p><span class="func-keyword">function</span>&nbsp;&nbsp;filter(data, res)&nbsp;&nbsp;{</p>
       <!-- 函数体 -->
       <div class="go-ml-4">
         <n-code :code="targetData.filter" language="typescript"></n-code>
@@ -47,7 +47,7 @@
           <div>
             <n-space vertical>
               <n-tag type="info">
-                <span class="func-keyword">function</span>&nbsp;&nbsp;filter(data)&nbsp;&nbsp;{
+                <span class="func-keyword">function</span>&nbsp;&nbsp;filter(data, res)&nbsp;&nbsp;{
               </n-tag>
               <monaco-editor v-model:modelValue="filter" width="460px" height="380px" language="javascript" />
               <n-tag type="info">}</n-tag>
@@ -58,7 +58,13 @@
             <n-space :size="15" vertical>
               <div class="editor-data-show">
                 <n-space>
-                  <n-text depth="3">目标数据:</n-text>
+                  <n-text depth="3">目标数据(data):</n-text>
+                  <n-code :code="toString(sourceData?.data) || 'undefined'" language="json" :word-wrap="true"></n-code>
+                </n-space>
+              </div>
+              <div class="editor-data-show">
+                <n-space>
+                  <n-text depth="3">目标数据(res):</n-text>
                   <n-code :code="toString(sourceData)" language="json" :word-wrap="true"></n-code>
                 </n-space>
               </div>
@@ -123,8 +129,8 @@ const sourceData = ref<any>('')
 const fetchTargetData = async () => {
   try {
     const res = await customizeHttp(toRaw(targetData.value.request), toRaw(chartEditStore.requestGlobalConfig))
-    if (res && res.data) {
-      sourceData.value = res.data
+    if (res) {
+      sourceData.value = res
       return
     }
     window['$message'].warning('数据异常,请检查参数!')
@@ -136,8 +142,9 @@ const fetchTargetData = async () => {
 // 过滤结果
 const filterRes = computed(() => {
   try {
-    const fn = new Function('data', filter.value)
-    const res = fn(cloneDeep(sourceData.value))
+    const fn = new Function('data', 'res', filter.value)
+    const response = cloneDeep(sourceData.value)
+    const res = fn(response?.data, response)
     // eslint-disable-next-line vue/no-side-effects-in-computed-properties
     errorFlag.value = false
     return toString(res)

From 5cc10c419801be24f819caccca85802b9b38935e Mon Sep 17 00:00:00 2001
From: tnt group <dodu@live.cn>
Date: Wed, 12 Oct 2022 16:50:25 +0800
Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=E5=BC=80=E5=8F=91?=
 =?UTF-8?q?=E6=A0=87=E8=AE=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../components/ChartData/components/ChartDataAjax/index.vue   | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataAjax/index.vue b/src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataAjax/index.vue
index 07dd0dad..9960d311 100644
--- a/src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataAjax/index.vue
+++ b/src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataAjax/index.vue
@@ -132,10 +132,10 @@ const sendHandle = async () => {
       showMatching.value = true
       return
     }
-    window['$message'].warning('数据异常,请检查参数!@@@@')
+    window['$message'].warning('数据异常,请检查参数!')
   } catch (error) {
     loading.value = false
-    window['$message'].warning('数据异常,请检查参数!@@@@')
+    window['$message'].warning('数据异常,请检查参数!')
   }
 }