刘光辉
7 小时以前 cf11e63b659afcc9792ab3e395f1b45d844431a8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<script lang="ts" setup>
import type { DmsPrintOperationLog } from '#/api/x/dms/printOperation';
 
import { ref } from 'vue';
 
import { BasicDrawer, useDrawerInner } from '@jnpf/ui/drawer';
import { formatToDateTime } from '@jnpf/utils';
 
import { Descriptions, DescriptionsItem, Result } from 'ant-design-vue';
 
import { getDmsPrintOperationDetail } from '#/api/x/dms/printOperation';
 
const detail = ref<DmsPrintOperationLog>();
const loadError = ref(false);
const currentId = ref('');
const [registerDrawer, { changeLoading }] = useDrawerInner(init);
 
async function init(data: { id: string }) {
  currentId.value = data.id;
  detail.value = undefined;
  loadError.value = false;
  await load();
}
 
async function load() {
  changeLoading(true);
  try {
    const response = await getDmsPrintOperationDetail(currentId.value);
    detail.value = response.data;
  } catch {
    loadError.value = true;
  } finally {
    changeLoading(false);
  }
}
 
function text(value?: null | string) {
  return value || '—';
}
 
function printTypeLabel(value?: string) {
  return PRINT_TYPE_LABELS[value || ''] || value || '—';
}
 
const PRINT_TYPE_LABELS: Record<string, string> = {
  ARCHIVE_BOX: '档案盒打印',
  BLANK_FORM: '空白表单打印',
  CONTROLLED_DOCUMENT: '受控文件打印',
  LABEL: '标签打印',
  OTHER: '其他打印',
  RECORD_DOCUMENT: '记录文件打印',
};
</script>
 
<template>
  <BasicDrawer v-bind="$attrs" @register="registerDrawer" title="打印记录详情" width="min(760px, calc(100vw - 16px))" destroy-on-close>
    <Result v-if="loadError" status="error" title="打印记录加载失败">
      <template #extra><a-button type="primary" @click="load">重试</a-button></template>
    </Result>
    <Descriptions v-else-if="detail" bordered size="small" :column="{ xs: 1, sm: 1, md: 2 }">
      <DescriptionsItem label="编号">{{ text(detail.documentCode) }}</DescriptionsItem>
      <DescriptionsItem label="名称">{{ text(detail.documentName) }}</DescriptionsItem>
      <DescriptionsItem label="批号">{{ text(detail.batchNo) }}</DescriptionsItem>
      <DescriptionsItem label="版本号">{{ text(detail.versionNo) }}</DescriptionsItem>
      <DescriptionsItem label="打印类型">{{ printTypeLabel(detail.printType) }}</DescriptionsItem>
      <DescriptionsItem label="打印份数">{{ detail.copies }}</DescriptionsItem>
      <DescriptionsItem label="操作人">{{ text(detail.operatorName) }}</DescriptionsItem>
      <DescriptionsItem label="操作日期">{{ formatToDateTime(detail.operatedAt, 'YYYY-MM-DD HH:mm:ss') }}</DescriptionsItem>
      <DescriptionsItem label="来源">{{ text(detail.sourceMenuName || detail.sourceType) }}</DescriptionsItem>
      <DescriptionsItem label="请求 IP">{{ text(detail.requestIp) }}</DescriptionsItem>
      <DescriptionsItem label="备注" :span="2">{{ text(detail.remark) }}</DescriptionsItem>
    </Descriptions>
  </BasicDrawer>
</template>