Selaa lähdekoodia

perf(monthlyAssess): 优化非干部月度考核页面展示与交互

1.  移除冗余的考核结果展示项,新增角色字段展示
2.  将多个指标依据、奖惩明细改为可点击查看详情的链接样式
3.  为多数表单字段添加禁用状态,调整表单布局结构
4.  新增详情弹窗组件,重构总分、奖惩汇总等展示逻辑
5.  补充缺失的表单字段默认值,优化代码格式与样式
huoyi 1 kuukausi sitten
vanhempi
commit
274be87b1d
1 muutettua tiedostoa jossa 114 lisäystä ja 35 poistoa
  1. 114 35
      src/views/performanceManage/monthlyAssess/index.vue

+ 114 - 35
src/views/performanceManage/monthlyAssess/index.vue

@@ -194,10 +194,7 @@
194 194
             <div class="score-display">
195 195
               <span class="score-label">总分:</span>
196 196
               <span class="score-value">{{ nonCadreForm.totalScore }}</span>
197
-              <span class="result-label">考核结果:</span>
198
-              <span class="result-value" :class="{ 'text-danger': nonCadreForm.assessmentResult === 'unqualified' }">
199
-                {{ getResultText(nonCadreForm.assessmentResult) }}
200
-              </span>
197
+
201 198
             </div>
202 199
           </el-col>
203 200
         </el-row>
@@ -205,12 +202,17 @@
205 202
         <el-row :gutter="20">
206 203
           <el-col :span="8">
207 204
             <el-form-item label="用工形式" prop="employmentType">
208
-              <el-select v-model="nonCadreForm.employmentType" placeholder="请选择用工形式" style="width: 100%">
205
+              <el-select v-model="nonCadreForm.employmentType" placeholder="请选择用工形式" style="width: 100%" disabled>
209 206
                 <el-option v-for="item in employment_type" :key="item.value" :label="item.label" :value="item.value" />
210 207
               </el-select>
211 208
             </el-form-item>
212 209
           </el-col>
213 210
           <el-col :span="8">
211
+            <el-form-item label="角色" prop="roleName">
212
+              <el-input v-model="nonCadreForm.roleName" disabled placeholder="角色" />
213
+            </el-form-item>
214
+          </el-col>
215
+          <el-col :span="8">
214 216
             <el-form-item label="分管班组长" prop="deputyTeamLeaderName">
215 217
               <el-select v-model="nonCadreForm.deputyTeamLeaderName" placeholder="请选择分管班组长" style="width: 100%"
216 218
                 clearable>
@@ -219,6 +221,11 @@
219 221
               </el-select>
220 222
             </el-form-item>
221 223
           </el-col>
224
+
225
+
226
+        </el-row>
227
+
228
+        <el-row :gutter="20">
222 229
           <el-col :span="8">
223 230
             <el-form-item label="分管主管" prop="deputySupervisorName">
224 231
               <el-select v-model="nonCadreForm.deputySupervisorName" placeholder="请选择分管主管" style="width: 100%"
@@ -228,9 +235,6 @@
228 235
               </el-select>
229 236
             </el-form-item>
230 237
           </el-col>
231
-        </el-row>
232
-
233
-        <el-row :gutter="20">
234 238
           <el-col :span="8">
235 239
             <el-form-item label="分管经理" prop="deputyManagerName">
236 240
               <el-input v-model="nonCadreForm.deputyManagerName" placeholder="请输入分管经理" />
@@ -282,8 +286,9 @@
282 286
             </el-col>
283 287
             <el-col :span="12">
284 288
               <el-form-item label="红线指标依据">
285
-                <el-input v-model="nonCadreForm.redLineBasis" type="textarea" :rows="1" disabled
286
-                  placeholder="不可编辑,红线明细的集合" />
289
+                <span class="detail-link" @click="showDetailModal('红线指标依据', nonCadreForm.redLineBasis)">
290
+                  {{ nonCadreForm.redLineBasis || '查看详情' }}
291
+                </span>
287 292
               </el-form-item>
