Pārlūkot izejas kodu

perf(monthlyAssess): 优化月度考核相关展示与逻辑

1.  为月度汇总页面添加总计行数据
2.  格式化模板换行与代码缩进优化
3.  优化指标明细弹窗的日期展示
4.  调整编辑指标的异步加载顺序并修复日志
huoyi 3 nedēļas atpakaļ
vecāks
revīzija
be55d3ce1d

+ 27 - 17
src/views/performanceManage/monthlyAssess/index.vue

@@ -291,8 +291,9 @@
291 291
             <div class="indicator-group-title">{{ group.title }}</div>
292 292
             <div v-for="(item, itemIndex) in group.items" :key="itemIndex" class="indicator-item">
293 293
               <div class="indicator-name">{{ item.indicatorName }}</div>
294
-              <div class="indicator-value" v-if="item.categoryNameOne != '红线指标'">{{ item.score > 0 ? '+' : '' }}{{ item.score
295
-                }}/次
294
+              <div class="indicator-value" v-if="item.categoryNameOne != '红线指标'">{{ item.score > 0 ? '+' : '' }}{{
295
+                item.score
296
+              }}/次
296 297
               </div>
297 298
               <div class="indicator-count">{{ item.occurCount }}次</div>
298 299
               <div class="indicator-total">{{ item.scoreResult > 0 ? '+' : '' }}{{ item.scoreResult }}</div>
@@ -537,28 +538,32 @@
537 538
         </el-form-item>
538 539
 
539 540
         <el-form-item label="记录明细">
540
-          <el-table :data="indicatorDialog.form.personnelMonthlyAssessmentIndicatorRewardPunishmentDetailList" border max-height="400" >
541
+          <el-table :data="indicatorDialog.form.personnelMonthlyAssessmentIndicatorRewardPunishmentDetailList" border
542
+            max-height="400">
541 543
             <el-table-column label="序号" type="index" width="60" align="center" />
542 544
             <el-table-column label="日期" width="180">
543 545
               <template #default="scope">
544
-                <el-date-picker v-model="scope.row.recordDate" type="date" value-format="YYYY-MM-DD" placeholder="选择日期" style="width: 100%" />
546
+                <el-date-picker v-model="scope.row.recordDate" type="date" value-format="YYYY-MM-DD" placeholder="选择日期"
547
+                  style="width: 100%" />
545 548
               </template>
546 549
             </el-table-column>
547
-            <el-table-column label="检查部门" >
550
+            <el-table-column label="检查部门">
548 551
               <template #default="scope">
549 552
                 <el-select v-model="scope.row.qcDeptType" placeholder="请选择" clearable>
550
-                  <el-option v-for="item in base_performance_indicator_qc_dept_type" :key="item.value" :label="item.label" :value="item.value" />
553
+                  <el-option v-for="item in base_performance_indicator_qc_dept_type" :key="item.value"
554
+                    :label="item.label" :value="item.value" />
551 555
                 </el-select>
552 556
               </template>
553 557
             </el-table-column>
554
-            <el-table-column label="扣罚明细"  v-if="indicatorDialog.form.score < 0">
558
+            <el-table-column label="扣罚明细" v-if="indicatorDialog.form.score < 0">
555 559
               <template #default="scope">
556 560
                 <el-input v-model="scope.row.rewardPunishmentDetail" type="textarea" :rows="1" placeholder="请输入扣罚明细" />
557 561
               </template>
558 562
             </el-table-column>
559
-            <el-table-column label="扣罚(元)"  v-if="indicatorDialog.form.score < 0">
563
+            <el-table-column label="扣罚(元)" v-if="indicatorDialog.form.score < 0">
560 564
               <template #default="scope">
561
-                <el-input-number v-model="scope.row.amount" :max="0" :precision="2" style="width: 170px;" @change="updateTotal" />
565
+                <el-input-number v-model="scope.row.amount" :max="0" :precision="2" style="width: 170px;"
566
+                  @change="updateTotal" />
562 567
               </template>
563 568
             </el-table-column>
564 569
             <el-table-column label="奖励明细" v-if="indicatorDialog.form.score > 0">
@@ -566,18 +571,19 @@
566 571
                 <el-input v-model="scope.row.rewardPunishmentDetail" type="textarea" :rows="1" placeholder="请输入奖励明细" />
567 572
               </template>
568 573
             </el-table-column>
569
-            <el-table-column label="奖励(元)"  v-if="indicatorDialog.form.score > 0">
574
+            <el-table-column label="奖励(元)" v-if="indicatorDialog.form.score > 0">
570 575
               <template #default="scope">
