徐景良 2025-02-18 11:02:58 +08:00
commit ec86723b1a
93 changed files with 1294 additions and 719 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

View File

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 740 B

View File

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 71 KiB

View File

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 93 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB

View File

Before

Width:  |  Height:  |  Size: 140 KiB

After

Width:  |  Height:  |  Size: 140 KiB

View File

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

View File

Before

Width:  |  Height:  |  Size: 187 KiB

After

Width:  |  Height:  |  Size: 187 KiB

View File

Before

Width:  |  Height:  |  Size: 111 KiB

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 KiB

View File

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 70 KiB

View File

@ -6,13 +6,7 @@ import cloneDeep from 'lodash/cloneDeep'
export const option = {
boxId: 'linearGradientColorLeft',
borderTitle: '电子沙盘',
borderTitleWidth: 456,
borderTitleHeight: 190,
borderTitleSize: 18,
borderTitleColor: '#fff',
colors: ['#0E8A6D', '#02261C'],
backgroundColor: '#00000000'
colors: ['#0E8A6D','#0F9F73','#054E3C','#02261C','#098965','#052C31','#031F1A','#073128','#1F926B','#FEFEFE']
}
export default class Config extends PublicConfigClass implements CreateComponentType {

View File

@ -1,6 +1,6 @@
<template>
<CollapseItem name="标题" :expanded="true">
<SettingItemBox name="Id" :alone="true">
<CollapseItem name="内容" :expanded="true">
<SettingItemBox name="ID" :alone="true">
<n-input
size="small"
v-model:value="optionData.boxId"
@ -9,47 +9,7 @@
placeholder="请输入Id"
/>
</SettingItemBox>
<SettingItemBox name="内容" :alone="true">
<n-input
size="small"
v-model:value="optionData.borderTitle"
:minlength="1"
type="text"
placeholder="请输入标题内容"
/>
</SettingItemBox>
<SettingItemBox name="样式">
<SettingItem name="颜色">
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.borderTitleColor"
></n-color-picker>
</SettingItem>
<SettingItem name="文字大小">
<n-input-number
size="small"
v-model:value="optionData.borderTitleSize"
:min="12"
/>
</SettingItem>
<SettingItem name="高度">
<n-input-number
size="small"
v-model:value="optionData.borderTitleHeight"
:min="24"
/>
</SettingItem>
<SettingItem name="宽度">
<n-input-number
size="small"
v-model:value="optionData.borderTitleWidth"
:min="50"
:step="10"
/>
</SettingItem>
</SettingItemBox>
</CollapseItem>
<CollapseItem name="边框" :expanded="true">
@ -76,30 +36,6 @@
</SettingItemBox>
</CollapseItem>
<CollapseItem name="动画" :expanded="true">
<SettingItemBox name="速度(s)">
<SettingItem>
<n-input-number
v-model:value="optionData.dur"
size="small"
:step="0.5"
:min="0.5"
></n-input-number>
</SettingItem>
</SettingItemBox>
</CollapseItem>
<CollapseItem name="背景" :expanded="true">
<SettingItemBox name="颜色">
<SettingItem>
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.backgroundColor"
></n-color-picker>
</SettingItem>
</SettingItemBox>
</CollapseItem>
</template>
<script setup lang="ts">

View File

@ -2,57 +2,54 @@
<div class="go-title-02">
<svg :width="w" :height="h">
<defs>
<linearGradient x1="101.442215%" y1="50%" x2="17.1246178%" y2="50%" :id="`1-${boxId}`" >
<stop :stop-color="colors[1]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[1]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="100%" y1="50%" x2="0%" y2="50%" :id="`2-${boxId}`">
<stop :stop-color="colors[0]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[0]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="100%" y1="50%" x2="0%" y2="50%" :id="`3-${boxId}`">
<stop :stop-color="colors[0]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[0]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="99.4839755%" :id="`4-${boxId}`">
<stop :stop-color="colors[0]" offset="0%"></stop>
<stop :stop-color="colors[0]" offset="50.0147947%"></stop>
<stop :stop-color="colors[0]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" :id="`5-${boxId}`">
<stop :stop-color="colors[1]" offset="0%"></stop>
<stop :stop-color="colors[1]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="101.442215%" y1="50%" x2="17.1246178%" y2="50%" :id="`1-${boxId}`">
<stop :stop-color="colors[0]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[1]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="100%" y1="50%" x2="0%" y2="50%" :id="`2-${boxId}`">
<stop :stop-color="colors[2]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[3]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="100%" y1="50%" x2="0%" y2="50%" :id="`3-${boxId}`">
<stop :stop-color="colors[2]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[4]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="0%" y1="50%" x2="100%" y2="50%" :id="`33-${boxId}`">
<stop :stop-color="colors[2]" stop-opacity="0" offset="0"></stop>
<stop :stop-color="colors[4]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="99.4839755%" :id="`4-${boxId}`">
<stop :stop-color="colors[5]" offset="0%"></stop>
<stop :stop-color="colors[6]" offset="50.0147947%"></stop>
<stop :stop-color="colors[7]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" :id="`5-${boxId}`">
<stop :stop-color="colors[8]" offset="0%"></stop>
<stop :stop-color="colors[9]" offset="100%"></stop>
</linearGradient>
</defs>
<g id="监测平台" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="林业防火-导航页-图标区" transform="translate(-138, -5)">
<g id="图形-左" transform="translate(138, 8)">
<polygon class="polychild1" id="矩形" :stroke="`url(#1-${boxId})`" stroke-width="2" points="128 22 455 22 455 162 128 162 186 89.8917957"></polygon>
<polygon id="矩形" :fill="`url(#2-${boxId})`" points="128 22 455 22 455 162 128 162 128 89.637655"></polygon>
<!-- w: 456, h: 190 -->
<!-- <polygon
id="矩形" stroke-width="2"
:stroke="`url(#1-${boxId})`"
:points="`128 ${h - 22} 455 ${h - 22} 455 ${h - 162} 128 ${h - 162} 186 ${h - 89.8917957}`"
/>
<!-- <polygon class="polychild1" id="矩形" :stroke="`url(#1-${boxId})`" stroke-width="2" points="128 22 455 22 455 162 128 162 186 89.8917957"></polygon> -->
<!-- <polygon id="矩形" :fill="`url(#2-${boxId})`" points="128 22 455 22 455 162 128 162 128 89.637655"></polygon> -->
<polygon
id="矩形"
:fill="`url(#2-${boxId})`"
:points="`${w - 128} 22 ${w - 455} 22 ${w - 455} 162 ${w - 128} 162 ${w - 128} 89.637655`"
/> -->
<rect id="矩形" :fill="`url(#3-${boxId})`" opacity="0.752117339" x="276" y="60" width="123" height="65"></rect>
<rect id="矩形" :fill="`url(#3-${boxId})`" opacity="0.752117339" transform="translate(214.5, 92.5) scale(-1, 1) translate(-214.5, -92.5)" x="153" y="60" width="123" height="65"></rect>
:stroke="`url(#1-${boxId})`"
stroke-width="2"
:points="`${w/4} ${h/4*0.5} ${w} ${h/4*0.5} ${w} ${h/4*3.5} ${w/4} ${h/4*3.5} ${w/2.6} ${h/2}`"
/>
<polygon
id="矩形" :fill="`url(#2-${boxId})`"
:points="`${w/4} ${h/4*0.5} ${w} ${h/4*0.5} ${w} ${h/4*3.5} ${w/4} ${h/4*3.5} ${w/2.6} ${h/2}`"
/>
<rect id="矩形" :fill="`url(#3-${boxId})`" opacity="0.752117339" :x="`${w/3*2}`" :y="`${h/3}`" :width="`${w/4}`" :height="`${h/3}`"></rect>
<rect id="矩形" :fill="`url(#33-${boxId})`" opacity="0.752117339" :x="`${w/3*2-w/4}`" :y="`${h/3}`" :width="`${w/4}`" :height="`${h/3}`"></rect>
<g id="编组-6">
<!-- w: 456, h: 190 -->
<polygon id="多边形" :fill="`url(#4-${boxId})`" points="92 0 171.674337 46 171.674337 138 92 184 12.3256629 138 12.3256629 46"></polygon>
<polygon id="多边形" :stroke="`url(#5-${boxId})`" stroke-width="4" points="92 0 171.674337 46 171.674337 138 92 184 12.3256629 138 12.3256629 46"></polygon>
<!-- w: 456, h: 190 -->
<!-- <polygon
id="多边形"
:fill="`url(#4-${boxId})`"
:points="`${w - 92} 0 ${w - 171.674337} 46 ${w - 171.674337} 138 ${w - 92} 184 ${w - 12.3256629} 138 ${w - 12.3256629} 46`"
/> -->
<!-- <polygon
<!-- <polygon id="多边形" :fill="`url(#4-${boxId})`" points="92 0 171.674337 46 171.674337 138 92 184 12.3256629 138 12.3256629 46"></polygon> -->
<!-- <polygon id="多边形" :stroke="`url(#5-${boxId})`" stroke-width="4" points="92 0 171.674337 46 171.674337 138 92 184 12.3256629 138 12.3256629 46"></polygon> -->
<polygon
id="多边形"
:fill="`url(#4-${boxId})`"
:points="`${w/4.8} 5 ${w/2.6} ${h/4} ${w/2.6} ${h/4*3} ${w/4.8} ${h-5} 12.3256629 ${h/4*3} 12.3256629 ${h/4}`"
@ -61,7 +58,7 @@
id="多边形" stroke-width="4"
:stroke="`url(#5-${boxId})`"
:points="`${w/4.8} 5 ${w/2.6} ${h/4} ${w/2.6} ${h/4*3} ${w/4.8} ${h-5} 12.3256629 ${h/4*3} 12.3256629 ${h/4}`"
/> -->
/>
</g>
</g>
</g>
@ -87,12 +84,6 @@ const { w, h } = toRefs(props.chartConfig.attr)
const {
colors,
boxId,
borderTitle,
borderTitleColor,
borderTitleSize,
borderTitleHeight,
borderTitleWidth,
backgroundColor
} = toRefs(props.chartConfig.option)
</script>
@ -107,9 +98,5 @@ const {
position: absolute;
z-index: -1;
}
.text {
color: v-bind('borderTitleColor');
font-size: v-bind('borderTitleSize+"px"');
}
}
</style>

View File