288 293
             </el-col>
289 294
           </el-row>
@@ -296,8 +301,9 @@
296 301
             </el-col>
297 302
             <el-col :span="12">
298 303
               <el-form-item label="核心指标依据">
299
-                <el-input v-model="nonCadreForm.coreIndicatorBasis" type="textarea" :rows="1" disabled
300
-                  placeholder="不可编辑,各个明细的集合" />
304
+                <span class="detail-link" @click="showDetailModal('核心指标依据', nonCadreForm.coreIndicatorBasis)">
305
+                  {{ nonCadreForm.coreIndicatorBasis || '查看详情' }}
306
+                </span>
301 307
               </el-form-item>
302 308
             </el-col>
303 309
           </el-row>
@@ -310,8 +316,9 @@
310 316
             </el-col>
311 317
             <el-col :span="12">
312 318
               <el-form-item label="其他指标中的安全指标(仅含SOC/站品控检查扣分)依据">
313
-                <el-input v-model="nonCadreForm.safetyWithSocBasis" type="textarea" :rows="1" disabled
314
-                  placeholder="不可编辑,各个明细的集合" />
319
+                <span class="detail-link" @click="showDetailModal('其他指标中的安全指标依据', nonCadreForm.safetyWithSocBasis)">
320
+                  {{ nonCadreForm.safetyWithSocBasis || '查看详情' }}
321
+                </span>
315 322
               </el-form-item>
316 323
             </el-col>
317 324
           </el-row>
@@ -324,8 +331,9 @@
324 331
             </el-col>
325 332
             <el-col :span="12">
326 333
               <el-form-item label="其他指标中的非安全指标依据">
327
-                <el-input v-model="nonCadreForm.nonSafetyIndicatorBasis" type="textarea" :rows="1" disabled
328
-                  placeholder="不可编辑,各个明细的集合" />
334
+                <span class="detail-link" @click="showDetailModal('其他指标中的非安全指标依据', nonCadreForm.nonSafetyIndicatorBasis)">
335
+                  {{ nonCadreForm.nonSafetyIndicatorBasis || '查看详情' }}
336
+                </span>
329 337
               </el-form-item>
330 338
             </el-col>
331 339
           </el-row>
@@ -338,8 +346,9 @@
338 346
             </el-col>
339 347
             <el-col :span="12">
340 348
               <el-form-item label="SOC/站品控检查的涉及核心、安全指标扣分依据">
341
-                <el-input v-model="nonCadreForm.socSafetyCoreDeductionBasis" type="textarea" :rows="1" disabled
342
-                  placeholder="不可编辑,各个明细的集合" />
349
+                <span class="detail-link" @click="showDetailModal('SOC/站品控检查的涉及核心、安全指标扣分依据', nonCadreForm.socSafetyCoreDeductionBasis)">
350
+                  {{ nonCadreForm.socSafetyCoreDeductionBasis || '查看详情' }}
351
+                </span>
343 352
               </el-form-item>
344 353
             </el-col>
345 354
           </el-row>
@@ -364,23 +373,25 @@
364 373
               </el-form-item>
365 374
             </el-col>
366 375
             <el-col :span="12">
367
-              <el-form-item label="考核备注" prop="assessmentRemark">
368
-                <el-input v-model="nonCadreForm.assessmentRemark" type="textarea" :rows="1" placeholder="请输入考核备注" />
376
+              <el-form-item label="总分">
377
+                <el-input v-model="nonCadreForm.totalScore" disabled placeholder="不可编辑" />
369 378
               </el-form-item>
370 379
             </el-col>
371 380
           </el-row>
372 381
 
373 382
           <el-row :gutter="20">
374 383
             <el-col :span="12">
375
-              <el-form-item label="奖励明细汇总">
376
-                <el-input v-model="nonCadreForm.rewardDetailsSummary" type="textarea" :rows="1" disabled
377
-                  placeholder="不可编辑,各个明细的集合" />
384
+              <el-form-item label="奖励明细">
385
+                <span class="detail-link" @click="showDetailModal('奖励明细', nonCadreForm.rewardDetailsSummary)">
386
+                  {{ nonCadreForm.rewardDetailsSummary || '查看详情' }}
387
+                </span>
378 388
               </el-form-item>