571
-                <el-input-number v-model="scope.row.amount" :min="0" :precision="2" style="width: 170px;" @change="updateTotal" />
576
+                <el-input-number v-model="scope.row.amount" :min="0" :precision="2" style="width: 170px;"
577
+                  @change="updateTotal" />
572 578
               </template>
573 579
             </el-table-column>
574
-            <el-table-column label="操作"align="center">
580
+            <el-table-column label="操作" align="center">
575 581
               <template #default="scope">
576 582
                 <el-button type="danger" link icon="Delete" @click="removeRewardPunishmentDetail(scope.$index)" />
577 583
               </template>
578 584
             </el-table-column>
579 585
           </el-table>
580
-          
586
+
581 587
         </el-form-item>
582 588
       </el-form>
583 589
 
@@ -758,7 +764,7 @@ const indicatorDialog = reactive({
758 764
     value: 'id',
759 765
     label: 'name',
760 766
     children: 'indicatorList',
761
-    checkStrictly: false,
767
+ 
762 768
     emitPath: false
763 769
   },
764 770
   rules: {
@@ -905,10 +911,12 @@ const showDetailModal = (title, content) => {
905 911
 const formatAccordList = (list) => {
906 912
   if (!list || !Array.isArray(list) || list.length === 0) return ''
907 913
   return list.map(item => {
914
+    const detail = item.personnelMonthlyAssessmentIndicatorRewardPunishmentDetailList[0] || {};
915
+    const date = detail.recordDate || ''
908 916
     const name = item.indicatorName || item.name || ''
909 917
     const score = item.score !== undefined ? item.score : ''
910 918
     const count = item.occurCount !== undefined ? item.occurCount : ''
911
-    return `${name} ${score}分 x ${count}次`
919
+    return `${date} ${name} ${score}分 x ${count}次`
912 920
   }).join('\n')
913 921
 }
914 922
 
@@ -1379,6 +1387,7 @@ const addIndicator = () => {
1379 1387
 
1380 1388
 // 编辑指标 - 打开编辑模态框
1381 1389
 const editIndicator = async (groupIndex, itemIndex) => {
1390
+  await loadIndicatorCascaderOptions()
1382 1391
   const item = nonCadreForm.indicatorGroups[groupIndex].items[itemIndex]
1383 1392
   indicatorDialog.visible = true
1384 1393
   indicatorDialog.title = '编辑扣分指标'
@@ -1386,10 +1395,11 @@ const editIndicator = async (groupIndex, itemIndex) => {
1386 1395
   indicatorDialog.groupIndex = groupIndex
1387 1396
   indicatorDialog.itemIndex = itemIndex
1388 1397
 
1389
-  await loadIndicatorCascaderOptions()
1390
-  await nextTick()
1391 1398
 
1399
+  await nextTick()
1392 1400
   indicatorDialog.form = { ...item }
1401
+  console.log(indicatorDialog.form, "indicatorDialog.form")
1402
+
1393 1403
   if (!indicatorDialog.form.personnelMonthlyAssessmentIndicatorRewardPunishmentDetailList) {
1394 1404
     indicatorDialog.form.personnelMonthlyAssessmentIndicatorRewardPunishmentDetailList = []
1395 1405
   }

+ 5 - 2
src/views/performanceManage/monthlyAssessSum/index.vue

@@ -542,6 +542,9 @@ const getList = async () => {
542 542
         }))
543 543
       }
544 544
 
545
+      const totalRowData = statisticsData[1]?.assessmentTeams[0] || {}
546
+
547
+
545 548
       // 计算总计用于标题
546 549
       const totalImprovement = tableData.reduce((sum, item) => sum + (item.actualImprovementCount || 0), 0)
547 550
       const totalIncompetent = tableData.reduce((sum, item) => sum + (item.actualIncompetentCount || 0), 0)
@@ -549,7 +552,7 @@ const getList = async () => {
549 552
       return {
550 553
         title: brigade.deptName,
551 554
         deptId: brigade.deptId,
552
-        tableData,
555
+        tableData: [...tableData, totalRowData],
553 556
         improveData: brigadeImproveData,
554 557
         incompData: brigadeIncompData,
555 558
         totalImprovement,
@@ -716,7 +719,7 @@ const getList = async () => {
716 719
           pieData: deptPieData.map(p => ({ name: selectDictLabel(assessment_team.value, p.assessmentTeam), value: p.count }))
717 720
         }
718 721
       })
719
-    
722
+
720 723
       nextTick(() => {
721 724
         traversalData2.value.forEach((item, index) => {
722 725
           const chartKey = `barChart_${index}`