import React, { useState, useEffect } from 'react'; import { Form, Input, Select, DatePicker, Row, Col, Card } from 'antd'; import moment from 'moment'; import CategorySelector from '@/components/CategorySelector'; import styles from '../supplierTaskManageAdd.less'; const { Option } = Select; interface BasicInfoStepProps { formData: any; onFormDataChange: (data: any) => void; } interface TemplateItem { id: string; templateName: string; isUnlimitedCategory?: boolean; } const BasicInfoStep: React.FC = ({ formData, onFormDataChange }) => { const [form] = Form.useForm(); const [templates, setTemplates] = useState([]); const [categoryTemplates, setCategoryTemplates] = useState([]); const [selectedCategoryId, setSelectedCategoryId] = useState(undefined); // 获取评价模板和初始化表单数据 useEffect(() => { // 模拟API调用获取模板列表 const mockTemplates = [ { id: '1', templateName: '不限品类', isUnlimitedCategory: true }, { id: '2', templateName: '按品类', isUnlimitedCategory: false }, ]; setTemplates(mockTemplates); // 初始化表单数据 if (formData) { const initialValues = { ...formData, evaluateStartTime: formData.evaluateStartTime ? moment(formData.evaluateStartTime) : undefined, evaluateEndTime: formData.evaluateEndTime ? moment(formData.evaluateEndTime) : undefined, }; form.setFieldsValue(initialValues); // 设置已选品类 if (formData.categoryId) { setSelectedCategoryId(formData.categoryId); } } }, []); // 获取品类对应的模板数据 useEffect(() => { if (selectedCategoryId) { // 模拟API调用,根据品类ID获取对应的模板列表 const mockCategoryTemplates = [ { id: 'ct1', templateName: '硬件设备评价模板' }, { id: 'ct2', templateName: '备件评价模板' }, { id: 'ct3', templateName: '通用备件评价模板' }, ]; setCategoryTemplates(mockCategoryTemplates); } else { setCategoryTemplates([]); } }, [selectedCategoryId]); // 检查当前选择的模板是否限制品类 const isTemplateUnlimitedCategory = () => { const templateId = form.getFieldValue('templateId'); const currentTemplate = templates.find(t => t.id === templateId); return currentTemplate?.isUnlimitedCategory; }; // 表单值变化时触发 const handleValuesChange = (changedValues: any, allValues: any) => { // 处理模板变更 if (changedValues.templateId) { // 如果选择了不限品类的模板,清空品类选择和品类模板选择 if (isTemplateUnlimitedCategory()) { form.setFieldsValue({ categoryId: undefined, categoryTemplateId: undefined }); setSelectedCategoryId(undefined); } } // 处理品类变更 if (changedValues.categoryId) { setSelectedCategoryId(changedValues.categoryId?.[0]); form.setFieldsValue({ categoryTemplateId: undefined }); } // 将moment对象转换为字符串再传递 const formattedValues = { ...allValues, evaluateStartTime: allValues.evaluateStartTime?.format('YYYY-MM-DD'), evaluateEndTime: allValues.evaluateEndTime?.format('YYYY-MM-DD'), }; onFormDataChange(formattedValues); }; // 年度选项生成 const yearOptions = () => { const currentYear = new Date().getFullYear(); return Array.from({ length: 11 }, (_, i) => currentYear - 5 + i).map(year => ( )); }; // 判断是否显示品类选择器 const shouldShowCategorySelector = () => { const templateId = form.getFieldValue('templateId'); if (!templateId) return false; const currentTemplate = templates.find(t => t.id === templateId); return currentTemplate && !currentTemplate.isUnlimitedCategory; }; return (
{shouldShowCategorySelector() && ( { const categoryId = values?.[0]; setSelectedCategoryId(categoryId); if (!categoryId) { form.setFieldsValue({ categoryTemplateId: undefined }); } }} /> )}
); }; export default BasicInfoStep;