From 587dd5fcc722c5ace1742c3feb84a7abe24827db Mon Sep 17 00:00:00 2001 From: ctw <1051735452@qq.com> Date: Thu, 15 Jan 2026 14:00:53 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=88=91=E7=BB=99=E6=94=B9?= =?UTF-8?q?=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-system/pom.xml | 6 + ruoyi-ui/package.json | 4 +- ruoyi-ui/src/main.js | 1 + ruoyi-ui/src/views/index.vue | 1290 +++++------------------------------------- ruoyi-ui/vue.config.js | 100 ++-- 5 files changed, 217 insertions(+), 1184 deletions(-) diff --git a/ruoyi-system/pom.xml b/ruoyi-system/pom.xml index cf18b45..ae626a6 100644 --- a/ruoyi-system/pom.xml +++ b/ruoyi-system/pom.xml @@ -22,6 +22,12 @@ com.ruoyi ruoyi-common + + io.swagger + swagger-annotations + 1.6.2 + compile + diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json index f52ace5..bcdb065 100644 --- a/ruoyi-ui/package.json +++ b/ruoyi-ui/package.json @@ -26,7 +26,7 @@ "dependencies": { "@riophae/vue-treeselect": "0.4.0", "axios": "0.28.1", - "cesium": "^1.95.0", + "cesium": "1.95", "clipboard": "2.0.8", "core-js": "3.37.1", "echarts": "5.4.0", @@ -50,12 +50,14 @@ "vuex": "3.6.0" }, "devDependencies": { + "@open-wc/webpack-import-meta-loader": "^0.4.7", "@vue/cli-plugin-babel": "4.4.6", "@vue/cli-service": "4.4.6", "babel-plugin-dynamic-import-node": "2.3.3", "chalk": "4.1.0", "compression-webpack-plugin": "6.1.2", "connect": "3.6.6", + "copy-webpack-plugin": "^5.1.2", "sass": "1.32.13", "sass-loader": "10.1.1", "script-ext-html-webpack-plugin": "2.1.5", diff --git a/ruoyi-ui/src/main.js b/ruoyi-ui/src/main.js index da01750..b2f3708 100644 --- a/ruoyi-ui/src/main.js +++ b/ruoyi-ui/src/main.js @@ -1,3 +1,4 @@ +window.CESIUM_BASE_URL = "/cesium/"; import Vue from 'vue' import Cookies from 'js-cookie' diff --git a/ruoyi-ui/src/views/index.vue b/ruoyi-ui/src/views/index.vue index 579996c..8bace10 100644 --- a/ruoyi-ui/src/views/index.vue +++ b/ruoyi-ui/src/views/index.vue @@ -1,1099 +1,60 @@ @@ -1102,82 +63,139 @@ export default { name: "Index", data() { return { - // 版本号 - version: "3.9.1" - } + // 如果有需要的数据可以在这里定义 + }; }, methods: { - goCesium(){ - this.$router.push({ path: this.redirect || "/cesiumMap" }).catch(()=>{}) + // 1. 跳转到 Cesium 地图 + goCesium() { + // 这里的 path 必须和你 router/index.js 里配置的一致 + this.$router.push({ path: "/cesiumMap" }).catch(() => {}); + }, + + // 2. 跳转到 选择房间页面 + goSelectRoom() { + this.$router.push({ path: "/selectRoom" }).catch(() => {}); }, - goTarget(href) { - window.open(href, "_blank") + + // 3. 跳转到 子房间页面 (你提供的那个红色的作战界面) + goChildRoom() { + this.$router.push({ path: "/childRoom" }).catch(() => {}); } } -} +}; - diff --git a/ruoyi-ui/vue.config.js b/ruoyi-ui/vue.config.js index 8ff151d..e2698e5 100644 --- a/ruoyi-ui/vue.config.js +++ b/ruoyi-ui/vue.config.js @@ -6,35 +6,38 @@ function resolve(dir) { } const CompressionPlugin = require('compression-webpack-plugin') +// 引入 CopyWebpackPlugin 用于复制 Cesium 静态资源 +const CopyWebpackPlugin = require('copy-webpack-plugin') const name = process.env.VUE_APP_TITLE || '若依管理系统' // 网页标题 - const baseUrl = 'http://192.168.50.30:8080' // 后端接口 - const port = process.env.port || process.env.npm_config_port || 80 // 端口 -// vue.config.js 配置说明 -//官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions -// 这里只列一部分,具体配置参考文档 +// 定义 Cesium 源码路径 +const cesiumSource = 'node_modules/cesium/Build/Cesium' + module.exports = { // 部署生产环境和开发环境下的URL。 - // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上 - // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。 publicPath: process.env.NODE_ENV === "production" ? "/" : "/", - // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist) outputDir: 'dist', - // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下) assetsDir: 'static', - // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。 productionSourceMap: false, - transpileDependencies: ['quill'], - // webpack-dev-server 相关配置 + + // 核心修改:让 Babel 编译 Cesium 和相关依赖,解决语法报错 + transpileDependencies: [ + 'quill', + 'cesium', + '@cesium/engine', + '@cesium/widgets', + '@zip.js', + '@spz-loader' + ], + devServer: { host: '0.0.0.0', port: port, open: true, proxy: { - // detail: https://cli.vuejs.org/config/#devserver-proxy [process.env.VUE_APP_BASE_API]: { target: baseUrl, changeOrigin: true, @@ -42,7 +45,6 @@ module.exports = { ['^' + process.env.VUE_APP_BASE_API]: '' } }, - // springdoc proxy '^/v3/api-docs/(.*)': { target: baseUrl, changeOrigin: true @@ -50,6 +52,7 @@ module.exports = { }, disableHostCheck: true }, + css: { loaderOptions: { sass: { @@ -57,44 +60,48 @@ module.exports = { } } }, + configureWebpack: { name: name, - module: { - rules: [ - { - test: /\.js$/, - include: /node_modules\/@cesium/, - use: { - loader: 'babel-loader', - options: { - presets: ['@babel/preset-env'], - plugins: ['@babel/plugin-proposal-nullish-coalescing-operator', - '@babel/plugin-proposal-optional-chaining'] - } - } - } - ] - }, resolve: { alias: { '@': resolve('src') } }, plugins: [ - // http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解压缩静态文件 + // 核心修改:复制 Cesium 静态资源到 public/cesium 目录下 + new CopyWebpackPlugin([ + { from: path.join(cesiumSource, 'Workers'), to: 'cesium/Workers' }, + { from: path.join(cesiumSource, 'Assets'), to: 'cesium/Assets' }, + { from: path.join(cesiumSource, 'Widgets'), to: 'cesium/Widgets' }, + { from: path.join(cesiumSource, 'ThirdParty'), to: 'cesium/ThirdParty' } + ]), + + // gzip压缩 new CompressionPlugin({ - cache: false, // 不启用文件缓存 - test: /\.(js|css|html|jpe?g|png|gif|svg)?$/i, // 压缩文件格式 - filename: '[path][base].gz[query]', // 压缩后的文件名 - algorithm: 'gzip', // 使用gzip压缩 - minRatio: 0.8, // 压缩比例,小于 80% 的文件不会被压缩 - deleteOriginalAssets: false // 压缩后删除原文件 + cache: false, + test: /\.(js|css|html|jpe?g|png|gif|svg)?$/i, + filename: '[path][base].gz[query]', + algorithm: 'gzip', + minRatio: 0.8, + deleteOriginalAssets: false }) - ], + ] }, + chainWebpack(config) { - config.plugins.delete('preload') // TODO: need test - config.plugins.delete('prefetch') // TODO: need test + config.plugins.delete('preload') + config.plugins.delete('prefetch') + + // 核心修改:添加 import.meta 加载器支持 (解决 Cesium 1.97+ 报错) + config.module + .rule('import-meta') + .test(/\.js$/) + .include.add(/node_modules/) + .end() + .use('import-meta-loader') + .loader('@open-wc/webpack-import-meta-loader') + .end(); // set svg-sprite-loader config.module @@ -118,7 +125,6 @@ module.exports = { .plugin('ScriptExtHtmlWebpackPlugin') .after('html') .use('script-ext-html-webpack-plugin', [{ - // `runtime` must same as runtimeChunk name. default is `runtime` inline: /runtime\..*\.js$/ }]) .end() @@ -130,17 +136,17 @@ module.exports = { name: 'chunk-libs', test: /[\\/]node_modules[\\/]/, priority: 10, - chunks: 'initial' // only package third parties that are initially dependent + chunks: 'initial' }, elementUI: { - name: 'chunk-elementUI', // split elementUI into a single package - test: /[\\/]node_modules[\\/]_?element-ui(.*)/, // in order to adapt to cnpm - priority: 20 // the weight needs to be larger than libs and app or it will be packaged into libs or app + name: 'chunk-elementUI', + test: /[\\/]node_modules[\\/]_?element-ui(.*)/, + priority: 20 }, commons: { name: 'chunk-commons', - test: resolve('src/components'), // can customize your rules - minChunks: 3, // minimum common number + test: resolve('src/components'), + minChunks: 3, priority: 5, reuseExistingChunk: true }