| | |
| | | <!-- |
| | | * @Author: daidai |
| | | * @Date: 2022-02-28 16:16:42 |
| | | * @LastEditors: Please set LastEditors |
| | | * @LastEditTime: 2022-07-20 17:57:11 |
| | | * @FilePath: \web-pc\src\pages\big-screen\view\indexs\left-center.vue |
| | | --> |
| | | <template> |
| | | <div id="name" style="width: 100%; height: 100%"> |
| | | <Echart :options="options" style="width: 100%; height: 100%"></Echart> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { currentGET } from "api/modules"; |
| | | import { ProductionStock } from "@/api/http.js"; |
| | | import * as echarts from 'echarts'; |
| | | let style = { |
| | | fontSize: 24, |
| | | }; |
| | | export default { |
| | | data() { |
| | | return { |
| | | pageflag: true, |
| | | myChart: {}, |
| | | options: {}, |
| | | <div id="name" style="width: 100%; height: 100%"> |
| | | <!-- 渲æ ECharts é¥¼å¾ --> |
| | | <Echart :options="options" style="width: 100%; height: 100%"></Echart> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { currentGET } from "api/modules"; |
| | | import { GetCPLargeStockCount } from "@/api/http.js"; |
| | | import * as echarts from 'echarts'; |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | pageflag: true, |
| | | options: {}, // åå¨ ECharts é
ç½® |
| | | timer: null // 宿¶å¨æ è¯ |
| | | }; |
| | | }, |
| | | created() { |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | async getData() { |
| | | const rep = await GetCPLargeStockCount(); |
| | | // ç»è£
饼徿°æ®ï¼[{value: æ°é, name: 产åç¼ç }, ...] |
| | | const pieData = rep.map(item => ({ |
| | | value: item.qtys, |
| | | name: item.pCode |
| | | })); |
| | | // è®¡ç®æ»åï¼ç¨äºè®¡ç®ç¾åæ¯ |
| | | const total = pieData.reduce((acc, cur) => acc + cur.value, 0); |
| | | // é
ç½® ECharts é¥¼å¾ |
| | | this.options = { |
| | | backgroundColor: '#000', |
| | | tooltip: { |
| | | trigger: 'item', // é¼ æ æ¬æµ®æç¤ºï¼è§¦åæ¹å¼ä¸ºâitemâï¼é坹饼徿åºï¼ |
| | | }, |
| | | |
| | | series: [ |
| | | { |
| | | name: '客æ·ä»£ç ', |
| | | type: 'pie', |
| | | radius: ['40%', '70%'], // 饼å¾å
å¤åå¾ï¼å®ç°ç¯å½¢/æå½¢ææ |
| | | center: ['50%', '50%'], // 饼å¾å¨å®¹å¨ä¸çä¸å¿ä½ç½® |
| | | color: [ |
| | | 'rgba(135,183,255, 1)', // 对åºç¤ºä¾é¥¼å¾é¢è²ï¼å¯æéè°æ´ |
| | | 'rgba(248,195,248, 1)', |
| | | 'rgba(100,255,249, 1)', |
| | | 'rgba(100,255,249, 1)', |
| | | 'rgba(248,195,248, 1)' |
| | | ], |
| | | label: { |
| | | show: true, |
| | | position: 'outside', |
| | | textStyle: { |
| | | color: '#b3ccf8', |
| | | fontSize: 14, |
| | | fontFamily: 'PingFangSC-Regular' |
| | | }, |
| | | // æ ¼å¼åæ ç¾ï¼æ¾ç¤ºåç§°åç¾åæ¯ |
| | | formatter: (params) => { |
| | | const percent = ((params.value / total) * 100).toFixed(2) + '%'; |
| | | return `${params.name}\n${percent}`; |
| | | } |
| | | }, |
| | | data: pieData, |
| | | }, |
| | | ], |
| | | }; |
| | | }, |
| | | filters: { |
| | | numsFilter(msg) { |
| | | return msg || 0; |
| | | }, |
| | | // è½®è¯¢ï¼æ¯éä¸å¤©è¯·æ±ä¸æ¬¡æ°æ®ï¼ |
| | | switper() { |
| | | if (this.timer) return; |
| | | // æ¯éä¸å¤©ï¼86400000 毫ç§ï¼æ§è¡ä¸æ¬¡ getData |
| | | this.timer = setInterval(() => { |
| | | this.getData(); |
| | | }, 86400000); |
| | | }, |
| | | created() { |
| | | this.getData(); |
| | | }, |
| | | mounted() { |
| | | this.init(); |
| | | }, |
| | | beforeDestroy() { |
| | | this.clearData(); |
| | | }, |
| | | methods: { |
| | | init() { |
| | | let dataPie = [ |
| | | |
| | | { |
| | | value: 410, |
| | | name: 'ä¼ä¸' |
| | | }, |
| | | { |
| | | value: 380, |
| | | name: 'æ¿åº' |
| | | }, |
| | | { |
| | | value: 501, |
| | | name: '个人' |
| | | }, |
| | | ]; |
| | | let colorPie = ['#173852', '#0b2036', '#002e49']; |
| | | let colorWrap = ['#3087d6', '#afe1ff', '#4be1ff']; |
| | | let baseDataPie = [], |
| | | baseDataWrap = []; |
| | | for (var i = 0; i < dataPie.length; i++) { |
| | | baseDataPie.push({ |
| | | value: dataPie[i].value, |
| | | name: dataPie[i].name, |
| | | itemStyle: { |
| | | normal: { |
| | | borderWidth: 50, |
| | | |
| | | borderColor: colorPie[i], |
| | | |
| | | } |
| | | } |
| | | }); |
| | | baseDataWrap.push({ |
| | | value: dataPie[i].value, |
| | | name: dataPie[i].name, |
| | | itemStyle: { |
| | | normal: { |
| | | color: colorWrap[i], |
| | | borderWidth: 10, |
| | | borderColor: colorWrap[i], |
| | | shadowBlur: 50, |
| | | shadowColor: 'rgba(48, 135, 214, 0.3)', |
| | | } |
| | | } |
| | | }, { |
| | | value: 10, |
| | | name: '', |
| | | itemStyle: { |
| | | normal: { |
| | | color: 'transparent', |
| | | borderWidth: 10, |
| | | borderColor: 'transparent', |
| | | |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | this.options = { |
| | | backgroundColor: '#021228', |
| | | title: { |
| | | text: 'æ¥è¦æ»æ°', |
| | | subtext: '10,225', |
| | | textStyle: { |
| | | color: '#00b5f3', |
| | | fontSize: 12, |
| | | |
| | | }, |
| | | subtextStyle: { |
| | | align: 'center', |
| | | fontSize: 18, |
| | | color: ['#85c7e3'], |
| | | fontWeight:800 |
| | | }, |
| | | x: '38%', |
| | | y: 'center', |
| | | }, |
| | | tooltip: { |
| | | show: true, |
| | | trigger: 'item', |
| | | formatter: "{a}ï¼{b} <br/>å æ¯ï¼{d}%" |
| | | }, |
| | | legend: { |
| | | data: ['ä¼ä¸', 'æ¿åº', '个人'], |
| | | icon: 'vertical', |
| | | right: '1%', |
| | | top: 'center', |
| | | orient: 'vertical', |
| | | itemGap: 20, |
| | | itemWidth: 15, |
| | | itemHeight: 8, |
| | | |
| | | formatter: function(name) { |
| | | let target; |
| | | for (let i = 0; i < dataPie.length; i++) { |
| | | if (dataPie[i].name === name) { |
| | | target = dataPie[i].value |
| | | } |
| | | } |
| | | let arr = [name, target]; |
| | | return arr.join("\n") |
| | | |
| | | }, |
| | | textStyle: { |
| | | lineHeight: 20, |
| | | color: '#9ed2f5', |
| | | |
| | | }, |
| | | }, |
| | | grid: { |
| | | left: '1%', // ä¸å®¹å¨å·¦ä¾§çè·ç¦» |
| | | right: '1%', // ä¸å®¹å¨å³ä¾§çè·ç¦» |
| | | top: '1%', // ä¸å®¹å¨é¡¶é¨çè·ç¦» |
| | | bottom: '1%', // ä¸å®¹å¨åºé¨çè·ç¦» |
| | | |
| | | }, |
| | | series: [ |
| | | { |
| | | name: '', |
| | | type: 'pie', |
| | | clockWise: false, //顺æ¶å è½½ |
| | | hoverAnimation: false, //é¼ æ ç§»å
¥å大 |
| | | center: ['40%', '50%'], |
| | | radius: ['80%', '81%'], |
| | | tooltip: { |
| | | show: false |
| | | }, |
| | | label: { |
| | | normal: { |
| | | show: false |
| | | } |
| | | }, |
| | | data: baseDataWrap |
| | | }, |
| | | { |
| | | |
| | | name: 'æ¥è¦', |
| | | type: 'pie', |
| | | color: colorPie, |
| | | selectedMode: 'single', |
| | | radius: ['55%', '58%'], |
| | | center: ['40%', '50%'], |
| | | hoverAnimation: false, |
| | | label: { |
| | | normal: { |
| | | show: false, |
| | | } |
| | | }, |
| | | |
| | | data: baseDataPie |
| | | }, |
| | | |
| | | ] |
| | | }; |
| | | }, |
| | | clearData() { |
| | | if (this.timer) { |
| | | clearInterval(this.timer); |
| | | this.timer = null; |
| | | } |
| | | }, |
| | | async getData() { |
| | | this.pageflag = true; |
| | | // currentGET("big2").then((res) => { |
| | | // if (!this.timer) { |
| | | // console.log("è®¾å¤æ»è§2", res); |
| | | // } |
| | | // if (res.success) { |
| | | // this.userOverview = res.data; |
| | | // this.onlineconfig = { |
| | | // ...this.onlineconfig, |
| | | // number: [1] |
| | | // } |
| | | // this.config = { |
| | | // ...this.config, |
| | | // number: [7] |
| | | // } |
| | | // this.offlineconfig = { |
| | | // ...this.offlineconfig, |
| | | // number: [4] |
| | | // } |
| | | // this.laramnumconfig = { |
| | | // ...this.laramnumconfig, |
| | | // number: [10] |
| | | // } |
| | | // this.switper(); |
| | | // } else { |
| | | // this.pageflag = false; |
| | | // this.$Message.warning(res.msg); |
| | | // } |
| | | // }); |
| | | // var rep = await ProductionStock(); |
| | | let dataPie = [ |
| | | { |
| | | value: 430, |
| | | name: 'åºå产å' |
| | | }, |
| | | ]; |
| | | let colorPie = ['#173852']; |
| | | let colorWrap = ['#3087d6']; |
| | | let baseDataPie = [], |
| | | baseDataWrap = []; |
| | | for (var i = 0; i < dataPie.length; i++) { |
| | | baseDataPie.push({ |
| | | value: dataPie[i].value, |
| | | name: dataPie[i].name, |
| | | itemStyle: { |
| | | normal: { |
| | | borderWidth: 50, |
| | | |
| | | borderColor: colorPie[i], |
| | | |
| | | } |
| | | } |
| | | }); |
| | | baseDataWrap.push({ |
| | | value: dataPie[i].value, |
| | | name: dataPie[i].name, |
| | | itemStyle: { |
| | | normal: { |
| | | color: colorWrap[i], |
| | | borderWidth: 10, |
| | | borderColor: colorWrap[i], |
| | | shadowBlur: 50, |
| | | shadowColor: 'rgba(48, 135, 214, 0.3)', |
| | | } |
| | | } |
| | | }, { |
| | | value: 10, |
| | | name: '', |
| | | itemStyle: { |
| | | normal: { |
| | | color: 'transparent', |
| | | borderWidth: 10, |
| | | borderColor: 'transparent', |
| | | |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | this.options = { |
| | | title: { |
| | | text: 'äº§åæ»æ°', |
| | | subtext: '430', |
| | | textStyle: { |
| | | color: '#00b5f3', |
| | | fontSize: 12, |
| | | |
| | | }, |
| | | subtextStyle: { |
| | | align: 'center', |
| | | fontSize: 18, |
| | | color: ['#85c7e3'], |
| | | fontWeight:800 |
| | | }, |
| | | x: '33%', |
| | | y: 'center', |
| | | }, |
| | | tooltip: { |
| | | show: true, |
| | | trigger: 'item', |
| | | formatter: "{a}ï¼{b} <br/>å æ¯ï¼{d}%" |
| | | }, |
| | | legend: { |
| | | data: ['åºå产å'], |
| | | icon: 'vertical', |
| | | right: '1%', |
| | | top: 'center', |
| | | orient: 'vertical', |
| | | itemGap: 20, |
| | | itemWidth: 15, |
| | | itemHeight: 8, |
| | | |
| | | formatter: function(name) { |
| | | let target; |
| | | for (let i = 0; i < dataPie.length; i++) { |
| | | if (dataPie[i].name === name) { |
| | | target = dataPie[i].value |
| | | } |
| | | } |
| | | let arr = [name, target]; |
| | | return arr.join("\n") |
| | | |
| | | }, |
| | | textStyle: { |
| | | lineHeight: 20, |
| | | color: '#9ed2f5', |
| | | |
| | | }, |
| | | }, |
| | | grid: { |
| | | left: '1%', // ä¸å®¹å¨å·¦ä¾§çè·ç¦» |
| | | right: '1%', // ä¸å®¹å¨å³ä¾§çè·ç¦» |
| | | top: '1%', // ä¸å®¹å¨é¡¶é¨çè·ç¦» |
| | | bottom: '1%', // ä¸å®¹å¨åºé¨çè·ç¦» |
| | | |
| | | }, |
| | | series: [ |
| | | { |
| | | name: '', |
| | | type: 'pie', |
| | | clockWise: false, //顺æ¶å è½½ |
| | | hoverAnimation: false, //é¼ æ ç§»å
¥å大 |
| | | center: ['40%', '50%'], |
| | | radius: ['80%', '81%'], |
| | | tooltip: { |
| | | show: false |
| | | }, |
| | | label: { |
| | | normal: { |
| | | show: false |
| | | } |
| | | }, |
| | | data: baseDataWrap |
| | | }, |
| | | { |
| | | |
| | | name: 'ç§ç±»', |
| | | type: 'pie', |
| | | color: colorPie, |
| | | selectedMode: 'single', |
| | | radius: ['55%', '58%'], |
| | | center: ['40%', '50%'], |
| | | hoverAnimation: false, |
| | | label: { |
| | | normal: { |
| | | show: false, |
| | | } |
| | | }, |
| | | |
| | | data: baseDataPie |
| | | }, |
| | | |
| | | ] |
| | | }; |
| | | this.switper(); |
| | | }, |
| | | //轮询 |
| | | switper() { |
| | | if (this.timer) { |
| | | return; |
| | | } |
| | | let looper = (a) => { |
| | | this.getData(); |
| | | }; |
| | | this.timer = setInterval( |
| | | looper, |
| | | this.$store.state.setting.echartsAutoTime |
| | | ); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | <style lang='scss' scoped> |
| | | .user_Overview { |
| | | li { |
| | | flex: 1; |
| | | |
| | | p { |
| | | text-align: center; |
| | | height: 16px; |
| | | font-size: 16px; |
| | | } |
| | | |
| | | .user_Overview_nums { |
| | | width: 100px; |
| | | height: 100px; |
| | | text-align: center; |
| | | line-height: 100px; |
| | | font-size: 22px; |
| | | margin: 50px auto 30px; |
| | | background-size: cover; |
| | | background-position: center center; |
| | | position: relative; |
| | | |
| | | &::before { |
| | | content: ""; |
| | | position: absolute; |
| | | width: 100%; |
| | | height: 100%; |
| | | top: 0; |
| | | left: 0; |
| | | } |
| | | |
| | | &.bgdonghua::before { |
| | | animation: rotating 14s linear infinite; |
| | | } |
| | | } |
| | | |
| | | .allnum { |
| | | // background-image: url("../../assets/img/left_top_lan.png"); |
| | | &::before { |
| | | background-image: url("../../assets/img/left_top_lan.png"); |
| | | } |
| | | } |
| | | |
| | | .online { |
| | | &::before { |
| | | background-image: url("../../assets/img/left_top_lv.png"); |
| | | } |
| | | } |
| | | |
| | | .offline { |
| | | &::before { |
| | | background-image: url("../../assets/img/left_top_huang.png"); |
| | | } |
| | | } |
| | | |
| | | .laramnum { |
| | | &::before { |
| | | background-image: url("../../assets/img/left_top_hong.png"); |
| | | } |
| | | } |
| | | }, |
| | | beforeDestroy() { |
| | | // ç»ä»¶éæ¯æ¶æ¸
é¤å®æ¶å¨ |
| | | if (this.timer) { |
| | | clearInterval(this.timer); |
| | | this.timer = null; |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.switper(); // æè½½åå¯å¨å®æ¶å¨ |
| | | } |
| | | </style> |
| | | }; |
| | | </script> |
| | | |
| | | <style lang='scss' scoped> |
| | | /* è¥æ éç¹æ®æ ·å¼ï¼å¯ç®åæå é¤ */ |
| | | </style> |