<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>
|