|
@@ -32,24 +32,26 @@ export default {
|
|
|
try {
|
|
try {
|
|
|
const res = await getSafetyLevelStats()
|
|
const res = await getSafetyLevelStats()
|
|
|
const { departments, levelCfg } = res.data
|
|
const { departments, levelCfg } = res.data
|
|
|
|
|
+ const levelKeys = ['level1', 'level2', 'level3', 'level4']
|
|
|
|
|
+ const xData = departments.map(d => {
|
|
|
|
|
+ const total = levelCfg.reduce((sum, _, i) => sum + (d[levelKeys[i]] || 0), 0)
|
|
|
|
|
+ return d.name + '\n(' + total + ')'
|
|
|
|
|
+ })
|
|
|
if (this.chart) {
|
|
if (this.chart) {
|
|
|
this.chart.setOption({
|
|
this.chart.setOption({
|
|
|
legend: { data: levelCfg.map(l => l.name) },
|
|
legend: { data: levelCfg.map(l => l.name) },
|
|
|
- xAxis: { data: departments.map(d => d.name) },
|
|
|
|
|
|
|
+ xAxis: { data: xData },
|
|
|
series: levelCfg.map((l, i) => ({ name: l.name, data: departments.map(d => d['level' + (i + 1)]) }))
|
|
series: levelCfg.map((l, i) => ({ name: l.name, data: departments.map(d => d['level' + (i + 1)]) }))
|
|
|
})
|
|
})
|
|
|
} else {
|
|
} else {
|
|
|
- this.$nextTick(() => this.initChart(res.data))
|
|
|
|
|
|
|
+ this.$nextTick(() => this.initChart(departments, levelCfg, xData))
|
|
|
}
|
|
}
|
|
|
} catch (e) {
|
|
} catch (e) {
|
|
|
console.error('SafetyLevel:', e)
|
|
console.error('SafetyLevel:', e)
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
- initChart(data) {
|
|
|
|
|
|
|
+ initChart(departments, levelCfg, xData) {
|
|
|
this.chart = echarts.init(this.$refs.chart)
|
|
this.chart = echarts.init(this.$refs.chart)
|
|
|
- const { departments, levelCfg } = data
|
|
|
|
|
- const names = departments.map(d => d.name)
|
|
|
|
|
- const totals = departments.map(d => d.total)
|
|
|
|
|
const levelKeys = ['level1', 'level2', 'level3', 'level4']
|
|
const levelKeys = ['level1', 'level2', 'level3', 'level4']
|
|
|
|
|
|
|
|
const option = {
|
|
const option = {
|
|
@@ -70,12 +72,11 @@ export default {
|
|
|
grid: { left: 40, right: 10, top: 35, bottom: 50 },
|
|
grid: { left: 40, right: 10, top: 35, bottom: 50 },
|
|
|
xAxis: {
|
|
xAxis: {
|
|
|
type: 'category',
|
|
type: 'category',
|
|
|
- data: names,
|
|
|
|
|
|
|
+ data: xData,
|
|
|
axisLabel: {
|
|
axisLabel: {
|
|
|
color: '#7eacc8',
|
|
color: '#7eacc8',
|
|
|
fontSize: 10,
|
|
fontSize: 10,
|
|
|
- interval: 0,
|
|
|
|
|
- formatter: (v, idx) => v + '\n(' + totals[idx] + ')'
|
|
|
|
|
|
|
+ interval: 0
|
|
|
},
|
|
},
|
|
|
axisLine: { lineStyle: { color: 'rgba(72,180,255,0.2)' } },
|
|
axisLine: { lineStyle: { color: 'rgba(72,180,255,0.2)' } },
|
|
|
axisTick: { show: false }
|
|
axisTick: { show: false }
|