|
|
@@ -6,11 +6,13 @@
|
|
|
|
|
|
<script>
|
|
|
import * as echarts from 'echarts'
|
|
|
+import {chartDlsdxl, chartDlydts} from '@/api/dashboard-json'
|
|
|
|
|
|
export default {
|
|
|
name: 'Dlydtssx',
|
|
|
data() {
|
|
|
return {
|
|
|
+ arrMap: [],
|
|
|
option: {}
|
|
|
}
|
|
|
},
|
|
|
@@ -19,25 +21,47 @@ export default {
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
- getOption() {
|
|
|
- const data = [{
|
|
|
+ async getOption() {
|
|
|
+ const res = await chartDlydts()
|
|
|
+ if (res?.code === 200) {
|
|
|
+ const arrMap = []
|
|
|
+ // const max =
|
|
|
+ res.info.xaxis.forEach((item, index) => {
|
|
|
+ const valItem = {
|
|
|
+ name: item,
|
|
|
+ used: res.info.series[0].data[index],
|
|
|
+ value: res.info.series[0].data[index],
|
|
|
+ total: res.info.series[1].data[index]
|
|
|
+ }
|
|
|
+
|
|
|
+ arrMap.push(valItem)
|
|
|
+ })
|
|
|
+ arrMap.forEach(item => {
|
|
|
+ if (item.used > item.total) {
|
|
|
+ item.used = item.total * 1.08
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.arrMap = arrMap
|
|
|
+ }
|
|
|
+ let data = [{
|
|
|
name: '第一季度',
|
|
|
- value: 40
|
|
|
+ used: 100,
|
|
|
+ total: 100
|
|
|
}, {
|
|
|
name: '第二季度',
|
|
|
- value: 30
|
|
|
+ used: 10,
|
|
|
+ total: 100
|
|
|
}, {
|
|
|
name: '第三季度',
|
|
|
- value: 20
|
|
|
+ used: 10,
|
|
|
+ total: 100
|
|
|
}, {
|
|
|
name: '第四季度',
|
|
|
- value: 10
|
|
|
+ used: 10,
|
|
|
+ total: 100
|
|
|
}]
|
|
|
- const name = data.map((item) => item.name)
|
|
|
- const value = data.map((item) => item.value)
|
|
|
- const sum = value.reduce((a, b) => {
|
|
|
- return a + b
|
|
|
- })
|
|
|
+ data = this.arrMap
|
|
|
+ window['data'] = data
|
|
|
const colors = [
|
|
|
[
|
|
|
new echarts.graphic.LinearGradient(0, 1, 0, 0, [{offset: 0, color: 'rgb(82, 113, 195)'}, {
|
|
|
@@ -87,27 +111,28 @@ export default {
|
|
|
borderRadius: 60 // 设置每一段子项目的圆角
|
|
|
|
|
|
},
|
|
|
- data: [{
|
|
|
- value: data[i].value,
|
|
|
- name: data[i].name
|
|
|
- },
|
|
|
- {
|
|
|
- value: sum - data[i].value,
|
|
|
- name: '',
|
|
|
- itemStyle: {
|
|
|
- color: 'transparent',
|
|
|
- borderRadius: 60 // 设置每一段子项目的圆角
|
|
|
-
|
|
|
- },
|
|
|
- tooltip: {
|
|
|
- show: false
|
|
|
+ data: [
|
|
|
+ {
|
|
|
+ value: data[i].used * (3 / 4),
|
|
|
+ name: data[i].name
|
|
|
},
|
|
|
- hoverAnimation: false
|
|
|
- }
|
|
|
+ {
|
|
|
+ value: (data[i].total - data[i].used) + data[i].used * (1 / 4),
|
|
|
+ name: data[i].name,
|
|
|
+ itemStyle: {
|
|
|
+ color: 'transparent',
|
|
|
+ borderRadius: 60 // 设置每一段子项目的圆角
|
|
|
+
|
|
|
+ },
|
|
|
+ tooltip: {
|
|
|
+ show: false
|
|
|
+ },
|
|
|
+ hoverAnimation: false
|
|
|
+ }
|
|
|
]
|
|
|
})
|
|
|
series.push({
|
|
|
- name: '',
|
|
|
+ name: null,
|
|
|
type: 'pie',
|
|
|
silent: true,
|
|
|
z: 1,
|
|
|
@@ -128,67 +153,63 @@ export default {
|
|
|
borderRadius: 60 // 设置每一段子项目的圆角
|
|
|
|
|
|
},
|
|
|
- data: [{
|
|
|
- value: 7.5,
|
|
|
- itemStyle: {
|
|
|
- color: colors[1][i]
|
|
|
- },
|
|
|
- tooltip: {
|
|
|
- show: false
|
|
|
- },
|
|
|
- hoverAnimation: false
|
|
|
- },
|
|
|
- {
|
|
|
- value: 2.5,
|
|
|
- itemStyle: {
|
|
|
- color: 'rgba(0,0,0,0)',
|
|
|
- borderWidth: 0,
|
|
|
- borderRadius: 60 // 设置每一段子项目的圆角
|
|
|
- },
|
|
|
- tooltip: {
|
|
|
- show: false
|
|
|
+ data: [
|
|
|
+ {
|
|
|
+ value: 7.5,
|
|
|
+ itemStyle: {
|
|
|
+ color: colors[1][i]
|
|
|
+ },
|
|
|
+ tooltip: {
|
|
|
+ show: false
|
|
|
+ },
|
|
|
+ hoverAnimation: false
|
|
|
},
|
|
|
- hoverAnimation: false
|
|
|
- }
|
|
|
+ {
|
|
|
+ value: 2.5,
|
|
|
+ itemStyle: {
|
|
|
+ color: 'rgba(0,0,0,0)',
|
|
|
+ borderWidth: 0,
|
|
|
+ borderRadius: 60 // 设置每一段子项目的圆角
|
|
|
+ },
|
|
|
+ tooltip: {
|
|
|
+ show: false
|
|
|
+ },
|
|
|
+ hoverAnimation: false
|
|
|
+ }
|
|
|
]
|
|
|
})
|
|
|
- yAxis.push(((data[i].value / sum) * 100).toFixed(0) + '%')
|
|
|
+ yAxis.push(((data[i].used / data[i].total) * 100).toFixed(0) + '%')
|
|
|
}
|
|
|
this.option = {
|
|
|
color: colors[0],
|
|
|
legend: {
|
|
|
show: true,
|
|
|
- icon: 'circle',
|
|
|
- top: '5%',
|
|
|
- left: '60%',
|
|
|
- width: '100%',
|
|
|
- height: '100%',
|
|
|
+ icon: 'reac',
|
|
|
+ top: '0%',
|
|
|
+ left: '65%',
|
|
|
+ width: 10,
|
|
|
+ height: 10000,
|
|
|
+ orient: 'horizontal',
|
|
|
data: name,
|
|
|
- orient: 'vertical',
|
|
|
+ selectedMode: false,
|
|
|
+ // orient: 'vertical',
|
|
|
formatter: (name) => {
|
|
|
- return (
|
|
|
- '{title|' + name + '} {value|' + data.find((item) => {
|
|
|
- return item.name === name
|
|
|
- }).value + '}'
|
|
|
- )
|
|
|
+ const findItem = data.find(item => item.name === name)
|
|
|
+ if (findItem) {
|
|
|
+ const per = ((findItem.value / findItem.total) * 100).toFixed(0)
|
|
|
+ return `${name} ${per}%`
|
|
|
+ } else {
|
|
|
+ return name
|
|
|
+ }
|
|
|
+
|
|
|
},
|
|
|
textStyle: {
|
|
|
- rich: {
|
|
|
- title: {
|
|
|
- fontSize: this.EchartfontSize(14),
|
|
|
- lineHeight: 30,
|
|
|
- color: '#ffffff'
|
|
|
- },
|
|
|
- value: {
|
|
|
- fontSize: this.EchartfontSize(14),
|
|
|
- lineHeight: 30,
|
|
|
- color: '#fff'
|
|
|
- }
|
|
|
- }
|
|
|
+ fontSize: this.EchartfontSize(12),
|
|
|
+ color: '#ffffff'
|
|
|
}
|
|
|
},
|
|
|
tooltip: {
|
|
|
- show: true,
|
|
|
+ show: false,
|
|
|
trigger: 'item',
|
|
|
formatter: '{a}<br>{b}:{c}({d}%)'
|
|
|
},
|
|
|
@@ -209,15 +230,15 @@ export default {
|
|
|
show: false
|
|
|
},
|
|
|
axisLabel: {
|
|
|
- formatter: (name) => {
|
|
|
- return name
|
|
|
+ formatter: (name, index) => {
|
|
|
+ return `${this.arrMap[index].value}/${this.arrMap[index].total}`
|
|
|
},
|
|
|
interval: 0,
|
|
|
inside: true,
|
|
|
|
|
|
textStyle: {
|
|
|
color: '#fff',
|
|
|
- fontSize: this.EchartfontSize(14),
|
|
|
+ fontSize: this.EchartfontSize(16)
|
|
|
},
|
|
|
show: true
|
|
|
},
|