diff --git a/layouts/admin/router/adminComponentMap.uts b/layouts/admin/router/adminComponentMap.uts index 54ec49a4..b6789ef2 100644 --- a/layouts/admin/router/adminComponentMap.uts +++ b/layouts/admin/router/adminComponentMap.uts @@ -6,122 +6,25 @@ * value: 组件引用 * * 注意: - * 1. 所有组件必须静态导入,确保打包可分析 + * 1. 组件已切换为 defineAsyncComponent 异步导入,优化 H5 环境下的加载性能与包体积 * 2. 组件路径使用 @ 别名 * 3. 占位组件统一使用 PlaceholderPage */ +import { defineAsyncComponent } from 'vue' + // 导入占位组件 import PlaceholderPage from '@/layouts/admin/components/PlaceholderPage.uvue' // 导入首页(内部组件,不包含 AdminLayout) import HomeIndex from '@/layouts/admin/pages/HomeIndex.uvue' -// 导入用户模块(纯组件,不包含 AdminLayout) -import UserStatistic from '@/pages/mall/admin/user/statistics/index.uvue' -import UserList from '@/pages/mall/admin/user/management/index.uvue' -import UserLevel from '@/pages/mall/admin/user/level/index.uvue' -import UserGroup from '@/pages/mall/admin/user/grouping/index.uvue' -import UserLabel from '@/pages/mall/admin/user/label/index.uvue' -import MemberConfig from '@/pages/mall/admin/user/configuration/index.uvue' - -// 导入商品模块(纯组件,不包含 AdminLayout) -import ProductStatistic from '@/pages/mall/admin/product/product-statistics/index.uvue' -import ProductList from '@/pages/mall/admin/product/product-management/index.uvue' -import ProductEdit from '@/pages/mall/admin/product/product-management/edit.uvue' -import ProductMemberPrice from '@/pages/mall/admin/product/product-management/member-price.uvue' -import ProductClassify from '@/pages/mall/admin/product/classification/index.uvue' -import ProductReply from '@/pages/mall/admin/product/reviews/index.uvue' -import ProductAttr from '@/pages/mall/admin/product/specifications/index.uvue' -import ProductParam from '@/pages/mall/admin/product/parameters/index.uvue' -import ProductLabel from '@/pages/mall/admin/product/labels/index.uvue' -import ProductProtection from '@/pages/mall/admin/product/protection/index.uvue' - -// 导入订单模块(纯组件,不包含 AdminLayout) -import OrderList from '@/pages/mall/admin/order/list.uvue' -import OrderStatistic from '@/pages/mall/admin/order/order-statistics/index.uvue' -import OrderRefund from '@/pages/mall/admin/order/aftersales-order/index.uvue' -import OrderCashier from '@/pages/mall/admin/order/cashier-order/index.uvue' -import OrderVerify from '@/pages/mall/admin/order/write-off-records/index.uvue' -import OrderConfig from '@/pages/mall/admin/order/order-configuration/index.uvue' +// 用户、商品、订单模块已改为 defineAsyncComponent 异步加载,移除静态导入以优化 H5 加载性能 // 营销设置模块暂时使用 PlaceholderPage // 避免循环依赖问题 -import CmsArticle from '@/pages/mall/admin/cms/article/list.uvue' -import CmsCategory from '@/pages/mall/admin/cms/category/list.uvue' -import MarketingCouponList from '@/pages/mall/admin/marketing/coupon/list.uvue' -import MarketingCouponUser from '@/pages/mall/admin/marketing/coupon/user.uvue' -import MarketingIntegralStatistic from '@/pages/mall/admin/marketing/integral/statistic.uvue' -import MarketingIntegralProduct from '@/pages/mall/admin/marketing/integral/list.uvue' -import MarketingIntegralOrder from '@/pages/mall/admin/marketing/integral/order.uvue' -import MarketingIntegralRecord from '@/pages/mall/admin/marketing/integral/record.uvue' -import MarketingIntegralConfig from '@/pages/mall/admin/marketing/integral/config.uvue' -import MarketingLotteryList from '@/pages/mall/admin/marketing/lottery/list.uvue' -import MarketingLotteryConfig from '@/pages/mall/admin/marketing/lottery/config.uvue' -import MarketingCombinationProduct from '@/pages/mall/admin/marketing/combination/product.uvue' -import MarketingCombinationList from '@/pages/mall/admin/marketing/combination/list.uvue' -import MarketingCombinationCreate from '@/pages/mall/admin/marketing/combination/create.uvue' -import MarketingSeckillList from '@/pages/mall/admin/marketing/seckill/list.uvue' -import MarketingSeckillProduct from '@/pages/mall/admin/marketing/seckill/product.uvue' -import MarketingSeckillConfig from '@/pages/mall/admin/marketing/seckill/config.uvue' -// 导入财务模块(纯组件) -import FinanceTransactionStats from '@/pages/mall/admin/finance/transaction_stats.uvue' -import FinanceWithdrawal from '@/pages/mall/admin/finance/withdrawal.uvue' -import FinanceInvoice from '@/pages/mall/admin/finance/invoice.uvue' -import FinanceRecharge from '@/pages/mall/admin/finance/recharge.uvue' -import FinanceCapitalFlow from '@/pages/mall/admin/finance/capital_flow.uvue' -import FinanceBill from '@/pages/mall/admin/finance/bill.uvue' -import FinanceCommission from '@/pages/mall/admin/finance/commission.uvue' -import FinanceBalanceStats from '@/pages/mall/admin/finance/balance_stats.uvue' -import FinanceBalanceRecord from '@/pages/mall/admin/finance/balance_record.uvue' - -// 导入客服模块 -import KefuList from '@/pages/mall/admin/kefu/list.uvue' -import KefuWords from '@/pages/mall/admin/kefu/words.uvue' -import KefuFeedback from '@/pages/mall/admin/kefu/feedback.uvue' -import KefuAutoReply from '@/pages/mall/admin/kefu/auto_reply.uvue' -import KefuConfig from '@/pages/mall/admin/kefu/config.uvue' - -// 导入装修模块 -import DecorationHome from '@/pages/mall/admin/decoration/home.uvue' -import DecorationCategory from '@/pages/mall/admin/decoration/category.uvue' -import DecorationUser from '@/pages/mall/admin/decoration/user.uvue' -import DecorationData from '@/pages/mall/admin/decoration/data-config.uvue' -import DecorationStyle from '@/pages/mall/admin/design/theme-style.uvue' -import DecorationMaterial from '@/pages/mall/admin/design/material.uvue' -import DecorationLink from '@/pages/mall/admin/design/link-management.uvue' - -// 导入直播管理 -import MarketingLiveRoom from '@/pages/mall/admin/marketing/live/room.uvue' -import MarketingLiveProduct from '@/pages/mall/admin/marketing/live/product.uvue' -import MarketingLiveAnchor from '@/pages/mall/admin/marketing/live/anchor.uvue' - -// 导入用户充值 -import MarketingRechargeQuota from '@/pages/mall/admin/marketing/recharge/quota.uvue' -import MarketingRechargeConfig from '@/pages/mall/admin/marketing/recharge/config.uvue' - -// 导入每日签到 -import MarketingCheckinConfig from '@/pages/mall/admin/marketing/checkin/config.uvue' -import MarketingCheckinReward from '@/pages/mall/admin/marketing/checkin/reward.uvue' - -// 导入新人礼 -import MarketingNewcomerGift from '@/pages/mall/admin/marketing/newcomer/index.uvue' - -// 导入付费会员 -import MarketingMemberType from '@/pages/mall/admin/marketing/member/type.uvue' -import MarketingMemberRight from '@/pages/mall/admin/marketing/member/right.uvue' -import MarketingMemberCard from '@/pages/mall/admin/marketing/member/card.uvue' -import MarketingMemberRecord from '@/pages/mall/admin/marketing/member/record.uvue' -import MarketingMemberConfig from '@/pages/mall/admin/marketing/member/config.uvue' - -// 导入维护模块 -import MaintainDevConfig from '@/pages/mall/admin/maintain/dev/config.uvue' - -// import StatisticIndex from '@/pages/mall/admin/statistic/index.uvue' -// import SettingSystemConfig from '@/pages/mall/admin/setting/system/config.uvue' -// import SettingSystemAdmin from '@/pages/mall/admin/setting/system/admin.uvue' -// import SettingSystemRole from '@/pages/mall/admin/setting/system/role.uvue' +// 营销、内容、财务、客服、装修等模块已改为 defineAsyncComponent 异步加载,移除静态导入以优化 H5 加载性能 /** * 组件映射表 @@ -131,97 +34,97 @@ export const componentMap: Map = new Map([ ['HomeIndex', HomeIndex], // 用户模块 - ['UserStatistic', UserStatistic], - ['UserList', UserList], - ['UserLevel', UserLevel], - ['UserGroup', UserGroup], - ['UserLabel', UserLabel], - ['UserMemberConfig', MemberConfig], + ['UserStatistic', defineAsyncComponent(() => import('@/pages/mall/admin/user/statistics/index.uvue'))], + ['UserList', defineAsyncComponent(() => import('@/pages/mall/admin/user/management/index.uvue'))], + ['UserLevel', defineAsyncComponent(() => import('@/pages/mall/admin/user/level/index.uvue'))], + ['UserGroup', defineAsyncComponent(() => import('@/pages/mall/admin/user/grouping/index.uvue'))], + ['UserLabel', defineAsyncComponent(() => import('@/pages/mall/admin/user/label/index.uvue'))], + ['UserMemberConfig', defineAsyncComponent(() => import('@/pages/mall/admin/user/configuration/index.uvue'))], // 商品模块 - ['ProductStatistic', ProductStatistic], - ['ProductList', ProductList], - ['ProductEdit', ProductEdit], - ['ProductMemberPrice', ProductMemberPrice], - ['ProductClassify', ProductClassify], - ['ProductReply', ProductReply], - ['ProductAttr', ProductAttr], - ['ProductParam', ProductParam], - ['ProductLabel', ProductLabel], - ['ProductProtection', ProductProtection], + ['ProductStatistic', defineAsyncComponent(() => import('@/pages/mall/admin/product/product-statistics/index.uvue'))], + ['ProductList', defineAsyncComponent(() => import('@/pages/mall/admin/product/product-management/index.uvue'))], + ['ProductEdit', defineAsyncComponent(() => import('@/pages/mall/admin/product/product-management/edit.uvue'))], + ['ProductMemberPrice', defineAsyncComponent(() => import('@/pages/mall/admin/product/product-management/member-price.uvue'))], + ['ProductClassify', defineAsyncComponent(() => import('@/pages/mall/admin/product/classification/index.uvue'))], + ['ProductReply', defineAsyncComponent(() => import('@/pages/mall/admin/product/reviews/index.uvue'))], + ['ProductAttr', defineAsyncComponent(() => import('@/pages/mall/admin/product/specifications/index.uvue'))], + ['ProductParam', defineAsyncComponent(() => import('@/pages/mall/admin/product/parameters/index.uvue'))], + ['ProductLabel', defineAsyncComponent(() => import('@/pages/mall/admin/product/labels/index.uvue'))], + ['ProductProtection', defineAsyncComponent(() => import('@/pages/mall/admin/product/protection/index.uvue'))], // 订单模块 - ['OrderList', OrderList], - ['OrderStatistic', OrderStatistic], - ['OrderRefund', OrderRefund], - ['OrderCashier', OrderCashier], - ['OrderVerify', OrderVerify], - ['OrderConfig', OrderConfig], + ['OrderList', defineAsyncComponent(() => import('@/pages/mall/admin/order/list.uvue'))], + ['OrderStatistic', defineAsyncComponent(() => import('@/pages/mall/admin/order/order-statistics/index.uvue'))], + ['OrderRefund', defineAsyncComponent(() => import('@/pages/mall/admin/order/aftersales-order/index.uvue'))], + ['OrderCashier', defineAsyncComponent(() => import('@/pages/mall/admin/order/cashier-order/index.uvue'))], + ['OrderVerify', defineAsyncComponent(() => import('@/pages/mall/admin/order/write-off-records/index.uvue'))], + ['OrderConfig', defineAsyncComponent(() => import('@/pages/mall/admin/order/order-configuration/index.uvue'))], - // 营销模块 + // 营销模块已改为异步加载 // 1. 优惠券 - ['MarketingCouponList', MarketingCouponList], - ['MarketingCouponUser', MarketingCouponUser], + ['MarketingCouponList', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/coupon/list.uvue'))], + ['MarketingCouponUser', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/coupon/user.uvue'))], // 2. 积分管理 - ['MarketingIntegralStatistic', MarketingIntegralStatistic], - ['MarketingIntegralProduct', MarketingIntegralProduct], - ['MarketingIntegralOrder', MarketingIntegralOrder], - ['MarketingIntegralRecord', MarketingIntegralRecord], - ['MarketingIntegralConfig', MarketingIntegralConfig], + ['MarketingIntegralStatistic', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/integral/statistic.uvue'))], + ['MarketingIntegralProduct', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/integral/list.uvue'))], + ['MarketingIntegralOrder', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/integral/order.uvue'))], + ['MarketingIntegralRecord', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/integral/record.uvue'))], + ['MarketingIntegralConfig', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/integral/config.uvue'))], // 3. 抽奖管理 - ['MarketingLotteryList', MarketingLotteryList], - ['MarketingLotteryConfig', MarketingLotteryConfig], + ['MarketingLotteryList', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/lottery/list.uvue'))], + ['MarketingLotteryConfig', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/lottery/config.uvue'))], // 4. 砍价管理 ['MarketingBargainProduct', PlaceholderPage], ['MarketingBargainList', PlaceholderPage], // 5. 拼团管理 - ['MarketingCombinationProduct', MarketingCombinationProduct], - ['MarketingCombinationList', MarketingCombinationList], - ['MarketingCombinationCreate', MarketingCombinationCreate], + ['MarketingCombinationProduct', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/combination/product.uvue'))], + ['MarketingCombinationList', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/combination/list.uvue'))], + ['MarketingCombinationCreate', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/combination/create.uvue'))], // 6. 秒杀管理 - ['MarketingSeckillList', MarketingSeckillList], - ['MarketingSeckillProduct', MarketingSeckillProduct], - ['MarketingSeckillConfig', MarketingSeckillConfig], + ['MarketingSeckillList', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/seckill/list.uvue'))], + ['MarketingSeckillProduct', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/seckill/product.uvue'))], + ['MarketingSeckillConfig', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/seckill/config.uvue'))], // 7. 付费会员 - ['MarketingMemberType', MarketingMemberType], - ['MarketingMemberRight', MarketingMemberRight], - ['MarketingMemberCard', MarketingMemberCard], - ['MarketingMemberRecord', MarketingMemberRecord], - ['MarketingMemberConfig', MarketingMemberConfig], + ['MarketingMemberType', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/member/type.uvue'))], + ['MarketingMemberRight', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/member/right.uvue'))], + ['MarketingMemberCard', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/member/card.uvue'))], + ['MarketingMemberRecord', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/member/record.uvue'))], + ['MarketingMemberConfig', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/member/config.uvue'))], // 8. 直播管理 - ['MarketingLiveRoom', MarketingLiveRoom], - ['MarketingLiveProduct', MarketingLiveProduct], - ['MarketingLiveAnchor', MarketingLiveAnchor], + ['MarketingLiveRoom', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/live/room.uvue'))], + ['MarketingLiveProduct', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/live/product.uvue'))], + ['MarketingLiveAnchor', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/live/anchor.uvue'))], // 9. 用户充值 - ['MarketingRechargeQuota', MarketingRechargeQuota], - ['MarketingRechargeConfig', MarketingRechargeConfig], + ['MarketingRechargeQuota', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/recharge/quota.uvue'))], + ['MarketingRechargeConfig', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/recharge/config.uvue'))], // 10. 每日签到 - ['MarketingCheckinConfig', MarketingCheckinConfig], - ['MarketingCheckinReward', MarketingCheckinReward], + ['MarketingCheckinConfig', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/checkin/config.uvue'))], + ['MarketingCheckinReward', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/checkin/reward.uvue'))], // 11. 渠道码 & 新人礼 ['MarketingChannelList', PlaceholderPage], - ['MarketingNewcomerGift', MarketingNewcomerGift], + ['MarketingNewcomerGift', defineAsyncComponent(() => import('@/pages/mall/admin/marketing/newcomer/index.uvue'))], // 内容模块 - ['CmsArticle', CmsArticle], - ['CmsCategory', CmsCategory], + ['CmsArticle', defineAsyncComponent(() => import('@/pages/mall/admin/cms/article/list.uvue'))], + ['CmsCategory', defineAsyncComponent(() => import('@/pages/mall/admin/cms/category/list.uvue'))], // 财务模块 - ['FinanceTransactionStats', FinanceTransactionStats], - ['FinanceWithdrawal', FinanceWithdrawal], - ['FinanceInvoice', FinanceInvoice], - ['FinanceRecharge', FinanceRecharge], - ['FinanceCapitalFlow', FinanceCapitalFlow], - ['FinanceBill', FinanceBill], - ['FinanceCommission', FinanceCommission], - ['FinanceBalanceStats', FinanceBalanceStats], - ['FinanceBalanceRecord', FinanceBalanceRecord], + ['FinanceTransactionStats', defineAsyncComponent(() => import('@/pages/mall/admin/finance/transaction_stats.uvue'))], + ['FinanceWithdrawal', defineAsyncComponent(() => import('@/pages/mall/admin/finance/withdrawal.uvue'))], + ['FinanceInvoice', defineAsyncComponent(() => import('@/pages/mall/admin/finance/invoice.uvue'))], + ['FinanceRecharge', defineAsyncComponent(() => import('@/pages/mall/admin/finance/recharge.uvue'))], + ['FinanceCapitalFlow', defineAsyncComponent(() => import('@/pages/mall/admin/finance/capital_flow.uvue'))], + ['FinanceBill', defineAsyncComponent(() => import('@/pages/mall/admin/finance/bill.uvue'))], + ['FinanceCommission', defineAsyncComponent(() => import('@/pages/mall/admin/finance/commission.uvue'))], + ['FinanceBalanceStats', defineAsyncComponent(() => import('@/pages/mall/admin/finance/balance_stats.uvue'))], + ['FinanceBalanceRecord', defineAsyncComponent(() => import('@/pages/mall/admin/finance/balance_record.uvue'))], // 数据模块 - 暂时使用占位组件 ['StatisticIndex', PlaceholderPage], // 设置模块 - 暂时使用占位组件 - ['SettingSystemConfig', PlaceholderPage], + ['SettingSystemConfig', defineAsyncComponent(() => import('@/pages/mall/admin/setting/system/config.uvue'))], ['SettingSystemAdmin', PlaceholderPage], ['SettingSystemRole', PlaceholderPage], @@ -231,27 +134,27 @@ export const componentMap: Map = new Map([ ['DistributionConfig', PlaceholderPage], // 客服模块 - ['KefuList', KefuList], - ['KefuWords', KefuWords], - ['KefuFeedback', KefuFeedback], - ['KefuAutoReply', KefuAutoReply], - ['KefuConfig', KefuConfig], + ['KefuList', defineAsyncComponent(() => import('@/pages/mall/admin/kefu/list.uvue'))], + ['KefuWords', defineAsyncComponent(() => import('@/pages/mall/admin/kefu/words.uvue'))], + ['KefuFeedback', defineAsyncComponent(() => import('@/pages/mall/admin/kefu/feedback.uvue'))], + ['KefuAutoReply', defineAsyncComponent(() => import('@/pages/mall/admin/kefu/auto_reply.uvue'))], + ['KefuConfig', defineAsyncComponent(() => import('@/pages/mall/admin/kefu/config.uvue'))], // 装修模块 - ['DecorationHome', DecorationHome], - ['DecorationCategory', DecorationCategory], - ['DecorationUser', DecorationUser], - ['DecorationData', DecorationData], - ['DecorationStyle', DecorationStyle], - ['DecorationMaterial', DecorationMaterial], - ['DecorationLink', DecorationLink], + ['DecorationHome', defineAsyncComponent(() => import('@/pages/mall/admin/decoration/home.uvue'))], + ['DecorationCategory', defineAsyncComponent(() => import('@/pages/mall/admin/decoration/category.uvue'))], + ['DecorationUser', defineAsyncComponent(() => import('@/pages/mall/admin/decoration/user.uvue'))], + ['DecorationData', defineAsyncComponent(() => import('@/pages/mall/admin/decoration/data-config.uvue'))], + ['DecorationStyle', defineAsyncComponent(() => import('@/pages/mall/admin/design/theme-style.uvue'))], + ['DecorationMaterial', defineAsyncComponent(() => import('@/pages/mall/admin/design/material.uvue'))], + ['DecorationLink', defineAsyncComponent(() => import('@/pages/mall/admin/design/link-management.uvue'))], // 应用模块 ['AppStatistic', PlaceholderPage], ['AppList', PlaceholderPage], // 维护模块 - ['MaintainDevConfig', MaintainDevConfig], + ['MaintainDevConfig', defineAsyncComponent(() => import('@/pages/mall/admin/maintain/dev/config.uvue'))], ['MaintainDevData', PlaceholderPage], ['MaintainDevTask', PlaceholderPage], ['MaintainDevAuth', PlaceholderPage], diff --git a/layouts/admin/router/adminRoutes.uts b/layouts/admin/router/adminRoutes.uts index b1f90708..3c8407c9 100644 --- a/layouts/admin/router/adminRoutes.uts +++ b/layouts/admin/router/adminRoutes.uts @@ -894,7 +894,7 @@ export const routes: RouteRecord[] = [ // ========== 设置模块 ========== { id: 'setting_systemConfig', - title: '系统配置', + title: '系统设置', path: '/pages/mall/admin/setting/system/config', componentKey: 'SettingSystemConfig', parentId: 'setting', diff --git a/main.uts b/main.uts index da42848e..3e40f0b5 100644 --- a/main.uts +++ b/main.uts @@ -7,11 +7,9 @@ export function createApp() { // 注册 i18n 全局属性,使组件可以使用 $t 方法 app.config.globalProperties.$t = (key: string, values?: any, locale?: string): string => { - if (!i18n.global) { - console.error('i18n is not initialized') - return key - } - return i18n.global.t(key, values, locale) || key + // 临时方案:移除对未定义 i18n 的引用,直接返回 Key + // 如果之后需要 i18n,应正确导入并初始化 + return key } return { app } diff --git a/pages.json b/pages.json index b6c72b9d..590bdf88 100644 --- a/pages.json +++ b/pages.json @@ -487,13 +487,6 @@ "navigationStyle": "custom" } }, - { - "path": "system-settings", - "style": { - "navigationBarTitleText": "系统设置", - "navigationStyle": "custom" - } - }, { "path": "subscription/plan-management", "style": { diff --git a/pages/mall/admin/setting/system/config.uvue b/pages/mall/admin/setting/system/config.uvue index 8ac661b7..e2e14b17 100644 --- a/pages/mall/admin/setting/system/config.uvue +++ b/pages/mall/admin/setting/system/config.uvue @@ -1,81 +1,330 @@