路由多语言维护, 优化layoutHeader组件样式,供应商评价-打分详情更改bug

This commit is contained in:
linxd
2025-07-02 16:14:42 +08:00
parent 1dc59c9587
commit 2b3eb5672d
13 changed files with 183 additions and 102 deletions

View File

@ -194,6 +194,7 @@ export default [
hideInMenu: true, hideInMenu: true,
icon: 'icon-fenlei', icon: 'icon-fenlei',
component: '@/pages/supplierAnnualManage/supplierAnnualTemplateManage/supplierAnnualTemplateManageAdd', component: '@/pages/supplierAnnualManage/supplierAnnualTemplateManage/supplierAnnualTemplateManageAdd',
parentKeys: ['/supplierAnnual/supplierAnnualTemplateManage'],
}, },
{ {
name: '年审模板管理详情', name: '年审模板管理详情',
@ -201,6 +202,7 @@ export default [
hideInMenu: true, hideInMenu: true,
icon: 'icon-fenlei', icon: 'icon-fenlei',
component: '@/pages/supplierAnnualManage/supplierAnnualTemplateManage/supplierAnnualTemplateManageDetail', component: '@/pages/supplierAnnualManage/supplierAnnualTemplateManage/supplierAnnualTemplateManageDetail',
parentKeys: ['/supplierAnnual/supplierAnnualTemplateManage'],
}, },
{ {
name: '年审任务管理', name: '年审任务管理',
@ -214,6 +216,7 @@ export default [
hideInMenu: true, hideInMenu: true,
icon: 'icon-liebiaomoshi', icon: 'icon-liebiaomoshi',
component: '@/pages/supplierAnnualManage/supplierAnnualTaskManage/supplierAnnualTaskManageAdd', component: '@/pages/supplierAnnualManage/supplierAnnualTaskManage/supplierAnnualTaskManageAdd',
parentKeys: ['/supplierAnnual/supplierAnnualTaskManage'],
}, },
{ {
name: '年审任务管理详情', name: '年审任务管理详情',
@ -221,6 +224,7 @@ export default [
hideInMenu: true, hideInMenu: true,
icon: 'icon-liebiaomoshi', icon: 'icon-liebiaomoshi',
component: '@/pages/supplierAnnualManage/supplierAnnualTaskManage/supplierAnnualTaskManageDetail', component: '@/pages/supplierAnnualManage/supplierAnnualTaskManage/supplierAnnualTaskManageDetail',
parentKeys: ['/supplierAnnual/supplierAnnualTaskManage'],
}, },
{ {
name: '年度审查', name: '年度审查',
@ -241,7 +245,7 @@ export default [
path: 'supplierAnnualScoreDetail', path: 'supplierAnnualScoreDetail',
hideInMenu: true, hideInMenu: true,
icon: 'icon-liebiaomoshi', icon: 'icon-liebiaomoshi',
parentKeys: ['/supplierAnnual/supplierAnnualScore'], parentKeys: ['/supplierAnnual/supplierAnnualReview'],
component: '@/pages/supplierAnnualManage/supplierAnnualReview/supplierAnnualScoreDetail', component: '@/pages/supplierAnnualManage/supplierAnnualReview/supplierAnnualScoreDetail',
}, },

View File

@ -5,7 +5,7 @@ import LogoImg from '@/assets/img/logo.png';
import Language from './Language'; import Language from './Language';
import User from './User'; import User from './User';
import './layout.less'; import './layout.less';
const HeaderComponent: React.FC = (props) => { const HeaderComponent: React.FC = () => {
return ( return (
<div className="headerComponent"> <div className="headerComponent">
<img className="logo" src={LogoImg} alt="logo" /> <img className="logo" src={LogoImg} alt="logo" />

View File

@ -7,6 +7,7 @@
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
padding: 0 15px; padding: 0 15px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
.logo { .logo {
height: 45px; height: 45px;
} }

View File

@ -9,7 +9,9 @@ export default {
'menu.评价规则管理': 'Evaluation Rule Management', 'menu.评价规则管理': 'Evaluation Rule Management',
'menu.任务管理': 'Task Management', 'menu.任务管理': 'Task Management',
'menu.任务管理新增': 'Add Task', 'menu.任务管理新增': 'Add Task',
'menu.任务管理详情': 'Task Detail',
'menu.评价打分': 'Evaluation Scoring', 'menu.评价打分': 'Evaluation Scoring',
'menu.评价打分详情': 'Evaluation Scoring Detail',
'menu.评价结果': 'Evaluation Results', 'menu.评价结果': 'Evaluation Results',
'menu.评价结果详情': 'Evaluation Results Detail', 'menu.评价结果详情': 'Evaluation Results Detail',
'menu.评价结果得分明细': 'Evaluation Score Details', 'menu.评价结果得分明细': 'Evaluation Score Details',
@ -28,9 +30,18 @@ export default {
// 供应商年审模块 // 供应商年审模块
'menu.供应商年审': 'Supplier Annual Review', 'menu.供应商年审': 'Supplier Annual Review',
'menu.年审模板管理': 'Annual Review Template Management', 'menu.年审模板管理': 'Annual Review Template Management',
'menu.年审模板管理新增': 'Add Annual Review Template',
'menu.年审模板管理详情': 'Annual Review Template Detail',
'menu.年审任务管理': 'Annual Review Task Management', 'menu.年审任务管理': 'Annual Review Task Management',
'menu.年审任务管理新增': 'Add Annual Review Task',
'menu.年审任务管理详情': 'Annual Review Task Detail',
'menu.年度查询': 'Annual Query', 'menu.年度查询': 'Annual Query',
'menu.年审打分': 'Annual Review Scoring',
'menu.年审打分详情': 'Annual Review Scoring Detail',
'menu.年审结果': 'Annual Review Results', 'menu.年审结果': 'Annual Review Results',
'menu.年审结果一级查询列表': 'Annual Review Results Primary Query',
'menu.年审结果二级查询列表': 'Annual Review Results Secondary Query',
'menu.年审结果详情': 'Annual Review Results Detail',
//供应商 //供应商
'menu.admit': 'admit', 'menu.admit': 'admit',
@ -44,16 +55,16 @@ export default {
'menu.registrationQuery': 'Registered supplier inquiry', 'menu.registrationQuery': 'Registered supplier inquiry',
'menu.groupQualifiedSupplierQuery': 'Group Qualified Supplier Query', 'menu.groupQualifiedSupplierQuery': 'Group Qualified Supplier Query',
'menu.mySupplierInquiry': 'My supplier inquiry', 'menu.mySupplierInquiry': 'My supplier inquiry',
'menu.admission': '供应商准入', 'menu.admission': 'Supplier Admission',
'menu.admissionManagement': '供应商准入管理', 'menu.admissionManagement': 'Supplier Admission Management',
'menu.admissionReviewManagement': '供应商准入评审管理', 'menu.admissionReviewManagement': 'Supplier Admission Review',
'menu.SupplierEntryReview': '供应商准入审核管理', 'menu.SupplierEntryReview': 'Supplier Entry Review',
'menu.SupplierCategoryEntry': '供应商品类准入管理', 'menu.SupplierCategoryEntry': 'Supplier Category Entry',
'menu.SupplierCategoryEntryReview': '供应商品类准入审核管理', 'menu.SupplierCategoryEntryReview': 'Supplier Category Entry Review',
'menu.informationManagement': '供应商信息管理', 'menu.informationManagement': 'Supplier Information Management',
'menu.SupplierRegisterAgent': '供应商注册代录', 'menu.SupplierRegisterAgent': 'Supplier Registration Agency',
'menu.SupplierChangeManage': '供应商变更管理', 'menu.SupplierChangeManage': 'Supplier Change Management',
'menu.SupplierChangeReviewManage': '供应商变更审核管理', 'menu.SupplierChangeReviewManage': 'Supplier Change Review',
'menu.category': 'Supplier Category Library', 'menu.category': 'Supplier Category Library',
'menu.categoryManage': 'Category Management', 'menu.categoryManage': 'Category Management',
'menu.categoryLibraryManage': 'Category Library Management', 'menu.categoryLibraryManage': 'Category Library Management',

View File

@ -9,7 +9,9 @@ export default {
'menu.评价规则管理': '评价规则管理', 'menu.评价规则管理': '评价规则管理',
'menu.任务管理': '任务管理', 'menu.任务管理': '任务管理',
'menu.任务管理新增': '任务管理新增', 'menu.任务管理新增': '任务管理新增',
'menu.任务管理详情': '任务管理详情',
'menu.评价打分': '评价打分', 'menu.评价打分': '评价打分',
'menu.评价打分详情': '评价打分详情',
'menu.评价结果': '评价结果', 'menu.评价结果': '评价结果',
'menu.评价结果详情': '评价结果详情', 'menu.评价结果详情': '评价结果详情',
'menu.评价结果得分明细': '评价结果得分明细', 'menu.评价结果得分明细': '评价结果得分明细',
@ -27,9 +29,18 @@ export default {
// 供应商年审模块 // 供应商年审模块
'menu.供应商年审': '供应商年审', 'menu.供应商年审': '供应商年审',
'menu.年审模板管理': '年审模板管理', 'menu.年审模板管理': '年审模板管理',
'menu.年审模板管理新增': '年审模板管理新增',
'menu.年审模板管理详情': '年审模板管理详情',
'menu.年审任务管理': '年审任务管理', 'menu.年审任务管理': '年审任务管理',
'menu.年审任务管理新增': '年审任务管理新增',
'menu.年审任务管理详情': '年审任务管理详情',
'menu.年度查询': '年度查询', 'menu.年度查询': '年度查询',
'menu.年审打分': '年审打分',
'menu.年审打分详情': '年审打分详情',
'menu.年审结果': '年审结果', 'menu.年审结果': '年审结果',
'menu.年审结果一级查询列表': '年审结果一级查询列表',
'menu.年审结果二级查询列表': '年审结果二级查询列表',
'menu.年审结果详情': '年审结果详情',
'menu.年度审查': '年度审查', 'menu.年度审查': '年度审查',

View File

@ -24,6 +24,8 @@ import {
AnnualTaskStatusColor, AnnualTaskStatusColor,
AnnualTaskStatusOptions, AnnualTaskStatusOptions,
} from '@/dicts/supplierAnnualTaskManageDict'; } from '@/dicts/supplierAnnualTaskManageDict';
import type { DictItem } from '@/servers/api/dicts';
import { getDictList } from '@/servers/api/dicts';
const { RangePicker } = DatePicker; const { RangePicker } = DatePicker;
const { Option } = Select; const { Option } = Select;
@ -41,7 +43,7 @@ const SupplierAnnualTaskManage: React.FC = () => {
showQuickJumper: true, showQuickJumper: true,
}); });
const [searchParams, setSearchParams] = useState<any>({}); const [searchParams, setSearchParams] = useState<any>({});
const [evaluateStatus, setEvaluateStatus] = useState<DictItem[]>([]);
// 获取年度任务列表 // 获取年度任务列表
const fetchList = async (params: any = {}) => { const fetchList = async (params: any = {}) => {
try { try {
@ -78,6 +80,11 @@ const SupplierAnnualTaskManage: React.FC = () => {
// 首次加载获取数据 // 首次加载获取数据
useEffect(() => { useEffect(() => {
fetchList({ current: 1, pageSize: 10 }); fetchList({ current: 1, pageSize: 10 });
getDictList('project_status').then((res) => {
if (res.success) {
setEvaluateStatus(res.data);
}
});
// eslint-disable-next-line react-hooks/exhaustive-deps // eslint-disable-next-line react-hooks/exhaustive-deps
}, []); }, []);
@ -183,11 +190,9 @@ const SupplierAnnualTaskManage: React.FC = () => {
}, },
{ {
title: '评价状态', title: '评价状态',
dataIndex: 'status', dataIndex: 'statusName',
key: 'status', key: 'statusName',
width: 100, width: 100
render: (status: string, record: supplierAnnualTaskManage.TaskRecord) =>
getStatusTag(status, record.statusName),
}, },
{ {
title: '操作', title: '操作',
@ -232,9 +237,9 @@ const SupplierAnnualTaskManage: React.FC = () => {
</Form.Item> </Form.Item>
<Form.Item name="status" label="评价状态"> <Form.Item name="status" label="评价状态">
<Select placeholder="请选择状态" allowClear style={{ width: 150 }}> <Select placeholder="请选择状态" allowClear style={{ width: 150 }}>
{AnnualTaskStatusOptions.map((item) => ( {evaluateStatus.map((item) => (
<Option key={item.value} value={item.value}> <Option key={item.code} value={item.code}>
{item.label} {item.dicName}
</Option> </Option>
))} ))}
</Select> </Select>

View File

@ -1,6 +1,5 @@
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { import {
Card,
Form, Form,
Input, Input,
Select, Select,
@ -18,9 +17,11 @@ import {
SearchOutlined, SearchOutlined,
DeleteOutlined, DeleteOutlined,
} from '@ant-design/icons'; } from '@ant-design/icons';
import { TaskStatus, TaskStatusText, TaskStatusColor } from '@/dicts/supplierTaskDict'; import { TaskStatusText, TaskStatusColor } from '@/dicts/supplierTaskDict';
import { history } from 'umi'; import { history } from 'umi';
import { getEvaluateResultList, submitTaskForApproval } from '@/servers/api/supplierEvaluate'; import { getEvaluateResultList, submitTaskForApproval } from '@/servers/api/supplierEvaluate';
import { getDictList } from '@/servers/api/dicts';
import type { DictItem } from '@/servers/api/dicts';
@ -49,24 +50,7 @@ const SupplierEvaluateResult: React.FC = () => {
showTotal: (total) => `${total} 条记录`, showTotal: (total) => `${total} 条记录`,
}); });
const [searchParams, setSearchParams] = useState<EvaluateTaskSearchParams>({}); const [searchParams, setSearchParams] = useState<EvaluateTaskSearchParams>({});
const [evaluateStatus, setEvaluateStatus] = useState<DictItem[]>([]);
// 品类数据
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 ( const fetchResultList = async (
current = 1, current = 1,
@ -132,6 +116,11 @@ const SupplierEvaluateResult: React.FC = () => {
// 首次加载获取数据 // 首次加载获取数据
useEffect(() => { useEffect(() => {
fetchResultList(pagination.current, pagination.pageSize, {}); fetchResultList(pagination.current, pagination.pageSize, {});
getDictList('project_status').then((res) => {
if (res.success) {
setEvaluateStatus(res.data);
}
});
}, []); }, []);
// 处理表格分页变化 // 处理表格分页变化
@ -260,10 +249,9 @@ const SupplierEvaluateResult: React.FC = () => {
}, },
{ {
title: '评价状态', title: '评价状态',
dataIndex: 'status', dataIndex: 'statusName',
key: 'status', key: 'statusName',
width: 100, width: 100,
render: (status: string) => getStatusTag(status),
}, },
{ {
title: '操作', title: '操作',
@ -305,9 +293,11 @@ const SupplierEvaluateResult: React.FC = () => {
</Form.Item> </Form.Item>
<Form.Item name="status" label="评价状态"> <Form.Item name="status" label="评价状态">
<Select placeholder="请选择状态" allowClear style={{ width: 150 }}> <Select placeholder="请选择状态" allowClear style={{ width: 150 }}>
<Option value={TaskStatus.DRAFT}>{TaskStatusText[TaskStatus.DRAFT]}</Option> {evaluateStatus.map((item) => (
<Option value={TaskStatus.PROCESSING}>{TaskStatusText[TaskStatus.PROCESSING]}</Option> <Option key={item.code} value={item.code}>
<Option value={TaskStatus.COMPLETED}>{TaskStatusText[TaskStatus.COMPLETED]}</Option> {item.dicName}
</Option>
))}
</Select> </Select>
</Form.Item> </Form.Item>
<Form.Item className="filter-btns"> <Form.Item className="filter-btns">

View File

@ -63,7 +63,6 @@ const SupplierEvaluateResultScoreByList: React.FC = () => {
// 获取上级页面传递的数据 // 获取上级页面传递的数据
useEffect(() => { useEffect(() => {
console.log(location.state);
if (location.state?.record) { if (location.state?.record) {
setRecord(location.state.record); setRecord(location.state.record);
} }

View File

@ -19,6 +19,8 @@ import {
getSupplierDimension, getSupplierDimension,
getTaskPage, getTaskPage,
} from '@/servers/api/supplierEvaluate'; } from '@/servers/api/supplierEvaluate';
import { getDictList } from '@/servers/api/dicts';
import type { DictItem } from '@/servers/api/dicts';
const { Title } = Typography; const { Title } = Typography;
const { TabPane } = Tabs; const { TabPane } = Tabs;
@ -30,9 +32,9 @@ const SupplierEvaluateScore: React.FC = () => {
// 新增状态 // 新增状态
const [activeTab, setActiveTab] = useState<string>('supplier'); const [activeTab, setActiveTab] = useState<string>('supplier');
const [supplierTableData, setSupplierTableData] = useState< const [supplierTableData, setSupplierTableData] = useState<
supplierEvaluateScore.SupplierDimensionRecord[] SupplierEvaluateScore.SupplierDimensionResponse[]
>([]); >([]);
const [taskTableData, setTaskTableData] = useState<supplierEvaluateScore.TaskPageRecord[]>([]); const [taskTableData, setTaskTableData] = useState<SupplierEvaluateScore.TaskPageResponse[]>([]);
const [supplierTableLoading, setSupplierTableLoading] = useState<boolean>(false); const [supplierTableLoading, setSupplierTableLoading] = useState<boolean>(false);
const [taskTableLoading, setTaskTableLoading] = useState<boolean>(false); const [taskTableLoading, setTaskTableLoading] = useState<boolean>(false);
const [pagination, setPagination] = useState({ const [pagination, setPagination] = useState({
@ -40,6 +42,7 @@ const SupplierEvaluateScore: React.FC = () => {
pageSize: 10, pageSize: 10,
total: 0, total: 0,
}); });
const [evaluateStatus, setEvaluateStatus] = useState<DictItem[]>([]);
/* /*
name :关键字 name :关键字
startTime开始时间 startTime开始时间
@ -51,7 +54,7 @@ status状态
const values = filterForm.getFieldsValue(); const values = filterForm.getFieldsValue();
if (activeTab === 'supplier') { if (activeTab === 'supplier') {
const params: supplierEvaluateScore.SupplierDimensionRequest = { const params: SupplierEvaluateScore.SupplierDimensionRequest = {
basePageRequest: { basePageRequest: {
pageNo: pagination.current, pageNo: pagination.current,
pageSize: pagination.pageSize, pageSize: pagination.pageSize,
@ -68,7 +71,7 @@ status状态
return params; return params;
} else { } else {
const params: supplierEvaluateScore.TaskPageRequest = { const params: SupplierEvaluateScore.TaskPageRequest = {
basePageRequest: { basePageRequest: {
pageNo: pagination.current, pageNo: pagination.current,
pageSize: pagination.pageSize, pageSize: pagination.pageSize,
@ -153,6 +156,11 @@ status状态
// 初始化加载数据 // 初始化加载数据
useEffect(() => { useEffect(() => {
handleSearch(); handleSearch();
getDictList('project_status').then((res) => {
if (res.success) {
setEvaluateStatus(res.data);
}
});
}, [activeTab]); }, [activeTab]);
// 处理标签页切换 // 处理标签页切换
@ -381,10 +389,11 @@ status状态
<Form.Item name="status" label="评价状态"> <Form.Item name="status" label="评价状态">
<Select placeholder="请选择" style={{ width: 150 }} allowClear> <Select placeholder="请选择" style={{ width: 150 }} allowClear>
<Option value="1"></Option> {evaluateStatus.map((item) => (
<Option value="2"></Option> <Option key={item.code} value={item.code}>
<Option value="3"></Option> {item.dicName}
<Option value="4"></Option> </Option>
))}
</Select> </Select>
</Form.Item> </Form.Item>

View File

@ -9,12 +9,11 @@ import {
message, message,
Typography, Typography,
Empty, Empty,
Space,
Form, Form,
Modal, Modal,
} from 'antd'; } from 'antd';
import { ArrowLeftOutlined, SaveOutlined, ExclamationCircleOutlined } from '@ant-design/icons'; import { ArrowLeftOutlined, SaveOutlined, ExclamationCircleOutlined } from '@ant-design/icons';
import { getSupplierScoreDetail, saveEvaluateScore } from '@/servers/api/supplierEvaluate'; import { getIndicator, saveEvaluateScore } from '@/servers/api/supplierEvaluate';
import ScoreEvaluationTable from '@/components/ScoreEvaluationTable'; import ScoreEvaluationTable from '@/components/ScoreEvaluationTable';
import styles from './supplierEvaluateScore.less'; import styles from './supplierEvaluateScore.less';
@ -22,18 +21,14 @@ const { Title } = Typography;
const { confirm } = Modal; const { confirm } = Modal;
const SupplierEvaluateScoreDetail: React.FC = () => { const SupplierEvaluateScoreDetail: React.FC = () => {
const [form] = Form.useForm();
const location = useLocation<{ const location = useLocation<{
record: supplierEvaluateScore.SupplierDimensionRecord | supplierEvaluateScore.TaskPageRecord; record: SupplierEvaluateScore.SupplierDimensionData;
mode?: 'view' | 'score'; // 查看模式或打分模式 mode?: 'view' | 'score'; // 查看模式或打分模式
recordType: 'supplier' | 'task'; // 记录类型:供应商或任务 recordType: 'supplier' | 'task'; // 记录类型:供应商或任务
}>(); }>();
const [loading, setLoading] = useState<boolean>(false); const [loading, setLoading] = useState<boolean>(false);
const [submitting, setSubmitting] = useState<boolean>(false); const [submitting, setSubmitting] = useState<boolean>(false);
const [saving, setSaving] = useState<boolean>(false); const [scoreDetail, setScoreDetail] = useState<SupplierEvaluateResult.EvaluateScoreDetailData>();
const [scoreDetail, setScoreDetail] = useState<supplierEvaluateScore.ScoreDetailData | null>(
null,
);
const [scoreData, setScoreData] = useState<any[]>([]); const [scoreData, setScoreData] = useState<any[]>([]);
const [record, setRecord] = useState<any>(null); const [record, setRecord] = useState<any>(null);
const [mode, setMode] = useState<'view' | 'score'>('view'); // 默认为查看模式 const [mode, setMode] = useState<'view' | 'score'>('view'); // 默认为查看模式
@ -63,7 +58,7 @@ const SupplierEvaluateScoreDetail: React.FC = () => {
}, [location]); }, [location]);
// 将API数据转换为ScoreEvaluationTable组件所需的格式 // 将API数据转换为ScoreEvaluationTable组件所需的格式
const formatDataForScoreTable = (data: supplierEvaluateScore.ScoreDetailData) => { const formatDataForScoreTable = (data: SupplierEvaluateResult.EvaluateScoreDetailData) => {
if (!data?.taskIndicatorVo) return []; if (!data?.taskIndicatorVo) return [];
return data.taskIndicatorVo.map((indicator) => { return data.taskIndicatorVo.map((indicator) => {
@ -103,7 +98,7 @@ const SupplierEvaluateScoreDetail: React.FC = () => {
setLoading(true); setLoading(true);
try { try {
const response = await getSupplierScoreDetail(record.id); const response = await getIndicator(record.id);
if (response.success && response.data) { if (response.success && response.data) {
setScoreDetail(response.data); setScoreDetail(response.data);
@ -167,7 +162,7 @@ const SupplierEvaluateScoreDetail: React.FC = () => {
setSubmitting(true); setSubmitting(true);
try { try {
// 构建提交数据 // 构建提交数据
const submitData: supplierEvaluateScore.ScoreSaveRequest = { const submitData: SupplierEvaluateScore.ScoreSaveRequest = {
id: record.id, id: record.id,
scoreVoList: scoreData.flatMap((item) => { scoreVoList: scoreData.flatMap((item) => {
return item.indicatorNdList.map((subItem: any) => ({ return item.indicatorNdList.map((subItem: any) => ({

View File

@ -6,6 +6,8 @@ import { history, useIntl } from 'umi';
import { TaskStatus, TaskStatusText, TaskStatusColor } from '@/dicts/supplierTaskDict'; import { TaskStatus, TaskStatusText, TaskStatusColor } from '@/dicts/supplierTaskDict';
import { getTaskList } from '@/servers/api/supplierEvaluate'; import { getTaskList } from '@/servers/api/supplierEvaluate';
import styles from './supplierTaskManage.less'; import styles from './supplierTaskManage.less';
import { getDictList } from '@/servers/api/dicts';
import type { DictItem } from '@/servers/api/dicts';
const { Option } = Select; const { Option } = Select;
const { RangePicker } = DatePicker; const { RangePicker } = DatePicker;
@ -30,7 +32,7 @@ const SupplierTaskManage: React.FC = () => {
pageSize: 10, pageSize: 10,
}, },
}); });
const [evaluateStatus, setEvaluateStatus] = useState<DictItem[]>([]);
const fetchTaskList = async ( const fetchTaskList = async (
current: number = 1, current: number = 1,
pageSize: number = 10, pageSize: number = 10,
@ -72,6 +74,12 @@ const SupplierTaskManage: React.FC = () => {
useEffect(() => { useEffect(() => {
fetchTaskList(pagination.current!, pagination.pageSize!, searchParams); fetchTaskList(pagination.current!, pagination.pageSize!, searchParams);
// 从字典接口中获取评价状态
getDictList('project_status').then((res) => {
if (res.success) {
setEvaluateStatus(res.data);
}
});
}, []); }, []);
const handleView = (record: SupplierTaskManage.TaskItem) => { const handleView = (record: SupplierTaskManage.TaskItem) => {
@ -85,15 +93,6 @@ const SupplierTaskManage: React.FC = () => {
const handleDivision = (record: SupplierTaskManage.TaskItem) => { const handleDivision = (record: SupplierTaskManage.TaskItem) => {
history.push(`supplierTaskManageAdd?id=${record.id}&mode=division`); history.push(`supplierTaskManageAdd?id=${record.id}&mode=division`);
}; };
const getStatusTag = (status: string) => {
const color = TaskStatusColor[status as keyof typeof TaskStatusColor] || 'default';
const text =
TaskStatusText[status as keyof typeof TaskStatusText] ||
intl.formatMessage({ id: 'supplierTaskManage.status.unknown' });
return <Tag color={color}>{text}</Tag>;
};
const handleTableChange = (newPagination: TablePaginationConfig) => { const handleTableChange = (newPagination: TablePaginationConfig) => {
fetchTaskList(newPagination.current!, newPagination.pageSize!, searchParams); fetchTaskList(newPagination.current!, newPagination.pageSize!, searchParams);
}; };
@ -179,7 +178,6 @@ const SupplierTaskManage: React.FC = () => {
dataIndex: 'statusName', dataIndex: 'statusName',
key: 'statusName', key: 'statusName',
width: 100, width: 100,
// render: (status: string) => getStatusTag(status),
}, },
{ {
title: intl.formatMessage({ id: 'supplierTaskManage.column.action' }), title: intl.formatMessage({ id: 'supplierTaskManage.column.action' }),
@ -240,15 +238,11 @@ const SupplierTaskManage: React.FC = () => {
placeholder={intl.formatMessage({ id: 'supplierTaskManage.placeholder.status' })} placeholder={intl.formatMessage({ id: 'supplierTaskManage.placeholder.status' })}
allowClear allowClear
> >
<Option value={TaskStatus.DRAFT}> {evaluateStatus.map((item) => (
{intl.formatMessage({ id: 'supplierTaskManage.status.draft' })} <Option key={item.code} value={item.code}>
</Option> {item.dicName}
<Option value={TaskStatus.PROCESSING}>
{intl.formatMessage({ id: 'supplierTaskManage.status.processing' })}
</Option>
<Option value={TaskStatus.COMPLETED}>
{intl.formatMessage({ id: 'supplierTaskManage.status.completed' })}
</Option> </Option>
))}
</Select> </Select>
</Form.Item> </Form.Item>
<Form.Item <Form.Item

View File

@ -304,7 +304,7 @@ export async function saveEvaluateScore(params: SupplierEvaluateScore.ScoreSaveR
* @returns * @returns
*/ */
export async function getIndicator(id: string) { export async function getIndicator(id: string) {
return request<SupplierEvaluateResult.EvaluateScoreIndicator>('/coscoEvaluate/user/getIndicator', { return request<SupplierEvaluateScore.ScoreDetailResponse>('/coscoEvaluate/user/getIndicator', {
method: 'GET', method: 'GET',
params: { id }, params: { id },
}); });

View File

@ -4,18 +4,17 @@ declare namespace SupplierEvaluateScore {
// 现有接口定义 // 现有接口定义
interface ScoreDetailResponse { interface ScoreDetailResponse {
code: number; code: number;
data: any; // 使用 SupplierEvaluateResult.EvaluateScoreDetailData data: SupplierEvaluateResult.EvaluateScoreDetailData; // 使用 SupplierEvaluateResult.EvaluateScoreDetailData
message: string; message: string;
success: boolean; success: boolean;
} }
interface ScoreSaveRequest { interface ScoreSaveRequest {
id: string; id: string;
score: number; scoreVoList: {
indicators: {
id: string; id: string;
score: number; score: number;
remarks?: string; remark?: string;
}[]; }[];
} }
@ -27,27 +26,90 @@ declare namespace SupplierEvaluateScore {
} }
interface SupplierDimensionRequest { interface SupplierDimensionRequest {
current?: number; basePageRequest: {
pageSize?: number; pageNo: number;
taskId: string; pageSize: number;
supplierId: string; };
name?: string;
status?: string;
startTime?: string;
endTime?: string;
} }
/**
* 获取供应商维度响应
*/
interface SupplierDimensionResponse { interface SupplierDimensionResponse {
code: number; code: number;
data: any; data: SupplierDimensionData;
message: string; message: string;
success: boolean; success: boolean;
[property: string]: any;
}
/**
* 供应商维度数据
*/
interface SupplierDimensionData {
categoryId: null;
categoryLimitation: string;
createBy: null;
createDate: null;
createTime: null;
deleteFlag: null;
delFlag: string;
deptId: null;
endTime: string;
evaluateTheme: string;
evaluateYear: string;
id: string;
indicatorList: IndicatorListItem[];
lastUpdateTime: null;
startTime: string;
status: string;
supplierIds: SupplierIdItem[];
templateId: string;
tenantId: null;
tenantName: null;
updateBy: null;
updateDate: null;
updateTime: null;
weightDept: null;
weightStatus: string;
weightValue: null;
[property: string]: any;
}
/**
* 指标列表项
*/
interface IndicatorListItem {
indicatorIds: null[];
type: string;
userId: string;
[property: string]: any;
}
/**
* 供应商ID项
*/
interface SupplierIdItem {
id: string;
userIds: any[];
[property: string]: any;
} }
interface TaskPageRequest { interface TaskPageRequest {
current?: number; basePageRequest: {
pageSize?: number; pageNo: number;
evaluateTheme?: string; pageSize: number;
evaluateYear?: string; };
name?: string;
status?: string;
startTime?: string; startTime?: string;
endTime?: string; endTime?: string;
status?: string; evaluateTheme?: string;
evaluateYear?: string;
} }
interface TaskPageResponse { interface TaskPageResponse {