|
|
@@ -127,7 +127,7 @@ const loadData = async () => {
|
|
127
|
127
|
teamLeaderRanking(queryParams),
|
|
128
|
128
|
reviewedUserRanking(queryParams)
|
|
129
|
129
|
])
|
|
130
|
|
-
|
|
|
130
|
+
|
|
131
|
131
|
// 更新排行榜数据
|
|
132
|
132
|
if (supervisorRankRes?.value?.data) {
|
|
133
|
133
|
rankData1.splice(0, rankData1.length, ...supervisorRankRes.value.data.map((item, index) => ({
|
|
|
@@ -172,7 +172,7 @@ const loadData = async () => {
|
|
172
|
172
|
|
|
173
|
173
|
setOption2(pieOption(
|
|
174
|
174
|
missCheckReasonRes?.value?.data?.map(item => ({
|
|
175
|
|
- name: item.name || item.reason || '未知',
|
|
|
175
|
+ name: item.missCheckReasonCategory || item.reason || '未知',
|
|
176
|
176
|
value: item.value || item.count || 0
|
|
177
|
177
|
})) || [],
|
|
178
|
178
|
['#ef4444', '#f97316', '#eab308', '#22c55e', '#3b82f6', '#64748b'],
|
|
|
@@ -186,7 +186,6 @@ const loadData = async () => {
|
|
186
|
186
|
})) || [],
|
|
187
|
187
|
['#3b82f6', '#60a5fa', '#93c5fd', '#bfdbfe', '#dbeafe', '#eff6ff']
|
|
188
|
188
|
))
|
|
189
|
|
-
|
|
190
|
189
|
setOption4(pieOption(
|
|
191
|
190
|
genderRes?.value?.data?.map(item => ({
|
|
192
|
191
|
name: item.gender || '未知',
|
|
|
@@ -214,7 +213,7 @@ const loadData = async () => {
|
|
214
|
213
|
{ name: '4年', key: 'cnt4Years' },
|
|
215
|
214
|
{ name: '5年', key: 'cntGe5Year' }
|
|
216
|
215
|
]
|
|
217
|
|
-
|
|
|
216
|
+
|
|
218
|
217
|
const seriesData = tenureLevels.map(level => ({
|
|
219
|
218
|
name: level.name,
|
|
220
|
219
|
type: 'bar',
|
|
|
@@ -231,9 +230,9 @@ const loadData = async () => {
|
|
231
|
230
|
|
|
232
|
231
|
setOption6({
|
|
233
|
232
|
grid: { left: '15%', top: '10%', right: '5%', bottom: '15%', containLabel: true },
|
|
234
|
|
- xAxis: {
|
|
235
|
|
- type: 'category',
|
|
236
|
|
- data: categories,
|
|
|
233
|
+ xAxis: {
|
|
|
234
|
+ type: 'category',
|
|
|
235
|
+ data: categories,
|
|
237
|
236
|
axisLabel: { fontSize: 9 },
|
|
238
|
237
|
axisTick: {
|
|
239
|
238
|
alignWithLabel: true
|
|
|
@@ -250,7 +249,7 @@ const loadData = async () => {
|
|
250
|
249
|
if (certificateData.length > 0) {
|
|
251
|
250
|
const certificateCategories = ['高级证书', '中级证书', '初级证书']
|
|
252
|
251
|
const brigadeNames = [...new Set(certificateData.map(item => item.brigadeName))]
|
|
253
|
|
-
|
|
|
252
|
+
|
|
254
|
253
|
const certificateSeriesData = brigadeNames.map((brigadeName, index) => {
|
|
255
|
254
|
const brigadeData = certificateData.find(d => d.brigadeName === brigadeName)
|
|
256
|
255
|
return {
|
|
|
@@ -271,22 +270,22 @@ const loadData = async () => {
|
|
271
|
270
|
|
|
272
|
271
|
setOption7({
|
|
273
|
272
|
grid: { left: '15%', top: '10%', right: '5%', bottom: '15%', containLabel: true },
|
|
274
|
|
- xAxis: {
|
|
275
|
|
- type: 'category',
|
|
276
|
|
- data: certificateCategories,
|
|
|
273
|
+ xAxis: {
|
|
|
274
|
+ type: 'category',
|
|
|
275
|
+ data: certificateCategories,
|
|
277
|
276
|
axisLabel: { fontSize: 10 },
|
|
278
|
277
|
axisLine: { lineStyle: { color: '#999' } }
|
|
279
|
278
|
},
|
|
280
|
|
- yAxis: {
|
|
281
|
|
- type: 'value',
|
|
|
279
|
+ yAxis: {
|
|
|
280
|
+ type: 'value',
|
|
282
|
281
|
axisLabel: { fontSize: 10 },
|
|
283
|
282
|
axisLine: { lineStyle: { color: '#999' } },
|
|
284
|
283
|
splitLine: { lineStyle: { color: '#eee' } }
|
|
285
|
284
|
},
|
|
286
|
|
- legend: {
|
|
287
|
|
- top: 0,
|
|
288
|
|
- right: 10,
|
|
289
|
|
- textStyle: { fontSize: 10 }
|
|
|
285
|
+ legend: {
|
|
|
286
|
+ top: 0,
|
|
|
287
|
+ right: 10,
|
|
|
288
|
+ textStyle: { fontSize: 10 }
|
|
290
|
289
|
},
|
|
291
|
290
|
series: certificateSeriesData
|
|
292
|
291
|
})
|
|
|
@@ -303,19 +302,24 @@ watch(() => props.filterParams, () => {
|
|
303
|
302
|
}, { deep: true })
|
|
304
|
303
|
|
|
305
|
304
|
const rankData1 = reactive([
|
|
306
|
|
-
|
|
|
305
|
+
|
|
307
|
306
|
])
|
|
308
|
307
|
|
|
309
|
308
|
const rankData2 = reactive([
|
|
310
|
|
-
|
|
|
309
|
+
|
|
311
|
310
|
])
|
|
312
|
311
|
|
|
313
|
312
|
const rankData3 = reactive([
|
|
314
|
|
-
|
|
|
313
|
+
|
|
315
|
314
|
])
|
|
316
|
315
|
|
|
317
|
316
|
const pieOption = (data, colors, isRing = false) => ({
|
|
318
|
317
|
color: colors,
|
|
|
318
|
+ legend: {
|
|
|
319
|
+ orient: 'horizontal',
|
|
|
320
|
+ top: 'top',
|
|
|
321
|
+ textStyle: { fontSize: 10 }
|
|
|
322
|
+ },
|
|
319
|
323
|
series: [{
|
|
320
|
324
|
type: 'pie',
|
|
321
|
325
|
radius: isRing ? ['50%', '70%'] : '60%',
|
|
|
@@ -325,7 +329,8 @@ const pieOption = (data, colors, isRing = false) => ({
|
|
325
|
329
|
show: true,
|
|
326
|
330
|
formatter: '{b}\n{c} ({d}%)',
|
|
327
|
331
|
fontSize: 10
|
|
328
|
|
- }
|
|
|
332
|
+ },
|
|
|
333
|
+
|
|
329
|
334
|
}]
|
|
330
|
335
|
})
|
|
331
|
336
|
|
|
|
@@ -390,7 +395,7 @@ onMounted(() => {
|
|
390
|
395
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
|
391
|
396
|
display: flex;
|
|
392
|
397
|
flex-direction: column;
|
|
393
|
|
- min-height: 280px;
|
|
|
398
|
+ min-height: 300px;
|
|
394
|
399
|
}
|
|
395
|
400
|
|
|
396
|
401
|
.chart-title {
|