Преглед на файлове

perf(monthlyAssessSum): 优化页面布局与字典渲染逻辑

1. 调整饼图半径从70%改为50%优化展示效果
2. 将网格布局改为弹性布局适配响应式显示
3. 新增字典工具引入,将考核组编码转换为字典标签展示
4. 优化移动端响应式样式适配
huoyi@samsundot.com преди 4 седмици
родител
ревизия
87be9b07df
променени са 1 файла, в които са добавени 35 реда и са изтрити 16 реда
  1. 35 16
      src/views/performanceManage/monthlyAssessSum/index.vue

+ 35 - 16
src/views/performanceManage/monthlyAssessSum/index.vue

@@ -202,6 +202,11 @@ import {
202 202
   getFunctionalDeptDistributionPie
203 203
 } from '@/api/performance/monthlyAssessSum.js'
204 204
 import { listDept } from '@/api/system/dept.js'
205
+import { useDict } from '@/utils/dict'
206
+import { selectDictLabel } from '@/utils/ruoyi'
207
+
208
+// 获取字典数据
209
+const { assessment_team } = useDict('assessment_team')
205 210
 
206 211
 // 响应式数据
207 212
 const loading = ref(false)
@@ -397,7 +402,7 @@ const initTraversalCharts = () => {
397 402
           tooltip: { trigger: 'item' },
398 403
           series: [{
399 404
             type: 'pie',
400
-            radius: '70%',
405
+            radius: '50%',
401 406
             data: [
402 407
               { value: 120, name: '优秀' },
403 408
               { value: 280, name: '合格' },
@@ -415,7 +420,7 @@ const initTraversalCharts = () => {
415 420
           tooltip: { trigger: 'item' },
416 421
           series: [{
417 422
             type: 'pie',
418
-            radius: '70%',
423
+            radius: '50%',
419 424
             data: [
420 425
               { value: 15, name: '已改进' },
421 426
               { value: 60, name: '待改进' },
@@ -448,7 +453,7 @@ const initTraversalCharts = () => {
448 453
           tooltip: { trigger: 'item' },
449 454
           series: [{
450 455
             type: 'pie',
451
-            radius: '70%',
456
+            radius: '50%',
452 457
             data: [
453 458
               { value: 150, name: '安检员' },
454 459
               { value: 120, name: '设备操作员' },
@@ -531,7 +536,10 @@ const getList = async () => {
531 536
       // 解析表格数据
532 537
       let tableData = []
533 538
       if (statisticsData.length > 0 && statisticsData[0].assessmentTeams) {
534
-        tableData = statisticsData[0].assessmentTeams
539
+        tableData = statisticsData[0].assessmentTeams.map(item => ({
540
+          ...item,
541
+          assessmentTeam: selectDictLabel(assessment_team.value, item.assessmentTeam)
542
+        }))
535 543
       }
536 544
 
537 545
       // 计算总计用于标题
@@ -636,7 +644,7 @@ const getList = async () => {
636 644
       const data = teamImproveRes.value.data
637 645
       if (positionPieChart1Instance && Array.isArray(data)) {
638 646
         positionPieChart1Instance.setOption({
639
-          series: [{ data: data.map(item => ({ name: item.assessmentTeam, value: item.count })) }]
647
+          series: [{ data: data.map(item => ({ name: selectDictLabel(assessment_team.value, item.assessmentTeam), value: item.count })) }]
640 648
         })
641 649
       }
642 650
     }
@@ -645,7 +653,7 @@ const getList = async () => {
645 653
       const data = teamIncompRes.value.data
646 654
       if (positionPieChart2Instance && Array.isArray(data)) {
647 655
         positionPieChart2Instance.setOption({
648
-          series: [{ data: data.map(item => ({ name: item.assessmentTeam, value: item.count })) }]
656
+          series: [{ data: data.map(item => ({ name: selectDictLabel(assessment_team.value, item.assessmentTeam), value: item.count })) }]
649 657
         })
650 658
       }
651 659
     }
@@ -662,8 +670,8 @@ const getList = async () => {
662 670
             tooltip: { trigger: 'item' },
663 671
             series: [{
664 672
               type: 'pie',
665
-              radius: '70%',
666
-              data: item.improveData.map(d => ({ name: d.assessmentTeam, value: d.count }))
673
+              radius: '50%',
674
+              data: item.improveData.map(d => ({ name: selectDictLabel(assessment_team.value, d.assessmentTeam), value: d.count }))
667 675
             }]
668 676
           })
669 677
         }
@@ -674,8 +682,8 @@ const getList = async () => {
674 682
             tooltip: { trigger: 'item' },
675 683
             series: [{
676 684
               type: 'pie',
677
-              radius: '70%',
678
-              data: item.incompData.map(d => ({ name: d.assessmentTeam, value: d.count }))
685
+              radius: '50%',
686
+              data: item.incompData.map(d => ({ name: selectDictLabel(assessment_team.value, d.assessmentTeam), value: d.count }))
679 687
             }]
680 688
           })
681 689
         }
@@ -696,13 +704,16 @@ const getList = async () => {
696 704
         return {
697 705
           title: item.deptName,
698 706
           deptId: item.deptId,
699
-          tableData: item.assessmentTeams || [],
707
+          tableData: (item.assessmentTeams || []).map(t => ({
708
+            ...t,
709
+            assessmentTeam: selectDictLabel(assessment_team.value, t.assessmentTeam)
710
+          })),
700 711
           barData: personnelItem ? [
701 712
             { name: '考核组人数', value: personnelItem.assessmentTeamCount || 0 },
702 713
             { name: '实际待改进人数', value: personnelItem.actualImprovementCount || 0 },
703 714
             { name: '实际不称职人数', value: personnelItem.actualIncompetentCount || 0 }
704 715
           ] : [],
705
-          pieData: deptPieData.map(p => ({ name: p.assessmentTeam, value: p.count }))
716
+          pieData: deptPieData.map(p => ({ name: selectDictLabel(assessment_team.value, p.assessmentTeam), value: p.count }))
706 717
         }
707 718
       })
708 719
     
@@ -725,7 +736,7 @@ const getList = async () => {
725 736
             const pieChart = echarts.init(traversalChartsRefs.value[pieChartKey])
726 737
             pieChart.setOption({
727 738
               tooltip: { trigger: 'item' },
728
-              series: [{ type: 'pie', radius: '70%', data: item.pieData }]
739
+              series: [{ type: 'pie', radius: '50%', data: item.pieData }]
729 740
             })
730 741
           }
731 742
         })
@@ -1358,17 +1369,20 @@ onUnmounted(() => {
1358 1369
 }
1359 1370
 
1360 1371
 .traversal-content {
1361
-  display: grid;
1362
-  grid-template-columns: 1fr 1fr;
1372
+  display: flex;
1363 1373
   gap: 20px;
1364 1374
   padding: 20px;
1365 1375
 }
1366 1376
 
1367 1377
 .table-section {
1378
+  flex: 1;
1379
+  min-width: 0;
1368 1380
   min-height: 400px;
1369 1381
 }
1370 1382
 
1371 1383
 .chart-section {
1384
+  flex: 1;
1385
+  min-width: 0;
1372 1386
   display: grid;
1373 1387
   grid-template-columns: 1fr 1fr;
1374 1388
   gap: 15px;
@@ -1411,10 +1425,15 @@ onUnmounted(() => {
1411 1425
   }
1412 1426
 
1413 1427
   .traversal-content {
1414
-    grid-template-columns: 1fr;
1428
+    flex-direction: column;
1415 1429
     gap: 15px;
1416 1430
   }
1417 1431
 
1432
+  .table-section,
1433
+  .chart-section {
1434
+    min-width: 0;
1435
+  }
1436
+
1418 1437
   .chart-section {
1419 1438
     grid-template-columns: 1fr;
1420 1439
     height: auto;