¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="CountryDimension" ref="chart"></div> |
| | | </template> |
| | | |
| | | <script> |
| | | import * as echarts from "echarts" |
| | | import { countCountryDimension } from "@/api/screen.js" |
| | | export default { |
| | | data() { |
| | | return { |
| | | option: {}, |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.initChart() |
| | | }, |
| | | methods: { |
| | | async initChart() { |
| | | let data = [ |
| | | { |
| | | country: "è丹", |
| | | count: 1, |
| | | }, |
| | | { |
| | | country: "å°åº¦å°¼è¥¿äº", |
| | | count: 1, |
| | | }, |
| | | { |
| | | country: "é¿èé
", |
| | | count: 1, |
| | | }, |
| | | { |
| | | country: "ä¹å
¹å«å
æ¯å¦", |
| | | count: 1, |
| | | }, |
| | | { |
| | | country: "åè¨å
æ¯å¦", |
| | | count: 2, |
| | | }, |
| | | { |
| | | country: "å§å
çæ", |
| | | count: 1, |
| | | }, |
| | | { |
| | | country: "æ¯éå
°å¡", |
| | | count: 1, |
| | | }, |
| | | { |
| | | country: "ä¸å½", |
| | | count: 17, |
| | | }, |
| | | { |
| | | country: "å
¶ä»", |
| | | count: 1, |
| | | }, |
| | | { |
| | | country: "ååºæ¼æ¯å¦", |
| | | count: 1, |
| | | }, |
| | | { |
| | | country: "æ°å å¡", |
| | | count: 1, |
| | | }, |
| | | ] |
| | | const res = await countCountryDimension() |
| | | if (res.code == 200) { |
| | | data = res.result |
| | | } |
| | | let xAxisData = [] |
| | | let yAxisData = [] |
| | | |
| | | data.forEach(item => { |
| | | xAxisData.push(item.country) |
| | | yAxisData.push(item.count) |
| | | }) |
| | | let option = { |
| | | backgroundColor: "transparent", |
| | | tooltip: { |
| | | trigger: "axis", |
| | | axisPointer: { |
| | | type: "shadow", |
| | | }, |
| | | }, |
| | | grid: { |
| | | top: "12%", |
| | | right: "0%", |
| | | left: "0%", |
| | | bottom: "13%", |
| | | containLabel: true, |
| | | }, |
| | | xAxis: [ |
| | | { |
| | | type: "category", |
| | | data: xAxisData, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: "rgba(255,255,255,0.12)", |
| | | }, |
| | | }, |
| | | interval: 0, |
| | | axisLabel: { |
| | | margin: 10, |
| | | color: "#e2e9ff", |
| | | textStyle: { |
| | | fontSize: 11, |
| | | }, |
| | | formatter: function (value) { |
| | | //debugger |
| | | var ret = "" //æ¼æ¥å \nè¿åçç±»ç®é¡¹ |
| | | var maxLength = 2 //æ¯é¡¹æ¾ç¤ºæåä¸ªæ° |
| | | var valLength = value.length //Xè½´ç±»ç®é¡¹çæåä¸ªæ° |
| | | var rowN = Math.ceil(valLength / maxLength) //ç±»ç®é¡¹éè¦æ¢è¡çè¡æ° |
| | | if (rowN > 1) { |
| | | //å¦æç±»ç®é¡¹çæå大äº3, |
| | | for (var i = 0; i < rowN; i++) { |
| | | var temp = "" //æ¯æ¬¡æªåçå符串 |
| | | var start = i * maxLength //å¼å§æªåçä½ç½® |
| | | var end = start + maxLength //ç»ææªåçä½ç½® |
| | | //è¿éä¹å¯ä»¥å ä¸ä¸ªæ¯å¦æ¯æåä¸è¡ç夿ï¼ä½æ¯ä¸å 乿²¡æå½±åï¼é£å°±ä¸å å§ |
| | | temp = value.substring(start, end) + "\n" |
| | | ret += temp //ååæç»çå符串 |
| | | } |
| | | return ret |
| | | } else { |
| | | return value |
| | | } |
| | | }, |
| | | }, |
| | | }, |
| | | ], |
| | | yAxis: [ |
| | | { |
| | | axisLabel: { |
| | | formatter: "{value}", |
| | | color: "#e2e9ff", |
| | | }, |
| | | axisLine: { |
| | | show: false, |
| | | }, |
| | | splitLine: { |
| | | lineStyle: { |
| | | color: "rgba(255,255,255,0.12)", |
| | | }, |
| | | }, |
| | | }, |
| | | ], |
| | | series: [ |
| | | { |
| | | type: "bar", |
| | | data: yAxisData, |
| | | barWidth: "12px", |
| | | itemStyle: { |
| | | normal: { |
| | | color: new echarts.graphic.LinearGradient( |
| | | 0, |
| | | 0, |
| | | 0, |
| | | 1, |
| | | [ |
| | | { |
| | | offset: 0, |
| | | color: "rgba(0,244,255,1)", // 0% å¤çé¢è² |
| | | }, |
| | | { |
| | | offset: 1, |
| | | color: "rgba(0,77,167,1)", // 100% å¤çé¢è² |
| | | }, |
| | | ], |
| | | false |
| | | ), |
| | | barBorderRadius: [20, 20, 0, 0], |
| | | shadowColor: "rgba(0,160,221,1)", |
| | | shadowBlur: 4, |
| | | }, |
| | | }, |
| | | label: { |
| | | normal: { |
| | | show: true, |
| | | lineHeight: 14, |
| | | width: 40, |
| | | height: 14, |
| | | backgroundColor: "rgba(0,160,221,0.1)", |
| | | borderRadius: 200, |
| | | position: ["-8", "-20"], |
| | | distance: 1, |
| | | formatter: value => { |
| | | // console.log(value); |
| | | if (value.name == "ä¸å½") { |
| | | return [ |
| | | ` {d|â}", " {a|${value.value}} \n", " {b|}`, |
| | | ].join(",") |
| | | } |
| | | }, |
| | | // formatter: [" {d|â}", " {a|{c}} \n", " {b|}"].join( |
| | | // "," |
| | | // ), |
| | | rich: { |
| | | d: { |
| | | color: "#3CDDCF", |
| | | }, |
| | | a: { |
| | | color: "#fff", |
| | | align: "center", |
| | | }, |
| | | b: { |
| | | width: 1, |
| | | height: 15, |
| | | borderWidth: 1, |
| | | borderColor: "#234e6c", |
| | | align: "left", |
| | | }, |
| | | }, |
| | | }, |
| | | }, |
| | | }, |
| | | ], |
| | | } |
| | | |
| | | const chart = echarts.init(this.$refs.chart) |
| | | |
| | | chart.setOption(option) |
| | | window.addEventListener("resize", function () { |
| | | chart.resize() |
| | | }) |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .CountryDimension { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="echart" ref="chart"></div> |
| | | </template> |
| | | |
| | | <script> |
| | | import * as echarts from "echarts" |
| | | import { countCountryDimension, countProvinceDimension } from "@/api/screen.js" |
| | | export default { |
| | | data() { |
| | | return { |
| | | currentProject: 'å
¨ç项ç®' |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.initChart() |
| | | }, |
| | | |
| | | methods: { |
| | | async initChart() { |
| | | const res = await countCountryDimension() |
| | | let dataPie = [ |
| | | { |
| | | value: 410, |
| | | name: "ä¼ä¸", |
| | | }, |
| | | { |
| | | value: 380, |
| | | name: "æ¿åº", |
| | | }, |
| | | { |
| | | value: 50, |
| | | name: "个人", |
| | | }, |
| | | { |
| | | value: 50, |
| | | name: "个人1", |
| | | }, |
| | | { |
| | | value: 50, |
| | | name: "个人2", |
| | | }, |
| | | { |
| | | value: 50, |
| | | name: "个人3", |
| | | }, |
| | | { |
| | | value: 50, |
| | | name: "个人4", |
| | | }, |
| | | { |
| | | value: 50, |
| | | name: "个人5", |
| | | }, |
| | | ] |
| | | let count = 0 |
| | | if (res.code == 200) { |
| | | dataPie = res.result.map(item => { |
| | | return { |
| | | name: item.country, |
| | | value: item.count |
| | | } |
| | | }) |
| | | } |
| | | |
| | | let colorPie = ["#173852", "#0b2036", "#002e49"] |
| | | let colorWrap = [ |
| | | "#3087d6", |
| | | "#f6ce54", |
| | | "#4be1ff", |
| | | "#b6e9ff", |
| | | "#18edc9", |
| | | "#6ac5fa", |
| | | ] |
| | | let baseDataPie = [], |
| | | baseDataWrap = [] |
| | | let total = 0 |
| | | dataPie |
| | | .sort((a, b) => b.value - a.value) |
| | | .forEach(function (val, idx, arr) { |
| | | count += val.value |
| | | }) |
| | | for (let i = 0; i < dataPie.length; i++) { |
| | | baseDataWrap.push( |
| | | { |
| | | value: dataPie[i].value, |
| | | name: dataPie[i].name, |
| | | itemStyle: { |
| | | normal: { |
| | | color: colorWrap[i], |
| | | borderWidth: 1, |
| | | borderColor: colorWrap[i], |
| | | shadowBlur: 10, |
| | | shadowColor: "rgba(7, 132, 250, 0.8)", |
| | | }, |
| | | }, |
| | | }, |
| | | { |
| | | value: 0.1, |
| | | name: "", |
| | | itemStyle: { |
| | | normal: { |
| | | color: "transparent", |
| | | borderWidth: 5, |
| | | borderColor: "transparent", |
| | | }, |
| | | }, |
| | | tooltip: { |
| | | show: false, |
| | | }, |
| | | } |
| | | ) |
| | | |
| | | if (i < 3) { |
| | | baseDataPie.push({ |
| | | value: dataPie[i].value, |
| | | name: dataPie[i].name, |
| | | itemStyle: { |
| | | normal: { |
| | | borderWidth: 10, |
| | | borderColor: colorPie[i], |
| | | }, |
| | | }, |
| | | }) |
| | | } |
| | | } |
| | | |
| | | let option = { |
| | | backgroundColor: "transparent", |
| | | title: { |
| | | text: count, |
| | | subtext: "é¡¹ç®æ»æ°", |
| | | textStyle: { |
| | | color: "#fff", |
| | | fontSize: 20, |
| | | fontWeight: 400, |
| | | fontFamily: "YouSheBiaoTiHei", |
| | | }, |
| | | subtextStyle: { |
| | | align: "center", |
| | | fontSize: 14, |
| | | color: ["#fff"], |
| | | fontWeight: 400, |
| | | fontFamily: "YouSheBiaoTiHei", |
| | | }, |
| | | x: "center", |
| | | y: "center", |
| | | }, |
| | | grid: { |
| | | left: "1%", // ä¸å®¹å¨å·¦ä¾§çè·ç¦» |
| | | right: "1%", // ä¸å®¹å¨å³ä¾§çè·ç¦» |
| | | top: "1%", // ä¸å®¹å¨é¡¶é¨çè·ç¦» |
| | | bottom: "1%", // ä¸å®¹å¨åºé¨çè·ç¦» |
| | | }, |
| | | tooltip: { |
| | | show: true, |
| | | trigger: "item", |
| | | }, |
| | | legend: [ |
| | | { |
| | | show: false, |
| | | data: ["å¨çº¿", "ç»´ä¿®", "离线", "æ£ä¿®", "æ¢ä¿®", "å
¶ä»"], |
| | | icon: "vertical", |
| | | right: "5px", |
| | | top: "center", |
| | | orient: "vertical", |
| | | itemGap: 20, |
| | | itemWidth: 15, |
| | | itemHeight: 8, |
| | | formatter: function (name) { |
| | | let target, percent |
| | | for (let i = 0; i < dataPie.length; i++) { |
| | | if (dataPie[i].name === name) { |
| | | target = dataPie[i].value |
| | | percent = ((target / total) * 100).toFixed(1) |
| | | } |
| | | } |
| | | let arr = [ |
| | | percent + "% " + " {yellow|" + target + "}", |
| | | " {blue|" + name + "}", |
| | | ] |
| | | return arr.join("\n") |
| | | }, |
| | | textStyle: { |
| | | lineHeight: 20, |
| | | color: "#f0f4f6", |
| | | align: "right", |
| | | rich: { |
| | | yellow: { |
| | | color: "#00b5f3", |
| | | fontWeight: "bold", |
| | | }, |
| | | blue: { |
| | | color: "#4be1ff", |
| | | align: "right", |
| | | }, |
| | | }, |
| | | }, |
| | | }, |
| | | ], |
| | | series: [ |
| | | { |
| | | name: "é¡¹ç®æ°é", |
| | | type: "pie", |
| | | // clockWise: false, //顺æ¶å è½½ |
| | | // hoverAnimation: false, //é¼ æ ç§»å
¥å大 |
| | | center: ["50%", "50%"], |
| | | // radius: ["60%", "70%"], |
| | | radius: [70, 80], |
| | | labelLine: { |
| | | show: true, |
| | | }, |
| | | itemStyle: { |
| | | borderWidth: 3, |
| | | // borderColor: "#fff", |
| | | }, |
| | | minAngle: 15, //æå°è§åº¦ |
| | | startAngle: 270, //èµ·å§è§åº¦ |
| | | label: { |
| | | // show: false, |
| | | formatter: params => { |
| | | if (params.percent > 10) { |
| | | return `{b|${params.name}} \n {per|${Math.ceil( |
| | | (params.value * 100) / count |
| | | )}%}` |
| | | } else { |
| | | return `{b|${params.name}}` |
| | | } |
| | | }, |
| | | // backgroundColor: "#eee", |
| | | // borderColor: "#aaa", |
| | | // borderWidth: 1, |
| | | // borderRadius: 3, |
| | | // shadowBlur:3, |
| | | // shadowOffsetX: 2, |
| | | // shadowOffsetY: 2, |
| | | // shadowColor: '#999', |
| | | // padding: [0, 7], |
| | | rich: { |
| | | a: { |
| | | color: "#999", |
| | | lineHeight: 22, |
| | | align: "center", |
| | | }, |
| | | // abg: { |
| | | // backgroundColor: '#333', |
| | | // width: '100%', |
| | | // align: 'right', |
| | | // height: 22, |
| | | // borderRadius: [4, 4, 0, 0] |
| | | // }, |
| | | hr: { |
| | | borderColor: "#aaa", |
| | | width: "100%", |
| | | borderWidth: 0.5, |
| | | height: 0, |
| | | }, |
| | | b: { |
| | | fontSize: 14, |
| | | lineHeight: 14, |
| | | }, |
| | | per: { |
| | | color: "#eee", |
| | | backgroundColor: "#334455", |
| | | padding: [2, 4], |
| | | borderRadius: 2, |
| | | }, |
| | | }, |
| | | }, |
| | | |
| | | data: baseDataWrap, |
| | | }, |
| | | ], |
| | | } |
| | | const chart = echarts.init(this.$refs.chart) |
| | | |
| | | chart.setOption(option) |
| | | window.addEventListener("resize", function () { |
| | | chart.resize() |
| | | }) |
| | | }, |
| | | |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .echart { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="CountryDimension" ref="chart"></div> |
| | | </template> |
| | | |
| | | <script> |
| | | import * as echarts from "echarts" |
| | | import { countProvinceDimension } from "@/api/screen.js" |
| | | export default { |
| | | data() { |
| | | return { |
| | | option: {}, |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.initChart() |
| | | }, |
| | | methods: { |
| | | async initChart(dataPie) { |
| | | let data = [ |
| | | { |
| | | country: "è丹", |
| | | count: 1, |
| | | }, |
| | | { |
| | | country: "å°åº¦å°¼è¥¿äº", |
| | | count: 1, |
| | | }, |
| | | { |
| | | country: "é¿èé
", |
| | | count: 1, |
| | | }, |
| | | { |
| | | country: "ä¹å
¹å«å
æ¯å¦", |
| | | count: 1, |
| | | }, |
| | | { |
| | | country: "åè¨å
æ¯å¦", |
| | | count: 2, |
| | | }, |
| | | { |
| | | country: "å§å
çæ", |
| | | count: 1, |
| | | }, |
| | | { |
| | | country: "æ¯éå
°å¡", |
| | | count: 1, |
| | | }, |
| | | { |
| | | country: "ä¸å½", |
| | | count: 17, |
| | | }, |
| | | { |
| | | country: "å
¶ä»", |
| | | count: 1, |
| | | }, |
| | | { |
| | | country: "ååºæ¼æ¯å¦", |
| | | count: 1, |
| | | }, |
| | | { |
| | | country: "æ°å å¡", |
| | | count: 1, |
| | | }, |
| | | ] |
| | | const res = await countProvinceDimension() |
| | | if (res.code == 200) { |
| | | data = res.result |
| | | } |
| | | let xAxisData = [] |
| | | let yAxisData = [] |
| | | |
| | | data.forEach(item => { |
| | | xAxisData.push(item.province) |
| | | yAxisData.push(item.count) |
| | | }) |
| | | let option = { |
| | | backgroundColor: "transparent", |
| | | tooltip: { |
| | | trigger: "axis", |
| | | axisPointer: { |
| | | type: "shadow", |
| | | }, |
| | | }, |
| | | grid: { |
| | | top: "12%", |
| | | right: "0%", |
| | | left: "0%", |
| | | bottom: "13%", |
| | | containLabel: true, |
| | | }, |
| | | xAxis: [ |
| | | { |
| | | type: "category", |
| | | data: xAxisData, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: "rgba(255,255,255,0.12)", |
| | | }, |
| | | }, |
| | | interval: 0, |
| | | axisLabel: { |
| | | margin: 10, |
| | | color: "#e2e9ff", |
| | | textStyle: { |
| | | fontSize: 11, |
| | | }, |
| | | formatter: function (value) { |
| | | //debugger |
| | | var ret = "" //æ¼æ¥å \nè¿åçç±»ç®é¡¹ |
| | | var maxLength = 2 //æ¯é¡¹æ¾ç¤ºæåä¸ªæ° |
| | | var valLength = value.length //Xè½´ç±»ç®é¡¹çæåä¸ªæ° |
| | | var rowN = Math.ceil(valLength / maxLength) //ç±»ç®é¡¹éè¦æ¢è¡çè¡æ° |
| | | if (rowN > 1) { |
| | | //å¦æç±»ç®é¡¹çæå大äº3, |
| | | for (var i = 0; i < rowN; i++) { |
| | | var temp = "" //æ¯æ¬¡æªåçå符串 |
| | | var start = i * maxLength //å¼å§æªåçä½ç½® |
| | | var end = start + maxLength //ç»ææªåçä½ç½® |
| | | //è¿éä¹å¯ä»¥å ä¸ä¸ªæ¯å¦æ¯æåä¸è¡ç夿ï¼ä½æ¯ä¸å 乿²¡æå½±åï¼é£å°±ä¸å å§ |
| | | temp = value.substring(start, end) + "\n" |
| | | ret += temp //ååæç»çå符串 |
| | | } |
| | | return ret |
| | | } else { |
| | | return value |
| | | } |
| | | }, |
| | | }, |
| | | }, |
| | | ], |
| | | yAxis: [ |
| | | { |
| | | axisLabel: { |
| | | formatter: "{value}", |
| | | color: "#e2e9ff", |
| | | }, |
| | | axisLine: { |
| | | show: false, |
| | | }, |
| | | splitLine: { |
| | | lineStyle: { |
| | | color: "rgba(255,255,255,0.12)", |
| | | }, |
| | | }, |
| | | }, |
| | | ], |
| | | series: [ |
| | | { |
| | | type: "bar", |
| | | data: yAxisData, |
| | | barWidth: "12px", |
| | | itemStyle: { |
| | | normal: { |
| | | color: new echarts.graphic.LinearGradient( |
| | | 0, |
| | | 0, |
| | | 0, |
| | | 1, |
| | | [ |
| | | { |
| | | offset: 0, |
| | | color: "rgba(0,244,255,1)", // 0% å¤çé¢è² |
| | | }, |
| | | { |
| | | offset: 1, |
| | | color: "rgba(0,77,167,1)", // 100% å¤çé¢è² |
| | | }, |
| | | ], |
| | | false |
| | | ), |
| | | barBorderRadius: [20, 20, 0, 0], |
| | | shadowColor: "rgba(0,160,221,1)", |
| | | shadowBlur: 4, |
| | | }, |
| | | }, |
| | | label: { |
| | | normal: { |
| | | show: true, |
| | | lineHeight: 14, |
| | | width: 40, |
| | | height: 14, |
| | | backgroundColor: "rgba(0,160,221,0.1)", |
| | | borderRadius: 200, |
| | | position: ["-8", "-20"], |
| | | distance: 1, |
| | | formatter: value => { |
| | | // console.log(value); |
| | | if (value.name == "ä¸å½") { |
| | | return [ |
| | | ` {d|â}", " {a|${value.value}} \n", " {b|}`, |
| | | ].join(",") |
| | | } |
| | | }, |
| | | // formatter: [" {d|â}", " {a|{c}} \n", " {b|}"].join( |
| | | // "," |
| | | // ), |
| | | rich: { |
| | | d: { |
| | | color: "#3CDDCF", |
| | | }, |
| | | a: { |
| | | color: "#fff", |
| | | align: "center", |
| | | }, |
| | | b: { |
| | | width: 1, |
| | | height: 15, |
| | | borderWidth: 1, |
| | | borderColor: "#234e6c", |
| | | align: "left", |
| | | }, |
| | | }, |
| | | }, |
| | | }, |
| | | }, |
| | | ], |
| | | } |
| | | |
| | | const chart = echarts.init(this.$refs.chart) |
| | | |
| | | chart.setOption(option) |
| | | window.addEventListener("resize", function () { |
| | | chart.resize() |
| | | }) |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .CountryDimension { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="echart" ref="chart"></div> |
| | | </template> |
| | | |
| | | <script> |
| | | import * as echarts from "echarts" |
| | | import { countCountryDimension, countProvinceDimension } from "@/api/screen.js" |
| | | export default { |
| | | data() { |
| | | return { |
| | | currentProject: 'å
¨ç项ç®' |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.initChart() |
| | | }, |
| | | |
| | | methods: { |
| | | async initChart() { |
| | | const res = await countProvinceDimension() |
| | | let dataPie = [ |
| | | { |
| | | value: 410, |
| | | name: "ä¼ä¸", |
| | | }, |
| | | { |
| | | value: 380, |
| | | name: "æ¿åº", |
| | | }, |
| | | { |
| | | value: 50, |
| | | name: "个人", |
| | | }, |
| | | { |
| | | value: 50, |
| | | name: "个人1", |
| | | }, |
| | | { |
| | | value: 50, |
| | | name: "个人2", |
| | | }, |
| | | { |
| | | value: 50, |
| | | name: "个人3", |
| | | }, |
| | | { |
| | | value: 50, |
| | | name: "个人4", |
| | | }, |
| | | { |
| | | value: 50, |
| | | name: "个人5", |
| | | }, |
| | | ] |
| | | let count = 0 |
| | | if (res.code == 200) { |
| | | dataPie = res.result.map(item => { |
| | | return { |
| | | name: item.province, |
| | | value: item.count |
| | | } |
| | | }) |
| | | } |
| | | |
| | | |
| | | let colorPie = ["#173852", "#0b2036", "#002e49"] |
| | | let colorWrap = [ |
| | | "#3087d6", |
| | | "#f6ce54", |
| | | "#4be1ff", |
| | | "#b6e9ff", |
| | | "#18edc9", |
| | | "#6ac5fa", |
| | | ] |
| | | let baseDataPie = [], |
| | | baseDataWrap = [] |
| | | let total = 0 |
| | | dataPie |
| | | .sort((a, b) => b.value - a.value) |
| | | .forEach(function (val, idx, arr) { |
| | | count += val.value |
| | | }) |
| | | for (let i = 0; i < dataPie.length; i++) { |
| | | baseDataWrap.push( |
| | | { |
| | | value: dataPie[i].value, |
| | | name: dataPie[i].name, |
| | | itemStyle: { |
| | | normal: { |
| | | color: colorWrap[i], |
| | | borderWidth: 1, |
| | | borderColor: colorWrap[i], |
| | | shadowBlur: 10, |
| | | shadowColor: "rgba(7, 132, 250, 0.8)", |
| | | }, |
| | | }, |
| | | }, |
| | | { |
| | | value: 0.1, |
| | | name: "", |
| | | itemStyle: { |
| | | normal: { |
| | | color: "transparent", |
| | | borderWidth: 5, |
| | | borderColor: "transparent", |
| | | }, |
| | | }, |
| | | tooltip: { |
| | | show: false, |
| | | }, |
| | | } |
| | | ) |
| | | |
| | | if (i < 3) { |
| | | baseDataPie.push({ |
| | | value: dataPie[i].value, |
| | | name: dataPie[i].name, |
| | | itemStyle: { |
| | | normal: { |
| | | borderWidth: 10, |
| | | borderColor: colorPie[i], |
| | | }, |
| | | }, |
| | | }) |
| | | } |
| | | } |
| | | |
| | | let option = { |
| | | backgroundColor: "transparent", |
| | | title: { |
| | | text: count, |
| | | subtext: "é¡¹ç®æ»æ°", |
| | | textStyle: { |
| | | color: "#fff", |
| | | fontSize: 20, |
| | | fontWeight: 400, |
| | | fontFamily: "YouSheBiaoTiHei", |
| | | }, |
| | | subtextStyle: { |
| | | align: "center", |
| | | fontSize: 14, |
| | | color: ["#fff"], |
| | | fontWeight: 400, |
| | | fontFamily: "YouSheBiaoTiHei", |
| | | }, |
| | | x: "center", |
| | | y: "center", |
| | | }, |
| | | grid: { |
| | | left: "1%", // ä¸å®¹å¨å·¦ä¾§çè·ç¦» |
| | | right: "1%", // ä¸å®¹å¨å³ä¾§çè·ç¦» |
| | | top: "1%", // ä¸å®¹å¨é¡¶é¨çè·ç¦» |
| | | bottom: "1%", // ä¸å®¹å¨åºé¨çè·ç¦» |
| | | }, |
| | | tooltip: { |
| | | show: true, |
| | | trigger: "item", |
| | | }, |
| | | legend: [ |
| | | { |
| | | show: false, |
| | | data: ["å¨çº¿", "ç»´ä¿®", "离线", "æ£ä¿®", "æ¢ä¿®", "å
¶ä»"], |
| | | icon: "vertical", |
| | | right: "5px", |
| | | top: "center", |
| | | orient: "vertical", |
| | | itemGap: 20, |
| | | itemWidth: 15, |
| | | itemHeight: 8, |
| | | formatter: function (name) { |
| | | let target, percent |
| | | for (let i = 0; i < dataPie.length; i++) { |
| | | if (dataPie[i].name === name) { |
| | | target = dataPie[i].value |
| | | percent = ((target / total) * 100).toFixed(1) |
| | | } |
| | | } |
| | | let arr = [ |
| | | percent + "% " + " {yellow|" + target + "}", |
| | | " {blue|" + name + "}", |
| | | ] |
| | | return arr.join("\n") |
| | | }, |
| | | textStyle: { |
| | | lineHeight: 20, |
| | | color: "#f0f4f6", |
| | | align: "right", |
| | | rich: { |
| | | yellow: { |
| | | color: "#00b5f3", |
| | | fontWeight: "bold", |
| | | }, |
| | | blue: { |
| | | color: "#4be1ff", |
| | | align: "right", |
| | | }, |
| | | }, |
| | | }, |
| | | }, |
| | | ], |
| | | series: [ |
| | | { |
| | | name: "é¡¹ç®æ°é", |
| | | type: "pie", |
| | | // clockWise: false, //顺æ¶å è½½ |
| | | // hoverAnimation: false, //é¼ æ ç§»å
¥å大 |
| | | center: ["50%", "50%"], |
| | | // radius: ["60%", "70%"], |
| | | radius: [70, 80], |
| | | labelLine: { |
| | | show: true, |
| | | }, |
| | | itemStyle: { |
| | | borderWidth: 3, |
| | | // borderColor: "#fff", |
| | | }, |
| | | minAngle: 15, //æå°è§åº¦ |
| | | startAngle: 270, //èµ·å§è§åº¦ |
| | | label: { |
| | | // show: false, |
| | | formatter: params => { |
| | | if (params.percent > 10) { |
| | | return `{b|${params.name}} \n {per|${Math.ceil( |
| | | (params.value * 100) / count |
| | | )}%}` |
| | | } else { |
| | | return `{b|${params.name}}` |
| | | } |
| | | }, |
| | | // backgroundColor: "#eee", |
| | | // borderColor: "#aaa", |
| | | // borderWidth: 1, |
| | | // borderRadius: 3, |
| | | // shadowBlur:3, |
| | | // shadowOffsetX: 2, |
| | | // shadowOffsetY: 2, |
| | | // shadowColor: '#999', |
| | | // padding: [0, 7], |
| | | rich: { |
| | | a: { |
| | | color: "#999", |
| | | lineHeight: 22, |
| | | align: "center", |
| | | }, |
| | | // abg: { |
| | | // backgroundColor: '#333', |
| | | // width: '100%', |
| | | // align: 'right', |
| | | // height: 22, |
| | | // borderRadius: [4, 4, 0, 0] |
| | | // }, |
| | | hr: { |
| | | borderColor: "#aaa", |
| | | width: "100%", |
| | | borderWidth: 0.5, |
| | | height: 0, |
| | | }, |
| | | b: { |
| | | fontSize: 14, |
| | | lineHeight: 14, |
| | | }, |
| | | per: { |
| | | color: "#eee", |
| | | backgroundColor: "#334455", |
| | | padding: [2, 4], |
| | | borderRadius: 2, |
| | | }, |
| | | }, |
| | | }, |
| | | |
| | | data: baseDataWrap, |
| | | }, |
| | | ], |
| | | } |
| | | const chart = echarts.init(this.$refs.chart) |
| | | |
| | | chart.setOption(option) |
| | | window.addEventListener("resize", function () { |
| | | chart.resize() |
| | | }) |
| | | }, |
| | | |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .echart { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | </style> |