From 8f44a2085cfdf82f3fdcf608cda85e9bb2c13ccf Mon Sep 17 00:00:00 2001
From: 李林 <z1292839451@163.com>
Date: 星期二, 02 一月 2024 15:04:46 +0800
Subject: [PATCH] 修订版本1.0
---
src/components/view/index-index.vue | 688 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 685 insertions(+), 3 deletions(-)
diff --git a/src/components/view/index-index.vue b/src/components/view/index-index.vue
index 479fcde..d3b7b7c 100644
--- a/src/components/view/index-index.vue
+++ b/src/components/view/index-index.vue
@@ -1,16 +1,698 @@
<style scoped>
+ .index {
+ width: 100%;
+ height: calc(100% - 50px);
+ overflow-y: auto;
+ padding: 25px 0;
+ }
+
+ .no {
+ width: 100%;
+ display: flex;
+ margin-bottom: 10px;
+ }
+
+ .card {
+ border-radius: 6px;
+ background-color: #fff;
+ padding: 10px 20px;
+ }
+
+ .no1 {
+ display: flex;
+ }
+
+ .no1 .left {
+ width: 65%;
+ margin-right: 10px;
+ }
+
+ .left-1 {
+ background-image: url("../../../static/img/棣栭〉鍥剧墖1.png");
+ background-size: 100% 100%;
+ width: calc(100% - 40px);
+ height: 7.2vw;
+ margin-bottom: 10px;
+ }
+
+ .left-1 .say {
+ height: 100%;
+ display: flex;
+ align-items: center;
+ margin-left: 15%;
+ width: 45%;
+ }
+
+ .left-1 .say div {
+ color: #fff;
+ margin: 4px 0;
+ }
+
+ .left-1 .say-1 {
+ font-size: 18px;
+ }
+
+ .left-1 .say-2 {
+ font-size: 17px;
+ }
+
+ .left-2 {
+ width: 100%;
+ display: flex;
+ }
+
+ .card-1 {
+ width: calc(25% - 40px);
+ height: 100px;
+ display: flex;
+ align-items: center;
+ margin-right: 10px;
+ }
+
+ .card-1 .label .p1 {
+ color: #333;
+ font-size: 0.85vw;
+ font-style: normal;
+ font-weight: 400;
+ margin-bottom: 10px;
+ }
+
+ .card-1 .label .p2 {
+ color: #3A7BFA;
+ font-size: 1.4vw;
+ font-style: normal;
+ font-weight: 400;
+ }
+
+ .card-1 .label {
+ width: calc(100% - 4vw);
+ }
+
+ .card-1 .icon {
+ background-color: #F3F6FA;
+ border-radius: 50%;
+ width: 4vw;
+ height: 4vw;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .card-1 .icon i {
+ font-size: 1.6vw;
+ color: #3A7BFA;
+ }
+
+ .right {
+ width: 35%;
+ height: calc(7.2vw + 10px + 120px);
+ display: flex;
+ flex-wrap: wrap;
+ }
+
+ .card-2 {
+ width: 33.3%;
+ height: calc(50% - 20px);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-wrap: wrap;
+ cursor: pointer;
+ margin-bottom: 10px;
+ }
+
+ .card-2 .icon {
+ width: 3.5vw;
+ height: 3.5vw;
+ background-color: #F3F6FA;
+ border-radius: 24px;
+ }
+
+ .card-2 .icon i {
+ font-size: 1.7vw;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 100%;
+ }
+
+ .card-2 .text {
+ width: 100%;
+ text-align: center;
+ }
+
+ ::-webkit-scrollbar {
+ width: 0px;
+ }
+
+ ::-webkit-scrollbar-thumb {
+ background-color: transparent;
+ border-radius: 3px;
+ }
+
+ .cart-3,
+ .cart-4,
+ .cart-5,
+ .cart-6 {
+ width: calc(50%);
+ height: 300px;
+ background-color: #fff;
+ }
+
+ .cart-3 div,
+ .cart-4 div,
+ .cart-5 div,
+ .cart-6 div {
+ width: 100%;
+ height: calc(100% - 30px);
+ }
+
+ .card p {
+ width: 100%;
+ line-height: 30px;
+ }
+
+ .cart-3,
+ .cart-5 {
+ margin-right: 10px;
+ }
</style>
<template>
- <div class="index">棣栭〉</div>
+ <div class="index">
+ <div class="no no1">
+ <div class="left">
+ <div class="left-1 card">
+ <div class="say">
+ <div style="display: flex;align-items: center;flex-wrap: wrap;">
+ <div class="say-1">{{user.name}} 鎮ㄥソ锛佺鎮ㄥ紑蹇冩瘡涓�澶�</div>
+ <div class="say-2">褰撳墠鏃堕棿锛� {{now}}</div>
+ </div>
+ </div>
+ </div>
+ <div class="left-2">
+ <div class="card card-1">
+ <div class="label">
+ <p class="p1">浠婃棩瀹㈡埛娑堣垂</p>
+ <p class="p2">{{data.data1.data1}}</p>
+ </div>
+ <div class="icon">
+ <i class="font icon-a-Group1139"></i>
+ </div>
+ </div>
+ <div class="card card-1">
+ <div class="label">
+ <p class="p1">浠婃棩瀹為檯娑堣垂</p>
+ <p class="p2">{{data.data1.data2}}</p>
+ </div>
+ <div class="icon">
+ <i class="font icon-a-Group1139"></i>
+ </div>
+ </div>
+ <div class="card card-1">
+ <div class="label">
+ <p class="p1">浠婃棩鎴愭湰</p>
+ <p class="p2">{{data.data1.data3}}</p>
+ </div>
+ <div class="icon">
+ <i class="font icon-qiandai" style="color: #FF9900;font-size: 2.4vw;"></i>
+ </div>
+ </div>
+ <div class="card card-1" style="margin-right: 0;">
+ <div class="label">
+ <p class="p1">浠婃棩瀹為檯鎴愭湰</p>
+ <p class="p2">{{data.data1.data4}}</p>
+ </div>
+ <div class="icon">
+ <i class="font icon-qiandai" style="color: #FF9900;font-size: 2.4vw;"></i>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="right card">
+ <p>甯哥敤鍔熻兘</p>
+ <div class="card-2" @click="openComponent('璐㈠姟涓婃姤')">
+ <div class="icon">
+ <i class="font icon-a-Group1236" style="color: #3A7BFA;"></i>
+ </div>
+ <div class="text">璐㈠姟涓婃姤</div>
+ </div>
+ <div class="card-2" @click="openComponent('杩涚矇涓婃姤')">
+ <div class="icon">
+ <i class="font icon-a-Group1122" style="color: #34BD66;"></i>
+ </div>
+ <div class="text">杩涚矇涓婃姤</div>
+ </div>
+ <div class="card-2" @click="openComponent('浜哄憳绠$悊')">
+ <div class="icon">
+ <i class="font icon-a-Group1124" style="color: #FF9900;"></i>
+ </div>
+ <div class="text">浜哄憳绠$悊</div>
+ </div>
+ <div class="card-2" @click="openComponent('瑙掕壊绠$悊')">
+ <div class="icon">
+ <i class="font icon-a-Group1126" style="color: #3A7BFA;"></i>
+ </div>
+ <div class="text">瑙掕壊绠$悊</div>
+ </div>
+ <div class="card-2" @click="openComponent('瀹㈡埛绠$悊')">
+ <div class="icon">
+ <i class="font icon-a-Group1124" style="color: #34BD66;"></i>
+ </div>
+ <div class="text">瀹㈡埛绠$悊</div>
+ </div>
+ <div class="card-2" @click="openComponent('椤圭洰绠$悊')">
+ <div class="icon">
+ <i class="font icon-a-Group1232" style="color: #FF9900;"></i>
+ </div>
+ <div class="text">椤圭洰绠$悊</div>
+ </div>
+ </div>
+ </div>
+ <div class="no no-2">
+ <div class="card cart-3">
+ <p>涓�鍛ㄥ鎴锋秷璐�</p>
+ <div id="card-1"></div>
+ </div>
+ <div class="card cart-4">
+ <p>涓�鍛ㄥ鎴峰疄闄呮秷璐�</p>
+ <div id="card-2"></div>
+ </div>
+ </div>
+ <div class="no no-2">
+ <div class="card cart-5">
+ <p>椤圭洰瀹㈡埛鎴愭湰</p>
+ <div id="card-3"></div>
+ </div>
+ <div class="card cart-6">
+ <p>椤圭洰瀹為檯鎴愭湰</p>
+ <div id="card-4"></div>
+ </div>
+ </div>
+ </div>
</template>
<script>
- export default{
+ import * as echarts from 'echarts';
+ export default {
data() {
- return{}
+ return {
+ user: {},
+ now: null,
+ data: {
+ data1: {},
+ data2: [],
+ data3: [],
+ data4: [],
+ data5: []
+ },
+ myChart1: null,
+ myChart2: null,
+ myChart3: null,
+ myChart4: null
+ }
},
mounted() {
+ this.user = JSON.parse(localStorage.getItem('user'))
+ this.nowTime()
+ this.myChart1 = echarts.init($('#card-1')[0]);
+ this.myChart2 = echarts.init($('#card-2')[0]);
+ this.myChart3 = echarts.init($('#card-3')[0]);
+ this.myChart4 = echarts.init($('#card-4')[0]);
+ this.getDataList()
+ setInterval(() => {
+ this.nowTime()
+ }, 1000)
+ setInterval(() => {
+ this.getDataList()
+ }, 30000)
+ },
+ methods: {
+ nowTime() {
+ var date = new Date();
+ var y = date.getFullYear();
+ var m = date.getMonth() + 1;
+ var d = date.getDate();
+ var h = date.getHours();
+ this.timeH = h
+ var min = date.getMinutes();
+ var s = date.getSeconds();
+ if (s < 10) {
+ s = "0" + s;
+ }
+ if (min < 10) {
+ min = "0" + min;
+ }
+ if (h < 10) {
+ h = "0" + h;
+ }
+ if (d < 10) {
+ d = "0" + d;
+ }
+ if (m < 10) {
+ m = "0" + m;
+ }
+ this.now = y + "-" + m + "-" + d + " " + h + ":" + min + ":" + s;
+ },
+ openComponent(str) {
+ var str1 = {}
+ var str2 = -1
+ switch (str) {
+ case '璐㈠姟涓婃姤':
+ str1 = {
+ k: 6,
+ v: "璐㈠姟涓婃姤",
+ i: "font icon-a-Group1236",
+ u: "finance-submit"
+ }
+ break
+ case '杩涚矇涓婃姤':
+ str1 = {
+ k: 5,
+ v: "杩涚矇涓婃姤",
+ i: "font icon-a-Group1122",
+ u: "fans-submit"
+ }
+ break
+ case '浜哄憳绠$悊':
+ str1 = {
+ k: 8,
+ v: "浜哄憳绠$悊",
+ i: "font icon-a-Group1124",
+ u: "person-manage"
+ }
+ break
+ case '瑙掕壊绠$悊':
+ str1 = {
+ k: 7,
+ v: "瑙掕壊绠$悊",
+ i: "font icon-a-Group1126",
+ u: "role-manage"
+ }
+ break
+ case '瀹㈡埛绠$悊':
+ str1 = {
+ k: 4,
+ v: "瀹㈡埛绠$悊",
+ i: "font icon-24gl-clipboardList",
+ u: "custom-enum"
+ }
+ str2 = 4
+ break
+ case '椤圭洰绠$悊':
+ str1 = {
+ k: 11,
+ v: "椤圭洰绠$悊",
+ i: "font icon-24gl-clipboardList",
+ u: "product-enum"
+ }
+ str2 = 4
+ break
+ }
+ this.$parent.addTab(str1, str2)
+ },
+ initEcharts1() {
+ var myChart = this.myChart1
+ var option;
+ let dataX = []
+ let data = [];
+ this.data.data2.forEach(a => {
+ dataX.push(a.date)
+ data.push(a.account_consumptions)
+ })
+ let yMax = 1000;
+ let dataShadow = [];
+ for (let i = 0; i < data.length; i++) {
+ dataShadow.push(yMax);
+ }
+ option = {
+ tooltip: {
+ trigger: 'axis',
+ axisPointer: {
+ type: 'shadow'
+ }
+ },
+ grid: {
+ top: "20px",
+ left: "50px",
+ bottom: "30px",
+ right: "20px"
+ },
+ title: {},
+ xAxis: {
+ type: 'category',
+ data: dataX,
+ axisLabel: {
+ color: '#333'
+ },
+ },
+ yAxis: {
+ axisLine: {
+ show: false
+ },
+ axisTick: {
+ show: false
+ },
+ axisLabel: {
+ color: '#333'
+ },
+ splitLine: {
+ lineStyle: {
+ type: [10, 10],
+ dashOffset: 20
+ },
+ show: true
+ }
+ },
+ series: [{
+ type: 'bar',
+ barWidth: '20%',
+ roam: false,
+ itemStyle: {
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+ offset: 0,
+ color: '#ffd062'
+ },
+ {
+ offset: 0.5,
+ color: '#ffa844'
+ },
+ {
+ offset: 1,
+ color: '#f59433'
+ }
+ ]),
+ barBorderRadius: [8, 8, 0, 0]
+ },
+ data: data
+ }]
+ };
+ option && myChart.setOption(option);
+ },
+ initEcharts2() {
+ var myChart = this.myChart2
+ var option;
+ let dataX = []
+ let data = [];
+ this.data.data3.forEach(a => {
+ dataX.push(a.date)
+ data.push(a.consumption)
+ })
+ let yMax = 1000;
+ let dataShadow = [];
+ for (let i = 0; i < data.length; i++) {
+ dataShadow.push(yMax);
+ }
+ option = {
+ tooltip: {
+ trigger: 'axis',
+ axisPointer: {
+ type: 'shadow'
+ }
+ },
+ grid: {
+ top: "20px",
+ left: "50px",
+ bottom: "30px",
+ right: "20px"
+ },
+ title: {},
+ xAxis: {
+ type: 'category',
+ data: dataX,
+ axisLabel: {
+ color: '#333'
+ },
+ },
+ yAxis: {
+ axisLine: {
+ show: false
+ },
+ axisTick: {
+ show: false
+ },
+ axisLabel: {
+ color: '#333'
+ },
+ splitLine: {
+ lineStyle: {
+ type: [10, 10],
+ dashOffset: 20
+ },
+ show: true
+ }
+ },
+ series: [{
+ type: 'bar',
+ barWidth: '20%',
+ itemStyle: {
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+ offset: 0,
+ color: '#74b3fe'
+ },
+ {
+ offset: 0.5,
+ color: '#4982f3'
+ },
+ {
+ offset: 1,
+ color: '#1c56df'
+ }
+ ]),
+ barBorderRadius: [8, 8, 0, 0]
+ },
+ data: data
+ }]
+ };
+ option && myChart.setOption(option);
+ },
+ initEcharts3() {
+ var myChart = this.myChart3
+ var dataX = []
+ var dataY = []
+ this.data.data4.forEach(a => {
+ dataX.push(a.product)
+ dataY.push(a.customerCosts)
+ })
+ var option;
+ option = {
+ tooltip: {
+ trigger: 'axis',
+ axisPointer: {
+ type: 'shadow'
+ }
+ },
+ grid: {
+ top: "20px",
+ left: "50px",
+ bottom: "30px",
+ right: "20px"
+ },
+ xAxis: {
+ type: 'category',
+ boundaryGap: false,
+ data: dataX,
+ axisLabel: {
+ interval: 0,
+ }
+ },
+ yAxis: {
+ type: 'value',
+ splitLine: {
+ lineStyle: {
+ type: [10, 10],
+ dashOffset: 20
+ },
+ show: true
+ }
+ },
+ series: [{
+ data: dataY,
+ type: 'line',
+ areaStyle: {},
+ smooth: true,
+ symbolSize: 7,
+ lineStyle: {
+ color: '#3c7aff'
+ },
+ itemStyle: {
+ color: '#3c7aff'
+ },
+ areaStyle: {
+ color: '#E5EEFF'
+ }
+ }]
+ };
+ option && myChart.setOption(option);
+ },
+ initEcharts4() {
+ var myChart = this.myChart4
+ var dataX = []
+ var dataY = []
+ this.data.data5.forEach(a => {
+ dataX.push(a.product)
+ dataY.push(a.actualCost)
+ })
+ var option;
+ option = {
+ tooltip: {
+ trigger: 'axis',
+ axisPointer: {
+ type: 'shadow'
+ }
+ },
+ grid: {
+ top: "20px",
+ left: "50px",
+ bottom: "30px",
+ right: "20px"
+ },
+ xAxis: {
+ type: 'category',
+ boundaryGap: false,
+ data: dataX,
+ axisLabel: {
+ interval: 0
+ }
+ },
+ yAxis: {
+ type: 'value',
+ splitLine: {
+ lineStyle: {
+ type: [10, 10],
+ dashOffset: 20
+ },
+ show: true
+ }
+ },
+ series: [{
+ data: dataY,
+ type: 'line',
+ areaStyle: {},
+ smooth: true,
+ symbolSize: 7,
+ lineStyle: {
+ color: '#f59433'
+ },
+ itemStyle: {
+ color: '#f59433'
+ },
+ areaStyle: {
+ color: '#FFF6DE'
+ }
+ }]
+ };
+ option && myChart.setOption(option);
+ },
+ getDataList() {
+ this.$axios.get(this.$api.dataReporting.getDataList).then(res => {
+ this.data = res.data
+ this.initEcharts1()
+ this.initEcharts2()
+ this.initEcharts3()
+ this.initEcharts4()
+ })
+ }
}
}
</script>
\ No newline at end of file
--
Gitblit v1.9.3