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> filter(data) {</p> + <p><span class="func-keyword">function</span> filter(data, res) {</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> filter(data) { + <span class="func-keyword">function</span> filter(data, res) { </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('数据异常,请检查参数!') } }