From b9b95b91574faa0f8475b46ae6be5e56a63aa350 Mon Sep 17 00:00:00 2001 From: xianyi Date: Fri, 9 Jan 2026 17:54:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/his.ts | 4 +-- src/api/types.ts | 2 ++ src/components/exam/ExamAddonPanel.tsx | 3 +- src/components/exam/ExamSignPanel.tsx | 39 +++++++++++++++----------- 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/src/api/his.ts b/src/api/his.ts index 4a42c5d..5f633dd 100644 --- a/src/api/his.ts +++ b/src/api/his.ts @@ -332,9 +332,7 @@ export const submitAddItemBillSign = ( formData.append('sign_file', data.sign_file); return request.post( - `${MEDICAL_EXAM_BASE_PATH}/add-item-bill-sign-submit?exam_id=${data.exam_id}&pdf_sort=${data.pdf_sort}&combinationCode=${encodeURIComponent( - data.combinationCode - )}`, + `${MEDICAL_EXAM_BASE_PATH}/add-item-bill-sign-submit?exam_id=${data.exam_id}&pdf_sort=${data.pdf_sort}&combinationCode=${data.combinationCode}`, formData, { headers: { diff --git a/src/api/types.ts b/src/api/types.ts index b5b269d..6ed3702 100644 --- a/src/api/types.ts +++ b/src/api/types.ts @@ -1230,6 +1230,8 @@ export interface OutputTijianPdfFileInfo { is_pay?: number | null; /** 是否支付名称 */ is_pay_name?: string | null; + /** pdf序号 */ + pdf_sort: number | null; } /** diff --git a/src/components/exam/ExamAddonPanel.tsx b/src/components/exam/ExamAddonPanel.tsx index 3b6378e..f72c8a2 100644 --- a/src/components/exam/ExamAddonPanel.tsx +++ b/src/components/exam/ExamAddonPanel.tsx @@ -376,8 +376,7 @@ export const ExamAddonPanel = ({ client, onGoToSign }: ExamAddonPanelProps) => { CombinationCode: combinationItemCodes, }); - if (res.Status === 200 && res.Data?.listPdfInfo && res.Data.listPdfInfo.length > 0) { - // 新的接口返回的是数组,至少有一个PDF文件即认为成功 + if (res.Status === 200) { return true; } else { console.error('获取加项PDF失败', res.Message); diff --git a/src/components/exam/ExamSignPanel.tsx b/src/components/exam/ExamSignPanel.tsx index f480336..6d05e0e 100644 --- a/src/components/exam/ExamSignPanel.tsx +++ b/src/components/exam/ExamSignPanel.tsx @@ -83,9 +83,11 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => { const [addItemBillPdfLoading, setAddItemBillPdfLoading] = useState(false); const [addItemBillPdfReady, setAddItemBillPdfReady] = useState(false); const [addItemBillPdfBlobUrl, setAddItemBillPdfBlobUrl] = useState(null); + const [batchPrintLoading, setBatchPrintLoading] = useState(false); const addItemBillCanvasContainerRef = useRef(null); - const busy = signLoading || submitLoading || consentLoading || pdfLoading || daojiandanSubmitLoading || addItemBillSubmitLoading; + const busy = + signLoading || submitLoading || consentLoading || pdfLoading || daojiandanSubmitLoading || addItemBillSubmitLoading || batchPrintLoading; useEffect(() => { onBusyChange?.(busy); @@ -135,12 +137,13 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => { setIsDaojiandanSigned(false); } - // 加项单(pdf_type = 3):完全由新接口提供列表和签名状态 + // 加项单(pdf_type = 3):完全由新接口提供列表和签名状态(直接使用接口返回的字段) const addItemFromApi = list.filter((item) => item.pdf_type === 3); if (addItemFromApi.length > 0) { const addItemList: AddItemBillItem[] = addItemFromApi.map((item) => ({ - pdf_sort: item.combination_code ?? 0, - combinationCode: String(item.combination_code ?? ''), + // 这里直接使用接口返回的 pdf_sort / combination_code / is_pay / is_pay_name + pdf_sort: item.pdf_sort ?? 0, + combinationCode: item.combination_code != null ? String(item.combination_code) : '', payment_status: item.is_pay != null ? String(item.is_pay) : null, payment_status_name: item.is_pay_name ?? null, pdf_name: item.pdf_name || '加项单', @@ -825,7 +828,7 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
- +
`); @@ -958,7 +961,7 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
- +
`); @@ -1084,8 +1087,9 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => { const addItemFromApi = list.filter((item) => item.pdf_type === 3); if (addItemFromApi.length > 0) { const addItemList: AddItemBillItem[] = addItemFromApi.map((item) => ({ - pdf_sort: item.combination_code ?? 0, - combinationCode: String(item.combination_code ?? ''), + // 同样直接使用接口返回的字段,保持与 refreshTijianPdfs 一致 + pdf_sort: item.pdf_sort ?? 0, + combinationCode: item.combination_code != null ? String(item.combination_code) : '', payment_status: item.is_pay != null ? String(item.is_pay) : null, payment_status_name: item.is_pay_name ?? null, pdf_name: item.pdf_name || '加项单', @@ -1231,7 +1235,7 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
- +
`); @@ -1363,7 +1367,7 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
- +
`); @@ -1414,8 +1418,9 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => { // 一键打印所有文档 const handleBatchPrint = async () => { - if (busy) return; + if (busy || batchPrintLoading) return; + setBatchPrintLoading(true); try { const allImages: string[] = []; const scale = 3.0; @@ -1612,7 +1617,7 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
- +
`); @@ -1647,6 +1652,8 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => { } catch (err) { console.error('一键打印失败', err); alert('一键打印失败,请稍后重试'); + } finally { + setBatchPrintLoading(false); } }; @@ -1700,9 +1707,9 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => { )} @@ -1718,7 +1725,7 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => { className='flex items-center justify-between gap-3 p-2 rounded-xl border bg-white shadow-sm' >
- {item.pdf_name.length > 12 ? item.pdf_name.slice(0, 12) + "..." : item.pdf_name} + {item.pdf_name.length > 10 ? item.pdf_name.slice(0, 10) + "..." : item.pdf_name} {item.combination_code !== undefined && signedCombinationCodes.includes(Number(item.combination_code)) && ( {
{displayName} - {typeof bill.pdf_sort === 'number' ? `(#${bill.pdf_sort})` : ''} + {typeof bill.pdf_sort === 'number' ? `` : ''} {bill.payment_status_name && ( {bill.payment_status_name}