准入供应商以及名称联动

This commit is contained in:
孙景学
2025-07-16 16:42:42 +08:00
parent 1fcc0e7d44
commit 815063254a
3 changed files with 21 additions and 32 deletions

View File

@ -1,17 +1,16 @@
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { Modal, Form, Select, Button, Tree, message, DatePicker, Radio, Upload, Input } from 'antd'; import { Modal, Form, Button, Tree, message, DatePicker, Radio, Upload, Input } from 'antd';
import { UploadOutlined } from '@ant-design/icons'; import { UploadOutlined } from '@ant-design/icons';
import type { UploadFile } from 'antd/es/upload/interface'; import type { UploadFile } from 'antd/es/upload/interface';
//组件 //组件
import SupplierSelector from './SupplierSelector'; import SupplierSelector from './SupplierSelector';
import ReviewerSelector from './ReviewerSelector'; import ReviewerSelector from './ReviewerSelector';
import DivisionModal from './DivisionModal'; import DivisionModal from './DivisionModal';
import AccessDepartmentSelect from '@/components/AccessDepartmentSelect';
// 请求 // 请求
import { categoryTree, add, uploadFile } from '../services'; import { categoryTree, add, uploadFile } from '../services';
import AccessDepartmentSelect from '@/components/AccessDepartmentSelect';
const { Option } = Select;
const { RangePicker } = DatePicker; const { RangePicker } = DatePicker;
//selected 类型 //selected 类型
interface Reviewer { interface Reviewer {
@ -30,17 +29,15 @@ interface ReviewerSelectorData {
const CreateModal: React.FC<{ visible: boolean; onCancel: () => void; }> = ({ visible, onCancel }) => { const CreateModal: React.FC<{ visible: boolean; onCancel: () => void; }> = ({ visible, onCancel }) => {
const [form] = Form.useForm(); const [form] = Form.useForm();
//名称输入
const [accessWorkNameEdited, setAccessWorkNameEdited] = useState(false);
//品类选择 //品类选择
const [checkedKeys, setCheckedKeys] = useState<React.Key[]>([]); const [checkedKeys, setCheckedKeys] = useState<React.Key[]>([]);
//供应商
const [selectedSuppliers, setSelectedSuppliers] = useState<any[]>([]);
// 选择评审人员 // 选择评审人员
const [selectedReviewers, setSelectedReviewers] = useState<ReviewerSelectorData>({ const [selectedReviewers, setSelectedReviewers] = useState<ReviewerSelectorData>({
selected: [], selected: [],
leader: null, leader: null,
}); });
//评审分工
const [divisionData, setDivisionData] = useState<any[]>([]);
//准入方式 //准入方式
const [admissionMethod, setAdmissionMethod] = useState<string>('online'); const [admissionMethod, setAdmissionMethod] = useState<string>('online');
//供应商符合性审查 //供应商符合性审查
@ -91,8 +88,6 @@ const CreateModal: React.FC<{ visible: boolean; onCancel: () => void; }> = ({ vi
setCheckedKeys(keys); // UI 显示用,还是全量 setCheckedKeys(keys); // UI 显示用,还是全量
form.setFieldsValue({ categoryIds: onlyLeafChecked }); // 只存叶子到表单 form.setFieldsValue({ categoryIds: onlyLeafChecked }); // 只存叶子到表单
// setCheckedKeys(keys);
// form.setFieldsValue({ categoryIds: keys });
}; };
// 选择准入方式 // 选择准入方式
const onMethodChange = (e: any) => { const onMethodChange = (e: any) => {
@ -108,7 +103,6 @@ const CreateModal: React.FC<{ visible: boolean; onCancel: () => void; }> = ({ vi
supplierCompliance: undefined, supplierCompliance: undefined,
}); });
setSelectedReviewers({ selected: [], leader: null, }); setSelectedReviewers({ selected: [], leader: null, });
setDivisionData([]);
} }
}; };
@ -219,9 +213,7 @@ const CreateModal: React.FC<{ visible: boolean; onCancel: () => void; }> = ({ vi
message.success('创建成功'); message.success('创建成功');
form.resetFields(); form.resetFields();
setCheckedKeys([]); setCheckedKeys([]);
setSelectedSuppliers([]);
setSelectedReviewers({ selected: [], leader: null, }); setSelectedReviewers({ selected: [], leader: null, });
setDivisionData([]);
setAdmissionMethod('online'); setAdmissionMethod('online');
onCancel(); onCancel();
} else { } else {
@ -230,16 +222,13 @@ const CreateModal: React.FC<{ visible: boolean; onCancel: () => void; }> = ({ vi
}; };
//初始化 //初始化
useEffect(() => { useEffect(() => {
if(visible) { if (visible) {
categoryTree().then((res) => { categoryTree().then((res) => {
const { code, data } = res; const { code, data } = res;
if (code == 200) { if (code == 200) {
setCategoriesTreeData(data) setCategoriesTreeData(data)
} }
}) })
form.setFieldsValue({ method: 'online' }); form.setFieldsValue({ method: 'online' });
} }
}, [visible, form]); }, [visible, form]);
@ -251,9 +240,7 @@ const CreateModal: React.FC<{ visible: boolean; onCancel: () => void; }> = ({ vi
onCancel={() => { onCancel={() => {
form.resetFields(); form.resetFields();
setCheckedKeys([]); setCheckedKeys([]);
setSelectedSuppliers([]);
setSelectedReviewers({ selected: [], leader: null, }); setSelectedReviewers({ selected: [], leader: null, });
setDivisionData([]);
setAdmissionMethod('online'); setAdmissionMethod('online');
onCancel(); onCancel();
}} }}
@ -272,14 +259,21 @@ const CreateModal: React.FC<{ visible: boolean; onCancel: () => void; }> = ({ vi
name="accessWorkName" name="accessWorkName"
rules={[{ required: true, message: '请输入标题名称' }]} rules={[{ required: true, message: '请输入标题名称' }]}
> >
<Input placeholder="请输入标题名称" allowClear /> <Input placeholder="请输入标题名称" allowClear
onChange={e => {
if (e.target.value) {
setAccessWorkNameEdited(true);
} else {
setAccessWorkNameEdited(false);
}
}} />
</Form.Item> </Form.Item>
<Form.Item <Form.Item
label="准入部门" label="准入部门"
name="deptId" name="deptId"
rules={[{ required: true, message: '请选择准入部门' }]} rules={[{ required: true, message: '请选择准入部门' }]}
> >
<AccessDepartmentSelect /> <AccessDepartmentSelect />
</Form.Item> </Form.Item>
<Form.Item <Form.Item
@ -491,9 +485,7 @@ const CreateModal: React.FC<{ visible: boolean; onCancel: () => void; }> = ({ vi
onClick={() => { onClick={() => {
form.resetFields(); form.resetFields();
setCheckedKeys([]); setCheckedKeys([]);
setSelectedSuppliers([]);
setSelectedReviewers({ selected: [], leader: null, }); setSelectedReviewers({ selected: [], leader: null, });
setDivisionData([]);
setAdmissionMethod('online'); setAdmissionMethod('online');
}} }}
> >
@ -506,15 +498,15 @@ const CreateModal: React.FC<{ visible: boolean; onCancel: () => void; }> = ({ vi
visible={supplierModalVisible} visible={supplierModalVisible}
onCancel={() => setSupplierModalVisible(false)} onCancel={() => setSupplierModalVisible(false)}
onSelect={(selected) => { onSelect={(selected) => {
setSelectedSuppliers(selected);
form.setFieldsValue({ supplier: selected }); form.setFieldsValue({ supplier: selected });
setSupplierModalVisible(false); setSupplierModalVisible(false);
const accessWorkName = form.getFieldValue('accessWorkName'); if (!accessWorkNameEdited) {
if(!accessWorkName) { if (selected.length > 0) {
if(selected.length > 0 ) { console.log(selected, 'accessWorkName');
console.log(selected,'accessWorkName'); const suppliersName = `${selected[0].supplierType === 'ovs' ? selected[0].nameEn : selected[0].name}${selected.length > 1 ? '等' : ''}`
const suppliersName = `${selected[0].supplierType === 'ovs'? selected[0].nameEn:selected[0].name}${selected.length > 1? '等':'' }`
form.setFieldsValue({ 'accessWorkName': suppliersName }); form.setFieldsValue({ 'accessWorkName': suppliersName });
} else {
form.setFieldsValue({ 'accessWorkName': '' });
} }
} }
}} }}
@ -537,7 +529,6 @@ const CreateModal: React.FC<{ visible: boolean; onCancel: () => void; }> = ({ vi
visible={divisionModalVisible} visible={divisionModalVisible}
onCancel={() => setDivisionModalVisible(false)} onCancel={() => setDivisionModalVisible(false)}
onSelect={(data) => { onSelect={(data) => {
setDivisionData(data);
form.setFieldsValue({ division: data }); form.setFieldsValue({ division: data });
setDivisionModalVisible(false); setDivisionModalVisible(false);
}} }}

View File

@ -1,4 +1,4 @@
import React, { useState, useEffect, useRef } from 'react'; import React, { useState, useEffect } from 'react';
import { Modal, Table, Radio, Button, message } from 'antd'; import { Modal, Table, Radio, Button, message } from 'antd';
import type { ColumnsType } from 'antd/es/table'; import type { ColumnsType } from 'antd/es/table';

View File

@ -16,8 +16,6 @@ import { getPage, startApprove } from './services'
//统一列表分页 //统一列表分页
import tableProps from '@/utils/tableProps' import tableProps from '@/utils/tableProps'
const { Option } = Select;
interface Data { interface Data {
id: string; id: string;
deptId: string; deptId: string;