开发供应商评价模块

This commit is contained in:
linxd
2025-06-23 10:54:39 +08:00
parent 8a121eff8a
commit 402d3dd575
19 changed files with 3089 additions and 80 deletions

View File

@ -29,28 +29,7 @@ import styles from './supplierTaskManage.less';
const { Option } = Select;
const { RangePicker } = DatePicker;
// 任务记录类型
interface TaskRecord {
id: string;
taskName: string;
taskCode: string;
taskType: string;
templateName: string;
status: string;
startTime: string;
endTime: string;
createBy: string;
createTime: string;
updateBy?: string;
updateTime?: string;
key: string;
}
interface SearchParams {
taskName?: string;
status?: string;
dateRange?: [string, string];
}
// 删除本地接口定义,使用全局类型定义
const SupplierTaskManage: React.FC = () => {
const [selectedRowKeys, setSelectedRowKeys] = useState<React.Key[]>([]);
@ -62,8 +41,8 @@ const SupplierTaskManage: React.FC = () => {
const [currentId, setCurrentId] = useState<string>('');
// 查看详情数据
const [viewData, setViewData] = useState<TaskRecord | null>(null);
const [taskData, setTaskData] = useState<TaskRecord[]>([]);
const [viewData, setViewData] = useState<SupplierEvaluate.TaskRecord | null>(null);
const [taskData, setTaskData] = useState<SupplierEvaluate.TaskRecord[]>([]);
const [pagination, setPagination] = useState<TablePaginationConfig>({
current: 1,
pageSize: 10,
@ -72,13 +51,13 @@ const SupplierTaskManage: React.FC = () => {
showQuickJumper: true,
showTotal: (total) => `${total} 条记录`,
});
const [searchParams, setSearchParams] = useState<SearchParams>({});
const [searchParams, setSearchParams] = useState<SupplierEvaluate.TaskSearchParams>({});
// 模拟获取任务列表
const fetchTaskList = async (
current = 1,
pageSize = 10,
params: SearchParams = searchParams,
params: SupplierEvaluate.TaskSearchParams = searchParams,
) => {
// 更新搜索参数状态
if (params !== searchParams) {
@ -90,7 +69,7 @@ const SupplierTaskManage: React.FC = () => {
// 模拟API请求
setTimeout(() => {
// 模拟数据
const mockData: TaskRecord[] = Array.from({ length: 35 }).map((_, index) => {
const mockData: SupplierEvaluate.TaskRecord[] = Array.from({ length: 35 }).map((_, index) => {
const id = `${index + 1}`;
const status = Object.values(TaskStatus)[Math.floor(Math.random() * 3)];
const taskType = Math.random() > 0.5 ? TaskType.REGULAR : TaskType.SPECIAL;
@ -155,7 +134,7 @@ const SupplierTaskManage: React.FC = () => {
}, []);
// 处理查看
const handleView = (record: TaskRecord) => {
const handleView = (record: SupplierEvaluate.TaskRecord) => {
setCurrentId(record.id);
setIsViewMode(true);
setViewData(record);
@ -163,7 +142,7 @@ const SupplierTaskManage: React.FC = () => {
};
// 处理编辑
const handleEdit = (record: TaskRecord) => {
const handleEdit = (record: SupplierEvaluate.TaskRecord) => {
setIsEdit(true);
setIsViewMode(false);
setCurrentId(record.id);
@ -172,7 +151,7 @@ const SupplierTaskManage: React.FC = () => {
};
// 处理删除
const showDeleteConfirm = (record: TaskRecord) => {
const showDeleteConfirm = (record: SupplierEvaluate.TaskRecord) => {
Modal.confirm({
title: '确认删除',
icon: <ExclamationCircleOutlined />,
@ -197,7 +176,7 @@ const SupplierTaskManage: React.FC = () => {
};
// 处理发布/取消
const handlePublishStatus = (record: TaskRecord) => {
const handlePublishStatus = (record: SupplierEvaluate.TaskRecord) => {
const isInProgress = record.status === TaskStatus.PROCESSING;
const actionText = isInProgress ? '取消' : '开始';
@ -238,7 +217,7 @@ const SupplierTaskManage: React.FC = () => {
const columns = [
{
title: '序号',
render: (_: any, __: TaskRecord, index: number) =>
render: (_: any, __: SupplierEvaluate.TaskRecord, index: number) =>
(pagination.current! - 1) * pagination.pageSize! + index + 1,
width: 80,
},
@ -286,7 +265,7 @@ const SupplierTaskManage: React.FC = () => {
key: 'action',
width: 180,
align: 'center' as const,
render: (_: unknown, record: TaskRecord) => (
render: (_: unknown, record: SupplierEvaluate.TaskRecord) => (
<Space size="middle">
<Button type="link" onClick={() => handleView(record)}>
@ -354,7 +333,7 @@ const SupplierTaskManage: React.FC = () => {
// 处理搜索
const handleSearch = (values: any) => {
const { dateRange, ...rest } = values;
const params: SearchParams = { ...rest };
const params: SupplierEvaluate.TaskSearchParams = { ...rest };
if (dateRange && dateRange.length === 2) {
params.dateRange = [dateRange[0].format('YYYY-MM-DD'), dateRange[1].format('YYYY-MM-DD')];
@ -544,26 +523,23 @@ const SupplierTaskManage: React.FC = () => {
<Form.Item name="dateRange" label="评价时间">
<RangePicker />
</Form.Item>
<Form.Item className="filter-btns">
<Button type="primary" htmlType="submit" icon={<SearchOutlined />} onClick={() => form.submit()}>
</Button>
<Button
type="primary"
danger
icon={<DeleteOutlined />}
onClick={() => {
form.resetFields();
fetchTaskList(1, pagination.pageSize, {});
}}
>
</Button>
</Form.Item>
</Form>
</div>
<div className="button-row">
<div className="left-buttons">
<Button type="primary" htmlType="submit" icon={<SearchOutlined />} onClick={() => form.submit()}>
</Button>
<Button
danger
icon={<DeleteOutlined />}
onClick={() => {
form.resetFields();
fetchTaskList(1, pagination.pageSize, {});
}}
>
</Button>
</div>
<div className="right-buttons">
<Button type="primary" ghost icon={<PlusOutlined />} onClick={handleAdd}>