Skip to content

Commit 26d0f40

Browse files
ren8179PanJiaChen
authored andcommitted
feature: change page title when route change (#1910)
1 parent 14580da commit 26d0f40

File tree

6 files changed

+37
-10
lines changed

6 files changed

+37
-10
lines changed

src/components/ThemePicker/index.vue

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,26 @@
1111
1212
const version = require('element-ui/package.json').version // element-ui version from node_modules
1313
const ORIGINAL_THEME = '#409EFF' // default color
14-
import defaultSettings from '@/settings'
1514
1615
export default {
1716
data() {
1817
return {
1918
chalk: '', // content of theme-chalk css
20-
theme: defaultSettings.theme
19+
theme: ''
20+
}
21+
},
22+
computed: {
23+
defaultTheme() {
24+
return this.$store.state.settings.theme
2125
}
2226
},
2327
watch: {
28+
defaultTheme: {
29+
handler: function(val, oldVal) {
30+
this.theme = val
31+
},
32+
immediate: true
33+
},
2434
async theme(val) {
2535
const oldVal = this.chalk ? this.theme : ORIGINAL_THEME
2636
if (typeof val !== 'string') return

src/permission.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { Message } from 'element-ui'
44
import NProgress from 'nprogress' // progress bar
55
import 'nprogress/nprogress.css' // progress bar style
66
import { getToken } from '@/utils/auth' // get token from cookie
7+
import getPageTitle from '@/utils/get-page-title'
78

89
NProgress.configure({ showSpinner: false }) // NProgress Configuration
910

@@ -13,6 +14,9 @@ router.beforeEach(async(to, from, next) => {
1314
// start progress bar
1415
NProgress.start()
1516

17+
// set page title
18+
document.title = getPageTitle(to.meta.title)
19+
1620
// determine whether the user has logged in
1721
const hasToken = getToken()
1822

src/settings.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
import variables from '@/styles/element-variables.scss'
2-
3-
export default {
4-
theme: variables.theme,
1+
module.exports = {
2+
title: 'Vue Element Admin',
53

64
/**
75
* @type {boolean} true | false

src/store/modules/settings.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
import variables from '@/styles/element-variables.scss'
12
import defaultSettings from '@/settings'
2-
const { showSettings, tagsView, fixedHeader, sidebarLogo, theme } = defaultSettings
3+
4+
const { showSettings, tagsView, fixedHeader, sidebarLogo } = defaultSettings
35

46
const state = {
5-
theme: theme,
7+
theme: variables.theme,
68
showSettings: showSettings,
79
tagsView: tagsView,
810
fixedHeader: fixedHeader,

src/utils/get-page-title.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import defaultSettings from '@/settings'
2+
import i18n from '@/lang'
3+
4+
const title = defaultSettings.title || 'Vue Element Admin'
5+
6+
export default function getPageTitle(key) {
7+
const hasKey = i18n.te(`route.${key}`)
8+
if (hasKey) {
9+
const pageName = i18n.t(`route.${key}`)
10+
return `${pageName} - ${title}`
11+
}
12+
return `${title}`
13+
}

vue.config.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
'use strict'
22
const path = require('path')
3-
const pkg = require('./package.json')
3+
const defaultSettings = require('./src/settings.js')
44

55
function resolve(dir) {
66
return path.join(__dirname, dir)
77
}
88

9-
const name = pkg.name || 'vue-element-admin' // page title
9+
const name = defaultSettings.title || 'vue Element Admin' // page title
1010
const port = 9527 // dev port
1111

1212
// All configuration item explanations can be find in https://cli.vuejs.org/config/

0 commit comments

Comments
 (0)