添加接口
This commit is contained in:
@@ -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); // 签名成功后标记为已签名
|
||||
|
||||
|
||||
Reference in New Issue
Block a user