新增开发 Mock 后台菜单与造单能力

非生产环境在后台提供 lewan/feifei 领取造单与 91 查单模拟,CLI 复用同一服务,避免依赖真实平台联调。
This commit is contained in:
yml2213
2026-07-10 13:35:42 +08:00
parent bb060e81a4
commit 3c0d1f108c
13 changed files with 1593 additions and 533 deletions
+23 -2
View File
@@ -1,5 +1,6 @@
import {
AuditOutlined,
BugOutlined,
DashboardOutlined,
FileSearchOutlined,
LogoutOutlined,
@@ -15,10 +16,11 @@ import {
} from '@ant-design/icons'
import { App, Button, Dropdown, Layout, Menu, Space, Typography } from 'antd'
import type { MenuProps } from 'antd'
import { useQuery } from '@tanstack/react-query'
import { useMemo, useState } from 'react'
import { Outlet, useLocation, useNavigate } from 'react-router'
import { logoutAdmin } from '@/services/admin'
import { fetchDevMockStatus, logoutAdmin } from '@/services/admin'
import {
clearAdminSession,
getAdminRole,
@@ -40,6 +42,14 @@ export default function AdminLayout() {
const username = getAdminUsername() || 'admin'
const expiresAt = getAdminTokenExpiresAt()
const devMockStatusQuery = useQuery({
queryKey: ['admin-dev-mock-status'],
queryFn: () => fetchDevMockStatus(),
staleTime: 60_000,
retry: false,
})
const devMockEnabled = Boolean(devMockStatusQuery.data?.data?.enabled)
const menuItems = useMemo<MenuProps['items']>(() => {
const operationItems: MenuProps['items'] = [
{ key: '/admin/dashboard', icon: <DashboardOutlined />, label: '概览' },
@@ -58,6 +68,17 @@ export default function AdminLayout() {
},
]
if (devMockEnabled) {
items.push({
key: 'group-dev',
type: 'group',
label: '开发',
children: [
{ key: '/admin/dev-mock', icon: <BugOutlined />, label: '开发 Mock' },
],
})
}
if (role === 'admin') {
items.push(
{
@@ -80,7 +101,7 @@ export default function AdminLayout() {
}
return items
}, [role])
}, [devMockEnabled, role])
async function submitLogout() {
try {