From a774e03317a44e87cfc2d8befe0525daf77bbfed Mon Sep 17 00:00:00 2001 From: linxd <544554903@qq.com> Date: Tue, 1 Jul 2025 17:02:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E4=BF=AE=E6=94=B9=E9=97=AE?= =?UTF-8?q?=E9=A2=98,=E5=9B=BD=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EvaluateTaskPersonnelSelector.tsx | 19 ++- .../EvaluateTemplateTable.tsx | 88 +++++------ src/dicts/supplierTaskDict.ts | 12 +- src/locales/en-US.ts | 4 + src/locales/en-US/supplierTaskManage.ts | 41 ++++++ src/locales/en-US/supplierTemplateManage.ts | 118 +++++++++++++++ src/locales/zh-CN.ts | 4 + src/locales/zh-CN/supplierTaskManage.ts | 41 ++++++ src/locales/zh-CN/supplierTemplateManage.ts | 117 +++++++++++++++ src/models/supplierTaskManage.ts | 16 +- .../components/EvaluatorSelectStep.tsx | 25 ++-- .../supplierTaskManage/supplierTaskManage.tsx | 108 ++++++++++---- .../supplierTaskManageAdd.tsx | 1 + .../supplierTemplateManage.tsx | 52 ++++--- .../supplierTemplateManageAdd.tsx | 138 +++++++++++------- .../supplierTemplateManageDetail.tsx | 109 +++++++++----- src/servers/api/supplierEvaluate.ts | 12 +- src/servers/api/typings.d.ts | 5 +- 18 files changed, 688 insertions(+), 222 deletions(-) create mode 100644 src/locales/en-US/supplierTaskManage.ts create mode 100644 src/locales/en-US/supplierTemplateManage.ts create mode 100644 src/locales/zh-CN/supplierTaskManage.ts create mode 100644 src/locales/zh-CN/supplierTemplateManage.ts diff --git a/src/components/EvaluateTaskPersonnelSelector/EvaluateTaskPersonnelSelector.tsx b/src/components/EvaluateTaskPersonnelSelector/EvaluateTaskPersonnelSelector.tsx index 85cf062..44389f9 100644 --- a/src/components/EvaluateTaskPersonnelSelector/EvaluateTaskPersonnelSelector.tsx +++ b/src/components/EvaluateTaskPersonnelSelector/EvaluateTaskPersonnelSelector.tsx @@ -1,5 +1,6 @@ import React, { useState, useEffect, useCallback, useMemo } from 'react'; import { Table, Input, Button, Space, message } from 'antd'; +import type { TablePaginationConfig } from 'antd/es/table'; import { SearchOutlined } from '@ant-design/icons'; import { getUserList } from '@/servers/api/user'; import './EvaluateTaskPersonnelSelector.less'; @@ -52,6 +53,12 @@ const EvaluateTaskPersonnelSelector: React.FC(false); + const [pagination, setPagination] = useState({ + current: 1, + pageSize: 10, + total: 0, + }); + // 初始化时根据传入的selectedPersonnel设置选中状态 useEffect(() => { // 直接使用传入的selectedPersonnel更新选中状态 @@ -68,8 +75,8 @@ const EvaluateTaskPersonnelSelector: React.FC { // 根据选中的ID筛选出完整的人员数据 const selectedData = personnel.filter(item => selectedKeys.includes(item.id)); - // 回调传递给父组件 onSelect(selectedData); }; - + const handleTableChange = (newPagination: TablePaginationConfig) => { + setPagination(newPagination); + }; // 表格列定义 const columns = [ { @@ -187,6 +195,7 @@ const EvaluateTaskPersonnelSelector: React.FC
diff --git a/src/components/EvaluateTemplateTable/EvaluateTemplateTable.tsx b/src/components/EvaluateTemplateTable/EvaluateTemplateTable.tsx index 6cb4f72..4fe53b5 100644 --- a/src/components/EvaluateTemplateTable/EvaluateTemplateTable.tsx +++ b/src/components/EvaluateTemplateTable/EvaluateTemplateTable.tsx @@ -1,5 +1,6 @@ // 供应商评价 模板管理新增中的table import React, { useState, useEffect } from 'react'; +import { useIntl } from 'umi'; import { Table, Input, @@ -45,7 +46,7 @@ interface TableRowItem { subIndicator: string; ndScore: string; isStar: string; - desc?: string; + descScore?: string; orderBy?: number; ndOrderBy?: number; selected?: boolean; // 是否选中 @@ -59,6 +60,7 @@ const EvaluateTemplateTable: React.FC = ({ onSelect, defaultSelectedIds = [], }) => { + const intl = useIntl(); const [dataSource, setDataSource] = useState([]); const [form] = Form.useForm(); const [indicatorTypes, setIndicatorTypes] = useState([]); @@ -72,11 +74,11 @@ const EvaluateTemplateTable: React.FC = ({ if (res.success && res.data) { setIndicatorTypes(res.data); } else { - message.error('获取指标类型失败'); + message.error(intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.message.getTypeFailed' })); } } catch (error) { console.error('获取指标类型失败:', error); - message.error('获取指标类型失败'); + message.error(intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.message.getTypeFailed' })); } finally { setLoadingTypes(false); } @@ -116,7 +118,7 @@ const EvaluateTemplateTable: React.FC = ({ subIndicator: ndItem.subIndicator, ndScore: ndItem.score, isStar: ndItem.isStar || StarLevel.NO, - desc: ndItem.desc, + descScore: ndItem.descScore, orderBy: typeof stItem.orderBy === 'string' ? parseInt(stItem.orderBy) : stItem.orderBy, ndOrderBy: typeof ndItem.orderBy === 'string' ? parseInt(ndItem.orderBy) : ndItem.orderBy, selected: defaultSelectedIds.includes(ndItem.id) // 根据defaultSelectedIds设置选中状态 @@ -169,7 +171,7 @@ const EvaluateTemplateTable: React.FC = ({ score: item.ndScore || '0', isStar: item.isStar || StarLevel.NO, orderBy: item.ndOrderBy || ndIndex + 1, - desc: item.desc || '' + descScore: item.descScore || '' }; }) }; @@ -310,7 +312,7 @@ const EvaluateTemplateTable: React.FC = ({ // 检查是否有重复的baseIndicator const existingNames = newData.map((d) => d.baseIndicator).filter(Boolean); if (existingNames.includes(val)) { - message.warning('指标名称已存在,请使用不同的名称'); + message.warning(intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.message.duplicateName' })); return; } } @@ -363,7 +365,7 @@ const EvaluateTemplateTable: React.FC = ({ subIndicator: '', // 注意:二级指标需要为空字符串,不能为undefined ndScore: '0', isStar: StarLevel.NO, - desc: '', + descScore: '', orderBy: dataSource.length + 1, // 确保正确的排序 ndOrderBy: 1, // 设置二级指标初始排序 selected: false, // 默认未选中 @@ -416,7 +418,7 @@ const EvaluateTemplateTable: React.FC = ({ const parent = dataSource.find((item) => item.key === parentKey); if (!parent || !parent.baseIndicator) { - message.warning('请先填写一级指标名称'); + message.warning(intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.placeholder.baseIndicator' })); return; } @@ -429,7 +431,7 @@ const EvaluateTemplateTable: React.FC = ({ subIndicator: '', ndScore: '0', isStar: StarLevel.NO, - desc: '', + descScore: '', ndOrderBy: dataSource.filter(item => item.baseIndicator === parent.baseIndicator).length + 1, selected: false, // 默认未选中 }; @@ -501,10 +503,10 @@ const EvaluateTemplateTable: React.FC = ({ const columns = [ { - title: '一级指标', + title: intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.levelOne' }), children: [ { - title: '序号', + title: intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.index' }), dataIndex: 'index', align: 'center', key: 'index', @@ -514,7 +516,7 @@ const EvaluateTemplateTable: React.FC = ({ }, }, { - title: '类型', + title: intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.type' }), dataIndex: 'indicatorType', align: 'center', key: 'indicatorType', @@ -530,7 +532,7 @@ const EvaluateTemplateTable: React.FC = ({ handleInputChange(e.target.value, record, 'baseIndicator')} - placeholder="请输入基本指标" + placeholder={intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.placeholder.baseIndicator' })} /> ); }); }, }, { - title: '指标说明', + title: intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.indicatorDescription' }), align: 'center', dataIndex: 'descIndicator', key: 'descIndicator', @@ -580,14 +582,14 @@ const EvaluateTemplateTable: React.FC = ({ handleInputChange(e.target.value, record, 'descIndicator')} - placeholder="请输入指标说明" + placeholder={intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.placeholder.indicatorDescription' })} /> ); }); }, }, { - title: '分值', + title: intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.score' }), align: 'center', dataIndex: 'stScore', key: 'stScore', @@ -610,7 +612,7 @@ const EvaluateTemplateTable: React.FC = ({ }, }, { - title: '操作', + title: intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.action' }), key: 'level1Action', align: 'center', width: 100, @@ -625,19 +627,19 @@ const EvaluateTemplateTable: React.FC = ({ onClick={() => { addLevel1Indicator(record); }} - title="添加一级指标" + title={intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.button.addLevelOne' })} /> removeLevel1Indicator(record)} - okText="确定" - cancelText="取消" + okText={intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.confirm.ok' })} + cancelText={intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.confirm.cancel' })} >
@@ -647,10 +649,10 @@ const EvaluateTemplateTable: React.FC = ({ ].filter((col) => !(isDetail && col.key === 'level1Action')), }, { - title: '二级指标', + title: intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.levelTwo' }), children: [ { - title: '细分指标', + title: intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.subIndicator' }), dataIndex: 'subIndicator', key: 'subIndicator', align: 'center', @@ -663,13 +665,13 @@ const EvaluateTemplateTable: React.FC = ({ handleInputChange(e.target.value, record, 'subIndicator')} - placeholder="请输入细分指标" + placeholder={intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.placeholder.subIndicator' })} /> ); }, }, { - title: '分值', + title: intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.score' }), dataIndex: 'ndScore', key: 'ndScore', width: 80, @@ -690,7 +692,7 @@ const EvaluateTemplateTable: React.FC = ({ }, }, { - title: '星号项', + title: intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.star' }), dataIndex: 'isStar', key: 'isStar', align: 'center', @@ -712,10 +714,10 @@ const EvaluateTemplateTable: React.FC = ({ }, }, { - title: '评分说明', - dataIndex: 'desc', + title: intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.scoreDescription' }), + dataIndex: 'descScore', align: 'center', - key: 'desc', + key: 'descScore', render: (text: string, record: TableRowItem) => { if (isDetail) { return text || '-'; @@ -723,15 +725,15 @@ const EvaluateTemplateTable: React.FC = ({ return (