准入供应商以及名称联动

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

View File

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