NEZ-1325 feat: 系统外观配置
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="login">
|
<div class="login" id="login-bgimg">
|
||||||
<div class="model"></div>
|
<div class="model"></div>
|
||||||
<div class="login-main">
|
<div class="login-main">
|
||||||
<div class="logo"><img src="../../assets/img/logo-big.png"></div>
|
<div class="logo"><img src="../../assets/img/logo-big.png"></div>
|
||||||
@@ -142,7 +142,8 @@ export default {
|
|||||||
dialogLoading: false,
|
dialogLoading: false,
|
||||||
fileShow: false,
|
fileShow: false,
|
||||||
fileContent: '',
|
fileContent: '',
|
||||||
recoveryCode: []
|
recoveryCode: [],
|
||||||
|
bgImg: '' // 背景图
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -157,7 +158,7 @@ export default {
|
|||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
// 登录成功,记录用户名、token和lang
|
// 登录成功,记录用户名、token和lang
|
||||||
this.authToken = res.data.authToken
|
this.authToken = res.data.authToken
|
||||||
this.lang = res.data.user.lang
|
this.lang = res.data.user.lang || localStorage.getItem('nz-language')
|
||||||
this.$i18n.locale = this.lang
|
this.$i18n.locale = this.lang
|
||||||
// 获取可选语言
|
// 获取可选语言
|
||||||
get('/sys/dict/all?type=lang').then(response => {
|
get('/sys/dict/all?type=lang').then(response => {
|
||||||
@@ -329,6 +330,10 @@ export default {
|
|||||||
document.getElementById('usernameInput').focus()
|
document.getElementById('usernameInput').focus()
|
||||||
this.licenseStat()
|
this.licenseStat()
|
||||||
this.initEvent()
|
this.initEvent()
|
||||||
|
this.bgImg = localStorage.getItem('nz-sys-bgImg')
|
||||||
|
if (this.bgImg) {
|
||||||
|
document.getElementById('login-bgimg').style['background-image'] = `url(${this.bgImg})`
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ export default {
|
|||||||
self.logo = e.value
|
self.logo = e.value
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
this.logo = localStorage.getItem('nz-sys-logo')
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
menuList () {
|
menuList () {
|
||||||
|
|||||||
@@ -8,13 +8,31 @@ import VueResource from 'vue-resource'
|
|||||||
|
|
||||||
Vue.use(VueResource)
|
Vue.use(VueResource)
|
||||||
|
|
||||||
const loginWhiteList = ['/setup', '/sys/license/upload', '/sys/license/state'] // 免登陆白名单
|
const loginWhiteList = ['/setup', '/sys/license/upload', '/sys/license/state', '/sys/appearance'] // 免登陆白名单
|
||||||
const permissionWhiteList = ['/profile', '/menu', ...loginWhiteList] // 权限白名单
|
const permissionWhiteList = ['/profile', '/menu', ...loginWhiteList] // 权限白名单
|
||||||
|
|
||||||
router.beforeEach((to, from, next) => {
|
router.beforeEach((to, from, next) => {
|
||||||
const configUrl = 'static/config.json?Timestamp=' + new Date().getTime()
|
const configUrl = 'static/config.json?Timestamp=' + new Date().getTime()
|
||||||
if (to.path === '/login') { // 拦截登录页面,系统初始化检查
|
if (to.path === '/login') { // 拦截登录页面,现货区外观设置 再系统初始化检查
|
||||||
Vue.http.get(configUrl).then(config => {
|
Vue.http.get(configUrl).then(config => {
|
||||||
|
const appearance = new Promise(resolve => {
|
||||||
|
get(config.body.baseUrl + '/sys/appearance').then(res => {
|
||||||
|
// console.log(res)
|
||||||
|
if (res.code === 200) {
|
||||||
|
localStorage.setItem('nz-sys-name', res.data.system_name)
|
||||||
|
localStorage.setItem('nz-sys-logo', res.data.system_logo)
|
||||||
|
localStorage.setItem('nz-sys-favicon', res.data.system_favicon)
|
||||||
|
localStorage.setItem('nz-language', res.data.lang)
|
||||||
|
localStorage.setItem('nz-sys-timezone', res.data.timezone)
|
||||||
|
localStorage.setItem('nz-sys-bgImg', res.data.system_bgImg)
|
||||||
|
localStorage.setItem('nz-default-theme', res.data.theme)
|
||||||
|
localStorage.setItem('nz-default-dateFormat', res.data.dateFormat)
|
||||||
|
changeFavicon(res.data.system_favicon)
|
||||||
|
}
|
||||||
|
resolve()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
appearance.then(() => {
|
||||||
get(config.body.baseUrl + 'setup/inited').then(res => {
|
get(config.body.baseUrl + 'setup/inited').then(res => {
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
if (res.inited === 0) {
|
if (res.inited === 0) {
|
||||||
@@ -33,6 +51,7 @@ router.beforeEach((to, from, next) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
})
|
||||||
} else if (sessionStorage.getItem('nz-token')) {
|
} else if (sessionStorage.getItem('nz-token')) {
|
||||||
const i18nRequest = new Promise(resolve => {
|
const i18nRequest = new Promise(resolve => {
|
||||||
// 从localStorage加载i18n
|
// 从localStorage加载i18n
|
||||||
@@ -166,3 +185,17 @@ export function sortByOrderNum (menuList) {
|
|||||||
function getChildMenu (menu) {
|
function getChildMenu (menu) {
|
||||||
return menu.children.filter(m => m.type == 1)
|
return menu.children.filter(m => m.type == 1)
|
||||||
}
|
}
|
||||||
|
function changeFavicon (link) { // 设置网页标签的图片
|
||||||
|
let $favicon = document.querySelector('link[rel="icon"]')
|
||||||
|
// If a <link rel="icon"> element already exists,
|
||||||
|
// change its href to the given link.
|
||||||
|
if ($favicon !== null) {
|
||||||
|
$favicon.href = link
|
||||||
|
// Otherwise, create a new element and append it to <head>.
|
||||||
|
} else {
|
||||||
|
$favicon = document.createElement('link')
|
||||||
|
$favicon.rel = 'icon'
|
||||||
|
$favicon.href = link
|
||||||
|
document.head.appendChild($favicon)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -47,26 +47,35 @@ const user = {
|
|||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
loginSuccess (store, res) {
|
loginSuccess (store, res) {
|
||||||
sessionStorage.setItem('nz-token', res.data.token)
|
const defaultAppearance = {
|
||||||
localStorage.setItem('nz-sys-name', res.data.systemName)
|
system_name: localStorage.getItem('nz-sys-name'),
|
||||||
if (res.systemLogo) {
|
system_logo: localStorage.getItem('nz-sys-logo'),
|
||||||
localStorage.setItem('nz-sys-logo', res.data.systemLogo)
|
system_favicon: localStorage.getItem('nz-sys-favicon'),
|
||||||
|
language: localStorage.getItem('nz-language'),
|
||||||
|
timezone: localStorage.getItem('nz-sys-timezone'),
|
||||||
|
theme: localStorage.getItem('nz-default-theme'),
|
||||||
|
system_bgImg: localStorage.getItem('nz-sys-bgImg'),
|
||||||
|
dateFormat: localStorage.getItem('nz-default-dateFormat')
|
||||||
}
|
}
|
||||||
localStorage.setItem('nz-sys-timezone', res.data.timezone)
|
sessionStorage.setItem('nz-token', res.data.token)
|
||||||
|
localStorage.setItem('nz-sys-name', res.data.systemName || defaultAppearance.system_name)
|
||||||
|
if (res.systemLogo || defaultAppearance.system_logo) {
|
||||||
|
localStorage.setItem('nz-sys-logo', res.data.systemLogo || defaultAppearance.system_logo)
|
||||||
|
}
|
||||||
|
localStorage.setItem('nz-sys-timezone', res.data.timezone || defaultAppearance.timezone)
|
||||||
|
|
||||||
const currentTheme = res.data.user.theme ? theme.find(t => t.value === res.data.user.theme).label : 'light'
|
const currentTheme = res.data.user.theme ? theme.find(t => t.value === res.data.user.theme).label : defaultAppearance.theme
|
||||||
localStorage.setItem(`nz-user-${res.data.user.id}-theme`, currentTheme)
|
localStorage.setItem(`nz-user-${res.data.user.id}-theme`, currentTheme)
|
||||||
const body = document.getElementsByTagName('body')[0]
|
const body = document.getElementsByTagName('body')[0]
|
||||||
body.setAttribute('class', `theme-${currentTheme}`)
|
body.setAttribute('class', `theme-${currentTheme}`)
|
||||||
|
|
||||||
localStorage.setItem('timezoneOffset', moment.tz(res.data.timezone).format('Z'))
|
localStorage.setItem('timezoneOffset', moment.tz(res.data.timezone || defaultAppearance.timezone).format('Z'))
|
||||||
localStorage.setItem('nz-sys-default-cabinet-usize', res.data.defaultCabinetUsize)
|
localStorage.setItem('nz-sys-default-cabinet-usize', res.data.defaultCabinetUsize)
|
||||||
localStorage.setItem('nz-sys-max-terminal-num', res.data.maxTerminalNum)
|
localStorage.setItem('nz-sys-max-terminal-num', res.data.maxTerminalNum)
|
||||||
localStorage.setItem('nz-sys-asset-ping-switch', res.data.assetPingSwitch)
|
localStorage.setItem('nz-sys-asset-ping-switch', res.data.assetPingSwitch)
|
||||||
localStorage.setItem('nz-unnsaved-change', res.data.unsavedChange)
|
localStorage.setItem('nz-unnsaved-change', res.data.unsavedChange)
|
||||||
localStorage.setItem('nz-mfa-enable', Number(res.data.mfaAuthEnable) ? 1 : 0)
|
localStorage.setItem('nz-mfa-enable', Number(res.data.mfaAuthEnable) ? 1 : 0)
|
||||||
store.commit('setLanguage', res.data.user.lang)
|
store.commit('setLanguage', res.data.user.lang || defaultAppearance.language)
|
||||||
console.log(res.data.user.lang)
|
|
||||||
post('/sys/user/permissions', { token: res.data.token }).then(res => {
|
post('/sys/user/permissions', { token: res.data.token }).then(res => {
|
||||||
const menuList = sortByOrderNum(res.data.menus)
|
const menuList = sortByOrderNum(res.data.menus)
|
||||||
store.commit('setMenuList', menuList)
|
store.commit('setMenuList', menuList)
|
||||||
|
|||||||
Reference in New Issue
Block a user