测试修改问题,国际化
This commit is contained in:
@ -14,9 +14,10 @@ import {
|
||||
Switch,
|
||||
Typography,
|
||||
Spin,
|
||||
Modal,
|
||||
} from 'antd';
|
||||
import { history, useLocation } from 'umi';
|
||||
import { ArrowLeftOutlined, SaveOutlined } from '@ant-design/icons';
|
||||
import { history, useLocation, useIntl } from 'umi';
|
||||
import { ArrowLeftOutlined, SaveOutlined, ExclamationCircleOutlined } from '@ant-design/icons';
|
||||
import EvaluateTemplateTable from '@/components/EvaluateTemplateTable';
|
||||
import CategorySelector from '@/components/CategorySelector';
|
||||
import {
|
||||
@ -36,6 +37,7 @@ import {
|
||||
import styles from './supplierTemplateManage.less';
|
||||
|
||||
const { Option } = Select;
|
||||
const { confirm } = Modal;
|
||||
|
||||
interface LocationState {
|
||||
isEdit?: boolean;
|
||||
@ -45,11 +47,12 @@ interface LocationState {
|
||||
const { Title } = Typography;
|
||||
|
||||
const SupplierTemplateManageAdd: React.FC = () => {
|
||||
const intl = useIntl();
|
||||
const [form] = Form.useForm();
|
||||
const [loading, setLoading] = useState<boolean>(false);
|
||||
const [templateData, setTemplateData] = useState<any[]>([]);
|
||||
const [isEdit, setIsEdit] = useState<boolean>(false);
|
||||
const [templateDetail, setTemplateDetail] = useState<SupplierEvaluate.TemplateDetail | null>(null);
|
||||
const [templateDetail, setTemplateDetail] = useState<SupplierEvaluate.TemplateDetail>();
|
||||
const [templateList, setTemplateList] = useState<SupplierEvaluate.TemplateItem[]>([]);
|
||||
|
||||
// 添加控制开关的状态
|
||||
@ -66,11 +69,11 @@ const SupplierTemplateManageAdd: React.FC = () => {
|
||||
if (res.success && res.data) {
|
||||
setTemplateList(res.data);
|
||||
} else {
|
||||
message.error(res.message || '获取模板列表失败');
|
||||
message.error(intl.formatMessage({ id: 'supplierTemplateManage.message.getTemplateListFailed' }) || res.message);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取模板列表失败:', error);
|
||||
message.error('获取模板列表失败');
|
||||
message.error(intl.formatMessage({ id: 'supplierTemplateManage.message.getTemplateListFailed' }));
|
||||
}
|
||||
};
|
||||
|
||||
@ -80,7 +83,7 @@ const SupplierTemplateManageAdd: React.FC = () => {
|
||||
setLoading(true);
|
||||
const res = await getTemplateDetail(templateId);
|
||||
if (res.success && res.data) {
|
||||
setTemplateDetail(res.data);
|
||||
setTemplateDetail(res.data as any);
|
||||
|
||||
// 设置表单数据
|
||||
form.setFieldsValue({
|
||||
@ -98,11 +101,11 @@ const SupplierTemplateManageAdd: React.FC = () => {
|
||||
setTemplateData(res.data.indicatorStList);
|
||||
}
|
||||
} else {
|
||||
message.error(res.message || '获取模板详情失败');
|
||||
message.error(intl.formatMessage({ id: 'supplierTemplateManage.message.getDetailFailed' }) || res.message);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取模板详情失败:', error);
|
||||
message.error('获取模板详情失败');
|
||||
message.error(intl.formatMessage({ id: 'supplierTemplateManage.message.getDetailFailed' }));
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
@ -129,29 +132,21 @@ const SupplierTemplateManageAdd: React.FC = () => {
|
||||
history.goBack();
|
||||
};
|
||||
|
||||
// 处理表单提交
|
||||
const handleSubmit = async (values: any) => {
|
||||
// 验证指标数据
|
||||
if (!templateData || templateData.length === 0) {
|
||||
message.error('请添加评价指标数据');
|
||||
return;
|
||||
}
|
||||
|
||||
// 查找选择的模板,获取其templateType
|
||||
const selectedTemplate = templateList.find(template => template.id === values.copyTemplateId);
|
||||
|
||||
// 提交数据的函数
|
||||
const handleDataSubmit = async (values: any) => {
|
||||
// 准备提交数据
|
||||
const submitData: any = {
|
||||
const selectedTemplate = templateList.find(template => template.id === values.copyTemplateId);
|
||||
const dataToSubmit: any = {
|
||||
...values,
|
||||
templateType: selectedTemplate?.templateType || '', // 添加templateType
|
||||
indicatorStList: templateData, // 直接使用模板数据,无需转换
|
||||
indicatorTypeMore: IndicatorAddOption.CAN_ADD, // 默认可以增加对应指标类型
|
||||
status: parseInt(values.status, 10) // 确保status是数字类型
|
||||
templateType: selectedTemplate?.templateType || '',
|
||||
indicatorStList: templateData,
|
||||
indicatorTypeMore: IndicatorAddOption.CAN_ADD,
|
||||
status: parseInt(values.status, 10)
|
||||
};
|
||||
|
||||
// 如果是编辑模式,添加ID
|
||||
if (isEdit && templateDetail) {
|
||||
submitData.id = templateDetail.id;
|
||||
dataToSubmit.id = templateDetail.id;
|
||||
}
|
||||
|
||||
setLoading(true);
|
||||
@ -159,26 +154,57 @@ const SupplierTemplateManageAdd: React.FC = () => {
|
||||
// 调用API接口
|
||||
let res;
|
||||
if (isEdit) {
|
||||
res = await updateTemplate(submitData);
|
||||
res = await updateTemplate(dataToSubmit);
|
||||
} else {
|
||||
// 使用addTemplate函数,这是原始的API接口
|
||||
res = await addTemplate(submitData);
|
||||
res = await addTemplate(dataToSubmit);
|
||||
}
|
||||
|
||||
if (res.success) {
|
||||
message.success(isEdit ? '模板更新成功' : '模板保存成功');
|
||||
message.success(isEdit
|
||||
? intl.formatMessage({ id: 'supplierTemplateManage.message.updateSuccess' })
|
||||
: intl.formatMessage({ id: 'supplierTemplateManage.message.saveSuccess' })
|
||||
);
|
||||
history.goBack();
|
||||
} else {
|
||||
message.error(res.message || (isEdit ? '模板更新失败' : '模板保存失败'));
|
||||
message.error(res.message || (isEdit
|
||||
? intl.formatMessage({ id: 'supplierTemplateManage.message.updateFailed' })
|
||||
: intl.formatMessage({ id: 'supplierTemplateManage.message.saveFailed' })
|
||||
));
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('提交失败:', error);
|
||||
message.error('提交失败');
|
||||
message.error(intl.formatMessage({ id: 'supplierTemplateManage.message.submitFailed' }));
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
// 处理表单提交
|
||||
const handleSubmit = (values: any) => {
|
||||
// 验证指标数据
|
||||
if (!templateData || templateData.length === 0) {
|
||||
message.error(intl.formatMessage({ id: 'supplierTemplateManage.message.addIndicator' }));
|
||||
return;
|
||||
}
|
||||
|
||||
// 显示确认对话框
|
||||
confirm({
|
||||
title: isEdit
|
||||
? intl.formatMessage({ id: 'supplierTemplateManage.confirm.update.title' })
|
||||
: intl.formatMessage({ id: 'supplierTemplateManage.confirm.save.title' }),
|
||||
icon: <ExclamationCircleOutlined />,
|
||||
content: isEdit
|
||||
? intl.formatMessage({ id: 'supplierTemplateManage.confirm.update.content' })
|
||||
: intl.formatMessage({ id: 'supplierTemplateManage.confirm.save.content' }),
|
||||
okText: intl.formatMessage({ id: 'supplierTemplateManage.confirm.ok' }),
|
||||
cancelText: intl.formatMessage({ id: 'supplierTemplateManage.confirm.cancel' }),
|
||||
onOk() {
|
||||
// 用户点击确认,执行提交操作
|
||||
handleDataSubmit(values);
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
// 处理指标数据变更
|
||||
const handleTemplateDataChange = (data: any[]) => {
|
||||
setTemplateData(data);
|
||||
@ -225,11 +251,11 @@ const SupplierTemplateManageAdd: React.FC = () => {
|
||||
setTemplateData(copiedIndicatorStList);
|
||||
}
|
||||
} else {
|
||||
message.error(res.message || '获取模板详情失败');
|
||||
message.error(intl.formatMessage({ id: 'supplierTemplateManage.message.getDetailFailed' }) || res.message);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取模板详情失败:', error);
|
||||
message.error('获取模板详情失败');
|
||||
message.error(intl.formatMessage({ id: 'supplierTemplateManage.message.getDetailFailed' }));
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
@ -240,10 +266,13 @@ const SupplierTemplateManageAdd: React.FC = () => {
|
||||
<div className="common-container">
|
||||
<div className={styles.pageHeader}>
|
||||
<Title level={4} style={{ margin: 0 }}>
|
||||
{isEdit ? '编辑评价模板' : '新增评价模板'}
|
||||
{isEdit
|
||||
? intl.formatMessage({ id: 'supplierTemplateManage.edit.title' })
|
||||
: intl.formatMessage({ id: 'supplierTemplateManage.add.title' })
|
||||
}
|
||||
</Title>
|
||||
<Button type="link" icon={<ArrowLeftOutlined />} onClick={handleBack}>
|
||||
返回
|
||||
{intl.formatMessage({ id: 'supplierTemplateManage.button.back' })}
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
@ -260,22 +289,22 @@ const SupplierTemplateManageAdd: React.FC = () => {
|
||||
wrapperCol={{ span: 17 }}
|
||||
>
|
||||
<Spin spinning={loading}>
|
||||
<Card title="基础信息" bordered={false} className={styles.innerCard}>
|
||||
<Card title={intl.formatMessage({ id: 'supplierTemplateManage.card.basicInfo' })} bordered={false} className={styles.innerCard}>
|
||||
<Row gutter={24}>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label="模板名称"
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.templateName' })}
|
||||
name="templateName"
|
||||
rules={[{ required: true, message: '请输入模板名称' }]}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'supplierTemplateManage.rule.templateName' }) }]}
|
||||
>
|
||||
<Input placeholder="请输入模板名称" maxLength={50} />
|
||||
<Input placeholder={intl.formatMessage({ id: 'supplierTemplateManage.placeholder.templateName' })} maxLength={50} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label="是否限品类"
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.categoryLimitation' })}
|
||||
name="categoryLimitation"
|
||||
rules={[{ required: true, message: '请选择是否限品类' }]}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'supplierTemplateManage.rule.categoryLimitation' }) }]}
|
||||
>
|
||||
<Radio.Group>
|
||||
<Radio value={CategoryLimitationType.UNIVERSAL}>{CategoryLimitationTypeText[CategoryLimitationType.UNIVERSAL]}</Radio>
|
||||
@ -294,9 +323,9 @@ const SupplierTemplateManageAdd: React.FC = () => {
|
||||
const categoryLimitation = getFieldValue('categoryLimitation');
|
||||
return categoryLimitation === CategoryLimitationType.LIMITED ? (
|
||||
<Form.Item
|
||||
label="选择品类"
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.selectCategory' })}
|
||||
name="categoryId"
|
||||
rules={[{ required: true, message: '请选择品类' }]}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'supplierTemplateManage.rule.category' }) }]}
|
||||
>
|
||||
<CategorySelector value={categoryLimitation} multiple={false} />
|
||||
</Form.Item>
|
||||
@ -309,11 +338,11 @@ const SupplierTemplateManageAdd: React.FC = () => {
|
||||
<Row gutter={24}>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label="选择模版"
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.selectTemplate' })}
|
||||
name="copyTemplateId"
|
||||
>
|
||||
<Select
|
||||
placeholder="选择模版"
|
||||
placeholder={intl.formatMessage({ id: 'supplierTemplateManage.form.selectTemplate' })}
|
||||
loading={templateList.length === 0}
|
||||
onSelect={handleTemplateSelect}
|
||||
>
|
||||
@ -329,9 +358,9 @@ const SupplierTemplateManageAdd: React.FC = () => {
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label="是否启用"
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.status' })}
|
||||
name="status"
|
||||
rules={[{ required: true, message: '请选择是否启用' }]}
|
||||
rules={[{ required: true, message: intl.formatMessage({ id: 'supplierTemplateManage.rule.status' }, { defaultMessage: '请选择是否启用' }) }]}
|
||||
>
|
||||
<Radio.Group>
|
||||
<Radio value={TemplateStatus.DRAFT}>{TemplateStatusText[TemplateStatus.DRAFT]}</Radio>
|
||||
@ -345,7 +374,7 @@ const SupplierTemplateManageAdd: React.FC = () => {
|
||||
<Row gutter={24}>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label="是否可添加一级指标"
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.indicatorStMore' })}
|
||||
name="indicatorStMore"
|
||||
valuePropName="checked"
|
||||
getValueProps={(value) => ({ checked: value === IndicatorAddOption.CAN_ADD })}
|
||||
@ -358,7 +387,7 @@ const SupplierTemplateManageAdd: React.FC = () => {
|
||||
</Col>
|
||||
<Col span={8}>
|
||||
<Form.Item
|
||||
label="是否可添加二级指标"
|
||||
label={intl.formatMessage({ id: 'supplierTemplateManage.form.indicatorNdMore' })}
|
||||
name="indicatorNdMore"
|
||||
valuePropName="checked"
|
||||
getValueProps={(value) => ({ checked: value === IndicatorAddOption.CAN_ADD })}
|
||||
@ -374,7 +403,7 @@ const SupplierTemplateManageAdd: React.FC = () => {
|
||||
|
||||
<Divider />
|
||||
|
||||
<Card title="指标信息" bordered={false} className={styles.innerCard}>
|
||||
<Card title={intl.formatMessage({ id: 'supplierTemplateManage.card.indicatorInfo' })} bordered={false} className={styles.innerCard}>
|
||||
<EvaluateTemplateTable
|
||||
onChange={handleTemplateDataChange}
|
||||
value={templateData}
|
||||
@ -384,9 +413,14 @@ const SupplierTemplateManageAdd: React.FC = () => {
|
||||
|
||||
<div className={styles.formActions}>
|
||||
<Space>
|
||||
<Button onClick={handleBack}>取消</Button>
|
||||
<Button onClick={handleBack}>
|
||||
{intl.formatMessage({ id: 'supplierTemplateManage.button.cancel' })}
|
||||
</Button>
|
||||
<Button type="primary" htmlType="submit" loading={loading} icon={<SaveOutlined />}>
|
||||
{isEdit ? '更新' : '保存'}
|
||||
{isEdit
|
||||
? intl.formatMessage({ id: 'supplierTemplateManage.button.update' })
|
||||
: intl.formatMessage({ id: 'supplierTemplateManage.button.save' })
|
||||
}
|
||||
</Button>
|
||||
</Space>
|
||||
</div>
|
||||
|
Reference in New Issue
Block a user