echart 组件

This commit is contained in:
yanran200730
2022-05-11 11:37:37 +08:00
parent 8998e9a664
commit e4d1e85156
5 changed files with 208 additions and 8 deletions

View File

@@ -10,6 +10,7 @@
<AiSwiper v-else-if="data.type === 'swiper'" :heigth="'100%'" :data="data[data.dataType]"/> <AiSwiper v-else-if="data.type === 'swiper'" :heigth="'100%'" :data="data[data.dataType]"/>
<dv-scroll-board <dv-scroll-board
v-if="data.type === 'table'" v-if="data.type === 'table'"
:class="'dvScrollBoard' + theme"
:config="formatTable(data[data.dataType], data.isShowIndex, data.rowNum)" :config="formatTable(data[data.dataType], data.isShowIndex, data.rowNum)"
:key="data.height" :key="data.height"
:theme="theme" :theme="theme"
@@ -126,6 +127,14 @@
:theme="theme" :theme="theme"
:data="data[data.dataType]" :data="data[data.dataType]"
:ops="pieChart1"/> :ops="pieChart1"/>
<ai-echart
v-else-if="data.type === 'pieChart3'"
style="height: 100%; width: 100%;"
:ref="'chart' + index"
:key="`chart${index}`"
:theme="theme"
:data="data[data.dataType]"
:ops="pieChart3"/>
<ai-map :markers="data[data.dataType]" v-else-if="data.type=='map'" :mask="data.mask === '1'" :areaId="data.areaId || user.info.areaId" map-style="amap://styles/e51987628aee5206d4c9ca8c6e98b4f7"/> <ai-map :markers="data[data.dataType]" v-else-if="data.type=='map'" :mask="data.mask === '1'" :areaId="data.areaId || user.info.areaId" map-style="amap://styles/e51987628aee5206d4c9ca8c6e98b4f7"/>
<ai-monitor :src="data.src" v-else-if="data.type === 'monitor'" :type="data.monitorType"></ai-monitor> <ai-monitor :src="data.src" v-else-if="data.type === 'monitor'" :type="data.monitorType"></ai-monitor>
<video style="width: 100%; height: 100%; object-fit: fill;" loop :src="data.src" autoplay v-else-if="data.type === 'video'"></video> <video style="width: 100%; height: 100%; object-fit: fill;" loop :src="data.src" autoplay v-else-if="data.type === 'video'"></video>
@@ -138,6 +147,7 @@
import AiSwiper from './AiSwiper.vue' import AiSwiper from './AiSwiper.vue'
import pieChart from 'dvcp-dv-ui/components/AiEchart/template/pie/pieChart2' import pieChart from 'dvcp-dv-ui/components/AiEchart/template/pie/pieChart2'
import pieChart1 from 'dvcp-dv-ui/components/AiEchart/template/pie/pieChart1' import pieChart1 from 'dvcp-dv-ui/components/AiEchart/template/pie/pieChart1'
import pieChart3 from 'dvcp-dv-ui/components/AiEchart/template/pie/pieChart3'
import lineChart1 from 'dvcp-dv-ui/components/AiEchart/template/line/lineChart1' import lineChart1 from 'dvcp-dv-ui/components/AiEchart/template/line/lineChart1'
import lineChart2 from 'dvcp-dv-ui/components/AiEchart/template/line/lineChart2' import lineChart2 from 'dvcp-dv-ui/components/AiEchart/template/line/lineChart2'
import lineChart5 from 'dvcp-dv-ui/components/AiEchart/template/line/lineChart5' import lineChart5 from 'dvcp-dv-ui/components/AiEchart/template/line/lineChart5'
@@ -157,7 +167,8 @@
lineChart2, lineChart2,
lineChart5, lineChart5,
pieChart, pieChart,
pieChart1 pieChart1,
pieChart3
} }
}, },
@@ -208,5 +219,42 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.render-element {
::v-deep .dvScrollBoard1 {
.index {
color: #fff;
text-shadow: none;
background: transparent;
background-color: #BD4921!important;
-webkit-background-clip: inherit;
-webkit-text-fill-color: #fff;
}
.header {
background: rgba(0, 0, 0, 0.1)!important;
.header-item {
color: #FFBB73!important;
font-size: 16px!important;
font-weight: 600;
}
}
.rows {
font-size: 16px;
font-weight: 600;
color: #FFFFFF;
line-height: 21px;
text-shadow: 0px 2px 4px rgba(117, 9, 9, 0.5);
background: linear-gradient(180deg, #FFF6C7 0%, #FF9A02 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
& > div:nth-of-type(2n) {
background: rgba(0, 0, 0, 0.1)!important;
}
}
}
}
</style> </style>

View File

@@ -12,6 +12,7 @@ import barChart7 from 'dvcp-dv-ui/components/AiEchart/template/bar/barChart7'
import barChart9 from 'dvcp-dv-ui/components/AiEchart/template/bar/barChart9' import barChart9 from 'dvcp-dv-ui/components/AiEchart/template/bar/barChart9'
import pieChart from 'dvcp-dv-ui/components/AiEchart/template/pie/pieChart2' import pieChart from 'dvcp-dv-ui/components/AiEchart/template/pie/pieChart2'
import pieChart1 from 'dvcp-dv-ui/components/AiEchart/template/pie/pieChart1' import pieChart1 from 'dvcp-dv-ui/components/AiEchart/template/pie/pieChart1'
import pieChart3 from 'dvcp-dv-ui/components/AiEchart/template/pie/pieChart3'
const components = [ const components = [
{ {
@@ -438,6 +439,35 @@ const components = [
config: pieChart1, config: pieChart1,
sourceDataId: '', sourceDataId: '',
dynamicData: [] dynamicData: []
},
{
code: 'widget-linechart',
type: 'pieChart3',
label: '饼图',
title: '饼图',
icon: 'icontext_box',
value: '',
border: 'border1',
width: 500,
height: 300,
zIndex: 1,
top: 0,
left: 0,
thumb: 'https://cdn.cunwuyun.cn/dvcp/dv/tpl/pie.png',
dataX: '',
dataY: [],
api: '',
apiData: [],
dataType: 'staticData',
staticData: [
{ name: '阿斯达', v1: 23, v2: 33 },
{ name: '水电费', v1: 12, v2: 34 },
{ name: '凡哥', v1: 67, v2: 25 },
{ name: '党费', v1: 98, v2: 85 }
],
config: pieChart1,
sourceDataId: '',
dynamicData: []
} }
] ]
} }

