diff --git a/ruoyi-ui/.env.development b/ruoyi-ui/.env.development index 0cb1c613..18b2a3ed 100644 --- a/ruoyi-ui/.env.development +++ b/ruoyi-ui/.env.development @@ -1,3 +1,6 @@ +# 页面标题 +VUE_APP_TITLE = 若依管理系统 + # 开发环境配置 ENV = 'development' diff --git a/ruoyi-ui/.env.production b/ruoyi-ui/.env.production index a8e4af3b..cb064ec8 100644 --- a/ruoyi-ui/.env.production +++ b/ruoyi-ui/.env.production @@ -1,3 +1,6 @@ +# 页面标题 +VUE_APP_TITLE = 若依管理系统 + # 生产环境配置 ENV = 'production' diff --git a/ruoyi-ui/.env.staging b/ruoyi-ui/.env.staging index 41d4817c..a47af9a2 100644 --- a/ruoyi-ui/.env.staging +++ b/ruoyi-ui/.env.staging @@ -1,3 +1,6 @@ +# 页面标题 +VUE_APP_TITLE = 若依管理系统 + NODE_ENV = production # 测试环境配置 diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json index c7e888cb..1e20f13b 100644 --- a/ruoyi-ui/package.json +++ b/ruoyi-ui/package.json @@ -55,6 +55,7 @@ "vue": "2.6.12", "vue-count-to": "1.0.13", "vue-cropper": "0.5.5", + "vue-meta": "^2.4.0", "vue-router": "3.4.9", "vuedraggable": "2.24.3", "vuex": "3.6.0" diff --git a/ruoyi-ui/src/App.vue b/ruoyi-ui/src/App.vue index 1d0634c3..60325ff4 100644 --- a/ruoyi-ui/src/App.vue +++ b/ruoyi-ui/src/App.vue @@ -6,6 +6,14 @@ diff --git a/ruoyi-ui/src/layout/components/Settings/index.vue b/ruoyi-ui/src/layout/components/Settings/index.vue index efdc0fd0..0a6becac 100644 --- a/ruoyi-ui/src/layout/components/Settings/index.vue +++ b/ruoyi-ui/src/layout/components/Settings/index.vue @@ -62,6 +62,11 @@ +
+ 动态标题 + +
+ 保存配置 @@ -129,6 +134,17 @@ export default { }) } }, + dynamicTitle: { + get() { + return this.$store.state.settings.dynamicTitle + }, + set(val) { + this.$store.dispatch('settings/changeSetting', { + key: 'dynamicTitle', + value: val + }) + } + }, }, methods: { themeChange(val) { @@ -160,6 +176,7 @@ export default { "tagsView":${this.tagsView}, "fixedHeader":${this.fixedHeader}, "sidebarLogo":${this.sidebarLogo}, + "dynamicTitle":${this.dynamicTitle}, "sideTheme":"${this.sideTheme}", "theme":"${this.theme}" }` diff --git a/ruoyi-ui/src/main.js b/ruoyi-ui/src/main.js index 82f88067..0e9639d4 100644 --- a/ruoyi-ui/src/main.js +++ b/ruoyi-ui/src/main.js @@ -20,6 +20,8 @@ import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, import Pagination from "@/components/Pagination"; // 自定义表格工具扩展 import RightToolbar from "@/components/RightToolbar" +// 头部标签插件 +import VueMeta from 'vue-meta' // 全局方法挂载 Vue.prototype.getDicts = getDicts @@ -49,6 +51,7 @@ Vue.component('Pagination', Pagination) Vue.component('RightToolbar', RightToolbar) Vue.use(permission) +Vue.use(VueMeta) /** * If you don't want to use mock-server diff --git a/ruoyi-ui/src/permission.js b/ruoyi-ui/src/permission.js index ae0bda25..bde52936 100644 --- a/ruoyi-ui/src/permission.js +++ b/ruoyi-ui/src/permission.js @@ -12,6 +12,7 @@ const whiteList = ['/login', '/auth-redirect', '/bind', '/register'] router.beforeEach((to, from, next) => { NProgress.start() if (getToken()) { + to.meta.title && store.dispatch('settings/setTitle', to.meta.title) /* has token*/ if (to.path === '/login') { next({ path: '/' }) diff --git a/ruoyi-ui/src/settings.js b/ruoyi-ui/src/settings.js index 0e74c710..059c74d7 100644 --- a/ruoyi-ui/src/settings.js +++ b/ruoyi-ui/src/settings.js @@ -1,6 +1,4 @@ module.exports = { - title: '若依管理系统', - /** * 侧边栏主题 深色主题theme-dark,浅色主题theme-light */ @@ -31,6 +29,11 @@ module.exports = { */ sidebarLogo: true, + /** + * 是否显示动态标题 + */ + dynamicTitle: false, + /** * @type {string | array} 'production' | ['production', 'development'] * @description Need show err logs component. diff --git a/ruoyi-ui/src/store/modules/settings.js b/ruoyi-ui/src/store/modules/settings.js index aeedaba1..285c93e2 100644 --- a/ruoyi-ui/src/store/modules/settings.js +++ b/ruoyi-ui/src/store/modules/settings.js @@ -1,17 +1,19 @@ import variables from '@/assets/styles/element-variables.scss' import defaultSettings from '@/settings' -const { sideTheme, showSettings, topNav, tagsView, fixedHeader, sidebarLogo } = defaultSettings +const { sideTheme, showSettings, topNav, tagsView, fixedHeader, sidebarLogo, dynamicTitle } = defaultSettings const storageSetting = JSON.parse(localStorage.getItem('layout-setting')) || '' const state = { + title: '', theme: storageSetting.theme || variables.theme, sideTheme: storageSetting.sideTheme || sideTheme, showSettings: showSettings, topNav: storageSetting.topNav === undefined ? topNav : storageSetting.topNav, tagsView: storageSetting.tagsView === undefined ? tagsView : storageSetting.tagsView, fixedHeader: storageSetting.fixedHeader === undefined ? fixedHeader : storageSetting.fixedHeader, - sidebarLogo: storageSetting.sidebarLogo === undefined ? sidebarLogo : storageSetting.sidebarLogo + sidebarLogo: storageSetting.sidebarLogo === undefined ? sidebarLogo : storageSetting.sidebarLogo, + dynamicTitle: storageSetting.dynamicTitle === undefined ? dynamicTitle : storageSetting.dynamicTitle } const mutations = { CHANGE_SETTING: (state, { key, value }) => { @@ -22,8 +24,13 @@ const mutations = { } const actions = { + // 修改布局设置 changeSetting({ commit }, data) { commit('CHANGE_SETTING', data) + }, + // 设置网页标题 + setTitle({ commit }, title) { + state.title = title } } diff --git a/ruoyi-ui/vue.config.js b/ruoyi-ui/vue.config.js index c8e87d42..f119c43a 100644 --- a/ruoyi-ui/vue.config.js +++ b/ruoyi-ui/vue.config.js @@ -1,12 +1,11 @@ 'use strict' const path = require('path') -const defaultSettings = require('./src/settings.js') function resolve(dir) { return path.join(__dirname, dir) } -const name = defaultSettings.title || '若依管理系统' // 标题 +const name = process.env.VUE_APP_TITLE || '若依管理系统' // 网页标题 const port = process.env.port || process.env.npm_config_port || 80 // 端口