diff --git a/src/hooks/useChartDataFetch.hook.ts b/src/hooks/useChartDataFetch.hook.ts index 484f1d91..a21787b5 100644 --- a/src/hooks/useChartDataFetch.hook.ts +++ b/src/hooks/useChartDataFetch.hook.ts @@ -45,14 +45,15 @@ export const useChartDataFetch = ( const res: any = await http(requestHttpType.value)(completePath || '', {}) if (res.data) { try { + const filter = targetComponent.filter // 更新回调函数 if (updateCallback) { - updateCallback(res.data) + updateCallback(newFunctionHandle(res.data, filter)) } else { // eCharts 组件配合 vChart 库更新方式 if (chartFrame === ChartFrameEnum.ECHARTS) { if (vChartRef.value) { - const filter = targetComponent.filter + vChartRef.value.setOption({ dataset: newFunctionHandle(res.data, filter) }) } } diff --git a/src/packages/components/Charts/Mores/Process/index.vue b/src/packages/components/Charts/Mores/Process/index.vue index 60818b1d..07e65ff8 100644 --- a/src/packages/components/Charts/Mores/Process/index.vue +++ b/src/packages/components/Charts/Mores/Process/index.vue @@ -15,7 +15,7 @@ fontSize: `${indicatorTextSize}px` }" > - {{option.dataset}} {{unit}} + {{ option.dataset }} {{ unit }} @@ -24,7 +24,8 @@ import { PropType, toRefs, watch, shallowReactive } from 'vue' import { useChartDataFetch } from '@/hooks' import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' -import config, { option as configOption } from './config' +import config, { option as configOption } from './config' +import { toNumber } from '@/utils' const props = defineProps({ chartConfig: { @@ -57,11 +58,11 @@ const option = shallowReactive({ watch( () => props.chartConfig.option.dataset, (newData: any) => { - option.dataset = newData + option.dataset = toNumber(newData, 2) } ) // 预览更新 useChartDataFetch(props.chartConfig, useChartEditStore, (newData: number) => { - option.dataset = newData + option.dataset = toNumber(newData, 2) }) diff --git a/src/packages/components/Charts/Mores/WaterPolo/index.vue b/src/packages/components/Charts/Mores/WaterPolo/index.vue index 06ee9099..270f0137 100644 --- a/src/packages/components/Charts/Mores/WaterPolo/index.vue +++ b/src/packages/components/Charts/Mores/WaterPolo/index.vue @@ -10,7 +10,7 @@ import 'echarts-liquidfill/src/liquidFill.js' import { CanvasRenderer } from 'echarts/renderers' import { GridComponent } from 'echarts/components' import config from './config' -import { isPreview } from '@/utils' +import { isPreview, isString } from '@/utils' import { chartColorsSearch, defaultTheme } from '@/settings/chartThemes/index' import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' import { useChartDataFetch } from '@/hooks' @@ -66,7 +66,8 @@ watch( ) // 数据处理 -const dataHandle = (newData: number) => { +const dataHandle = (newData: number | string) => { + newData = isString(newData) ? parseFloat(newData) : newData return parseFloat(newData.toFixed(2)) } diff --git a/src/utils/type.ts b/src/utils/type.ts index 57a925d6..7b86c022 100644 --- a/src/utils/type.ts +++ b/src/utils/type.ts @@ -1,3 +1,5 @@ +import isObject from 'lodash/isObject' + export function isString(p: any): p is string { return typeof p === 'string' } @@ -21,3 +23,11 @@ export function isNull(p: any): p is null { export function isArray(p: any): p is [] { return Array.isArray(p) } + +export const toNumber = (number: number | string, toFixedNumber = 2) => { + return isString(number) ? parseFloat(parseFloat(number).toFixed(2)) : number +} + +export const toString = (str: any) => { + return isNumber(str) ? `${str}` : (isObject(str) ? JSON.stringify(str) : str) +} \ No newline at end of file diff --git a/src/utils/utils.ts b/src/utils/utils.ts index ece61c43..f6666b30 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -204,7 +204,7 @@ export const newFunctionHandle = ( if (!funcStr) return data const fn = new Function('data', funcStr) const fnRes = fn( cloneDeep(data)) - const resHandle = toString && isString(fnRes) ? JSON.stringify(fnRes) : fnRes + const resHandle = toString && isString(fnRes) ? fnRes : JSON.stringify(fnRes) // 成功回调 successCallBack && successCallBack(resHandle) return resHandle diff --git a/src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataMatchingAndShow/index.vue b/src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataMatchingAndShow/index.vue index 3f44faec..71594ae4 100644 --- a/src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataMatchingAndShow/index.vue +++ b/src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataMatchingAndShow/index.vue @@ -90,6 +90,7 @@ import { useFile } from '../../hooks/useFile.hooks' import { useTargetData } from '../../../hooks/useTargetData.hook' import isObject from 'lodash/isObject' import cloneDeep from 'lodash/cloneDeep' +import { toString } from '@/utils' const { targetData } = useTargetData() const props = defineProps({ @@ -120,11 +121,6 @@ const filterShow = computed(() => { return targetData.value.data.requestDataType === RequestDataTypeEnum.AJAX }) -// 字符串处理 -const dataToString = (str: any) => { - return isObject(str) ? JSON.stringify(str) : str -} - // 是图表类型 const isCharts = computed(() => { return targetData.value.chartConfig.package === PackagesCategoryEnum.CHARTS @@ -178,7 +174,7 @@ const filterRes = (data: any) => { if(targetData.value.filter) { const fn = new Function('data', targetData.value.filter) const res = fn(cloneDeep(data)) - return dataToString(res) + return toString(res) } return data } catch (error) { 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 9f361c32..c9c3e407 100644 --- a/src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataMonacoEditor/index.vue +++ b/src/views/chart/ContentConfigurations/components/ChartData/components/ChartDataMonacoEditor/index.vue @@ -55,7 +55,6 @@
- // 数据参数 => data function  filter(data)  { @@ -69,11 +68,7 @@
目标数据: - +
@@ -109,15 +104,19 @@