From 479a3dfc0dedeb0c9d07a7cecdde0b9e1762c5eb Mon Sep 17 00:00:00 2001 From: wangzenghua <1048523306@qq.com> Date: Wed, 12 Feb 2025 09:22:41 +0000 Subject: [PATCH] fix:sub-admin --- main/src/main.js | 2 +- main/src/micro/app.js | 25 ++++++++++------ main/src/micro/index.js | 2 +- sub-admin/.env.development | 3 +- sub-admin/.eslintrc.js | 3 +- sub-admin/src/layout/components/Navbar.vue | 4 +-- sub-admin/src/main.js | 33 +++++++++++----------- sub-admin/src/router/index.js | 10 ++++--- sub-admin/vue.config.js | 25 +++++++++++++++- 9 files changed, 72 insertions(+), 35 deletions(-) diff --git a/main/src/main.js b/main/src/main.js index 9105699..eaa2e9c 100644 --- a/main/src/main.js +++ b/main/src/main.js @@ -4,7 +4,7 @@ import App from './App.vue'; import router from './router'; import pinia from './store'; import ElementPlus from 'element-plus'; -import 'element-plus/dist/index.css'; +// import 'element-plus/dist/index.css'; import { registerGlobalMicroApps } from './micro'; import { registerElIcons } from './plugins/icon'; import './utils/permission'; diff --git a/main/src/micro/app.js b/main/src/micro/app.js index 707e511..287eb5d 100644 --- a/main/src/micro/app.js +++ b/main/src/micro/app.js @@ -10,13 +10,13 @@ export const leftApps = [ // title: '运营服务', // icon: 'images/platform/icon-home.png', // }, - // { - // name: 'sub-admin', - // entry: VITE_APP_SUB_ADMIN, - // activeRule: '/sub-admin/', - // title: '管理后台', - // icon: 'images/platform/icon-admin.png', - // }, + { + name: 'sub-admin', + entry: VITE_APP_SUB_ADMIN, + activeRule: '/sub-admin/', + title: '管理后台', + icon: 'images/platform/icon-admin.png', + }, // { // name: 'sub-app', // entry: VITE_APP_SUB_ADMIN, @@ -64,7 +64,16 @@ export const rightApps = [ // }, ]; -export const microApps = [...leftApps, ...rightApps]; +export const defaultApps = [ + // { + // name: 'sub-admin', + // entry: VITE_APP_SUB_ADMIN, + // activeRule: '/sub-admin/', + // title: '后台管理系统', + // }, +]; + +export const microApps = [...defaultApps, ...leftApps, ...rightApps]; const apps = microApps.map((item) => { return { diff --git a/main/src/micro/index.js b/main/src/micro/index.js index 397bd8d..b982bcc 100644 --- a/main/src/micro/index.js +++ b/main/src/micro/index.js @@ -25,7 +25,7 @@ const registerGlobalMicroApps = () => { }); start({ - prefetch: false, + prefetch: 'all', sandbox: { experimentalStyleIsolation: true }, }); diff --git a/sub-admin/.env.development b/sub-admin/.env.development index f54dbdb..a4f8e62 100644 --- a/sub-admin/.env.development +++ b/sub-admin/.env.development @@ -1,7 +1,8 @@ # 开发环境配置 VUE_APP_TITLE = 后台管理系统 +VUE_APP_NAME = 'sub-amin' ENV = 'development' VUE_APP_PORT = '9527' -VUE_APP_BASE_API = '/dev-api' +VUE_APP_BASE_API = '/apis' VUE_APP_BASE_URL = 'http://192.168.18.99:8080' VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/sub-admin/.eslintrc.js b/sub-admin/.eslintrc.js index c080f06..9165a0d 100644 --- a/sub-admin/.eslintrc.js +++ b/sub-admin/.eslintrc.js @@ -1,4 +1,5 @@ // ESlint 检查配置 +/* eslint-disable */ module.exports = { root: true, parserOptions: { @@ -61,7 +62,7 @@ module.exports = { properties: 'always', }, ], - 'comma-dangle': [2, 'allow-end'], + // 'comma-dangle': [2, 'never'], 'comma-spacing': [ 2, { diff --git a/sub-admin/src/layout/components/Navbar.vue b/sub-admin/src/layout/components/Navbar.vue index a700872..bbf94b2 100644 --- a/sub-admin/src/layout/components/Navbar.vue +++ b/sub-admin/src/layout/components/Navbar.vue @@ -19,9 +19,9 @@ - + diff --git a/sub-admin/src/main.js b/sub-admin/src/main.js index 128be57..8f241f3 100644 --- a/sub-admin/src/main.js +++ b/sub-admin/src/main.js @@ -1,15 +1,14 @@ import Vue from 'vue'; - import Cookies from 'js-cookie'; - import Element from 'element-ui'; -import './assets/styles/element-variables.scss'; -import '@/assets/styles/index.scss'; // global css -import '@/assets/styles/ruoyi.scss'; // ruoyi css import App from './App'; import store from './store'; import router from './router'; +import './assets/styles/element-variables.scss'; +import '@/assets/styles/index.scss'; // global css +import '@/assets/styles/ruoyi.scss'; // ruoyi css +import 'element-ui/lib/theme-chalk/index.css'; import directive from './directive'; // directive import plugins from './plugins'; // plugins import { download } from '@/utils/request'; @@ -37,6 +36,8 @@ import DictTag from '@/components/DictTag'; import VueMeta from 'vue-meta'; // 字典数据组件 import DictData from '@/components/DictData'; +// import render from './plugins/micro'; +// export * from './plugins/micro'; // 全局方法挂载 Vue.prototype.getDicts = getDicts; @@ -78,28 +79,21 @@ Vue.use(Element, { Vue.config.productionTip = false; -/** - * qiankun子应用 - */ let instance = null; -function render() { +export function render(props = {}) { + const { container } = props; instance = new Vue({ - el: '#app', router, store, render: (h) => h(App), - }); -} - -if (!window.__POWERED_BY_QIANKUN__) { - render(); + }).$mount(container ? container.querySelector('#app') : '#app'); } export async function bootstrap() {} export async function mount(props) { - render(); + render(props); } export async function unmount() { @@ -107,3 +101,10 @@ export async function unmount() { instance.$el.innerHTML = ''; instance = null; } + +if (window.__POWERED_BY_QIANKUN__) { + // eslint-disable-next-line no-undef + __webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__; +} else { + render(); +} diff --git a/sub-admin/src/router/index.js b/sub-admin/src/router/index.js index 6acf14c..3a3ebaa 100644 --- a/sub-admin/src/router/index.js +++ b/sub-admin/src/router/index.js @@ -62,12 +62,12 @@ export const constantRoutes = [ hidden: true, }, { - path: '', + path: '/', component: Layout, - redirect: 'index', + redirect: '/index', children: [ { - path: 'index', + path: '/index', component: () => import('@/views/index'), name: 'Index', meta: { title: '首页', icon: 'dashboard', affix: true }, @@ -176,8 +176,10 @@ Router.prototype.replace = function push(location) { return routerReplace.call(this, location).catch((err) => err); }; +console.log(179, window.__POWERED_BY_QIANKUN__); export default new Router({ - mode: 'history', // 去掉url中的# + base: window.__POWERED_BY_QIANKUN__ ? '/sub-admin/' : '/', + mode: 'history', scrollBehavior: () => ({ y: 0 }), routes: constantRoutes, }); diff --git a/sub-admin/vue.config.js b/sub-admin/vue.config.js index ff2e4d1..fc4f863 100644 --- a/sub-admin/vue.config.js +++ b/sub-admin/vue.config.js @@ -18,7 +18,7 @@ module.exports = { // 部署生产环境和开发环境下的URL。 // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上 // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。 - publicPath: process.env.NODE_ENV === 'production' ? '/' : '/', + publicPath: process.env.NODE_ENV === 'development' ? `/sub-admin/` : '/', // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist) outputDir: 'dist', // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下) @@ -33,6 +33,7 @@ module.exports = { host: '0.0.0.0', port: port, open: true, + https: false, headers: { 'Access-Control-Allow-Origin': '*', }, @@ -62,6 +63,12 @@ module.exports = { '@': resolve('src'), }, }, + output: { + // qiankun need + library: `${name}-[name]`, + libraryTarget: 'umd', // 把微应用打包成 umd 库格式 + jsonpFunction: `${name}`, + }, plugins: [ // http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解压缩静态文件 new CompressionPlugin({ @@ -92,6 +99,22 @@ module.exports = { }) .end(); + // fix:Solve the problem of accessing element-ui icon on the qiankun application + config.module + .rule('fonts') + .test(/\.(ttf|woff)(\?.*)?$/) + .use('url-loader') + .loader('url-loader') + .tap((options) => { + options = { + ...options, + limit: 99999999, + name: '[name].[hash:7].[ext]', + }; + return options; + }) + .end(); + config.when(process.env.NODE_ENV !== 'development', (config) => { config .plugin('ScriptExtHtmlWebpackPlugin')