diff --git a/vue/src/config/request.js b/vue/src/config/request.js index f051104..1786e05 100644 --- a/vue/src/config/request.js +++ b/vue/src/config/request.js @@ -48,7 +48,7 @@ service.interceptors.response.use( return MessageBox.alert('请登录后重试', { type: 'warning', beforeClose: (action, instance, done) => { - store.dispatch('user/logout').then(() => done()) + store.dispatch('user/logout').then(done) } }) } diff --git a/vue/src/layout/components/Navbar/index.vue b/vue/src/layout/components/Navbar/index.vue index f6482f3..7e9b195 100644 --- a/vue/src/layout/components/Navbar/index.vue +++ b/vue/src/layout/components/Navbar/index.vue @@ -29,9 +29,6 @@ $guide(0,guideSteps)"> 新手指引 - - 系统监控 - 接口设置 @@ -75,10 +72,6 @@ ...mapState('setting', ['sidebarCollapse', 'showBreadcrumb']), - showSystemMonitor() { - return auth('/system/monitor') - }, - showSystemResource() { return auth('/system/resource') } diff --git a/vue/src/layout/index.vue b/vue/src/layout/index.vue index 7f625cc..342d6df 100644 --- a/vue/src/layout/index.vue +++ b/vue/src/layout/index.vue @@ -37,7 +37,7 @@ ...mapState('socket', ['online']), ...mapState('user', { - isLogin: state => !isEmpty(state.id) && !isEmpty(state.token) + isLogin: state => !isEmpty(state.id, state.token) }), containerClass() { diff --git a/vue/src/router/authority/modules/system.js b/vue/src/router/authority/modules/system.js index c4d9bc0..df418f4 100644 --- a/vue/src/router/authority/modules/system.js +++ b/vue/src/router/authority/modules/system.js @@ -50,13 +50,6 @@ const router = { component: () => lazyLoadView(import('@/views/system/resource')), hidden: true, meta: {title: '接口设置'} - }, - { - path: 'monitor', - name: 'systemMonitor', - component: () => lazyLoadView(import('@/views/system/monitor')), - hidden: true, - meta: {title: '系统监控'} } ] } diff --git a/vue/src/store/modules/resource.js b/vue/src/store/modules/resource.js index 5629254..0223129 100644 --- a/vue/src/store/modules/resource.js +++ b/vue/src/store/modules/resource.js @@ -4,7 +4,7 @@ import authorityRoutes from '@/router/authority' import {needAuth} from "@/utils/auth" import {createTree} from "@/utils/tree" import {getAllResources} from "@/api/system/resource" -import {isEmpty} from "@/utils" +import {emptyOrDefault, isEmpty} from "@/utils" import {isExternal} from "@/utils/validate" const finalConstantRoutes = transformOriginRoutes(constantRoutes) @@ -159,7 +159,7 @@ function sort(routes, getSortValue = defaultGetSortValue) { const defaultGetSortValue = item => { item = deepTap(item) - return !item || isEmpty(item.sort) ? 10000 : item.sort + return !item || emptyOrDefault(item.sort, 10000) } const deepTap = item => { diff --git a/vue/src/store/modules/socket.js b/vue/src/store/modules/socket.js index edb99ed..9b35465 100644 --- a/vue/src/store/modules/socket.js +++ b/vue/src/store/modules/socket.js @@ -1,4 +1,5 @@ import {MessageBox} from "element-ui" +import {isEmpty} from "@/utils" import {socketUrl} from '@/config' import SocketIO from 'socket.io-client' import {createMutations} from "@/utils" @@ -13,7 +14,7 @@ const mutations = createMutations(state) const actions = { init(context, user) { - if (!user || !user.id || !user.session_id) return + if (isEmpty(user, user.id, user.token)) return socket = initSocket(user) @@ -29,9 +30,9 @@ const actions = { } } -function initSocket({id, session_id}) { +function initSocket({id, token}) { return new SocketIO(socketUrl, { - query: {id, session_id}, + query: {id, token}, transports: ['websocket'] }) } @@ -79,11 +80,7 @@ function customEventBind(socket, {state, commit, dispatch, rootState}) { return MessageBox.alert(msg || '你已被强制下线,请重新登陆', { type: 'warning', beforeClose: (action, instance, done) => { - dispatch('user/logout', null, {root: true}) - .then(() => { - done() - location.reload() - }) + dispatch('user/logout', null, {root: true}).finally(done) } }) }) diff --git a/vue/src/store/modules/user.js b/vue/src/store/modules/user.js index 5840e96..c73efd9 100644 --- a/vue/src/store/modules/user.js +++ b/vue/src/store/modules/user.js @@ -1,7 +1,7 @@ -import {login, logout} from '@/api/account' -import {createMutations, isEmpty} from "@/utils" +import {createMutations, emptyOrDefault} from "@/utils" import {autoCompleteUrl} from "@/utils/file" import {getUser, setUser} from "@/utils/storage" +import {login, logout} from '@/api/account' //刷新时从本地存储中获取用户信息 const user = getUser() @@ -11,14 +11,13 @@ const state = { prepare_logout: '', /*用户基本信息*/ - id: !isEmpty(user.id) ? user.id : null, - admin: !isEmpty(user.admin) ? user.admin : 0, - token: !isEmpty(user.token) ? user.token : '', - name: !isEmpty(user.name) ? user.name : '', - avatar: !isEmpty(user.avatar) ? user.avatar : '', - role_name: !isEmpty(user.role_name) ? user.role_name : '', - resources: !isEmpty(user.resources) ? user.resources : {}, - session_id: !isEmpty(user.session_id) ? user.session_id : '' + id: emptyOrDefault(user.id, null), + name: emptyOrDefault(user.name), + role_name: emptyOrDefault(user.role_name), + avatar: emptyOrDefault(user.avatar), + admin: emptyOrDefault(user.admin), + token: emptyOrDefault(user.token), + resources: emptyOrDefault(user.resources, {}) } const mutations = createMutations(state, true) @@ -29,6 +28,7 @@ const actions = { return new Promise((resolve, reject) => { login({username: username.trim(), password}) .then(user => { + user.admin === 1 && (user.role_name = '超级管理员') user.avatar = autoCompleteUrl(user.avatar) commit('$all', user) setUser(user) @@ -44,11 +44,15 @@ const actions = { if (state.prepare_logout) return Promise.reject() commit('prepare_logout', 'yes') logout(state.token) - .then(() => dispatch('socket/close', null, {root: true})) .then(() => { - dispatch('removeUser') - dispatch('tagsView/delAllViews', null, {root: true}) commit('resource/hasInitRoutes', false, {root: true}) + return Promise.all([ + dispatch('socket/close', null, {root: true}), + dispatch('removeUser'), + dispatch('tagsView/delAllViews', null, {root: true}) + ]) + }) + .then(() => { resolve() window.location.reload() }) diff --git a/vue/src/utils/index.js b/vue/src/utils/index.js index 0d62984..c7760bd 100644 --- a/vue/src/utils/index.js +++ b/vue/src/utils/index.js @@ -2,6 +2,10 @@ export function isEmpty(...str) { return str.some(i => i === undefined || i === null || i === '') } +export function emptyOrDefault(v, defaultValue = '') { + return isEmpty(v) ? defaultValue : v +} + //简单重置对象属性 export function resetObj(obj) { if (isEmpty(obj)) return diff --git a/vue/src/views/purchase/order/components/EditDialog.vue b/vue/src/views/purchase/order/components/EditDialog.vue index 94846b8..79f66d1 100644 --- a/vue/src/views/purchase/order/components/EditDialog.vue +++ b/vue/src/views/purchase/order/components/EditDialog.vue @@ -193,7 +193,7 @@ } let index = 1 for (let sub of this.form.data) { - if (isEmpty(sub.cid) || isEmpty(sub.cname)) return `第${index}个商品分类不能为空` + if (isEmpty(sub.cid, sub.cname)) return `第${index}个商品分类不能为空` if (isEmpty(sub.num)) return `第${index}个商品数量不能为空` if (isEmpty(sub.price)) return `第${index + 1}个商品单价不能为空` if (sub.num < 0 || !isInteger(sub.num)) return `第${index}个商品数量有误` diff --git a/vue/src/views/sell/order/components/EditDialog.vue b/vue/src/views/sell/order/components/EditDialog.vue index 592c8f5..da52617 100644 --- a/vue/src/views/sell/order/components/EditDialog.vue +++ b/vue/src/views/sell/order/components/EditDialog.vue @@ -201,7 +201,7 @@ } let index = 1 for (let sub of this.form.data) { - if (isEmpty(sub.cid) || isEmpty(sub.cname)) return `第${index}个商品分类不能为空` + if (isEmpty(sub.cid, sub.cname)) return `第${index}个商品分类不能为空` if (isEmpty(sub.num)) return `第${index}个商品数量不能为空` if (isEmpty(sub.price)) return `第${index + 1}个商品单价不能为空` if (sub.num < 0 || !isInteger(sub.num)) return `第${index}个商品数量有误` diff --git a/vue/src/views/system/monitor/components/Cpu.vue b/vue/src/views/system/monitor/components/Cpu.vue deleted file mode 100644 index a2ef3af..0000000 --- a/vue/src/views/system/monitor/components/Cpu.vue +++ /dev/null @@ -1,129 +0,0 @@ - - - - cpu监控 - - - 当前使用率: - - - - - 峰值: - - - - - - - - - diff --git a/vue/src/views/system/monitor/components/Jvm.vue b/vue/src/views/system/monitor/components/Jvm.vue deleted file mode 100644 index ebe30e1..0000000 --- a/vue/src/views/system/monitor/components/Jvm.vue +++ /dev/null @@ -1,128 +0,0 @@ - - - - JVM监控 - {{data.used|numberFormatter}} / {{data.total|numberFormatter}} - - 当前使用率: - - - - 峰值: - - - - - - - - - diff --git a/vue/src/views/system/monitor/components/Memory.vue b/vue/src/views/system/monitor/components/Memory.vue deleted file mode 100644 index bbc3cf3..0000000 --- a/vue/src/views/system/monitor/components/Memory.vue +++ /dev/null @@ -1,128 +0,0 @@ - - - - 内存监控 - {{data.used|numberFormatter}} / {{data.total|numberFormatter}} - - 当前使用率: - - - - 峰值: - - - - - - - - - diff --git a/vue/src/views/system/monitor/index.vue b/vue/src/views/system/monitor/index.vue deleted file mode 100644 index fc7390b..0000000 --- a/vue/src/views/system/monitor/index.vue +++ /dev/null @@ -1,172 +0,0 @@ - - - - 启动时间:{{operatingInfo.bootedTime}} - 运行时间:{{operatingInfo.upTime|timePass}} - - - - - - - - - - - - - - - - - - diff --git a/vue/src/views/system/user/components/EditDialog.vue b/vue/src/views/system/user/components/EditDialog.vue index d9fec5b..c168ad6 100644 --- a/vue/src/views/system/user/components/EditDialog.vue +++ b/vue/src/views/system/user/components/EditDialog.vue @@ -12,7 +12,11 @@ - + form.role_name = e" + /> @@ -53,7 +57,7 @@ data() { const validateName = (r, v, c) => { - checkName(this.form.name) + checkName(this.form.name, this.form.id) .then(({msg}) => msg ? c(msg) : c()) .catch(e => c(e)) } diff --git a/vue/src/views/system/user/index.vue b/vue/src/views/system/user/index.vue index 201487d..679472d 100644 --- a/vue/src/views/system/user/index.vue +++ b/vue/src/views/system/user/index.vue @@ -48,7 +48,11 @@ > - + + + {{row.admin===1?'超级管理员':row.role_name}} + + {{row.ctime | timestamp2Date}} diff --git a/vue/src/views/userCenter/components/Account.vue b/vue/src/views/userCenter/components/Account.vue index c893f00..53b215f 100644 --- a/vue/src/views/userCenter/components/Account.vue +++ b/vue/src/views/userCenter/components/Account.vue @@ -25,6 +25,7 @@