feat(Charts): 新增有限空间组件下拉折线图

This commit is contained in:
gaohaifeng 2025-08-25 14:00:19 +08:00
parent 73a79bcd55
commit 9c2fa974ac
8 changed files with 733 additions and 3 deletions

View File

@ -0,0 +1,114 @@
import { echartOptionProfixHandle, PublicConfigClass } from '@/packages/public'
import { LineDropdownConfig } from './index'
import { CreateComponentType } from '@/packages/index.d'
import cloneDeep from 'lodash/cloneDeep'
import dataJson from './data.json'
export const includes = ['xAxis', 'yAxis', 'grid']
const option = {
backgroundColor: 'rgba(13, 16, 22, 1)',
grid: {
left: '8%',
right: '8%',
top: '15%',
bottom: '15%',
containLabel: true
},
xAxis: {
type: 'category',
boundaryGap: false,
axisLine: {
show: false
},
axisTick: {
show: false
},
axisLabel: {
color: 'rgba(255, 255, 255, 0.6)',
fontSize: 12
},
},
yAxis: {
type: 'value',
axisLine: {
show: false
},
axisTick: {
show: false
},
axisLabel: {
color: 'rgba(255, 255, 255, 0.6)',
fontSize: 12
},
splitLine: {
show: true,
lineStyle: {
color: 'rgba(255, 255, 255, 0.1)',
type: 'solid'
}
}
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'line',
lineStyle: {
color: 'rgba(58, 160, 255, 1)',
type: 'solid'
}
}
},
dataset: { ...dataJson },
series: [
{
type: 'line',
smooth: true,
symbol: 'none', // 默认不显示点
symbolSize: 8,
lineStyle: {
width: 2,
color: {
type: 'linear',
x: 0,
y: 0,
x2: 1,
y2: 0,
colorStops: [
{ offset: 0, color: 'rgba(58, 160, 255, 1)' },
{ offset: 1, color: 'rgba(127, 216, 255, 1)' }
]
}
},
emphasis: {
focus: 'series',
symbol: 'circle', // 鼠标悬停时显示圆点
symbolSize: 8,
itemStyle: {
color: 'rgba(58, 160, 255, 1)',
borderColor: 'rgba(255, 255, 255, 0.8)',
borderWidth: 2
}
},
areaStyle: {
color: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{ offset: 0, color: 'rgba(58, 160, 255, 0.5)' },
{ offset: 1, color: 'rgba(58, 160, 255, 0.05)' }
]
}
}
}
]
}
export default class Config extends PublicConfigClass implements CreateComponentType {
public key: string = LineDropdownConfig.key
public chartConfig = cloneDeep(LineDropdownConfig)
public option = echartOptionProfixHandle(option, includes)
}

View File

@ -0,0 +1,16 @@
<template>
</template>
<script setup lang="ts">
import { PropType } from 'vue'
import { NSpace, NCard, NFormItem, NInput } from 'naive-ui'
import config from './config'
defineProps({
chartConfig: {
type: Object as PropType<config>,
required: true
}
})
</script>

View File

@ -0,0 +1,81 @@
{
"dimensions": ["time", "value"],
"source": [
{
"time": "13:00",
"value": 50
},
{
"time": "13:05",
"value": 45
},
{
"time": "13:10",
"value": 55
},
{
"time": "13:15",
"value": 48
},
{
"time": "13:20",
"value": 42
},
{
"time": "13:25",
"value": 38
},
{
"time": "13:30",
"value": 35
},
{
"time": "13:35",
"value": 40
},
{
"time": "13:40",
"value": 50
},
{
"time": "13:45",
"value": 65
},
{
"time": "13:50",
"value": 78
},
{
"time": "13:55",
"value": 80
},
{
"time": "14:00",
"value": 75
},
{
"time": "14:05",
"value": 68
},
{
"time": "14:10",
"value": 60
},
{
"time": "14:15",
"value": 55
},
{
"time": "14:20",
"value": 52
},
{
"time": "14:25",
"value": 58
},
{
"time": "14:30",
"value": 62
}
]
}

View File

@ -0,0 +1,14 @@
import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d'
// import { ChatCategoryEnum, ChatCategoryEnumName } from '../..'
export const LineDropdownConfig: ConfigType = {
key: 'LineDropdown',
chartKey: 'VLineDropdown',
conKey: 'VCLineDropdown',
title: '下拉折线图',
category: 'ConfinedSpace',
categoryName: '有限空间组件',
package: PackagesCategoryEnum.CHARTS,
chartFrame: ChartFrameEnum.ECHARTS,
image: 'line_warn.png'
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,5 @@
import { LineDropdownConfig } from './LineDropdown/index'
export default [
LineDropdownConfig,
]

View File

@ -6,7 +6,8 @@ export enum ChatCategoryEnum {
SCATTER = 'Scatters', SCATTER = 'Scatters',
MAP = 'Maps', MAP = 'Maps',
MyComponets='MyComponets', MyComponets='MyComponets',
MORE = 'Mores' MORE = 'Mores',
CONFINE = 'ConfinedSpace'
} }
export enum ChatCategoryEnumName { export enum ChatCategoryEnumName {
@ -17,5 +18,6 @@ export enum ChatCategoryEnumName {
MAP = '地图', MAP = '地图',
MyComponets='我的混合组件', MyComponets='我的混合组件',
COMBINATION = '组合图', COMBINATION = '组合图',
MORE = '更多' MORE = '更多',
CONFINE = '有限空间组件'
} }

View File

@ -5,6 +5,7 @@ import Scatters from './Scatters'
import Mores from './Mores' import Mores from './Mores'
import Maps from './Maps' import Maps from './Maps'
import MyComponets from './MyComponents' import MyComponets from './MyComponents'
import ConfinedSpace from './ConfinedSpace'
export const ChartList = [...Bars, ...Lines, ...Pies, ...Scatters, ...Maps, ...Mores, ...MyComponets] export const ChartList = [...Bars, ...Lines, ...Pies, ...Scatters, ...Maps, ...Mores, ...MyComponets, ...ConfinedSpace]