liuyu
21 小时以前 93c133349a5ccd7a328371fa113dce69d5611f21
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 {