diff --git a/src/pages/supplier/admission/admissionManagement/components/CreateModal.tsx b/src/pages/supplier/admission/admissionManagement/components/CreateModal.tsx index 4e0fbbd..aa865b9 100644 --- a/src/pages/supplier/admission/admissionManagement/components/CreateModal.tsx +++ b/src/pages/supplier/admission/admissionManagement/components/CreateModal.tsx @@ -509,6 +509,14 @@ const CreateModal: React.FC<{ visible: boolean; onCancel: () => void; }> = ({ vi setSelectedSuppliers(selected); form.setFieldsValue({ supplier: selected }); setSupplierModalVisible(false); + const accessWorkName = form.getFieldValue('accessWorkName'); + if(!accessWorkName) { + if(selected.length > 0 ) { + console.log(selected,'accessWorkName'); + const suppliersName = `${selected[0].supplierType === 'ovs'? selected[0].nameEn:selected[0].name}${selected.length > 1? '等':'' }` + form.setFieldsValue({ 'accessWorkName': suppliersName }); + } + } }} /> {/* 评审人员选择 */} diff --git a/src/pages/supplier/admission/admissionManagement/components/DivisionModal.tsx b/src/pages/supplier/admission/admissionManagement/components/DivisionModal.tsx index 24a3525..9b91b77 100644 --- a/src/pages/supplier/admission/admissionManagement/components/DivisionModal.tsx +++ b/src/pages/supplier/admission/admissionManagement/components/DivisionModal.tsx @@ -23,6 +23,7 @@ type ReviewerChecks = { type DivisionRow = { key: string; itemName: string; + deleteType: Boolean; reviewerChecks: ReviewerChecks; }; //列表头接口 @@ -44,10 +45,17 @@ const DivisionModal: React.FC<{ r => reviewerSelector.leader && r.userId !== reviewerSelector.leader.userId ), [reviewerSelector] ); - + //列表数据渲染 -默认第一条 const [data, setData] = useState([ - { key: '1', itemName: '合规检查', reviewerChecks: {} }, + { key: '1', itemName: '供应商信息登记表', reviewerChecks: {}, deleteType: false }, + { key: '2', itemName: '供应商反商业贿赂承诺书', reviewerChecks: {}, deleteType: false }, + { key: '3', itemName: '供应商社会准则符合性自审问卷', reviewerChecks: {}, deleteType: false }, + { key: '4', itemName: '是否为禁止使用供应商', reviewerChecks: {}, deleteType: false }, + { key: '5', itemName: '3年内在经营活动中没有重大违法记录的书面声明', reviewerChecks: {}, deleteType: false }, + { key: '6', itemName: '企业存续状态审核(营业执照等)', reviewerChecks: {}, deleteType: false }, + { key: '7', itemName: '行业资质、认证情况(按需)', reviewerChecks: {}, deleteType: false }, + { key: '8', itemName: '现场考察、产品试用情况(按需)', reviewerChecks: {}, deleteType: false }, ]); // 评审项 选择 @@ -67,6 +75,7 @@ const DivisionModal: React.FC<{ })); setData(newData); }; + //列表头 const columns: ColumnsType = [ { @@ -74,16 +83,23 @@ const DivisionModal: React.FC<{ dataIndex: 'itemName', fixed: 'left', width: 360, - render: (text: string, record: any, index: number) => ( - { - const newData = [...data]; - newData[index].itemName = e.target.value; - setData(newData); - }} - /> - ), + render: (text: string, record: any, index: number) => { + return ( + record.deleteType ? ( + { + const newData = [...data]; + newData[index].itemName = e.target.value; + setData(newData); + }} + /> + ) : ( + {text} + ) + ) + } }, ...nonLeaderReviewers.map(r => ({ title: ( @@ -92,7 +108,7 @@ const DivisionModal: React.FC<{ checked={data.every(row => row.reviewerChecks?.[r.userId])} >{r.name} ), - width: 140, + width: 120, dataIndex: r.userId, render: (val: any, record: any, rowIndex: number) => ( ( - - ), + width: 80, + render: (text: any, record: any, index: number) => { + const deleteType = record.deleteType; + return ( + deleteType ? ( + + ) : null + ) + }, }, ]; + const totalWidth = columns.reduce((sum, col) => { + // 只用 number 类型的宽度 + const w = typeof col.width === 'number' ? col.width : 120; + return sum + w; + }, 0); + //增加行 const addRow = () => { - const newRow = { key: Date.now().toString(), itemName: '', reviewerChecks: {} }; + const newRow = { key: Date.now().toString(), itemName: '', reviewerChecks: {}, deleteType: true }; setData([...data, newRow]); }; @@ -133,7 +161,9 @@ const DivisionModal: React.FC<{ dataSource={data} rowKey="key" pagination={false} - scroll={{ x: true }} + scroll={{ x: totalWidth, y: 'calc(100vh - 450px)' }} + style={{ flex: 1, minHeight: 0 }} + />
diff --git a/src/pages/supplier/admission/admissionManagement/components/ReviewerSelector.tsx b/src/pages/supplier/admission/admissionManagement/components/ReviewerSelector.tsx index 517bf78..7abcb1d 100644 --- a/src/pages/supplier/admission/admissionManagement/components/ReviewerSelector.tsx +++ b/src/pages/supplier/admission/admissionManagement/components/ReviewerSelector.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect, useMemo } from 'react'; +import React, { useState, useEffect, useRef } from 'react'; import { Modal, Table, Radio, Button, message } from 'antd'; import type { ColumnsType } from 'antd/es/table'; @@ -59,7 +59,7 @@ const ReviewerSelector: React.FC = ({ // 本地已选 & 组长 const [selectedRowKeys, setSelectedRowKeys] = useState([]); const [leaderUserId, setLeaderUserId] = useState(''); - + const [allData, setAllData] = useState([]); // 回显 useEffect(() => { if (visible) { @@ -79,19 +79,19 @@ const ReviewerSelector: React.FC = ({ const { code, data } = res; if(code == 200) { setData(orgIdAndDeptId(data.records)); + setAllData(prevAllData => { + const newData = orgIdAndDeptId(data.records); + const merged = [...prevAllData, ...newData]; + // userId 唯一去重 + return Array.from(new Map(merged.map(item => [item.userId, item])).values()); + }); setTotal(data.total); } }) .finally(() => setLoading(false)); }, [visible, page, pageSize]); - // 当前已选项(全局选中的都能做组长) - // const selectedReviewerObjs = useMemo( - // () => data.filter((item) => selectedRowKeys.includes(item.userId)), - // [data, selectedRowKeys] - // ); - - // 列 + const columns: ColumnsType = [ { title: '姓名', dataIndex: 'name' }, { title: '工号', dataIndex: 'userId' }, @@ -123,13 +123,13 @@ const ReviewerSelector: React.FC = ({ return; } // 组长和其他人员isLeader赋值 - const selected = data + const selected = allData .filter((item) => selectedRowKeys.includes(item.userId)) .map((item) => ({ ...item, isLeader: item.userId === leaderUserId ? 1 : 0, })); - console.log(selected); + console.log(selected,'selected'); // 完整数据传回 onSelect?.({ @@ -153,10 +153,18 @@ const ReviewerSelector: React.FC = ({ type: 'checkbox', selectedRowKeys, onChange: (keys) => { - setSelectedRowKeys(keys); + // 当前页所有userId + const pageUserIds = data.map(item => item.userId); + // 把上一页的、非本页的key留下 + let merged = selectedRowKeys.filter(key => !pageUserIds.includes(key as string)); + // 再加上当前页选中的key + merged = [...merged, ...keys]; + // 去重 + merged = Array.from(new Set(merged)); + setSelectedRowKeys(merged); // 如果组长不在新选中里,清掉 - if (!keys.includes(leaderUserId)) setLeaderUserId(''); - }, + if (!merged.includes(leaderUserId)) setLeaderUserId(''); + } }} columns={columns} dataSource={data}