From 6d67c257b64267ac2a6bb83894e80e753c7ba42a Mon Sep 17 00:00:00 2001 From: jlzhangyx5 Date: Fri, 25 Jul 2025 14:28:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=84=E5=A7=94=E4=BC=9A=E7=BB=84=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projectManager/ReviewResults/service.ts | 2 +- .../JudgingPanel/List/index.tsx | 52 +++++++++++++++++-- 2 files changed, 48 insertions(+), 6 deletions(-) diff --git a/src/pages/Evaluation/projectManager/ReviewResults/service.ts b/src/pages/Evaluation/projectManager/ReviewResults/service.ts index 1a22745..be9e3b3 100644 --- a/src/pages/Evaluation/projectManager/ReviewResults/service.ts +++ b/src/pages/Evaluation/projectManager/ReviewResults/service.ts @@ -57,7 +57,7 @@ export function getAssessRoomStatus(id: any) { * @param id */ export function saveAssessRoomInfo(data: any) { - return request('/api/biz-service-ebtp-rsms/v1/bizassessroom', { + return request('/api/biz-service-ebtp-process/v1/bizassessroom', { method: 'post', data: data, }); diff --git a/src/pages/Tender/ProjectManager/JudgingPanel/List/index.tsx b/src/pages/Tender/ProjectManager/JudgingPanel/List/index.tsx index 3e0763f..0738821 100644 --- a/src/pages/Tender/ProjectManager/JudgingPanel/List/index.tsx +++ b/src/pages/Tender/ProjectManager/JudgingPanel/List/index.tsx @@ -698,13 +698,34 @@ const JudgingPanel: React.FC<{}> = () => { valueType: 'select', valueEnum: professionalMap, width: '30%', + formItemProps: { + rules: [ + { + required: true, + message: '请选择专业名称', + }, + ], + }, }, { title: '人数', dataIndex: 'extractNumber', width: '30%', renderFormItem: (_, { record }) => { - return ; + return ; + }, + formItemProps: { + rules: [ + { + required: true, + message: '请输入人数', + }, + { + type: 'number', + min: 1, + message: '人数必须大于0', + }, + ], }, }, { @@ -755,19 +776,34 @@ const JudgingPanel: React.FC<{}> = () => { return acc; }, {} as Record); const idToCodeMap = Object.entries(professionalMap || {}).reduce((acc, [id, option]) => { - acc[id] = option.text; + acc[id] = option.code; return acc; }, {} as Record); // 遍历表格数据并附加专业名称 const enhancedData = tableData.map(item => { - const name = idToNameMap[item.specialityId] || ''; // 获取对应名称 - const code = idToCodeMap[item.specialityId] || ''; // 获取对应名称 + const name = idToNameMap[item.specialityId] || undefined; // 获取对应名称 + const code = idToCodeMap[item.specialityId] || undefined; // 获取对应名称 return { ...item, specialityName: name, // 添加专业名称字段 specialityNo: code, }; }); + // 添加校验函数 + const validateProfessionals = (data: DataSourceType[]) => { + for (let i = 0; i < data.length; i++) { + const item = data[i]; + if (!item.specialityId || item.specialityId.trim() === '') { + message.error(`第${i + 1}行专业名称不能为空`); + return false; + } + if (!item.extractNumber || item.extractNumber <= 0) { + message.error(`第${i + 1}行人数必须大于0`); + return false; + } + } + return true; + }; const renderFooter = () => {//评审小组footer return ( <> @@ -808,6 +844,13 @@ const JudgingPanel: React.FC<{}> = () => { if (pass) { pass = checkData(finalVals) } + // 在校验通过后再添加专业数据校验 + if (pass) { + // 校验专业数据必填项 + if (!validateProfessionals(tableData)) { + pass = false; + } + } const st = moment(formVals.startTime).format('yyyy-MM-DD HH:mm:ss'); const et = moment(formVals.endTime).format('yyyy-MM-DD HH:mm:ss'); if (st > et || st == et) {//校验时间 @@ -821,7 +864,6 @@ const JudgingPanel: React.FC<{}> = () => { formVals.startTime != undefined ? formVals.startTime = formVals.startTime.format('yyyy-MM-DD HH:mm:ss') : null; formVals.endTime != undefined ? formVals.endTime = formVals.endTime.format('yyyy-MM-DD HH:mm:ss') : null; const _cqData = cqData.length > 0 ? [{ ...cqData[0], extractNumber: count }] : [{ category: "2", extractMethod: "2", extractNumber: count, subCategory: "4" }]//抽取数量录入 - console.log("_cqData", _cqData); let params = { ...formVals, juryRoomList: juryRoomList, projectId: proId, juryCategoryVOList: _cqData, reserveStatus: 0, extractSpecialityList: enhancedData }; if (updateData != undefined) { params['id'] = updateData.id;