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/record/Detail.vue | 45 ++++++++++++++++++++++++++-------------------
1 files changed, 26 insertions(+), 19 deletions(-)
diff --git a/apps/jnpf-web-apps-main/src/views/x/tms/record/Detail.vue b/apps/jnpf-web-apps-main/src/views/x/tms/record/Detail.vue
index 6f12ac0..7a96afa 100644
--- a/apps/jnpf-web-apps-main/src/views/x/tms/record/Detail.vue
+++ b/apps/jnpf-web-apps-main/src/views/x/tms/record/Detail.vue
@@ -12,6 +12,17 @@
} from 'ant-design-vue';
import { getTmsRecordDetail } from '#/api/x/tms/record';
+import { getAuthMediaUrl } from '#/utils/jnpf';
+import { TMS_BTN } from '#/views/x/tms/shared/ui';
+
+import {
+ labelOfCategory,
+ labelOfEvalMode,
+ labelOfTrainMode,
+ loadRecordDics,
+} from './constants';
+
+import '#/views/x/tms/shared/page.css';
defineOptions({ name: 'TmsRecordDetail' });
@@ -37,8 +48,9 @@
},
];
-onMounted(() => {
- loadData();
+onMounted(async () => {
+ await loadRecordDics();
+ await loadData();
});
async function loadData() {
@@ -83,10 +95,12 @@
function openAttachment(url?: string) {
if (!url || url === '#') {
- createMessage.info('闄勪欢棰勮鑱旇皟鍚庣敓鏁�');
+ createMessage.info('鏆傛棤鍙瑙堥檮浠�');
return;
}
- window.open(url, '_blank');
+ const apiIndex = url.indexOf('/api/');
+ const path = /^https?:\/\//i.test(url) && apiIndex >= 0 ? url.slice(apiIndex) : url;
+ window.open(getAuthMediaUrl(path, false), '_blank');
}
</script>
@@ -96,9 +110,11 @@
<div class="jnpf-content-wrapper-content tms-record-detail-wrap">
<a-spin :spinning="loading" class="detail-spin">
<div v-if="detail" class="detail-inner">
- <div class="detail-header">
- <div class="text-base font-medium">鍩硅璁板綍</div>
- <a-button type="primary" @click="goBack">杩斿洖</a-button>
+ <div class="tms-page-header">
+ <div class="tms-page-header__title">鍩硅璁板綍</div>
+ <div class="tms-page-header__actions">
+ <a-button @click="goBack">{{ TMS_BTN.back }}</a-button>
+ </div>
</div>
<ADescriptions bordered :column="2" size="middle" class="detail-desc">
@@ -113,10 +129,10 @@
<ADescriptionsItem label="鍩硅寮�濮嬫椂闂�">{{ detail.startTime }}</ADescriptionsItem>
<ADescriptionsItem label="鍩硅缁撴潫鏃堕棿">{{ detail.endTime || '-' }}</ADescriptionsItem>
<ADescriptionsItem label="鍩硅鍦扮偣" :span="2">{{ detail.placeName || '-' }}</ADescriptionsItem>
- <ADescriptionsItem label="鍩硅鍒嗙被">{{ detail.category }}</ADescriptionsItem>
- <ADescriptionsItem label="鍩硅鏂瑰紡">{{ detail.trainMode || detail.trainType || '-' }}</ADescriptionsItem>
+ <ADescriptionsItem label="鍩硅鍒嗙被">{{ labelOfCategory(detail.category) }}</ADescriptionsItem>
+ <ADescriptionsItem label="鍩硅鏂瑰紡">{{ labelOfTrainMode(detail.trainMode || detail.trainType) }}</ADescriptionsItem>
<ADescriptionsItem label="鍩硅甯�">{{ detail.trainerName }}</ADescriptionsItem>
- <ADescriptionsItem label="鍩硅鑰冩牳鏂瑰紡">{{ detail.evalMode }}</ADescriptionsItem>
+ <ADescriptionsItem label="鍩硅鑰冩牳鏂瑰紡">{{ labelOfEvalMode(detail.evalMode) }}</ADescriptionsItem>
<ADescriptionsItem label="鍩硅瀵硅薄" :span="2">{{ detail.trainees || '-' }}</ADescriptionsItem>
<ADescriptionsItem label="闄勪欢" :span="2">
<div v-if="detail.attachments?.length" class="attach-list">
@@ -189,15 +205,6 @@
.detail-inner {
padding: 16px 20px 24px;
box-sizing: border-box;
-}
-
-.detail-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-bottom: 16px;
- padding-bottom: 12px;
- border-bottom: 1px solid #f0f0f0;
}
.detail-desc {
--
Gitblit v1.8.0