123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- <template>
- <div class="coverageRateEcharts" id="coverageRateEcharts-box">
- </div>
- </template>
- <script>
- import echarts from 'echarts'
- import { yearRate } from '@/api/safetyCheck/index'
- export default {
- name: 'coverageRateEcharts',
- data(){
- return{
- }
- },
- created(){
- },
- mounted(){
- this.eCharts();
- },
- methods:{
- //eCharts方法
- eCharts(){
- yearRate().then(response => {
- let myChart = this.$echarts.init(document.getElementById('coverageRateEcharts-box'));
- let getname = ['未检查', '已检查', '检查中']; // 课程名
- let getbl = [0, 0, 0]; // 比例
- let getNum = [0, 0, 0]; // 数量
- for(let i=0;i<response.data.length;i++){
- if(response.data[i].type == 0){
- if(response.data[i].rate.indexOf('%') != -1){
- response.data[i].rate = response.data[i].rate.split('%')[0]
- getbl[0] = response.data[i].rate
- }else{
- getbl[0] = response.data[i].rate
- }
- getNum[0] = response.data[i].number
- }else if(response.data[i].type == 2){
- if(response.data[i].rate.indexOf('%') != -1){
- response.data[i].rate = response.data[i].rate.split('%')[0]
- getbl[1] = response.data[i].rate
- }else{
- getbl[1] = response.data[i].rate
- }
- getNum[1] = response.data[i].number
- }else if(response.data[i].type == 1){
- if(response.data[i].rate.indexOf('%') != -1){
- response.data[i].rate = response.data[i].rate.split('%')[0]
- getbl[2] = response.data[i].rate
- }else{
- getbl[2] = response.data[i].rate
- }
- getNum[2] = response.data[i].number
- }
- }
- let data = [];
- for (let i = 0; i < getname.length; i++) {
- data.push({ name: getname[i], value: getbl[i], num: getNum[i] })
- }
- let option = {
- legend: {
- type: "scroll",
- orient: 'vertical',
- height: '80%',
- right: '0%',
- top: 'center',
- //icon: "circle", //设置为圆,删除则为矩形
- itemWidth: 14,
- itemHeight: 6,
- itemGap: 25,
- data: getname,
- formatter: function (name) {
- for (let i = 0; i < getname.length; i++) {
- if (name == data[i].name) {
- return '{name|' + name + '}'
- }
- }
- },
- textStyle: {
- rich: {
- name: {
- fontSize: 14,
- fontWeight: 400,
- width: 100,
- height: 20,
- padding: [0, 0, 0, 5],
- color: 'rgba(0, 0, 0, 0.85)',
- fontFamily: 'Source Han Sans CN-Regular',
- },
- num: {
- fontSize: 14,
- fontWeight: 500,
- height: 20,
- width: 50,
- color: 'rgba(0, 0, 0, 0.65)',
- fontFamily: 'Source Han Sans CN-Regular',
- },
- value: {
- fontSize: 14,
- fontWeight: 500,
- height: 20,
- width: 50,
- color: 'rgba(0, 0, 0, 0.65)',
- fontFamily: 'Source Han Sans CN-Regular',
- }
- }
- }
- },
- series: [{
- type: 'pie',
- top:20,
- bottom:20,
- left:10,
- right:10,
- radius: ['55%', '70%'],
- center: ["38%", "50%"],
- // label: {
- // formatter: params => {
- // let name = params.name;
- // if (name == getname[0]) {
- // return `{name0|${name}:${params.data.num}\n${params.value}%}`
- // } else if (name == getname[1]) {
- // return `{name1|${name}:${params.data.num}\n${params.value}%}`
- // } else if (name == getname[2]) {
- // return `{name2|${name}:${params.data.num}\n${params.value}%}`
- // }
- // },
- // rich: {
- // name0: {
- // fontSize: 14,
- // fontFamily: 'Source Han Sans CN-Regular',
- // color: fontColor[0],
- // padding: [2, 6, 4, 6],
- // borderRadius: 100
- // },
- // name1: {
- // fontSize: 14,
- // fontFamily: 'Source Han Sans CN-Regular',
- // color: fontColor[1],
- // padding: [2, 6, 4, 6],
- // borderRadius: 100
- // },
- // name2: {
- // fontSize: 14,
- // fontFamily: 'Source Han Sans CN-Regular',
- // color: fontColor[2],
- // padding: [2, 6, 4, 6],
- // borderRadius: 100
- // },
- // }
- // },
- // labelLine: {
- // show: false,
- // normal: {
- // length: 5,
- // length2: 50
- // }
- // },
- label: {
- normal: {
- formatter: params => {
- let name = params.name;
- if (name == getname[0]) {
- return `${name}:${params.data.num}\n${params.value}%`
- } else if (name == getname[1]) {
- return `${name}:${params.data.num}\n${params.value}%`
- } else if (name == getname[2]) {
- return `${name}:${params.data.num}\n${params.value}%`
- }
- },
- textStyle: {
- fontSize: 12,
- color:'#333'
- },
- padding: [0, -60, 26, -60],
- }
- },
- labelLine: {
- normal: {
- length: 10,
- length2: 60,
- }
- },
- data: data,
- itemStyle: {
- shadowBlur: 8,
- shadowColor: "rgba(255, 255, 255, 0)",
- borderColor: '#FFF',
- borderWidth: 2,
- color: function (colors) {
- var colorList = ['#FFA200', '#0183FA', '#FF5D3D'];
- return colorList[colors.dataIndex];
- }
- },
- }
- ]
- };
- myChart.setOption(option);
- });
- },
- }
- }
- </script>
- <style scoped lang="scss">
- .coverageRateEcharts{
- height:183px;
- }
- </style>
|