From 8534025c45b4736975730678b9ccf23570a75f95 Mon Sep 17 00:00:00 2001
From: liuyu <yu.liu@cqgbkj.com>
Date: 星期二, 22 九月 2026 09:25:48 +0800
Subject: [PATCH] feat(tms): 新增试卷、培训任务、个人任务页面

---
 apps/jnpf-web-apps-main/src/views/x/tms/trainRecord/Catalog.vue |   43 ++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 38 insertions(+), 5 deletions(-)

diff --git a/apps/jnpf-web-apps-main/src/views/x/tms/trainRecord/Catalog.vue b/apps/jnpf-web-apps-main/src/views/x/tms/trainRecord/Catalog.vue
index 86d0cf8..4601102 100644
--- a/apps/jnpf-web-apps-main/src/views/x/tms/trainRecord/Catalog.vue
+++ b/apps/jnpf-web-apps-main/src/views/x/tms/trainRecord/Catalog.vue
@@ -9,6 +9,7 @@
 import dayjs from 'dayjs';
 
 import { getTrainRecordCatalog } from '#/api/x/tms/trainRecord';
+import { TMS_BTN } from '#/views/x/tms/shared/ui';
 
 defineOptions({ name: 'TmsTrainRecordCatalog' });
 
@@ -84,7 +85,39 @@
     createMessage.warning('鏆傛棤鏁版嵁鍙鍑�');
     return;
   }
-  createMessage.success(`宸插噯澶囧鍑� ${list.length} 鏉★紙瀵煎嚭鎺ュ彛鑱旇皟鍚庣敓鏁堬級`);
+  const headers = ['鍩硅璁板綍缂栧彿', '鍩硅绫诲瀷', '鍩硅鍐呭', '鍩硅鏂瑰紡', '鍩硅甯�', '鑰冩牳鏂瑰紡', '鍩硅缁撴灉', '鏄惁鍚堟牸', '鍏蜂綋鍩硅鏃堕棿'];
+  const escape = (v: unknown) => {
+    const s = v === null || v === undefined ? '' : String(v);
+    return /[",\n]/.test(s) ? `"${s.replace(/"/g, '""')}"` : s;
+  };
+  const passText = (v: string) => (v === '1' ? '鍚堟牸' : v === '0' ? '涓嶅悎鏍�' : '');
+  const lines = [
+    headers.join(','),
+    ...list.map((row) =>
+      [
+        row.recordNo,
+        row.trainType,
+        row.trainContent,
+        row.trainMode,
+        row.trainerName,
+        row.evalMode,
+        resultText(row),
+        passText(row.passFlag),
+        row.trainDate || '',
+      ]
+        .map(escape)
+        .join(','),
+    ),
+  ];
+  const bom = '\uFEFF';
+  const blob = new Blob([bom + lines.join('\n')], { type: 'text/csv;charset=utf-8;' });
+  const url = URL.createObjectURL(blob);
+  const a = document.createElement('a');
+  a.href = url;
+  a.download = `鍩硅鐩綍_${detail.value?.userName || detail.value?.archiveNo || 'export'}_${dayjs().format('YYYYMMDD')}.csv`;
+  a.click();
+  URL.revokeObjectURL(url);
+  createMessage.success(`宸插鍑� ${list.length} 鏉);
 }
 
 function goBack() {
@@ -119,12 +152,12 @@
                   :placeholder="['寮�濮嬫棩鏈�', '缁撴潫鏃ユ湡']"
                   :get-popup-container="popupContainer"
                 />
-                <a-button type="primary" class="ml-3" @click="handleSearch">鏌ヨ</a-button>
-                <a-button class="ml-2" @click="handleReset">閲嶇疆</a-button>
+                <a-button type="primary" class="ml-3" @click="handleSearch">{{ TMS_BTN.search }}</a-button>
+                <a-button class="ml-2" @click="handleReset">{{ TMS_BTN.reset }}</a-button>
               </div>
               <a-space>
-                <a-button @click="handleExport">瀵煎嚭</a-button>
-                <a-button @click="goBack">鍏抽棴</a-button>
+                <a-button type="primary" ghost @click="handleExport">{{ TMS_BTN.export }}</a-button>
+                <a-button @click="goBack">{{ TMS_BTN.close }}</a-button>
               </a-space>
             </div>
 

--
Gitblit v1.8.0