// 供应商评价结果详情 import React, { useState, useEffect } from 'react'; import { Card, Form, Input, Select, Button, Table, Space, Row, Col, Tooltip, message, } from 'antd'; import type { TablePaginationConfig } from 'antd'; import { SearchOutlined, DeleteOutlined, ArrowLeftOutlined, } from '@ant-design/icons'; import { history, useLocation } from 'umi'; import { getEvaluateSupplierList, getAllEvaluateRules } from '@/servers/api/supplierEvaluate'; const { Option } = Select; const SupplierEvaluateResultInfo: React.FC = () => { const location = useLocation<{ record: API.EvaluateTaskRecord }>(); 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 [parentRecord, setParentRecord] = useState( null, ); const [evaluateRules, setEvaluateRules] = useState([]); // 品类数据 const categoryOptions = [ { label: '食品', value: '食品' }, { label: '电子', value: '电子' }, { label: '机械', value: '机械' }, { label: '化工', value: '化工' }, { label: '医药', value: '医药' }, ]; // 获取上级页面传递的数据 useEffect(() => { if (location.state?.record) { setParentRecord(location.state.record); } }, [location]); // 获取评价规则列表 const fetchEvaluateRules = async () => { try { const response = await getAllEvaluateRules(); if (response.success && response.data) { setEvaluateRules(response.data); } else { message.error(response.message || '获取评价规则列表失败'); } } catch (error) { console.error('获取评价规则列表失败:', error); message.error('获取评价规则列表失败'); } }; // 首次加载获取评价规则列表 useEffect(() => { fetchEvaluateRules(); }, []); // 获取评价结果详情列表 const fetchResultDetailList = async ( current = 1, pageSize = 10, params: API.EvaluateSupplierSearchParams = searchParams, ) => { // 确保有评价任务ID if (!parentRecord?.id) { message.error('缺少评价任务ID,无法获取数据'); return; } // 更新搜索参数状态 if (params !== searchParams) { setSearchParams(params); } setLoading(true); try { // 构建请求参数 const requestParams: API.EvaluateSupplierRequest = { basePageRequest: { pageNo: current, pageSize: pageSize, }, evaluateTaskId: parentRecord.id, }; // 添加搜索条件 if (params.supplierName) { requestParams.supplierName = params.supplierName; } if (params.level) { requestParams.level = params.level; } // 调用接口获取数据 const response = await getEvaluateSupplierList(requestParams); if (response.data && response.success) { const { records, total, current: currentPage, size } = response.data; // 处理数据,增加表格需要的key属性 const formattedData = records.map(record => ({ ...record, key: record.id, })); setResultData(formattedData); setPagination({ ...pagination, current: currentPage, pageSize: size, total, }); } else { message.error(response.message || '获取评价结果详情列表失败'); } } catch (error) { console.error('获取评价结果详情列表失败:', error); message.error('获取评价结果详情列表失败'); } finally { setLoading(false); } }; // 首次加载获取数据 useEffect(() => { if (parentRecord?.id) { fetchResultDetailList(pagination.current, pagination.pageSize, {}); } }, [parentRecord]); // 处理表格分页变化 const handleTableChange = (newPagination: TablePaginationConfig) => { fetchResultDetailList(newPagination.current, newPagination.pageSize, searchParams); }; // 处理搜索 const handleSearch = (values: any) => { fetchResultDetailList(1, pagination.pageSize, values); }; // 处理重置 const handleReset = () => { form.resetFields(); fetchResultDetailList(1, pagination.pageSize, {}); }; // 返回上一页 const handleBack = () => { history.goBack(); }; // 查看得分明细 const handleViewScoreDetail = (record: API.EvaluateSupplierRecord) => { history.push({ pathname: 'supplierEvaluateResultScoreDetail', state: { record, parentRecord } }); }; // 查看打分情况 const handleViewScoring = (record: API.EvaluateSupplierRecord) => { history.push({ pathname: 'supplierEvaluateResultScoreByList', state: { record, parentRecord } }); }; const columns = [ { title: '序号', render: (_: any, __: API.EvaluateSupplierRecord, index: number) => (pagination.current! - 1) * pagination.pageSize! + index + 1, width: 80, }, { title: '供应商名称', dataIndex: 'supplierName', key: 'supplierName', width: 200, ellipsis: { showTitle: false, }, render: (supplierName: string) => ( {supplierName} ), }, { title: '品类', dataIndex: 'categoryName', key: 'categoryName', width: 120, }, { title: '评价得分', dataIndex: 'reviewScore', key: 'reviewScore', width: 100 }, { title: '评价等级', dataIndex: 'levelName', key: 'levelName', width: 100, align: 'center' as const }, { title: '操作', key: 'action', width: 180, align: 'center' as const, render: (_: unknown, record: API.EvaluateSupplierRecord) => ( ), }, ]; return (
); }; export default SupplierEvaluateResultInfo;