View File

@@ -16,7 +16,7 @@
<script> <script>
import AiDvWrapper from "./layout/AiDvWrapper/AiDvWrapper"; import AiDvWrapper from "./layout/AiDvWrapper/AiDvWrapper";
import ops from './components/AiEchart/template/pie/pieChart1' import ops from './components/AiEchart/template/pie/pieChart3'
import AiDvPanel from "./layout/AiDvPanel/AiDvPanel"; import AiDvPanel from "./layout/AiDvPanel/AiDvPanel";
import AiDvDisplay from "./layout/AiDvDisplay/AiDvDisplay"; import AiDvDisplay from "./layout/AiDvDisplay/AiDvDisplay";
import AiDvSummary from "./layout/AiDvSummary/AiDvSummary"; import AiDvSummary from "./layout/AiDvSummary/AiDvSummary";
@@ -31,11 +31,26 @@ export default {
ops, ops,
active: '', active: '',
views: [ views: [
{ value: 1048, name: 'Search Engine' }, {
{ value: 735, name: 'Direct' }, "name": "阿斯达",
{ value: 580, name: 'Email' }, "v1": 23,
{ value: 484, name: 'Union Ads' }, "v2": 33
{ value: 300, name: 'Video Ads' } },
{
"name": "水电费",
"v1": 12,
"v2": 34
},
{
"name": "凡哥",
"v1": 67,
"v2": 25
},
{
"name": "党费",
"v1": 98,
"v2": 85
}
], ],
list: [ list: [
{name: '阿斯达', v1: 23, v2: 33}, {name: '阿斯达', v1: 23, v2: 33},

View File

@@ -0,0 +1,107 @@
export default {
legend: {
right: 0,
top: '30%',
orient: 'vertical',
textStyle: {color: "#fff", fontSize: 14}
},
grid: {
height: 260
},
xAxis: {show: false},
yAxis: {show: false},
tooltip: {
backgroundColor: "rgba(14, 51, 111, 0.9)",
borderColor: "#1A6ABC",
textStyle: {color: "#fff"}
},
series: {
type: "pie",
minShowLabelAngle: 10,
radius: [50, 71],
itemStyle: {
borderColor: "#8d1419",
borderWidth: 2
},
label: {
show: false
},
labelLine: {},
labelLayout: function (params) {
let points = params.labelLinePoints,
isLeft = points[2][0] < points[1][0]
points[2][0] =
points[2][0] + (params.labelRect.width + 4) * (isLeft ? -1 : 1)
return {
labelLinePoints: points
}
}
},
render: (h, params) => {
const formatNum = num => {
if (num >= 10000000) {
return num / 10000000 + "千万"
}
if (num >= 10000) {
return num / 10000 + "万"
}
return parseFloat(num.toFixed(2))
}
let total = params.data.reduce((t, e) => {
return t + Number(Object.values(e)?.[1] || 0)
}, 0)
return h(
"div",
{
style: {
height: "162px",
width: "162px",
color: "#8BCCFF",
left: "50%",
top: "50%",
zIndex: '0',
display: "flex",
alignItems: "center",
justifyContent: "center",
flexDirection: "column",
position: "absolute",
transform: "translate(-50%,-50%)",
backgroundPosition: "center"
}
},
[
h(
'span',
{
style: {
'font-size': '32px',
'font-weight': 'bold',
'margin-bottom': '3px',
'color': '#CEE1FF',
'line-height': '28px',
'text-shadow': '0px 2px 4px rgba(117, 9, 9, 0.1)',
'background': 'linear-gradient(180deg, #FFF6C7 0%, #FF9A02 100%)',
'-webkit-background-clip': 'text',
'-webkit-text-fill-color': 'transparent'
}
},
formatNum(total)
),
h('span', {
style: {
'font-size': '16px',
'color': '#CEE1FF',
'line-height': '16px',
'text-shadow': '0px 2px 4px rgba(117, 9, 9, 0.5)',
'background': 'linear-gradient(180deg, #FFF6C7 0%, #FF9A02 100%)',
'-webkit-background-clip': 'text',
'-webkit-text-fill-color': 'transparent'
}
}, "总量")
]
)
}
}

View File

@@ -30,7 +30,7 @@ export default {
.slot { .slot {
width: 100%; width: 100%;
height: calc(100% - 0px); height: calc(100% - 0px);
padding: 20px 10px 20px; padding: 40px 10px 20px;
background: rgba(120, 0, 0, 0.2); background: rgba(120, 0, 0, 0.2);
border: 1px solid rgba(203, 45, 0, 0.5); border: 1px solid rgba(203, 45, 0, 0.5);
} }