Files
fe_supplier_frontend/src/pages/supplierEvaluateManage/supplierTaskManage/components/SupplierSelectStep.tsx

72 lines
2.3 KiB
TypeScript
Raw Normal View History

import React, { forwardRef, useImperativeHandle } from 'react';
import { Card, Form } from 'antd';
2025-06-23 19:15:13 +08:00
import styles from '../supplierTaskManageAdd.less';
import SupplierSelector from '@/components/SupplierSelector';
2025-06-23 19:15:13 +08:00
interface SupplierSelectStepProps {
2025-06-24 18:58:43 +08:00
formData: any; // 从父组件传递的表单数据
onFormDataChange: (data: any) => void; // 表单数据变更的回调函数
2025-06-23 19:15:13 +08:00
}
interface SupplierItem {
2025-06-24 18:58:43 +08:00
id: string; // 供应商ID
name: string; // 供应商名称
supplierType: string; // 供应商类型
[key: string]: any; // 其他可能的字段
2025-06-23 19:15:13 +08:00
}
2025-06-23 21:39:51 +08:00
const SupplierSelectStep = forwardRef<any, SupplierSelectStepProps>(({ formData, onFormDataChange }, ref) => {
// 暴露表单方法给父组件
useImperativeHandle(ref, () => ({
validateFields: () => {
// 这里可以添加自定义验证逻辑
return Promise.resolve();
},
getFieldsValue: () => {
return {
selectedSuppliers: formData.selectedSuppliers || [],
supplierIds: (formData.selectedSuppliers || []).map((supplier: SupplierItem) => ({ id: supplier.id }))
2025-06-23 21:39:51 +08:00
};
},
setFieldsValue: (values: any) => {
if (values.selectedSuppliers) {
onFormDataChange({
...formData,
selectedSuppliers: values.selectedSuppliers
});
2025-06-23 21:39:51 +08:00
}
},
}));
// 处理供应商选择
const handleSupplierSelect = (suppliers: SupplierItem[]) => {
2025-06-24 18:58:43 +08:00
// 确保每个供应商都有evaluators字段
const suppliersWithEvaluators = suppliers.map(supplier => ({
...supplier,
evaluators: supplier.evaluators || [], // 确保evaluators字段存在即使是空数组
evaluatorCount: supplier.evaluators?.length || 0 // 计算评价人员数量
}));
2025-06-23 21:39:51 +08:00
onFormDataChange({
...formData,
2025-06-24 18:58:43 +08:00
selectedSuppliers: suppliersWithEvaluators,
supplierIds: suppliersWithEvaluators.map(supplier => ({ id: supplier.id }))
2025-06-23 21:39:51 +08:00
});
2025-06-23 19:15:13 +08:00
};
return (
<div className={styles.supplierSelectStep}>
<Card title="供应商选择" bordered={false} className="inner-card">
<SupplierSelector
onSelect={handleSupplierSelect}
selectedSuppliers={formData.selectedSuppliers || []}
/>
2025-06-23 19:15:13 +08:00
</Card>
</div>
);
2025-06-23 21:39:51 +08:00
});
2025-06-23 19:15:13 +08:00
export default SupplierSelectStep;