Przeglądaj źródła

[0917]解决分包打包引起的问题

taosj 1 dzień temu
rodzic
commit
1457cc5375

+ 1 - 1
forecast-backend-vue/.env.dev

@@ -1,6 +1,6 @@
 # 本地开发环境配置
 VITE_PORT = 8090
-VITE_BASE_URL = './'
+VITE_BASE_URL = '/'
 VITE_APP_BASE_API = '/dev-api'
 
 # 后端接口地址,通过vite.config.js代理到http://localhost:8080

+ 1 - 1
forecast-backend-vue/.env.prod

@@ -1,6 +1,6 @@
 # 生产环境配置
 VITE_PORT = 80
-VITE_BASE_URL = './'
+VITE_BASE_URL = '/'
 VITE_APP_BASE_API = '/prod-api'
 
 # 后端接口地址 - 通过vite.config.js代理到https://域名或IP/prod-api,nginx需要配置代理,参考README.md部署nginx说明

+ 12 - 0
forecast-backend-vue/components.d.ts

@@ -42,7 +42,9 @@ declare module 'vue' {
     ALayoutSider: typeof import('ant-design-vue/es')['LayoutSider']
     AList: typeof import('ant-design-vue/es')['List']
     AListItem: typeof import('ant-design-vue/es')['ListItem']
+    AListItemMeta: typeof import('ant-design-vue/es')['ListItemMeta']
     AMenu: typeof import('ant-design-vue/es')['Menu']
+    AMenuDivider: typeof import('ant-design-vue/es')['MenuDivider']
     AMenuItem: typeof import('ant-design-vue/es')['MenuItem']
     AModal: typeof import('ant-design-vue/es')['Modal']
     AMonthPicker: typeof import('ant-design-vue/es')['MonthPicker']
@@ -61,6 +63,7 @@ declare module 'vue' {
     ASlider: typeof import('ant-design-vue/es')['Slider']
     ASpace: typeof import('ant-design-vue/es')['Space']
     ASpin: typeof import('ant-design-vue/es')['Spin']
+    AStatistic: typeof import('ant-design-vue/es')['Statistic']
     ASubMenu: typeof import('ant-design-vue/es')['SubMenu']
     ASwitch: typeof import('ant-design-vue/es')['Switch']
     ATable: typeof import('ant-design-vue/es')['Table']
@@ -68,8 +71,11 @@ declare module 'vue' {
     ATabs: typeof import('ant-design-vue/es')['Tabs']
     ATag: typeof import('ant-design-vue/es')['Tag']
     ATextarea: typeof import('ant-design-vue/es')['Textarea']
+    ATimeline: typeof import('ant-design-vue/es')['Timeline']
+    ATimelineItem: typeof import('ant-design-vue/es')['TimelineItem']
     ATooltip: typeof import('ant-design-vue/es')['Tooltip']
     ATree: typeof import('ant-design-vue/es')['Tree']
+    ATreeSelect: typeof import('ant-design-vue/es')['TreeSelect']
     ATypographyText: typeof import('ant-design-vue/es')['TypographyText']
     ATypographyTitle: typeof import('ant-design-vue/es')['TypographyTitle']
     AUpload: typeof import('ant-design-vue/es')['Upload']
@@ -136,7 +142,9 @@ declare global {
   const ALayoutSider: typeof import('ant-design-vue/es')['LayoutSider']
   const AList: typeof import('ant-design-vue/es')['List']
   const AListItem: typeof import('ant-design-vue/es')['ListItem']
+  const AListItemMeta: typeof import('ant-design-vue/es')['ListItemMeta']
   const AMenu: typeof import('ant-design-vue/es')['Menu']
+  const AMenuDivider: typeof import('ant-design-vue/es')['MenuDivider']
   const AMenuItem: typeof import('ant-design-vue/es')['MenuItem']
   const AModal: typeof import('ant-design-vue/es')['Modal']
   const AMonthPicker: typeof import('ant-design-vue/es')['MonthPicker']
@@ -155,6 +163,7 @@ declare global {
   const ASlider: typeof import('ant-design-vue/es')['Slider']
   const ASpace: typeof import('ant-design-vue/es')['Space']
   const ASpin: typeof import('ant-design-vue/es')['Spin']
+  const AStatistic: typeof import('ant-design-vue/es')['Statistic']
   const ASubMenu: typeof import('ant-design-vue/es')['SubMenu']
   const ASwitch: typeof import('ant-design-vue/es')['Switch']
   const ATable: typeof import('ant-design-vue/es')['Table']
@@ -162,8 +171,11 @@ declare global {
   const ATabs: typeof import('ant-design-vue/es')['Tabs']
   const ATag: typeof import('ant-design-vue/es')['Tag']
   const ATextarea: typeof import('ant-design-vue/es')['Textarea']
+  const ATimeline: typeof import('ant-design-vue/es')['Timeline']
+  const ATimelineItem: typeof import('ant-design-vue/es')['TimelineItem']
   const ATooltip: typeof import('ant-design-vue/es')['Tooltip']
   const ATree: typeof import('ant-design-vue/es')['Tree']
+  const ATreeSelect: typeof import('ant-design-vue/es')['TreeSelect']
   const ATypographyText: typeof import('ant-design-vue/es')['TypographyText']
   const ATypographyTitle: typeof import('ant-design-vue/es')['TypographyTitle']
   const AUpload: typeof import('ant-design-vue/es')['Upload']

+ 1 - 192
forecast-backend-vue/config/vite/build.js

@@ -56,196 +56,6 @@ export function getAssetFileNames(assetInfo) {
   return `${extType}/[name]-[hash].[ext]`;
 }
 
-/**
- * 手动代码分割策略 - 优化版
- */
-export function manualChunks(id) {
-  // 将 node_modules 中的代码分割为不同的 chunk
-  if (id.includes('node_modules')) {
-    // 获取包名
-    const packageName = id.split('node_modules/')[1].split('/')[0].replace('@', '');
-    
-    // 核心Vue生态库 - 最高优先级,确保基础框架独立
-    if (id.includes('vue/') && !id.includes('vue-router') && !id.includes('vue-request') && !id.includes('ant-design-vue') && !id.includes('@ant-design')) {
-      return 'vue-core';
-    }
-    if (id.includes('vue-router')) {
-      return 'vue-router';
-    }
-    if (id.includes('pinia')) {
-      return 'pinia';
-    }
-    if (id.includes('@vueuse')) {
-      return 'vueuse';
-    }
-    
-    // Ant Design Vue 统一打包,避免循环依赖
-    if (id.includes('ant-design-vue')) {
-      return 'antd-vue';
-    }
-    if (id.includes('@ant-design/icons-vue')) {
-      return 'antd-icons';
-    }
-    
-    // 表单设计器
-    if (id.includes('@form-create/ant-design-vue')) {
-      return 'form-create-antd';
-    }
-    if (id.includes('@form-create/antd-designer')) {
-      return 'form-designer';
-    }
-    if (id.includes('@form-create')) {
-      return 'form-create-core';
-    }
-    
-    // 编辑器相关
-    if (id.includes('@wangeditor/editor-for-vue')) {
-      return 'wangeditor-vue';
-    }
-    if (id.includes('@wangeditor')) {
-      return 'wangeditor-core';
-    }
-    if (id.includes('highlight.js')) {
-      return 'highlight';
-    }
-    if (id.includes('vue3-highlightjs')) {
-      return 'vue-highlight';
-    }
-    
-    // 图表库
-    if (id.includes('echarts')) {
-      if (id.includes('echarts/core')) {
-        return 'echarts-core';
-      }
-      if (id.includes('echarts/charts')) {
-        return 'echarts-charts';
-      }
-      if (id.includes('echarts/components')) {
-        return 'echarts-components';
-      }
-      if (id.includes('echarts/renderers')) {
-        return 'echarts-renderers';
-      }
-      return 'echarts-base';
-    }
-    
-    // 工具库
-    if (id.includes('axios')) {
-      return 'axios';
-    }
-    if (id.includes('dayjs')) {
-      return 'dayjs';
-    }
-    if (id.includes('js-cookie')) {
-      return 'js-cookie';
-    }
-    if (id.includes('nprogress')) {
-      return 'nprogress';
-    }
-    
-    // 其他工具库
-    if (id.includes('sortablejs')) {
-      return 'sortable';
-    }
-    if (id.includes('file-saver')) {
-      return 'file-saver';
-    }
-    if (id.includes('particles.js')) {
-      return 'particles';
-    }
-    if (id.includes('@vueuse')) {
-      return 'vueuse';
-    }
-    if (id.includes('vue-request')) {
-      return 'vue-request';
-    }
-    
-    // polyfills
-    if (id.includes('core-js')) {
-      return 'polyfills';
-    }
-    
-    return 'vendor-misc';
-  }
-  
-  // 项目内部代码分割 - 优化版
-  if (id.includes('src/')) {
-    // 布局和核心组件 - 优先级高,单独打包
-    if (id.includes('src/layout/')) {
-      return 'layout';
-    }
-    if (id.includes('src/components/layout')) {
-      return 'components-layout';
-    }
-    if (id.includes('src/components/common')) {
-      return 'components-common';
-    }
-    if (id.includes('src/components/')) {
-      return 'components-other';
-    }
-    
-    // 路由相关 - 按模块分割
-    if (id.includes('src/router/')) {
-      return 'router';
-    }
-    
-    // 状态管理
-    if (id.includes('src/stores/')) {
-      return 'stores';
-    }
-    
-    // API 按业务模块分割
-    if (id.includes('src/api/system/')) {
-      return 'api-system';
-    }
-    if (id.includes('src/api/monitor/')) {
-      return 'api-monitor';
-    }
-    if (id.includes('src/api/tool/')) {
-      return 'api-tool';
-    }
-    if (id.includes('src/api/')) {
-      return 'api-common';
-    }
-    
-    // 业务页面按模块分割
-    if (id.includes('src/views/system/')) {
-      return 'views-system';
-    }
-    if (id.includes('src/views/monitor/')) {
-      return 'views-monitor';
-    }
-    if (id.includes('src/views/tool/')) {
-      return 'views-tool';
-    }
-    if (id.includes('src/views/frontend/')) {
-      return 'views-frontend';
-    }
-    if (id.includes('src/views/')) {
-      return 'views-common';
-    }
-    
-    // 工具和配置
-    if (id.includes('src/utils/')) {
-      return 'utils';
-    }
-    if (id.includes('src/directive/')) {
-      return 'directive';
-    }
-    if (id.includes('src/config/')) {
-      return 'config';
-    }
-    if (id.includes('src/plugins/')) {
-      return 'plugins';
-    }
-    
-    // 静态资源
-    if (id.includes('src/assets/')) {
-      return 'assets';
-    }
-  }
-}
-
 /**
  * 获取完整的打包配置
  */
@@ -260,8 +70,7 @@ export function getBuildConfig(isProd) {
       output: {
         chunkFileNames: 'js/[name]-[hash].js',
         entryFileNames: 'js/[name]-[hash].js',
-        assetFileNames: getAssetFileNames,
-        manualChunks
+        assetFileNames: getAssetFileNames
       },
       external: isProd ? [] : [],
     },

+ 6 - 6
release_note/2026.09.17/20260917_dp.sql

@@ -9,9 +9,9 @@ COMMENT ON COLUMN "public"."data_weather_local"."irradiance" IS '总辐照度,
 -- 任务编号 2026090805  增加"短期预测报表"功能
 -- =============================================================================
 
-INSERT INTO "public"."sys_menu" ("menu_id", "menu_name", "parent_id", "order_num", "path", "component", "query", "route_name", "is_frame", "is_cache", "menu_type", "visible", "status", "perms", "icon", "create_by", "create_time", "update_by", "update_time", "remark") VALUES (2071, '短期预测日报', 2016, 3, 'shor-term-forecast-daily', 'ufo/electricity/datareport/shorTermForecastDailyReport', '', 'ShorTermForecastDailyReport', 1, 0, 'C', '0', '0', 'data:shortTermForecastReport:daily', 'file-text', 'admin', '2026-09-14 00:00:00', '', NULL, '短期预测日报页面');
-INSERT INTO "public"."sys_menu" ("menu_id", "menu_name", "parent_id", "order_num", "path", "component", "query", "route_name", "is_frame", "is_cache", "menu_type", "visible", "status", "perms", "icon", "create_by", "create_time", "update_by", "update_time", "remark") VALUES (2072, '短期预测月报', 2016, 4, 'shor-term-forecast-monthly', 'ufo/electricity/datareport/shorTermForecastMonthlyReport', '', 'ShorTermForecastMonthlyReport', 1, 0, 'C', '0', '0', 'data:shortTermForecastReport:monthly', 'file-text', 'admin', '2026-09-14 00:00:00', '', NULL, '短期预测月报页面');
-INSERT INTO "public"."sys_menu" ("menu_id", "menu_name", "parent_id", "order_num", "path", "component", "query", "route_name", "is_frame", "is_cache", "menu_type", "visible", "status", "perms", "icon", "create_by", "create_time", "update_by", "update_time", "remark") VALUES (2073, '短期预测年报', 2016, 5, 'shor-term-forecast-yearly', 'ufo/electricity/datareport/shorTermForecastYearlyReport', '', 'ShorTermForecastYearlyReport', 1, 0, 'C', '0', '0', 'data:shortTermForecastReport:yearly', 'file-text', 'admin', '2026-09-14 00:00:00', '', NULL, '短期预测年报页面');
+INSERT INTO "public"."sys_menu" ("menu_id", "menu_name", "parent_id", "order_num", "path", "component", "query", "route_name", "is_frame", "is_cache", "menu_type", "visible", "status", "perms", "icon", "create_by", "create_time", "update_by", "update_time", "remark") VALUES (2071, '短期预测日报', 2016, 3, 'short-term-forecast-daily', 'ufo/electricity/datareport/shorTermForecastDailyReport', '', 'ShorTermForecastDailyReport', 1, 0, 'C', '0', '0', 'data:shortTermForecastReport:daily', 'StockOutlined', 'admin', '2026-09-14 00:00:00', '', NULL, '短期预测日报页面');
+INSERT INTO "public"."sys_menu" ("menu_id", "menu_name", "parent_id", "order_num", "path", "component", "query", "route_name", "is_frame", "is_cache", "menu_type", "visible", "status", "perms", "icon", "create_by", "create_time", "update_by", "update_time", "remark") VALUES (2072, '短期预测月报', 2016, 4, 'short-term-forecast-monthly', 'ufo/electricity/datareport/shorTermForecastMonthlyReport', '', 'ShorTermForecastMonthlyReport', 1, 0, 'C', '0', '0', 'data:shortTermForecastReport:monthly', 'LineChartOutlined', 'admin', '2026-09-14 00:00:00', '', NULL, '短期预测月报页面');
+INSERT INTO "public"."sys_menu" ("menu_id", "menu_name", "parent_id", "order_num", "path", "component", "query", "route_name", "is_frame", "is_cache", "menu_type", "visible", "status", "perms", "icon", "create_by", "create_time", "update_by", "update_time", "remark") VALUES (2073, '短期预测年报', 2016, 5, 'short-term-forecast-yearly', 'ufo/electricity/datareport/shorTermForecastYearlyReport', '', 'ShorTermForecastYearlyReport', 1, 0, 'C', '0', '0', 'data:shortTermForecastReport:yearly', 'AreaChartOutlined', 'admin', '2026-09-14 00:00:00', '', NULL, '短期预测年报页面');
 
 INSERT INTO sys_role_menu (role_id, menu_id) VALUES (1, 2087);
 INSERT INTO sys_role_menu (role_id, menu_id) VALUES (1, 2088);
@@ -22,9 +22,9 @@ INSERT INTO sys_role_menu (role_id, menu_id) VALUES (1, 2090);
 -- 任务编号 2026090806  增加"超短期预测报表"功能
 -- =============================================================================
 
-INSERT INTO "public"."sys_menu" ("menu_id", "menu_name", "parent_id", "order_num", "path", "component", "query", "route_name", "is_frame", "is_cache", "menu_type", "visible", "status", "perms", "icon", "create_by", "create_time", "update_by", "update_time", "remark") VALUES (2091, '超短期预测日报', 2016, 6, 'ultra-shor-term-forecast-daily', 'ufo/datareport/ultraShortTermForecastDailyReport', '', 'UltraShorTermForecastDailyReport', 1, 0, 'C', '0', '0', 'data:ultraShortTermForecastReport:daily', 'file-text', 'admin', '2026-09-14 00:00:00', '', NULL, '超短期预测日报页面');
-INSERT INTO "public"."sys_menu" ("menu_id", "menu_name", "parent_id", "order_num", "path", "component", "query", "route_name", "is_frame", "is_cache", "menu_type", "visible", "status", "perms", "icon", "create_by", "create_time", "update_by", "update_time", "remark") VALUES (2092, '超短期预测月报', 2016, 7, 'ultra-shor-term-forecast-monthly', 'ufo/datareport/ultraShortTermForecastMonthlyReport', '', 'UltraShorTermForecastMonthlyReport', 1, 0, 'C', '0', '0', 'data:ultraShortTermForecastReport:monthly', 'file-text', 'admin', '2026-09-14 00:00:00', '', NULL, '超短期预测月报页面');
-INSERT INTO "public"."sys_menu" ("menu_id", "menu_name", "parent_id", "order_num", "path", "component", "query", "route_name", "is_frame", "is_cache", "menu_type", "visible", "status", "perms", "icon", "create_by", "create_time", "update_by", "update_time", "remark") VALUES (2093, '超短期预测年报', 2016, 8, 'ultra-shor-term-forecast-yearly', 'ufo/datareport/ultraShortTermForecastYearlyReport', '', 'UltraShorTermForecastYearlyReport', 1, 0, 'C', '0', '0', 'data:ultraShortTermForecastReport:yearly', 'file-text', 'admin', '2026-09-14 00:00:00', '', NULL, '超短期预测年报页面');
+INSERT INTO "public"."sys_menu" ("menu_id", "menu_name", "parent_id", "order_num", "path", "component", "query", "route_name", "is_frame", "is_cache", "menu_type", "visible", "status", "perms", "icon", "create_by", "create_time", "update_by", "update_time", "remark") VALUES (2091, '超短期预测日报', 2016, 6, 'ultra-short-term-forecast-daily', 'ufo/datareport/ultraShortTermForecastDailyReport', '', 'UltraShorTermForecastDailyReport', 1, 0, 'C', '0', '0', 'data:ultraShortTermForecastReport:daily', 'StockOutlined', 'admin', '2026-09-14 00:00:00', '', NULL, '超短期预测日报页面');
+INSERT INTO "public"."sys_menu" ("menu_id", "menu_name", "parent_id", "order_num", "path", "component", "query", "route_name", "is_frame", "is_cache", "menu_type", "visible", "status", "perms", "icon", "create_by", "create_time", "update_by", "update_time", "remark") VALUES (2092, '超短期预测月报', 2016, 7, 'ultra-short-term-forecast-monthly', 'ufo/datareport/ultraShortTermForecastMonthlyReport', '', 'UltraShorTermForecastMonthlyReport', 1, 0, 'C', '0', '0', 'data:ultraShortTermForecastReport:monthly', 'LineChartOutlined', 'admin', '2026-09-14 00:00:00', '', NULL, '超短期预测月报页面');
+INSERT INTO "public"."sys_menu" ("menu_id", "menu_name", "parent_id", "order_num", "path", "component", "query", "route_name", "is_frame", "is_cache", "menu_type", "visible", "status", "perms", "icon", "create_by", "create_time", "update_by", "update_time", "remark") VALUES (2093, '超短期预测年报', 2016, 8, 'ultra-short-term-forecast-yearly', 'ufo/datareport/ultraShortTermForecastYearlyReport', '', 'UltraShorTermForecastYearlyReport', 1, 0, 'C', '0', '0', 'data:ultraShortTermForecastReport:yearly', 'AreaChartOutlined', 'admin', '2026-09-14 00:00:00', '', NULL, '超短期预测年报页面');
 
 INSERT INTO sys_role_menu (role_id, menu_id) VALUES (1, 2091);
 INSERT INTO sys_role_menu (role_id, menu_id) VALUES (1, 2092);