From caddfd7efaabf86eb2348ae33d9b7a2281a2b167 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 16 十月 2026 21:04:56 +0800
Subject: [PATCH] fix(user): 导入失败明细改用弹窗展示,用户页字段统一叫「用户账号」

---
 src/utils/import-result.ts |   54 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 37 insertions(+), 17 deletions(-)

diff --git a/src/utils/import-result.ts b/src/utils/import-result.ts
index ca78840..f51866f 100644
--- a/src/utils/import-result.ts
+++ b/src/utils/import-result.ts
@@ -2,7 +2,7 @@
 
 import { h } from 'vue';
 
-import { message, notification } from 'ant-design-vue';
+import { message, Modal } from 'ant-design-vue';
 
 export interface ImportResultNotifyOptions {
   /** 涓氬姟涓讳綋锛岀敤浜庢嫾鏍囬涓庡缓璁紝濡傘�岃澶囥�嶃�屽鎴枫�� */
@@ -20,8 +20,10 @@
 /**
  * 缁熶竴灞曠ず Excel 瀵煎叆缁撴灉銆�
  *
- * 鍙鍚庣杩斿洖浜嗗け璐ユ槑缁嗭紝灏辩粷涓嶈兘鍐嶆彁绀恒�屾搷浣滄垚鍔熴�嶁�斺�旀敼涓哄父椹婚�氱煡閫愯鍒楀嚭澶辫触鍘熷洜锛�
+ * 鍙鍚庣杩斿洖浜嗗け璐ユ槑缁嗭紝灏辩粷涓嶈兘鍐嶆彁绀恒�屾搷浣滄垚鍔熴�嶁�斺�旀敼涓哄脊绐楅�愯鍒楀嚭澶辫触鍘熷洜锛�
  * 骞舵寜澶辫触鍘熷洜缁欏嚭涓嬩竴姝ュ姩浣滐紱鍏ㄩ儴鎴愬姛鏃舵墠鎻愮ず鎴愬姛銆�
+ *
+ * 澶辫触鏄庣粏鍙兘涓婄櫨琛岋紝鎵�浠ョ敤寮圭獥锛堝脊绐楀唴鍒楄〃鍙粴鍔級锛岄伩鍏嶉暱娑堟伅绯婃弧灞忓箷銆�
  *
  * @returns 瀹為檯鍐欏叆鐨勬潯鏁帮紙鏂板 + 鏇存柊锛夛紝渚涜皟鐢ㄦ柟鍐冲畾鏄惁闇�瑕佸埛鏂板垪琛�
  */
@@ -43,26 +45,41 @@
     return importedCount;
   }
 
-  const nodes: VNodeChild[] = [
+  const hints = buildFailureHints(
+    failureEntries.map(([, reason]) => reason),
+    { subject, masterDataHint },
+  );
+
+  const content: VNodeChild = h('div', [
     h(
       'div',
-      `鏂板鎴愬姛 ${createCount} 鏉★紝鏇存柊鎴愬姛 ${updateCount} 鏉★紝澶辫触 ${failureEntries.length} 鏉★細`,
+      `鏂板鎴愬姛 ${createCount} 鏉★紝鏇存柊鎴愬姛 ${updateCount} 鏉★紝澶辫触 ${failureEntries.length} 鏉°�俙,
     ),
-    ...failureEntries.map(([name, reason]) => h('div', `${name}锛�${reason}`)),
-    ...buildFailureHints(failureEntries.map(([, reason]) => reason), {
-      subject,
-      masterDataHint,
-    }).map((hint) => h('div', { class: 'mt-2 text-red-500' }, hint)),
-  ];
+    h(
+      'div',
+      {
+        class:
+          'mt-2 max-h-72 overflow-y-auto rounded border border-solid border-gray-200 px-3 py-2 text-sm leading-6',
+      },
+      failureEntries.map(([name, reason]) =>
+        h('div', { class: 'py-0.5' }, `${name}锛�${reason}`),
+      ),
+    ),
+    ...hints.map((hint) =>
+      h('div', { class: 'mt-2 text-red-500' }, hint),
+    ),
+  ]);
 
-  const notify = importedCount === 0 ? notification.error : notification.warning;
-  notify({
-    message:
+  const openModal = importedCount === 0 ? Modal.error : Modal.warning;
+  openModal({
+    title:
       importedCount === 0
         ? `${subject}瀵煎叆澶辫触锛�${failureEntries.length} 琛屽叏閮ㄦ湭瀵煎叆`
-        : `瀵煎叆瀹屾垚锛岄儴鍒�${subject}瀵煎叆澶辫触锛堟垚鍔� ${importedCount} 鏉� / 澶辫触 ${failureEntries.length} 鏉★級`,
-    description: () => h('div', nodes),
-    duration: null,
+        : `瀵煎叆瀹屾垚锛氭垚鍔� ${importedCount} 鏉★紝澶辫触 ${failureEntries.length} 鏉,
+    content,
+    width: 680,
+    centered: true,
+    okText: '鐭ラ亾浜�',
   });
   return importedCount;
 }
@@ -70,7 +87,10 @@
 /** 鎸夊け璐ュ師鍥犲綊绾充笅涓�姝ュ姩浣滐紝閬垮厤鐢ㄦ埛鍙湅鍒般�屽け璐ャ�嶅嵈涓嶇煡閬撴敼鍝噷 */
 function buildFailureHints(
   reasons: string[],
-  { subject, masterDataHint }: Pick<ImportResultNotifyOptions, 'masterDataHint' | 'subject'>,
+  {
+    subject,
+    masterDataHint,
+  }: Pick<ImportResultNotifyOptions, 'masterDataHint' | 'subject'>,
 ): string[] {
   const hints = new Set<string>();
   for (const reason of reasons) {

--
Gitblit v1.9.3