import React, { useState, useEffect } from 'react'; import { Table, Button, Input, message, Space, Form, DatePicker, Select, Tag, Tooltip, } from 'antd'; import { history } from 'umi'; import { SearchOutlined, DeleteOutlined, PlusOutlined, } from '@ant-design/icons'; import { getAnnualTaskList } from '@/servers/api/supplierAnnual'; import { AnnualTaskStatus, AnnualTaskStatusText, AnnualTaskStatusColor, AnnualTaskStatusOptions, } from '@/dicts/supplierAnnualTaskManageDict'; import type { DictItem } from '@/servers/api/dicts'; import { getDictList } from '@/servers/api/dicts'; const { RangePicker } = DatePicker; const { Option } = Select; const SupplierAnnualTaskManage: React.FC = () => { const [form] = Form.useForm(); const [loading, setLoading] = useState(false); const [data, setData] = useState([]); const [pagination, setPagination] = useState({ current: 1, pageSize: 10, total: 0, showTotal: (total: number) => `共 ${total} 条记录`, showSizeChanger: true, showQuickJumper: true, }); const [searchParams, setSearchParams] = useState({}); const [evaluateStatus, setEvaluateStatus] = useState([]); // 获取年度任务列表 const fetchList = async (params: any = {}) => { try { setLoading(true); const { current, pageSize, ...restParams } = params; const res = await getAnnualTaskList({ basePageRequest: { pageNo: current, pageSize, }, ...restParams, ...searchParams, }); if (res.success) { setData(res.data?.records || []); setPagination({ ...pagination, current, pageSize, total: res.data?.total || 0, }); } else { message.error(res.message || '获取列表失败'); } } catch (error) { console.error('获取列表失败:', error); message.error('获取列表失败'); } finally { setLoading(false); } }; // 首次加载获取数据 useEffect(() => { fetchList({ current: 1, pageSize: 10 }); getDictList('project_status').then((res) => { if (res.success) { setEvaluateStatus(res.data); } }); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); // 表格变化处理 const handleTableChange = (paginationParams: any) => { fetchList({ current: paginationParams.current, pageSize: paginationParams.pageSize, }); }; // 搜索 const handleSearch = (values: any) => { const params = { ...values }; // 处理日期范围 if (params.timeRange && params.timeRange.length === 2) { params.startTime = params.timeRange[0].format('YYYY-MM-DD'); params.endTime = params.timeRange[1].format('YYYY-MM-DD'); delete params.timeRange; } setSearchParams(params); fetchList({ current: 1, pageSize: pagination.pageSize, ...params }); }; // 重置搜索 const handleReset = () => { form.resetFields(); setSearchParams({}); fetchList({ current: 1, pageSize: pagination.pageSize }); }; // 新增任务 const handleAdd = () => { history.push({ pathname: 'supplierAnnualTaskManageAdd', }); }; // 编辑任务 const handleEdit = (record: supplierAnnualTaskManage.TaskRecord) => { if (record.status !== AnnualTaskStatus.PENDING) { message.warning('只有待执行状态的任务才能编辑!'); return; } history.push(`/supplierAnnual/supplierAnnualTaskManageAdd?id=${record.id}&mode=edit`); }; // 查看详情 const handleView = (record: supplierAnnualTaskManage.TaskRecord) => { history.push({ pathname: '/supplierAnnual/supplierAnnualTaskManageDetail?id=' + record.id, }); }; // 获取状态标签 const getStatusTag = (status: string, statusName: string) => { const color = AnnualTaskStatusColor[status] || 'default'; return {statusName || AnnualTaskStatusText[status] || '未知状态'}; }; const columns = [ { title: '序号', dataIndex: 'index', key: 'index', width: 80, render: (_: any, __: any, index: number) => index + 1 + (pagination.current - 1) * pagination.pageSize, }, { title: '评价主题', dataIndex: 'annualreviewTheme', key: 'annualreviewTheme', ellipsis: { showTitle: false, }, render: (text: string) => ( {text} ), }, { title: '发起单位', dataIndex: 'deptName', key: 'deptName', width: 150, }, { title: '评价开始时间', dataIndex: 'startTime', key: 'startTime', width: 140, }, { title: '评价结束时间', dataIndex: 'endTime', key: 'endTime', width: 140, }, { title: '评价状态', dataIndex: 'statusName', key: 'statusName', width: 100 }, { title: '操作', key: 'action', width: 180, fixed: 'right' as const, align: 'center' as const, render: (_: any, record: supplierAnnualTaskManage.TaskRecord) => ( {record.status === AnnualTaskStatus.PENDING && ( )} ), }, ]; return (
); }; export default SupplierAnnualTaskManage;