mirror of
https://gitee.com/dromara/go-view.git
synced 2025-02-24 00:02:51 +08:00
feat: 增加管道组件
This commit is contained in:
parent
8867a489a2
commit
3d4e05b514
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 |
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]
|
||||
|
Loading…
Reference in New Issue
Block a user