@ -6,13 +6,7 @@ import cloneDeep from 'lodash/cloneDeep'
export const option = {
boxId: "linearGradientColorRight",
borderTitle: '',
borderTitleWidth: 456,
borderTitleHeight: 190,
borderTitleSize: 18,
borderTitleColor: '#fff',
colors: ['#0E8A6D', '#02261C'],
backgroundColor: '#00000000'
colors: ['#0E8A6D','#0F9F73','#054E3C','#02261C','#098965','#052C31','#031F1A','#073128','#1F926B','#FEFEFE']
}
export default class Config extends PublicConfigClass implements CreateComponentType {

View File

@ -1,6 +1,6 @@
<template>
<CollapseItem name="标题" :expanded="true">
<SettingItemBox name="Id" :alone="true">
<CollapseItem name="内容" :expanded="true">
<SettingItemBox name="ID" :alone="true">
<n-input
size="small"
v-model:value="optionData.boxId"
@ -8,48 +8,7 @@
type="text"
placeholder="请输入Id"
/>
</SettingItemBox>
<SettingItemBox name="内容" :alone="true">
<n-input
size="small"
v-model:value="optionData.borderTitle"
:minlength="1"
type="text"
placeholder="请输入标题内容"
/>
</SettingItemBox>
<SettingItemBox name="样式">
<SettingItem name="颜色">
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.borderTitleColor"
></n-color-picker>
</SettingItem>
<SettingItem name="文字大小">
<n-input-number
size="small"
v-model:value="optionData.borderTitleSize"
:min="12"
/>
</SettingItem>
<SettingItem name="高度">
<n-input-number
size="small"
v-model:value="optionData.borderTitleHeight"
:min="24"
/>
</SettingItem>
<SettingItem name="宽度">
<n-input-number
size="small"
v-model:value="optionData.borderTitleWidth"
:min="50"
:step="10"
/>
</SettingItem>
</SettingItemBox>
</SettingItemBox>
</CollapseItem>
<CollapseItem name="边框" :expanded="true">
@ -76,30 +35,6 @@
</SettingItemBox>
</CollapseItem>
<CollapseItem name="动画" :expanded="true">
<SettingItemBox name="速度(s)">
<SettingItem>
<n-input-number
v-model:value="optionData.dur"
size="small"
:step="0.5"
:min="0.5"
></n-input-number>
</SettingItem>
</SettingItemBox>
</CollapseItem>
<CollapseItem name="背景" :expanded="true">
<SettingItemBox name="颜色">
<SettingItem>
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.backgroundColor"
></n-color-picker>
</SettingItem>
</SettingItemBox>
</CollapseItem>
</template>
<script setup lang="ts">

View File

@ -3,39 +3,64 @@
<svg :width="w" :height="h">
<title>图形-@2x</title>
<defs>
<linearGradient x1="101.442215%" y1="50%" x2="17.1246178%" y2="50%" :id="`11-${boxId}`">
<stop :stop-color="colors[1]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[1]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="100%" y1="50%" x2="0%" y2="50%" :id="`22-${boxId}`">
<stop :stop-color="colors[0]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[0]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="100%" y1="50%" x2="0%" y2="50%" :id="`33-${boxId}`">
<stop :stop-color="colors[0]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[0]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="99.4839755%" :id="`44-${boxId}`">
<stop :stop-color="colors[0]" offset="0%"></stop>
<stop :stop-color="colors[0]" offset="50.0147947%"></stop>
<stop :stop-color="colors[0]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" :id="`55-${boxId}`">
<stop :stop-color="colors[1]" offset="0%"></stop>
<stop :stop-color="colors[1]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="101.442215%" y1="50%" x2="17.1246178%" y2="50%" :id="`11-${boxId}`">
<stop :stop-color="colors[0]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[1]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="100%" y1="50%" x2="0%" y2="50%" :id="`22-${boxId}`">
<stop :stop-color="colors[2]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[3]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="100%" y1="50%" x2="0%" y2="50%" :id="`33-${boxId}`">
<stop :stop-color="colors[2]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[4]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="0%" y1="50%" x2="100%" y2="50%" :id="`333-${boxId}`">
<stop :stop-color="colors[2]" stop-opacity="0" offset="0"></stop>
<stop :stop-color="colors[4]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="99.4839755%" :id="`44-${boxId}`">
<stop :stop-color="colors[5]" offset="0%"></stop>
<stop :stop-color="colors[6]" offset="50.0147947%"></stop>
<stop :stop-color="colors[7]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" :id="`55-${boxId}`">
<stop :stop-color="colors[8]" offset="0%"></stop>
<stop :stop-color="colors[9]" offset="100%"></stop>
</linearGradient>
</defs>
<g id="监测平台" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="林业防火-导航页-图标区" transform="translate(-747, -5)">
<g id="图形-右" transform="translate(975.5, 100) scale(-1, 1) translate(-975.5, -100)translate(748, 8)">
<polygon id="矩形" :stroke="`url(#11-${boxId})`" stroke-width="2" points="128 22 455 22 455 162 128 162 186 89.8917957"></polygon>
<polygon id="矩形" :fill="`url(#22-${boxId})`" points="128 22 455 22 455 162 128 162 128 89.637655"></polygon>
<rect id="矩形" :fill="`url(#33-${boxId})`" x="276" y="60" width="123" height="65"></rect>
<rect id="矩形" :fill="`url(#33-${boxId})`" transform="translate(214.5, 92.5) scale(-1, 1) translate(-214.5, -92.5)" x="153" y="60" width="123" height="65"></rect>
<!-- <polygon id="矩形" :stroke="`url(#11-${boxId})`" stroke-width="2" points="128 22 455 22 455 162 128 162 186 89.8917957"></polygon> -->
<!-- <polygon id="矩形" :fill="`url(#22-${boxId})`" points="128 22 455 22 455 162 128 162 128 89.637655"></polygon> -->
<polygon
id="矩形"
:stroke="`url(#11-${boxId})`"
stroke-width="2"
:points="`${-w/1.2+500} ${h/4*0.5} 455 ${h/4*0.5} 455 ${h/4*3.5} ${-w/1.2+470} ${h/4*3.5} ${-w/1.2+560} ${h/2}`"
/>
<polygon
id="矩形" :fill="`url(#22-${boxId})`"
:points="`${-w/1.2+500} ${h/4*0.5} 455 ${h/4*0.5} 455 ${h/4*3.5} ${-w/1.2+470} ${h/4*3.5} ${-w/1.2+470} ${h/2}`"
/>
<rect id="矩形" :fill="`url(#33-${boxId})`" :x="`${-w/1.2+570+w/4}`" :y="`${h/3}`" :width="`${w/4}`" :height="`${h/3}`"></rect>
<rect id="矩形" :fill="`url(#333-${boxId})`" :x="`${-w/1.2+570}`" :y="`${h/3}`" :width="`${w/4}`" :height="`${h/3}`"></rect>
<g id="编组-6">
<polygon id="多边形" :fill="`url(#44-${boxId})`" points="92 0 171.674337 46 171.674337 138 92 184 12.3256629 138 12.3256629 46"></polygon>
<polygon id="多边形" :stroke="`url(#55-${boxId})`" stroke-width="4" points="92 0 171.674337 46 171.674337 138 92 184 12.3256629 138 12.3256629 46"></polygon>
</g>
<!-- <polygon id="多边形" :fill="`url(#44-${boxId})`" points="92 0 171.674337 46 171.674337 138 92 184 12.3256629 138 12.3256629 46"></polygon> -->
<!-- <polygon id="多边形" :stroke="`url(#55-${boxId})`" stroke-width="4" points="92 0 171.674337 46 171.674337 138 92 184 12.3256629 138 12.3256629 46"></polygon> -->
<!-- w: 456, h: 190, -->
<polygon
id="多边形"
:fill="`url(#44-${boxId})`"
:points="`${-w/1.2+470} 5 ${-w/1.5+480} ${h/4} ${-w/1.5+480} ${h/4*3} ${-w/1.2+470} ${h-5} ${-w + 465} ${h/4*3} ${-w + 465} ${h/4}`"
/>
<polygon
id="多边形" stroke-width="4"
:stroke="`url(#55-${boxId})`"
:points="`${-w/1.2+470} 5 ${-w/1.5+480} ${h/4} ${-w/1.5+480} ${h/4*3} ${-w/1.2+470} ${h-5} ${-w + 465} ${h/4*3} ${-w + 465} ${h/4}`"
/>
</g>
</g>
</g>
</g>
@ -59,13 +84,7 @@ const filterId = `border-box-04-filterId-${getUUID()}`
const { w, h } = toRefs(props.chartConfig.attr)
const {
boxId,
colors,
borderTitle,
borderTitleColor,
borderTitleSize,
borderTitleHeight,
borderTitleWidth,
backgroundColor
colors
} = toRefs(props.chartConfig.option)
</script>
@ -89,9 +108,5 @@ const {
.stroke {
stroke: v-bind('colors[1]');
}
.text {
color: v-bind('borderTitleColor');
font-size: v-bind('borderTitleSize+"px"');
}
}
</style>

View File

@ -0,0 +1,17 @@
import { PublicConfigClass } from '@/packages/public'
import { chartInitConfig } from '@/settings/designSetting'
import { CreateComponentType } from '@/packages/index.d'
import { ContentBackgroundConfig } from './index'
import cloneDeep from 'lodash/cloneDeep'
export const option = {
boxId: 'linearGradientContentBackground',
colors: ['#06463A','#02221B'],
}
export default class Config extends PublicConfigClass implements CreateComponentType {
public key = ContentBackgroundConfig.key
public attr = { ...chartInitConfig, w: 401, h: 150, zIndex: 1 }
public chartConfig = cloneDeep(ContentBackgroundConfig)
public option = cloneDeep(option)
}

View File

@ -0,0 +1,53 @@
<template>
<CollapseItem name="内容" :expanded="true">
<SettingItemBox name="ID" :alone="true">
<n-input
size="small"
v-model:value="optionData.boxId"
:minlength="1"
type="text"
placeholder="请输入Id"
/>
</SettingItemBox>
</CollapseItem>
<CollapseItem name="样式" :expanded="true">
<SettingItemBox
:name="`颜色-${index + 1}`"
v-for="(item, index) in optionData.colors"
:key="index"
>
<SettingItem name="颜色">
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.colors[index]"
></n-color-picker>
</SettingItem>
<SettingItem>
<n-button
size="small"
@click="optionData.colors[index] = option.colors[index]"
>
恢复默认
</n-button>
</SettingItem>
</SettingItemBox>
</CollapseItem>
</template>
<script setup lang="ts">
import { PropType } 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
}
})
</script>

View File

@ -0,0 +1,14 @@
import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d';
import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d';
export const ContentBackgroundConfig: ConfigType = {
key: 'ContentBackground',
chartKey: 'VContentBackground',
conKey: 'VCContentBackground',
title: '模块背景色',
category: ChatCategoryEnum.TITLE,
categoryName: ChatCategoryEnumName.TITLE,
package: PackagesCategoryEnum.UNITS,
chartFrame: ChartFrameEnum.STATIC,
image: 'contentbgleft.png',
};

View File

@ -0,0 +1,73 @@
<template>
<div class="go-title-03">
<svg :width="w" :height="h">
<title>底部背景-左1@2x</title>
<defs>
<linearGradient x1="100%" y1="50%" x2="0%" y2="50%" :id="`1-${boxId}`">
<stop :stop-color="colors[0]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[1]" offset="100%"></stop>
</linearGradient>
</defs>
<g id="监测平台" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.687237694">
<g id="林业防火-智览-切图版" transform="translate(-42, -94)" :fill="`url(#1-${boxId})`">
<g id="可视化" transform="translate(-11, -21)">
<g id="B" transform="translate(53, 114)">
<g id="标题模块--左侧1" transform="translate(0, -0)">
<g id="边框" transform="translate(0.5, 1)">
<!-- w: 401, h: 150, -->
<polygon
id="面"
:points="`0.5 0 ${w-1.3} 0 ${w-1.5} ${h-1.3} ${w/2.19} ${h-1.3} 0.5 ${h-1.3} 0.5 ${h/1.42} ${h/2.09}`"
></polygon>
points="0.499001996 0 399.700599 0 399.539646 148.702595
183.224719 148.702595 0.499001996 148.702595 0.499001996 105.987857 0.499001996 71.8606827"
</g>
</g>
</g>
</g>
</g>
</g>
</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 {
colors,
boxId
} = toRefs(props.chartConfig.option)
</script>
<style lang="scss" scoped>
@include go('title-03') {
position: relative;
display: flex;
justify-content: center;
align-items: center;
svg {
position: absolute;
z-index: -1;
}
.fill {
fill: v-bind('colors[0]');
}
.fill-none {
fill: none;
}
.stroke {
stroke: v-bind('colors[1]');
}
}
</style>

View File

@ -0,0 +1,17 @@
import { PublicConfigClass } from '@/packages/public'
import { chartInitConfig } from '@/settings/designSetting'
import { CreateComponentType } from '@/packages/index.d'
import { ContentTitleConfig } from './index'
import cloneDeep from 'lodash/cloneDeep'
export const option = {
boxId: 'linearGradientContentTitle',
colors: ['#08251E','#00A374','#11B472','#00FF8C','#00F4B6','#00FF77','#00BF6B','#00673F','#00683F','#72A18A','#1CC370'],
}
export default class Config extends PublicConfigClass implements CreateComponentType {
public key = ContentTitleConfig.key
public attr = { ...chartInitConfig, w: 401, h: 40, zIndex: 1 }
public chartConfig = cloneDeep(ContentTitleConfig)
public option = cloneDeep(option)
}

View File

@ -0,0 +1,53 @@
<template>
<CollapseItem name="内容" :expanded="true">
<SettingItemBox name="ID" :alone="true">
<n-input
size="small"
v-model:value="optionData.boxId"
:minlength="1"
type="text"
placeholder="请输入Id"
/>
</SettingItemBox>
</CollapseItem>
<CollapseItem name="样式" :expanded="true">
<SettingItemBox
:name="`颜色-${index + 1}`"
v-for="(item, index) in optionData.colors"
:key="index"
>
<SettingItem name="颜色">
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.colors[index]"
></n-color-picker>
</SettingItem>
<SettingItem>
<n-button
size="small"
@click="optionData.colors[index] = option.colors[index]"
>
恢复默认
</n-button>
</SettingItem>
</SettingItemBox>
</CollapseItem>
</template>
<script setup lang="ts">
import { PropType } 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
}
})
</script>

View File

@ -0,0 +1,14 @@
import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d';
import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d';
export const ContentTitleConfig: ConfigType = {
key: 'ContentTitle',
chartKey: 'VContentTitle',
conKey: 'VCContentTitle',
title: '模块标题',
category: ChatCategoryEnum.TITLE,
categoryName: ChatCategoryEnumName.TITLE,
package: PackagesCategoryEnum.UNITS,
chartFrame: ChartFrameEnum.STATIC,
image: 'texttitlebg.png',
};

View File

