mirror of
https://gitee.com/dromara/go-view.git
synced 2024-11-30 02:38:30 +08:00
feat: 修改柱状图 & 折线图文件位置和名称,格式化内容
This commit is contained in:
parent
6b9e993599
commit
541ce8a083
BIN
src/assets/images/chart/charts/bar_line.png
Normal file
BIN
src/assets/images/chart/charts/bar_line.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
75
src/packages/components/Charts/Bars/BarLine/config.ts
Normal file
75
src/packages/components/Charts/Bars/BarLine/config.ts
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
import { echartOptionProfixHandle, PublicConfigClass } from '@/packages/public'
|
||||||
|
import { BarLineConfig } from './index'
|
||||||
|
import { CreateComponentType } from '@/packages/index.d'
|
||||||
|
import cloneDeep from 'lodash/cloneDeep'
|
||||||
|
import dataJson from './data.json'
|
||||||
|
|
||||||
|
export const includes = ['legend', 'xAxis', 'yAxis', 'grid']
|
||||||
|
// 柱状折线组合图 分别定义series
|
||||||
|
// 写死name可以定义legend显示的名称
|
||||||
|
export const barSeriesItem = {
|
||||||
|
type: 'bar',
|
||||||
|
barWidth: 15,
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: 'top',
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: 12
|
||||||
|
},
|
||||||
|
itemStyle: {
|
||||||
|
color: null,
|
||||||
|
borderRadius: 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const lineSeriesItem = {
|
||||||
|
type: 'line',
|
||||||
|
symbol: 'circle',
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
position: 'top',
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: 12
|
||||||
|
},
|
||||||
|
symbolSize: 5, //设定实心点的大小
|
||||||
|
itemStyle: {
|
||||||
|
color: '#FFE47A',
|
||||||
|
borderWidth: 1
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
type: 'solid',
|
||||||
|
width: 3,
|
||||||
|
color: null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const option = {
|
||||||
|
tooltip: {
|
||||||
|
show: true,
|
||||||
|
trigger: 'axis',
|
||||||
|
axisPointer: {
|
||||||
|
show: true,
|
||||||
|
type: 'shadow'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
data: null
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
show: true,
|
||||||
|
type: 'category'
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
show: true,
|
||||||
|
type: 'value'
|
||||||
|
},
|
||||||
|
dataset: { ...dataJson },
|
||||||
|
series: [barSeriesItem, lineSeriesItem]
|
||||||
|
}
|
||||||
|
|
||||||
|
export default class Config extends PublicConfigClass implements CreateComponentType {
|
||||||
|
public key = BarLineConfig.key
|
||||||
|
public chartConfig = cloneDeep(BarLineConfig)
|
||||||
|
// 图表配置项
|
||||||
|
public option = echartOptionProfixHandle(option, includes)
|
||||||
|
}
|
@ -1,43 +1,48 @@
|
|||||||
<template>
|
<template>
|
||||||
<!-- Echarts 全局设置 -->
|
<!-- Echarts 全局设置 -->
|
||||||
<global-setting :optionData="optionData"></global-setting>
|
<global-setting :optionData="optionData"></global-setting>
|
||||||
<CollapseItem v-for="(item, index) in seriesList" :key="index" :name="`${item.type=='bar' ? '柱状图' : '折线图'}`" :expanded="true">
|
<CollapseItem
|
||||||
<SettingItemBox name="图形" v-if="item.type=='bar'">
|
v-for="(item, index) in seriesList"
|
||||||
|
:key="index"
|
||||||
|
:name="`${item.type == 'bar' ? '柱状图' : '折线图'}`"
|
||||||
|
:expanded="true"
|
||||||
|
>
|
||||||
|
<SettingItemBox name="图形" v-if="item.type == 'bar'">
|
||||||
<SettingItem name="宽度">
|
<SettingItem name="宽度">
|
||||||
<n-input-number
|
<n-input-number
|
||||||
v-model:value="item.barWidth"
|
v-model:value="item.barWidth"
|
||||||
:min="1"
|
:min="1"
|
||||||
:max="100"
|
:max="100"
|
||||||
size="small"
|
size="small"
|
||||||
placeholder="自动计算"
|
placeholder="自动计算"
|
||||||
></n-input-number>
|
></n-input-number>
|
||||||
</SettingItem>
|
</SettingItem>
|
||||||
<SettingItem name="圆角">
|
<SettingItem name="圆角">
|
||||||
<n-input-number v-model:value="item.itemStyle.borderRadius" :min="0" size="small"></n-input-number>
|
<n-input-number v-model:value="item.itemStyle.borderRadius" :min="0" size="small"></n-input-number>
|
||||||
</SettingItem>
|
</SettingItem>
|
||||||
</SettingItemBox>
|
</SettingItemBox>
|
||||||
<SettingItemBox name="线条" v-if="item.type=='line'">
|
<SettingItemBox name="线条" v-if="item.type == 'line'">
|
||||||
<SettingItem name="宽度">
|
<SettingItem name="宽度">
|
||||||
<n-input-number
|
<n-input-number
|
||||||
v-model:value="item.lineStyle.width"
|
v-model:value="item.lineStyle.width"
|
||||||
:min="1"
|
:min="1"
|
||||||
:max="100"
|
:max="100"
|
||||||
size="small"
|
size="small"
|
||||||
placeholder="自动计算"
|
placeholder="自动计算"
|
||||||
></n-input-number>
|
></n-input-number>
|
||||||
</SettingItem>
|
</SettingItem>
|
||||||
<SettingItem name="类型">
|
<SettingItem name="类型">
|
||||||
<n-select v-model:value="item.lineStyle.type" size="small" :options="lineConf.lineStyle.type"></n-select>
|
<n-select v-model:value="item.lineStyle.type" size="small" :options="lineConf.lineStyle.type"></n-select>
|
||||||
</SettingItem>
|
</SettingItem>
|
||||||
</SettingItemBox>
|
</SettingItemBox>
|
||||||
<SettingItemBox name="实心点" v-if="item.type=='line'">
|
<SettingItemBox name="实心点" v-if="item.type == 'line'">
|
||||||
<SettingItem name="大小">
|
<SettingItem name="大小">
|
||||||
<n-input-number
|
<n-input-number
|
||||||
v-model:value="item.symbolSize"
|
v-model:value="item.symbolSize"
|
||||||
:min="1"
|
:min="1"
|
||||||
:max="100"
|
:max="100"
|
||||||
size="small"
|
size="small"
|
||||||
placeholder="自动计算"
|
placeholder="自动计算"
|
||||||
></n-input-number>
|
></n-input-number>
|
||||||
</SettingItem>
|
</SettingItem>
|
||||||
</SettingItemBox>
|
</SettingItemBox>
|
||||||
@ -56,8 +61,8 @@
|
|||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="位置">
|
<setting-item name="位置">
|
||||||
<n-select
|
<n-select
|
||||||
v-model:value="item.label.position"
|
v-model:value="item.label.position"
|
||||||
:options="[
|
:options="[
|
||||||
{ label: 'top', value: 'top' },
|
{ label: 'top', value: 'top' },
|
||||||
{ label: 'left', value: 'left' },
|
{ label: 'left', value: 'left' },
|
||||||
{ label: 'right', value: 'right' },
|
{ label: 'right', value: 'right' },
|
||||||
@ -83,7 +88,6 @@ const props = defineProps({
|
|||||||
})
|
})
|
||||||
|
|
||||||
const seriesList = computed(() => {
|
const seriesList = computed(() => {
|
||||||
console.log(props.optionData);
|
|
||||||
return props.optionData.series
|
return props.optionData.series
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
@ -37,4 +37,4 @@
|
|||||||
"data2": 57
|
"data2": 57
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
16
src/packages/components/Charts/Bars/BarLine/index.ts
Normal file
16
src/packages/components/Charts/Bars/BarLine/index.ts
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
// 公共类型声明
|
||||||
|
import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d'
|
||||||
|
// 当前[信息模块]分类声明
|
||||||
|
import { ChatCategoryEnum,ChatCategoryEnumName } from '../../index.d'
|
||||||
|
|
||||||
|
export const BarLineConfig: ConfigType = {
|
||||||
|
key: 'BarLine',
|
||||||
|
chartKey: 'VBarLine',
|
||||||
|
conKey: 'VCBarLine',
|
||||||
|
title: '柱状图 & 折线图',
|
||||||
|
category: ChatCategoryEnum.BAR,
|
||||||
|
categoryName: ChatCategoryEnumName.BAR,
|
||||||
|
package: PackagesCategoryEnum.CHARTS,
|
||||||
|
chartFrame: ChartFrameEnum.ECHARTS,
|
||||||
|
image: 'bar_line.png'
|
||||||
|
}
|
@ -1,10 +1,16 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-chart ref="vChartRef" :init-options="initOptions" :theme="themeColor" :option="option" :manual-update="isPreview()"
|
<v-chart
|
||||||
autoresize></v-chart>
|
ref="vChartRef"
|
||||||
|
:init-options="initOptions"
|
||||||
|
:theme="themeColor"
|
||||||
|
:option="option"
|
||||||
|
:manual-update="isPreview()"
|
||||||
|
autoresize
|
||||||
|
></v-chart>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import {ref, computed, watch, PropType, nextTick} from 'vue'
|
import { ref, computed, watch, PropType, nextTick } from 'vue'
|
||||||
import VChart from 'vue-echarts'
|
import VChart from 'vue-echarts'
|
||||||
import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook'
|
import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook'
|
||||||
import { use } from 'echarts/core'
|
import { use } from 'echarts/core'
|
||||||
@ -44,25 +50,24 @@ const option = computed(() => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => props.chartConfig.option.dataset,
|
() => props.chartConfig.option.dataset,
|
||||||
(newData, oldData) => {
|
(newData, oldData) => {
|
||||||
if (newData.dimensions.length !== oldData.dimensions.length) {
|
if (newData.dimensions.length !== oldData.dimensions.length) {
|
||||||
const seriesArr = []
|
const seriesArr = []
|
||||||
for (let i = 0; i < newData.dimensions.length - 1; i++) {
|
for (let i = 0; i < newData.dimensions.length - 1; i++) {
|
||||||
seriesArr.push(barSeriesItem, lineSeriesItem)
|
seriesArr.push(barSeriesItem, lineSeriesItem)
|
||||||
}
|
|
||||||
replaceMergeArr.value = ['series']
|
|
||||||
props.chartConfig.option.series = seriesArr
|
|
||||||
nextTick(() => {
|
|
||||||
replaceMergeArr.value = []
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
},
|
replaceMergeArr.value = ['series']
|
||||||
{
|
props.chartConfig.option.series = seriesArr
|
||||||
deep: false
|
nextTick(() => {
|
||||||
|
replaceMergeArr.value = []
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
deep: false
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
const { vChartRef } = useChartDataFetch(props.chartConfig, useChartEditStore)
|
const { vChartRef } = useChartDataFetch(props.chartConfig, useChartEditStore)
|
||||||
</script>
|
</script>
|
@ -1,5 +1,6 @@
|
|||||||
import { BarCommonConfig } from './BarCommon/index'
|
import { BarCommonConfig } from './BarCommon/index'
|
||||||
import { BarCrossrangeConfig } from './BarCrossrange/index'
|
import { BarCrossrangeConfig } from './BarCrossrange/index'
|
||||||
import { CapsuleChartConfig } from './CapsuleChart/index'
|
import { CapsuleChartConfig } from './CapsuleChart/index'
|
||||||
|
import { BarLineConfig } from './BarLine/index'
|
||||||
export default [BarCommonConfig, BarCrossrangeConfig, CapsuleChartConfig]
|
|
||||||
|
export default [BarCommonConfig, BarCrossrangeConfig, BarLineConfig, CapsuleChartConfig]
|
||||||
|
@ -1,76 +0,0 @@
|
|||||||
import { echartOptionProfixHandle, PublicConfigClass } from '@/packages/public'
|
|
||||||
import { BarLineConfig } from './index'
|
|
||||||
import { CreateComponentType } from '@/packages/index.d'
|
|
||||||
import cloneDeep from 'lodash/cloneDeep'
|
|
||||||
import dataJson from './data.json'
|
|
||||||
|
|
||||||
|
|
||||||
export const includes = ['legend', 'xAxis', 'yAxis', 'grid']
|
|
||||||
// 柱状折线组合图 分别定义series
|
|
||||||
// 写死name可以定义legend显示的名称
|
|
||||||
export const barSeriesItem = {
|
|
||||||
type: 'bar',
|
|
||||||
barWidth: 15,
|
|
||||||
label: {
|
|
||||||
show: true,
|
|
||||||
position: 'top',
|
|
||||||
color: '#fff',
|
|
||||||
fontSize: 12
|
|
||||||
},
|
|
||||||
itemStyle: {
|
|
||||||
color: null,
|
|
||||||
borderRadius: 2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const lineSeriesItem = {
|
|
||||||
type: 'line',
|
|
||||||
symbol: "circle",
|
|
||||||
label: {
|
|
||||||
show: true,
|
|
||||||
position: 'top',
|
|
||||||
color: '#fff',
|
|
||||||
fontSize: 12
|
|
||||||
},
|
|
||||||
symbolSize: 5, //设定实心点的大小
|
|
||||||
itemStyle: {
|
|
||||||
color: '#FFE47A',
|
|
||||||
borderWidth: 1
|
|
||||||
},
|
|
||||||
lineStyle: {
|
|
||||||
type: 'solid',
|
|
||||||
width: 3,
|
|
||||||
color: null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const option = {
|
|
||||||
tooltip: {
|
|
||||||
show: true,
|
|
||||||
trigger: 'axis',
|
|
||||||
axisPointer: {
|
|
||||||
show: true,
|
|
||||||
type: 'shadow'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
legend: {
|
|
||||||
data:null
|
|
||||||
},
|
|
||||||
xAxis: {
|
|
||||||
show: true,
|
|
||||||
type: 'category'
|
|
||||||
},
|
|
||||||
yAxis: {
|
|
||||||
show: true,
|
|
||||||
type: 'value'
|
|
||||||
},
|
|
||||||
dataset: { ...dataJson },
|
|
||||||
series: [barSeriesItem, lineSeriesItem]
|
|
||||||
}
|
|
||||||
|
|
||||||
export default class Config extends PublicConfigClass implements CreateComponentType {
|
|
||||||
public key = BarLineConfig.key
|
|
||||||
public chartConfig = cloneDeep(BarLineConfig)
|
|
||||||
// 图表配置项
|
|
||||||
public option = echartOptionProfixHandle(option, includes)
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
// 公共类型声明
|
|
||||||
import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d'
|
|
||||||
// 当前[信息模块]分类声明
|
|
||||||
import { ChatCategoryEnum,ChatCategoryEnumName } from '../../index.d'
|
|
||||||
|
|
||||||
export const BarLineConfig: ConfigType = {
|
|
||||||
key: 'BarLine',
|
|
||||||
chartKey: 'VBarLine',
|
|
||||||
conKey: 'VCBarLine',
|
|
||||||
title: '柱状加折线图',
|
|
||||||
category: ChatCategoryEnum.COMBINATIONS,
|
|
||||||
categoryName: ChatCategoryEnumName.COMBINATION,
|
|
||||||
package: PackagesCategoryEnum.CHARTS,
|
|
||||||
chartFrame: ChartFrameEnum.ECHARTS,
|
|
||||||
image: 'bar_x.png'
|
|
||||||
}
|
|
@ -1,3 +0,0 @@
|
|||||||
import { BarLineConfig } from './BarLine/index'
|
|
||||||
|
|
||||||
export default [BarLineConfig]
|
|
1
src/packages/components/Charts/index.d.ts
vendored
1
src/packages/components/Charts/index.d.ts
vendored
@ -5,7 +5,6 @@ export enum ChatCategoryEnum {
|
|||||||
LINE = 'Lines',
|
LINE = 'Lines',
|
||||||
SCATTER = 'Scatters',
|
SCATTER = 'Scatters',
|
||||||
MAP = 'Maps',
|
MAP = 'Maps',
|
||||||
COMBINATIONS = 'COMBINATIONS',
|
|
||||||
MORE = 'Mores'
|
MORE = 'Mores'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,6 @@ import Pies from './Pies'
|
|||||||
import Lines from './Lines'
|
import Lines from './Lines'
|
||||||
import Scatters from './Scatters'
|
import Scatters from './Scatters'
|
||||||
import Mores from './Mores'
|
import Mores from './Mores'
|
||||||
import COMBINATIONS from "./COMBINATIONS";
|
|
||||||
import Maps from './Maps'
|
import Maps from './Maps'
|
||||||
|
|
||||||
export const ChartList = [...Bars, ...Lines, ...Pies, ...Scatters, ...Maps,...COMBINATIONS, ...Mores]
|
export const ChartList = [...Bars, ...Lines, ...Pies, ...Scatters, ...Maps, ...Mores]
|
||||||
|
Loading…
Reference in New Issue
Block a user