379 389
             </el-col>
380 390
             <el-col :span="12">
381
-              <el-form-item label="惩罚明细汇总">
382
-                <el-input v-model="nonCadreForm.penaltyDetailsSummary" type="textarea" :rows="1" disabled
383
-                  placeholder="不可编辑,各个明细的集合" />
391
+              <el-form-item label="惩罚明细">
392
+                <span class="detail-link" @click="showDetailModal('惩罚明细', nonCadreForm.penaltyDetailsSummary)">
393
+                  {{ nonCadreForm.penaltyDetailsSummary || '查看详情' }}
394
+                </span>
384 395
               </el-form-item>
385 396
             </el-col>
386 397
           </el-row>
@@ -389,7 +400,7 @@
389 400
             <el-col :span="12">
390 401
               <el-form-item label="奖励汇总" prop="rewardAmount">
391 402
                 <div class="input-with-unit">
392
-                  <el-input-number v-model="nonCadreForm.rewardAmount" :min="0" :precision="2"
403
+                  <el-input-number v-model="nonCadreForm.rewardAmount" :min="0" :precision="2" disabled
393 404
                     style="width: calc(100% - 40px)" />
394 405
                   <span class="unit">元</span>
395 406
                 </div>
@@ -398,24 +409,39 @@
398 409
             <el-col :span="12">
399 410
               <el-form-item label="扣罚汇总" prop="penaltyAmount">
400 411
                 <div class="input-with-unit">
401
-                  <el-input-number v-model="nonCadreForm.penaltyAmount" :min="0" :precision="2"
412
+                  <el-input-number v-model="nonCadreForm.penaltyAmount" :min="0" :precision="2" disabled
402 413
                     style="width: calc(100% - 40px)" />
403 414
                   <span class="unit">元</span>
404 415
                 </div>
405 416
               </el-form-item>
406 417
             </el-col>
407
-       
418
+
408 419
           </el-row>
409 420
 
410 421
           <el-row :gutter="20">
411 422
             <el-col :span="12">
412 423
               <el-form-item label="是否豁免" prop="exemption">
413
-                <el-input v-model="nonCadreForm.exemption" placeholder="请输入是否豁免" />
424
+                <el-input v-model="nonCadreForm.exemption" placeholder="请输入是否豁免" disabled />
414 425
               </el-form-item>
415 426
             </el-col>
416 427
             <el-col :span="12">
417 428
               <el-form-item label="豁免备注" prop="exemptionReasonRemark">
418
-                <el-input v-model="nonCadreForm.exemptionReasonRemark" type="textarea" :rows="1" placeholder="请输入豁免备注" />
429
+                <el-input v-model="nonCadreForm.exemptionReasonRemark" type="textarea" :rows="1" placeholder="请输入豁免备注"
430
+                  disabled />
431
+              </el-form-item>
432
+            </el-col>
433
+          </el-row>
434
+
435
+          <el-row :gutter="20">
436
+            <el-col :span="12">
437
+              <el-form-item label="考核结果" prop="assessmentResult" disabled>
438
+                <el-input v-model="nonCadreForm.assessmentResult" placeholder="请输入考核结果" disabled />
439
+              </el-form-item>
440
+            </el-col>
441
+            <el-col :span="12">
442
+              <el-form-item label="考核结果备注" prop="assessmentResultRemark">
443
+                <el-input v-model="nonCadreForm.assessmentResultRemark" type="textarea" :rows="1"
444
+                  placeholder="请输入考核结果备注" disabled />
419 445
               </el-form-item>
420 446
             </el-col>
421 447
           </el-row>
@@ -428,7 +454,7 @@
428 454
             </el-col>
429 455
             <el-col :span="12">
430 456
               <el-form-item label="应用备注" prop="applicationMethodRemark">