@ -0,0 +1,117 @@
<template>
<div class="go-title-03">
<svg :width="w" :height="h">
<title>小标题-三站覆盖面积@2x</title>
<defs>
<linearGradient x1="97.3499803%" y1="112.35863%" x2="0%" y2="112.35863%" :id="`1-${boxId}`">
<stop :stop-color="colors[0]" stop-opacity="0.1742622" offset="0%"></stop>
<stop :stop-color="colors[1]" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="0%" y1="50%" x2="100%" y2="50%" :id="`2-${boxId}`">
<stop :stop-color="colors[2]" offset="0%"></stop>
<stop :stop-color="colors[1]" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<polygon id="path-3" points="10.9822114 0 112.704666 0 119.46341 11.2799213 173.1989 11.2799213 270.2884 11.2799213 270.2884 38.3517324 139.186577 38.3517324 0 38.3517324 0 11.1814815"></polygon>
<radialGradient cx="50%" cy="0%" fx="50%" fy="0%" r="100%" gradientTransform="translate(0.5, 0), scale(0.243, 1), rotate(90), scale(1, 2.7755), translate(-0.5, -0)" :id="`5-${boxId}`">
<stop :stop-color="colors[3]" offset="0%"></stop>
<stop :stop-color="colors[4]" stop-opacity="0" offset="100%"></stop>
</radialGradient>
<filter x="-3.0%" y="-12.5%" width="106.1%" height="124.9%" filterUnits="objectBoundingBox" :id="`6-${boxId}`">
<feGaussianBlur stdDeviation="4.31844888" in="SourceGraphic"></feGaussianBlur>
</filter>
<linearGradient x1="27.2222213%" y1="49.528366%" x2="102.926609%" y2="50.2892453%" :id="`7-${boxId}`">
<stop :stop-color="colors[5]" offset="0%"></stop>
<stop :stop-color="colors[6]" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="100%" y1="50%" x2="0%" y2="50%" :id="`8-${boxId}`">
<stop :stop-color="colors[7]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[8]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="100%" y1="50%" x2="0%" y2="50%" :id="`9-${boxId}`">
<stop :stop-color="colors[9]" stop-opacity="0" offset="0%"></stop>
<stop stop-color="#1CC370" offset="100%"></stop>
</linearGradient>
</defs>
<g id="监测平台" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="林业防火-智览-切图版" transform="translate(-1492, -409)">
<g id="可视化" transform="translate(-11, -21)">
<g id="A" transform="translate(1502.5, 113)">
<g id="标题模块--右侧2" transform="translate(0, 318)">
<g id="小标题-三站覆盖面积" transform="translate(1.5, 0)">
<g id="小标题">
<polygon id="矩形" :fill="`url(#1-${boxId})`" points="10.3064025 0 166.362718 0 176.570151 13.6763066 255.888803 13.6763066 399.202062 13.6763066 399.201597 38.3517324 205.452516 38.3517324 0 38.3517324 0 11.1814815"></polygon>
<g id="椭圆形">
<mask id="mask-4" fill="white">
<use xlink:href="#path-3"></use>
</mask>
<use id="蒙版" :fill="`url(#2-${boxId})`" xlink:href="#path-3"></use>
<ellipse :fill="`url(#5-${boxId})`" :filter="`url(#6-${boxId})`" mask="url(#mask-4)" cx="180.697047" cy="25.5190419" rx="214" ry="52"></ellipse>
</g>
<polyline id="路径" :stroke="`url(#7-${boxId})`" stroke-width="0.616921269" points="0 25.7188334 0 11.1814815 11.0190925 0 177.866737 0 188.53316 13.2759293 264.809581 13.2759293"></polyline>
<polygon id="矩形" :fill="`url(#8-${boxId})`" points="118.3 2.99401198 393.561275 2.99401198 393.561275 9.76196476 122.229351 9.76196476"></polygon>
<polygon id="路径-11" fill="#EBBE10" points="0 0 0 7.33194884 7.88666648 0"></polygon>
<g id="编组-2" opacity="0.691816057" transform="translate(370.7821, 6.5393) scale(-1, -1) translate(-370.7821, -6.5393)translate(345.3094, 3.992)" fill="#00C157">
<polygon id="矩形" opacity="0.558652605" points="46.5583547 0 50.945502 0 46.48422 5.0945502 42.0970727 5.0945502"></polygon>
<polygon id="矩形备份" opacity="0.385865711" points="38.2461939 0 42.6333411 0 38.1720591 5.0945502 33.7849118 5.0945502"></polygon>
<polygon id="矩形备份-2" opacity="0.321045648" points="29.6658988 0 34.0530461 0 29.5917641 5.0945502 25.2046168 5.0945502"></polygon>
<polygon id="矩形备份-3" opacity="0.191528" points="21.3537379 0 25.7408852 0 21.2796032 5.0945502 16.8924559 5.0945502"></polygon>
<polygon id="矩形备份-4" opacity="0.123233" points="12.5053086 0 16.8924559 0 12.4311739 5.0945502 8.04402663 5.0945502"></polygon>
<polygon id="矩形备份-5" opacity="0.097781" points="4.46128201 0 8.84842929 0 4.38714728 5.0945502 0 5.0945502"></polygon>
</g>
</g>
<g id="装饰线" transform="translate(7.3051, 36.5255)">
<polygon id="矩形" fill="#EBBE10" points="1.58053304 0 11.6250344 0 10.0445013 1.82627297 0 1.82627297"></polygon>
<polygon id="矩形备份-13" fill="#4FE985" points="14.4276265 0 24.4721279 0 22.8284122 1.82627297 12.7839108 1.82627297"></polygon>
<polygon id="矩形备份-14" :fill="`url(#9-${boxId})`" points="27.2666802 0 390.822416 0 390.822416 1.82627297 25.5678216 1.82627297"></polygon>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</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 {
colors,
boxId
} = toRefs(props.chartConfig.option)
</script>
<style lang="scss" scoped>
@include go('title-03') {
position: relative;
display: flex;
justify-content: center;
align-items: center;
svg {
position: absolute;
z-index: -1;
}
.fill {
fill: v-bind('colors[0]');
}
.fill-none {
fill: none;
}
.stroke {
stroke: v-bind('colors[1]');
}
}
</style>

View File

@ -0,0 +1,17 @@
import { PublicConfigClass } from '@/packages/public'
import { chartInitConfig } from '@/settings/designSetting'
import { CreateComponentType } from '@/packages/index.d'
import { ContentTitle01Config } from './index'
import cloneDeep from 'lodash/cloneDeep'
export const option = {
boxId: 'linearGradientContentTitle01',
colors: [],
}
export default class Config extends PublicConfigClass implements CreateComponentType {
public key = ContentTitle01Config.key
public attr = { ...chartInitConfig, w: 401, h: 40, zIndex: 1 }
public chartConfig = cloneDeep(ContentTitle01Config)
public option = cloneDeep(option)
}

View File

@ -0,0 +1,20 @@
<template>
</template>
<script setup lang="ts">
import { PropType } 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
}
})
</script>

View File

@ -0,0 +1,14 @@
import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d';
import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d';
export const ContentTitle01Config: ConfigType = {
key: 'ContentTitle01',
chartKey: 'VContentTitle01',
conKey: 'VCContentTitle01',
title: '模块标题-01',
category: ChatCategoryEnum.TITLE,
categoryName: ChatCategoryEnumName.TITLE,
package: PackagesCategoryEnum.UNITS,
chartFrame: ChartFrameEnum.STATIC,
image: 'texttitlebg.png',
};

View File

@ -0,0 +1,46 @@
<template>
<div class="go-title-03">
<img :width="w" :height="h" src="/src/assets/images/chart/units/texttitle02bg.png" />
</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 {
colors,
boxId
} = toRefs(props.chartConfig.option)
</script>
<style lang="scss" scoped>
@include go('title-03') {
position: relative;
display: flex;
justify-content: center;
align-items: center;
svg {
position: absolute;
z-index: -1;
}
.fill {
fill: v-bind('colors[0]');
}
.fill-none {
fill: none;
}
.stroke {
stroke: v-bind('colors[1]');
}
}
</style>

View File

@ -0,0 +1,17 @@
import { PublicConfigClass } from '@/packages/public'
import { chartInitConfig } from '@/settings/designSetting'
import { CreateComponentType } from '@/packages/index.d'
import { ContentTitle02Config } from './index'
import cloneDeep from 'lodash/cloneDeep'
export const option = {
boxId: 'linearGradientContentTitle02',
colors: [],
}
export default class Config extends PublicConfigClass implements CreateComponentType {
public key = ContentTitle02Config.key
public attr = { ...chartInitConfig, w: 401, h: 40, zIndex: 1 }
public chartConfig = cloneDeep(ContentTitle02Config)
public option = cloneDeep(option)
}

View File

@ -0,0 +1,20 @@
<template>
</template>
<script setup lang="ts">
import { PropType } 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
}
})
</script>

View File

@ -0,0 +1,14 @@
import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d';
import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d';
export const ContentTitle02Config: ConfigType = {
key: 'ContentTitle02',
chartKey: 'VContentTitle02',
conKey: 'VCContentTitle02',
title: '模块标题-02',
category: ChatCategoryEnum.TITLE,
categoryName: ChatCategoryEnumName.TITLE,
package: PackagesCategoryEnum.UNITS,
chartFrame: ChartFrameEnum.STATIC,
image: 'texttitle02bg.png',
};

View File

@ -0,0 +1,46 @@
<template>
<div class="go-title-03">
<img :width="w" :height="h" src="/src/assets/images/chart/units/texttitlebg.png" />
</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 {
colors,
boxId
} = toRefs(props.chartConfig.option)
</script>
<style lang="scss" scoped>
@include go('title-03') {
position: relative;
display: flex;
justify-content: center;
align-items: center;
svg {
position: absolute;
z-index: -1;
}
.fill {
fill: v-bind('colors[0]');
}
.fill-none {
fill: none;
}
.stroke {
stroke: v-bind('colors[1]');
}
}
</style>

View File

