路由多语言维护, 优化layoutHeader组件样式,供应商评价-打分详情更改bug
This commit is contained in:
@ -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',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -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" />
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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',
|
||||||
|
@ -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.年度审查': '年度审查',
|
||||||
|
|
||||||
|
|
||||||
|
@ -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>
|
||||||
|
@ -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">
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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>
|
||||||
|
|
||||||
|
@ -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) => ({
|
||||||
|
@ -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}>
|
</Option>
|
||||||
{intl.formatMessage({ id: 'supplierTaskManage.status.processing' })}
|
))}
|
||||||
</Option>
|
|
||||||
<Option value={TaskStatus.COMPLETED}>
|
|
||||||
{intl.formatMessage({ id: 'supplierTaskManage.status.completed' })}
|
|
||||||
</Option>
|
|
||||||
</Select>
|
</Select>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
|
@ -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 },
|
||||||
});
|
});
|
||||||
|
@ -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 {
|
||||||
|
Reference in New Issue
Block a user