feat(upload): 添加合同类型选择器,用户必须手动选择

This commit is contained in:
2026-03-18 21:57:07 +08:00
parent 1a2ce367af
commit 9fd222ef3d
+33 -3
View File
@@ -27,6 +27,7 @@ import {
import { updateDocumentAuditStatus } from "~/api/evaluation_points/rules-files";
import { links as fileTypeTagLinks } from "~/components/ui/FileTypeTag";
import { getQueueStatus, type QueueStatus } from "~/api/queue";
import { CONTRACT_TYPES, DEFAULT_CONTRACT_TYPE } from "~/constants/contractTypes";
export function links() {
return [
@@ -131,7 +132,8 @@ async function handleFileUpload(
documentId?: number | null,
isReupload: boolean = false,
jwtToken?: string,
attachments?: File[]
attachments?: File[],
attributeType?: string
): Promise<FileUploadResponse> {
// console.log('【handleFileUpload】开始上传:', {
// fileName,
@@ -349,6 +351,7 @@ export default function FilesUpload() {
const [documentNumber, setDocumentNumber] = useState<string>("");
const [remark, setRemark] = useState<string>("");
const [currentFiles, setCurrentFiles] = useState<File[]>([]);
const [attributeType, setAttributeType] = useState<string>(DEFAULT_CONTRACT_TYPE);
// 合同文件上传状态
// 这些变量暂时未使用,但保留以备将来扩展
@@ -1193,7 +1196,8 @@ export default function FilesUpload() {
null,
false,
loaderData.frontendJWT || undefined,
attachmentFiles
attachmentFiles,
attributeType
);
// console.log('【合同上传】服务器响应数据:', uploadResp);
@@ -1550,7 +1554,9 @@ export default function FilesUpload() {
isTestDocument,
temp_n > 1 ? firstFileDocumentId : null, // 第二个文件及以后使用第一个文件的document_id
false,
loaderData.frontendJWT || undefined
loaderData.frontendJWT || undefined,
undefined,
attributeType
);
const timeoutPromise = new Promise<FileUploadResponse>((_, reject) => {
@@ -2326,6 +2332,30 @@ export default function FilesUpload() {
</select>
<div className="form-tip"></div>
</div>
{/* 只有选择合同类型时才显示合同子类型选择器 */}
{isContractType && (
<div className="form-group">
<label htmlFor="contract-type-select" className="form-label">
<span className="required">*</span>
</label>
<select
id="contract-type-select"
name="attributeType"
className="form-select"
value={attributeType}
onChange={(e) => setAttributeType(e.target.value)}
disabled={uploadStage !== "idle"}
required
>
{CONTRACT_TYPES.map(type => (
<option key={type.value} value={type.value}>
{type.label}
</option>
))}
</select>
<div className="form-tip"></div>
</div>
)}
<div className="form-group">
<label htmlFor="docNumber" className="form-label"></label>
<input