测试修改问题,国际化
This commit is contained in:
@ -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<EvaluateTaskPersonnelSelectorProps
|
||||
// 加载状态
|
||||
const [loading, setLoading] = useState<boolean>(false);
|
||||
|
||||
const [pagination, setPagination] = useState<TablePaginationConfig>({
|
||||
current: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
});
|
||||
|
||||
// 初始化时根据传入的selectedPersonnel设置选中状态
|
||||
useEffect(() => {
|
||||
// 直接使用传入的selectedPersonnel更新选中状态
|
||||
@ -68,8 +75,8 @@ const EvaluateTaskPersonnelSelector: React.FC<EvaluateTaskPersonnelSelectorProps
|
||||
try {
|
||||
const params: API.UserListRequest = {
|
||||
basePageRequest: {
|
||||
pageNo: 1,
|
||||
pageSize: 100, // 获取足够多的数据
|
||||
pageNumber: pagination.current as number,
|
||||
pageSize: pagination.pageSize as number, // 获取足够多的数据
|
||||
},
|
||||
keyword: keyword || undefined,
|
||||
filter,
|
||||
@ -101,7 +108,7 @@ const EvaluateTaskPersonnelSelector: React.FC<EvaluateTaskPersonnelSelectorProps
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
}, [keyword]); // 移除selectedPersonnelIds依赖
|
||||
}, [keyword, pagination]); // 移除selectedPersonnelIds依赖
|
||||
|
||||
/**
|
||||
* 初始化人员数据
|
||||
@ -137,11 +144,12 @@ const EvaluateTaskPersonnelSelector: React.FC<EvaluateTaskPersonnelSelectorProps
|
||||
const handleConfirm = () => {
|
||||
// 根据选中的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<EvaluateTaskPersonnelSelectorProps
|
||||
size="small"
|
||||
loading={loading}
|
||||
pagination={{ pageSize: 10 }}
|
||||
onChange={handleTableChange}
|
||||
/>
|
||||
<div className="selector-footer">
|
||||
<Space>
|
||||
|
@ -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<EvaluateTemplateTableProps> = ({
|
||||
onSelect,
|
||||
defaultSelectedIds = [],
|
||||
}) => {
|
||||
const intl = useIntl();
|
||||
const [dataSource, setDataSource] = useState<TableRowItem[]>([]);
|
||||
const [form] = Form.useForm();
|
||||
const [indicatorTypes, setIndicatorTypes] = useState<DictItem[]>([]);
|
||||
@ -72,11 +74,11 @@ const EvaluateTemplateTable: React.FC<EvaluateTemplateTableProps> = ({
|
||||
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<EvaluateTemplateTableProps> = ({
|
||||
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<EvaluateTemplateTableProps> = ({
|
||||
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<EvaluateTemplateTableProps> = ({
|
||||
// 检查是否有重复的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<EvaluateTemplateTableProps> = ({
|
||||
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<EvaluateTemplateTableProps> = ({
|
||||
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<EvaluateTemplateTableProps> = ({
|
||||
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<EvaluateTemplateTableProps> = ({
|
||||
|
||||
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<EvaluateTemplateTableProps> = ({
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '类型',
|
||||
title: intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.type' }),
|
||||
dataIndex: 'indicatorType',
|
||||
align: 'center',
|
||||
key: 'indicatorType',
|
||||
@ -530,7 +532,7 @@ const EvaluateTemplateTable: React.FC<EvaluateTemplateTableProps> = ({
|
||||
<Select
|
||||
value={cellContent}
|
||||
onChange={(val) => handleInputChange(val, record, 'indicatorType')}
|
||||
placeholder="请选择类型"
|
||||
placeholder={intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.placeholder.selectType' })}
|
||||
style={{ width: '100%' }}
|
||||
loading={loadingTypes}
|
||||
>
|
||||
@ -545,7 +547,7 @@ const EvaluateTemplateTable: React.FC<EvaluateTemplateTableProps> = ({
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '基本指标',
|
||||
title: intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.baseIndicator' }),
|
||||
align: 'center',
|
||||
dataIndex: 'baseIndicator',
|
||||
key: 'baseIndicator',
|
||||
@ -559,14 +561,14 @@ const EvaluateTemplateTable: React.FC<EvaluateTemplateTableProps> = ({
|
||||
<Input
|
||||
value={cellContent}
|
||||
onChange={(e) => 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<EvaluateTemplateTableProps> = ({
|
||||
<Input
|
||||
value={cellContent}
|
||||
onChange={(e) => 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<EvaluateTemplateTableProps> = ({
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
title: intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.action' }),
|
||||
key: 'level1Action',
|
||||
align: 'center',
|
||||
width: 100,
|
||||
@ -625,19 +627,19 @@ const EvaluateTemplateTable: React.FC<EvaluateTemplateTableProps> = ({
|
||||
onClick={() => {
|
||||
addLevel1Indicator(record);
|
||||
}}
|
||||
title="添加一级指标"
|
||||
title={intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.button.addLevelOne' })}
|
||||
/>
|
||||
<Popconfirm
|
||||
title="确定要删除此指标吗?"
|
||||
title={intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.confirm.delete' })}
|
||||
onConfirm={() => removeLevel1Indicator(record)}
|
||||
okText="确定"
|
||||
cancelText="取消"
|
||||
okText={intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.confirm.ok' })}
|
||||
cancelText={intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.confirm.cancel' })}
|
||||
>
|
||||
<Button
|
||||
type="text"
|
||||
danger
|
||||
icon={<DeleteOutlined />}
|
||||
title="删除一级指标"
|
||||
title={intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.button.deleteLevelOne' })}
|
||||
/>
|
||||
</Popconfirm>
|
||||
</div>
|
||||
@ -647,10 +649,10 @@ const EvaluateTemplateTable: React.FC<EvaluateTemplateTableProps> = ({
|
||||
].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<EvaluateTemplateTableProps> = ({
|
||||
<Input
|
||||
value={text}
|
||||
onChange={(e) => 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<EvaluateTemplateTableProps> = ({
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '星号项',
|
||||
title: intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.star' }),
|
||||
dataIndex: 'isStar',
|
||||
key: 'isStar',
|
||||
align: 'center',
|
||||
@ -712,10 +714,10 @@ const EvaluateTemplateTable: React.FC<EvaluateTemplateTableProps> = ({
|
||||
},
|
||||
},
|
||||
{
|
||||
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<EvaluateTemplateTableProps> = ({
|
||||
return (
|
||||
<TextArea
|
||||
value={text}
|
||||
onChange={(e) => handleInputChange(e.target.value, record, 'desc')}
|
||||
placeholder="请输入评分说明"
|
||||
onChange={(e) => handleInputChange(e.target.value, record, 'descScore')}
|
||||
placeholder={intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.placeholder.scoreDescription' })}
|
||||
autoSize={{ minRows: 1, maxRows: 3 }}
|
||||
/>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
title: intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.action' }),
|
||||
key: 'level2Action',
|
||||
align: 'center',
|
||||
width: 100,
|
||||
@ -744,21 +746,21 @@ const EvaluateTemplateTable: React.FC<EvaluateTemplateTableProps> = ({
|
||||
type="text"
|
||||
icon={<PlusOutlined />}
|
||||
onClick={() => addSubIndicator(record.key)}
|
||||
title="添加细分指标"
|
||||
title={intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.button.addSubIndicator' })}
|
||||
/>
|
||||
{/* 如果该一级指标下有多个二级指标,才允许删除 */}
|
||||
{getLevel1RowSpan(record.baseIndicator) > 1 && (
|
||||
<Popconfirm
|
||||
title="确定要删除此指标吗?"
|
||||
title={intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.confirm.delete' })}
|
||||
onConfirm={() => removeSubIndicator(record.key)}
|
||||
okText="确定"
|
||||
cancelText="取消"
|
||||
okText={intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.confirm.ok' })}
|
||||
cancelText={intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.confirm.cancel' })}
|
||||
>
|
||||
<Button
|
||||
type="text"
|
||||
danger
|
||||
icon={<MinusCircleOutlined />}
|
||||
title="删除细分指标"
|
||||
title={intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.button.deleteSubIndicator' })}
|
||||
/>
|
||||
</Popconfirm>
|
||||
)}
|
||||
@ -768,7 +770,7 @@ const EvaluateTemplateTable: React.FC<EvaluateTemplateTableProps> = ({
|
||||
},
|
||||
// 添加勾选列,只在isCheck为true时显示
|
||||
...(isCheck ? [{
|
||||
title: '勾选',
|
||||
title: intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.check' }),
|
||||
key: 'check',
|
||||
align: 'center',
|
||||
width: 80,
|
||||
@ -794,7 +796,7 @@ const EvaluateTemplateTable: React.FC<EvaluateTemplateTableProps> = ({
|
||||
rowKey="key"
|
||||
size="middle"
|
||||
scroll={{ x: 'max-content' }}
|
||||
locale={{ emptyText: '无数据' }}
|
||||
locale={{ emptyText: intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.placeholder.emptyData' }) }}
|
||||
/>
|
||||
{!isDetail && (
|
||||
<div className="add-button-row">
|
||||
@ -806,7 +808,7 @@ const EvaluateTemplateTable: React.FC<EvaluateTemplateTableProps> = ({
|
||||
style={{ width: '100%', marginTop: 16 }}
|
||||
icon={<PlusOutlined />}
|
||||
>
|
||||
添加一级指标
|
||||
{intl.formatMessage({ id: 'supplierTemplateManage.evaluateTable.button.addLevelOne' })}
|
||||
</Button>
|
||||
</div>
|
||||
)}
|
||||
|
Reference in New Issue
Block a user