first commit
This commit is contained in:
127
src/constants/documentationDefaults.js
Normal file
127
src/constants/documentationDefaults.js
Normal file
@@ -0,0 +1,127 @@
|
||||
// 产品文档默认内容
|
||||
export const DOCUMENTATION_DEFAULTS = {
|
||||
// 基础说明默认内容
|
||||
basicInfo: `## 请求头
|
||||
|
||||
| 字段名 | 类型 | 必填 | 描述 |
|
||||
|--------|------|------|------|
|
||||
| Access-Id | string | 是 | 账号的 Access-Id |
|
||||
|
||||
对于业务请求参数
|
||||
通过加密后得到 Base64 字符串,将其放入到请求体中,字段名为 \`data\`,以此方式进行传参。
|
||||
\`\`\`json
|
||||
{
|
||||
"data": "xxxx(base64)"
|
||||
}
|
||||
\`\`\`
|
||||
|
||||
对接响应得到的公共参数
|
||||
\`\`\`json
|
||||
{
|
||||
"code": "int",
|
||||
"message": "string",
|
||||
"transaction_id": "string", // 流水号
|
||||
"data": "string"
|
||||
}
|
||||
\`\`\`
|
||||
**data** 字段为加密的数据,需要解密后查看。
|
||||
|
||||
## 加密和解密机制
|
||||
|
||||
账户获得的密钥(**Access Key**)是一个 16 进制字符串,使用 AES-128 加密算法。
|
||||
|
||||
### 加密过程:
|
||||
|
||||
- 加密模式:**AES-CBC 模式**。
|
||||
- 密钥长度:**128 位(16 字节)**。
|
||||
- 填充方式:**PKCS7 填充**。
|
||||
- **IV(初始化向量)**:IV 长度为 16 字节(128 位),每次加密时随机生成。
|
||||
- 加密后,将 **IV** 和密文拼接在一起进行传输。
|
||||
- 最后,将拼接了 IV 的密文通过 **Base64 编码**,方便在网络或文件中传输。
|
||||
|
||||
### 解密过程:
|
||||
|
||||
- 解密时,首先从 Base64 解码后的数据中提取前 16 字节作为 **IV**。
|
||||
- 然后使用提取的 **IV**,通过 AES-CBC 模式解密剩余部分的密文。
|
||||
- 解密后去除 **PKCS7 填充**,即可得到原始明文。`,
|
||||
|
||||
// 请求参数默认内容
|
||||
requestParams: `## 请求参数
|
||||
|
||||
\`\`\`json
|
||||
{
|
||||
"mobile_no": "string",
|
||||
"id_card": "string",
|
||||
"name": "string"
|
||||
}
|
||||
\`\`\`
|
||||
|
||||
| 字段名 | 类型 | 必填 | 描述 |
|
||||
|--------|------|------|------|
|
||||
| mobile_no | string | 是 | 手机号 |
|
||||
| id_card | string | 是 | 身份证号 |
|
||||
| name | string | 是 | 姓名 |
|
||||
|
||||
通过加密后得到 Base64 字符串,将其放入到请求体中,字段名为 \`data\`。
|
||||
|
||||
\`\`\`json
|
||||
{
|
||||
"data": "xxxx(base64)"
|
||||
}
|
||||
\`\`\``,
|
||||
|
||||
// 返回字段说明默认内容
|
||||
responseFields: `## 返回字段说明
|
||||
|
||||
| 字段名 | 类型 | 说明 |
|
||||
|--------|------|------|
|
||||
| data.flag_telefraudpredictstd | string | 1(输出成功),0(未匹配上无输出),98(用户输入信息不足),99(系统异常) |
|
||||
| data.tfps_level | string | 取值 0-6,取值越高,风险越大 |`,
|
||||
|
||||
// 响应示例默认内容
|
||||
responseExample: `## 响应示例
|
||||
|
||||
### 成功响应
|
||||
|
||||
\`\`\`json
|
||||
{
|
||||
"data": {
|
||||
"swift_number": "999333_20181029143459_23453A4E0",
|
||||
"code": "00",
|
||||
"flag_telefraudpredictstd": "1",
|
||||
"tfps_level": "1"
|
||||
}
|
||||
}
|
||||
\`\`\``,
|
||||
|
||||
// 错误代码默认内容
|
||||
errorCodes: `## 错误代码
|
||||
|
||||
| code | message |
|
||||
|------|---------|
|
||||
| 0 | 业务成功 |
|
||||
| 1000 | 查询为空 |
|
||||
| 1001 | 接口异常 |
|
||||
| 1002 | 参数解密失败 |
|
||||
| 1003 | 基础参数校验不正确 |
|
||||
| 1004 | 未经授权的IP |
|
||||
| 1005 | 缺少Access-Id |
|
||||
| 1006 | 未经授权的AccessId |
|
||||
| 1007 | 账户余额不足,无法请求 |
|
||||
| 1008 | 未开通此产品 |
|
||||
| 2001 | 业务失败 |`
|
||||
}
|
||||
|
||||
// 获取默认内容的辅助函数
|
||||
export const getDefaultContent = (type) => {
|
||||
return DOCUMENTATION_DEFAULTS[type] || ''
|
||||
}
|
||||
|
||||
// 默认内容类型枚举
|
||||
export const DEFAULT_CONTENT_TYPES = {
|
||||
BASIC_INFO: 'basicInfo',
|
||||
REQUEST_PARAMS: 'requestParams',
|
||||
RESPONSE_FIELDS: 'responseFields',
|
||||
RESPONSE_EXAMPLE: 'responseExample',
|
||||
ERROR_CODES: 'errorCodes'
|
||||
}
|
||||
80
src/constants/icons.js
Normal file
80
src/constants/icons.js
Normal file
@@ -0,0 +1,80 @@
|
||||
// 图标映射配置 - Element Plus 到 Heroicons 的映射
|
||||
import {
|
||||
ArrowRightOnRectangleIcon,
|
||||
Bars3Icon,
|
||||
BellIcon,
|
||||
CalendarIcon,
|
||||
CheckCircleIcon,
|
||||
CheckIcon,
|
||||
ChevronDownIcon,
|
||||
ClockIcon,
|
||||
Cog6ToothIcon,
|
||||
DocumentCheckIcon,
|
||||
ExclamationCircleIcon,
|
||||
ExclamationTriangleIcon,
|
||||
EyeIcon,
|
||||
EyeSlashIcon,
|
||||
FunnelIcon,
|
||||
// 基础图标
|
||||
HomeIcon,
|
||||
InformationCircleIcon,
|
||||
LinkIcon,
|
||||
MagnifyingGlassIcon,
|
||||
MinusIcon,
|
||||
PencilIcon,
|
||||
// 其他常用图标
|
||||
PlusIcon,
|
||||
ShieldCheckIcon,
|
||||
TrashIcon,
|
||||
UserCircleIcon,
|
||||
UserIcon,
|
||||
// 管理相关
|
||||
UsersIcon,
|
||||
WalletIcon,
|
||||
XMarkIcon
|
||||
} from '@heroicons/vue/24/outline'
|
||||
|
||||
// Element Plus 图标到 Heroicons 的映射
|
||||
export const iconMap = {
|
||||
// 基础导航图标
|
||||
House: HomeIcon,
|
||||
User: UserIcon,
|
||||
Setting: Cog6ToothIcon,
|
||||
Shield: ShieldCheckIcon,
|
||||
Wallet: WalletIcon,
|
||||
Link: LinkIcon,
|
||||
Bell: BellIcon,
|
||||
Menu: Bars3Icon,
|
||||
ArrowDown: ChevronDownIcon,
|
||||
Close: XMarkIcon,
|
||||
Info: InformationCircleIcon,
|
||||
UserFilled: UserCircleIcon,
|
||||
Switch: ArrowRightOnRectangleIcon,
|
||||
|
||||
// 管理相关图标
|
||||
UserFilled: UsersIcon,
|
||||
DocumentCheck: DocumentCheckIcon,
|
||||
|
||||
// 其他常用图标
|
||||
Plus: PlusIcon,
|
||||
Minus: MinusIcon,
|
||||
Edit: PencilIcon,
|
||||
Delete: TrashIcon,
|
||||
View: EyeIcon,
|
||||
Hide: EyeSlashIcon,
|
||||
Search: MagnifyingGlassIcon,
|
||||
Filter: FunnelIcon,
|
||||
Calendar: CalendarIcon,
|
||||
Clock: ClockIcon,
|
||||
Check: CheckIcon,
|
||||
Warning: ExclamationTriangleIcon,
|
||||
Error: ExclamationCircleIcon,
|
||||
Success: CheckCircleIcon
|
||||
}
|
||||
|
||||
// 导出所有 Heroicons 图标供直接使用
|
||||
export {
|
||||
ArrowRightOnRectangleIcon, Bars3Icon, BellIcon, CalendarIcon, CheckCircleIcon, CheckIcon, ChevronDownIcon, ClockIcon, Cog6ToothIcon, DocumentCheckIcon, ExclamationCircleIcon, ExclamationTriangleIcon, EyeIcon,
|
||||
EyeSlashIcon, FunnelIcon, HomeIcon, InformationCircleIcon, LinkIcon, MagnifyingGlassIcon, MinusIcon,
|
||||
PencilIcon, PlusIcon, ShieldCheckIcon, TrashIcon, UserCircleIcon, UserIcon, UsersIcon, WalletIcon, XMarkIcon
|
||||
}
|
||||
225
src/constants/index.js
Normal file
225
src/constants/index.js
Normal file
@@ -0,0 +1,225 @@
|
||||
// 应用常量
|
||||
export const APP_NAME = '天远数据控制台'
|
||||
export const APP_VERSION = '1.0.0'
|
||||
|
||||
// API相关常量
|
||||
export const API_BASE_URL = '/api/v1'
|
||||
export const API_TIMEOUT = 10000
|
||||
|
||||
// 认证相关常量
|
||||
export const TOKEN_KEY = 'token'
|
||||
export const REFRESH_TOKEN_KEY = 'refresh_token'
|
||||
|
||||
// 用户角色
|
||||
export const USER_ROLES = {
|
||||
USER: 'user',
|
||||
ADMIN: 'admin',
|
||||
SUPER_ADMIN: 'super_admin'
|
||||
}
|
||||
|
||||
// 认证状态
|
||||
export const CERTIFICATION_STATUS = {
|
||||
PENDING: 'pending',
|
||||
SUBMITTED: 'submitted',
|
||||
REVIEWING: 'reviewing',
|
||||
APPROVED: 'approved',
|
||||
REJECTED: 'rejected'
|
||||
}
|
||||
|
||||
// 认证状态中文映射
|
||||
export const CERTIFICATION_STATUS_TEXT = {
|
||||
[CERTIFICATION_STATUS.PENDING]: '待提交',
|
||||
[CERTIFICATION_STATUS.SUBMITTED]: '已提交',
|
||||
[CERTIFICATION_STATUS.REVIEWING]: '审核中',
|
||||
[CERTIFICATION_STATUS.APPROVED]: '已通过',
|
||||
[CERTIFICATION_STATUS.REJECTED]: '已拒绝'
|
||||
}
|
||||
|
||||
// 交易类型
|
||||
export const TRANSACTION_TYPES = {
|
||||
RECHARGE: 'recharge',
|
||||
WITHDRAW: 'withdraw',
|
||||
CONSUME: 'consume',
|
||||
REFUND: 'refund'
|
||||
}
|
||||
|
||||
// 交易状态
|
||||
export const TRANSACTION_STATUS = {
|
||||
PENDING: 'pending',
|
||||
PROCESSING: 'processing',
|
||||
SUCCESS: 'success',
|
||||
FAILED: 'failed',
|
||||
CANCELLED: 'cancelled'
|
||||
}
|
||||
|
||||
// 交易状态中文映射
|
||||
export const TRANSACTION_STATUS_TEXT = {
|
||||
[TRANSACTION_STATUS.PENDING]: '待处理',
|
||||
[TRANSACTION_STATUS.PROCESSING]: '处理中',
|
||||
[TRANSACTION_STATUS.SUCCESS]: '成功',
|
||||
[TRANSACTION_STATUS.FAILED]: '失败',
|
||||
[TRANSACTION_STATUS.CANCELLED]: '已取消'
|
||||
}
|
||||
|
||||
// 验证码场景
|
||||
export const SMS_SCENES = {
|
||||
REGISTER: 'register',
|
||||
LOGIN: 'login',
|
||||
CHANGE_PASSWORD: 'change_password',
|
||||
RESET_PASSWORD: 'reset_password',
|
||||
BIND: 'bind',
|
||||
UNBIND: 'unbind'
|
||||
}
|
||||
|
||||
// 验证码场景中文映射
|
||||
export const SMS_SCENES_TEXT = {
|
||||
[SMS_SCENES.REGISTER]: '注册',
|
||||
[SMS_SCENES.LOGIN]: '登录',
|
||||
[SMS_SCENES.CHANGE_PASSWORD]: '修改密码',
|
||||
[SMS_SCENES.RESET_PASSWORD]: '重置密码',
|
||||
[SMS_SCENES.BIND]: '绑定',
|
||||
[SMS_SCENES.UNBIND]: '解绑'
|
||||
}
|
||||
|
||||
// 文件上传相关
|
||||
export const UPLOAD_CONFIG = {
|
||||
MAX_SIZE: 10 * 1024 * 1024, // 10MB
|
||||
ALLOWED_TYPES: ['image/jpeg', 'image/png', 'image/gif', 'application/pdf'],
|
||||
ALLOWED_EXTENSIONS: ['.jpg', '.jpeg', '.png', '.gif', '.pdf']
|
||||
}
|
||||
|
||||
// 分页配置
|
||||
export const PAGINATION_CONFIG = {
|
||||
DEFAULT_PAGE_SIZE: 10,
|
||||
PAGE_SIZE_OPTIONS: [10, 20, 50, 100]
|
||||
}
|
||||
|
||||
// 主题配置
|
||||
export const THEME_CONFIG = {
|
||||
LIGHT: 'light',
|
||||
DARK: 'dark'
|
||||
}
|
||||
|
||||
// 语言配置
|
||||
export const LANGUAGE_CONFIG = {
|
||||
ZH_CN: 'zh-CN',
|
||||
EN_US: 'en-US'
|
||||
}
|
||||
|
||||
// 路由配置
|
||||
export const ROUTE_CONFIG = {
|
||||
AUTH: {
|
||||
LOGIN: '/auth/login',
|
||||
REGISTER: '/auth/register',
|
||||
RESET_PASSWORD: '/auth/reset'
|
||||
},
|
||||
DASHBOARD: '/products',
|
||||
CERTIFICATION: '/certification',
|
||||
FINANCE: '/finance',
|
||||
API: '/api',
|
||||
PROFILE: '/profile',
|
||||
ADMIN: '/admin'
|
||||
}
|
||||
|
||||
// 权限配置
|
||||
export const PERMISSIONS = {
|
||||
// 用户权限
|
||||
USER_READ: 'user:read',
|
||||
USER_WRITE: 'user:write',
|
||||
USER_DELETE: 'user:delete',
|
||||
|
||||
// 认证权限
|
||||
CERTIFICATION_READ: 'certification:read',
|
||||
CERTIFICATION_WRITE: 'certification:write',
|
||||
CERTIFICATION_REVIEW: 'certification:review',
|
||||
|
||||
// 财务权限
|
||||
FINANCE_READ: 'finance:read',
|
||||
FINANCE_WRITE: 'finance:write',
|
||||
FINANCE_APPROVE: 'finance:approve',
|
||||
|
||||
// API权限
|
||||
API_READ: 'api:read',
|
||||
API_WRITE: 'api:write',
|
||||
API_DELETE: 'api:delete',
|
||||
|
||||
// 系统权限
|
||||
SYSTEM_READ: 'system:read',
|
||||
SYSTEM_WRITE: 'system:write',
|
||||
SYSTEM_ADMIN: 'system:admin'
|
||||
}
|
||||
|
||||
// 错误码配置
|
||||
export const ERROR_CODES = {
|
||||
// 通用错误
|
||||
UNKNOWN_ERROR: 'UNKNOWN_ERROR',
|
||||
NETWORK_ERROR: 'NETWORK_ERROR',
|
||||
TIMEOUT_ERROR: 'TIMEOUT_ERROR',
|
||||
|
||||
// 认证错误
|
||||
UNAUTHORIZED: 'UNAUTHORIZED',
|
||||
FORBIDDEN: 'FORBIDDEN',
|
||||
TOKEN_EXPIRED: 'TOKEN_EXPIRED',
|
||||
INVALID_CREDENTIALS: 'INVALID_CREDENTIALS',
|
||||
|
||||
// 业务错误
|
||||
VALIDATION_ERROR: 'VALIDATION_ERROR',
|
||||
RESOURCE_NOT_FOUND: 'RESOURCE_NOT_FOUND',
|
||||
RESOURCE_ALREADY_EXISTS: 'RESOURCE_ALREADY_EXISTS',
|
||||
OPERATION_FAILED: 'OPERATION_FAILED',
|
||||
|
||||
// 用户相关错误
|
||||
USER_NOT_FOUND: 'USER_NOT_FOUND',
|
||||
USER_ALREADY_EXISTS: 'USER_ALREADY_EXISTS',
|
||||
INVALID_PHONE: 'INVALID_PHONE',
|
||||
INVALID_CODE: 'INVALID_CODE',
|
||||
CODE_EXPIRED: 'CODE_EXPIRED',
|
||||
|
||||
// 认证相关错误
|
||||
CERTIFICATION_NOT_FOUND: 'CERTIFICATION_NOT_FOUND',
|
||||
CERTIFICATION_ALREADY_EXISTS: 'CERTIFICATION_ALREADY_EXISTS',
|
||||
CERTIFICATION_IN_PROGRESS: 'CERTIFICATION_IN_PROGRESS',
|
||||
|
||||
// 财务相关错误
|
||||
INSUFFICIENT_BALANCE: 'INSUFFICIENT_BALANCE',
|
||||
TRANSACTION_FAILED: 'TRANSACTION_FAILED',
|
||||
WALLET_NOT_FOUND: 'WALLET_NOT_FOUND'
|
||||
}
|
||||
|
||||
// 本地存储键名
|
||||
export const STORAGE_KEYS = {
|
||||
TOKEN: 'token',
|
||||
USER_INFO: 'user_info',
|
||||
THEME: 'theme',
|
||||
LANGUAGE: 'language',
|
||||
SIDEBAR_COLLAPSED: 'sidebar_collapsed',
|
||||
NOTIFICATIONS: 'notifications'
|
||||
}
|
||||
|
||||
// 正则表达式
|
||||
export const REGEX = {
|
||||
PHONE: /^1[3-9]\d{9}$/,
|
||||
EMAIL: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
|
||||
ID_CARD: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
|
||||
PASSWORD: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d@$!%*?&]{8,}$/,
|
||||
VERIFY_CODE: /^\d{6}$/
|
||||
}
|
||||
|
||||
// 时间格式
|
||||
export const DATE_FORMATS = {
|
||||
DATE: 'YYYY-MM-DD',
|
||||
DATETIME: 'YYYY-MM-DD HH:mm:ss',
|
||||
TIME: 'HH:mm:ss',
|
||||
MONTH: 'YYYY-MM',
|
||||
YEAR: 'YYYY'
|
||||
}
|
||||
|
||||
// 响应式断点
|
||||
export const BREAKPOINTS = {
|
||||
XS: 480,
|
||||
SM: 768,
|
||||
MD: 1024,
|
||||
LG: 1280,
|
||||
XL: 1440,
|
||||
XXL: 1920
|
||||
}
|
||||
179
src/constants/menu.js
Normal file
179
src/constants/menu.js
Normal file
@@ -0,0 +1,179 @@
|
||||
import {
|
||||
ChartBarIcon as ChartBar,
|
||||
ChartPieIcon as ChartPie,
|
||||
ClipboardDocumentListIcon as Clipboard,
|
||||
CreditCardIcon as CreditCard,
|
||||
CubeIcon as Cube,
|
||||
DocumentTextIcon as DocumentText,
|
||||
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/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/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/usage', icon: Clipboard },
|
||||
{ name: '消费记录', path: '/admin/transactions', icon: Clipboard },
|
||||
{ name: '充值记录', path: '/admin/recharge-records', icon: CreditCard },
|
||||
{ name: '发票管理', path: '/admin/invoices', icon: Wallet }
|
||||
]
|
||||
})
|
||||
}
|
||||
|
||||
return baseMenuItems
|
||||
}
|
||||
|
||||
// 需要企业认证的页面路径列表
|
||||
export const requiresCertificationPaths = [
|
||||
'/finance/wallet',
|
||||
'/finance/recharge-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/transactions': {
|
||||
title: '消费记录',
|
||||
description: '为了查看完整的消费记录,请先完成企业入驻认证。认证成功后我们将赠送您一定的调用额度!'
|
||||
},
|
||||
'/apis/usage': {
|
||||
title: 'API调用记录',
|
||||
description: '为了查看完整的API调用记录,请先完成企业入驻认证。认证成功后我们将赠送您一定的调用额度!'
|
||||
},
|
||||
'/apis/whitelist': {
|
||||
title: '白名单管理',
|
||||
description: '为了管理API访问白名单,请先完成企业入驻认证。认证成功后我们将赠送您一定的调用额度!'
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
requiresCertification: true,
|
||||
...pageConfig[path]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user