Ver código fonte

sgh5安全检查下发时自定义选择接收人显示全名

liuzhuo 5 dias atrás
pai
commit
2809a641ee
1 arquivos alterados com 65 adições e 3 exclusões
  1. 65
    3
      src/view/safeCheck/safeCheck_item/index.vue

+ 65
- 3
src/view/safeCheck/safeCheck_item/index.vue Ver arquivo

@@ -92,6 +92,7 @@
92 92
         <van-field
93 93
           readonly
94 94
           :model-value="xfRepairDisplaySummary"
95
+          :title="xfRepairDisplaySummary"
95 96
           label="整改责任人"
96 97
           placeholder=""
97 98
           is-link
@@ -404,6 +405,53 @@ const xfRepairUseCustom = ref(false);
404 405
 const xfRepairUserCodes = ref('');
405 406
 const xfRepairUserNames = ref('');
406 407
 const defaultRepairL = ref('');
408
+/** 岗位默认匹配到的用户姓名(由 U_id 列表解析),与 web 端 inspectionTask 一致 */
409
+const defaultRepairUserNamesDisplay = ref('');
410
+const defaultRepairNamesLoading = ref(false);
411
+
412
+function parseRepairLUserIds(repairLStr) {
413
+  if (!repairLStr || !String(repairLStr).trim()) {
414
+    return [];
415
+  }
416
+  return String(repairLStr)
417
+    .split(';')
418
+    .map((x) => x.trim())
419
+    .filter(Boolean)
420
+    .map((x) => (x.startsWith('U_') ? x.slice(2) : x))
421
+    .filter(Boolean);
422
+}
423
+
424
+/** 根据 queryUserIdByPostWithDeptCode 返回的 U_id 串,拉取人员姓名用于展示 */
425
+async function loadDefaultRepairUserDisplayNames(repairLStr) {
426
+  defaultRepairUserNamesDisplay.value = '';
427
+  const ids = parseRepairLUserIds(repairLStr);
428
+  if (!ids.length) {
429
+    return;
430
+  }
431
+  defaultRepairNamesLoading.value = true;
432
+  try {
433
+    const results = await Promise.all(
434
+      ids.map((id) => proxy.$axios.get('framework/SysUser/queryByPK', { id }))
435
+    );
436
+    const names = [];
437
+    for (const res of results) {
438
+      const d = res?.data;
439
+      const ok = d && (String(d.code) === '0' || d.code === 0);
440
+      if (ok && d.data) {
441
+        const label = d.data.userDesc || d.data.userName || '';
442
+        if (label) {
443
+          names.push(label);
444
+        }
445
+      }
446
+    }
447
+    defaultRepairUserNamesDisplay.value = names.join('、');
448
+  } catch (e) {
449
+    console.error('加载默认整改人姓名失败', e);
450
+    defaultRepairUserNamesDisplay.value = '';
451
+  } finally {
452
+    defaultRepairNamesLoading.value = false;
453
+  }
454
+}
407 455
 
408 456
 const xfRepairDisplaySummary = computed(() => {
409 457
   if (xfRepairUseCustom.value && xfRepairUserNames.value) {
@@ -411,10 +459,16 @@ const xfRepairDisplaySummary = computed(() => {
411 459
   }
412 460
   const s = defaultRepairL.value || '';
413 461
   const n = s ? s.split(';').filter(Boolean).length : 0;
462
+  if (defaultRepairNamesLoading.value) {
463
+    return '系统默认:正在加载人员姓名…';
464
+  }
465
+  if (defaultRepairUserNamesDisplay.value) {
466
+    return `系统默认:${defaultRepairUserNamesDisplay.value}`;
467
+  }
414 468
   if (n > 0) {
415
-    return `系统默认(已匹配 ${n} 人)`;
469
+    return '系统默认(已匹配岗位人员,姓名加载失败请关闭重试或点本行「选择」指定责任人)';
416 470
   }
417
-  return '系统默认(未匹配到岗位人员时可点本行选择)';
471
+  return '系统默认(尚未匹配到岗位人员,可点本行「选择」指定整改人)';
418 472
 });
419 473
 
420 474
 const buildXfRepairSessionUsers = () => {
@@ -460,14 +514,21 @@ const resetXfRepairToDefault = () => {
460 514
   xfRepairUseCustom.value = false;
461 515
   xfRepairUserCodes.value = '';
462 516
   xfRepairUserNames.value = '';
517
+  defaultRepairUserNamesDisplay.value = '';
518
+  defaultRepairNamesLoading.value = false;
519
+  if (defaultRepairL.value) {
520
+    void loadDefaultRepairUserDisplayNames(defaultRepairL.value);
521
+  }
463 522
 };
464 523
 
465 524
 // 打开下发弹窗
466 525
 const handleSubmitXF = (row) => {
467 526
   currentSubmitRow.value = row;
468 527
   xfRepairSessionKey.value = guid();
469
-  resetXfRepairToDefault();
470 528
   defaultRepairL.value = '';
529
+  defaultRepairUserNamesDisplay.value = '';
530
+  defaultRepairNamesLoading.value = false;
531
+  resetXfRepairToDefault();
471 532
   const repairDeptCode =
472 533
     row.checkedDeptCode || query2.value?.checkedDeptCode || '';
473 534
   if (repairDeptCode) {
@@ -476,6 +537,7 @@ const handleSubmitXF = (row) => {
476 537
       .then((r) => {
477 538
         if (r.data.code === 0 && r.data.data) {
478 539
           defaultRepairL.value = r.data.data;
540
+          void loadDefaultRepairUserDisplayNames(r.data.data);
479 541
         }
480 542
       })
481 543
       .catch(() => {});

Carregando…
Cancelar
Salvar