完善导检单显示

This commit is contained in:
xianyi
2026-01-08 16:53:42 +08:00
parent 9309037f19
commit 2dbba9e708
2 changed files with 78 additions and 8 deletions

View File

@@ -3,7 +3,7 @@ import * as pdfjsLib from 'pdfjs-dist';
import pdfjsWorker from 'pdfjs-dist/build/pdf.worker.min.mjs?url';
import type { OutputTongyishuFileInfo, OutputTijianPdfFileInfo } from '../../api';
import { signInMedicalExamCenter, submitTongyishuSign, submitDaojiandanSign, editDaojiandanPrintStatus, submitAddItemBillSign, getTijianPdfFile } from '../../api';
import { signInMedicalExamCenter, submitTongyishuSign, submitDaojiandanSign, editDaojiandanPrintStatus, submitAddItemBillSign, getTijianPdfFile, getTongyishuPdf, getDaojiandanPdf } from '../../api';
import type { SignaturePadHandle } from '../ui';
import { Button, SignaturePad } from '../ui';
@@ -129,7 +129,9 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
setDaojiandanUrl(url);
setIsDaojiandanSigned(daojiandan.is_sign === 1);
} else {
setDaojiandanUrl(null);
// 如果 getTijianPdfFile 没有返回导检单,保留之前通过 getDaojiandanPdf 获取的URL如果存在
// 不设置为 null这样未签名的导检单也能显示"查看"按钮
setDaojiandanUrl((prev) => (prev !== null ? prev : null));
setIsDaojiandanSigned(false);
}
@@ -169,7 +171,45 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
setIsDaojiandanSigned(false);
return;
}
refreshTijianPdfs(examId);
// 初始化时加载知情同意书和导检单
const loadTongyishu = async () => {
try {
const res = await getTongyishuPdf({ exam_id: examId });
if (res.Status === 200 && res.Data?.list_pdf_url) {
const list = res.Data.list_pdf_url;
const mappedConsent: OutputTongyishuFileInfo[] = list.map((item) => ({
pdf_name: item.pdf_name || '',
pdf_url: item.pdf_url || '',
combination_code: item.combination_code ?? null,
}));
setConsentList(mappedConsent);
if (mappedConsent.length === 0) {
setConsentMessage(res.Message || '暂无知情同意书');
}
}
} catch (err) {
console.error('获取知情同意书失败', err);
}
};
// 初始化时加载导检单(未签名版本也可以查看)
const loadDaojiandan = async () => {
try {
const res = await getDaojiandanPdf({ exam_id: examId });
if (res.Status === 200 && res.Data?.pdf_url) {
// 如果 refreshTijianPdfs 没有设置导检单URL则使用这里获取的未签名版本
setDaojiandanUrl((prev) => prev || res.Data?.pdf_url || null);
}
} catch (err) {
console.error('获取导检单失败', err);
}
};
// 先加载知情同意书和导检单然后刷新所有PDF状态包括签名状态
Promise.all([loadTongyishu(), loadDaojiandan()]).then(() => {
refreshTijianPdfs(examId);
});
}, [examId]);
const handlePickFile = () => {