修改路由配置
This commit is contained in:
@ -32,222 +32,195 @@ export default [
|
|||||||
path: '/index',
|
path: '/index',
|
||||||
meta: {
|
meta: {
|
||||||
title: '首页',
|
title: '首页',
|
||||||
|
icon: 'icon-shouye',
|
||||||
},
|
},
|
||||||
component: '@/pages/index',
|
component: '@/pages/index',
|
||||||
},
|
},
|
||||||
|
// 供应商评价分组
|
||||||
{
|
{
|
||||||
name: 'userManage',
|
name: 'supplierEvaluate',
|
||||||
path: '/userManage',
|
path: '/supplierEvaluate',
|
||||||
meta: {
|
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',
|
name: 'supplierAnnual',
|
||||||
path: '/downloadManage',
|
path: '/supplierAnnual',
|
||||||
meta: {
|
meta: {
|
||||||
title: '下载管理',
|
title: '供应商年审',
|
||||||
|
icon: 'icon-fenlei',
|
||||||
},
|
},
|
||||||
component: '@/pages/downloadManage/downloadManage',
|
component: '@/layouts/MainLayout',
|
||||||
},
|
routes: [
|
||||||
{
|
{
|
||||||
name: 'noticeManage',
|
name: 'supplierAnnualTemplateManage',
|
||||||
path: '/noticeManage',
|
path: 'supplierAnnualTemplateManage',
|
||||||
meta: {
|
meta: {
|
||||||
title: '公告管理',
|
title: '年审模板管理',
|
||||||
},
|
icon: 'icon-fenlei',
|
||||||
component: '@/pages/noticeManage/noticeManage',
|
},
|
||||||
},
|
component: '@/pages/supplierAnnualManage/supplierAnnualTemplateManage/supplierAnnualTemplateManage',
|
||||||
{
|
},
|
||||||
name: 'policyManage',
|
{
|
||||||
path: '/policyManage',
|
name: 'supplierAnnualTaskManage',
|
||||||
component: '@/pages/policyManage/policyManage',
|
path: 'supplierAnnualTaskManage',
|
||||||
},
|
meta: {
|
||||||
{
|
title: '年审任务管理',
|
||||||
name: 'aboutManage',
|
icon: 'icon-liebiaomoshi',
|
||||||
path: '/aboutManage',
|
},
|
||||||
meta: {
|
component: '@/pages/supplierAnnualManage/supplierAnnualTaskManage/supplierAnnualTaskManage',
|
||||||
title: '关于我们',
|
},
|
||||||
},
|
{
|
||||||
component: '@/pages/aboutManage/aboutManage',
|
name: 'supplierAnnualQuery',
|
||||||
},
|
path: 'supplierAnnualQuery',
|
||||||
{
|
meta: {
|
||||||
name: 'helpManage',
|
title: '年度查询',
|
||||||
path: '/helpManage',
|
icon: 'icon-liebiaomoshi',
|
||||||
meta: {
|
},
|
||||||
title: '帮助中心',
|
component: '@/pages/supplierAnnualManage/supplierAnnualQuery/supplierAnnualQuery',
|
||||||
},
|
},
|
||||||
component: '@/pages/helpManage/helpManage',
|
{
|
||||||
},
|
name: 'supplierAnnualResult',
|
||||||
{
|
path: 'supplierAnnualResult',
|
||||||
name: 'readQuestionManage',
|
meta: {
|
||||||
path: '/readQuestionManage',
|
title: '年审结果',
|
||||||
meta: {
|
icon: 'icon-liebiaomoshi',
|
||||||
title: '已读问题',
|
},
|
||||||
},
|
component: '@/pages/supplierAnnualManage/supplierAnnualResult/supplierAnnualResult',
|
||||||
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',
|
|
||||||
},
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -6,8 +6,14 @@ const { Header, Footer, Sider, Content } = Layout;
|
|||||||
import HeaderComponent from './Header';
|
import HeaderComponent from './Header';
|
||||||
import SiderMenu from './SiderMenu';
|
import SiderMenu from './SiderMenu';
|
||||||
import './layout.less';
|
import './layout.less';
|
||||||
|
|
||||||
const LayoutIndex: React.FC = (props) => {
|
const LayoutIndex: React.FC = (props) => {
|
||||||
const { children } = props;
|
const { children } = props;
|
||||||
|
console.log('主布局渲染:', {
|
||||||
|
children: !!children,
|
||||||
|
type: children ? typeof children : 'none'
|
||||||
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Layout>
|
<Layout>
|
||||||
@ -31,4 +37,5 @@ const LayoutIndex: React.FC = (props) => {
|
|||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default LayoutIndex;
|
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 { Menu } from 'antd';
|
||||||
import { useIntl, Link, useHistory } from 'umi';
|
import { useIntl, Link, useHistory } from 'umi';
|
||||||
import IconFont from '@/components/IconFont/IconFont';
|
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 {
|
interface IMenuItem {
|
||||||
label: string;
|
label: string;
|
||||||
key: string;
|
key: string;
|
||||||
path?: string;
|
path: string;
|
||||||
icon: string;
|
icon: string;
|
||||||
children?: IMenuItem[];
|
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 [current, setCurrent] = useState('index');
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
@ -170,37 +84,77 @@ const SiderMenu: React.FC = (props) => {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// 获取当前激活菜单
|
// 获取当前激活菜单
|
||||||
const path = history.location.pathname;
|
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 {
|
} else {
|
||||||
// 如果跳转的详情页面获取根级激活菜单
|
// 如果没有精确匹配,尝试匹配路径前缀
|
||||||
const rootActiveMenu = path.split('/')[1];
|
const pathParts = path.split('/');
|
||||||
setCurrent(rootActiveMenu);
|
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]);
|
}, [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 (
|
return (
|
||||||
<div className="header-menu">
|
<div className="header-menu">
|
||||||
<Menu selectedKeys={[current]} mode="inline">
|
<Menu selectedKeys={[current]} mode="inline">
|
||||||
{items.map((item: IMenuItem) =>
|
{renderMenuItems(items)}
|
||||||
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>
|
|
||||||
),
|
|
||||||
)}
|
|
||||||
</Menu>
|
</Menu>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
@ -6,6 +6,7 @@ import aboutManage from './zh-CN/aboutManage';
|
|||||||
import policyManage from './zh-CN/policyManage';
|
import policyManage from './zh-CN/policyManage';
|
||||||
import userQuestion from './zh-CN/userQuestion';
|
import userQuestion from './zh-CN/userQuestion';
|
||||||
import friendLink from './zh-CN/friendLink';
|
import friendLink from './zh-CN/friendLink';
|
||||||
|
import menu from './zh-CN/menu';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
...common,
|
...common,
|
||||||
@ -16,4 +17,5 @@ export default {
|
|||||||
...policyManage,
|
...policyManage,
|
||||||
...userQuestion,
|
...userQuestion,
|
||||||
...friendLink,
|
...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) => {
|
const handleViewDetail = (record: SupplierEvaluate.EvaluateResultRecord) => {
|
||||||
history.push({
|
history.push({
|
||||||
pathname: '/supplierEvaluateResult/supplierEvaluateResultInfo',
|
pathname: 'supplierEvaluateResultInfo',
|
||||||
state: { record }
|
state: { record }
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -180,7 +180,7 @@ const SupplierEvaluateResultInfo: React.FC = () => {
|
|||||||
// 查看得分明细
|
// 查看得分明细
|
||||||
const handleViewScoreDetail = (record: SupplierEvaluate.EvaluateResultDetailRecord) => {
|
const handleViewScoreDetail = (record: SupplierEvaluate.EvaluateResultDetailRecord) => {
|
||||||
history.push({
|
history.push({
|
||||||
pathname: '/supplierEvaluateResult/supplierEvaluateResultScoreDetail',
|
pathname: 'supplierEvaluateResultScoreDetail',
|
||||||
state: { record }
|
state: { record }
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@ -188,7 +188,7 @@ const SupplierEvaluateResultInfo: React.FC = () => {
|
|||||||
// 查看打分情况
|
// 查看打分情况
|
||||||
const handleViewScoring = (record: SupplierEvaluate.EvaluateResultDetailRecord) => {
|
const handleViewScoring = (record: SupplierEvaluate.EvaluateResultDetailRecord) => {
|
||||||
history.push({
|
history.push({
|
||||||
pathname: '/supplierEvaluateResult/supplierEvaluateResultScoreByList',
|
pathname: 'supplierEvaluateResultScoreByList',
|
||||||
state: { record }
|
state: { record }
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -165,7 +165,7 @@ const SupplierEvaluateResultScoreByList: React.FC = () => {
|
|||||||
// 查看评价详情
|
// 查看评价详情
|
||||||
const handleViewDetail = (record: any) => {
|
const handleViewDetail = (record: any) => {
|
||||||
history.push({
|
history.push({
|
||||||
pathname: '/supplierEvaluateResult/supplierEvaluateResultByZb',
|
pathname: 'supplierEvaluateResultByZb',
|
||||||
state: { record }
|
state: { record }
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -281,7 +281,7 @@ const SupplierTaskManage: React.FC = () => {
|
|||||||
// 处理添加
|
// 处理添加
|
||||||
const handleAdd = () => {
|
const handleAdd = () => {
|
||||||
// 跳转到新增页面
|
// 跳转到新增页面
|
||||||
history.push('/supplierTaskManage/supplierTaskManageAdd');
|
history.push('supplierTaskManageAdd');
|
||||||
};
|
};
|
||||||
|
|
||||||
// 处理搜索
|
// 处理搜索
|
||||||
|
@ -135,7 +135,7 @@ const SupplierTemplateManage: React.FC = () => {
|
|||||||
const handleView = (record: SupplierEvaluate.TemplateRecord) => {
|
const handleView = (record: SupplierEvaluate.TemplateRecord) => {
|
||||||
// 跳转到详情页面
|
// 跳转到详情页面
|
||||||
history.push({
|
history.push({
|
||||||
pathname: '/supplierTemplateManage/supplierTemplateManageDetail',
|
pathname: 'supplierTemplateManageDetail',
|
||||||
state: {
|
state: {
|
||||||
id: record.id,
|
id: record.id,
|
||||||
}
|
}
|
||||||
@ -146,7 +146,7 @@ const SupplierTemplateManage: React.FC = () => {
|
|||||||
const handleEdit = (record: SupplierEvaluate.TemplateRecord) => {
|
const handleEdit = (record: SupplierEvaluate.TemplateRecord) => {
|
||||||
// 跳转到新增页面并传递编辑数据
|
// 跳转到新增页面并传递编辑数据
|
||||||
history.push({
|
history.push({
|
||||||
pathname: '/supplierTemplateManage/supplierTemplateManageAdd',
|
pathname: 'supplierTemplateManageAdd',
|
||||||
state: {
|
state: {
|
||||||
isEdit: true,
|
isEdit: true,
|
||||||
editData: record
|
editData: record
|
||||||
@ -248,7 +248,7 @@ const SupplierTemplateManage: React.FC = () => {
|
|||||||
// 处理添加
|
// 处理添加
|
||||||
const handleAdd = () => {
|
const handleAdd = () => {
|
||||||
// 跳转到新增页面
|
// 跳转到新增页面
|
||||||
history.push('/supplierTemplateManage/supplierTemplateManageAdd');
|
history.push('supplierTemplateManageAdd');
|
||||||
};
|
};
|
||||||
|
|
||||||
// 处理搜索
|
// 处理搜索
|
||||||
|
Reference in New Issue
Block a user