保存体检操作记录

This commit is contained in:
xianyi
2025-12-16 10:07:11 +08:00
parent 2eeb23075a
commit 8a98b732ef
4 changed files with 112 additions and 3 deletions

View File

@@ -2,6 +2,7 @@ import { useEffect, useRef, useState } from 'react';
import { submitDaojiandanSign } from '../../api';
import type { ExamClient } from '../../data/mockData';
import { setExamActionRecord } from '../../utils/examActions';
import type { SignaturePadHandle } from '../ui';
import { Button, SignaturePad } from '../ui';
@@ -47,6 +48,8 @@ export const ExamPrintPanel = ({ client }: { client: ExamClient }) => {
setSubmitMessage('签名提交成功,正在加载导检单...');
setSignatureSubmitted(true);
setPdfUrl(res.Data.pdf_url);
// 记录打印导检单是否签名操作
setExamActionRecord(examId, 'printSign', true);
} else {
setSubmitMessage(res.Message || '签名提交失败');
}

View File

@@ -2,6 +2,7 @@ import { useEffect, useState } from 'react';
import type { ExamClient, ExamModalTab } from '../../data/mockData';
import { EXAM_TAGS } from '../../data/mockData';
import { getTodayExamProgress } from '../../api';
import { isExamActionDone } from '../../utils/examActions';
import { Badge, Card, CardContent, CardHeader, InfoCard } from '../ui';
import { cls } from '../../utils/cls';
@@ -77,9 +78,13 @@ export const ExamSection = ({
<CardContent>
<div className='grid grid-cols-3 gap-3 text-sm'>
{filteredClients.map((client) => {
const signDone = client.signStatus === '已登记' || client.checkedItems.includes('签到');
// 检查操作记录:优先使用 localStorage 记录,如果没有则使用原有逻辑
const idCardSignInDone = isExamActionDone(client.id, 'idCardSignIn');
const printSignDone = isExamActionDone(client.id, 'printSign');
const signDone = idCardSignInDone || client.signStatus === '已登记' || client.checkedItems.includes('签到');
const addonCount = client.addonCount || 0;
const printDone = !!client.guidePrinted;
const printDone = printSignDone || !!client.guidePrinted;
const openModal = (tab: ExamModalTab) => onOpenModal(client.id, tab);
return (

View File

@@ -2,6 +2,7 @@ import { useEffect, useRef, useState } from 'react';
import type { OutputTongyishuFileInfo } from '../../api';
import { getTongyishuPdf, signInMedicalExamCenter, submitTongyishuSign } from '../../api';
import { setExamActionRecord } from '../../utils/examActions';
import type { SignaturePadHandle } from '../ui';
import { Button, SignaturePad } from '../ui';
@@ -123,7 +124,15 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
try {
const res = await signInMedicalExamCenter({ id_no_pic: idCardFile });
const ok = res.Status === 200 && res.Data?.is_success === 0;
setMessage(ok ? '签到成功' : res.Message || '签到失败');
if (ok) {
setMessage('签到成功');
// 记录身份证拍照与签到操作
if (examId) {
setExamActionRecord(examId, 'idCardSignIn', true);
}
} else {
setMessage(res.Message || '签到失败');
}
} catch (err) {
console.error(err);
setMessage('签到请求失败,请稍后重试');
@@ -157,6 +166,10 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => {
if (res.Status === 200) {
setSubmitMessage('签名提交成功');
// 记录体检知情同意书的签字操作
if (examId) {
setExamActionRecord(examId, 'consentSign', true);
}
setSignedCombinationCodes((prev) => {
const code = Number(previewPdf.combination_code);
if (!Number.isFinite(code)) return prev || [];