mirror of
https://gitee.com/dromara/go-view.git
synced 2026-07-13 03:01:07 +08:00
Compare commits
7 Commits
d6e309b117
...
b9b8d69146
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b9b8d69146 | ||
|
|
d6a347ccb5 | ||
|
|
d90789f60e | ||
|
|
6e9db7aa79 | ||
|
|
c339aa7648 | ||
|
|
0b36885d9f | ||
|
|
d1eef46af7 |
BIN
src/assets/images/chart/decorates/Pipeline_H.png
Normal file
BIN
src/assets/images/chart/decorates/Pipeline_H.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 999 B |
BIN
src/assets/images/chart/decorates/Pipeline_V.png
Normal file
BIN
src/assets/images/chart/decorates/Pipeline_V.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 983 B |
@ -257,9 +257,36 @@
|
||||
<n-switch v-model:value="legend.show" size="small"></n-switch>
|
||||
</template>
|
||||
<setting-item-box name="图例文字">
|
||||
<setting-item>
|
||||
<setting-item name="颜色">
|
||||
<n-color-picker size="small" v-model:value="legend.textStyle.color"></n-color-picker>
|
||||
</setting-item>
|
||||
<setting-item name="大小">
|
||||
<n-input-number v-model:value="legend.textStyle.fontSize" :min="1" size="small"></n-input-number>
|
||||
</setting-item>
|
||||
</setting-item-box>
|
||||
<setting-item-box name="图例位置">
|
||||
<setting-item name="x轴">
|
||||
<n-select v-model:value="legend.x" size="small" :options="legendConfig.lengendX" />
|
||||
</setting-item>
|
||||
<setting-item name="y轴">
|
||||
<n-select v-model:value="legend.y" size="small" :options="legendConfig.lengendY" />
|
||||
</setting-item>
|
||||
</setting-item-box>
|
||||
<setting-item-box name="图例信息">
|
||||
<setting-item name="方向">
|
||||
<n-select v-model:value="legend.orient" size="small" :options="legendConfig.orient" />
|
||||
</setting-item>
|
||||
<setting-item name="形状">
|
||||
<n-select v-model:value="legend.icon" size="small" :options="legendConfig.shape" />
|
||||
</setting-item>
|
||||
</setting-item-box>
|
||||
<setting-item-box name="图例大小">
|
||||
<setting-item name="宽">
|
||||
<n-input-number v-model:value="legend.itemWidth" :min="1" size="small"></n-input-number>
|
||||
</setting-item>
|
||||
<setting-item name="高">
|
||||
<n-input-number v-model:value="legend.itemHeight" :min="1" size="small"></n-input-number>
|
||||
</setting-item>
|
||||
</setting-item-box>
|
||||
</collapse-item>
|
||||
|
||||
@ -309,9 +336,9 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { PropType, computed } from 'vue'
|
||||
import { PropType, computed, watch } from 'vue'
|
||||
import { GlobalThemeJsonType } from '@/settings/chartThemes/index'
|
||||
import { axisConfig } from '@/packages/chartConfiguration/echarts/index'
|
||||
import { axisConfig, legendConfig } from '@/packages/chartConfiguration/echarts/index'
|
||||
import { CollapseItem, SettingItemBox, SettingItem, GlobalSettingPosition } from '@/components/Pages/ChartItemSetting'
|
||||
import { icon } from '@/plugins'
|
||||
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
||||
@ -360,4 +387,14 @@ const grid = computed(() => {
|
||||
const visualMap = computed(() => {
|
||||
return props.optionData.visualMap
|
||||
})
|
||||
|
||||
// 监听legend color颜色改变type = scroll的颜色
|
||||
watch(() => legend.value && legend.value.textStyle.color, (newVal) => {
|
||||
if (legend.value && newVal) {
|
||||
legend.value.pageTextStyle.color = newVal
|
||||
}
|
||||
}, {
|
||||
immediate: true,
|
||||
deep: true,
|
||||
})
|
||||
</script>
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
export * from './axis'
|
||||
export * from './line'
|
||||
export * from './label'
|
||||
export * from './label'
|
||||
export * from './legend'
|
||||
70
src/packages/chartConfiguration/echarts/legend.ts
Normal file
70
src/packages/chartConfiguration/echarts/legend.ts
Normal file
@ -0,0 +1,70 @@
|
||||
export const legendConfig = {
|
||||
// X轴位置
|
||||
lengendX: [
|
||||
{
|
||||
label: '靠左',
|
||||
value: 'left'
|
||||
},
|
||||
{
|
||||
label: '居中',
|
||||
value: 'center'
|
||||
},
|
||||
{
|
||||
label: '靠右',
|
||||
value: 'right'
|
||||
}
|
||||
],
|
||||
// y轴位置
|
||||
lengendY: [
|
||||
{
|
||||
label: '靠上',
|
||||
value: 'top'
|
||||
},
|
||||
{
|
||||
label: '居中',
|
||||
value: 'center'
|
||||
},
|
||||
{
|
||||
label: '靠下',
|
||||
value: 'bottom'
|
||||
}
|
||||
],
|
||||
// 排列方向
|
||||
orient: [
|
||||
{
|
||||
label: '水平',
|
||||
value: 'horizontal'
|
||||
},
|
||||
{
|
||||
label: '垂直',
|
||||
value: 'vertical'
|
||||
}
|
||||
],
|
||||
// 形状
|
||||
shape: [
|
||||
{
|
||||
label: '圆形',
|
||||
value: 'circle'
|
||||
},
|
||||
{
|
||||
label: '方形',
|
||||
value: 'rect'
|
||||
},
|
||||
{
|
||||
label: '圆角方形',
|
||||
value: 'roundRect'
|
||||
},
|
||||
{
|
||||
label: '三角形',
|
||||
value: 'triangle'
|
||||
},
|
||||
{
|
||||
label: '钢笔形',
|
||||
value: 'pin'
|
||||
},
|
||||
{
|
||||
label: '箭头形',
|
||||
value: 'arrow'
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -16,7 +16,8 @@ export enum ThemeEnum {
|
||||
MACARON = 'macaron',
|
||||
BLUE = 'blue',
|
||||
DARKBLUE = 'darkblue',
|
||||
WINE = 'wine'
|
||||
WINE = 'wine',
|
||||
WEIXIN = 'tileLayer'
|
||||
}
|
||||
|
||||
export enum LangEnum {
|
||||
|
||||
@ -134,6 +134,10 @@ const themeOptions = [
|
||||
{
|
||||
value: ThemeEnum.WINE,
|
||||
label: '酱籽'
|
||||
},
|
||||
{
|
||||
value: ThemeEnum.WEIXIN,
|
||||
label: '卫星'
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@ import AMapLoader from '@amap/amap-jsapi-loader'
|
||||
import { CreateComponentType } from '@/packages/index.d'
|
||||
import { useChartDataFetch } from '@/hooks'
|
||||
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
||||
import { MarkerEnum } from './config'
|
||||
import { MarkerEnum, ThemeEnum } from './config'
|
||||
import { isArray } from '@/utils'
|
||||
|
||||
const props = defineProps({
|
||||
@ -51,7 +51,6 @@ const initMap = (newData: any) => {
|
||||
resizeEnable: true,
|
||||
zoom: amapZindex.value, // 地图显示的缩放级别
|
||||
center: [amapLon.value, amapLat.value],
|
||||
mapStyle: `amap://styles/${amapStyleKeyCustom.value !== '' ? amapStyleKeyCustom.value : amapStyleKey.value}`, //自定义地图的显示样式
|
||||
lang: lang.value,
|
||||
features: features.value,
|
||||
pitch: pitch.value, // 地图俯仰角度,有效范围 0 度- 83 度
|
||||
@ -60,6 +59,14 @@ const initMap = (newData: any) => {
|
||||
willReadFrequently: true
|
||||
})
|
||||
dataHandle(props.chartConfig.option.dataset)
|
||||
let satellite = new AMap.TileLayer.Satellite()
|
||||
let roadNet = new AMap.TileLayer.RoadNet()
|
||||
if (newData.amapStyleKey === ThemeEnum.WEIXIN) {
|
||||
mapIns.add([satellite, roadNet])
|
||||
} else {
|
||||
mapIns.remove([satellite, roadNet])
|
||||
mapIns.setMapStyle(`amap://styles/${amapStyleKeyCustom.value !== '' ? amapStyleKeyCustom.value : amapStyleKey.value}`)
|
||||
}
|
||||
})
|
||||
.catch(e => {})
|
||||
}
|
||||
|
||||
19
src/packages/components/Decorates/Mores/PipelineH/config.ts
Normal file
19
src/packages/components/Decorates/Mores/PipelineH/config.ts
Normal file
@ -0,0 +1,19 @@
|
||||
import { PublicConfigClass } from '@/packages/public'
|
||||
import { CreateComponentType } from '@/packages/index.d'
|
||||
import { chartInitConfig } from '@/settings/designSetting'
|
||||
import { PipelineHConfig } from './index'
|
||||
import cloneDeep from 'lodash/cloneDeep'
|
||||
|
||||
export const option = {
|
||||
color_type: 1,
|
||||
o_color: '#0a7ae2',
|
||||
i_color: '#119bfa',
|
||||
line_class: 'svg_ani_flow'
|
||||
}
|
||||
|
||||
export default class Config extends PublicConfigClass implements CreateComponentType {
|
||||
public key = PipelineHConfig.key
|
||||
public attr = { ...chartInitConfig, w: 500, h: 15, zIndex: -1 }
|
||||
public chartConfig = cloneDeep(PipelineHConfig)
|
||||
public option = cloneDeep(option)
|
||||
}
|
||||
77
src/packages/components/Decorates/Mores/PipelineH/config.vue
Normal file
77
src/packages/components/Decorates/Mores/PipelineH/config.vue
Normal file
@ -0,0 +1,77 @@
|
||||
<template>
|
||||
<CollapseItem name="管道" :expanded="true">
|
||||
<SettingItemBox name="默认颜色">
|
||||
<SettingItem>
|
||||
<n-select v-model:value="optionData.color_type" :options="colorOptions" @update:value="handleColorChange" />
|
||||
</SettingItem>
|
||||
</SettingItemBox>
|
||||
<SettingItemBox name="管道颜色">
|
||||
<SettingItem>
|
||||
<n-color-picker size="small" :modes="['hex']" v-model:value="optionData.o_color"></n-color-picker>
|
||||
</SettingItem>
|
||||
</SettingItemBox>
|
||||
<SettingItemBox name="水流颜色">
|
||||
<SettingItem>
|
||||
<n-color-picker size="small" :modes="['hex']" v-model:value="optionData.i_color"></n-color-picker>
|
||||
</SettingItem>
|
||||
</SettingItemBox>
|
||||
<SettingItemBox name="流向">
|
||||
<SettingItem>
|
||||
<n-select v-model:value="optionData.line_class" :options="options" />
|
||||
</SettingItem>
|
||||
</SettingItemBox>
|
||||
</CollapseItem>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { PropType, ref } from 'vue'
|
||||
import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting'
|
||||
import { option } from './config'
|
||||
|
||||
const props = defineProps({
|
||||
optionData: {
|
||||
type: Object as PropType<typeof option>,
|
||||
required: true
|
||||
}
|
||||
})
|
||||
|
||||
const options = ref([
|
||||
{
|
||||
value: 'svg_ani_flow',
|
||||
label: '正向'
|
||||
},
|
||||
{
|
||||
value: 'svg_ani_flow_back',
|
||||
label: '反向'
|
||||
},
|
||||
{
|
||||
value: 'svg_ani_flow_stop',
|
||||
label: '停止'
|
||||
}
|
||||
])
|
||||
|
||||
const colorOptions = ref([
|
||||
{
|
||||
value: 1,
|
||||
label: '蓝'
|
||||
},
|
||||
{
|
||||
value: 2,
|
||||
label: '黄'
|
||||
}
|
||||
])
|
||||
|
||||
// 默认颜色
|
||||
const handleColorChange = (e: number) => {
|
||||
switch (e) {
|
||||
case 1:
|
||||
props.optionData.o_color = '#0a7ae2'
|
||||
props.optionData.i_color = '#119bfa'
|
||||
break
|
||||
case 2:
|
||||
props.optionData.o_color = '#ff9d00'
|
||||
props.optionData.i_color = '#f7ea37'
|
||||
break
|
||||
}
|
||||
}
|
||||
</script>
|
||||
13
src/packages/components/Decorates/Mores/PipelineH/index.ts
Normal file
13
src/packages/components/Decorates/Mores/PipelineH/index.ts
Normal file
@ -0,0 +1,13 @@
|
||||
import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d'
|
||||
import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d'
|
||||
|
||||
export const PipelineHConfig: ConfigType = {
|
||||
key: 'PipelineH',
|
||||
chartKey: 'VPipelineH',
|
||||
conKey: 'VCPipelineH',
|
||||
title: '管道-横向',
|
||||
category: ChatCategoryEnum.MORE,
|
||||
categoryName: ChatCategoryEnumName.MORE,
|
||||
package: PackagesCategoryEnum.DECORATES,
|
||||
image: 'Pipeline_H.png'
|
||||
}
|
||||
141
src/packages/components/Decorates/Mores/PipelineH/index.vue
Normal file
141
src/packages/components/Decorates/Mores/PipelineH/index.vue
Normal file
@ -0,0 +1,141 @@
|
||||
<template>
|
||||
<div class="go-decorates-line">
|
||||
<svg :width="w" :height="h">
|
||||
<line :x1="0" :y1="h / 2" :x2="w" :y2="h / 2" :stroke="o_color" :stroke-width="h"></line>
|
||||
<line :x1="0" :y1="h / 2" :x2="w" :y2="h / 2" :stroke="i_color" :stroke-width="h / 2" :class="line_class"></line>
|
||||
</svg>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { PropType, toRefs } from 'vue'
|
||||
import { CreateComponentType } from '@/packages/index.d'
|
||||
|
||||
const props = defineProps({
|
||||
chartConfig: {
|
||||
type: Object as PropType<CreateComponentType>,
|
||||
required: true
|
||||
}
|
||||
})
|
||||
|
||||
const { w, h } = toRefs(props.chartConfig.attr)
|
||||
const { o_color, i_color, line_class } = toRefs(props.chartConfig.option)
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.go-decorates-line {
|
||||
font-size: 0;
|
||||
}
|
||||
|
||||
/* 正向流动效果 */
|
||||
.svg_ani_flow {
|
||||
stroke-dasharray: 1000;
|
||||
stroke-dashoffset: 1000;
|
||||
animation: ani_flow 10s linear infinite;
|
||||
animation-fill-mode: forwards;
|
||||
-webkit-animation: ani_flow 10s linear infinite;
|
||||
-webkit-animation-fill-mode: forwards;
|
||||
}
|
||||
|
||||
@keyframes ani_flow {
|
||||
from {
|
||||
stroke-dasharray: 10, 5;
|
||||
}
|
||||
|
||||
to {
|
||||
stroke-dasharray: 13, 5;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes ani_flow {
|
||||
from {
|
||||
stroke-dasharray: 10, 5;
|
||||
}
|
||||
|
||||
to {
|
||||
stroke-dasharray: 13, 5;
|
||||
}
|
||||
}
|
||||
|
||||
/* 停止流动效果 */
|
||||
.svg_ani_flow_stop {
|
||||
stroke-dasharray: 1000;
|
||||
stroke-dashoffset: 1000;
|
||||
animation: ani_flow_stop 10s linear infinite;
|
||||
animation-fill-mode: forwards;
|
||||
-webkit-animation: ani_flow_stop 10s linear infinite;
|
||||
-webkit-animation-fill-mode: forwards;
|
||||
}
|
||||
|
||||
@keyframes ani_flow_stop {
|
||||
from {
|
||||
stroke-dasharray: 10, 5;
|
||||
}
|
||||
|
||||
to {
|
||||
stroke-dasharray: 10, 5;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes ani_flow_stop {
|
||||
from {
|
||||
stroke-dasharray: 10, 5;
|
||||
}
|
||||
|
||||
to {
|
||||
stroke-dasharray: 10, 5;
|
||||
}
|
||||
}
|
||||
/* 反向流动效果 */
|
||||
.svg_ani_flow_back {
|
||||
stroke-dasharray: 1000;
|
||||
stroke-dashoffset: 1000;
|
||||
animation: ani_flow_back 10s linear infinite;
|
||||
animation-fill-mode: forwards;
|
||||
-webkit-animation: ani_flow_back 10s linear infinite;
|
||||
-webkit-animation-fill-mode: forwards;
|
||||
}
|
||||
|
||||
@keyframes ani_flow_back {
|
||||
from {
|
||||
stroke-dasharray: 13, 5;
|
||||
}
|
||||
|
||||
to {
|
||||
stroke-dasharray: 10, 5;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes ani_flow_stop {
|
||||
from {
|
||||
stroke-dasharray: 10, 5;
|
||||
}
|
||||
|
||||
to {
|
||||
stroke-dasharray: 10, 5;
|
||||
}
|
||||
}
|
||||
/* 以最大40高度填充 */
|
||||
.svg_ani_fill_h40 {
|
||||
animation: ani_fill_h40 5s linear infinite;
|
||||
animation-fill-mode: forwards;
|
||||
-webkit-animation: ani_fill_h40 5s linear infinite;
|
||||
-webkit-animation-fill-mode: forwards;
|
||||
}
|
||||
|
||||
@keyframes ani_fill_h40 {
|
||||
from {
|
||||
height: 0px;
|
||||
}
|
||||
|
||||
to {
|
||||
height: 40px;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes ani_flow_stop {
|
||||
from {
|
||||
stroke-dasharray: 10, 5;
|
||||
}
|
||||
|
||||
to {
|
||||
stroke-dasharray: 10, 5;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
19
src/packages/components/Decorates/Mores/PipelineV/config.ts
Normal file
19
src/packages/components/Decorates/Mores/PipelineV/config.ts
Normal file
@ -0,0 +1,19 @@
|
||||
import { PublicConfigClass } from '@/packages/public'
|
||||
import { CreateComponentType } from '@/packages/index.d'
|
||||
import { chartInitConfig } from '@/settings/designSetting'
|
||||
import { PipelineVConfig } from './index'
|
||||
import cloneDeep from 'lodash/cloneDeep'
|
||||
|
||||
export const option = {
|
||||
color_type: 1,
|
||||
o_color: '#0a7ae2',
|
||||
i_color: '#119bfa',
|
||||
line_class: 'svg_ani_flow'
|
||||
}
|
||||
|
||||
export default class Config extends PublicConfigClass implements CreateComponentType {
|
||||
public key = PipelineVConfig.key
|
||||
public attr = { ...chartInitConfig, w: 15, h: 500, zIndex: -1 }
|
||||
public chartConfig = cloneDeep(PipelineVConfig)
|
||||
public option = cloneDeep(option)
|
||||
}
|
||||
77
src/packages/components/Decorates/Mores/PipelineV/config.vue
Normal file
77
src/packages/components/Decorates/Mores/PipelineV/config.vue
Normal file
@ -0,0 +1,77 @@
|
||||
<template>
|
||||
<CollapseItem name="管道" :expanded="true">
|
||||
<SettingItemBox name="默认颜色">
|
||||
<SettingItem>
|
||||
<n-select v-model:value="optionData.color_type" :options="colorOptions" @update:value="handleColorChange" />
|
||||
</SettingItem>
|
||||
</SettingItemBox>
|
||||
<SettingItemBox name="管道颜色">
|
||||
<SettingItem>
|
||||
<n-color-picker size="small" :modes="['hex']" v-model:value="optionData.o_color"></n-color-picker>
|
||||
</SettingItem>
|
||||
</SettingItemBox>
|
||||
<SettingItemBox name="水流颜色">
|
||||
<SettingItem>
|
||||
<n-color-picker size="small" :modes="['hex']" v-model:value="optionData.i_color"></n-color-picker>
|
||||
</SettingItem>
|
||||
</SettingItemBox>
|
||||
<SettingItemBox name="流向">
|
||||
<SettingItem>
|
||||
<n-select v-model:value="optionData.line_class" :options="options" />
|
||||
</SettingItem>
|
||||
</SettingItemBox>
|
||||
</CollapseItem>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { PropType, ref } from 'vue'
|
||||
import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting'
|
||||
import { option } from './config'
|
||||
|
||||
const props = defineProps({
|
||||
optionData: {
|
||||
type: Object as PropType<typeof option>,
|
||||
required: true
|
||||
}
|
||||
})
|
||||
|
||||
const options = ref([
|
||||
{
|
||||
value: 'svg_ani_flow',
|
||||
label: '正向'
|
||||
},
|
||||
{
|
||||
value: 'svg_ani_flow_back',
|
||||
label: '反向'
|
||||
},
|
||||
{
|
||||
value: 'svg_ani_flow_stop',
|
||||
label: '停止'
|
||||
}
|
||||
])
|
||||
|
||||
const colorOptions = ref([
|
||||
{
|
||||
value: 1,
|
||||
label: '蓝'
|
||||
},
|
||||
{
|
||||
value: 2,
|
||||
label: '黄'
|
||||
}
|
||||
])
|
||||
|
||||
// 默认颜色
|
||||
const handleColorChange = (e: number) => {
|
||||
switch (e) {
|
||||
case 1:
|
||||
props.optionData.o_color = '#0a7ae2'
|
||||
props.optionData.i_color = '#119bfa'
|
||||
break
|
||||
case 2:
|
||||
props.optionData.o_color = '#ff9d00'
|
||||
props.optionData.i_color = '#f7ea37'
|
||||
break
|
||||
}
|
||||
}
|
||||
</script>
|
||||
14
src/packages/components/Decorates/Mores/PipelineV/index.ts
Normal file
14
src/packages/components/Decorates/Mores/PipelineV/index.ts
Normal file
@ -0,0 +1,14 @@
|
||||
import { ConfigType, PackagesCategoryEnum } from '@/packages/index.d'
|
||||
import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d'
|
||||
|
||||
export const PipelineVConfig: ConfigType = {
|
||||
key: 'PipelineV',
|
||||
chartKey: 'VPipelineV',
|
||||
conKey: 'VCPipelineV',
|
||||
title: '管道-纵向',
|
||||
category: ChatCategoryEnum.MORE,
|
||||
categoryName: ChatCategoryEnumName.MORE,
|
||||
package: PackagesCategoryEnum.DECORATES,
|
||||
image: 'Pipeline_V.png'
|
||||
}
|
||||
|
||||
115
src/packages/components/Decorates/Mores/PipelineV/index.vue
Normal file
115
src/packages/components/Decorates/Mores/PipelineV/index.vue
Normal file
@ -0,0 +1,115 @@
|
||||
<template>
|
||||
<div class="go-decorates-line">
|
||||
<svg :width="w" :height="h">
|
||||
<line :x1="w / 2" :y1="0" :x2="w / 2" :y2="h" :stroke="o_color" :stroke-width="w"></line>
|
||||
<line :x1="w / 2" :y1="0" :x2="w / 2" :y2="h" :stroke="i_color" :stroke-width="w / 2" :class="line_class"></line>
|
||||
</svg>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { PropType, toRefs } from 'vue'
|
||||
import { CreateComponentType } from '@/packages/index.d'
|
||||
|
||||
const props = defineProps({
|
||||
chartConfig: {
|
||||
type: Object as PropType<CreateComponentType>,
|
||||
required: true
|
||||
}
|
||||
})
|
||||
|
||||
const { w, h } = toRefs(props.chartConfig.attr)
|
||||
const { o_color, i_color, line_class } = toRefs(props.chartConfig.option)
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.go-decorates-line {
|
||||
font-size: 0;
|
||||
}
|
||||
|
||||
/* 正向流动效果 */
|
||||
.svg_ani_flow {
|
||||
stroke-dasharray: 1000;
|
||||
stroke-dashoffset: 1000;
|
||||
animation: ani_flow 10s linear infinite;
|
||||
animation-fill-mode: forwards;
|
||||
-webkit-animation: ani_flow 10s linear infinite;
|
||||
-webkit-animation-fill-mode: forwards;
|
||||
}
|
||||
|
||||
@keyframes ani_flow {
|
||||
from {
|
||||
stroke-dasharray: 10, 5;
|
||||
}
|
||||
|
||||
to {
|
||||
stroke-dasharray: 13, 5;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes ani_flow {
|
||||
from {
|
||||
stroke-dasharray: 10, 5;
|
||||
}
|
||||
|
||||
to {
|
||||
stroke-dasharray: 13, 5;
|
||||
}
|
||||
}
|
||||
|
||||
/* 停止流动效果 */
|
||||
.svg_ani_flow_stop {
|
||||
stroke-dasharray: 1000;
|
||||
stroke-dashoffset: 1000;
|
||||
animation: ani_flow_stop 10s linear infinite;
|
||||
animation-fill-mode: forwards;
|
||||
-webkit-animation: ani_flow_stop 10s linear infinite;
|
||||
-webkit-animation-fill-mode: forwards;
|
||||
}
|
||||
|
||||
@keyframes ani_flow_stop {
|
||||
from {
|
||||
stroke-dasharray: 10, 5;
|
||||
}
|
||||
|
||||
to {
|
||||
stroke-dasharray: 10, 5;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes ani_flow_stop {
|
||||
from {
|
||||
stroke-dasharray: 10, 5;
|
||||
}
|
||||
|
||||
to {
|
||||
stroke-dasharray: 10, 5;
|
||||
}
|
||||
}
|
||||
/* 反向流动效果 */
|
||||
.svg_ani_flow_back {
|
||||
stroke-dasharray: 1000;
|
||||
stroke-dashoffset: 1000;
|
||||
animation: ani_flow_back 10s linear infinite;
|
||||
animation-fill-mode: forwards;
|
||||
-webkit-animation: ani_flow_back 10s linear infinite;
|
||||
-webkit-animation-fill-mode: forwards;
|
||||
}
|
||||
|
||||
@keyframes ani_flow_back {
|
||||
from {
|
||||
stroke-dasharray: 13, 5;
|
||||
}
|
||||
|
||||
to {
|
||||
stroke-dasharray: 10, 5;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes ani_flow_back {
|
||||
from {
|
||||
stroke-dasharray: 13, 5;
|
||||
}
|
||||
|
||||
to {
|
||||
stroke-dasharray: 10, 5;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -3,5 +3,7 @@ import { TimeCommonConfig } from './TimeCommon/index'
|
||||
import { ClockConfig } from './Clock/index'
|
||||
import { CountDownConfig } from './CountDown/index'
|
||||
import { FlipperNumberConfig } from './FlipperNumber'
|
||||
import { PipelineHConfig } from './PipelineH/index'
|
||||
import { PipelineVConfig } from './PipelineV/index'
|
||||
|
||||
export default [NumberConfig, FlipperNumberConfig, TimeCommonConfig, CountDownConfig, ClockConfig]
|
||||
export default [NumberConfig, FlipperNumberConfig, TimeCommonConfig, CountDownConfig, ClockConfig, PipelineHConfig, PipelineVConfig]
|
||||
|
||||
@ -86,8 +86,18 @@
|
||||
},
|
||||
"legend": {
|
||||
"show": true,
|
||||
"top": "5%",
|
||||
"type": "scroll",
|
||||
"x": "center",
|
||||
"y": "top",
|
||||
"icon": "circle",
|
||||
"orient": "horizontal",
|
||||
"textStyle": {
|
||||
"color": "#B9B8CE",
|
||||
"fontSize": 18
|
||||
},
|
||||
"itemHeight": 15,
|
||||
"itemWidth": 15,
|
||||
"pageTextStyle": {
|
||||
"color": "#B9B8CE"
|
||||
}
|
||||
},
|
||||
|
||||
@ -222,6 +222,7 @@ $halfCenterHeight: 50px;
|
||||
height: 100px;
|
||||
max-width: 140px;
|
||||
border-radius: 6px;
|
||||
object-fit: contain;
|
||||
@extend .go-transition;
|
||||
}
|
||||
}
|
||||
@ -289,6 +290,7 @@ $halfCenterHeight: 50px;
|
||||
height: $halfCenterHeight;
|
||||
width: auto;
|
||||
transition: all 0.2s;
|
||||
object-fit: contain;
|
||||
}
|
||||
}
|
||||
.list-bottom {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user