225 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			225 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| export const pieChart1 = {
 | |
|   legend: {
 | |
|     right: 20,
 | |
|     top: 'middle',
 | |
|     orient: 'vertical',
 | |
|     textStyle: {color: "#fff", fontSize: 14}
 | |
|   },
 | |
|   grid: {
 | |
|     top: '0%',
 | |
|     left: '0%',
 | |
|     right: '0px',
 | |
|     bottom: '0%'
 | |
|   },
 | |
|   xAxis: {show: false},
 | |
|   yAxis: {show: false},
 | |
|   tooltip: {},
 | |
|   series: {
 | |
|     type: "pie",
 | |
|     radius: ['60%', '70%'],
 | |
|     minShowLabelAngle: 10,
 | |
|     itemStyle: {
 | |
|       borderColor: 'rgba(128, 128, 128, 0.1)',
 | |
|     },
 | |
|     label: {
 | |
|       show: false
 | |
|     }
 | |
|   }
 | |
| }
 | |
| export const pieChart2 = {
 | |
|   legend: {
 | |
|     bottom: 0,
 | |
|     itemGap: 14,
 | |
|     itemWidth: 16,
 | |
|     itemHeight: 5,
 | |
|     textStyle: {color: "#fff", fontSize: 14}
 | |
|   },
 | |
|   grid: {
 | |
|     height: 260
 | |
|   },
 | |
|   xAxis: {show: false},
 | |
|   yAxis: {show: false},
 | |
|   tooltip: {
 | |
|     backgroundColor: "rgba(14, 51, 111, 0.9)",
 | |
|     borderColor: "#1A6ABC",
 | |
|     textStyle: {color: "#fff"}
 | |
|   },
 | |
|   series: {
 | |
|     type: "pie",
 | |
|     minShowLabelAngle: 10,
 | |
|     radius: [70, 81],
 | |
|     itemStyle: {
 | |
|       borderColor: "#fff",
 | |
|       borderWidth: 2
 | |
|     },
 | |
|     label: {
 | |
|       color: "#A8D7F3",
 | |
|       fontSize: 14,
 | |
|       formatter: "{name|{b}}\n{v|{d}%}",
 | |
|       minMargin: 5,
 | |
|       edgeDistance: 10,
 | |
|       lineHeight: 22,
 | |
|       rich: {
 | |
|         v: {
 | |
|           color: "#fff"
 | |
|         }
 | |
|       }
 | |
|     },
 | |
|     labelLine: {},
 | |
|     labelLayout: function (params) {
 | |
|       let points = params.labelLinePoints
 | |
|       if (points) {
 | |
|         const isLeft = points[2][0] < points[1][0]
 | |
|         points[2][0] += (params.labelRect.width + 4) * (isLeft ? -1 : 1)
 | |
|       }
 | |
|       return {
 | |
|         labelLinePoints: points
 | |
|       }
 | |
|     }
 | |
|   },
 | |
|   render: (h, params) => {
 | |
|     const formatNum = num => {
 | |
|       if (num >= 10000000) {
 | |
|         return num / 10000000 + "千万"
 | |
|       }
 | |
| 
 | |
|       if (num >= 100000) {
 | |
|         return num / 10000 + "万"
 | |
|       }
 | |
| 
 | |
|       return parseFloat(num.toFixed(2))
 | |
|     }
 | |
| 
 | |
|     let total = params.data.reduce((t, e) => {
 | |
|       return t + Number(Object.values(e)?.[1] || 0)
 | |
|     }, 0)
 | |
|     return h(
 | |
|         "div",
 | |
|         {
 | |
|           style: {
 | |
|             height: "162px",
 | |
|             width: "162px",
 | |
|             color: "#8BCCFF",
 | |
|             left: "50%",
 | |
|             top: "50%",
 | |
|             display: "flex",
 | |
|             alignItems: "center",
 | |
|             justifyContent: "center",
 | |
|             flexDirection: "column",
 | |
|             position: "absolute",
 | |
|             transform: "translate(-50%,-50%)",
 | |
|             backgroundImage: `url('https://cdn.cunwuyun.cn/dvcp/dv/tpl/pie2Circle.png')`,
 | |
|             backgroundPosition: "center"
 | |
|           }
 | |
|         },
 | |
|         [
 | |
|           h(
 | |
|               "span",
 | |
|               {style: {fontSize: "28px", color: "#fff", fontFamily: "DIN"}},
 | |
|               formatNum(total)
 | |
|           ),
 | |
|           h("span", null, "总量")
 | |
|         ]
 | |
|     )
 | |
|   }
 | |
| }
 | |
