import React, { useState, useEffect } from 'react'; import { Card, Form, Input, Select, Button, Table, Space, Tag, DatePicker, TablePaginationConfig, Modal, Row, Col, Tooltip, message, } from 'antd'; import { SearchOutlined, DeleteOutlined, EyeOutlined, PlusOutlined, } from '@ant-design/icons'; import { TaskStatus, TaskStatusText, TaskStatusColor, TaskType, TaskTypeText } from '@/dicts/supplierTaskDict'; import moment from 'moment'; import styles from './supplierEvaluateResult.less'; import { history } from 'umi'; const { Option } = Select; const { RangePicker } = DatePicker; // 删除本地接口定义,使用全局定义 const SupplierEvaluateResult: React.FC = () => { const [loading, setLoading] = useState(false); const [form] = Form.useForm(); const [resultData, setResultData] = useState([]); const [pagination, setPagination] = useState({ current: 1, pageSize: 10, total: 0, showSizeChanger: true, showQuickJumper: true, showTotal: (total) => `共 ${total} 条记录`, }); const [searchParams, setSearchParams] = useState({}); // 品类数据 const categoryOptions = [ { label: '食品', value: '食品' }, { label: '电子', value: '电子' }, { label: '机械', value: '机械' }, { label: '化工', value: '化工' }, { label: '医药', value: '医药' }, ]; // 创建单位数据 const unitOptions = [ { label: '中山市合创展包装材料有限公司', value: '中山市合创展包装材料有限公司' }, { label: '广州市科技发展有限公司', value: '广州市科技发展有限公司' }, { label: '深圳市创新科技有限公司', value: '深圳市创新科技有限公司' }, { label: '东莞市制造业有限公司', value: '东莞市制造业有限公司' }, ]; // 模拟获取评价结果列表 const fetchResultList = async ( current = 1, pageSize = 10, params: SupplierEvaluate.EvaluateResultSearchParams = searchParams, ) => { // 更新搜索参数状态 if (params !== searchParams) { setSearchParams(params); } setLoading(true); try { // 模拟API请求 setTimeout(() => { // 模拟数据 const mockData: SupplierEvaluate.EvaluateResultRecord[] = 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; // 随机选择单位和品类 const unitIndex = Math.floor(Math.random() * unitOptions.length); const categoryIndex = Math.floor(Math.random() * categoryOptions.length); // 随机生成日期 const startDate = moment().subtract(Math.floor(Math.random() * 60), 'days'); const endDate = moment(startDate).add(Math.floor(Math.random() * 30) + 15, 'days'); return { id, key: id, evaluateTitle: `${TaskTypeText[taskType]}任务${index + 1}`, evaluateCategory: categoryOptions[categoryIndex].value, initiatingUnit: unitOptions[unitIndex].value, startTime: startDate.format('YYYY-MM-DD'), endTime: endDate.format('YYYY-MM-DD'), status, createTime: moment().subtract(Math.floor(Math.random() * 90), 'days').format('YYYY-MM-DD HH:mm:ss'), }; }); // 根据搜索条件过滤 let filteredData = [...mockData]; if (params.evaluateTitle) { filteredData = filteredData.filter(item => item.evaluateTitle.includes(params.evaluateTitle || '') ); } if (params.status) { filteredData = filteredData.filter(item => item.status === params.status ); } if (params.timeRange && params.timeRange.length === 2) { const start = moment(params.timeRange[0]); const end = moment(params.timeRange[1]); filteredData = filteredData.filter(item => { const itemStart = moment(item.startTime); return itemStart.isBetween(start, end, null, '[]'); }); } // 分页 const startIndex = (current - 1) * pageSize; const endIndex = startIndex + pageSize; const paginatedData = filteredData.slice(startIndex, endIndex); setResultData(paginatedData); setPagination({ ...pagination, current, pageSize, total: filteredData.length, }); setLoading(false); }, 500); } catch (error) { console.error('获取评价结果列表失败:', error); message.error('获取评价结果列表失败'); setLoading(false); } }; // 首次加载获取数据 useEffect(() => { fetchResultList(pagination.current, pagination.pageSize, {}); }, []); // 处理表格分页变化 const handleTableChange = (newPagination: TablePaginationConfig) => { fetchResultList(newPagination.current, newPagination.pageSize, searchParams); }; // 处理搜索 const handleSearch = (values: any) => { const { timeRange, ...rest } = values; const params: SupplierEvaluate.EvaluateResultSearchParams = { ...rest }; if (timeRange && timeRange.length === 2) { params.timeRange = [timeRange[0].format('YYYY-MM-DD'), timeRange[1].format('YYYY-MM-DD')]; } fetchResultList(1, pagination.pageSize, params); }; // 处理重置 const handleReset = () => { form.resetFields(); fetchResultList(1, pagination.pageSize, {}); }; // 查看详情 - 修改为跳转到详情页 const handleViewDetail = (record: SupplierEvaluate.EvaluateResultRecord) => { history.push({ pathname: 'supplierEvaluateResultInfo', state: { record } }); }; // 获取状态标签 const getStatusTag = (status: string) => { const color = TaskStatusColor[status as keyof typeof TaskStatusColor] || 'default'; const text = TaskStatusText[status as keyof typeof TaskStatusText] || '未知状态'; return {text}; }; const columns = [ { title: '序号', render: (_: any, __: SupplierEvaluate.EvaluateResultRecord, index: number) => (pagination.current! - 1) * pagination.pageSize! + index + 1, width: 80, }, { title: '评价主题', dataIndex: 'evaluateTitle', key: 'evaluateTitle', width: 200, ellipsis: { showTitle: false, }, render: (evaluateTitle: string) => ( {evaluateTitle} ), }, { title: '评价品类', dataIndex: 'evaluateCategory', key: 'evaluateCategory', width: 120, }, { title: '发起单位', dataIndex: 'initiatingUnit', key: 'initiatingUnit', width: 200, ellipsis: { showTitle: false, }, render: (text: string) => ( {text} ), }, { title: '评价开始时间', dataIndex: 'startTime', key: 'startTime', width: 120, }, { title: '评价结束时间', dataIndex: 'endTime', key: 'endTime', width: 120, }, { title: '评价状态', dataIndex: 'status', key: 'status', width: 100, render: (status: string) => getStatusTag(status), }, { title: '操作', key: 'action', width: 100, align: 'center' as const, render: (_: unknown, record: SupplierEvaluate.EvaluateResultRecord) => ( ), }, ]; return (
); }; export default SupplierEvaluateResult;