431
-                <el-input v-model="nonCadreForm.applicationMethodRemark" type="textarea" :rows="1"
457
+                <el-input v-model="nonCadreForm.applicationMethodRemark" type="textarea" :rows="1" disabled
432 458
                   placeholder="请输入应用备注" />
433 459
               </el-form-item>
434 460
             </el-col>
@@ -510,6 +536,18 @@
510 536
         </div>
511 537
       </template>
512 538
     </el-dialog>
539
+
540
+    <!-- 详情模态框 -->
541
+    <el-dialog :title="detailModal.title" v-model="detailModal.visible" width="60%">
542
+      <div class="detail-content">
543
+        {{ detailModal.content || '暂无内容' }}
544
+      </div>
545
+      <template #footer>
546
+        <div class="dialog-footer">
547
+          <el-button @click="detailModal.visible = false">关闭</el-button>
548
+        </div>
549
+      </template>
550
+    </el-dialog>
513 551
   </div>
514 552
 </template>
515 553
 
@@ -565,6 +603,7 @@ const nonCadreForm = reactive({
565 603
   exemption: '',
566 604
   exemptionReasonRemark: '',
567 605
   rewardAmount: 0,
606
+  penaltyAmount: 0,
568 607
   punishmentAmount: 0,
569 608
   assessmentRemark: '',
570 609
   applicationMethodRemark: '',
@@ -575,8 +614,8 @@ const nonCadreForm = reactive({
575 614
 
576 615
 function addIndicatorToGroup(item) {
577 616
   const categoryName = item.categoryNameOne || '未分类'
578
-  
579
-  let group = nonCadreForm.indicatorGroups.length == 0 ? null:nonCadreForm.indicatorGroups.find(g => g.title === categoryName);
617
+
618
+  let group = nonCadreForm.indicatorGroups.length == 0 ? null : nonCadreForm.indicatorGroups.find(g => g.title === categoryName);
580 619
 
581 620
   if (!group) {
582 621
     group = {
@@ -655,6 +694,20 @@ const dialog = reactive({
655 694
   type: 'non-cadre'
656 695
 })
657 696
 
697
+// 详情模态框
698
+const detailModal = reactive({
699
+  visible: false,
700
+  title: '',
701
+  content: ''
702
+})
703
+
704
+// 显示详情模态框
705
+const showDetailModal = (title, content) => {
706
+  detailModal.title = title
707
+  detailModal.content = content
708
+  detailModal.visible = true
709
+}
710
+
658 711
 // 数据列表
659 712
 const nonCadreList = ref([])
660 713
 const cadreList = ref([])
@@ -786,7 +839,7 @@ const handleAdd = () => {
786 839
 
787 840
   // 重置表单数据
788 841
   if (currentTab.value === 'non-cadre') {
789
-    
842
+
790 843
     nonCadreForm.indicatorGroups = []
791 844
   }
792 845
 }
@@ -1064,6 +1117,7 @@ onMounted(() => {
1064 1117
   height: 32px;
1065 1118
   line-height: 32px;
1066 1119
   padding: 0 10px;
1120
+  justify-content: center;
1067 1121
 }
1068 1122
 
1069 1123
 .score-label,
@@ -1174,4 +1228,29 @@ onMounted(() => {
1174 1228
   font-weight: 500;
1175 1229
   color: #303133;
1176 1230
 }
1231
+
1232
+.detail-link {
1233
+  color: #409eff;
1234
+  cursor: pointer;
1235
+  text-decoration: underline;
1236
+  display: inline-block;
1237
+  width: 100%;
1238
+  padding: 5px 0;
1239
+}
1240
+
1241
+.detail-link:hover {
1242
+  color: #66b1ff;
1243
+}
1244
+
1245
+.detail-content {
1246
+  padding: 20px;
1247
+  line-height: 1.8;
1248
+  font-size: 14px;
1249
+  color: #303133;
1250
+  min-height: 100px;
1251
+  max-height: 500px;
1252
+  overflow-y: auto;
1253
+  white-space: pre-wrap;
1254
+  word-break: break-all;
1255
+}
1177 1256
 </style>