@ -5,14 +5,8 @@ import { TitlesBtnConfig } from './index'
import cloneDeep from 'lodash/cloneDeep'
export const option = {
dur: 0.5,
borderTitle: '按钮',
borderTitleWidth: 124,
borderTitleHeight: 30,
borderTitleSize: 18,
borderTitleColor: '#fff',
colors: ['#0E8A6D', '#02261C'],
backgroundColor: '#00000000'
boxId: 'linearGradientTitlesLeftBtn',
colors: ['#131415','#008C47','#02C175','#02AD69','#008C46','#06C869','#02B56D','#EBBE10','#02C074'],
}
export default class Config extends PublicConfigClass implements CreateComponentType {

View File

@ -1,49 +1,16 @@
<template>
<CollapseItem name="标题" :expanded="true">
<SettingItemBox name="内容" :alone="true">
<CollapseItem name="内容" :expanded="true">
<SettingItemBox name="ID" :alone="true">
<n-input
size="small"
v-model:value="optionData.borderTitle"
v-model:value="optionData.boxId"
:minlength="1"
type="text"
placeholder="请输入标题内容"
placeholder="请输入Id"
/>
</SettingItemBox>
<SettingItemBox name="样式">
<SettingItem name="颜色">
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.borderTitleColor"
></n-color-picker>
</SettingItem>
<SettingItem name="文字大小">
<n-input-number
size="small"
v-model:value="optionData.borderTitleSize"
:min="12"
/>
</SettingItem>
<SettingItem name="高度">
<n-input-number
size="small"
v-model:value="optionData.borderTitleHeight"
:min="24"
/>
</SettingItem>
<SettingItem name="宽度">
<n-input-number
size="small"
v-model:value="optionData.borderTitleWidth"
:min="50"
:step="10"
/>
</SettingItem>
</SettingItemBox>
</SettingItemBox>
</CollapseItem>
<CollapseItem name="边框" :expanded="true">
<CollapseItem name="样式" :expanded="true">
<SettingItemBox
:name="`颜色-${index + 1}`"
v-for="(item, index) in optionData.colors"
@ -66,31 +33,6 @@
</SettingItem>
</SettingItemBox>
</CollapseItem>
<CollapseItem name="动画" :expanded="true">
<SettingItemBox name="速度(s)">
<SettingItem>
<n-input-number
v-model:value="optionData.dur"
size="small"
:step="0.5"
:min="0.5"
></n-input-number>
</SettingItem>
</SettingItemBox>
</CollapseItem>
<CollapseItem name="背景" :expanded="true">
<SettingItemBox name="颜色">
<SettingItem>
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.backgroundColor"
></n-color-picker>
</SettingItem>
</SettingItemBox>
</CollapseItem>
</template>
<script setup lang="ts">

View File

@ -5,7 +5,7 @@ export const TitlesBtnConfig: ConfigType = {
key: 'TitlesBtn',
chartKey: 'VTitlesBtn',
conKey: 'VCTitlesBtn',
title: '标题按钮',
title: '标题按钮',
category: ChatCategoryEnum.TITLE,
categoryName: ChatCategoryEnumName.TITLE,
package: PackagesCategoryEnum.UNITS,

View File

@ -3,32 +3,32 @@
<svg :width="w" :height="h">
<title>编组 39</title>
<defs>
<linearGradient x1="-48.389998%" y1="50%" x2="76.7832982%" y2="50%" id="linearGradientTitlesBtn-1">
<stop stop-color="#131415" stop-opacity="0" offset="0%"></stop>
<stop stop-color="#008C47" stop-opacity="0.950850141" offset="95.0850141%"></stop>
<stop stop-color="#008C47" offset="100%"></stop>
<linearGradient x1="-48.389998%" y1="50%" x2="76.7832982%" y2="50%" :id="`1-${boxId}`">
<stop :stop-color="colors[0]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[1]" stop-opacity="0.950850141" offset="95.0850141%"></stop>
<stop :stop-color="colors[1]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="97.1573557%" y1="50%" x2="4.12707014%" y2="50%" id="linearGradientTitlesBtn-2">
<stop stop-color="#02C175" offset="0%"></stop>
<stop stop-color="#02AD69" stop-opacity="0" offset="100%"></stop>
<linearGradient x1="97.1573557%" y1="50%" x2="4.12707014%" y2="50%" :id="`2-${boxId}`">
<stop :stop-color="colors[2]" offset="0%"></stop>
<stop :stop-color="colors[3]" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="47.4330881%" x2="94.7041474%" y2="52.5669119%" id="linearGradientTitlesBtn-3">
<stop stop-color="#008C46" stop-opacity="0" offset="0%"></stop>
<stop stop-color="#06C869" offset="100%"></stop>
<linearGradient x1="50%" y1="47.4330881%" x2="94.7041474%" y2="52.5669119%" :id="`3-${boxId}`">
<stop :stop-color="colors[4]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[5]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="99.7047264%" y1="50%" x2="0%" y2="50%" id="linearGradientTitlesBtn-4">
<stop stop-color="#02B56D" stop-opacity="0" offset="0%"></stop>
<stop stop-color="#008C47" offset="53.8476904%"></stop>
<stop stop-color="#02B56D" stop-opacity="0" offset="100%"></stop>
<linearGradient x1="99.7047264%" y1="50%" x2="0%" y2="50%" :id="`4-${boxId}`">
<stop :stop-color="colors[6]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[1]" offset="53.8476904%"></stop>
<stop :stop-color="colors[6]" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="99.7177871%" y1="62.6696413%" x2="3.44509591%" y2="36.1238825%" id="linearGradientTitlesBtn-5">
<stop stop-color="#009045" stop-opacity="0" offset="0%"></stop>
<stop stop-color="#009045" offset="100%"></stop>
<linearGradient x1="99.7177871%" y1="62.6696413%" x2="3.44509591%" y2="36.1238825%" :id="`5-${boxId}`">
<stop :stop-color="colors[7]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[7]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="100%" y1="49.88411%" x2="0%" y2="50%" id="linearGradientTitlesBtn-6">
<stop stop-color="#02C175" stop-opacity="0.64290827" offset="0%"></stop>
<stop stop-color="#02C074" offset="54.9861881%"></stop>
<stop stop-color="#02C175" stop-opacity="0" offset="100%"></stop>
<linearGradient x1="100%" y1="49.88411%" x2="0%" y2="50%" :id="`6-${boxId}`">
<stop :stop-color="colors[2]" stop-opacity="0.64290827" offset="0%"></stop>
<stop :stop-color="colors[8]" offset="54.9861881%"></stop>
<stop :stop-color="colors[2]" stop-opacity="0" offset="100%"></stop>
</linearGradient>
</defs>
<g id="监测平台" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
@ -37,15 +37,42 @@
<g id="大标题top" transform="translate(8, 22)">
<g id="切换" transform="translate(392, 43)">
<g id="编组-39" transform="translate(0.8348, 0.6849)">
<polygon id="路径-3" stroke="url(#linearGradientTitlesBtn-2)" stroke-width="0.816425121" fill="url(#linearGradientTitlesBtn-1)" fill-rule="nonzero" points="106.495637 0.315087917 71.7901188 0.315087917 74.9936791 3.39393432 38.2223926 3.39393432 35.1245933 0.315087917 -1.40971679e-11 0.315087917 17.5010743 27.9924201 115.594079 27.9924201 120.538296 22.1090638"></polygon>
<polygon id="路径-3" stroke="url(#linearGradientTitlesBtn-3)" stroke-width="0.189140595" fill-rule="nonzero" points="103.868366 0.315087917 99.7006719 0.315087917 96.697343 3.39393432 32.3823889 4.55198029 38.6045823 0.315087917 1.88621157 0.315087917 18.7107718 26.5927674 113.818559 26.5927674 117.861786 21.8195602"></polygon>
<polyline id="路径-3" stroke="url(#linearGradientTitlesBtn-4)" stroke-width="0.226968714" points="2.79998169 2.31508792 34.8046006 2.31508792 38.9023999 5.39393432 77.5021144 5.39393432 71.7198883 2.31508792"></polyline>
<polygon id="矩形" fill="#02B56D" fill-rule="nonzero" points="37.398018 0 69.1753804 0 71.4939791 2.31508792 39.7434169 2.31508792"></polygon>
<g id="编组-20" transform="translate(92.3751, 19.6168)" fill="url(#linearGradientTitlesBtn-5)" fill-rule="nonzero">
<polygon
id="路径-3" :stroke="`url(#2-${boxId})`" stroke-width="0.816425121"
:fill="`url(#1-${boxId})`" fill-rule="nonzero"
:points="`${w/3*2.6} 0.3 ${w/3*1.7} 0.3 ${w/3*1.8} 3 ${w/3.2} 3.4 ${w/3.5} 0.3 -1.40971679e-11 1.315087917
${w/7} ${h/1.07} ${w/1.07} ${h/1.07} ${w/1.02} ${h/1.35}`"
></polygon>
<polygon
id="路径-3" :stroke="`url(#3-${boxId})`" stroke-width="0.189140595" fill-rule="nonzero"
:points="`${w/3*2.5} 0.3 ${w/3*2.4} 0.3 ${w/3*2.3} 3 ${w/3.8} 4.5 ${w/3.2} 0.3 1.88621157 0.315087917
${w/6.6} ${h/1.14} ${w/1.08} ${h/1.14} ${w/1.05} ${h/1.37}`"
></polygon>
<polyline
id="路径-3" :stroke="`url(#4-${boxId})`" stroke-width="0.226968714"
:points="`2.8 2.32 ${w/3.56} 2.32 ${w/3.18} 5.39393432 ${w/1.6} 5.39393432 ${w/1.73} 2.31508792`"
></polyline>
<polygon
id="矩形" fill="#02B56D" fill-rule="nonzero"
:points="`${w/3.32} 0 ${w/1.79} 0 ${w/1.73} 2.32 ${w/3.12} 2.32`"
></polygon>
<!-- points="37.398018 0 69.1753804 0 71.4939791 2.31508792 39.7434169 2.31508792" -->
<!-- <g id="编组-20" transform="translate(92.3751, 19.6168)" :fill="`url(#5-${boxId})`" fill-rule="nonzero">
<path d="M2.17437277,0 L6.46572278,6.94827586 L4.29135001,6.94827586 L0,0 L2.17437277,0 Z M8.46860977,0 L12.7599597,6.94827586 L8.75453622,6.94827586 L4.46318621,0 L8.46860977,0 Z M3.66210151,0 L7.95345152,6.94827586 L7.26680749,6.94827586 L2.97545747,0 L3.66210151,0 Z" id="形状结合"></path>
</g>
<polyline id="路径-117" stroke="url(#linearGradientTitlesBtn-6)" stroke-width="0.226968714" points="13.6235024 20.8195602 32.6726743 20.8195602 36.5953008 25.8195602 104.453167 25.8195602 107.820646 20.8195602 117.479623 20.8195602"></polyline>
<polygon id="矩形" fill="#EBBE10" points="121.658691 23.3287147 123.16516 25.8219013 120.895552 28.3050479 117.479623 28.3150879"></polygon>
</g> -->
<polyline
id="路径-117" :stroke="`url(#6-${boxId})`" stroke-width="0.226968714"
:points="`${w/9.1} ${h/1.44} ${w/3.8} ${h/1.44} ${w/3.39} ${h/1.16} ${w/1.19} ${h/1.16} ${w/1.15} ${h/1.44} ${w/1.06} ${h/1.44}`"
></polyline>
<polygon
id="矩形" :fill="colors[7]"
:points="`${w/1.02} ${h/1.29} ${w/1.007} ${h/1.16} ${w/1.03} ${h/1.06} ${w/1.06} ${h/1.06}`"
></polygon>
</g>
</g>
</g>
@ -72,12 +99,7 @@ const filterId = `border-box-04-filterId-${getUUID()}`
const { w, h } = toRefs(props.chartConfig.attr)
const {
colors,
borderTitle,
borderTitleColor,
borderTitleSize,
borderTitleHeight,
borderTitleWidth,
backgroundColor
boxId
} = toRefs(props.chartConfig.option)
</script>
@ -101,9 +123,5 @@ const {
.stroke {
stroke: v-bind('colors[1]');
}
.text {
color: v-bind('borderTitleColor');
font-size: v-bind('borderTitleSize+"px"');
}
}
</style>

View File

@ -5,14 +5,8 @@ import { TitlesBtnActiveConfig } from './index'
import cloneDeep from 'lodash/cloneDeep'
export const option = {
dur: 0.5,
borderTitle: '按钮选中',
borderTitleWidth: 124,
borderTitleHeight: 30,
borderTitleSize: 18,
borderTitleColor: '#fff',
colors: ['#0E8A6D', '#02261C'],
backgroundColor: '#00000000'
boxId: 'linearGradientTitlesLeftBtnActive',
colors: ['#131415','#EA9607','#EBBE11','#EBBE10','#EBBA0F','#EBB90F'],
}
export default class Config extends PublicConfigClass implements CreateComponentType {

View File

@ -1,49 +1,16 @@
<template>
<CollapseItem name="标题" :expanded="true">
<SettingItemBox name="内容" :alone="true">
<CollapseItem name="内容" :expanded="true">
<SettingItemBox name="ID" :alone="true">
<n-input
size="small"
v-model:value="optionData.borderTitle"
v-model:value="optionData.boxId"
:minlength="1"
type="text"
placeholder="请输入标题内容"
placeholder="请输入Id"
/>
</SettingItemBox>
<SettingItemBox name="样式">
<SettingItem name="颜色">
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.borderTitleColor"
></n-color-picker>
</SettingItem>
<SettingItem name="文字大小">
<n-input-number
size="small"
v-model:value="optionData.borderTitleSize"
:min="12"
/>
</SettingItem>
<SettingItem name="高度">
<n-input-number
size="small"
v-model:value="optionData.borderTitleHeight"
:min="24"
/>
</SettingItem>
<SettingItem name="宽度">
<n-input-number
size="small"
v-model:value="optionData.borderTitleWidth"
:min="50"
:step="10"
/>
</SettingItem>
</SettingItemBox>
</SettingItemBox>
</CollapseItem>
<CollapseItem name="边框" :expanded="true">
<CollapseItem name="样式" :expanded="true">
<SettingItemBox
:name="`颜色-${index + 1}`"
v-for="(item, index) in optionData.colors"
@ -66,31 +33,6 @@
</SettingItem>
</SettingItemBox>
</CollapseItem>
<CollapseItem name="动画" :expanded="true">
<SettingItemBox name="速度(s)">
<SettingItem>
<n-input-number
v-model:value="optionData.dur"
size="small"
:step="0.5"
:min="0.5"
></n-input-number>
</SettingItem>
</SettingItemBox>
</CollapseItem>
<CollapseItem name="背景" :expanded="true">
<SettingItemBox name="颜色">
<SettingItem>
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.backgroundColor"
></n-color-picker>
</SettingItem>
</SettingItemBox>
</CollapseItem>
</template>
<script setup lang="ts">

View File

@ -5,7 +5,7 @@ export const TitlesBtnActiveConfig: ConfigType = {
key: 'TitlesBtnActive',
chartKey: 'VTitlesBtnActive',
conKey: 'VCTitlesBtnActive',
title: '标题按钮',
title: '标题按钮左-选中',
category: ChatCategoryEnum.TITLE,
categoryName: ChatCategoryEnumName.TITLE,
package: PackagesCategoryEnum.UNITS,

View File

@ -3,33 +3,32 @@
<svg :width="w" :height="h">
<title>编组 39</title>
<defs>
<linearGradient x1="-48.389998%" y1="50%" x2="76.7832982%" y2="50%" id="linearGradientTitlesBtn-1">
<stop stop-color="#131415" stop-opacity="0" offset="0%"></stop>
<stop stop-color="#008C47" stop-opacity="0.950850141" offset="95.0850141%"></stop>
<stop stop-color="#008C47" offset="100%"></stop>
</linearGradient>
<linearGradient x1="97.1573557%" y1="50%" x2="4.12707014%" y2="50%" id="linearGradientTitlesBtn-2">
<stop stop-color="#02C175" offset="0%"></stop>
<stop stop-color="#02AD69" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="47.4330881%" x2="94.7041474%" y2="52.5669119%" id="linearGradientTitlesBtn-3">
<stop stop-color="#008C46" stop-opacity="0" offset="0%"></stop>
<stop stop-color="#06C869" offset="100%"></stop>
</linearGradient>
<linearGradient x1="99.7047264%" y1="50%" x2="0%" y2="50%" id="linearGradientTitlesBtn-4">
<stop stop-color="#02B56D" stop-opacity="0" offset="0%"></stop>
<stop stop-color="#008C47" offset="53.8476904%"></stop>
<stop stop-color="#02B56D" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="99.7177871%" y1="62.6696413%" x2="3.44509591%" y2="36.1238825%" id="linearGradientTitlesBtn-5">
<stop stop-color="#009045" stop-opacity="0" offset="0%"></stop>
<stop stop-color="#009045" offset="100%"></stop>
</linearGradient>
<linearGradient x1="100%" y1="49.88411%" x2="0%" y2="50%" id="linearGradientTitlesBtn-6">
<stop stop-color="#02C175" stop-opacity="0.64290827" offset="0%"></stop>
<stop stop-color="#02C074" offset="54.9861881%"></stop>
<stop stop-color="#02C175" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="-48.389998%" y1="50%" x2="76.7832982%" y2="50%" :id="`1-${boxId}`">
<stop :stop-color="colors[0]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[1]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="97.1573557%" y1="50%" x2="5.14786075%" y2="50%" :id="`2-${boxId}`">
<stop :stop-color="colors[2]" offset="0%"></stop>
<stop :stop-color="colors[3]" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="47.4330881%" x2="94.7041474%" y2="52.5669119%" :id="`3-${boxId}`">
<stop :stop-color="colors[4]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[3]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="99.7047264%" y1="50%" x2="0%" y2="50%" :id="`4-${boxId}`">
<stop :stop-color="colors[4]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[4]" offset="53.1994373%"></stop>
<stop :stop-color="colors[4]" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="99.7177871%" y1="62.6696413%" x2="3.44509591%" y2="36.1238825%" :id="`5-${boxId}`">
<stop :stop-color="colors[4]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[4]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="100%" y1="49.88411%" x2="0%" y2="50%" :id="`6-${boxId}`">
<stop :stop-color="colors[4]" offset="0%"></stop>
<stop :stop-color="colors[4]" offset="54.9861881%"></stop>
<stop :stop-color="colors[4]" offset="100%"></stop>
</linearGradient>
</defs>
<g id="监测平台" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="林业防火-智览-切图版" transform="translate(-389, -44)">
@ -37,15 +36,41 @@
<g id="大标题top" transform="translate(8, 22)">
<g id="切换" transform="translate(392, 43)">
<g id="编组-39" transform="translate(0.8348, 0.6849)">
<polygon id="路径-3" stroke="url(#linearGradientTitlesBtn-2)" stroke-width="0.816425121" fill="url(#linearGradientTitlesBtn-1)" fill-rule="nonzero" points="106.495637 0.315087917 71.7901188 0.315087917 74.9936791 3.39393432 38.2223926 3.39393432 35.1245933 0.315087917 -1.40971679e-11 0.315087917 17.5010743 27.9924201 115.594079 27.9924201 120.538296 22.1090638"></polygon>
<polygon id="路径-3" stroke="url(#linearGradientTitlesBtn-3)" stroke-width="0.189140595" fill-rule="nonzero" points="103.868366 0.315087917 99.7006719 0.315087917 96.697343 3.39393432 32.3823889 4.55198029 38.6045823 0.315087917 1.88621157 0.315087917 18.7107718 26.5927674 113.818559 26.5927674 117.861786 21.8195602"></polygon>
<polyline id="路径-3" stroke="url(#linearGradientTitlesBtn-4)" stroke-width="0.226968714" points="2.79998169 2.31508792 34.8046006 2.31508792 38.9023999 5.39393432 77.5021144 5.39393432 71.7198883 2.31508792"></polyline>
<polygon id="矩形" fill="#02B56D" fill-rule="nonzero" points="37.398018 0 69.1753804 0 71.4939791 2.31508792 39.7434169 2.31508792"></polygon>
<g id="编组-20" transform="translate(92.3751, 19.6168)" fill="url(#linearGradientTitlesBtn-5)" fill-rule="nonzero">
<polygon
id="路径-3" :stroke="`url(#2-${boxId})`" stroke-width="0.816425121"
:fill="`url(#1-${boxId})`" fill-rule="nonzero"
:points="`${w/3*2.6} 0.3 ${w/3*1.7} 0.3 ${w/3*1.8} 3 ${w/3.2} 3.4 ${w/3.5} 0.3 -1.40971679e-11 1.315087917
${w/7} ${h/1.07} ${w/1.07} ${h/1.07} ${w/1.02} ${h/1.35}`"
></polygon>
<polygon
id="路径-3" :stroke="`url(#3-${boxId})`" stroke-width="0.189140595" fill-rule="nonzero"
:points="`${w/3*2.5} 0.3 ${w/3*2.4} 0.3 ${w/3*2.3} 3 ${w/3.8} 4.5 ${w/3.2} 0.3 1.88621157 0.315087917
${w/6.6} ${h/1.14} ${w/1.08} ${h/1.14} ${w/1.05} ${h/1.37}`"
></polygon>
<polyline
id="路径-3" :stroke="`url(#4-${boxId})`" stroke-width="0.226968714"
:points="`2.8 2.32 ${w/3.56} 2.32 ${w/3.18} 5.39393432 ${w/1.6} 5.39393432 ${w/1.73} 2.31508792`"
></polyline>
<polygon
id="矩形" fill="#02B56D" fill-rule="nonzero"
:points="`${w/3.32} 0 ${w/1.79} 0 ${w/1.73} 2.32 ${w/3.12} 2.32`"
></polygon>
<!-- points="37.398018 0 69.1753804 0 71.4939791 2.31508792 39.7434169 2.31508792" -->
<!-- <g id="编组-20" transform="translate(92.3751, 19.6168)" :fill="`url(#5-${boxId})`" fill-rule="nonzero">
<path d="M2.17437277,0 L6.46572278,6.94827586 L4.29135001,6.94827586 L0,0 L2.17437277,0 Z M8.46860977,0 L12.7599597,6.94827586 L8.75453622,6.94827586 L4.46318621,0 L8.46860977,0 Z M3.66210151,0 L7.95345152,6.94827586 L7.26680749,6.94827586 L2.97545747,0 L3.66210151,0 Z" id="形状结合"></path>
</g>
<polyline id="路径-117" stroke="url(#linearGradientTitlesBtn-6)" stroke-width="0.226968714" points="13.6235024 20.8195602 32.6726743 20.8195602 36.5953008 25.8195602 104.453167 25.8195602 107.820646 20.8195602 117.479623 20.8195602"></polyline>
<polygon id="矩形" fill="#EBBE10" points="121.658691 23.3287147 123.16516 25.8219013 120.895552 28.3050479 117.479623 28.3150879"></polygon>
</g> -->
<polyline
id="路径-117" :stroke="`url(#6-${boxId})`" stroke-width="0.226968714"
:points="`${w/9.1} ${h/1.44} ${w/3.8} ${h/1.44} ${w/3.39} ${h/1.16} ${w/1.19} ${h/1.16} ${w/1.15} ${h/1.44} ${w/1.06} ${h/1.44}`"
></polyline>
<polygon
id="矩形" :fill="colors[5]"
:points="`${w/1.02} ${h/1.29} ${w/1.007} ${h/1.16} ${w/1.03} ${h/1.06} ${w/1.06} ${h/1.06}`"
></polygon>
</g>
</g>
</g>
@ -72,12 +97,7 @@ const filterId = `border-box-04-filterId-${getUUID()}`
const { w, h } = toRefs(props.chartConfig.attr)
const {
colors,
borderTitle,
borderTitleColor,
borderTitleSize,
borderTitleHeight,
borderTitleWidth,
backgroundColor
boxId
} = toRefs(props.chartConfig.option)
</script>

View File

@ -0,0 +1,16 @@
import { PublicConfigClass } from '@/packages/public'
import { chartInitConfig } from '@/settings/designSetting'
import { CreateComponentType } from '@/packages/index.d'
import { TopTitles01Config } from './index'
import cloneDeep from 'lodash/cloneDeep'
export const option = {
colors: ['#00592C','#009259','#005F2E','#009243','#00E692','#00C552','#00C47F','#009045','#008C46','#00C27F','#EBBE10'],
}
export default class Config extends PublicConfigClass implements CreateComponentType {
public key = TopTitles01Config.key
public attr = { ...chartInitConfig, w: 1920, h: 85, zIndex: 1 }
public chartConfig = cloneDeep(TopTitles01Config)
public option = cloneDeep(option)
}

View File

@ -0,0 +1,43 @@
<template>
<CollapseItem name="样式" :expanded="true">
<SettingItemBox
:name="`颜色-${index + 1}`"
v-for="(item, index) in optionData.colors"
:key="index"
>
<SettingItem name="颜色">
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.colors[index]"
></n-color-picker>
</SettingItem>
<SettingItem>
<n-button
size="small"
@click="optionData.colors[index] = option.colors[index]"
>
恢复默认
</n-button>
</SettingItem>
</SettingItemBox>
</CollapseItem>
</template>
<script setup lang="ts">
import { PropType } 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
}
})
</script>

View File

@ -0,0 +1,14 @@
import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d';
import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d';
export const TopTitles01Config: ConfigType = {
key: 'TopTitles01',
chartKey: 'VTopTitles01',
conKey: 'VCTopTitles01',
title: '标题-01',
category: ChatCategoryEnum.TITLE,
categoryName: ChatCategoryEnumName.TITLE,
package: PackagesCategoryEnum.UNITS,
chartFrame: ChartFrameEnum.STATIC,
image: 'toptitle.png',
};

View File

@ -0,0 +1,134 @@
<template>
<div class="go-title-09">
<svg :width="w" :height="h">
<title>小背景</title>
<defs>
<linearGradient x1="100%" y1="50%" x2="0%" y2="50%" id="linearGradientTopTitle01-1">
<stop :stop-color="colors[0]" stop-opacity="0.350515939" offset="0%"></stop>
<stop :stop-color="colors[1]" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="100%" y1="50%" x2="0%" y2="50%" id="linearGradientTopTitle01-2">
<stop :stop-color="colors[0]" stop-opacity="0.350515939" offset="0%"></stop>
<stop :stop-color="colors[1]" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradientTopTitle01-3">
<stop :stop-color="colors[2]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[3]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="100%" x2="50%" y2="6.16297582e-31%" id="linearGradientTopTitle01-4">
<stop :stop-color="colors[4]" offset="0%"></stop>
<stop :stop-color="colors[5]" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="34.4280403%" x2="50%" y2="100%" id="linearGradientTopTitle01-5">
<stop :stop-color="colors[6]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[7]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradientTopTitle01-6">
<stop :stop-color="colors[6]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[7]" offset="100%"></stop>
</linearGradient>
<linearGradient x1="100%" y1="50%" x2="13.6616714%" y2="50%" id="linearGradientTopTitle01-7">
<stop :stop-color="colors[8]" offset="0%"></stop>
<stop :stop-color="colors[9]" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="100%" y1="50%" x2="13.6616714%" y2="50%" id="linearGradientTopTitle01-8">
<stop :stop-color="colors[8]" offset="0%"></stop>
<stop :stop-color="colors[9]" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="97.85155%" y1="50%" x2="0%" y2="50%" id="linearGradientTopTitle01-9">
<stop :stop-color="colors[8]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[8]" offset="40.046916%"></stop>
<stop :stop-color="colors[9]" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="100%" y1="50%" x2="13.6616714%" y2="50%" id="linearGradientTopTitle01-10">
<stop :stop-color="colors[8]" offset="0%"></stop>
<stop :stop-color="colors[9]" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="100%" y1="50%" x2="13.6616714%" y2="50%" id="linearGradientTopTitle01-11">
<stop :stop-color="colors[8]" offset="0%"></stop>
<stop :stop-color="colors[9]" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="97.85155%" y1="50%" x2="0%" y2="50%" id="linearGradientTopTitle01-12">
<stop :stop-color="colors[8]" stop-opacity="0" offset="0%"></stop>
<stop :stop-color="colors[8]" offset="40.046916%"></stop>
<stop :stop-color="colors[9]" stop-opacity="0" offset="100%"></stop>
</linearGradient>
</defs>
<g id="监测平台" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="林业防火-智览-切图版" transform="translate(3, -1)">
<g id="可视化" transform="translate(-11, -21)">
<g id="大标题top" transform="translate(8, 22)">
<g id="小背景" transform="translate(0, 1)">
<rect id="矩形" fill="url(#linearGradientTopTitle01-1)" x="0" y="0" width="960" height="71"></rect>
<rect id="矩形" fill="url(#linearGradientTopTitle01-2)" transform="translate(1440, 32) scale(-1, 1) translate(-1440, -32)" x="960" y="0" width="960" height="64"></rect>
<g id="编组-3" transform="translate(616.358, 0)">
<polygon id="矩形" fill="url(#linearGradientTopTitle01-3)" points="0 0 684.1949 0 689.281998 0 660.981164 48 585.119147 48 574.2235 63 363.735551 63 357.061342 56.8743247 326.45026 56.8743247 319.798678 63 118.538529 63 109.029264 50 32.2658942 50"></polygon>
<polygon id="矩形" stroke="url(#linearGradientTopTitle01-4)" points="0 0 688.283039 0 660.981164 48 585.187128 48 574.2235 63 363.735551 63 357.131925 57 326.45026 57 319.798678 63 118.538529 63 108.822252 50 32.2658942 50"></polygon>
<polygon id="矩形" fill="url(#linearGradientTopTitle01-5)" points="41.9562955 59 652.320499 59 649.323621 71 47.950052 71"></polygon>
<path d="M101.542462,69 L592.958441,69 C593.510726,69 593.958441,69.4477153 593.958441,70 C593.958441,70.1153807 593.938473,70.229891 593.899421,70.3384619 L591.683172,76.5 C590.064691,80.9996477 585.796952,84 581.015079,84 L116.14177,84 C110.948502,84 106.187304,81.1083281 103.792864,76.5 L100.655097,70.4610661 C100.400457,69.9709875 100.591318,69.367274 101.081396,69.1126342 C101.223819,69.0386328 101.381962,69 101.542462,69 Z" id="矩形备份-10" fill="url(#linearGradientTopTitle01-6)" opacity="0.480741228"></path>
<polygon id="矩形" :fill="colors[10]" points="327.849104 59.4905529 355.899358 59.4905529 360.79665 64 322.663892 64"></polygon>
</g>
<g id="小菱形" transform="translate(656.2955, 55)" :fill="colors[7]">
<polygon id="矩形" points="4.60306437e-19 0 13.6902458 0 16.9823101 5 3.29206432 5"></polygon>
<polygon id="矩形备份-8" points="20.9781478 0 34.6683935 0 37.9604579 5 24.2702121 5"></polygon>
<polygon id="矩形备份-9" points="41.9562955 0 55.6465413 0 58.9386056 5 45.2483598 5"></polygon>
</g>
<g id="小菱形" transform="translate(1237.232, 57.5) scale(-1, 1) translate(-1237.232, -57.5)translate(1207.7627, 55)" :fill="colors[7]">
<polygon id="矩形" points="4.60306437e-19 0 13.6902458 0 16.9823101 5 3.29206432 5"></polygon>
<polygon id="矩形备份-8" points="20.9781478 0 34.6683935 0 37.9604579 5 24.2702121 5"></polygon>
<polygon id="矩形备份-9" points="41.9562955 0 55.6465413 0 58.9386056 5 45.2483598 5"></polygon>
</g>
<g id="编组-4" transform="translate(0, 10)">
<polygon id="矩形" :fill="colors[8]" points="611.363163 14 621.77498 14 629.344433 25 618.932617 25"></polygon>
<polygon id="矩形备份-11" fill="url(#linearGradientTopTitle01-7)" points="428.55359 14 606.871114 14 614.360042 25 436.042517 25"></polygon>
<polygon id="矩形备份-12" fill="url(#linearGradientTopTitle01-8)" opacity="0.307911464" points="-4.85168379e-13 0 613.164074 0 629.344433 25 25.6193658 25"></polygon>
<polyline id="路径-12备份" stroke="url(#linearGradientTopTitle01-9)" points="631.342352 2 426.170439 2 408.13428 20 122.872008 20"></polyline>
<polyline id="路径-12备份-2" stroke="url(#linearGradientTopTitle01-9)" points="620.353798 7 415.181885 7 397.145727 25 111.883455 25"></polyline>
</g>
<g id="编组-4" transform="translate(1604.3288, 22.5) scale(-1, 1) translate(-1604.3288, -22.5)translate(1290.6556, 10)">
<polygon id="矩形" :fill="colors[8]" points="607.367326 14 617.779142 14 625.348595 25 614.936779 25"></polygon>
<polygon id="矩形备份-11" fill="url(#linearGradientTopTitle01-10)" points="425.556712 14 602.91554 14 610.364204 25 433.005376 25"></polygon>
<polygon id="矩形备份-12" fill="url(#linearGradientTopTitle01-11)" opacity="0.307911464" points="-4.82087945e-13 0 609.270968 0 625.348595 25 25.4567031 25"></polygon>
<polyline id="路径-12备份" stroke="url(#linearGradientTopTitle01-12)" points="627.346514 2 423.383866 2 405.454011 20 121.873049 20"></polyline>
<polyline id="路径-12备份-2" stroke="url(#linearGradientTopTitle01-12)" points="616.35796 7 412.395312 7 394.465457 25 110.884495 25"></polyline>
</g>
</g>
</g>
</g>
</g>
</g>
</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 {
colors
} = toRefs(props.chartConfig.option)
</script>
<style lang="scss" scoped>
@include go('title-09') {
position: relative;
display: flex;
justify-content: center;
align-items: center;
svg {
position: absolute;
z-index: -1;
}
}
</style>

View File

@ -1,9 +1,19 @@
import { TopTitlesConfig } from './TopTitles/index';
import { TopTitles01Config } from './TopTitles01/index';
import { TitlesBtnConfig } from './TitlesBtn/index';
import { TitlesBtnActiveConfig } from './TitlesBtnActive/index';
import { ContentBackgroundConfig } from './ContentBackground/index';
import { ContentTitleConfig } from './ContentTitle/index';
import { ContentTitle01Config } from './ContentTitle01/index';
// import { ContentTitle02Config } from './ContentTitle02/index';
export default [
TopTitlesConfig,
TopTitles01Config,
TitlesBtnConfig,
TitlesBtnActiveConfig
TitlesBtnActiveConfig,
ContentBackgroundConfig,
ContentTitleConfig,
ContentTitle01Config,
// ContentTitle02Config
];

View File

@ -1,6 +1,6 @@
<template>
<CollapseItem name="标题设置" :expanded="true">
<n-tag type="primary">配置无响应请在预览页面查看效果</n-tag>
<n-tag type="primary">标题名称的配置无响应请在预览页面查看效果</n-tag>
<SettingItemBox :alone="true" name="标题名称">
<SettingItem :alone="true">
<n-input v-model:value="optionData.title" type="text" size="small" />

View File

@ -1,5 +1,5 @@
<template>
<div class="title">
<div class="GeneralHead">
<Title :title="option.title" :w="w" :h="h" :titleStyle="option.titleStyle" />
</div>
</template>
@ -28,7 +28,7 @@
</script>
<style lang="scss" scoped>
.title {
.GeneralHead {
width: v-bind('`${w}px`');
height: v-bind('`${h}px`');
}

View File

@ -2,19 +2,25 @@ import cloneDeep from 'lodash/cloneDeep'
import { PublicConfigClass } from '@/packages/public'
import { CreateComponentType } from '@/packages/index.d'
import { chartInitConfig } from '@/settings/designSetting'
import { MoreButtonConfig } from './index'
import { HeadMoreButtonConfig } from './index'
export const option = {
buttonName: '更多>>',
buttonName: '更多',
buttonStyle:{
color: '#FFFFFF',
size: 'medium',
fontSize: 16,
iconMarginLeft: 10,
iconFlag: true,
iconWidth: 11,
iconHeight: 13,
iconColor: '#57FF94',
}
}
export default class Config extends PublicConfigClass implements CreateComponentType {
public key = MoreButtonConfig.key
public key = HeadMoreButtonConfig.key
public attr = { ...chartInitConfig, w: 80, h: 40, zIndex: 5 }
public chartConfig = cloneDeep(MoreButtonConfig)
public chartConfig = cloneDeep(HeadMoreButtonConfig)
public option = cloneDeep(option)
}

View File

@ -0,0 +1,79 @@
<template>
<CollapseItem name="按钮设置" :expanded="true">
<n-tag type="primary">若按钮内容配置无响应请在预览页面查看效果</n-tag>
<SettingItemBox :alone="true" name="按钮内容">
<SettingItem :alone="true">
<n-input v-model:value="optionData.buttonName" type="text" size="small" />
</SettingItem>
</SettingItemBox>
<SettingItemBox name="字体设置">
<SettingItem name="字体颜色">
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.buttonStyle.color"
></n-color-picker>
</SettingItem>
<SettingItem name="字体大小">
<n-input-number
v-model:value="optionData.buttonStyle.fontSize"
type="text"
:min="0"
size="small"
/>
</SettingItem>
</SettingItemBox>
<SettingItemBox name="图标宽度">
<SettingItem name="文字与图标的间隔">
<n-input-number
v-model:value="optionData.buttonStyle.iconMarginLeft"
type="text"
:min="0"
size="small"
/>
</SettingItem>
<SettingItem>
<n-checkbox v-model:checked="optionData.buttonStyle.iconFlag" size="small">
是否展示图标
</n-checkbox>
</SettingItem>
<SettingItem>
<n-input-number
v-model:value="optionData.buttonStyle.iconWidth"
type="text"
:min="0"
size="small"
/>
</SettingItem>
<SettingItem name="图标长度">
<n-input-number
v-model:value="optionData.buttonStyle.iconHeight"
type="text"
:min="0"
size="small"
/>
</SettingItem>
<SettingItem name="图标颜色">
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.buttonStyle.iconColor"
></n-color-picker>
</SettingItem>
</SettingItemBox>
</CollapseItem>
</template>
<script setup lang="ts">
import { PropType, watch, ref } from 'vue';
import { option } from './config';
import { cloneDeep } from 'lodash-es';
import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting';
const props = defineProps({
optionData: {
type: Object as PropType<typeof option>,
required: true,
},
});
</script>

View File

@ -1,14 +1,14 @@
import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d'
import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d'
export const MoreButtonConfig: ConfigType = {
key: 'MoreButton',
chartKey: 'VMoreButton',
conKey: 'VCMoreButton',
title: '更多按钮',
export const HeadMoreButtonConfig: ConfigType = {
key: 'HeadMoreButton',
chartKey: 'VHeadMoreButton',
conKey: 'VCHeadMoreButton',
title: '组件标题栏更多按钮',
category: ChatCategoryEnum.ZHIGAN,
categoryName: ChatCategoryEnumName.ZHIGAN,
package: PackagesCategoryEnum.ZHIGAN,
chartFrame: ChartFrameEnum.COMMON,
image: 'MoreButton.png'
image: 'HeadMoreButton.png'
}

View File

@ -1,12 +1,8 @@
<template>
<div class="MoreButton">
<n-button
text
:color="option.buttonStyle.color"
:size="option.buttonStyle.size"
@click="console.log(123)"
>
{{ option.buttonName }}
<n-button text :color="option.buttonStyle.color" size="large">
<span :style="{ fontSize: option.buttonStyle.fontSize + 'px' }">{{ option.buttonName }}</span>
<Title v-if="option.buttonStyle.iconFlag" class="title" :buttonStyle="option.buttonStyle" />
</n-button>
</div>
</template>
@ -17,7 +13,7 @@
import { icon } from '@/plugins';
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore';
import { useChartDataFetch } from '@/hooks';
import Title from './svg/title.vue';
import Title from './title.vue';
const props = defineProps({
chartConfig: {
@ -42,4 +38,8 @@
width: v-bind('`${w}px`');
height: v-bind('`${h}px`');
}
.title {
margin-left: v-bind('`${option.buttonStyle.iconMarginLeft}px`');
}
</style>

View File

@ -0,0 +1,46 @@
<template>
<div>
<svg
:width="props.buttonStyle.iconWidth"
:height="props.buttonStyle.iconHeight"
:viewBox="`0 0 ${props.buttonStyle.iconWidth} ${props.buttonStyle.iconHeight}`"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<g id="监测平台" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g
id="林业防火-智感-重复报警弹窗-切图版"
transform="translate(-532, -220)"
:fill="props.buttonStyle.iconColor"
>
<g id="弹窗----" transform="translate(175.2674, 165.0542)">
<g id="文字" transform="translate(64.7326, 10.2458)">
<g id="预警信息-" transform="translate(0, 36.7)">
<g id="小图标" transform="translate(292, 8.3)">
<g id="编组-55" transform="translate(0, 0)">
<polygon
id="Fill-1"
transform="translate(3.3801, 7) scale(-1, 1) rotate(90) translate(-3.3801, -7)"
points="6.76849945 3.61994109 3.40277312 6.88441736 0.00771109727 3.61994109 -3.61994109 3.61994109 3.41031659 10.3800589 10.3800589 3.61994109"
></polygon>
<polygon
id="Fill-1"
opacity="0.596255"
transform="translate(8.3801, 7.0343) scale(-1, 1) rotate(90) translate(-8.3801, -7.0343)"
points="10.8003736 4.61994109 8.39628335 6.95170985 5.97123904 4.61994109 3.38005891 4.61994109 8.40167154 9.44859668 13.3800589 4.61994109"
></polygon>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
</div>
</template>
<script setup lang="ts">
const props = defineProps(['buttonStyle']);
</script>

View File

@ -11,4 +11,4 @@ export const MeiRiShangBaoConfig: ConfigType = {
package: PackagesCategoryEnum.ZHIGAN,
chartFrame: ChartFrameEnum.COMMON,
image: 'MeiRiShangBao.png'
}
}

View File

@ -176,7 +176,7 @@
y="0"
width="25"
height="25"
:href="`/src/assets/images/chart/tables/${props.item.key}.png`"
:href="`/src/assets/images/chart/zhigan/component/MeiRiShangBao${props.item.key}.png`"
/>
<text
v-else

View File

@ -1,40 +0,0 @@
<template>
<CollapseItem name="按钮设置" :expanded="true">
<SettingItemBox :alone="true" name="按钮内容">
<SettingItem :alone="true">
<n-input v-model:value="optionData.buttonName" type="text" size="small" />
</SettingItem>
<SettingItem name="按钮字体颜色">
<n-color-picker
size="small"
:modes="['hex']"
v-model:value="optionData.buttonStyle.color"
></n-color-picker>
</SettingItem>
<SettingItem name="按钮大小">
<n-select
v-model:value="optionData.buttonStyle.size"
:options="[
{ label: '小', value: 'small' },
{ label: '中', value: 'medium' },
{ label: '大', value: 'large' },
]"
/>
</SettingItem>
</SettingItemBox>
</CollapseItem>
</template>
<script setup lang="ts">
import { PropType, watch, ref } from 'vue';
import { option } from './config';
import { cloneDeep } from 'lodash-es';
import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting';
const props = defineProps({
optionData: {
type: Object as PropType<typeof option>,
required: true,
},
});
</script>

View File

@ -37,7 +37,7 @@ export const option = {
export default class Config extends PublicConfigClass implements CreateComponentType {
public key = WuRenJiFeiXingShuJuConfig.key
public attr = { ...chartInitConfig, w: 400, h: 225, zIndex: -1 }
public attr = { ...chartInitConfig, w: 400, h: 200, zIndex: -1 }
public chartConfig = cloneDeep(WuRenJiFeiXingShuJuConfig)
public option = cloneDeep(option)
}

View File

@ -1,45 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="43px" height="43px" viewBox="0 0 43 43" version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<linearGradient x1="100%" y1="50%" x2="0%" y2="50%" id="linearGradient-1">
<stop stop-color="#B8FDB4" offset="0%"></stop>
<stop stop-color="#60EC8D" offset="100%"></stop>
</linearGradient>
<path
d="M10.9626524,13.3304532 C11.3197125,13.1243044 11.539541,12.7432911 11.539541,12.3309937 L11.539541,1.946999 C11.5374517,1.57376524 11.354943,1.22459799 11.0496853,1.00982943 C10.7444276,0.795060873 10.3541343,0.741224873 10.0021329,0.86533289 C3.04517243,3.32754998 -1.08928183,10.4822778 0.251273414,17.7393242 C0.319529018,18.107955 0.562633287,18.4204408 0.903157524,18.5772549 C1.05438224,18.6479719 1.21935977,18.6844147 1.38630172,18.6839832 C1.58880838,18.6839832 1.78776893,18.6308362 1.96319031,18.5296616 L10.9626524,13.3304532 Z M9.23198659,3.69497144 L9.23198659,11.6646874 L2.32663013,15.6495453 C2.30932347,15.4317699 2.30932347,15.2125522 2.30932347,14.9991034 C2.31349764,10.2307443 4.98650358,5.86594831 9.23198659,3.69497144 Z M29.999988,14.9991034 C30.0023193,21.7681561 25.4705044,27.699965 18.9389252,29.4771966 C12.407346,31.2544282 5.49477434,28.4366176 2.06703026,22.5996106 C1.91003062,22.3347072 1.86543841,22.0180357 1.94317846,21.7200773 C2.02091851,21.422119 2.21453964,21.1675995 2.48094783,21.013167 L13.8470953,14.3976971 L13.8470953,1.15377719 C13.8470953,0.516563642 14.363659,0 15.0008725,0 C20.3269097,0.00271753692 25.2524528,2.82829093 27.9433681,7.4245562 C27.9592325,7.44763174 27.9736548,7.47070728 27.988077,7.49522505 C28.0024992,7.51974281 28.0169214,7.54858724 28.0299014,7.57454723 C29.3240379,9.83475067 30.0032902,12.3946269 29.999988,14.9991034 Z"
id="path-2"></path>
<filter x="-25.0%" y="-25.0%" width="150.0%" height="150.0%" filterUnits="objectBoundingBox" id="filter-3">
<feOffset dx="0" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="2.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0.517647059 0 0 0 0 1 0 0 0 0 0.470588235 0 0 0 0.5 0" type="matrix"
in="shadowBlurOuter1"></feColorMatrix>
</filter>
</defs>
<g id="监测平台" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="林业防火-智感-无人机实时画面-切图版" transform="translate(-1538, -846)">
<g id="可视化" transform="translate(-0.5, -1)">
<g id="模块" transform="translate(46, 88)">
<g id="标题模块--右侧1" transform="translate(1450, 684)">
<g id="a" transform="translate(28.5, 60)">
<g id="1" transform="translate(0.5, 0.5)">
<g id="Panzer" transform="translate(13.5, 14.5)">
<g id="编组-9" transform="translate(0.5, 0.0159)">
<rect id="矩形" x="0" y="0" width="42" height="42"></rect>
<g id="chart-pie-slice-fill" transform="translate(6, 6)" fill-rule="nonzero">
<g id="形状">
<use fill="black" fill-opacity="1" filter="url(#filter-3)"
xlink:href="#path-2"></use>
<use fill="url(#linearGradient-1)" xlink:href="#path-2"></use>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -1,43 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="43px" height="43px" viewBox="0 0 43 43" version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<linearGradient x1="100%" y1="50%" x2="0%" y2="50%" id="linearGradient-1">
<stop stop-color="#B8FDB4" offset="0%"></stop>
<stop stop-color="#68EE91" offset="100%"></stop>
</linearGradient>
<path
d="M26.5323394,10.3942424 C26.5323394,9.43784568 27.3076521,8.66253293 28.2640488,8.66253293 C29.2204456,8.66253293 29.9957583,9.43784568 29.9957583,10.3942424 C29.9957583,11.3506392 29.2204456,12.1259519 28.2640488,12.1259519 C27.3076521,12.1259519 26.5323394,11.3506392 26.5323394,10.3942424 Z M24.8006299,6.93082343 C25.7570266,6.93082343 26.5323394,6.15551068 26.5323394,5.19911394 C26.5323394,4.24271719 25.7570266,3.46740444 24.8006299,3.46740444 C23.8442331,3.46740444 23.0689204,4.24271719 23.0689204,5.19911394 C23.0689204,6.15551068 23.8442331,6.93082343 24.8006299,6.93082343 Z M28.9365294,15.0121344 C28.3013941,14.9597558 27.7439519,15.4319346 27.6911416,16.0670341 C27.116192,22.7834987 21.4000376,27.8843162 14.6617,27.6938727 C7.92336235,27.5034291 2.50442805,22.087904 2.30974394,15.3496876 C2.11505982,8.61147112 7.21227903,2.89210776 13.9283804,2.31293145 C14.5659782,2.26032962 15.0402112,1.70081225 14.9876094,1.06321443 C14.9350075,0.425616606 14.3754902,-0.0486163577 13.7378924,0.00398545321 C5.80256263,0.686552266 -0.221520462,7.44249368 0.00625017976,15.4038677 C0.234020821,23.3652417 6.63450211,29.765723 14.5958761,29.9934936 C22.5572501,30.2212643 29.3131915,24.1971812 29.9957583,16.2618514 C30.022088,15.9554336 29.9250671,15.6511755 29.7262153,15.4165629 C29.5273635,15.1819503 29.2431193,15.0363779 28.9365294,15.0121344 Z M14.9876094,4.62187744 C20.7259899,4.62187744 25.3778664,9.27375394 25.3778664,15.0121344 C25.3778664,20.7505149 20.7259899,25.4023914 14.9876094,25.4023914 C9.24922891,25.4023914 4.59735241,20.7505149 4.59735241,15.0121344 C4.60371486,9.27639142 9.25186639,4.62823989 14.9876094,4.62187744 Z M13.8331364,15.0121344 C13.8331364,15.6497322 14.3500116,16.1666074 14.9876094,16.1666074 L21.9144474,16.1666074 C22.5520452,16.1666074 23.0689204,15.6497322 23.0689204,15.0121344 C23.0689204,14.3745366 22.5520452,13.8576614 21.9144474,13.8576614 L16.1420824,13.8576614 L16.1420824,8.08529643 C16.1420824,7.4476986 15.6252072,6.93082343 14.9876094,6.93082343 C14.3500116,6.93082343 13.8331364,7.4476986 13.8331364,8.08529643 L13.8331364,15.0121344 Z M19.6055014,3.46740444 C20.5618981,3.46740444 21.3372109,2.69209169 21.3372109,1.73569495 C21.3372109,0.779298203 20.5618981,0.00398545321 19.6055014,0.00398545321 C18.6491046,0.00398545321 17.8737919,0.779298203 17.8737919,1.73569495 C17.8737919,2.69209169 18.6491046,3.46740444 19.6055014,3.46740444 Z"
id="path-2"></path>
<filter x="-25.0%" y="-25.0%" width="150.0%" height="150.0%" filterUnits="objectBoundingBox" id="filter-3">
<feOffset dx="0" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="2.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0.517647059 0 0 0 0 1 0 0 0 0 0.470588235 0 0 0 0.45098877 0"
type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
</defs>
<g id="监测平台" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="林业防火-智感-无人机实时画面-切图版" transform="translate(-1628, -846)">
<g id="可视化" transform="translate(-0.5, -1)">
<g id="模块" transform="translate(46, 88)">
<g id="标题模块--右侧1" transform="translate(1450, 684)">
<g id="a" transform="translate(119, 60.5)">
<g id="编组-6" transform="translate(0, 0.5)">
<g id="编组-11" transform="translate(14, 14.0159)">
<rect id="矩形" x="0" y="0" width="42" height="42"></rect>
<g id="clock-countdown-fill" transform="translate(5, 5)" fill-rule="nonzero">
<g id="形状">
<use fill="black" fill-opacity="1" filter="url(#filter-3)"
xlink:href="#path-2"></use>
<use fill="url(#linearGradient-1)" xlink:href="#path-2"></use>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="43px" height="43px" viewBox="0 0 43 43" version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-1">
<stop stop-color="#B7FCB3" offset="0%"></stop>
<stop stop-color="#69EE91" offset="100%"></stop>
</linearGradient>
</defs>
<g id="监测平台" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="林业防火-智感-无人机实时画面-切图版" transform="translate(-1718, -846)">
<g id="可视化" transform="translate(-0.5, -1)">
<g id="模块" transform="translate(46, 88)">
<g id="标题模块--右侧1" transform="translate(1450, 684)">
<g id="a" transform="translate(209, 60.5)">
<g id="编组-6" transform="translate(0, 0.5)">
<g id="编组-14" transform="translate(14, 14.0159)">
<rect id="矩形" x="0" y="0" width="42" height="42"></rect>
<path
d="M22.4403522,10.9841347 C29.9970401,11.4524749 36.0313601,17.486645 36.5,25.0419841 L33.7245785,25.0419841 C33.2052363,25.0419841 32.7842263,25.4629941 32.7842263,25.9823363 C32.7842263,26.5016785 33.2052363,26.9226885 33.7245785,26.9226885 L36.5,26.9226885 C36.4268981,28.1012262 36.2183717,29.242747 35.8897671,30.3319012 L7.1102329,30.3319012 C6.78162835,29.242747 6.57310192,28.1012262 6.5,26.9226885 L9.27542151,26.9226885 C9.79013388,26.9161905 10.2039772,26.4970897 10.2039772,25.9823363 C10.2039772,25.4675829 9.79013388,25.0484821 9.27542151,25.0419841 L6.5,25.0419841 C6.96863993,17.486645 13.0029599,11.4526248 20.5596478,10.9841347 L20.5596478,13.7577578 C20.5596478,14.2771 20.9806578,14.69811 21.5,14.69811 C22.0193422,14.69811 22.4403522,14.2771 22.4403522,13.7577578 L22.4403522,10.9841347 Z M29.9591233,17.5230632 C29.9591233,17.5230632 27.3551219,19.0377897 24.7345382,20.6284916 L24.1929606,20.9582145 C22.0324935,22.2776668 19.9828843,23.5811959 19.5107156,24.0532992 C18.4288123,25.1352025 18.4288123,26.8894176 19.5107156,27.9714708 C20.592619,29.0533742 22.346834,29.0533742 23.4288872,27.9714708 C23.9009905,27.4993022 25.2045197,25.449693 26.523972,23.2892258 L26.8536948,22.7476482 C28.4443967,20.1270645 29.9591233,17.5230632 29.9591233,17.5230632 Z"
id="形状结合" fill="url(#linearGradient-1)" fill-rule="nonzero"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 9.7 KiB

View File

@ -81,7 +81,7 @@
</text>
<text
x="45%"
y="80"
y="75"
text-anchor="middle"
:fill="props.dataStyle.bottomFontColor3"
:font-size="props.dataStyle.bottomFontSize3"

View File

@ -81,7 +81,7 @@
:y="props.dataStyle.iconY"
:width="props.dataStyle.iconSize"
:height="props.dataStyle.iconSize"
:href="`./${props.item.icon}.svg`"
:href="`/src/assets/images/chart/zhigan/component/WuRenJiFeiXingShuJu${props.item.icon}.png`"
/>
</svg>
</div>
@ -89,7 +89,6 @@
<script setup lang="ts">
const props = defineProps(['item', 'dataStyle']);
// console.log(`./${props.item.icon}.svg`);
</script>
<style lang="scss" scoped></style>

View File

@ -5,6 +5,9 @@ import { chartInitConfig } from '@/settings/designSetting'
import { WuRenJiImageConfig } from './index'
export const option = {
dataset: {
url: 'src/assets/images/chart/zhigan/component/example1.png'
},
}
export default class Config extends PublicConfigClass implements CreateComponentType {

View File

@ -1,4 +1,22 @@
<template></template>
<template>
<CollapseItem name="数据设置" :expanded="true">
<SettingItemBox :alone="true" name="图片路径选择">
<SettingItem>
<n-select v-model:value="optionData.dataset.url" size="small" :options="options"></n-select>
</SettingItem>
</SettingItemBox>
<SettingItemBox :alone="true" name="图片路径手动输入">
<SettingItem>
<n-input
v-model:value="optionData.dataset.url"
placeholder="图片路径"
type="text"
size="small"
/>
</SettingItem>
</SettingItemBox>
</CollapseItem>
</template>
<script setup lang="ts">
import { PropType, watch, ref } from 'vue';
@ -12,4 +30,9 @@
required: true,
},
});
const options = [
{ label: '卫星例图', value: 'src/assets/images/chart/zhigan/component/example1.png' },
{ label: '无人机例图', value: 'src/assets/images/chart/zhigan/component/example2.png' },
];
</script>

View File

@ -5,7 +5,7 @@ export const WuRenJiImageConfig: ConfigType = {
key: 'WuRenJiImage',
chartKey: 'VWuRenJiImage',
conKey: 'VCWuRenJiImage',
title: '无人机',
title: '无人机和卫星例图',
category: ChatCategoryEnum.ZHIGAN,
categoryName: ChatCategoryEnumName.ZHIGAN,
package: PackagesCategoryEnum.ZHIGAN,

View File

@ -1,6 +1,6 @@
<template>
<div class="title">
<Tupian :w="w" :h="h" />
<Tupian :w="w" :h="h" :dataset="option.dataset" />
</div>
</template>
@ -21,7 +21,9 @@
const { w, h } = toRefs(props.chartConfig.attr);
const option = reactive({});
const option = reactive({
dataset: props.chartConfig.option.dataset,
});
</script>
<style lang="scss" scoped>

View File

@ -8,6 +8,7 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<image x="0" y="0" :width="props.w" :height="props.h" :href="props.dataset.url" />
<defs>
<linearGradient
x1="44.8535648%"
@ -38,14 +39,8 @@
<g id="林业防火-智感-卫星遥感信息-切图版" transform="translate(-1495, -91)">
<g id="可视化" transform="translate(-0.5, -1)">
<g id="模块" transform="translate(45.5, 92)">
<g id="标题模块--右侧1" transform="translate(1450.5, 0.9394)">
<g id="边框" transform="translate(0, -0)">
<polygon
id="面"
fill="#02221B"
opacity="0.687237694"
points="0.499001996 0.060630108 399.700599 0.060630108 399.539646 271.06063 183.224719 271.06063 0.499001996 271.06063 0.499001996 193.216031 0.499001996 131.02166"
></polygon>
<g id="标题模块--右侧1" transform="translate(1450, 0)">
<g id="边框" transform="translate(0.5, 0.9394)">
<polygon
id="线框"
stroke="url(#linearGradient-1)"
@ -96,5 +91,5 @@
</template>
<script setup lang="ts">
const props = defineProps(['w', 'h']);
const props = defineProps(['w', 'h', 'dataset']);
</script>

View File

@ -1,11 +1,13 @@
import { GeneralHeadConfig } from "./GeneralHead/index";
import { ModalHeadConfig } from "./ModalHead/index";
import { MoreButtonConfig } from "./MoreButton/index";
import { HeadMoreButtonConfig } from "./HeadMoreButton/index";
import { WuRenJiImageConfig } from "./WuRenJiImage/index";
import { WeiXingYaoGanConfig } from "./WeiXingYaoGan/index";
import { XianSuoShangBaoConfig } from "./XianSuoShangBao/index";
import { MeiRiShangBaoConfig } from "./MeiRiShangBao/index";
import { WuRenJiImageConfig } from "./WuRenJiImage/index";
import { WuRenJiShiShiHuaMianConfig } from "./WuRenJiShiShiHuaMian/index";
import { WuRenJiFeiXingShuJuConfig } from "./WuRenJiFeiXingShuJu/index";
import { ModalFrameConfig } from "./ModalFrame/index";
@ -17,12 +19,13 @@ import { ModalTimeLineConfig } from "./ModalTimeLine/index";
export default [
GeneralHeadConfig,
ModalHeadConfig,
MoreButtonConfig,
HeadMoreButtonConfig,
WuRenJiImageConfig,
WeiXingYaoGanConfig,
XianSuoShangBaoConfig,
MeiRiShangBaoConfig,
WuRenJiImageConfig,
WuRenJiShiShiHuaMianConfig,
WuRenJiFeiXingShuJuConfig,
ModalFrameConfig,

View File

@ -9,8 +9,7 @@
<div class="content-div">
<div class="photo-item" v-for="(item, index) in photoList" :key="index">
<Image
:width="150"
:height="150"
:src="`${apiUrl}/${item.filePath}`"
/>
<div class="select-div">
@ -175,7 +174,7 @@ const addPhotoToList = () =>{
position: relative;
width: 150px;
height: 150px;
// background-color: red;
background-color: rgb(24,24,28);
margin-bottom: 10px;
margin-right: 10px;
.select-div{

View File

@ -178,7 +178,7 @@
}
.event-type {
.event-type__content {
background-color: #f5f5f5;
// background-color: #f5f5f5;
padding: 10px 20px;
border-radius: 6px;
.event-type__content__item {

View File

@ -305,7 +305,7 @@
.edit-screens {
position: absolute;
width: 100%;
height: 100%;
height: 90%;
overflow: auto;
user-select: none;
padding-bottom: 0px;

View File

@ -69,6 +69,16 @@
//
const { menuOptions, onClickOutSide, mousePosition, handleMenuSelect } = useContextMenu();
// ctrl+
document.addEventListener(
'wheel',
function (event) {
if (event.ctrlKey) {
event.preventDefault();
}
},
{ passive: false },
);
</script>
<style lang="scss" scoped>

3
start.bat Normal file
View File

@ -0,0 +1,3 @@
@echo off
npm run dev
pause

View File

@ -0,0 +1,67 @@
// vite.config.ts
import { defineApplicationConfig } from "file:///E:/%E6%9E%97%E4%B8%9A%E9%98%B2%E7%81%AB%E9%A1%B9%E7%9B%AE/LinYeFangHuo/internal/vite-config/dist/index.mjs";
var vite_config_default = defineApplicationConfig({
overrides: {
optimizeDeps: {
include: [
"echarts/core",
"echarts/charts",
"echarts/components",
"echarts/renderers",
"qrcode",
"@iconify/iconify",
"ant-design-vue/es/locale/zh_CN",
"ant-design-vue/es/locale/en_US",
"@/../lib/vform/designer.umd.js"
]
},
build: {
/* 其他build生产打包配置省略 */
//...
target: "esnext",
commonjsOptions: {
include: /node_modules|lib/
//这里记得把lib目录加进来否则生产打包会报错
}
},
server: {
proxy: {
"/basic-api": {
target: "http://localhost:3000",
changeOrigin: true,
ws: true,
rewrite: (path) => path.replace(new RegExp(`^/basic-api`), "")
// only https
// secure: false
},
"/upload": {
target: "http://localhost:3300/upload",
changeOrigin: true,
ws: true,
rewrite: (path) => path.replace(new RegExp(`^/upload`), "")
}
},
warmup: {
clientFiles: ["./index.html", "./src/{views,components}/*"]
}
},
define: {
"process.env": {
BASE_URL: "/"
}
},
css: {
preprocessorOptions: {
scss: {
javascriptEnabled: true,
additionalData: `@import "src/styles/common/style.scss";`
}
}
},
plugins: []
}
});
export {
vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJFOlxcXFxcdTY3OTdcdTRFMUFcdTk2MzJcdTcwNkJcdTk4NzlcdTc2RUVcXFxcTGluWWVGYW5nSHVvXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJFOlxcXFxcdTY3OTdcdTRFMUFcdTk2MzJcdTcwNkJcdTk4NzlcdTc2RUVcXFxcTGluWWVGYW5nSHVvXFxcXHZpdGUuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9FOi8lRTYlOUUlOTclRTQlQjglOUElRTklOTglQjIlRTclODElQUIlRTklQTElQjklRTclOUIlQUUvTGluWWVGYW5nSHVvL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHsgZGVmaW5lQXBwbGljYXRpb25Db25maWcgfSBmcm9tICdAdmJlbi92aXRlLWNvbmZpZyc7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUFwcGxpY2F0aW9uQ29uZmlnKHtcbiAgb3ZlcnJpZGVzOiB7XG4gICAgb3B0aW1pemVEZXBzOiB7XG4gICAgICBpbmNsdWRlOiBbXG4gICAgICAgICdlY2hhcnRzL2NvcmUnLFxuICAgICAgICAnZWNoYXJ0cy9jaGFydHMnLFxuICAgICAgICAnZWNoYXJ0cy9jb21wb25lbnRzJyxcbiAgICAgICAgJ2VjaGFydHMvcmVuZGVyZXJzJyxcbiAgICAgICAgJ3FyY29kZScsXG4gICAgICAgICdAaWNvbmlmeS9pY29uaWZ5JyxcbiAgICAgICAgJ2FudC1kZXNpZ24tdnVlL2VzL2xvY2FsZS96aF9DTicsXG4gICAgICAgICdhbnQtZGVzaWduLXZ1ZS9lcy9sb2NhbGUvZW5fVVMnLFxuICAgICAgICAnQC8uLi9saWIvdmZvcm0vZGVzaWduZXIudW1kLmpzJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICBidWlsZDoge1xuICAgICAgLyogXHU1MTc2XHU0RUQ2YnVpbGRcdTc1MUZcdTRFQTdcdTYyNTNcdTUzMDVcdTkxNERcdTdGNkVcdTc3MDFcdTc1NjUgKi9cbiAgICAgIC8vLi4uXG4gICAgICB0YXJnZXQ6ICdlc25leHQnLFxuICAgICAgY29tbW9uanNPcHRpb25zOiB7XG4gICAgICAgIGluY2x1ZGU6IC9ub2RlX21vZHVsZXN8bGliLywgLy9cdThGRDlcdTkxQ0NcdThCQjBcdTVGOTdcdTYyOEFsaWJcdTc2RUVcdTVGNTVcdTUyQTBcdThGREJcdTY3NjVcdUZGMENcdTU0MjZcdTUyMTlcdTc1MUZcdTRFQTdcdTYyNTNcdTUzMDVcdTRGMUFcdTYyQTVcdTk1MTlcdUZGMDFcdUZGMDFcbiAgICAgIH0sXG4gICAgfSxcbiAgICBzZXJ2ZXI6IHtcbiAgICAgIHByb3h5OiB7XG4gICAgICAgICcvYmFzaWMtYXBpJzoge1xuICAgICAgICAgIHRhcmdldDogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCcsXG4gICAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxuICAgICAgICAgIHdzOiB0cnVlLFxuICAgICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UobmV3IFJlZ0V4cChgXi9iYXNpYy1hcGlgKSwgJycpLFxuICAgICAgICAgIC8vIG9ubHkgaHR0cHNcbiAgICAgICAgICAvLyBzZWN1cmU6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgICcvdXBsb2FkJzoge1xuICAgICAgICAgIHRhcmdldDogJ2h0dHA6Ly9sb2NhbGhvc3Q6MzMwMC91cGxvYWQnLFxuICAgICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcbiAgICAgICAgICB3czogdHJ1ZSxcbiAgICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4gcGF0aC5yZXBsYWNlKG5ldyBSZWdFeHAoYF4vdXBsb2FkYCksICcnKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB3YXJtdXA6IHtcbiAgICAgICAgY2xpZW50RmlsZXM6IFsnLi9pbmRleC5odG1sJywgJy4vc3JjL3t2aWV3cyxjb21wb25lbnRzfS8qJ10sXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVmaW5lOiB7XG4gICAgICAncHJvY2Vzcy5lbnYnOiB7XG4gICAgICAgIEJBU0VfVVJMOiAnLycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgY3NzOiB7XG4gICAgICBwcmVwcm9jZXNzb3JPcHRpb25zOiB7XG4gICAgICAgIHNjc3M6IHtcbiAgICAgICAgICBqYXZhc2NyaXB0RW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBhZGRpdGlvbmFsRGF0YTogYEBpbXBvcnQgXCJzcmMvc3R5bGVzL2NvbW1vbi9zdHlsZS5zY3NzXCI7YCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBwbHVnaW5zOiBbXSxcbiAgfSxcbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUEwUyxTQUFTLCtCQUErQjtBQUVsVixJQUFPLHNCQUFRLHdCQUF3QjtBQUFBLEVBQ3JDLFdBQVc7QUFBQSxJQUNULGNBQWM7QUFBQSxNQUNaLFNBQVM7QUFBQSxRQUNQO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLElBQ0EsT0FBTztBQUFBO0FBQUE7QUFBQSxNQUdMLFFBQVE7QUFBQSxNQUNSLGlCQUFpQjtBQUFBLFFBQ2YsU0FBUztBQUFBO0FBQUEsTUFDWDtBQUFBLElBQ0Y7QUFBQSxJQUNBLFFBQVE7QUFBQSxNQUNOLE9BQU87QUFBQSxRQUNMLGNBQWM7QUFBQSxVQUNaLFFBQVE7QUFBQSxVQUNSLGNBQWM7QUFBQSxVQUNkLElBQUk7QUFBQSxVQUNKLFNBQVMsQ0FBQyxTQUFTLEtBQUssUUFBUSxJQUFJLE9BQU8sYUFBYSxHQUFHLEVBQUU7QUFBQTtBQUFBO0FBQUEsUUFHL0Q7QUFBQSxRQUNBLFdBQVc7QUFBQSxVQUNULFFBQVE7QUFBQSxVQUNSLGNBQWM7QUFBQSxVQUNkLElBQUk7QUFBQSxVQUNKLFNBQVMsQ0FBQyxTQUFTLEtBQUssUUFBUSxJQUFJLE9BQU8sVUFBVSxHQUFHLEVBQUU7QUFBQSxRQUM1RDtBQUFBLE1BQ0Y7QUFBQSxNQUNBLFFBQVE7QUFBQSxRQUNOLGFBQWEsQ0FBQyxnQkFBZ0IsNEJBQTRCO0FBQUEsTUFDNUQ7QUFBQSxJQUNGO0FBQUEsSUFDQSxRQUFRO0FBQUEsTUFDTixlQUFlO0FBQUEsUUFDYixVQUFVO0FBQUEsTUFDWjtBQUFBLElBQ0Y7QUFBQSxJQUNBLEtBQUs7QUFBQSxNQUNILHFCQUFxQjtBQUFBLFFBQ25CLE1BQU07QUFBQSxVQUNKLG1CQUFtQjtBQUFBLFVBQ25CLGdCQUFnQjtBQUFBLFFBQ2xCO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxJQUNBLFNBQVMsQ0FBQztBQUFBLEVBQ1o7QUFDRixDQUFDOyIsCiAgIm5hbWVzIjogW10KfQo=