维护国际化

This commit is contained in:
linxd
2025-07-03 10:21:55 +08:00
parent fafb2cda44
commit cf8e9d0820
61 changed files with 2246 additions and 836 deletions

View File

@ -1,5 +1,5 @@
import React, { useState, useEffect } from 'react';
import { history } from 'umi';
import { history, useIntl } from 'umi';
import { Button, Card, Descriptions, Divider, Spin, message, Typography, Empty, Space, Table, Tag } from 'antd';
import { ArrowLeftOutlined } from '@ant-design/icons';
import { getAnnualTemplateDetail } from '@/servers/api/supplierAnnual';
@ -37,6 +37,7 @@ const StarOptionsText = {
};
const SupplierAnnualTemplateManageDetail: React.FC = () => {
const intl = useIntl();
const [loading, setLoading] = useState<boolean>(false);
const [templateDetail, setTemplateDetail] = useState<supplierAnnualTemplateManage.TemplateDetailData | null>(null);
const [indicatorList, setIndicatorList] = useState<supplierAnnualTemplateManage.IndicatorItem[]>([]);
@ -57,11 +58,11 @@ const SupplierAnnualTemplateManageDetail: React.FC = () => {
setIndicatorList(res.data.indicatorList);
}
} else {
message.error(res.message || '获取模板详情失败');
message.error(res.message || intl.formatMessage({ id: 'supplierAnnualTemplateManage.detail.getDetailFailed' }));
}
} catch (error) {
console.error('获取模板详情失败:', error);
message.error('获取模板详情失败');
message.error(intl.formatMessage({ id: 'supplierAnnualTemplateManage.detail.getDetailFailed' }));
} finally {
setLoading(false);
}
@ -72,7 +73,7 @@ const SupplierAnnualTemplateManageDetail: React.FC = () => {
if (id) {
fetchTemplateDetail(id);
} else {
message.error('模板ID不存在无法获取详情');
message.error(intl.formatMessage({ id: 'supplierAnnualTemplateManage.detail.idNotExist' }));
history.goBack();
}
}, [id]);
@ -84,34 +85,34 @@ const SupplierAnnualTemplateManageDetail: React.FC = () => {
// 获取状态标签
const getStatusText = (status: string | undefined) => {
if (!status) return '未知状态';
return AnnualTemplateStatusText[status as keyof typeof AnnualTemplateStatusText] || '未知状态';
if (!status) return intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.unknownStatus' });
return AnnualTemplateStatusText[status as keyof typeof AnnualTemplateStatusText] || intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.unknownStatus' });
};
// 指标表格列定义
const columns = [
{
title: '序号',
title: intl.formatMessage({ id: 'supplierAnnualTemplateManage.list.serialNumber' }),
dataIndex: 'orderBy',
key: 'orderBy',
width: 80,
render: (_: string, __: any, index: number) => index + 1,
},
{
title: '检查项目',
title: intl.formatMessage({ id: 'supplierAnnualTemplateManage.add.checkItem' }),
dataIndex: 'itemName',
key: 'itemName',
},
{
title: '星号项',
title: intl.formatMessage({ id: 'supplierAnnualTemplateManage.add.starItem' }),
dataIndex: 'isStar',
key: 'isStar',
width: 100,
render: (isStar: string) => {
return isStar === StarOptions.YES ? (
<Tag color="warning"></Tag>
<Tag color="warning">{intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.yes' })}</Tag>
) : (
<Tag></Tag>
<Tag>{intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.no' })}</Tag>
);
},
},
@ -122,29 +123,31 @@ const SupplierAnnualTemplateManageDetail: React.FC = () => {
<Card>
<div className={styles['page-header']}>
<Title level={4} style={{ margin: 0 }}>
{intl.formatMessage({ id: 'supplierAnnualTemplateManage.detail.title' })}
</Title>
<Button type="link" icon={<ArrowLeftOutlined />} onClick={handleBack}>
{intl.formatMessage({ id: 'supplierAnnualTemplateManage.add.back' })}
</Button>
</div>
<Spin spinning={loading}>
{templateDetail ? (
<>
<Card title="基本信息" bordered={false} className={styles['detail-card']}>
<Card title={intl.formatMessage({ id: 'supplierAnnualTemplateManage.add.basicInfo' })} bordered={false} className={styles['detail-card']}>
<Descriptions column={2} bordered>
<Descriptions.Item label="模板名称">
<Descriptions.Item label={intl.formatMessage({ id: 'supplierAnnualTemplateManage.list.templateName' })}>
{templateDetail.templateName}
</Descriptions.Item>
<Descriptions.Item label="品类限制">
{CategoryLimitationTypeText[templateDetail.categoryLimitation as keyof typeof CategoryLimitationTypeText] || '未知'}
<Descriptions.Item label={intl.formatMessage({ id: 'supplierAnnualTemplateManage.detail.categoryLimitation' })}>
{templateDetail.categoryLimitation === CategoryLimitationType.UNIVERSAL
? intl.formatMessage({ id: 'supplierAnnualTemplateManage.add.categoryLimitationUniversal' })
: intl.formatMessage({ id: 'supplierAnnualTemplateManage.add.categoryLimitationLimited' })}
</Descriptions.Item>
{templateDetail.categoryLimitation === CategoryLimitationType.LIMITED && (
<Descriptions.Item label="品类">
{templateDetail.categoryName || '未知品类'}
<Descriptions.Item label={intl.formatMessage({ id: 'supplierAnnualTemplateManage.list.category' })}>
{templateDetail.categoryName || intl.formatMessage({ id: 'supplierAnnualTemplateManage.detail.unknownCategory' })}
</Descriptions.Item>
)}
<Descriptions.Item label="状态">
<Descriptions.Item label={intl.formatMessage({ id: 'supplierAnnualTemplateManage.list.status' })}>
<Tag color={AnnualTemplateStatusColor[templateDetail.status as keyof typeof AnnualTemplateStatusColor]} className={styles['status-tag']}>
{getStatusText(templateDetail.status)}
</Tag>
@ -154,7 +157,7 @@ const SupplierAnnualTemplateManageDetail: React.FC = () => {
<Divider />
<Card title="指标信息" bordered={false} className={styles['detail-card']}>
<Card title={intl.formatMessage({ id: 'supplierAnnualTemplateManage.add.indicatorInfo' })} bordered={false} className={styles['detail-card']}>
{indicatorList.length > 0 ? (
<Table
columns={columns}
@ -165,12 +168,12 @@ const SupplierAnnualTemplateManageDetail: React.FC = () => {
className={styles['indicator-table']}
/>
) : (
<Empty description="暂无指标数据" />
<Empty description={intl.formatMessage({ id: 'supplierAnnualTemplateManage.detail.noIndicatorData' })} />
)}
</Card>
</>
) : (
!loading && <Empty description="暂无模板详情数据" />
!loading && <Empty description={intl.formatMessage({ id: 'supplierAnnualTemplateManage.detail.noTemplateData' })} />
)}
</Spin>
</Card>