修改路由配置
This commit is contained in:
@ -32,222 +32,195 @@ export default [
|
||||
path: '/index',
|
||||
meta: {
|
||||
title: '首页',
|
||||
icon: 'icon-shouye',
|
||||
},
|
||||
component: '@/pages/index',
|
||||
},
|
||||
// 供应商评价分组
|
||||
{
|
||||
name: 'userManage',
|
||||
path: '/userManage',
|
||||
name: 'supplierEvaluate',
|
||||
path: '/supplierEvaluate',
|
||||
meta: {
|
||||
title: '用户管理',
|
||||
title: '供应商评价',
|
||||
icon: 'icon-youqinglianjie',
|
||||
},
|
||||
component: '@/pages/userManage/userManage',
|
||||
component: '@/layouts/MainLayout',
|
||||
routes: [
|
||||
{
|
||||
name: 'supplierTemplateManage',
|
||||
path: 'supplierTemplateManage',
|
||||
meta: {
|
||||
title: '模板管理',
|
||||
icon: 'icon-fenlei',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierTemplateManage/supplierTemplateManage',
|
||||
},
|
||||
{
|
||||
name: 'supplierTemplateManageAdd',
|
||||
path: 'supplierTemplateManageAdd',
|
||||
meta: {
|
||||
title: '模板管理新增',
|
||||
hide: true,
|
||||
icon: 'icon-fenlei',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierTemplateManage/supplierTemplateManageAdd',
|
||||
},
|
||||
{
|
||||
name: 'supplierTemplateManageDetail',
|
||||
path: 'supplierTemplateManageDetail',
|
||||
meta: {
|
||||
title: '模板管理详情',
|
||||
hide: true,
|
||||
icon: 'icon-fenlei',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierTemplateManage/supplierTemplateManageDetail',
|
||||
},
|
||||
{
|
||||
name: 'supplierTaskManage',
|
||||
path: 'supplierTaskManage',
|
||||
meta: {
|
||||
title: '任务管理',
|
||||
icon: 'icon-liebiaomoshi',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierTaskManage/supplierTaskManage',
|
||||
},
|
||||
{
|
||||
name: 'supplierTaskManageAdd',
|
||||
path: 'supplierTaskManageAdd',
|
||||
meta: {
|
||||
title: '任务管理新增',
|
||||
hide: true,
|
||||
icon: 'icon-liebiaomoshi',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierTaskManage/supplierTaskManageAdd',
|
||||
},
|
||||
{
|
||||
name: 'supplierEvaluateScore',
|
||||
path: 'supplierEvaluateScore',
|
||||
meta: {
|
||||
title: '评价打分',
|
||||
icon: 'icon-liebiaomoshi',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierEvaluateScore/supplierEvaluateScore',
|
||||
},
|
||||
{
|
||||
name: 'supplierEvaluateResult',
|
||||
path: 'supplierEvaluateResult',
|
||||
meta: {
|
||||
title: '评价结果',
|
||||
icon: 'icon-liebiaomoshi',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierEvaluateResult/supplierEvaluateResult',
|
||||
},
|
||||
{
|
||||
name: 'supplierEvaluateResultInfo',
|
||||
path: 'supplierEvaluateResultInfo',
|
||||
meta: {
|
||||
title: '评价结果详情',
|
||||
hide: true,
|
||||
icon: 'icon-liebiaomoshi',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierEvaluateResult/supplierEvaluateResultInfo',
|
||||
},
|
||||
{
|
||||
name: 'supplierEvaluateResultScoreDetail',
|
||||
path: 'supplierEvaluateResultScoreDetail',
|
||||
meta: {
|
||||
title: '评价结果得分明细',
|
||||
hide: true,
|
||||
icon: 'icon-liebiaomoshi',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierEvaluateResult/supplierEvaluateResultScoreDetail',
|
||||
},
|
||||
{
|
||||
name: 'supplierEvaluateResultScoreByList',
|
||||
path: 'supplierEvaluateResultScoreByList',
|
||||
meta: {
|
||||
title: '评价结果打分情况',
|
||||
hide: true,
|
||||
icon: 'icon-liebiaomoshi',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierEvaluateResult/supplierEvaluateResultScoreByList',
|
||||
},
|
||||
{
|
||||
name: 'supplierEvaluateResultByZb',
|
||||
path: 'supplierEvaluateResultByZb',
|
||||
meta: {
|
||||
title: '评价结果详情',
|
||||
hide: true,
|
||||
icon: 'icon-liebiaomoshi',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierEvaluateResult/supplierEvaluateResultByZb',
|
||||
},
|
||||
{
|
||||
name: 'supplierEvaluateResultApproval',
|
||||
path: 'supplierEvaluateResultApproval',
|
||||
meta: {
|
||||
title: '评价结果审批',
|
||||
icon: 'icon-liebiaomoshi',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierEvaluateResultApproval/supplierEvaluateResultApproval',
|
||||
},
|
||||
{
|
||||
name: 'supplierEvaluateResultApprovalInfo',
|
||||
path: '/supplierEvaluateResultApproval/supplierEvaluateResultApprovalInfo',
|
||||
meta: {
|
||||
title: '评价审批详情',
|
||||
hide: true,
|
||||
icon: 'icon-liebiaomoshi',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierEvaluateResultApproval/supplierEvaluateResultApprovalInfo',
|
||||
}
|
||||
]
|
||||
},
|
||||
// 供应商年审分组
|
||||
{
|
||||
name: 'downloadManage',
|
||||
path: '/downloadManage',
|
||||
name: 'supplierAnnual',
|
||||
path: '/supplierAnnual',
|
||||
meta: {
|
||||
title: '下载管理',
|
||||
title: '供应商年审',
|
||||
icon: 'icon-fenlei',
|
||||
},
|
||||
component: '@/pages/downloadManage/downloadManage',
|
||||
},
|
||||
{
|
||||
name: 'noticeManage',
|
||||
path: '/noticeManage',
|
||||
meta: {
|
||||
title: '公告管理',
|
||||
},
|
||||
component: '@/pages/noticeManage/noticeManage',
|
||||
},
|
||||
{
|
||||
name: 'policyManage',
|
||||
path: '/policyManage',
|
||||
component: '@/pages/policyManage/policyManage',
|
||||
},
|
||||
{
|
||||
name: 'aboutManage',
|
||||
path: '/aboutManage',
|
||||
meta: {
|
||||
title: '关于我们',
|
||||
},
|
||||
component: '@/pages/aboutManage/aboutManage',
|
||||
},
|
||||
{
|
||||
name: 'helpManage',
|
||||
path: '/helpManage',
|
||||
meta: {
|
||||
title: '帮助中心',
|
||||
},
|
||||
component: '@/pages/helpManage/helpManage',
|
||||
},
|
||||
{
|
||||
name: 'readQuestionManage',
|
||||
path: '/readQuestionManage',
|
||||
meta: {
|
||||
title: '已读问题',
|
||||
},
|
||||
component: '@/pages/userQuestionManage/readQuestionManage',
|
||||
},
|
||||
{
|
||||
name: 'unreadQuestionManage',
|
||||
path: '/unreadQuestionManage',
|
||||
meta: {
|
||||
title: '未读问题',
|
||||
},
|
||||
component: '@/pages/userQuestionManage/unreadQuestionManage',
|
||||
},
|
||||
{
|
||||
name: 'friendLinkCategory',
|
||||
path: '/friendLinkCategory',
|
||||
meta: {
|
||||
title: '友情链接分类',
|
||||
},
|
||||
component: '@/pages/friendLinkManage/friendLinkCategory',
|
||||
},
|
||||
{
|
||||
name: 'friendLinkManage',
|
||||
path: '/friendLinkManage',
|
||||
meta: {
|
||||
title: '友情链接管理',
|
||||
},
|
||||
component: '@/pages/friendLinkManage/friendLinkManage',
|
||||
},
|
||||
{
|
||||
name: 'supplierTemplateManage',
|
||||
path: '/supplierTemplateManage',
|
||||
meta: {
|
||||
title: '供应商模板管理',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierTemplateManage/supplierTemplateManage',
|
||||
},
|
||||
{
|
||||
name: 'supplierTemplateManageAdd',
|
||||
path: '/supplierTemplateManage/supplierTemplateManageAdd',
|
||||
meta: {
|
||||
title: '供应商模板管理新增',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierTemplateManage/supplierTemplateManageAdd',
|
||||
},
|
||||
{
|
||||
name: 'supplierTemplateManageDetail',
|
||||
path: '/supplierTemplateManage/supplierTemplateManageDetail',
|
||||
meta: {
|
||||
title: '供应商模板管理详情',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierTemplateManage/supplierTemplateManageDetail',
|
||||
},
|
||||
{
|
||||
name: 'supplierTaskManage',
|
||||
path: '/supplierTaskManage',
|
||||
meta: {
|
||||
title: '供应商任务管理',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierTaskManage/supplierTaskManage',
|
||||
},
|
||||
{
|
||||
name: 'supplierTaskManageAdd',
|
||||
path: '/supplierTaskManage/supplierTaskManageAdd',
|
||||
meta: {
|
||||
title: '供应商任务管理新增',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierTaskManage/supplierTaskManageAdd',
|
||||
},
|
||||
{
|
||||
name: 'supplierEvaluateScore',
|
||||
path: '/supplierEvaluateScore',
|
||||
meta: {
|
||||
title: '供应商评分管理',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierEvaluateScore/supplierEvaluateScore',
|
||||
},
|
||||
{
|
||||
name: 'supplierEvaluateResult',
|
||||
path: '/supplierEvaluateResult',
|
||||
meta: {
|
||||
title: '供应商评价结果',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierEvaluateResult/supplierEvaluateResult',
|
||||
},
|
||||
{
|
||||
name: 'supplierEvaluateResultInfo',
|
||||
path: '/supplierEvaluateResult/supplierEvaluateResultInfo',
|
||||
meta: {
|
||||
title: '供应商评价结果详情',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierEvaluateResult/supplierEvaluateResultInfo',
|
||||
},
|
||||
{
|
||||
name: 'supplierEvaluateResultScoreDetail',
|
||||
path: '/supplierEvaluateResult/supplierEvaluateResultScoreDetail',
|
||||
meta: {
|
||||
title: '供应商评价结果得分明细',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierEvaluateResult/supplierEvaluateResultScoreDetail',
|
||||
},
|
||||
{
|
||||
name: 'supplierEvaluateResultScoreByList',
|
||||
path: '/supplierEvaluateResult/supplierEvaluateResultScoreByList',
|
||||
meta: {
|
||||
title: '供应商评价结果打分情况',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierEvaluateResult/supplierEvaluateResultScoreByList',
|
||||
},
|
||||
{
|
||||
name: 'supplierEvaluateResultByZb',
|
||||
path: '/supplierEvaluateResult/supplierEvaluateResultByZb',
|
||||
meta: {
|
||||
title: '评价结果详情',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierEvaluateResult/supplierEvaluateResultByZb',
|
||||
},
|
||||
{
|
||||
name: 'supplierEvaluateResultApproval',
|
||||
path: '/supplierEvaluateResultApproval',
|
||||
meta: {
|
||||
title: '供应商评价结果审批',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierEvaluateResultApproval/supplierEvaluateResultApproval',
|
||||
},
|
||||
{
|
||||
name: 'supplierEvaluateResultApprovalInfo',
|
||||
path: '/supplierEvaluateResultApproval/supplierEvaluateResultApprovalInfo',
|
||||
meta: {
|
||||
title: '供应商评价审批',
|
||||
},
|
||||
component: '@/pages/supplierEvaluateManage/supplierEvaluateResultApproval/supplierEvaluateResultApprovalInfo',
|
||||
},
|
||||
{
|
||||
name: 'supplierAnnualTemplateManage',
|
||||
path: '/supplierAnnualTemplateManage',
|
||||
meta: {
|
||||
title: '供应商年度模板管理',
|
||||
},
|
||||
component: '@/pages/supplierAnnualManage/supplierAnnualTemplateManage/supplierAnnualTemplateManage',
|
||||
},
|
||||
{
|
||||
name: 'supplierAnnualTaskManage',
|
||||
path: '/supplierAnnualTaskManage',
|
||||
meta: {
|
||||
title: '供应商年度任务管理',
|
||||
},
|
||||
component: '@/pages/supplierAnnualManage/supplierAnnualTaskManage/supplierAnnualTaskManage',
|
||||
},
|
||||
{
|
||||
name: 'supplierAnnualQuery',
|
||||
path: '/supplierAnnualQuery',
|
||||
meta: {
|
||||
title: '供应商年度查询',
|
||||
},
|
||||
component: '@/pages/supplierAnnualManage/supplierAnnualQuery/supplierAnnualQuery',
|
||||
},
|
||||
{
|
||||
name: 'supplierAnnualResult',
|
||||
path: '/supplierAnnualResult',
|
||||
meta: {
|
||||
title: '供应商年度结果',
|
||||
},
|
||||
component: '@/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResult',
|
||||
},
|
||||
component: '@/layouts/MainLayout',
|
||||
routes: [
|
||||
{
|
||||
name: 'supplierAnnualTemplateManage',
|
||||
path: 'supplierAnnualTemplateManage',
|
||||
meta: {
|
||||
title: '年审模板管理',
|
||||
icon: 'icon-fenlei',
|
||||
},
|
||||
component: '@/pages/supplierAnnualManage/supplierAnnualTemplateManage/supplierAnnualTemplateManage',
|
||||
},
|
||||
{
|
||||
name: 'supplierAnnualTaskManage',
|
||||
path: 'supplierAnnualTaskManage',
|
||||
meta: {
|
||||
title: '年审任务管理',
|
||||
icon: 'icon-liebiaomoshi',
|
||||
},
|
||||
component: '@/pages/supplierAnnualManage/supplierAnnualTaskManage/supplierAnnualTaskManage',
|
||||
},
|
||||
{
|
||||
name: 'supplierAnnualQuery',
|
||||
path: 'supplierAnnualQuery',
|
||||
meta: {
|
||||
title: '年度查询',
|
||||
icon: 'icon-liebiaomoshi',
|
||||
},
|
||||
component: '@/pages/supplierAnnualManage/supplierAnnualQuery/supplierAnnualQuery',
|
||||
},
|
||||
{
|
||||
name: 'supplierAnnualResult',
|
||||
path: 'supplierAnnualResult',
|
||||
meta: {
|
||||
title: '年审结果',
|
||||
icon: 'icon-liebiaomoshi',
|
||||
},
|
||||
component: '@/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResult',
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
|
@ -6,8 +6,14 @@ const { Header, Footer, Sider, Content } = Layout;
|
||||
import HeaderComponent from './Header';
|
||||
import SiderMenu from './SiderMenu';
|
||||
import './layout.less';
|
||||
|
||||
const LayoutIndex: React.FC = (props) => {
|
||||
const { children } = props;
|
||||
console.log('主布局渲染:', {
|
||||
children: !!children,
|
||||
type: children ? typeof children : 'none'
|
||||
});
|
||||
|
||||
return (
|
||||
<>
|
||||
<Layout>
|
||||
@ -31,4 +37,5 @@ const LayoutIndex: React.FC = (props) => {
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default LayoutIndex;
|
||||
|
36
src/layouts/MainLayout.tsx
Normal file
36
src/layouts/MainLayout.tsx
Normal file
@ -0,0 +1,36 @@
|
||||
import React from 'react';
|
||||
import { Layout } from 'antd';
|
||||
import { useLocation } from 'umi';
|
||||
|
||||
const { Content } = Layout;
|
||||
|
||||
/**
|
||||
* 供应商评价和年审的子路由布局组件
|
||||
*/
|
||||
const MainLayout: React.FC = (props) => {
|
||||
const { children } = props;
|
||||
const location = useLocation();
|
||||
|
||||
// 调试信息,帮助排查问题
|
||||
console.log('MainLayout渲染:', {
|
||||
path: location.pathname,
|
||||
children: !!children
|
||||
});
|
||||
|
||||
return (
|
||||
<Layout style={{ padding: '0 24px', minHeight: 'calc(100vh - 140px)' }}>
|
||||
<Content
|
||||
style={{
|
||||
margin: 0,
|
||||
minHeight: 280,
|
||||
background: '#fff',
|
||||
padding: '24px',
|
||||
}}
|
||||
>
|
||||
{children || <div>请选择子菜单项</div>}
|
||||
</Content>
|
||||
</Layout>
|
||||
);
|
||||
};
|
||||
|
||||
export default MainLayout;
|
@ -2,167 +2,81 @@ import React, { useEffect, useState } from 'react';
|
||||
import { Menu } from 'antd';
|
||||
import { useIntl, Link, useHistory } from 'umi';
|
||||
import IconFont from '@/components/IconFont/IconFont';
|
||||
import routerConfig from '../../config/router.config';
|
||||
|
||||
// 路由接口定义
|
||||
interface IRouteItem {
|
||||
path: string;
|
||||
component?: string;
|
||||
name?: string;
|
||||
meta?: {
|
||||
title?: string;
|
||||
hide?: boolean;
|
||||
icon?: string;
|
||||
};
|
||||
routes?: IRouteItem[];
|
||||
children?: IRouteItem[];
|
||||
redirect?: string;
|
||||
}
|
||||
|
||||
interface IMenuItem {
|
||||
label: string;
|
||||
key: string;
|
||||
path?: string;
|
||||
path: string;
|
||||
icon: string;
|
||||
children?: IMenuItem[];
|
||||
}
|
||||
// 引入样式文件 useIntl().formatMessage({ id: 'menu.首页' }),
|
||||
const items: IMenuItem[] = [
|
||||
{
|
||||
label: 'menu.首页',
|
||||
key: 'index',
|
||||
path: '/index',
|
||||
icon: 'icon-shouye',
|
||||
},
|
||||
{
|
||||
label: 'menu.管理员管理',
|
||||
key: 'userManage',
|
||||
path: '/userManage',
|
||||
icon: 'icon-guanliyuan',
|
||||
},
|
||||
{
|
||||
label: 'menu.下载中心管理',
|
||||
key: 'downloadManage',
|
||||
path: '/downloadManage',
|
||||
icon: 'icon-Tab_xiazaizhongxin',
|
||||
},
|
||||
{
|
||||
label: 'menu.通知中心管理',
|
||||
key: 'noticeManage',
|
||||
path: '/noticeManage',
|
||||
icon: 'icon-tongzhizhongxin',
|
||||
},
|
||||
{
|
||||
label: 'menu.政策法规管理',
|
||||
key: 'policyManage',
|
||||
path: '/policyManage',
|
||||
icon: 'icon-zhengcefagui',
|
||||
},
|
||||
{
|
||||
label: 'menu.关于我们管理',
|
||||
key: 'aboutManage',
|
||||
path: '/aboutManage',
|
||||
icon: 'icon-guanyuwomen',
|
||||
},
|
||||
{
|
||||
label: 'menu.帮助中心管理',
|
||||
key: 'helpManage',
|
||||
path: '/helpManage',
|
||||
icon: 'icon-bangzhuzhongxin'
|
||||
},
|
||||
{
|
||||
label: 'menu.用户提问管理',
|
||||
key: 'userQuestionManage',
|
||||
icon: 'icon-yonghutiwen',
|
||||
path: '/userQuestionManage',
|
||||
children: [
|
||||
{
|
||||
label: 'menu.已阅问题',
|
||||
key: 'readQuestionManage',
|
||||
icon: 'icon-yiyue',
|
||||
path: '/readQuestionManage',
|
||||
},
|
||||
{
|
||||
label: 'menu.未阅问题',
|
||||
key: 'unreadQuestionManage',
|
||||
icon: 'icon-weiyuedu',
|
||||
path: '/unreadQuestionManage',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: 'menu.友情链接管理',
|
||||
key: 'friendLinkManage',
|
||||
icon: 'icon-youqinglianjie',
|
||||
children: [
|
||||
{
|
||||
label: 'menu.友情链接分类',
|
||||
key: 'friendLinkCategory',
|
||||
icon: 'icon-fenlei',
|
||||
path: '/friendLinkCategory',
|
||||
},
|
||||
{
|
||||
label: 'menu.友情链接列表',
|
||||
key: 'friendLinkList',
|
||||
icon: 'icon-liebiaomoshi',
|
||||
path: '/friendLinkManage',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: 'menu.供应商评价',
|
||||
key: 'supplierEvaluateManage',
|
||||
icon: 'icon-youqinglianjie',
|
||||
children: [
|
||||
{
|
||||
label: 'menu.模板管理',
|
||||
key: 'supplierTemplateManage',
|
||||
icon: 'icon-fenlei',
|
||||
path: '/supplierTemplateManage',
|
||||
},
|
||||
{
|
||||
label: 'menu.任务管理',
|
||||
key: 'supplierTaskManage',
|
||||
icon: 'icon-liebiaomoshi',
|
||||
path: '/supplierTaskManage',
|
||||
},
|
||||
{
|
||||
label: 'menu.评价打分',
|
||||
key: 'supplierEvaluateScore',
|
||||
icon: 'icon-liebiaomoshi',
|
||||
path: '/supplierEvaluateScore',
|
||||
},
|
||||
{
|
||||
label: 'menu.评价结果',
|
||||
key: 'supplierEvaluateResult',
|
||||
icon: 'icon-liebiaomoshi',
|
||||
path: '/supplierEvaluateResult',
|
||||
},
|
||||
{
|
||||
label: 'menu.评价结果审批',
|
||||
key: 'supplierEvaluateResultApproval',
|
||||
icon: 'icon-liebiaomoshi',
|
||||
path: '/supplierEvaluateResultApproval',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: 'menu.供应商年审',
|
||||
key: 'supplierAnnualManage',
|
||||
icon: 'icon-youqinglianjie',
|
||||
children: [
|
||||
{
|
||||
label: 'menu.年审模板管理',
|
||||
key: 'supplierAnnualTemplateManage',
|
||||
icon: 'icon-fenlei',
|
||||
path: '/supplierAnnualTemplateManage',
|
||||
},
|
||||
{
|
||||
label: 'menu.年审任务管理',
|
||||
key: 'supplierAnnualTaskManage',
|
||||
icon: 'icon-liebiaomoshi',
|
||||
path: '/supplierAnnualTaskManage',
|
||||
},
|
||||
{
|
||||
label: 'menu.年度查询',
|
||||
key: 'supplierAnnualQuery',
|
||||
icon: 'icon-liebiaomoshi',
|
||||
path: '/supplierAnnualQuery',
|
||||
},
|
||||
{
|
||||
label: 'menu.年审结果',
|
||||
key: 'supplierAnnualResult',
|
||||
icon: 'icon-liebiaomoshi',
|
||||
path: '/supplierAnnualResult',
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
const SiderMenu: React.FC = (props) => {
|
||||
// 获取路由配置转换为菜单项
|
||||
const generateMenuItems = (): IMenuItem[] => {
|
||||
// 找到主布局下的路由
|
||||
const mainLayoutRoute = routerConfig.find((route: IRouteItem) => route.path === '/');
|
||||
if (!mainLayoutRoute || !mainLayoutRoute.routes) return [];
|
||||
|
||||
// 递归处理路由,生成菜单项
|
||||
const processRoutes = (routes: IRouteItem[], parentPath: string = ''): IMenuItem[] => {
|
||||
return routes
|
||||
.filter(route => !route.redirect && route.name && !route.meta?.hide)
|
||||
.map(route => {
|
||||
// 构建完整路径
|
||||
const routePath = route.path.startsWith('/')
|
||||
? route.path
|
||||
: `${parentPath}/${route.path}`.replace(/\/+/g, '/');
|
||||
|
||||
// 创建菜单项
|
||||
const menuItem: IMenuItem = {
|
||||
label: route.meta?.title ? `menu.${route.meta.title}` : `menu.${route.name || ''}`,
|
||||
key: route.name || '',
|
||||
path: routePath,
|
||||
icon: route.meta?.icon || 'icon-liebiaomoshi',
|
||||
};
|
||||
|
||||
// 如果有子路由,递归处理
|
||||
if (route.routes && route.routes.length > 0) {
|
||||
const children = processRoutes(route.routes, routePath);
|
||||
if (children.length > 0) {
|
||||
menuItem.children = children;
|
||||
}
|
||||
}
|
||||
|
||||
// 如果有children,递归处理
|
||||
if (route.children && route.children.length > 0) {
|
||||
const children = processRoutes(route.children, routePath);
|
||||
if (children.length > 0) {
|
||||
menuItem.children = children;
|
||||
}
|
||||
}
|
||||
|
||||
return menuItem;
|
||||
});
|
||||
};
|
||||
|
||||
return processRoutes(mainLayoutRoute.routes);
|
||||
};
|
||||
|
||||
const items: IMenuItem[] = generateMenuItems();
|
||||
|
||||
const SiderMenu: React.FC = (props: any) => {
|
||||
//当前激活菜单
|
||||
const [current, setCurrent] = useState('index');
|
||||
const intl = useIntl();
|
||||
@ -170,37 +84,77 @@ const SiderMenu: React.FC = (props) => {
|
||||
useEffect(() => {
|
||||
// 获取当前激活菜单
|
||||
const path = history.location.pathname;
|
||||
const menu = items.find((item) => item.path === path);
|
||||
if (menu) {
|
||||
setCurrent(menu.key);
|
||||
|
||||
// 递归查找匹配的菜单项
|
||||
const findMatchingMenuItem = (menuItems: IMenuItem[]): string | null => {
|
||||
for (const item of menuItems) {
|
||||
if (item.path === path) {
|
||||
return item.key;
|
||||
}
|
||||
if (item.children) {
|
||||
const childMatch = findMatchingMenuItem(item.children);
|
||||
if (childMatch) return childMatch;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
const matchedKey = findMatchingMenuItem(items);
|
||||
if (matchedKey) {
|
||||
setCurrent(matchedKey);
|
||||
} else {
|
||||
// 如果跳转的详情页面获取根级激活菜单
|
||||
const rootActiveMenu = path.split('/')[1];
|
||||
setCurrent(rootActiveMenu);
|
||||
// 如果没有精确匹配,尝试匹配路径前缀
|
||||
const pathParts = path.split('/');
|
||||
if (pathParts.length > 1) {
|
||||
const basePath = `/${pathParts[1]}`;
|
||||
const findByPrefix = (menuItems: IMenuItem[]): string | null => {
|
||||
for (const item of menuItems) {
|
||||
if (item.path === basePath) {
|
||||
return item.key;
|
||||
}
|
||||
if (item.children) {
|
||||
const childMatch = findByPrefix(item.children);
|
||||
if (childMatch) return childMatch;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
const prefixMatch = findByPrefix(items);
|
||||
if (prefixMatch) {
|
||||
setCurrent(prefixMatch);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 默认选中首页
|
||||
setCurrent('index');
|
||||
}
|
||||
}, [history.location.pathname]);
|
||||
|
||||
// 递归渲染菜单项
|
||||
const renderMenuItems = (menuItems: IMenuItem[]) => {
|
||||
return menuItems.map((item: IMenuItem) =>
|
||||
item.children && item.children.length > 0 ? (
|
||||
<Menu.SubMenu
|
||||
key={item.key}
|
||||
title={intl.formatMessage({ id: item.label })}
|
||||
icon={<IconFont type={item.icon} />}
|
||||
>
|
||||
{renderMenuItems(item.children)}
|
||||
</Menu.SubMenu>
|
||||
) : (
|
||||
<Menu.Item key={item.key} icon={<IconFont type={item.icon} />}>
|
||||
<Link to={item.path}>{intl.formatMessage({ id: item.label })}</Link>
|
||||
</Menu.Item>
|
||||
),
|
||||
);
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="header-menu">
|
||||
<Menu selectedKeys={[current]} mode="inline">
|
||||
{items.map((item: IMenuItem) =>
|
||||
item.children ? (
|
||||
<Menu.SubMenu
|
||||
key={item.key}
|
||||
title={intl.formatMessage({ id: item.label })}
|
||||
icon={<IconFont type={item.icon} />}
|
||||
>
|
||||
{item.children?.map((child: IMenuItem) => (
|
||||
<Menu.Item key={child.key} icon={<IconFont type={child.icon} />}>
|
||||
<Link to={child.path}>{intl.formatMessage({ id: child.label })}</Link>
|
||||
</Menu.Item>
|
||||
))}
|
||||
</Menu.SubMenu>
|
||||
) : (
|
||||
<Menu.Item key={item.key} icon={<IconFont type={item.icon} />}>
|
||||
<Link to={item.path}>{intl.formatMessage({ id: item.label })}</Link>
|
||||
</Menu.Item>
|
||||
),
|
||||
)}
|
||||
{renderMenuItems(items)}
|
||||
</Menu>
|
||||
</div>
|
||||
);
|
||||
|
@ -6,6 +6,7 @@ import aboutManage from './zh-CN/aboutManage';
|
||||
import policyManage from './zh-CN/policyManage';
|
||||
import userQuestion from './zh-CN/userQuestion';
|
||||
import friendLink from './zh-CN/friendLink';
|
||||
import menu from './zh-CN/menu';
|
||||
|
||||
export default {
|
||||
...common,
|
||||
@ -16,4 +17,5 @@ export default {
|
||||
...policyManage,
|
||||
...userQuestion,
|
||||
...friendLink,
|
||||
...menu,
|
||||
};
|
||||
|
30
src/locales/zh-CN/menu.ts
Normal file
30
src/locales/zh-CN/menu.ts
Normal file
@ -0,0 +1,30 @@
|
||||
export default {
|
||||
'menu.首页': '首页',
|
||||
'menu.供应商评价': '供应商评价',
|
||||
'menu.模板管理': '模板管理',
|
||||
'menu.任务管理': '任务管理',
|
||||
'menu.评价打分': '评价打分',
|
||||
'menu.评价结果': '评价结果',
|
||||
'menu.评价结果审批': '评价结果审批',
|
||||
'menu.评价结果详情': '评价结果详情',
|
||||
'menu.评价结果得分明细': '评价结果得分明细',
|
||||
'menu.评价结果打分情况': '评价结果打分情况',
|
||||
'menu.评价审批详情': '评价审批详情',
|
||||
|
||||
'menu.供应商年度': '供应商年度',
|
||||
'menu.年度模板管理': '年度模板管理',
|
||||
'menu.年度任务管理': '年度任务管理',
|
||||
'menu.年度查询': '年度查询',
|
||||
'menu.年度结果': '年度结果',
|
||||
|
||||
'menu.用户管理': '用户管理',
|
||||
'menu.下载管理': '下载管理',
|
||||
'menu.公告管理': '公告管理',
|
||||
'menu.政策法规管理': '政策法规管理',
|
||||
'menu.关于我们': '关于我们',
|
||||
'menu.帮助中心': '帮助中心',
|
||||
'menu.已读问题': '已读问题',
|
||||
'menu.未读问题': '未读问题',
|
||||
'menu.友情链接分类': '友情链接分类',
|
||||
'menu.友情链接管理': '友情链接管理',
|
||||
};
|
@ -179,7 +179,7 @@ const SupplierEvaluateResult: React.FC = () => {
|
||||
// 查看详情 - 修改为跳转到详情页
|
||||
const handleViewDetail = (record: SupplierEvaluate.EvaluateResultRecord) => {
|
||||
history.push({
|
||||
pathname: '/supplierEvaluateResult/supplierEvaluateResultInfo',
|
||||
pathname: 'supplierEvaluateResultInfo',
|
||||
state: { record }
|
||||
});
|
||||
};
|
||||
|
@ -180,7 +180,7 @@ const SupplierEvaluateResultInfo: React.FC = () => {
|
||||
// 查看得分明细
|
||||
const handleViewScoreDetail = (record: SupplierEvaluate.EvaluateResultDetailRecord) => {
|
||||
history.push({
|
||||
pathname: '/supplierEvaluateResult/supplierEvaluateResultScoreDetail',
|
||||
pathname: 'supplierEvaluateResultScoreDetail',
|
||||
state: { record }
|
||||
});
|
||||
};
|
||||
@ -188,7 +188,7 @@ const SupplierEvaluateResultInfo: React.FC = () => {
|
||||
// 查看打分情况
|
||||
const handleViewScoring = (record: SupplierEvaluate.EvaluateResultDetailRecord) => {
|
||||
history.push({
|
||||
pathname: '/supplierEvaluateResult/supplierEvaluateResultScoreByList',
|
||||
pathname: 'supplierEvaluateResultScoreByList',
|
||||
state: { record }
|
||||
});
|
||||
};
|
||||
|
@ -165,7 +165,7 @@ const SupplierEvaluateResultScoreByList: React.FC = () => {
|
||||
// 查看评价详情
|
||||
const handleViewDetail = (record: any) => {
|
||||
history.push({
|
||||
pathname: '/supplierEvaluateResult/supplierEvaluateResultByZb',
|
||||
pathname: 'supplierEvaluateResultByZb',
|
||||
state: { record }
|
||||
});
|
||||
};
|
||||
|
@ -281,7 +281,7 @@ const SupplierTaskManage: React.FC = () => {
|
||||
// 处理添加
|
||||
const handleAdd = () => {
|
||||
// 跳转到新增页面
|
||||
history.push('/supplierTaskManage/supplierTaskManageAdd');
|
||||
history.push('supplierTaskManageAdd');
|
||||
};
|
||||
|
||||
// 处理搜索
|
||||
|
@ -135,7 +135,7 @@ const SupplierTemplateManage: React.FC = () => {
|
||||
const handleView = (record: SupplierEvaluate.TemplateRecord) => {
|
||||
// 跳转到详情页面
|
||||
history.push({
|
||||
pathname: '/supplierTemplateManage/supplierTemplateManageDetail',
|
||||
pathname: 'supplierTemplateManageDetail',
|
||||
state: {
|
||||
id: record.id,
|
||||
}
|
||||
@ -146,7 +146,7 @@ const SupplierTemplateManage: React.FC = () => {
|
||||
const handleEdit = (record: SupplierEvaluate.TemplateRecord) => {
|
||||
// 跳转到新增页面并传递编辑数据
|
||||
history.push({
|
||||
pathname: '/supplierTemplateManage/supplierTemplateManageAdd',
|
||||
pathname: 'supplierTemplateManageAdd',
|
||||
state: {
|
||||
isEdit: true,
|
||||
editData: record
|
||||
@ -248,7 +248,7 @@ const SupplierTemplateManage: React.FC = () => {
|
||||
// 处理添加
|
||||
const handleAdd = () => {
|
||||
// 跳转到新增页面
|
||||
history.push('/supplierTemplateManage/supplierTemplateManageAdd');
|
||||
history.push('supplierTemplateManageAdd');
|
||||
};
|
||||
|
||||
// 处理搜索
|
||||
|
Reference in New Issue
Block a user