添加接口

This commit is contained in:
xianyi
2026-01-14 10:56:00 +08:00
parent 88834825f8
commit 33d44c9728
7 changed files with 106 additions and 80 deletions

View File

@@ -37,7 +37,6 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
const fileInputRef = useRef<HTMLInputElement | null>(null);
const [consentList, setConsentList] = useState<OutputTongyishuFileInfo[]>([]);
const [consentLoading, setConsentLoading] = useState(false);
const [consentMessage, setConsentMessage] = useState<string | null>(null);
const [previewPdf, setPreviewPdf] = useState<OutputTongyishuFileInfo | null>(null);
const [showSignature, setShowSignature] = useState(false);
const signaturePadRef = useRef<SignaturePadHandle | null>(null);
@@ -60,8 +59,6 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
const [showDaojiandanPreview, setShowDaojiandanPreview] = useState(false);
const [daojiandanPdfData, setDaojiandanPdfData] = useState<ArrayBuffer | null>(null);
const [daojiandanPdfLoading, setDaojiandanPdfLoading] = useState(false);
const [daojiandanPdfReady, setDaojiandanPdfReady] = useState(false);
const [daojiandanPdfBlobUrl, setDaojiandanPdfBlobUrl] = useState<string | null>(null);
const daojiandanCanvasContainerRef = useRef<HTMLDivElement>(null);
const [showAddItemBillPreview, setShowAddItemBillPreview] = useState(false);
const [showAddItemBillSignature, setShowAddItemBillSignature] = useState(false);
@@ -81,8 +78,6 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
const [currentAddItemBill, setCurrentAddItemBill] = useState<AddItemBillItem | null>(null);
const [addItemBillPdfData, setAddItemBillPdfData] = useState<ArrayBuffer | null>(null);
const [addItemBillPdfLoading, setAddItemBillPdfLoading] = useState(false);
const [addItemBillPdfReady, setAddItemBillPdfReady] = useState(false);
const [addItemBillPdfBlobUrl, setAddItemBillPdfBlobUrl] = useState<string | null>(null);
const [batchPrintLoading, setBatchPrintLoading] = useState(false);
const addItemBillCanvasContainerRef = useRef<HTMLDivElement>(null);
@@ -96,7 +91,6 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
const refreshTijianPdfs = async (examIdValue: number) => {
setConsentLoading(true);
setConsentMessage(null);
try {
const res = await getTijianPdfFile({ exam_id: examIdValue });
@@ -120,10 +114,6 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
.filter((n) => Number.isFinite(n)) || [];
setSignedCombinationCodes(signedCodes);
if (!mappedConsent.length) {
setConsentMessage(res.Message || '暂无知情同意书');
}
// 导检单pdf_type = 1取第一条
const daojiandan = list.find((item) => item.pdf_type === 1);
if (daojiandan) {
@@ -159,7 +149,6 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
}
} catch (err) {
console.error('获取体检PDF列表失败', err);
setConsentMessage('知情同意书加载失败,请稍后重试');
} finally {
setConsentLoading(false);
}
@@ -169,7 +158,6 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
useEffect(() => {
if (!examId) {
setConsentList([]);
setConsentMessage('缺少体检ID无法获取知情同意书');
setDaojiandanUrl(null);
setIsDaojiandanSigned(false);
return;
@@ -187,9 +175,6 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
combination_code: item.combination_code ?? null,
}));
setConsentList(mappedConsent);
if (mappedConsent.length === 0) {
setConsentMessage(res.Message || '暂无知情同意书');
}
}
} catch (err) {
console.error('获取知情同意书失败', err);
@@ -452,13 +437,10 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
useEffect(() => {
if (!showDaojiandanPreview || !daojiandanUrl) {
setDaojiandanPdfData(null);
setDaojiandanPdfBlobUrl(null);
setDaojiandanPdfReady(false);
return;
}
let objectUrl: string | null = null;
setDaojiandanPdfReady(false);
setDaojiandanPdfLoading(true);
setDaojiandanPdfData(null);
@@ -469,7 +451,6 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
})
.then((blob) => {
objectUrl = URL.createObjectURL(blob);
setDaojiandanPdfBlobUrl(objectUrl);
return blob.arrayBuffer();
})
.then((arrayBuffer) => {
@@ -478,7 +459,6 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
})
.catch((err) => {
console.error('导检单PDF 拉取失败', err);
setDaojiandanPdfLoading(false);
});
return () => {
@@ -492,8 +472,6 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
useEffect(() => {
if (!daojiandanPdfData || !daojiandanCanvasContainerRef.current) return;
setDaojiandanPdfReady(false);
const renderAllPages = async () => {
try {
const pdf = await pdfjsLib.getDocument({ data: daojiandanPdfData }).promise;
@@ -532,10 +510,8 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
await page.render(renderContext).promise;
}
setDaojiandanPdfReady(true);
} catch (err) {
console.error('导检单PDF 渲染失败', err);
setDaojiandanPdfLoading(false);
}
};
@@ -546,13 +522,10 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
useEffect(() => {
if (!showAddItemBillPreview || !currentAddItemBill?.pdf_url) {
setAddItemBillPdfData(null);
setAddItemBillPdfBlobUrl(null);
setAddItemBillPdfReady(false);
return;
}
let objectUrl: string | null = null;
setAddItemBillPdfReady(false);
setAddItemBillPdfLoading(true);
setAddItemBillPdfData(null);
@@ -563,16 +536,13 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
})
.then((blob) => {
objectUrl = URL.createObjectURL(blob);
setAddItemBillPdfBlobUrl(objectUrl);
return blob.arrayBuffer();
})
.then((arrayBuffer) => {
setAddItemBillPdfData(arrayBuffer);
setAddItemBillPdfLoading(false);
})
.catch((err) => {
console.error('加项单PDF 拉取失败', err);
setAddItemBillPdfLoading(false);
});
return () => {
@@ -586,8 +556,6 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
useEffect(() => {
if (!addItemBillPdfData || !addItemBillCanvasContainerRef.current) return;
setAddItemBillPdfReady(false);
const renderAllPages = async () => {
try {
const pdf = await pdfjsLib.getDocument({ data: addItemBillPdfData }).promise;
@@ -626,10 +594,8 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
await page.render(renderContext).promise;
}
setAddItemBillPdfReady(true);
} catch (err) {
console.error('加项单PDF 渲染失败', err);
setAddItemBillPdfLoading(false);
}
};
@@ -645,7 +611,6 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
const renderDaojiandan = async () => {
try {
setDaojiandanPdfLoading(true);
container.innerHTML = '';
const resp = await fetch(daojiandanUrl);
@@ -687,7 +652,6 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
console.error('导检单PDF 渲染失败', err);
} finally {
if (!cancelled) {
setDaojiandanPdfLoading(false);
}
}
};
@@ -1015,7 +979,6 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
if (res.Status === 200 && res.Data?.pdf_url) {
setDaojiandanSubmitMessage('签名提交成功');
const pdfUrlValue = res.Data.pdf_url;
const pdfNameValue = res.Data.pdf_name || '导检单';
setDaojiandanUrl(pdfUrlValue);
setIsDaojiandanSigned(true); // 签名成功后标记为已签名