From af8f7836128f628217c6e254df4ef976830eae4c Mon Sep 17 00:00:00 2001 From: jlzhangyx5 Date: Tue, 27 May 2025 15:44:05 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=84=E5=AE=A1=E5=B0=8F=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JudgingPanel/List/indexcopy.tsx | 119 ++++++++++++++---- .../JudgingPanel/List/service.ts | 2 +- 2 files changed, 94 insertions(+), 27 deletions(-) diff --git a/src/pages/Tender/ProjectManager/JudgingPanel/List/indexcopy.tsx b/src/pages/Tender/ProjectManager/JudgingPanel/List/indexcopy.tsx index 62c0cc2..231bb6a 100644 --- a/src/pages/Tender/ProjectManager/JudgingPanel/List/indexcopy.tsx +++ b/src/pages/Tender/ProjectManager/JudgingPanel/List/indexcopy.tsx @@ -53,7 +53,7 @@ const JudgingPanel: React.FC<{}> = () => { const [editableKeys, setEditableRowKeys] = useState([]); const [tableData, setTableData] = useState([]); function getShouName() { - const method = getProMethod(); + const method = 'procurement_mode_1';//getProMethod();//TODO zyx-假数据 let showNameT: any = { zbr: '', bb: '', pb: '', }//相关标段 标书费 保证金 服务费 // let num = 3; if (method === 'procurement_mode_1' || method === 'procurement_mode_2') {//招标 @@ -101,8 +101,8 @@ const JudgingPanel: React.FC<{}> = () => { const columns: ProColumns[] = [ { title: '序号', valueType: 'index', width: 50, }, { title: `${showName.bb}名称`, dataIndex: 'sectionName', }, - { title: '专家数量', dataIndex: 'expertNumber', width: 80 }, - { title: `${showName.zbr}代表数量`, dataIndex: 'representativeNumber', width: 120 }, + { title: '专家抽取数量', dataIndex: 'expertNumber', width: 120 }, + { title: `直接录入数量`, dataIndex: 'representativeNumber', width: 120 }, { title: '预计开始时间', dataIndex: 'startTime', valueType: 'dateTime', width: '10%', }, { title: '预计结束时间', dataIndex: 'endTime', valueType: 'dateTime', width: '10%', }, { @@ -163,23 +163,63 @@ const JudgingPanel: React.FC<{}> = () => { ) } + const handleUpdate = async (record: any) => { + form.resetFields(); + const res = await queryVoList({ id: record.id }); + + + // 提取专业抽取列表 + const extractSpecialityList = res.data.extractSpecialityList || []; + // 设置表格数据 + let specList = extractSpecialityList.map((item: any, index: number) => ({ + ...item, + uid: item.id || String(index + Date.now()) // 确保每个条目有唯一 key + })) + res.data.extractSpecialityList = specList; + setTableData(specList); + // 设置 editableKeys,确保每一行都能编辑 + setEditableRowKeys(specList.map((item: any, index: number) => item.uid)); + // setEditableRowKeys(specList.map(item => item.uid)); + updateDataSet(res.data); + + //剔除代表 + let list = [...res.data.juryCategoryVOList]; + list.map((item: any, index: any) => { + if (item.category == 1) { + list.splice(index, 1); + } + }); + cqDataSet(list); + setModalVis(true); + sectionCountSet(sectionCount + 1); + // readOnlySet(check); + checkSectionNameSet(res.data.sectionName); + + }; //删除 const del = async (fields: any) => { @@ -342,6 +382,7 @@ const JudgingPanel: React.FC<{}> = () => { endTime: updateData != undefined ? updateData.reserveStatus == 1 ? moment(updateData.elecEvalRoomReserve.reserveEndDate, 'yyyy-MM-DD HH:mm:ss') : moment(updateData.endTime, 'yyyy-MM-DD HH:mm:ss') : null, evalLocation: updateData != undefined ? updateData.reserveStatus == 1 ? updateData.elecEvalRoomReserve.areaAddress : updateData.evalLocation : null, description: updateData != undefined ? updateData.description : null, + extractSpecialityList: updateData != undefined ? updateData.extractSpecialityList : null, }) }, [updateData]); @@ -360,6 +401,9 @@ const JudgingPanel: React.FC<{}> = () => { onCancel={() => { setModalVis(false); updateDataSet({}); + setTableData([]); + setCheckedList([]); + form.resetFields(); }} > {tab1()} @@ -440,10 +484,12 @@ const JudgingPanel: React.FC<{}> = () => { message.error("所选标段评标委员会人数不一致"); return; } + console.log("checkedList", checkedList); const juryNumber = parseInt(uniqueJuryNumbers[0]) || 0; const repNumber = parseInt(form.getFieldValue('representativeNumber')) || 0; + console.log(juryNumber, repNumber); if (repNumber < 0 || repNumber > juryNumber) { message.error(`直接录入数量应在 0 ~ ${juryNumber} 之间`); form.setFieldsValue({ representativeNumber: undefined, expertNumber: undefined }); @@ -451,6 +497,7 @@ const JudgingPanel: React.FC<{}> = () => { } const expertNumber = Math.max(0, juryNumber - repNumber); + (expertNumber === 0) && setTableData([]); form.getFieldValue('representativeNumber') && form.setFieldsValue({ expertNumber }); }; @@ -458,8 +505,6 @@ const JudgingPanel: React.FC<{}> = () => { useEffect(() => { calculateExpertNumber(); }, [form.getFieldValue('representativeNumber'), checkedList]); - const expertNumber = form.getFieldValue('expertNumber'); - const shouldShowTable = expertNumber !== null && expertNumber !== undefined && Number(expertNumber) > 0; const tab1 = () => {//cqtab1 return ( <> @@ -583,7 +628,7 @@ const JudgingPanel: React.FC<{}> = () => { = () => { rowKey="uid" toolBarRender={false} columns={professColumns} + dataSource={tableData} recordCreatorProps={{ newRecordType: 'dataSource', hidden: disabled, @@ -641,7 +687,6 @@ const JudgingPanel: React.FC<{}> = () => { setEditableRowKeys(keys); }, onValuesChange: (record, recordList) => { - console.log("", recordList) setTableData(recordList); }, actionRender: (row, _, dom) => { @@ -720,12 +765,23 @@ const JudgingPanel: React.FC<{}> = () => { specNum += Number(item?.extractNumber); } } + console.log("expertNumber", schemaData?.expertNumber, "specNum", specNum); if (Number(schemaData?.expertNumber) !== specNum) { res = false; message.error("抽取专业人数与专家需求人数不符!"); } return res; } + const checkSpecialityUnique = () => { + let res = true; + const specialityIds = tableData.map(item => item.specialityId).filter(Boolean); + const unique = [...new Set(specialityIds)]; + if (specialityIds.length !== unique.length) { + res = false; + message.error('抽取专业名称不可重复选择'); + } + return res; + }; const idToNameMap = Object.entries(professionalMap || {}).reduce((acc, [id, option]) => { acc[id] = option.text; return acc; @@ -750,6 +806,9 @@ const JudgingPanel: React.FC<{}> = () => {