# adminUI 视图反向梳理 — 租户管理端菜单建议结构 > 文档类型:**只读梳理**,暂不修改数据库或代码。 > 扫描来源:`ylrz_saas_his_scrm_adminUI/src/views` > 生成日期:2026-05-29 > 扫描结果:共 **1160** 个 `.vue` 文件,识别 **826** 个可独立路由页面 --- ## 一、梳理方法 | 项目 | 说明 | |------|------| | 页面识别 | `index.vue` / `list.vue` / `myList.vue` 及模块根目录单层 `.vue` | | 排除 | `components/`、详情页、授权页、字典子页、设计器、日志子页等 | | 组件路径 | 对应后端 `sys_menu.component`,如 `qw/externalContact/index` | | 路由加载 | 后端 `getRouters` → `loadView(@/views/${component})` | | 参考 | `src/views/admin/menu.js` (总后台 `/admin/*` 对照表) | --- ## 二、建议顶级模块(租户 saasadminui 顶栏) | 序号 | 模块名 | path | 视图根目录 | 页面数 | 备注 | |------|--------|------|------------|--------|------| | 1 | 首页 | `index` | index.vue | 1 | 仪表盘,可 hidden | | 2 | 企微管理 | `qw` | qw/ | 73 | | | 3 | 微信管理 | `wx` | wx/, gw/ | 5 | | | 4 | CRM客户 | `crm` | crm/ | 13 | | | 5 | 会员管理 | `member` | user/, users/, member/ | 20 | | | 6 | 诊所管理 | `his` | his/ | 135 | | | 7 | 商城管理 | `store` | store/ | 114 | canonical | | 8 | 直播管理 | `live` | live/, liveData/ | 60 | | | 9 | 课程管理 | `course` | course/, courseFinishTemp/ | 77 | | | 10 | AI聊天 | `fastGpt` | fastGpt/, chat/, aiob/ | 31 | | | 11 | 龙虾引擎 | `lobster` | lobster/ | 13 | | | 12 | 广告投放 | `ad` | adv/, ad/ | 25 | | | 13 | 系统管理 | `system` | system/, company/ | 73 | | | 14 | 财务管理 | `bill` | bill/, billing/ | 2 | | | 15 | 日程管理 | `calendar` | calendar/ | 1 | | | 16 | 数据统计 | `statistics` | statistics/, taskStatistics/ | 9 | | | 17 | 监控管理 | `watch` | watch/, monitor/ | 15 | | | 18 | 其他 | `other` | 平台/遗留 | 0 | 不下发租户默认菜单 | --- ## 三、总后台专用(归入「其他」) | 目录 | 页面数 | 说明 | |------|--------|------| | `admin/` | 60 | 总后台业务(租户/代理/外呼/短信/财务审计) | | `aiSipCall/` | 9 | 平台或遗留 | | `baidu/` | 1 | 平台或遗留 | | `callRecord/` | 2 | 平台或遗留 | | `food/` | 1 | 平台或遗留 | | `hisStore/` | 54 | 旧版商城,与 store 重复 | | `medical/` | 4 | 平台或遗留 | | `operation/` | 1 | 平台或遗留 | | `saas/` | 11 | SaaS 计费/租户字典/租户菜单模板 | | `saler/` | 2 | 平台或遗留 | | `shop/` | 6 | 门店独立菜单(遗留) | | `storeOrderOfflineItem/` | 2 | 平台或遗留 | | `sysUser/` | 2 | 总后台员工(与 system/user 不同) | | `todo/` | 1 | 平台或遗留 | ### 3.1 admin/menu.js 对照(总后台 /admin/*) | 菜单标题 | path | component | |----------|------|-----------| | 数据看板 | `/admin/dashboard` | `admin/dashboard/index` | | 租户管理 | `/admin/company` | `admin/sysCompany/index` | | 租户模块使用统计 | `/admin/moduleUsage` | `admin/moduleUsage/index` | | 租户管理端菜单 | `/admin/tenantMenu` | `admin/tenantMenu/index` | | 租户销售端菜单 | `/admin/tenantCompany` | `admin/tenantCompany/index` | | 代理管理 | `/admin/proxy` | `admin/proxy/index` | | 收费配置 | `/admin/serviceCost` | `admin/serviceCost/index` | | 员工管理 | `/admin/sysUser` | `admin/sysUser/index` | | 角色管理 | `/admin/role` | `system/role/index` | | 菜单管理 | `/admin/menu` | `system/menu/index` | | 外呼管理 | `/admin/voice` | `admin/voice/index` | | 短信管理 | `/admin/sms` | `admin/sms/index` | | AI模型配置 | `/admin/aiModel` | `admin/aiModel/index` | | AI生成工作流 | `/admin/workflowGenerate` | `lobster/workflow-generate/index` | --- ## 四、各业务模块二级分组与页面清单 ### 4.1 企微管理 (`qw/`) — 72 页 建议路由前缀:`/qw` #### 通用/待分组 | 建议 menu_name | component | 源文件 | |--------------|-----------|--------| | index | `qw/QwWorkTask/index` | `qw/QwWorkTask/index.vue` | | index | `qw/QwWorkTask/qw/index` | `qw/QwWorkTask/qw/index.vue` | | index | `qw/QwWorkTaskNew/index` | `qw/QwWorkTaskNew/index.vue` | | index | `qw/appAdvertisingReport/index` | `qw/appAdvertisingReport/index.vue` | | index | `qw/appContactWay/index` | `qw/appContactWay/index.vue` | | index | `qw/applyIpad/index` | `qw/applyIpad/index.vue` | | index | `qw/assignRule/index` | `qw/assignRule/index.vue` | | index | `qw/autoTagsLogs/index` | `qw/autoTagsLogs/index.vue` | | index | `qw/autoTagsRules/index` | `qw/autoTagsRules/index.vue` | | index | `qw/companyTag/index` | `qw/companyTag/index.vue` | | index | `qw/companyTagGroup/index` | `qw/companyTagGroup/index.vue` | | index | `qw/companyUser/index` | `qw/companyUser/index.vue` | | index | `qw/contactBatch/index` | `qw/contactBatch/index.vue` | | index | `qw/contactWay/index` | `qw/contactWay/index.vue` | | index | `qw/contactWayLogs/index` | `qw/contactWayLogs/index.vue` | | index | `qw/customerLink/index` | `qw/customerLink/index.vue` | | index | `qw/drainageLink/index` | `qw/drainageLink/index.vue` | | index | `qw/drainageLinkLogs/index` | `qw/drainageLinkLogs/index.vue` | | index | `qw/externalContact/index` | `qw/externalContact/index.vue` | | index | `qw/externalContactLoss/index` | `qw/externalContactLoss/index.vue` | | index | `qw/externalContactStage/index` | `qw/externalContactStage/index.vue` | | index | `qw/externalContactTransfer/index` | `qw/externalContactTransfer/index.vue` | | index | `qw/externalContactTransferAudit/index` | `qw/externalContactTransferAudit/index.vue` | | index | `qw/externalContactTransferCompanyAudit/index` | `qw/externalContactTransferCompanyAudit/index.vue` | | index | `qw/externalContactTransferCompanyAudit/index` | `qw/externalContactTransferCompanyAudit/index/index.vue` | | index | `qw/externalContactTransferLog/index` | `qw/externalContactTransferLog/index.vue` | | index | `qw/externalContactUnassigned/index` | `qw/externalContactUnassigned/index.vue` | | index | `qw/friendCircle/index` | `qw/friendCircle/index.vue` | | index | `qw/friendCircleTask/index` | `qw/friendCircleTask/index.vue` | | index | `qw/friendComments/index` | `qw/friendComments/index.vue` | | index | `qw/friendCustomerList/index` | `qw/friendCustomerList/index.vue` | | index | `qw/friendMaterial/index` | `qw/friendMaterial/index.vue` | | index | `qw/friendWelcome/index` | `qw/friendWelcome/index.vue` | | index | `qw/friendWelcomeItem/index` | `qw/friendWelcomeItem/index.vue` | | index | `qw/groupActual/index` | `qw/groupActual/index.vue` | | index | `qw/groupChat/index` | `qw/groupChat/index.vue` | | index | `qw/groupChatStatistic/index` | `qw/groupChatStatistic/index.vue` | | index | `qw/groupChatTransfer/index` | `qw/groupChatTransfer/index.vue` | | index | `qw/groupChatTransferLog/index` | `qw/groupChatTransferLog/index.vue` | | index | `qw/groupChatTransferOnJob/index` | `qw/groupChatTransferOnJob/index.vue` | | index | `qw/groupLiveCode/index` | `qw/groupLiveCode/index.vue` | | index | `qw/groupMsg/index` | `qw/groupMsg/index.vue` | | index | `qw/groupMsgItem/index` | `qw/groupMsgItem/index.vue` | | index | `qw/material/index` | `qw/material/index.vue` | | index | `qw/materialQw/index` | `qw/materialQw/index.vue` | | index | `qw/myVoiceLog/index` | `qw/myVoiceLog/index.vue` | | index | `qw/qwAppContactWayLogs/index` | `qw/qwAppContactWayLogs/index.vue` | | index | `qw/qwCompany/index` | `qw/qwCompany/index.vue` | | index | `qw/qwDept/index` | `qw/qwDept/index.vue` | | index | `qw/qwDept/index` | `qw/qwDept/index/index.vue` | | index | `qw/qwInformation/index` | `qw/qwInformation/index.vue` | | index | `qw/qwIpadServer/index` | `qw/qwIpadServer/index.vue` | | index | `qw/qwIpadServerLog/index` | `qw/qwIpadServerLog/index.vue` | | index | `qw/qwIpadServerUser/index` | `qw/qwIpadServerUser/index.vue` | | index | `qw/qwPushCount/index` | `qw/qwPushCount/index.vue` | | index | `qw/qwPushCount/index` | `qw/qwPushCount/index/index.vue` | | index | `qw/qwUserDelLossStatistics/index` | `qw/qwUserDelLossStatistics/index.vue` | | index | `qw/qwUserVoiceLog/index` | `qw/qwUserVoiceLog/index.vue` | | index | `qw/qwUserVoiceLogTotal/index` | `qw/qwUserVoiceLogTotal/index.vue` | | index | `qw/record/index` | `qw/record/index.vue` | | index | `qw/record/index` | `qw/record/index/index.vue` | | index | `qw/sop/index` | `qw/sop/index.vue` | | index | `qw/sop/index` | `qw/sop/index/index.vue` | | index | `qw/sopTemp/index` | `qw/sopTemp/index.vue` | | index | `qw/tag/index` | `qw/tag/index.vue` | | index | `qw/tagGroup/index` | `qw/tagGroup/index.vue` | | index | `qw/user/index` | `qw/user/index.vue` | | index | `qw/userBehaviorData/index` | `qw/userBehaviorData/index.vue` | | index | `qw/welcome/index` | `qw/welcome/index.vue` | | index | `qw/workLink/index` | `qw/workLink/index.vue` | | index | `qw/workLinkUser/index` | `qw/workLinkUser/index.vue` | | index | `qw/workUser/index` | `qw/workUser/index.vue` | ### 4.2 CRM (`crm/`) — 13 页 建议路由前缀:`/crm` #### 通用/待分组 | 建议 menu_name | component | 源文件 | |--------------|-----------|--------| | index | `crm/customer/index` | `crm/customer/index.vue` | | index | `crm/customerAssign/index` | `crm/customerAssign/index.vue` | | index | `crm/customerAssign/index` | `crm/customerAssign/index/index.vue` | | index | `crm/customerContacts/index` | `crm/customerContacts/index.vue` | | index | `crm/customerExt/index` | `crm/customerExt/index.vue` | | index | `crm/customerLevel/index` | `crm/customerLevel/index/index.vue` | | index | `crm/customerLogs/index` | `crm/customerLogs/index.vue` | | index | `crm/customerUser/index` | `crm/customerUser/index.vue` | | index | `crm/customerVisit/index` | `crm/customerVisit/index.vue` | | index | `crm/event/index` | `crm/event/index.vue` | | index | `crm/externalContact/index` | `crm/externalContact/index.vue` | | index | `crm/msg/index` | `crm/msg/index.vue` | | index | `crm/third/index` | `crm/third/index.vue` | ### 4.3 商城 (`store/`) — 114 页 建议路由前缀:`/store` #### 通用/待分组 | 建议 menu_name | component | 源文件 | |--------------|-----------|--------| | index | `store/FsFollowReport/index` | `store/FsFollowReport/index.vue` | | index | `store/PromotionOrder/index` | `store/PromotionOrder/index.vue` | | index | `store/PromotionOrder/index` | `store/PromotionOrder/index/index.vue` | | index | `store/adv/index` | `store/adv/index.vue` | | index | `store/adv/index` | `store/adv/index/index.vue` | | index | `store/collectionSchedule/index` | `store/collectionSchedule/index.vue` | | index | `store/coupon/index` | `store/coupon/index.vue` | | index | `store/drugReport/index` | `store/drugReport/index.vue` | | index | `store/drugReportCount/index` | `store/drugReportCount/index.vue` | | index | `store/exportTask/index` | `store/exportTask/index.vue` | | list | `store/follow/list` | `store/follow/list.vue` | | myList | `store/follow/myList` | `store/follow/myList.vue` | | index | `store/healthRecord/index` | `store/healthRecord/index.vue` | | index | `store/healthStoreOrder/index` | `store/healthStoreOrder/index.vue` | | index | `store/healthStoreOrder/index` | `store/healthStoreOrder/index/index.vue` | | index | `store/healthTongue/index` | `store/healthTongue/index.vue` | | index | `store/homeArticle/index` | `store/homeArticle/index.vue` | | index | `store/homeArticle/index` | `store/homeArticle/index/index.vue` | | index | `store/homeCategory/index` | `store/homeCategory/index.vue` | | index | `store/homeCategory/index` | `store/homeCategory/index/index.vue` | | index | `store/homeView/index` | `store/homeView/index.vue` | | index | `store/homeView/index` | `store/homeView/index/index.vue` | | index | `store/index` | `store/index.vue` | | index | `store/index` | `store/index/index.vue` | | list | `store/inquiryOrder/list` | `store/inquiryOrder/list.vue` | | myList | `store/inquiryOrder/myList` | `store/inquiryOrder/myList.vue` | | index | `store/inquiryOrderReport/index` | `store/inquiryOrderReport/index.vue` | | index | `store/menu/index` | `store/menu/index.vue` | | index | `store/menu/index` | `store/menu/index/index.vue` | | index | `store/myHealthTongue/index` | `store/myHealthTongue/index.vue` | | index | `store/package/index` | `store/package/index.vue` | | list | `store/packageOrder/list` | `store/packageOrder/list.vue` | | myList | `store/packageOrder/myList` | `store/packageOrder/myList.vue` | | index | `store/prescribe/index` | `store/prescribe/index.vue` | | index | `store/prescribe/index` | `store/prescribe/index/index.vue` | | list | `store/prescribe/list` | `store/prescribe/list.vue` | | myList | `store/prescribe/myList` | `store/prescribe/myList.vue` | | index | `store/prescribeDrug/index` | `store/prescribeDrug/index.vue` | | index | `store/prescribeDrug/index` | `store/prescribeDrug/index/index.vue` | | index | `store/recommend/index` | `store/recommend/index.vue` | | index | `store/recommend/index` | `store/recommend/index/index.vue` | | index | `store/shippingTemplates/index` | `store/shippingTemplates/index.vue` | | index | `store/shippingTemplates/index` | `store/shippingTemplates/index/index.vue` | | index | `store/shippingTemplatesFree/index` | `store/shippingTemplatesFree/index.vue` | | index | `store/shippingTemplatesFree/index` | `store/shippingTemplatesFree/index/index.vue` | | index | `store/shippingTemplatesRegion/index` | `store/shippingTemplatesRegion/index.vue` | | index | `store/shippingTemplatesRegion/index` | `store/shippingTemplatesRegion/index/index.vue` | | index | `store/storeActivity/index` | `store/storeActivity/index.vue` | | index | `store/storeActivity/index` | `store/storeActivity/index/index.vue` | | index | `store/storeAfterSales/index` | `store/storeAfterSales/index.vue` | | index | `store/storeAfterSales/index` | `store/storeAfterSales/index/index.vue` | | list | `store/storeAfterSales/list` | `store/storeAfterSales/list.vue` | | myList | `store/storeAfterSales/myList` | `store/storeAfterSales/myList.vue` | | index | `store/storeAfterSalesItem/index` | `store/storeAfterSalesItem/index.vue` | | index | `store/storeAfterSalesItem/index` | `store/storeAfterSalesItem/index/index.vue` | | index | `store/storeAfterSalesStatus/index` | `store/storeAfterSalesStatus/index.vue` | | index | `store/storeAfterSalesStatus/index` | `store/storeAfterSalesStatus/index/index.vue` | | index | `store/storeCart/index` | `store/storeCart/index.vue` | | index | `store/storeCart/index` | `store/storeCart/index/index.vue` | | index | `store/storeCoupon/index` | `store/storeCoupon/index.vue` | | index | `store/storeCoupon/index` | `store/storeCoupon/index/index.vue` | | index | `store/storeCouponIssue/index` | `store/storeCouponIssue/index.vue` | | index | `store/storeCouponIssue/index` | `store/storeCouponIssue/index/index.vue` | | index | `store/storeCouponIssueUser/index` | `store/storeCouponIssueUser/index.vue` | | index | `store/storeCouponIssueUser/index` | `store/storeCouponIssueUser/index/index.vue` | | index | `store/storeCouponUser/index` | `store/storeCouponUser/index.vue` | | index | `store/storeCouponUser/index` | `store/storeCouponUser/index/index.vue` | | index | `store/storeOrder/index` | `store/storeOrder/index.vue` | | index | `store/storeOrder/index` | `store/storeOrder/index/index.vue` | | list | `store/storeOrder/list` | `store/storeOrder/list.vue` | | myList | `store/storeOrder/myList` | `store/storeOrder/myList.vue` | | index | `store/storeOrderAudit/index` | `store/storeOrderAudit/index.vue` | | index | `store/storeOrderAudit/index` | `store/storeOrderAudit/index/index.vue` | | index | `store/storeOrderItem/index` | `store/storeOrderItem/index.vue` | | index | `store/storeOrderItem/index` | `store/storeOrderItem/index/index.vue` | | index | `store/storeOrderNotice/index` | `store/storeOrderNotice/index.vue` | | index | `store/storeOrderNotice/index` | `store/storeOrderNotice/index/index.vue` | | index | `store/storeOrderOffline/index` | `store/storeOrderOffline/index.vue` | | index | `store/storeOrderOffline/index` | `store/storeOrderOffline/index/index.vue` | | index | `store/storeOrderStatus/index` | `store/storeOrderStatus/index.vue` | | index | `store/storeOrderStatus/index` | `store/storeOrderStatus/index/index.vue` | | index | `store/storePayment/index` | `store/storePayment/index.vue` | | index | `store/storeProduct/index` | `store/storeProduct/index.vue` | | index | `store/storeProductAttr/index` | `store/storeProductAttr/index.vue` | | index | `store/storeProductAttr/index` | `store/storeProductAttr/index/index.vue` | | index | `store/storeProductAttrValue/index` | `store/storeProductAttrValue/index.vue` | | index | `store/storeProductAttrValue/index` | `store/storeProductAttrValue/index/index.vue` | | index | `store/storeProductCategory/index` | `store/storeProductCategory/index.vue` | | index | `store/storeProductCategory/index` | `store/storeProductCategory/index/index.vue` | | index | `store/storeProductDetails/index` | `store/storeProductDetails/index.vue` | | index | `store/storeProductDetails/index` | `store/storeProductDetails/index/index.vue` | | index | `store/storeProductGroup/index` | `store/storeProductGroup/index.vue` | | index | `store/storeProductGroup/index` | `store/storeProductGroup/index/index.vue` | | index | `store/storeProductPackage/index` | `store/storeProductPackage/index.vue` | | index | `store/storeProductRelation/index` | `store/storeProductRelation/index.vue` | | index | `store/storeProductRelation/index` | `store/storeProductRelation/index/index.vue` | | index | `store/storeProductReply/index` | `store/storeProductReply/index.vue` | | index | `store/storeProductReply/index` | `store/storeProductReply/index/index.vue` | | index | `store/storeProductRule/index` | `store/storeProductRule/index.vue` | | index | `store/storeProductRule/index` | `store/storeProductRule/index/index.vue` | | index | `store/storeProductTemplate/index` | `store/storeProductTemplate/index.vue` | | index | `store/storeProductTemplate/index` | `store/storeProductTemplate/index/index.vue` | | index | `store/storeShop/index` | `store/storeShop/index.vue` | | index | `store/storeShop/index` | `store/storeShop/index/index.vue` | | index | `store/storeShopStaff/index` | `store/storeShopStaff/index.vue` | | index | `store/storeShopStaff/index` | `store/storeShopStaff/index/index.vue` | | index | `store/storeVisit/index` | `store/storeVisit/index.vue` | | index | `store/storeVisit/index` | `store/storeVisit/index/index.vue` | | list | `store/user/list` | `store/user/list.vue` | | myList | `store/user/myList` | `store/user/myList.vue` | | index | `store/userCoupon/index` | `store/userCoupon/index.vue` | | index | `store/userOnlineState/index` | `store/userOnlineState/index.vue` | | index | `store/userPromoterApply/index` | `store/userPromoterApply/index.vue` | | index | `store/userPromoterApply/index` | `store/userPromoterApply/index/index.vue` | ### 4.4 诊所 (`his/`) — 135 页 建议路由前缀:`/his` #### 通用/待分组 | 建议 menu_name | component | 源文件 | |--------------|-----------|--------| | index | `his/FsFollowReport/index` | `his/FsFollowReport/index.vue` | | index | `his/FsFollowReport/index` | `his/FsFollowReport/index/index.vue` | | index | `his/adv/index` | `his/adv/index.vue` | | index | `his/aiDoctorChatMsg/index` | `his/aiDoctorChatMsg/index.vue` | | index | `his/aiDoctorChatSession/index` | `his/aiDoctorChatSession/index.vue` | | index | `his/aiDoctorRole/index` | `his/aiDoctorRole/index.vue` | | index | `his/aiWorkflow/index` | `his/aiWorkflow/index.vue` | | index | `his/answer/index` | `his/answer/index.vue` | | index | `his/appVersion/index` | `his/appVersion/index.vue` | | index | `his/article/index` | `his/article/index.vue` | | index | `his/articleCate/index` | `his/articleCate/index.vue` | | index | `his/articleViews/index` | `his/articleViews/index.vue` | | index | `his/bill/doctorBill/index` | `his/bill/doctorBill/index.vue` | | index | `his/bill/doctorExtract/index` | `his/bill/doctorExtract/index.vue` | | index | `his/bill/redPackage/index` | `his/bill/redPackage/index.vue` | | index | `his/bill/storeBill/index` | `his/bill/storeBill/index.vue` | | index | `his/bill/storeExtract/index` | `his/bill/storeExtract/index.vue` | | index | `his/bill/userBill/index` | `his/bill/userBill/index.vue` | | index | `his/bill/userExtract/index` | `his/bill/userExtract/index.vue` | | index | `his/caseArticle/index` | `his/caseArticle/index.vue` | | index | `his/chineseMedicine/index` | `his/chineseMedicine/index.vue` | | index | `his/city/index` | `his/city/index.vue` | | index | `his/city/index` | `his/city/index/index.vue` | | index | `his/company/index` | `his/company/index.vue` | | index | `his/companyDeduct/index` | `his/companyDeduct/index.vue` | | index | `his/companyRecharge/index` | `his/companyRecharge/index.vue` | | index | `his/complaint/index` | `his/complaint/index.vue` | | index | `his/coupon/index` | `his/coupon/index.vue` | | index | `his/department/index` | `his/department/index.vue` | | index | `his/dfAccount/index` | `his/dfAccount/index.vue` | | index | `his/disease/index` | `his/disease/index.vue` | | index | `his/divItem/index` | `his/divItem/index.vue` | | index | `his/doctor/index` | `his/doctor/index.vue` | | index | `his/doctor/index` | `his/doctor/index/index.vue` | | index | `his/doctorArticle/index` | `his/doctorArticle/index.vue` | | index | `his/doctorArticleCate/index` | `his/doctorArticleCate/index.vue` | | index | `his/doctorBill/index` | `his/doctorBill/index.vue` | | index | `his/doctorBill/index` | `his/doctorBill/index/index.vue` | | index | `his/doctorExtract/index` | `his/doctorExtract/index.vue` | | index | `his/doctorExtract/index` | `his/doctorExtract/index/index.vue` | | index | `his/doctorOperLog/index` | `his/doctorOperLog/index.vue` | | index | `his/doctorOperLog/index` | `his/doctorOperLog/index/index.vue` | | index | `his/doctorProduct/index` | `his/doctorProduct/index.vue` | | index | `his/doctorProduct/index` | `his/doctorProduct/index/index.vue` | | index | `his/drugReport/index` | `his/drugReport/index.vue` | | index | `his/drugReportCount/index` | `his/drugReportCount/index.vue` | | index | `his/exportTask/index` | `his/exportTask/index.vue` | | index | `his/express/index` | `his/express/index.vue` | | index | `his/famousPrescribe/index` | `his/famousPrescribe/index.vue` | | index | `his/follow/index` | `his/follow/index.vue` | | index | `his/followReport/index` | `his/followReport/index.vue` | | index | `his/followTemp/index` | `his/followTemp/index.vue` | | index | `his/fsFirstDiagnosis/index` | `his/fsFirstDiagnosis/index.vue` | | index | `his/healthArticle/index` | `his/healthArticle/index.vue` | | index | `his/healthArticle/index` | `his/healthArticle/index/index.vue` | | index | `his/healthData/index` | `his/healthData/index.vue` | | index | `his/healthHistoryTemp/index` | `his/healthHistoryTemp/index.vue` | | index | `his/healthLife/index` | `his/healthLife/index.vue` | | index | `his/healthRecord/index` | `his/healthRecord/index.vue` | | index | `his/healthTongue/index` | `his/healthTongue/index.vue` | | index | `his/hfpayConfig/index` | `his/hfpayConfig/index.vue` | | index | `his/homeArticle/index` | `his/homeArticle/index.vue` | | index | `his/homeCategory/index` | `his/homeCategory/index.vue` | | index | `his/homeView/index` | `his/homeView/index.vue` | | index | `his/hospital/index` | `his/hospital/index.vue` | | index | `his/icd/index` | `his/icd/index.vue` | | index | `his/illnessLibrary/index` | `his/illnessLibrary/index.vue` | | index | `his/inquiryDisease/index` | `his/inquiryDisease/index.vue` | | order1 | `his/inquiryOrder/order1` | `his/inquiryOrder/order1.vue` | | index | `his/inquiryOrderPing/index` | `his/inquiryOrderPing/index.vue` | | index | `his/inquiryOrderReport/index` | `his/inquiryOrderReport/index.vue` | | index | `his/inquiryTemp/index` | `his/inquiryTemp/index.vue` | | index | `his/integralGoods/index` | `his/integralGoods/index.vue` | | index | `his/integralOrder/index` | `his/integralOrder/index.vue` | | index | `his/logs/index` | `his/logs/index.vue` | | index | `his/logs/index` | `his/logs/index/index.vue` | | index | `his/medicatedFood/index` | `his/medicatedFood/index.vue` | | index | `his/merchantAppConfig/index` | `his/merchantAppConfig/index.vue` | | index | `his/package/index` | `his/package/index.vue` | | index | `his/packageCate/index` | `his/packageCate/index.vue` | | index | `his/packageFavorite/index` | `his/packageFavorite/index.vue` | | index | `his/packageFavorite/index` | `his/packageFavorite/index/index.vue` | | index | `his/packageOrder/index` | `his/packageOrder/index.vue` | | index | `his/packageSolarTerm/index` | `his/packageSolarTerm/index.vue` | | index | `his/patient/index` | `his/patient/index.vue` | | index | `his/pharmacist/index` | `his/pharmacist/index.vue` | | index | `his/pharmacist/index` | `his/pharmacist/index/index.vue` | | index | `his/physicalReportTemplate/index` | `his/physicalReportTemplate/index.vue` | | index | `his/physicalReportTemplateField/index` | `his/physicalReportTemplateField/index.vue` | | index | `his/price/index` | `his/price/index.vue` | | index | `his/price/index` | `his/price/index/index.vue` | | index | `his/promotionActive/index` | `his/promotionActive/index.vue` | | index | `his/promotionActive/index` | `his/promotionActive/index/index.vue` | | index | `his/promotionActiveLog/index` | `his/promotionActiveLog/index.vue` | | index | `his/promotionActiveLog/index` | `his/promotionActiveLog/index/index.vue` | | index | `his/promotionalActive/index` | `his/promotionalActive/index.vue` | | index | `his/questions/index` | `his/questions/index.vue` | | index | `his/redPacketConfig/index` | `his/redPacketConfig/index.vue` | | index | `his/store/index` | `his/store/index.vue` | | index | `his/storeActivity/index` | `his/storeActivity/index.vue` | | index | `his/storeAfterSales/index` | `his/storeAfterSales/index.vue` | | index | `his/storeAfterSales/index` | `his/storeAfterSales/index/index.vue` | | index | `his/storeBill/index` | `his/storeBill/index.vue` | | index | `his/storeBill/index` | `his/storeBill/index/index.vue` | | index | `his/storeExtract/index` | `his/storeExtract/index.vue` | | index | `his/storeExtract/index` | `his/storeExtract/index/index.vue` | | index | `his/storeLog/index` | `his/storeLog/index.vue` | | index | `his/storeLog/index` | `his/storeLog/index/index.vue` | | order1 | `his/storeOrder/order1` | `his/storeOrder/order1.vue` | | index | `his/storePayment/index` | `his/storePayment/index.vue` | | index | `his/storeProduct/index` | `his/storeProduct/index.vue` | | index | `his/storeProductCategory/index` | `his/storeProductCategory/index.vue` | | index | `his/storeProductPackage/index` | `his/storeProductPackage/index.vue` | | index | `his/storeSubOrder/index` | `his/storeSubOrder/index.vue` | | index | `his/template/index` | `his/template/index.vue` | | index | `his/template/index` | `his/template/index/index.vue` | | index | `his/testReport/index` | `his/testReport/index.vue` | | index | `his/testTemp/index` | `his/testTemp/index.vue` | | index | `his/testTempItem/index` | `his/testTempItem/index.vue` | | index | `his/user/index` | `his/user/index.vue` | | index | `his/userAddress/index` | `his/userAddress/index.vue` | | index | `his/userAddress/index` | `his/userAddress/index/index.vue` | | index | `his/userBill/index` | `his/userBill/index.vue` | | index | `his/userBill/index` | `his/userBill/index/index.vue` | | index | `his/userCoupon/index` | `his/userCoupon/index.vue` | | index | `his/userExtract/index` | `his/userExtract/index.vue` | | index | `his/userExtract/index` | `his/userExtract/index/index.vue` | | index | `his/userIntegralLogs/index` | `his/userIntegralLogs/index.vue` | | index | `his/userNewTask/index` | `his/userNewTask/index.vue` | | index | `his/userNewTask/index` | `his/userNewTask/index/index.vue` | | index | `his/userOnlineState/index` | `his/userOnlineState/index.vue` | | index | `his/userOperationLog/index` | `his/userOperationLog/index.vue` | | index | `his/userOperationLog/index` | `his/userOperationLog/index/index.vue` | | index | `his/userRecharge/index` | `his/userRecharge/index.vue` | | index | `his/vessel/index` | `his/vessel/index.vue` | ### 4.5 直播 (`live/`) — 58 页 建议路由前缀:`/live` #### 通用/待分组 | 建议 menu_name | component | 源文件 | |--------------|-----------|--------| | index | `live/gift/index` | `live/gift/index.vue` | | index | `live/healthLiveOrder/index` | `live/healthLiveOrder/index.vue` | | index | `live/healthLiveOrder/index` | `live/healthLiveOrder/index/index.vue` | | index | `live/index` | `live/index/index.vue` | | index | `live/issue/index` | `live/issue/index.vue` | | index | `live/issue/index` | `live/issue/index/index.vue` | | index | `live/live/index` | `live/live/index.vue` | | index | `live/liveAfterSales/index` | `live/liveAfterSales/index.vue` | | index | `live/liveAfterSales/index` | `live/liveAfterSales/index/index.vue` | | index | `live/liveAfterSalesItem/index` | `live/liveAfterSalesItem/index.vue` | | index | `live/liveAfterSalesLogs/index` | `live/liveAfterSalesLogs/index.vue` | | index | `live/liveAfteraSales/index` | `live/liveAfteraSales/index.vue` | | index | `live/liveAnchor/index` | `live/liveAnchor/index.vue` | | index | `live/liveConfig/index` | `live/liveConfig/index.vue` | | index | `live/liveConsole/index` | `live/liveConsole/index.vue` | | index | `live/liveCoupon/index` | `live/liveCoupon/index.vue` | | index | `live/liveCouponIssue/index` | `live/liveCouponIssue/index.vue` | | index | `live/liveCouponIssueUser/index` | `live/liveCouponIssueUser/index.vue` | | index | `live/liveCouponUser/index` | `live/liveCouponUser/index.vue` | | index | `live/liveData/index` | `live/liveData/index.vue` | | index | `live/liveEventConf/index` | `live/liveEventConf/index.vue` | | index | `live/liveGoods/index` | `live/liveGoods/index.vue` | | index | `live/liveLotteryConf/index` | `live/liveLotteryConf/index.vue` | | index | `live/liveLotteryProductConf/index` | `live/liveLotteryProductConf/index.vue` | | index | `live/liveLotteryRecord/index` | `live/liveLotteryRecord/index.vue` | | index | `live/liveLotteryRegistration/index` | `live/liveLotteryRegistration/index.vue` | | index | `live/liveMiniLives/index` | `live/liveMiniLives/index.vue` | | index | `live/liveMsg/index` | `live/liveMsg/index.vue` | | index | `live/liveOrder/index` | `live/liveOrder/index.vue` | | index | `live/liveOrderLogs/index` | `live/liveOrderLogs/index.vue` | | index | `live/liveOrderStatus/index` | `live/liveOrderStatus/index.vue` | | index | `live/liveOrderitems/index` | `live/liveOrderitems/index.vue` | | index | `live/liveProfit/index` | `live/liveProfit/index.vue` | | index | `live/liveQuestion/index` | `live/liveQuestion/index.vue` | | index | `live/liveQuestionBank/index` | `live/liveQuestionBank/index.vue` | | index | `live/liveRedConf/index` | `live/liveRedConf/index.vue` | | index | `live/liveRewardRecord/index` | `live/liveRewardRecord/index.vue` | | index | `live/liveTrafficLog/index` | `live/liveTrafficLog/index.vue` | | index | `live/liveUserFavorite/index` | `live/liveUserFavorite/index.vue` | | index | `live/liveUserFavorite/index` | `live/liveUserFavorite/index/index.vue` | | index | `live/liveUserFollow/index` | `live/liveUserFollow/index.vue` | | index | `live/liveUserFollow/index` | `live/liveUserFollow/index/index.vue` | | index | `live/liveUserLike/index` | `live/liveUserLike/index.vue` | | index | `live/liveUserLike/index` | `live/liveUserLike/index/index.vue` | | index | `live/liveUserLotteryRecord/index` | `live/liveUserLotteryRecord/index.vue` | | index | `live/liveUserRedRecord/index` | `live/liveUserRedRecord/index.vue` | | index | `live/liveVideo/index` | `live/liveVideo/index.vue` | | index | `live/liveWatchLog/index` | `live/liveWatchLog/index.vue` | | index | `live/liveWatchUser/index` | `live/liveWatchUser/index.vue` | | index | `live/order/index` | `live/order/index.vue` | | index | `live/record/index` | `live/record/index.vue` | | index | `live/record/index` | `live/record/index/index.vue` | | index | `live/talentLiveInfo/index` | `live/talentLiveInfo/index.vue` | | index | `live/task/index` | `live/task/index.vue` | | index | `live/task/index` | `live/task/index/index.vue` | | index | `live/trafficLog/index` | `live/trafficLog/index.vue` | | index | `live/trafficLog/index` | `live/trafficLog/index/index.vue` | | index | `live/words/index` | `live/words/index.vue` | ### 4.6 课程 (`course/`) — 75 页 建议路由前缀:`/course` #### 通用/待分组 | 建议 menu_name | component | 源文件 | |--------------|-----------|--------| | index | `course/Material/index` | `course/Material/index.vue` | | index | `course/courseAnswerLog/index` | `course/courseAnswerLog/index.vue` | | index | `course/courseAnswerLog/index` | `course/courseAnswerLog/index/index.vue` | | index | `course/courseAnswerlogs/index` | `course/courseAnswerlogs/index.vue` | | index | `course/courseDomainName/index` | `course/courseDomainName/index.vue` | | index | `course/courseFinishTemp/index` | `course/courseFinishTemp/index.vue` | | index | `course/courseFinishTempParent/index` | `course/courseFinishTempParent/index.vue` | | index | `course/courseLink/index` | `course/courseLink/index.vue` | | index | `course/coursePlaySourceConfig/index` | `course/coursePlaySourceConfig/index.vue` | | index | `course/courseQuestionBank/index` | `course/courseQuestionBank/index.vue` | | index | `course/courseQuestionCategory/index` | `course/courseQuestionCategory/index.vue` | | index | `course/courseQuestionCategory/index` | `course/courseQuestionCategory/index/index.vue` | | index | `course/courseRedPacketLog/index` | `course/courseRedPacketLog/index.vue` | | index | `course/courseRedPacketStatistics/index` | `course/courseRedPacketStatistics/index.vue` | | index | `course/courseTrafficLog/index` | `course/courseTrafficLog/index.vue` | | index | `course/courseUserStatistics/index` | `course/courseUserStatistics/index.vue` | | index | `course/courseUserStatistics/qw/index` | `course/courseUserStatistics/qw/index.vue` | | index | `course/courseWatchComment/index` | `course/courseWatchComment/index.vue` | | index | `course/courseWatchLog/index` | `course/courseWatchLog/index.vue` | | index | `course/courseWatchLog/qw/index` | `course/courseWatchLog/qw/index.vue` | | index | `course/fsCourseProduct/index` | `course/fsCourseProduct/index.vue` | | index | `course/fsCourseProductOrder/index` | `course/fsCourseProductOrder/index.vue` | | index | `course/huaweiCloudStatistics/index` | `course/huaweiCloudStatistics/index.vue` | | index | `course/index` | `course/index/index.vue` | | index | `course/period/index` | `course/period/index.vue` | | index | `course/period/index` | `course/period/index/index.vue` | | index | `course/playSourceConfig/index` | `course/playSourceConfig/index.vue` | | index | `course/playSourceConfig/index` | `course/playSourceConfig/index/index.vue` | | index | `course/push/index` | `course/push/index.vue` | | index | `course/sop/index` | `course/sop/index.vue` | | index | `course/sopLogs/index` | `course/sopLogs/index.vue` | | index | `course/sopLogs/index` | `course/sopLogs/index/index.vue` | | index | `course/statistics/index` | `course/statistics/index.vue` | | index | `course/trainingCamp/index` | `course/trainingCamp/index.vue` | | index | `course/trainingCamp/index` | `course/trainingCamp/index/index.vue` | | index | `course/userCourse/index` | `course/userCourse/index.vue` | | index | `course/userCourseCategory/index` | `course/userCourseCategory/index.vue` | | index | `course/userCourseComment/index` | `course/userCourseComment/index.vue` | | index | `course/userCourseCommentLike/index` | `course/userCourseCommentLike/index.vue` | | index | `course/userCourseCommentLike/index` | `course/userCourseCommentLike/index/index.vue` | | index | `course/userCourseComplaintRecord/index` | `course/userCourseComplaintRecord/index.vue` | | index | `course/userCourseComplaintType/index` | `course/userCourseComplaintType/index.vue` | | index | `course/userCourseFavorite/index` | `course/userCourseFavorite/index.vue` | | index | `course/userCourseFavorite/index` | `course/userCourseFavorite/index/index.vue` | | index | `course/userCourseNote/index` | `course/userCourseNote/index.vue` | | index | `course/userCourseNoteLike/index` | `course/userCourseNoteLike/index.vue` | | index | `course/userCourseNoteLike/index` | `course/userCourseNoteLike/index/index.vue` | | index | `course/userCourseOrder/index` | `course/userCourseOrder/index.vue` | | index | `course/userCoursePeriod/index` | `course/userCoursePeriod/index.vue` | | index | `course/userCourseStudy/index` | `course/userCourseStudy/index.vue` | | index | `course/userCourseStudyLog/index` | `course/userCourseStudyLog/index.vue` | | index | `course/userCourseVideo/index` | `course/userCourseVideo/index.vue` | | index | `course/userCourseVideo/index` | `course/userCourseVideo/index/index.vue` | | index | `course/userTalent/index` | `course/userTalent/index.vue` | | index | `course/userTalentFollow/index` | `course/userTalentFollow/index.vue` | | index | `course/userTalentFollow/index` | `course/userTalentFollow/index/index.vue` | | index | `course/userVideo/index` | `course/userVideo/index.vue` | | index | `course/userVideoComment/index` | `course/userVideoComment/index.vue` | | index | `course/userVideoCommentLike/index` | `course/userVideoCommentLike/index.vue` | | index | `course/userVideoCommentLike/index` | `course/userVideoCommentLike/index/index.vue` | | index | `course/userVideoFavorite/index` | `course/userVideoFavorite/index.vue` | | index | `course/userVideoFavorite/index` | `course/userVideoFavorite/index/index.vue` | | index | `course/userVideoLike/index` | `course/userVideoLike/index.vue` | | index | `course/userVideoLike/index` | `course/userVideoLike/index/index.vue` | | index | `course/userVideoTags/index` | `course/userVideoTags/index.vue` | | index | `course/userVideoView/index` | `course/userVideoView/index.vue` | | index | `course/userVideoView/index` | `course/userVideoView/index/index.vue` | | index | `course/userVipOrder/index` | `course/userVipOrder/index.vue` | | index | `course/userVipPackage/index` | `course/userVipPackage/index.vue` | | index | `course/userWatchCourseStatistics/index` | `course/userWatchCourseStatistics/index.vue` | | index | `course/userWatchCourseTotalStatistics/index` | `course/userWatchCourseTotalStatistics/index.vue` | | index | `course/userWatchStatistics/index` | `course/userWatchStatistics/index.vue` | | index | `course/videoResource/index` | `course/videoResource/index.vue` | | index | `course/videoTags/index` | `course/videoTags/index.vue` | | index | `course/videoTags/index` | `course/videoTags/index/index.vue` | ### 4.7 AI (`fastGpt/`) — 31 页 建议路由前缀:`/fastGpt` #### 通用/待分组 | 建议 menu_name | component | 源文件 | |--------------|-----------|--------| | index | `FastGptExtUserTag/index` | `FastGptExtUserTag/index.vue` | | index | `FastGptExtUserTag/index` | `FastGptExtUserTag/index/index.vue` | | index | `aiob/AiobBaiduCallApi/index` | `aiob/AiobBaiduCallApi/index.vue` | | index | `aiob/AiobBaiduEncryption/index` | `aiob/AiobBaiduEncryption/index.vue` | | index | `aiob/AiobBaiduTask/index` | `aiob/AiobBaiduTask/index.vue` | | index | `chat/chatDataset/index` | `chat/chatDataset/index.vue` | | index | `chat/chatDatasetFile/index` | `chat/chatDatasetFile/index.vue` | | index | `chat/chatKeyword/index` | `chat/chatKeyword/index.vue` | | index | `chat/chatMsg/index` | `chat/chatMsg/index.vue` | | index | `chat/chatMsgLogs/index` | `chat/chatMsgLogs/index.vue` | | index | `chat/chatRole/index` | `chat/chatRole/index.vue` | | index | `chat/chatSession/index` | `chat/chatSession/index.vue` | | index | `chat/chatUser/index` | `chat/chatUser/index.vue` | | index | `fastGpt/fastGptChatKeyword/index` | `fastGpt/fastGptChatKeyword/index.vue` | | index | `fastGpt/fastGptChatMsg/index` | `fastGpt/fastGptChatMsg/index.vue` | | index | `fastGpt/fastGptChatMsgLogs/index` | `fastGpt/fastGptChatMsgLogs/index.vue` | | index | `fastGpt/fastGptChatReplaceText/index` | `fastGpt/fastGptChatReplaceText/index.vue` | | index | `fastGpt/fastGptChatReplaceWords/index` | `fastGpt/fastGptChatReplaceWords/index.vue` | | index | `fastGpt/fastGptChatSession/index` | `fastGpt/fastGptChatSession/index.vue` | | index | `fastGpt/fastGptCollection/index` | `fastGpt/fastGptCollection/index.vue` | | index | `fastGpt/fastGptCollentionData/index` | `fastGpt/fastGptCollentionData/index.vue` | | index | `fastGpt/fastGptDataset/index` | `fastGpt/fastGptDataset/index.vue` | | index | `fastGpt/fastGptExtUserTag/index` | `fastGpt/fastGptExtUserTag/index.vue` | | index | `fastGpt/fastGptKeywordSend/index` | `fastGpt/fastGptKeywordSend/index.vue` | | index | `fastGpt/fastGptPushTokenTotal/index` | `fastGpt/fastGptPushTokenTotal/index.vue` | | index | `fastGpt/fastGptPushTokenTotalDept/index` | `fastGpt/fastGptPushTokenTotalDept/index.vue` | | index | `fastGpt/fastGptRole/index` | `fastGpt/fastGptRole/index.vue` | | index | `fastGpt/fastGptRoleTag/index` | `fastGpt/fastGptRoleTag/index.vue` | | index | `fastGpt/fastGptUser/index` | `fastGpt/fastGptUser/index.vue` | | index | `fastGpt/fastgptChatArtificialWords/index` | `fastGpt/fastgptChatArtificialWords/index.vue` | | index | `fastGpt/fastgptEventLogTotal/index` | `fastGpt/fastgptEventLogTotal/index.vue` | ### 4.8 企业/组织 (`company/`) — 52 页 建议路由前缀:`/company` #### 通用/待分组 | 建议 menu_name | component | 源文件 | |--------------|-----------|--------| | index | `company/VoiceRoboticWx/index` | `company/VoiceRoboticWx/index.vue` | | index | `company/aiModel/index` | `company/aiModel/index.vue` | | index | `company/aiModel/voiceClone/index` | `company/aiModel/voiceClone/index.vue` | | index | `company/aiWorkflow/index` | `company/aiWorkflow/index.vue` | | index | `company/company/index` | `company/company/index.vue` | | index | `company/companyApply/index` | `company/companyApply/index.vue` | | index | `company/companyBindUser/index` | `company/companyBindUser/index.vue` | | index | `company/companyClient/index` | `company/companyClient/index.vue` | | index | `company/companyConfig/index` | `company/companyConfig/index.vue` | | index | `company/companyDeduct/index` | `company/companyDeduct/index.vue` | | index | `company/companyDept/index` | `company/companyDept/index.vue` | | index | `company/companyDomain/index` | `company/companyDomain/index.vue` | | index | `company/companyDomainBind/index` | `company/companyDomainBind/index.vue` | | index | `company/companyLogininfor/index` | `company/companyLogininfor/index.vue` | | index | `company/companyMenu/index` | `company/companyMenu/index.vue` | | index | `company/companyMoneyLogs/index` | `company/companyMoneyLogs/index.vue` | | index | `company/companyOperLog/index` | `company/companyOperLog/index.vue` | | index | `company/companyPost/index` | `company/companyPost/index.vue` | | index | `company/companyProfit/index` | `company/companyProfit/index.vue` | | index | `company/companyRecharge/index` | `company/companyRecharge/index.vue` | | index | `company/companyRedPacketBalanceLogs/index` | `company/companyRedPacketBalanceLogs/index.vue` | | index | `company/companyRole/index` | `company/companyRole/index.vue` | | index | `company/companyRoleDept/index` | `company/companyRoleDept/index.vue` | | index | `company/companyRoleMenu/index` | `company/companyRoleMenu/index.vue` | | index | `company/companySms/index` | `company/companySms/index.vue` | | index | `company/companySmsLogs/index` | `company/companySmsLogs/index.vue` | | index | `company/companySmsOrder/index` | `company/companySmsOrder/index.vue` | | index | `company/companySmsPackage/index` | `company/companySmsPackage/index.vue` | | index | `company/companySmsTemp/index` | `company/companySmsTemp/index.vue` | | index | `company/companyTraffic/index` | `company/companyTraffic/index.vue` | | index | `company/companyTrafficLog/index` | `company/companyTrafficLog/index.vue` | | index | `company/companyUser/index` | `company/companyUser/index.vue` | | index | `company/companyUserPost/index` | `company/companyUserPost/index.vue` | | index | `company/companyUserRole/index` | `company/companyUserRole/index.vue` | | index | `company/companyVoice/index` | `company/companyVoice/index.vue` | | index | `company/companyVoiceApi/index` | `company/companyVoiceApi/index.vue` | | index | `company/companyVoiceBlacklist/index` | `company/companyVoiceBlacklist/index.vue` | | index | `company/companyVoiceCaller/index` | `company/companyVoiceCaller/index.vue` | | index | `company/companyVoiceConfig/index` | `company/companyVoiceConfig/index.vue` | | index | `company/companyVoiceDialog/index` | `company/companyVoiceDialog/index.vue` | | index | `company/companyVoiceLogs/index` | `company/companyVoiceLogs/index.vue` | | index | `company/companyVoiceMobile/index` | `company/companyVoiceMobile/index.vue` | | index | `company/companyVoicePackage/index` | `company/companyVoicePackage/index.vue` | | index | `company/companyVoicePackageOrder/index` | `company/companyVoicePackageOrder/index.vue` | | index | `company/companyVoiceRobotic/index` | `company/companyVoiceRobotic/index.vue` | | index | `company/companyWorkflow/index` | `company/companyWorkflow/index.vue` | | index | `company/tcmScheduleReport/index` | `company/tcmScheduleReport/index.vue` | | index | `company/workflowExternalApi/index` | `company/workflowExternalApi/index.vue` | | index | `company/workflowLobster/index` | `company/workflowLobster/index.vue` | | index | `company/wxAccount/index` | `company/wxAccount/index.vue` | | index | `company/wxDialog/index` | `company/wxDialog/index.vue` | | index | `company/wxUser/index` | `company/wxUser/index.vue` | ### 4.9 系统 (`system/`) — 18 页 建议路由前缀:`/system` #### 通用/待分组 | 建议 menu_name | component | 源文件 | |--------------|-----------|--------| | index | `system/companyVoiceDialog/index` | `system/companyVoiceDialog/index.vue` | | index | `system/companyVoiceDialog/index` | `system/companyVoiceDialog/index/index.vue` | | index | `system/companyVoiceRobotic/index` | `system/companyVoiceRobotic/index.vue` | | index | `system/companyVoiceRobotic/index` | `system/companyVoiceRobotic/index/index.vue` | | index | `system/companyVoiceRoboticCallees/index` | `system/companyVoiceRoboticCallees/index.vue` | | index | `system/companyVoiceRoboticCallees/index` | `system/companyVoiceRoboticCallees/index/index.vue` | | index | `system/config/index` | `system/config/index.vue` | | index | `system/dept/index` | `system/dept/index.vue` | | index | `system/dict/index` | `system/dict/index.vue` | | index | `system/keyword/index` | `system/keyword/index.vue` | | index | `system/menu/index` | `system/menu/index.vue` | | index | `system/notice/index` | `system/notice/index.vue` | | index | `system/post/index` | `system/post/index.vue` | | index | `system/role/index` | `system/role/index.vue` | | index | `system/set/index` | `system/set/index.vue` | | index | `system/set/index` | `system/set/index/index.vue` | | index | `system/user/index` | `system/user/index.vue` | | index | `system/user/profile/index` | `system/user/profile/index.vue` | ### 4.10 龙虾 (`lobster/`) — 13 页 建议路由前缀:`/lobster` #### 通用/待分组 | 建议 menu_name | component | 源文件 | |--------------|-----------|--------| | index | `lobster/api-registry/index` | `lobster/api-registry/index.vue` | | index | `lobster/billing/index` | `lobster/billing/index.vue` | | index | `lobster/chat-aggregate/index` | `lobster/chat-aggregate/index.vue` | | index | `lobster/dead-letter/index` | `lobster/dead-letter/index.vue` | | index | `lobster/event-audit/index` | `lobster/event-audit/index.vue` | | index | `lobster/instance/index` | `lobster/instance/index.vue` | | index | `lobster/model-config/index` | `lobster/model-config/index.vue` | | index | `lobster/optimization/index` | `lobster/optimization/index.vue` | | index | `lobster/prompt/index` | `lobster/prompt/index.vue` | | index | `lobster/sales-corpus/index` | `lobster/sales-corpus/index.vue` | | index | `lobster/template/index` | `lobster/template/index.vue` | | index | `lobster/workflow-canvas/index` | `lobster/workflow-canvas/index.vue` | | index | `lobster/workflow-generate/index` | `lobster/workflow-generate/index.vue` | ### 4.11 广告 (`adv/`) — 13 页 建议路由前缀:`/ad` #### 通用/待分组 | 建议 menu_name | component | 源文件 | |--------------|-----------|--------| | index | `adv/advertiser/index` | `adv/advertiser/index.vue` | | index | `adv/callbackAccount/index` | `adv/callbackAccount/index.vue` | | index | `adv/channel/index` | `adv/channel/index.vue` | | index | `adv/configuration/index` | `adv/configuration/index.vue` | | index | `adv/conversionLog/index` | `adv/conversionLog/index.vue` | | index | `adv/customPromotionAccount/index` | `adv/customPromotionAccount/index.vue` | | index | `adv/domain/index` | `adv/domain/index.vue` | | index | `adv/landingPageTemplate/index` | `adv/landingPageTemplate/index.vue` | | index | `adv/project/index` | `adv/project/index.vue` | | index | `adv/promotionAccount/index` | `adv/promotionAccount/index.vue` | | index | `adv/site/index` | `adv/site/index.vue` | | index | `adv/statistics/index` | `adv/statistics/index.vue` | | index | `adv/trackingLink/index` | `adv/trackingLink/index.vue` | ### 4.12 微信 (`wx/`) — 4 页 建议路由前缀:`/wx` #### 通用/待分组 | 建议 menu_name | component | 源文件 | |--------------|-----------|--------| | index | `wx/wxSop/index` | `wx/wxSop/index.vue` | | index | `wx/wxSopLogs/index` | `wx/wxSopLogs/index.vue` | | index | `wx/wxSopUser/index` | `wx/wxSopUser/index.vue` | | index | `wx/wxSopUserInfo/index` | `wx/wxSopUserInfo/index.vue` | ### 4.13 监控 (`monitor/`) — 9 页 建议路由前缀:`/monitor` #### 通用/待分组 | 建议 menu_name | component | 源文件 | |--------------|-----------|--------| | index | `monitor/cache/index` | `monitor/cache/index.vue` | | index | `monitor/componentsOperLog/index` | `monitor/componentsOperLog/index.vue` | | index | `monitor/doctorOperLog/index` | `monitor/doctorOperLog/index.vue` | | index | `monitor/druid/index` | `monitor/druid/index.vue` | | index | `monitor/job/index` | `monitor/job/index.vue` | | index | `monitor/logininfor/index` | `monitor/logininfor/index.vue` | | index | `monitor/online/index` | `monitor/online/index.vue` | | index | `monitor/operlog/index` | `monitor/operlog/index.vue` | | index | `monitor/server/index` | `monitor/server/index.vue` | --- ## 五、重复/遗留模块合并建议 | 组 | 目录 | 建议 | |------|------|------| | 商城 | `store/` vs `hisStore/` | 保留 store,hisStore 放其他 | | 商城 | `store/` vs `his/store*` | his 内嵌套页留在诊所模块 | | 会员 | `user/` `users/` `member/` | 合并为 member 顶栏 | | AI | `fastGpt/` `chat/` `aiob/` | 合并为 fastGpt | | 广告 | `adv/` `ad/` | 统一 adv | | 微信 | `wx/` `gw/` | gwAccount 归入 wx | | 统计 | `statistics/` `taskStatistics/` | 合并 statistics | | 监控 | `monitor/` `watch/` | 合并 watch | | 用户 | `system/user` vs `sysUser/` | sysUser 仅总后台 | --- ## 六、完整一级目录扫描表 | views 一级目录 | 可路由页面数 | 归类 | |----------------|-------------|------| | `FastGptExtUserTag/` | 2 | 租户 — AI聊天 | | `ad/` | 12 | 租户 — 广告投放 | | `addressBook/` | 1 | 待确认 | | `admin/` | 60 | 平台/其他 | | `adv/` | 13 | 租户 — 广告投放 | | `aiSipCall/` | 9 | 平台/其他 | | `aiob/` | 3 | 租户 — AI聊天 | | `baidu/` | 1 | 平台/其他 | | `bill/` | 1 | 租户 — 财务管理 | | `billing/` | 1 | 租户 — 财务管理 | | `calendar/` | 1 | 租户 — 日程管理 | | `callRecord/` | 2 | 平台/其他 | | `chat/` | 8 | 租户 — AI聊天 | | `company/` | 52 | 租户 — 系统管理 | | `course/` | 75 | 租户 — 课程管理 | | `courseFinishTemp/` | 2 | 租户 — 课程管理 | | `crm/` | 13 | 租户 — CRM客户 | | `customer/` | 1 | 待确认 | | `fastGpt/` | 18 | 租户 — AI聊天 | | `food/` | 1 | 平台/其他 | | `gw/` | 1 | 租户 — 微信管理 | | `his/` | 135 | 租户 — 诊所管理 | | `hisStore/` | 54 | 平台/其他 | | `index.vue/` | 1 | 待确认 | | `live/` | 58 | 租户 — 直播管理 | | `liveData/` | 2 | 租户 — 直播管理 | | `lobster/` | 13 | 租户 — 龙虹引擎 | | `medical/` | 4 | 平台/其他 | | `member/` | 9 | 租户 — 会员管理 | | `moduleUsage/` | 2 | 租户 — 数据统计 | | `monitor/` | 9 | 租户 — 监控管理 | | `operation/` | 1 | 平台/其他 | | `qw/` | 72 | 租户 — 企微管理 | | `qwExternalContact/` | 1 | 租户 — 企微管理 | | `saas/` | 11 | 平台/其他 | | `saler/` | 2 | 平台/其他 | | `shop/` | 6 | 平台/其他 | | `sop/` | 1 | 待确认 | | `statistics/` | 4 | 租户 — 数据统计 | | `store/` | 114 | 租户 — 商城管理 | | `storeOrderOfflineItem/` | 2 | 平台/其他 | | `sysUser/` | 2 | 平台/其他 | | `system/` | 18 | 租户 — 系统管理 | | `taskStatistics/` | 3 | 租户 — 数据统计 | | `todo/` | 1 | 平台/其他 | | `tool/` | 3 | 租户 — 系统工具 | | `user/` | 8 | 租户 — 会员管理 | | `users/` | 3 | 租户 — 会员管理 | | `watch/` | 6 | 租户 — 监控管理 | | `wx/` | 4 | 租户 — 微信管理 | --- ## 七、本次不执行的落地步骤 1. 评审本文档二级分组 2. 导出 component 与 tenant_sys_menu diff 3. 合并重复菜单 4. 更新模板并同步租户库 5. saasadminui 验证路由 --- *Generated by `sql/generate_adminUI_menu_doc.py`*