From 310156b7244cd7b0c1b958f4267b5cf4e12bd90a Mon Sep 17 00:00:00 2001
From: ZhangXianQiang <1135831638@qq.com>
Date: 星期五, 08 三月 2024 17:15:45 +0800
Subject: [PATCH] fix:修改获取实例
---
src/views/daoAnOffice/right/analysis/index.vue | 334 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 315 insertions(+), 19 deletions(-)
diff --git a/src/views/daoAnOffice/right/analysis/index.vue b/src/views/daoAnOffice/right/analysis/index.vue
index 555f47b..1305d5d 100644
--- a/src/views/daoAnOffice/right/analysis/index.vue
+++ b/src/views/daoAnOffice/right/analysis/index.vue
@@ -1,16 +1,24 @@
<!-- 浜ら�氬畨鍏ㄥ舰鍔跨爺鍒ゅ垎鏋� -->
+
<template>
<RightTitle title="浜ら�氬畨鍏ㄥ舰鍔跨爺鍒ゅ垎鏋�">
<template #top>
<div class="select-container flex">
- <div class="item whitespace-no-wrap cursor-pointer" v-for="item in selectItems" :key="item.itemIndex">
+ <div class="item whitespace-no-wrap cursor-pointer" :class="{ 'select-active': item.isActive }"
+ v-for="item in selectItems" :key="item.itemIndex" @click="changeChart(item)">
{{ item.name }}
</div>
</div>
</template>
+
<template #content>
<div class="charts-container">
<div id="analysisChart" ref="analysisChart"></div>
+ <div class="type-select-container" v-show="isShowSelect">
+ <el-select v-model="typeValue" popper-class="type-select" class="select-style" @change="setConfig">
+ <el-option v-for="item in testData1" :key="item.name" :label="item.name" :value="item.name" />
+ </el-select>
+ </div>
</div>
</template>
</RightTitle>
@@ -21,16 +29,26 @@
import * as echarts from 'echarts';
import { ref, onMounted } from 'vue';
-// dom绀轰緥
+// dom
const analysisChart = ref(null);
-const echartRef = ref(null);
+
+// echart瀹炰緥
+let echartObject = null;
+
+// type閫夋嫨
+const typeValue = ref('');
+
+// 鏄惁鏄剧ず涓嬫媺妗�
+const isShowSelect = ref(true);
+
const selectItems = ref([
- { itemIndex: 1, name: '鏃堕棿缁熻', isActive: false },
- { itemIndex: 2, name: '琛楅亾缁熻', isActive: true },
+ { itemIndex: 1, name: '鏃堕棿缁熻', isActive: true },
+ { itemIndex: 2, name: '琛楅亾缁熻', isActive: false },
]);
+// 鏌辩姸鍥炬暟鎹�
const testData = ref([
{ name: '濂庡厜濉旇閬�', state1: 1400, state2: 3533, state3: 2316 },
{ name: '钂查槼琛楅亾', state1: 1820, state2: 4281, state3: 3064 },
@@ -43,14 +61,62 @@
{ name: '鐏屽彛琛楅亾', state1: 972, state2: 2124, state3: 1500 },
]);
+// 鎶樼嚎鏁版嵁
const testData1 = ref([
- { name: '閮芥睙鍫板競', state: { '2023-1': 1000, '2023-2': 2000, '2023-3': 1233 }, state2: { '2023-1': 12312, '2023-2': 23123, '2023-3': 2111 } },
- { name: '閮芥睙鍫板競', state: { '2023-1': 1000, '2023-2': 2000, '2023-3': 1233 }, state2: { '2023-1': 12312, '2023-2': 23123, '2023-3': 2111 } },
- { name: '閮芥睙鍫板競', state: { '2023-1': 1000, '2023-2': 2000, '2023-3': 1233 }, state2: { '2023-1': 12312, '2023-2': 23123, '2023-3': 2111 } },
- { name: '閮芥睙鍫板競', state: { '2023-1': 1000, '2023-2': 2000, '2023-3': 1233 }, state2: { '2023-1': 12312, '2023-2': 23123, '2023-3': 2111 } },
- { name: '閮芥睙鍫板競', state: { '2023-1': 1000, '2023-2': 2000, '2023-3': 1233 }, state2: { '2023-1': 12312, '2023-2': 23123, '2023-3': 2111 } },
- { name: '閮芥睙鍫板競', state: { '2023-1': 1000, '2023-2': 2000, '2023-3': 1233 }, state2: { '2023-1': 12312, '2023-2': 23123, '2023-3': 2111 } },
+ {
+ name: '閮芥睙鍫板競',
+ state: { '2023-1': 1000, '2023-2': 2000, '2023-3': 1233, '2023-4': 2132, '2023-5': 2999 },
+ state2: { '2023-1': 12312, '2023-2': 2312, '2023-3': 2111, '2023-4': 2132, '2023-5': 2999 }
+ },
+ {
+ name: '濂庡厜濉旇閬�',
+ state: { '2023-1': 21, '2023-2': 12, '2023-3': 224, '2023-4': 662, '2023-5': 71 },
+ state2: { '2023-1': 12312, '2023-2': 21, '2023-3': 2111, '2023-4': 2132, '2023-5': 2999 }
+ },
+ {
+ name: '钂查槼琛楅亾',
+ state: { '2023-1': 1000, '2023-2': 2131, '2023-3': 1233, '2023-4': 2132, '2023-5': 3211 },
+ state2: { '2023-1': 12312, '2023-2': 23123, '2023-3': 2111, '2023-4': 2132, '2023-5': 2999 }
+ },
+ {
+ name: '鑱氭簮闀�',
+ state: { '2023-1': 1000, '2023-2': 500, '2023-3': 1111, '2023-4': 2132, '2023-5': 2999 },
+ state2: { '2023-1': 12312, '2023-2': 2222, '2023-3': 2111, '2023-4': 2132, '2023-5': 2999 }
+ },
+ {
+ name: '閾舵潖琛楅亾',
+ state: { '2023-1': 1000, '2023-2': 2000, '2023-3': 1233, '2023-4': 2132, '2023-5': 12 },
+ state2: { '2023-1': 1231, '2023-2': 121, '2023-3': 123, '2023-4': 321, '2023-5': 2999 }
+ },
+ {
+ name: '鐭崇緤闀�',
+ state: { '2023-1': 1000, '2023-2': 8334, '2023-3': 1233, '2023-4': 123, '2023-5': 0 },
+ state2: { '2023-1': 12312, '2023-2': 512, '2023-3': 241, '2023-4': 2132, '2023-5': 2999 }
+ },
+ {
+ name: '榫欐睜闀�',
+ state: { '2023-1': 1000, '2023-2': 8334, '2023-3': 1233, '2023-4': 123, '2023-5': 0 },
+ state2: { '2023-1': 12312, '2023-2': 512, '2023-3': 241, '2023-4': 2132, '2023-5': 2999 }
+ },
+ {
+ name: '澶╅┈闀�',
+ state: { '2023-1': 1000, '2023-2': 8334, '2023-3': 1233, '2023-4': 123, '2023-5': 0 },
+ state2: { '2023-1': 12312, '2023-2': 512, '2023-3': 241, '2023-4': 2132, '2023-5': 2999 }
+ },
+ {
+ name: '鐜夊爞琛楅亾',
+ state: { '2023-1': 1000, '2023-2': 8334, '2023-3': 1233, '2023-4': 123, '2023-5': 0, '2023-6': 123, '2023-7': 21 },
+ state2: { '2023-1': 12312, '2023-2': 512, '2023-3': 241, '2023-4': 2132, '2023-5': 2999 }
+ },
+ {
+ name: '鐏屽彛琛楅亾',
+ state: { '2023-1': 1000, '2023-2': 8334, '2023-3': 1233, '2023-4': 123, '2023-5': 0 },
+ state2: { '2023-1': 12312, '2023-2': 512, '2023-3': 241, '2023-4': 2132, '2023-5': 2999, '2023-6': 61, '2023-7': 12 }
+ },
]);
+
+// 褰撳墠閫夐」
+let acitveData = ref(testData1.value[0]);
// 鍦嗘煴鍥捐〃
@@ -83,7 +149,30 @@
]
},
- tooltip: {},
+ tooltip: {
+ show: true,
+ trigger: 'axis',
+ backgroundColor: '#000001cc',
+ borderWidth: 0,
+ textStyle: {
+ color: '#4D76B0',
+ fontSize: 16
+ },
+ axisPointer: {
+ type: 'shadow',
+ lable: {
+ color: '#000000'
+ }
+ },
+ padding: [20, 25],
+ formatter: function (params) {
+ let temp = params[0].name + '<br/>';
+ params.forEach(element => {
+ temp += element.seriesName + ':' + `<span style="color:${getColor(element.componentIndex)}">${element.value[`state${element.componentIndex + 1}`]}</span>` + '<br/>';
+ });
+ return temp;
+ }
+ },
grid: {
left: 0,
right: 0,
@@ -95,8 +184,31 @@
dimensions: ['name', 'state1', 'state2', 'state3'],
source: testData.value
},
- xAxis: { type: 'category', axisTick: false },
- yAxis: {},
+ xAxis: {
+ type: 'category',
+ axisTick: false,
+ axisLabel: {
+ fontSize: 14,
+ color: '#4D76B0',
+ margin: 15
+ },
+ axisLine: {
+ lineStyle: {
+ color: '#4d76b033'
+ }
+ }
+ },
+ yAxis: {
+ axisLabel: {
+ fontSize: 14,
+ color: '#4D76B0',
+ },
+ splitLine: {
+ lineStyle: {
+ color: '#4d76b033'
+ }
+ }
+ },
series: [
{
type: 'bar',
@@ -167,15 +279,146 @@
]
});
+
// line閰嶇疆
-const lineConfig = ref({})
-// let acitveData = ref(testData1.values[0]);
+const lineConfig = ref(null);
+// 鍥捐〃鏇存崲
+const changeChart = (selectItem) => {
+ selectItems.value.map(item => item.isActive = false);
+ selectItem.isActive = true;
+ if (selectItem.itemIndex == 1) {
+ echartObject.setOption(lineConfig.value, true);
+ isShowSelect.value = true;
+ } else {
+ echartObject.setOption(barConfig.value, true);
+ isShowSelect.value = false;
+ }
+}
+
+// 閰嶇疆鏁版嵁
+const setConfig = () => {
+ acitveData.value = testData1.value.find((item) => item.name === typeValue.value);
+ lineConfig.value = {
+ legend: {
+ right: '12%',
+ icon: 'circle',
+ textStyle: {
+ color: 'rgba(77, 118, 176, 1)'
+ },
+ data: [
+ {
+
+ name: '閰掗┚',
+ itemStyle: {
+ color: 'rgba(207, 178, 73, 1)'
+ }
+ },
+ {
+ name: '鍏朵粬',
+ itemStyle: {
+ color: 'rgba(43, 176, 109, 1)'
+ }
+ },
+ ],
+ },
+ tooltip: {
+ show: true,
+ trigger: 'axis',
+ backgroundColor: '#000001cc',
+ borderWidth: 0,
+ textStyle: {
+ color: '#4D76B0',
+ fontSize: 16
+ },
+ axisPointer: {
+ type: 'shadow',
+ lable: {
+ color: '#000000'
+ }
+ },
+ padding: [20, 25],
+ formatter: function (params) {
+ let temp = params[0].name + '<br/>';
+ params.forEach(element => {
+ temp += element.seriesName + ':' + `<span style="color:${element.componentIndex === 1 ? '#2bb06d' : '#cfb249'}">${element.value}</span>` + '<br/>';
+ });
+ return temp;
+ }
+ },
+ grid: {
+ left: 0,
+ right: 0,
+ bottom: 0,
+ top: '15%',
+ containLabel: true
+ },
+ xAxis: {
+ type: 'category',
+ data: Object.keys(acitveData.value.state),
+ axisLabel: {
+ fontSize: 14,
+ color: '#4D76B0',
+ margin: 15
+ },
+
+ axisTick: false,
+ axisLine: {
+ lineStyle: {
+ color: '#4d76b033'
+ }
+ }
+ },
+ yAxis: {
+ type: 'value',
+ axisLabel: {
+ fontSize: 14,
+ color: '#4D76B0'
+ },
+ splitLine: {
+ lineStyle: {
+ color: '#4d76b033'
+ }
+ }
+ },
+ series: [
+ {
+ name: '閰掗┚',
+ data: Object.entries(acitveData.value.state).map(([key, value]) => value),
+ type: 'line',
+ smooth: true,
+ itemStyle: {
+ color: 'rgba(207, 178, 73, 1)'
+ }
+ },
+ {
+ name: '鍏朵粬',
+ data: Object.entries(acitveData.value.state2).map(([key, value]) => value),
+ type: 'line',
+ smooth: true,
+ itemStyle: {
+ color: 'rgba(43, 176, 109, 1)'
+ }
+ }
+ ]
+ }
+ echartObject.setOption(lineConfig.value, true);
+}
+
+
+// 棰滆壊
+const getColor = (index) => {
+ let colorList = ['#00a8d9', '#cfb249', '#2bb06d'];
+ return colorList[index % colorList.length];
+}
+
+// 鎸傝浇
onMounted(() => {
- echartRef.value = echarts.init(analysisChart.value);
- echartRef.value.setOption(barConfig.value);
+ echartObject = echarts.init(analysisChart.value);
+ typeValue.value = testData1.value[0].name;
+ setConfig();
})
</script>
@@ -187,10 +430,16 @@
.item {
margin: 0 8px;
padding: 10px 14px;
- font-size: 12px;
+ font-size: 14px;
background: rgba(67, 102, 155, 0.4);
border: 1px solid rgba(47, 91, 157, 0.8);
flex-shrink: 0;
+ color: #5B83BD;
+ font-family: 'PingFang SC';
+}
+
+.select-active {
+ color: #fff;
}
.item:last-child {
@@ -203,6 +452,15 @@
padding: 20px;
background-color: rgba(17, 34, 58, 0.6);
border: 1px solid rgba(47, 91, 157, 0.8);
+ position: relative;
+}
+
+.type-select-container {
+ position: absolute;
+ right: 20px;
+ top: 14px;
+ width: 120px;
+ height: 23px;
}
#analysisChart {
@@ -210,4 +468,42 @@
height: 100%;
box-sizing: border-box;
}
+
+::v-deep .el-input.el-input--suffix {
+ .el-input__wrapper {
+ background: rgba(67, 102, 155, 0.4) !important;
+ border: 1px solid rgba(47, 91, 157, 0.8);
+ }
+
+ .el-input__inner {
+ color: #4481DD;
+ }
+}
+</style>
+
+<style lang="scss">
+
+.el-popper {
+ background-color: rgba(21, 56, 105, 0.8) !important;
+ border-color: transparent !important;
+}
+.el-popper.is-light .el-popper__arrow::before {
+ background-color: rgba(21, 56, 105, 0.8) !important;
+ border-color: transparent !important;
+}
+.el-scrollbar__view {
+ padding: 0 !important;
+}
+.el-select-dropdown__item {
+ color: #5B83BD;
+}
+
+.el-select-dropdown__wrap {
+ padding: 0 !important;
+}
+
+.el-select-dropdown__item.hover,
+.el-select-dropdown__item:hover {
+ background-color: #203f64 !important;
+}
</style>
\ No newline at end of file
--
Gitblit v1.8.0