| export const pieChart3 = {
 | |
|   legend: {
 | |
|     right: 20,
 | |
|     top: 'middle',
 | |
|     orient: 'vertical',
 | |
|     textStyle: {color: "#fff", fontSize: 14}
 | |
|   },
 | |
|   grid: {
 | |
|     top: '0%',
 | |
|     left: '0%',
 | |
|     right: '0px',
 | |
|     bottom: '0%'
 | |
|   },
 | |
|   xAxis: {show: false},
 | |
|   yAxis: {show: false},
 | |
|   tooltip: {},
 | |
|   series: {
 | |
|     type: "pie",
 | |
|     minShowLabelAngle: 10,
 | |
|     radius: [50, 71],
 | |
|     itemStyle: {
 | |
|       borderColor: "#8d1419",
 | |
|       borderWidth: 2
 | |
|     },
 | |
|     label: {
 | |
|       show: false
 | |
|     },
 | |
|     labelLine: {}
 | |
|   },
 | |
|   render: (h, params) => {
 | |
|     const formatNum = num => {
 | |
|       if (num >= 10000000) {
 | |
|         return num / 10000000 + "千万"
 | |
|       }
 | |
| 
 | |
|       if (num >= 10000) {
 | |
|         return num / 10000 + "万"
 | |
|       }
 | |
| 
 | |
|       return parseFloat(num.toFixed(2))
 | |
|     }
 | |
| 
 | |
|     let total = params.data.reduce((t, e) => {
 | |
|       return t + Number(Object.values(e)?.[1] || 0)
 | |
|     }, 0)
 | |
|     return h(
 | |
|         "div",
 | |
|         {
 | |
|           style: {
 | |
|             height: "162px",
 | |
|             width: "162px",
 | |
|             color: "#8BCCFF",
 | |
|             left: "50%",
 | |
|             top: "50%",
 | |
|             zIndex: '-1',
 | |
|             display: "flex",
 | |
|             alignItems: "center",
 | |
|             justifyContent: "center",
 | |
|             flexDirection: "column",
 | |
|             position: "absolute",
 | |
|             transform: "translate(-50%,-50%)",
 | |
|             backgroundPosition: "center"
 | |
|           }
 | |
|         },
 | |
|         [
 | |
|           h(
 | |
|               'span',
 | |
|               {
 | |
|                 style: {
 | |
|                   'font-size': '32px',
 | |
|                   'font-weight': 'bold',
 | |
|                   'margin-bottom': '3px',
 | |
|                   'color': '#CEE1FF',
 | |
|                   'line-height': '28px',
 | |
|                   'text-shadow': '0px 2px 4px rgba(117, 9, 9, 0.1)',
 | |
|                   'background': 'linear-gradient(180deg, #FFF6C7 0%, #FF9A02 100%)',
 | |
|                   '-webkit-background-clip': 'text',
 | |
|                   '-webkit-text-fill-color': 'transparent'
 | |
|                 }
 | |
|               },
 | |
|               formatNum(total)
 | |
|           ),
 | |
|           h('span', {
 | |
|             style: {
 | |
|               'font-size': '16px',
 | |
|               'color': '#CEE1FF',
 | |
|               'line-height': '16px',
 | |
|               'text-shadow': '0px 2px 4px rgba(117, 9, 9, 0.5)',
 | |
|               'background': 'linear-gradient(180deg, #FFF6C7 0%, #FF9A02 100%)',
 | |
|               '-webkit-background-clip': 'text',
 | |
|               '-webkit-text-fill-color': 'transparent'
 | |
|             }
 | |
|           }, "总量")
 | |
|         ]
 | |
|     )
 | |
|   }
 | |
| }
 | |
| export default {
 | |
|   pieChart1, pieChart2, pieChart3
 | |
| } |