195 lines
6.3 KiB
JavaScript
195 lines
6.3 KiB
JavaScript
import {
|
||
ChartBarIcon as ChartBar,
|
||
ChartPieIcon as ChartPie,
|
||
ClipboardDocumentListIcon as Clipboard,
|
||
CreditCardIcon as CreditCard,
|
||
CubeIcon as Cube,
|
||
DocumentTextIcon as DocumentText,
|
||
MegaphoneIcon as Megaphone,
|
||
PresentationChartLineIcon as PresentationChartLine,
|
||
Cog6ToothIcon as Setting,
|
||
ShieldCheckIcon as ShieldCheck,
|
||
ShoppingCartIcon as ShoppingCart,
|
||
TagIcon as Tag,
|
||
UserIcon as User,
|
||
UserGroupIcon as Users,
|
||
WalletIcon as Wallet
|
||
} from '@heroicons/vue/24/outline'
|
||
|
||
// 用户菜单配置(分组结构)
|
||
export const userMenuItems = [
|
||
{
|
||
group: '数据中心',
|
||
icon: ChartBar,
|
||
children: [
|
||
{ name: '仪表盘', path: '/dashboard', icon: PresentationChartLine },
|
||
{ name: '数据大厅', path: '/products', icon: Cube },
|
||
{ name: '我的订阅', path: '/subscriptions', icon: ShoppingCart }
|
||
]
|
||
},
|
||
{
|
||
group: '账户中心',
|
||
icon: User,
|
||
children: [
|
||
{ name: '账户中心', path: '/profile', icon: User },
|
||
{ name: '企业入驻', path: '/profile/certification', icon: ShieldCheck }
|
||
]
|
||
},
|
||
{
|
||
group: '财务管理',
|
||
icon: Wallet,
|
||
children: [
|
||
{ name: '余额充值', path: '/finance/wallet', icon: CreditCard, requiresCertification: true },
|
||
{ name: '充值记录', path: '/finance/recharge-records', icon: CreditCard, requiresCertification: true },
|
||
{ name: '购买记录', path: '/finance/purchase-records', icon: ShoppingCart, requiresCertification: true },
|
||
{ name: '消费记录', path: '/finance/transactions', icon: Clipboard, requiresCertification: true },
|
||
{ name: '发票申请', path: '/finance/invoice', icon: Wallet, requiresCertification: true }
|
||
]
|
||
},
|
||
{
|
||
group: '开发者中心',
|
||
icon: Setting,
|
||
children: [
|
||
// { name: 'API管理', path: '/api/management', icon: Key },
|
||
{ name: '在线调试', path: '/apis/debugger', icon: Clipboard, requiresCertification: true },
|
||
{ name: '调用记录', path: '/apis/usage', icon: Clipboard, requiresCertification: true },
|
||
{ name: '白名单管理', path: '/apis/whitelist', icon: ShieldCheck, requiresCertification: true }
|
||
]
|
||
}
|
||
]
|
||
|
||
// 管理员菜单配置
|
||
export const adminMenuItems = [
|
||
{
|
||
name: '产品管理',
|
||
path: '/admin/products',
|
||
icon: Cube
|
||
},
|
||
{
|
||
name: '分类管理',
|
||
path: '/admin/categories',
|
||
icon: Tag
|
||
},
|
||
{
|
||
name: '订阅管理',
|
||
path: '/admin/subscriptions',
|
||
icon: ShoppingCart
|
||
},
|
||
{
|
||
name: '用户管理',
|
||
path: '/admin/users',
|
||
icon: Users
|
||
},
|
||
{
|
||
name: '文章管理',
|
||
path: '/admin/articles',
|
||
icon: DocumentText
|
||
},
|
||
{
|
||
name: '公告管理',
|
||
path: '/admin/announcements',
|
||
icon: Megaphone
|
||
},
|
||
{
|
||
name: '系统统计',
|
||
path: '/admin/statistics',
|
||
icon: ChartPie
|
||
}
|
||
]
|
||
|
||
// 新增:根据用户类型动态生成菜单
|
||
export const getMenuItems = (userType = 'user') => {
|
||
if (userType === 'admin') {
|
||
return adminMenuItems
|
||
}
|
||
return userMenuItems
|
||
}
|
||
|
||
// 新增:获取用户可访问的菜单项(包含管理员菜单)
|
||
export const getUserAccessibleMenuItems = (userType = 'user') => {
|
||
const baseMenuItems = [...userMenuItems]
|
||
|
||
// 如果是管理员,添加管理员菜单组
|
||
if (userType === 'admin') {
|
||
baseMenuItems.push({
|
||
group: '管理后台',
|
||
icon: Setting,
|
||
children: [
|
||
{ name: '系统统计', path: '/admin/statistics', icon: ChartBar },
|
||
{ name: '产品管理', path: '/admin/products', icon: Cube },
|
||
{ name: '用户管理', path: '/admin/users', icon: Users },
|
||
{ name: '分类管理', path: '/admin/categories', icon: Tag },
|
||
{ name: '订阅管理', path: '/admin/subscriptions', icon: ShoppingCart },
|
||
{ name: '文章管理', path: '/admin/articles', icon: DocumentText },
|
||
{ name: '公告管理', path: '/admin/announcements', icon: Megaphone },
|
||
{ name: '调用记录', path: '/admin/usage', icon: Clipboard },
|
||
{ name: '消费记录', path: '/admin/transactions', icon: Clipboard },
|
||
{ name: '充值记录', path: '/admin/recharge-records', icon: CreditCard },
|
||
{ name: '购买记录', path: '/admin/purchase-records', icon: ShoppingCart },
|
||
{ name: '发票管理', path: '/admin/invoices', icon: Wallet },
|
||
{ name: '组件管理', path: '/admin/ui-components', icon: Cube }
|
||
]
|
||
})
|
||
}
|
||
|
||
return baseMenuItems
|
||
}
|
||
|
||
// 需要企业认证的页面路径列表
|
||
export const requiresCertificationPaths = [
|
||
'/finance/wallet',
|
||
'/finance/recharge-records',
|
||
'/finance/purchase-records',
|
||
'/finance/transactions',
|
||
'/apis/usage',
|
||
'/apis/whitelist'
|
||
]
|
||
|
||
// 检查页面是否需要企业认证
|
||
export const isPageRequiresCertification = (path) => {
|
||
return requiresCertificationPaths.includes(path)
|
||
}
|
||
|
||
// 获取当前页面的认证配置
|
||
export const getCurrentPageCertificationConfig = (path) => {
|
||
// 检查是否在需要认证的路径列表中
|
||
const requiresCert = isPageRequiresCertification(path)
|
||
|
||
if (!requiresCert) {
|
||
return null
|
||
}
|
||
|
||
// 根据路径获取页面信息
|
||
const pageConfig = {
|
||
'/finance/wallet': {
|
||
title: '钱包充值',
|
||
description: '为了享受完整的充值服务,请先完成企业入驻认证。认证成功后我们将赠送您一定的调用额度!'
|
||
},
|
||
'/finance/recharge-records': {
|
||
title: '充值记录',
|
||
description: '为了查看完整的充值记录,请先完成企业入驻认证。认证成功后我们将赠送您一定的调用额度!'
|
||
},
|
||
'/finance/purchase-records': {
|
||
title: '购买记录',
|
||
description: '为了查看完整的购买记录,请先完成企业入驻认证。认证成功后我们将赠送您一定的调用额度!'
|
||
},
|
||
'/finance/transactions': {
|
||
title: '消费记录',
|
||
description: '为了查看完整的消费记录,请先完成企业入驻认证。认证成功后我们将赠送您一定的调用额度!'
|
||
},
|
||
'/apis/usage': {
|
||
title: 'API调用记录',
|
||
description: '为了查看完整的API调用记录,请先完成企业入驻认证。认证成功后我们将赠送您一定的调用额度!'
|
||
},
|
||
'/apis/whitelist': {
|
||
title: '白名单管理',
|
||
description: '为了管理API访问白名单,请先完成企业入驻认证。认证成功后我们将赠送您一定的调用额度!'
|
||
}
|
||
}
|
||
|
||
return {
|
||
requiresCertification: true,
|
||
...pageConfig[path]
|
||
}
|
||
}
|