Merge remote-tracking branch 'origin/huangzhenbao-admin' into comclib-analytics

This commit is contained in:
comlibmb
2026-02-13 11:35:28 +08:00
60 changed files with 11050 additions and 619 deletions

View File

@@ -63,7 +63,8 @@
<!-- 内容展示区 (内部路由渲染) -->
<view class="content-scroll">
<view class="content-inner" :class="{ 'is-mobile': isMobile }">
<component :is="currentComponent" v-if="!isPageLoading" />
<slot></slot>
<component :is="currentComponent" v-if="!isPageLoading && currentComponent != null" />
<AdminPageLoading v-if="isPageLoading" />
</view>
<AdminFooter />
@@ -118,6 +119,13 @@ import type { TabItem } from '@/layouts/admin/store/adminNavStore.uts'
import { getComponent } from '@/layouts/admin/router/adminComponentMap.uts'
const props = defineProps({
currentPage: {
type: String,
default: ''
}
})
// 侧边栏宽度配置 (CRMEB 1:1)
const ASIDE_W = 70
const SUB_W = 200
@@ -388,6 +396,9 @@ onMounted(async () => {
}
initNavState()
if (props.currentPage != '') {
openRoute(props.currentPage as string)
}
// 初始化窗口宽度
windowWidth.value = uni.getWindowInfo().windowWidth

View File

@@ -92,8 +92,20 @@ function isActive(node: MenuNode): boolean {
// 只有非分组项才能被视为“激活”变色 (1:1 复刻 screenshot 效果)
if (node.type === 'group') return false
if (props.activeId != '' && node.id === props.activeId) return true
if (props.currentPath != '' && node.path === props.currentPath) return true
// 核心逻辑:优先匹配 IDID 是唯一的
// 如果当前选中的 ID 就是这个节点的 ID那它肯定是激活的
if (props.activeId != '' && node.id === props.activeId) {
return true
}
// 如果 ID 没匹配上,但路径匹配上了,且当前没有 activeId (例如首次进入或刷新)
// 或者当前 ID 对应的路径跟这个路径一样
// 但为了防止 Path 相同导致多选,我们加一个额外判断:
// 如果 activeId 已经指向了一个有效的路由,我们通常不再通过 Path 来高亮其他项
if (props.activeId === '' && props.currentPath != '' && node.path === props.currentPath) {
return true
}
return false
}

View File

@@ -125,14 +125,15 @@ export const componentMap: Map<string, any> = new Map([
// 设置模块
['SettingSystemConfig', defineAsyncComponent(() => import('@/pages/mall/admin/setting/system/config.uvue'))],
['SettingMessage', defineAsyncComponent(() => import('@/pages/mall/admin/setting/message.uvue'))],
['SettingAgreement', defineAsyncComponent(() => import('@/pages/mall/admin/setting/agreement.uvue'))],
['SettingTicket', defineAsyncComponent(() => import('@/pages/mall/admin/setting/ticket.uvue'))],
['SettingMessageIndex', defineAsyncComponent(() => import('@/pages/mall/admin/setting/message.uvue'))],
['SettingProtocolIndex', defineAsyncComponent(() => import('@/pages/mall/admin/setting/agreement.uvue'))],
['SettingTicketIndex', defineAsyncComponent(() => import('@/pages/mall/admin/setting/ticket.uvue'))],
['SettingAuthRole', defineAsyncComponent(() => import('@/pages/mall/admin/setting/auth/role.uvue'))],
['SettingAuthAdmin', defineAsyncComponent(() => import('@/pages/mall/admin/setting/auth/admin.uvue'))],
['SettingAuthPermission', defineAsyncComponent(() => import('@/pages/mall/admin/setting/auth/permission.uvue'))],
['SettingDeliveryStaff', defineAsyncComponent(() => import('@/pages/mall/admin/setting/delivery/staff.uvue'))],
['SettingDeliveryStation', defineAsyncComponent(() => import('@/pages/mall/admin/setting/delivery/station.uvue'))],
['SettingDeliveryVerifier', defineAsyncComponent(() => import('@/pages/mall/admin/setting/delivery/verifier.uvue'))],
['SettingDeliveryTemplate', defineAsyncComponent(() => import('@/pages/mall/admin/setting/delivery/template.uvue'))],
['SettingInterfaceOnepassConfig', defineAsyncComponent(() => import('@/pages/mall/admin/setting/interface/onepass/config.uvue'))],
['SettingInterfaceOnepassIndex', defineAsyncComponent(() => import('@/pages/mall/admin/setting/interface/onepass/index.uvue'))],
@@ -169,32 +170,42 @@ export const componentMap: Map<string, any> = new Map([
['DecorationLink', defineAsyncComponent(() => import('@/pages/mall/admin/design/link-management.uvue'))],
// 应用模块
['AppStatistic', PlaceholderPage],
['AppList', PlaceholderPage],
['AppWechatMenu', defineAsyncComponent(() => import('@/pages/mall/admin/app/wechat/menu.uvue'))],
['AppWechatNews', defineAsyncComponent(() => import('@/pages/mall/admin/app/wechat/news.uvue'))],
['AppWechatReplyFollow', defineAsyncComponent(() => import('@/pages/mall/admin/app/wechat/reply/follow.uvue'))],
['AppWechatReplyKeyword', defineAsyncComponent(() => import('@/pages/mall/admin/app/wechat/reply/keyword.uvue'))],
['AppWechatReplyInvalid', defineAsyncComponent(() => import('@/pages/mall/admin/app/wechat/reply/invalid.uvue'))],
['AppWechatConfig', defineAsyncComponent(() => import('@/pages/mall/admin/app/wechat/config.uvue'))],
['AppRoutineDownload', defineAsyncComponent(() => import('@/pages/mall/admin/app/routine/download.uvue'))],
['AppRoutineConfig', defineAsyncComponent(() => import('@/pages/mall/admin/app/routine/config.uvue'))],
['AppMobileConfig', defineAsyncComponent(() => import('@/pages/mall/admin/app/mobile/config.uvue'))],
['AppMobileVersion', defineAsyncComponent(() => import('@/pages/mall/admin/app/mobile/version.uvue'))],
['AppPcDesign', defineAsyncComponent(() => import('@/pages/mall/admin/app/pc/design.uvue'))],
['AppPcConfig', defineAsyncComponent(() => import('@/pages/mall/admin/app/pc/config.uvue'))],
// 维护模块
['MaintainDevConfig', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/dev/config.uvue'))],
['MaintainDevData', PlaceholderPage],
['MaintainDevTask', PlaceholderPage],
['MaintainDevAuth', PlaceholderPage],
['MaintainDevModule', PlaceholderPage],
['MaintainDevEvent', PlaceholderPage],
['MaintainSecurityCache', PlaceholderPage],
['MaintainSecurityLog', PlaceholderPage],
['MaintainSecurityUpgrade', PlaceholderPage],
['MaintainDataLogistics', PlaceholderPage],
['MaintainDataCity', PlaceholderPage],
['MaintainDataClear', PlaceholderPage],
['MaintainApiAccount', PlaceholderPage],
['MaintainLangList', PlaceholderPage],
['MaintainLangDetail', PlaceholderPage],
['MaintainLangRegion', PlaceholderPage],
['MaintainLangConfig', PlaceholderPage],
['MaintainToolDb', PlaceholderPage],
['MaintainToolFile', PlaceholderPage],
['MaintainToolApi', PlaceholderPage],
['MaintainToolDic', PlaceholderPage],
['MaintainSysInfo', PlaceholderPage]
['MaintainDevConfig', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/dev-config/category.uvue'))],
['MaintainDevData', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/dev-config/combination-data.uvue'))],
['MaintainDevTask', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/dev-config/cron-job.uvue'))],
['MaintainDevAuth', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/dev-config/permission.uvue'))],
['MaintainDevModule', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/dev-config/module-config.uvue'))],
['MaintainDevEvent', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/dev-config/custom-event.uvue'))],
['MaintainSecurityCache', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/security/refresh-cache.uvue'))],
['MaintainSecurityLog', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/security/system-log.uvue'))],
['MaintainSecurityUpgrade', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/security/online-upgrade.uvue'))],
['MaintainDataLogistics', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/data/logistics.uvue'))],
['MaintainDataCity', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/data/city.uvue'))],
['MaintainDataClear', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/data/clear.uvue'))],
['MaintainApiAccount', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/api/account.uvue'))],
['MaintainLangList', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/lang/list.uvue'))],
['MaintainLangDetail', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/lang/detail.uvue'))],
['MaintainLangRegion', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/lang/region.uvue'))],
['MaintainLangConfig', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/lang/config.uvue'))],
['MaintainToolDb', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/dev-tools/database.uvue'))],
['MaintainToolFile', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/dev-tools/file.uvue'))],
['MaintainToolApi', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/dev-tools/api.uvue'))],
['MaintainToolDic', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/dev-tools/data-dict.uvue'))],
['MaintainSysInfo', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/sys/info.uvue'))]
])
/**

View File

@@ -173,10 +173,13 @@ export const topMenus: TopMenu[] = [
id: 'app',
title: '应用',
icon: 'app',
path: '/pages/mall/admin/app/statistic',
path: '/pages/mall/admin/app/wechat/menu',
order: 11,
groups: [
{ id: 'app-manage', title: '', order: 1 }
{ id: 'app-wechat', title: '公众号', order: 1 },
{ id: 'app-routine', title: '小程序', order: 2 },
{ id: 'app-mobile', title: 'APP', order: 3 },
{ id: 'app-pc', title: 'PC端', order: 4 }
]
},
{
@@ -197,7 +200,7 @@ export const topMenus: TopMenu[] = [
id: 'maintain',
title: '维护',
icon: 'tool',
path: '/pages/mall/admin/maintain/dev/config',
path: '/pages/mall/admin/maintain/dev-config/category',
order: 13,
groups: [
{ id: 'maintain-dev', title: '开发配置', order: 1 },
@@ -894,180 +897,6 @@ export const routes: RouteRecord[] = [
order: 1
},
// ========== 设置模块 ==========
// 1. 系统设置
{
id: 'setting_systemConfig',
title: '系统设置',
path: '/pages/mall/admin/setting/system/config',
componentKey: 'SettingSystemConfig',
parentId: 'setting',
groupId: 'setting-system',
auth: ['admin-setting-system-config'],
order: 1
},
// 2. 通知管理
{
id: 'setting_message',
title: '消息管理',
path: '/pages/mall/admin/setting/message',
componentKey: 'SettingMessage',
parentId: 'setting',
groupId: 'setting-message',
order: 1
},
{
id: 'setting_agreement',
title: '协议管理',
path: '/pages/mall/admin/setting/agreement',
componentKey: 'SettingAgreement',
parentId: 'setting',
groupId: 'setting-message',
order: 2
},
{
id: 'setting_ticket',
title: '客服设置',
path: '/pages/mall/admin/setting/ticket',
componentKey: 'SettingTicket',
parentId: 'setting',
groupId: 'setting-message',
order: 3
},
// 3. 权限管理
{
id: 'setting_auth_role',
title: '角色管理',
path: '/pages/mall/admin/setting/auth/role',
componentKey: 'SettingAuthRole',
parentId: 'setting',
groupId: 'setting-auth',
order: 1
},
{
id: 'setting_auth_admin',
title: '管理员管理',
path: '/pages/mall/admin/setting/auth/admin',
componentKey: 'SettingAuthAdmin',
parentId: 'setting',
groupId: 'setting-auth',
order: 2
},
{
id: 'setting_auth_permission',
title: '权限管理',
path: '/pages/mall/admin/setting/auth/permission',
componentKey: 'SettingAuthPermission',
parentId: 'setting',
groupId: 'setting-auth',
order: 3
},
// 4. 物流设置
{
id: 'setting_delivery_staff',
title: '配送员管理',
path: '/pages/mall/admin/setting/delivery/staff',
componentKey: 'SettingDeliveryStaff',
parentId: 'setting',
groupId: 'setting-delivery',
order: 1
},
{
id: 'setting_delivery_station',
title: '提货点管理',
path: '/pages/mall/admin/setting/delivery/station',
componentKey: 'SettingDeliveryStation',
parentId: 'setting',
groupId: 'setting-delivery',
order: 2
},
{
id: 'setting_delivery_template',
title: '运费模板',
path: '/pages/mall/admin/setting/delivery/template',
componentKey: 'SettingDeliveryTemplate',
parentId: 'setting',
groupId: 'setting-delivery',
order: 3
},
// 5. 接口设置
{
id: 'setting_interface_onepass_config',
title: '总平台配置',
path: '/pages/mall/admin/setting/interface/onepass/config',
componentKey: 'SettingInterfaceOnepassConfig',
parentId: 'setting',
groupId: 'setting-interface',
order: 1
},
{
id: 'setting_interface_onepass_index',
title: '账号列表',
path: '/pages/mall/admin/setting/interface/onepass/index',
componentKey: 'SettingInterfaceOnepassIndex',
parentId: 'setting',
groupId: 'setting-interface',
order: 2
},
{
id: 'setting_interface_storage',
title: '存储配置',
path: '/pages/mall/admin/setting/interface/storage',
componentKey: 'SettingInterfaceStorage',
parentId: 'setting',
groupId: 'setting-interface',
order: 3
},
{
id: 'setting_interface_collect',
title: '商品采集',
path: '/pages/mall/admin/setting/interface/collect',
componentKey: 'SettingInterfaceCollect',
parentId: 'setting',
groupId: 'setting-interface',
order: 4
},
{
id: 'setting_interface_logistics',
title: '物流查询',
path: '/pages/mall/admin/setting/interface/logistics',
componentKey: 'SettingInterfaceLogistics',
parentId: 'setting',
groupId: 'setting-interface',
order: 5
},
{
id: 'setting_interface_esheet',
title: '电子面单',
path: '/pages/mall/admin/setting/interface/e-sheet',
componentKey: 'SettingInterfaceESheet',
parentId: 'setting',
groupId: 'setting-interface',
order: 6
},
{
id: 'setting_interface_sms',
title: '短信接口',
path: '/pages/mall/admin/setting/interface/sms',
componentKey: 'SettingInterfaceSms',
parentId: 'setting',
groupId: 'setting-interface',
order: 7
},
{
id: 'setting_interface_payment',
title: '商城支付',
path: '/pages/mall/admin/setting/interface/payment',
componentKey: 'SettingInterfacePayment',
parentId: 'setting',
groupId: 'setting-interface',
order: 8
},
// ========== 分销模块 ==========
{
id: 'distribution_statistic',
@@ -1246,65 +1075,69 @@ export const routes: RouteRecord[] = [
},
// ========== 设置模块 (1:1 复刻 CRMEB 路由结构) ==========
// 通知管理
// 1. 系统设置
{ id: 'setting_system_config', title: '系统配置', path: '/pages/mall/admin/setting/system/config', componentKey: 'SettingSystemConfig', parentId: 'setting', groupId: 'setting-system', order: 1 },
// 2. 通知管理
{ id: 'setting_message_index', title: '消息管理', path: '/pages/mall/admin/setting/message', componentKey: 'SettingMessageIndex', parentId: 'setting', groupId: 'setting-message', order: 1 },
{ id: 'setting_protocol_index', title: '协议设置', path: '/pages/mall/admin/setting/agreement', componentKey: 'SettingProtocolIndex', parentId: 'setting', groupId: 'setting-message', order: 2 },
{ id: 'setting_ticket_index', title: '小票配置', path: '/pages/mall/admin/setting/ticket', componentKey: 'SettingTicketIndex', parentId: 'setting', groupId: 'setting-message', order: 3 },
// 权限管理
// 3. 权限管理
{ id: 'setting_auth_admin', title: '管理员管理', path: '/pages/mall/admin/setting/auth/admin', componentKey: 'SettingAuthAdmin', parentId: 'setting', groupId: 'setting-auth', order: 1 },
{ id: 'setting_auth_role', title: '角色管理', path: '/pages/mall/admin/setting/auth/role', componentKey: 'SettingAuthRole', parentId: 'setting', groupId: 'setting-auth', order: 2 },
{ id: 'setting_auth_menu', title: '菜单管理', path: '/pages/mall/admin/setting/auth/permission', componentKey: 'SettingAuthMenu', parentId: 'setting', groupId: 'setting-auth', order: 3 },
{ id: 'setting_auth_menu', title: '菜单管理', path: '/pages/mall/admin/setting/auth/permission', componentKey: 'SettingAuthPermission', parentId: 'setting', groupId: 'setting-auth', order: 3 },
// 物流设置
{ id: 'setting_delivery_courier', title: '配送员管理', path: '/pages/mall/admin/setting/delivery/staff', componentKey: 'SettingDeliveryCourier', parentId: 'setting', groupId: 'setting-delivery', order: 1 },
{ id: 'setting_delivery_pickup_list', title: '提货点', path: '/pages/mall/admin/setting/delivery/station', componentKey: 'SettingDeliveryPickupList', parentId: 'setting', groupId: 'setting-delivery', order: 2 },
{ id: 'setting_delivery_verifier', title: '核销员', path: '/pages/mall/admin/setting/delivery/station', componentKey: 'SettingDeliveryVerifier', parentId: 'setting', groupId: 'setting-delivery', order: 3 },
{ id: 'setting_delivery_freight', title: '运费模板', path: '/pages/mall/admin/setting/delivery/template', componentKey: 'SettingDeliveryFreight', parentId: 'setting', groupId: 'setting-delivery', order: 4 },
// 4. 物流设置
{ id: 'setting_delivery_courier', title: '配送员管理', path: '/pages/mall/admin/setting/delivery/staff', componentKey: 'SettingDeliveryStaff', parentId: 'setting', groupId: 'setting-delivery', order: 1 },
{ id: 'setting_delivery_pickup_list', title: '提货点', path: '/pages/mall/admin/setting/delivery/station', componentKey: 'SettingDeliveryStation', parentId: 'setting', groupId: 'setting-delivery', order: 2 },
{ id: 'setting_delivery_verifier', title: '核销员', path: '/pages/mall/admin/setting/delivery/verifier', componentKey: 'SettingDeliveryVerifier', parentId: 'setting', groupId: 'setting-delivery', order: 3 },
{ id: 'setting_delivery_freight', title: '运费模板', path: '/pages/mall/admin/setting/delivery/template', componentKey: 'SettingDeliveryTemplate', parentId: 'setting', groupId: 'setting-delivery', order: 4 },
// 接口设置
{ id: 'setting_api_yht_page', title: '一号通页面', path: '/pages/mall/admin/setting/interface/onepass/index', componentKey: 'SettingApiYhtPage', parentId: 'setting', groupId: 'setting-interface', order: 1 },
{ id: 'setting_api_yht_config', title: '一号通配置', path: '/pages/mall/admin/setting/interface/onepass/config', componentKey: 'SettingApiYhtConfig', parentId: 'setting', groupId: 'setting-interface', order: 2 },
{ id: 'setting_api_storage', title: '系统存储配置', path: '/pages/mall/admin/setting/interface/storage', componentKey: 'SettingApiStorage', parentId: 'setting', groupId: 'setting-interface', order: 3 },
{ id: 'setting_api_collect', title: '商品采集配置', path: '/pages/mall/admin/setting/interface/collect', componentKey: 'SettingApiCollect', parentId: 'setting', groupId: 'setting-interface', order: 4 },
{ id: 'setting_api_logistics', title: '物流查询配置', path: '/pages/mall/admin/setting/interface/logistics', componentKey: 'SettingApiLogistics', parentId: 'setting', groupId: 'setting-interface', order: 5 },
{ id: 'setting_api_waybill', title: '电子面单配置', path: '/pages/mall/admin/setting/interface/e-sheet', componentKey: 'SettingApiWaybill', parentId: 'setting', groupId: 'setting-interface', order: 6 },
{ id: 'setting_api_sms', title: '短信接口配置', path: '/pages/mall/admin/setting/interface/sms', componentKey: 'SettingApiSms', parentId: 'setting', groupId: 'setting-interface', order: 7 },
{ id: 'setting_api_pay', title: '商城支付配置', path: '/pages/mall/admin/setting/interface/payment', componentKey: 'SettingApiPay', parentId: 'setting', groupId: 'setting-interface', order: 8 },
// 5. 接口设置
{ id: 'setting_api_yht_page', title: '一号通页面', path: '/pages/mall/admin/setting/interface/onepass/index', componentKey: 'SettingInterfaceOnepassIndex', parentId: 'setting', groupId: 'setting-interface', order: 1 },
{ id: 'setting_api_yht_config', title: '一号通配置', path: '/pages/mall/admin/setting/interface/onepass/config', componentKey: 'SettingInterfaceOnepassConfig', parentId: 'setting', groupId: 'setting-interface', order: 2 },
{ id: 'setting_api_storage', title: '系统存储配置', path: '/pages/mall/admin/setting/interface/storage', componentKey: 'SettingInterfaceStorage', parentId: 'setting', groupId: 'setting-interface', order: 3 },
{ id: 'setting_api_collect', title: '商品采集配置', path: '/pages/mall/admin/setting/interface/collect', componentKey: 'SettingInterfaceCollect', parentId: 'setting', groupId: 'setting-interface', order: 4 },
{ id: 'setting_api_logistics', title: '物流查询配置', path: '/pages/mall/admin/setting/interface/logistics', componentKey: 'SettingInterfaceLogistics', parentId: 'setting', groupId: 'setting-interface', order: 5 },
{ id: 'setting_api_waybill', title: '电子面单配置', path: '/pages/mall/admin/setting/interface/e-sheet', componentKey: 'SettingInterfaceESheet', parentId: 'setting', groupId: 'setting-interface', order: 6 },
{ id: 'setting_api_sms', title: '短信接口配置', path: '/pages/mall/admin/setting/interface/sms', componentKey: 'SettingInterfaceSms', parentId: 'setting', groupId: 'setting-interface', order: 7 },
{ id: 'setting_api_pay', title: '商城支付配置', path: '/pages/mall/admin/setting/interface/payment', componentKey: 'SettingInterfacePayment', parentId: 'setting', groupId: 'setting-interface', order: 8 },
// ========== 应用模块 ==========
{
id: 'app_statistic',
title: '应用统计',
path: '/pages/mall/admin/app/statistic',
componentKey: 'AppStatistic',
parentId: 'app',
groupId: 'app-manage',
order: 1
},
{
id: 'app_list',
title: '应用列表',
path: '/pages/mall/admin/app/list',
componentKey: 'AppList',
parentId: 'app',
groupId: 'app-manage',
order: 2
},
// 1. 公众号
{ id: 'app_wechat_menu', title: '微信菜单', path: '/pages/mall/admin/app/wechat/menu', componentKey: 'AppWechatMenu', parentId: 'app', groupId: 'app-wechat', order: 1 },
{ id: 'app_wechat_news', title: '图文管理', path: '/pages/mall/admin/app/wechat/news', componentKey: 'AppWechatNews', parentId: 'app', groupId: 'app-wechat', order: 2 },
{ id: 'app_wechat_reply_follow', title: '关注回复', path: '/pages/mall/admin/app/wechat/reply/follow', componentKey: 'AppWechatReplyFollow', parentId: 'app', groupId: 'app-wechat', order: 3 },
{ id: 'app_wechat_reply_keyword', title: '关键字回复', path: '/pages/mall/admin/app/wechat/reply/keyword', componentKey: 'AppWechatReplyKeyword', parentId: 'app', groupId: 'app-wechat', order: 4 },
{ id: 'app_wechat_reply_invalid', title: '无效词回复', path: '/pages/mall/admin/app/wechat/reply/invalid', componentKey: 'AppWechatReplyInvalid', parentId: 'app', groupId: 'app-wechat', order: 5 },
{ id: 'app_wechat_config', title: '公众号配置', path: '/pages/mall/admin/app/wechat/config', componentKey: 'AppWechatConfig', parentId: 'app', groupId: 'app-wechat', order: 6 },
// 2. 小程序
{ id: 'app_routine_download', title: '小程序下载', path: '/pages/mall/admin/app/routine/download', componentKey: 'AppRoutineDownload', parentId: 'app', groupId: 'app-routine', order: 1 },
{ id: 'app_routine_config', title: '小程序配置', path: '/pages/mall/admin/app/routine/config', componentKey: 'AppRoutineConfig', parentId: 'app', groupId: 'app-routine', order: 2 },
// 3. APP
{ id: 'app_mobile_config', title: 'APP配置', path: '/pages/mall/admin/app/mobile/config', componentKey: 'AppMobileConfig', parentId: 'app', groupId: 'app-mobile', order: 1 },
{ id: 'app_mobile_version', title: '版本管理', path: '/pages/mall/admin/app/mobile/version', componentKey: 'AppMobileVersion', parentId: 'app', groupId: 'app-mobile', order: 2 },
// 4. PC端
{ id: 'app_pc_design', title: 'PC端装修', path: '/pages/mall/admin/app/pc/design', componentKey: 'AppPcDesign', parentId: 'app', groupId: 'app-pc', order: 1 },
{ id: 'app_pc_config', title: 'PC端配置', path: '/pages/mall/admin/app/pc/config', componentKey: 'AppPcConfig', parentId: 'app', groupId: 'app-pc', order: 2 },
// ========== 维护模块 ==========
// 开发配置
{ id: 'maintain_dev_config', title: '配置分类', path: '/pages/mall/admin/maintain/dev/config', componentKey: 'MaintainDevConfig', parentId: 'maintain', groupId: 'maintain-dev', order: 1 },
{ id: 'maintain_dev_data', title: '组合数据', path: '/pages/mall/admin/maintain/dev/data', componentKey: 'MaintainDevData', parentId: 'maintain', groupId: 'maintain-dev', order: 2 },
{ id: 'maintain_dev_task', title: '定时任务', path: '/pages/mall/admin/maintain/dev/task', componentKey: 'MaintainDevTask', parentId: 'maintain', groupId: 'maintain-dev', order: 3 },
{ id: 'maintain_dev_auth', title: '权限维护', path: '/pages/mall/admin/maintain/dev/auth', componentKey: 'MaintainDevAuth', parentId: 'maintain', groupId: 'maintain-dev', order: 4 },
{ id: 'maintain_dev_module', title: '模块配置', path: '/pages/mall/admin/maintain/dev/module', componentKey: 'MaintainDevModule', parentId: 'maintain', groupId: 'maintain-dev', order: 5 },
{ id: 'maintain_dev_event', title: '自定事件', path: '/pages/mall/admin/maintain/dev/event', componentKey: 'MaintainDevEvent', parentId: 'maintain', groupId: 'maintain-dev', order: 6 },
{ id: 'maintain_dev_config', title: '配置分类', path: '/pages/mall/admin/maintain/dev-config/category', componentKey: 'MaintainDevConfig', parentId: 'maintain', groupId: 'maintain-dev', order: 1 },
{ id: 'maintain_dev_data', title: '组合数据', path: '/pages/mall/admin/maintain/dev-config/combination-data', componentKey: 'MaintainDevData', parentId: 'maintain', groupId: 'maintain-dev', order: 2 },
{ id: 'maintain_dev_task', title: '定时任务', path: '/pages/mall/admin/maintain/dev-config/cron-job', componentKey: 'MaintainDevTask', parentId: 'maintain', groupId: 'maintain-dev', order: 3 },
{ id: 'maintain_dev_auth', title: '权限维护', path: '/pages/mall/admin/maintain/dev-config/permission', componentKey: 'MaintainDevAuth', parentId: 'maintain', groupId: 'maintain-dev', order: 4 },
{ id: 'maintain_dev_module', title: '模块配置', path: '/pages/mall/admin/maintain/dev-config/module-config', componentKey: 'MaintainDevModule', parentId: 'maintain', groupId: 'maintain-dev', order: 5 },
{ id: 'maintain_dev_event', title: '自定事件', path: '/pages/mall/admin/maintain/dev-config/custom-event', componentKey: 'MaintainDevEvent', parentId: 'maintain', groupId: 'maintain-dev', order: 6 },
// 安全维护
{ id: 'maintain_security_cache', title: '刷新缓存', path: '/pages/mall/admin/maintain/security/cache', componentKey: 'MaintainSecurityCache', parentId: 'maintain', groupId: 'maintain-security', order: 1 },
{ id: 'maintain_security_log', title: '系统日志', path: '/pages/mall/admin/maintain/security/log', componentKey: 'MaintainSecurityLog', parentId: 'maintain', groupId: 'maintain-security', order: 2 },
{ id: 'maintain_security_upgrade', title: '在线升级', path: '/pages/mall/admin/maintain/security/upgrade', componentKey: 'MaintainSecurityUpgrade', parentId: 'maintain', groupId: 'maintain-security', order: 3 },
{ id: 'maintain_security_cache', title: '刷新缓存', path: '/pages/mall/admin/maintain/security/refresh-cache', componentKey: 'MaintainSecurityCache', parentId: 'maintain', groupId: 'maintain-security', order: 1 },
{ id: 'maintain_security_log', title: '系统日志', path: '/pages/mall/admin/maintain/security/system-log', componentKey: 'MaintainSecurityLog', parentId: 'maintain', groupId: 'maintain-security', order: 2 },
{ id: 'maintain_security_upgrade', title: '在线升级', path: '/pages/mall/admin/maintain/security/online-upgrade', componentKey: 'MaintainSecurityUpgrade', parentId: 'maintain', groupId: 'maintain-security', order: 3 },
// 数据维护
{ id: 'maintain_data_logistics', title: '物流公司', path: '/pages/mall/admin/maintain/data/logistics', componentKey: 'MaintainDataLogistics', parentId: 'maintain', groupId: 'maintain-data', order: 1 },
@@ -1321,10 +1154,10 @@ export const routes: RouteRecord[] = [
{ id: 'maintain_lang_config', title: '翻译配置', path: '/pages/mall/admin/maintain/lang/config', componentKey: 'MaintainLangConfig', parentId: 'maintain', groupId: 'maintain-lang', order: 4 },
// 开发工具
{ id: 'maintain_tool_db', title: '数据库管理', path: '/pages/mall/admin/maintain/tool/db', componentKey: 'MaintainToolDb', parentId: 'maintain', groupId: 'maintain-tool', order: 1 },
{ id: 'maintain_tool_file', title: '文件管理', path: '/pages/mall/admin/maintain/tool/file', componentKey: 'MaintainToolFile', parentId: 'maintain', groupId: 'maintain-tool', order: 2 },
{ id: 'maintain_tool_api', title: '接口管理', path: '/pages/mall/admin/maintain/tool/api', componentKey: 'MaintainToolApi', parentId: 'maintain', groupId: 'maintain-tool', order: 3 },
{ id: 'maintain_tool_dic', title: '数据字典', path: '/pages/mall/admin/maintain/tool/dic', componentKey: 'MaintainToolDic', parentId: 'maintain', groupId: 'maintain-tool', order: 4 },
{ id: 'maintain_tool_db', title: '数据库管理', path: '/pages/mall/admin/maintain/dev-tools/database', componentKey: 'MaintainToolDb', parentId: 'maintain', groupId: 'maintain-tool', order: 1 },
{ id: 'maintain_tool_file', title: '文件管理', path: '/pages/mall/admin/maintain/dev-tools/file', componentKey: 'MaintainToolFile', parentId: 'maintain', groupId: 'maintain-tool', order: 2 },
{ id: 'maintain_tool_api', title: '接口管理', path: '/pages/mall/admin/maintain/dev-tools/api', componentKey: 'MaintainToolApi', parentId: 'maintain', groupId: 'maintain-tool', order: 3 },
{ id: 'maintain_tool_dic', title: '数据字典', path: '/pages/mall/admin/maintain/dev-tools/data-dict', componentKey: 'MaintainToolDic', parentId: 'maintain', groupId: 'maintain-tool', order: 4 },
// 系统信息
{ id: 'maintain_sys_info', title: '系统信息', path: '/pages/mall/admin/maintain/sys/info', componentKey: 'MaintainSysInfo', parentId: 'maintain', groupId: 'maintain-sys', order: 1 }

View File

@@ -20,7 +20,7 @@ export const settingSubSiderMenu: MenuNode[] = [
{ id: 'setting_delivery_courier', title: '配送员管理', type: 'page', path: '/pages/mall/admin/setting/delivery/staff' },
{ id: 'pickup_order_group', title: '提货点设置', type: 'group', children: [
{ id: 'setting_delivery_pickup_list', title: '提货点', type: 'page', path: '/pages/mall/admin/setting/delivery/station' },
{ id: 'setting_delivery_verifier', title: '核销员', type: 'page', path: '/pages/mall/admin/setting/delivery/station' },
{ id: 'setting_delivery_verifier', title: '核销员', type: 'page', path: '/pages/mall/admin/setting/delivery/verifier' },
{ id: 'setting_delivery_freight', title: '运费模板', type: 'page', path: '/pages/mall/admin/setting/delivery/template' }
]}
]