From 5eb851fc8240d3cc7a9218ba72acbedbe0265312 Mon Sep 17 00:00:00 2001 From: tnt group Date: Wed, 7 Sep 2022 18:31:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E5=96=84=E6=BC=8F=E6=96=97?= =?UTF-8?q?=E5=9B=BE=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/Charts/Mores/Funnel/config.ts | 63 +++++++++++++++++++ .../components/Charts/Mores/Funnel/config.vue | 49 +++++++++++++++ .../components/Charts/Mores/Funnel/data.json | 10 +++ .../components/Charts/Mores/Funnel/index.vue | 42 ++++++++++--- 4 files changed, 157 insertions(+), 7 deletions(-) create mode 100644 src/packages/components/Charts/Mores/Funnel/config.ts create mode 100644 src/packages/components/Charts/Mores/Funnel/data.json diff --git a/src/packages/components/Charts/Mores/Funnel/config.ts b/src/packages/components/Charts/Mores/Funnel/config.ts new file mode 100644 index 00000000..d34bce3e --- /dev/null +++ b/src/packages/components/Charts/Mores/Funnel/config.ts @@ -0,0 +1,63 @@ +import { echartOptionProfixHandle, publicConfig } from '@/packages/public' +import { FunnelConfig } from './index' +import { CreateComponentType } from '@/packages/index.d' +import cloneDeep from 'lodash/cloneDeep' +import dataJson from './data.json' + +export const includes = ['legend'] + +// 排序枚举 +export const FunnelOrderEnumList = [ + { label: '倒三角', value: 'descending' }, + { label: '正三角', value: 'ascending' } +] +// 标签位置枚举 +export const FunnelLabelPositionEnumList = [ + { label: '内部', value: 'inside' }, + { label: '外部', value: 'outside' }, + { label: '内部左侧', value: 'insideLeft' }, + { label: '内部右侧', value: 'insideRight' } +] + +const option = { + tooltip: {}, + legend: {}, + dataset: { ...dataJson }, + series: [ + { + name: 'Funnel', + type: 'funnel', + left: '10%', + width: '80%', + bottom: 10, + min: 0, + max: 100, + minSize: '0%', + maxSize: '100%', + sort: 'descending', // descending | ascending + gap: 5, + label: { + show: true, + position: 'inside', + fontSize: 12 + }, + itemStyle: { + borderColor: '#fff', + borderWidth: 0 + }, + emphasis: { + label: { + fontSize: 20 + } + } + } + ] +} + +export default class Config extends publicConfig implements CreateComponentType { + public key: string = FunnelConfig.key + public chartConfig = cloneDeep(FunnelConfig) + + // 图表配置项 + public option = echartOptionProfixHandle(option, includes) +} diff --git a/src/packages/components/Charts/Mores/Funnel/config.vue b/src/packages/components/Charts/Mores/Funnel/config.vue index 44a7bc22..6586f9b9 100644 --- a/src/packages/components/Charts/Mores/Funnel/config.vue +++ b/src/packages/components/Charts/Mores/Funnel/config.vue @@ -1,6 +1,55 @@ diff --git a/src/packages/components/Charts/Mores/Funnel/data.json b/src/packages/components/Charts/Mores/Funnel/data.json new file mode 100644 index 00000000..3aba79d9 --- /dev/null +++ b/src/packages/components/Charts/Mores/Funnel/data.json @@ -0,0 +1,10 @@ +{ + "dimensions": ["product", "2015"], + "source": [ + { "product": "Matcha Latte", "2015": 20 }, + { "product": "Milk Tea", "2015": 40 }, + { "product": "Cheese Cocoa", "2015": 60 }, + { "product": "Walnut Brownie", "2015": 80 }, + { "product": "Walnut", "2015": 100 } + ] +} diff --git a/src/packages/components/Charts/Mores/Funnel/index.vue b/src/packages/components/Charts/Mores/Funnel/index.vue index 31fe77be..45726ae2 100644 --- a/src/packages/components/Charts/Mores/Funnel/index.vue +++ b/src/packages/components/Charts/Mores/Funnel/index.vue @@ -1,13 +1,41 @@ - - \ No newline at end of file