From 326fa97cac6cd71415fc1919ee199def4d774b6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=89=E8=99=B9=E7=9D=BF?= <297504645@qq.com> Date: Thu, 31 Aug 2023 15:40:42 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=AF=E7=94=B1=E5=AE=88=E6=8A=A4=E6=9B=B4?= =?UTF-8?q?=E6=94=B9=EF=BC=9A=E6=95=B4=E7=90=86=E5=90=8E=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Code/Fe/public/config.js | 26 +++- Code/Fe/src/App.vue | 15 +- Code/Fe/src/layout/components/Navbar.vue | 6 +- Code/Fe/src/permission.js | 66 ++++----- Code/Fe/src/permission0830.js | 139 +++++++++++++++++++ Code/Fe/src/store/modules/definition.js | 30 ++-- Code/Fe/src/store/modules/permission.js | 8 +- Code/Fe/src/store/modules/user copy.js | 168 +++++++++++++++++++++++ Code/Fe/src/store/modules/user.js | 99 +++++++------ Code/Fe/src/utils/auth.js | 7 +- Code/Fe/src/views/login/index.vue | 4 +- 11 files changed, 459 insertions(+), 109 deletions(-) create mode 100644 Code/Fe/src/permission0830.js create mode 100644 Code/Fe/src/store/modules/user copy.js diff --git a/Code/Fe/public/config.js b/Code/Fe/public/config.js index 4e0e87c..61875c1 100644 --- a/Code/Fe/public/config.js +++ b/Code/Fe/public/config.js @@ -3,10 +3,24 @@ window.SITE_CONFIG['baseApi'] = 'http://dev.ccwin-in.com:60068' // window.SITE_CONFIG['baseApi'] = 'http://192.168.0.190:60068' window.SITE_CONFIG['authApi'] = 'http://dev.ccwin-in.com:60068' window.SITE_CONFIG['businessApi'] = 'http://dev.ccwin-in.com:10097' -window.SITE_CONFIG['columnsApiNamesZh'] = 'Winin' -window.SITE_CONFIG['isAutoLogin'] = true +//是否登录配置信息【loginName】 +window.SITE_CONFIG['isConfigLogin'] = false +//如果【isConfigLogin】为true则使用【loginName】登录 +window.SITE_CONFIG['configLoginName'] = 'admin' +// 是否单页面(不显示菜单头部等部分) window.SITE_CONFIG['isSinglePage'] = false -window.SITE_CONFIG['userNameOrEmailAddress'] = 'admin' -window.SITE_CONFIG['client_secret'] = '1q2w3E*' -window.SITE_CONFIG['menuHiddenConfig'] = ['AsnDet','PoDet','ReceiptDet','ReturnDet'] -window.SITE_CONFIG['browserTitle'] = '接口看板-QAD&WMS' \ No newline at end of file +// 项目配置 +window.SITE_CONFIG['appClientId'] = 'Z_App' +// 项目配置内部名称 +window.SITE_CONFIG['appClientScope'] = 'Z' +// 浏览器名称 +window.SITE_CONFIG['browserTitle'] = '接口看板-QAD&WMS' +// 隐藏的页面 +window.SITE_CONFIG['menuHiddenConfig'] = [ + 'AsnDet','PoDet','ReceiptDet','ReturnDet' +] + +// window.SITE_CONFIG['isAutoLogin'] = true +// window.SITE_CONFIG['userNameOrEmailAddress'] = 'admin' +// window.SITE_CONFIG['client_secret'] = '1q2w3E*' +// window.SITE_CONFIG['columnsApiNamesZh'] = 'Z' \ No newline at end of file diff --git a/Code/Fe/src/App.vue b/Code/Fe/src/App.vue index e34ec19..0509df9 100644 --- a/Code/Fe/src/App.vue +++ b/Code/Fe/src/App.vue @@ -10,14 +10,19 @@ export default { } localStorage.setItem('baseApi',window.SITE_CONFIG['baseApi']) localStorage.setItem('authApi',window.SITE_CONFIG['authApi']) +localStorage.setItem('userApi',window.SITE_CONFIG['userApi']) localStorage.setItem('businessApi',window.SITE_CONFIG['businessApi']) -localStorage.setItem('columnsApiNamesZh',window.SITE_CONFIG['columnsApiNamesZh']) -localStorage.setItem('isAutoLogin',window.SITE_CONFIG['isAutoLogin']) +localStorage.setItem('isConfigLogin',window.SITE_CONFIG['isConfigLogin']) +localStorage.setItem('configLoginName',window.SITE_CONFIG['configLoginName']) localStorage.setItem('isSinglePage',window.SITE_CONFIG['isSinglePage']) -localStorage.setItem('userNameOrEmailAddress',window.SITE_CONFIG['userNameOrEmailAddress']) -localStorage.setItem('client_secret',window.SITE_CONFIG['client_secret']) -localStorage.setItem('menuHiddenConfig',window.SITE_CONFIG['menuHiddenConfig']) +localStorage.setItem('appClientId',window.SITE_CONFIG['appClientId']) +localStorage.setItem('appClientScope',window.SITE_CONFIG['appClientScope']) localStorage.setItem('browserTitle',window.SITE_CONFIG['browserTitle']) +localStorage.setItem('menuHiddenConfig',window.SITE_CONFIG['menuHiddenConfig']) + +// localStorage.setItem('isAutoLogin',window.SITE_CONFIG['isAutoLogin']) +// localStorage.setItem('userNameOrEmailAddress',window.SITE_CONFIG['userNameOrEmailAddress']) +// localStorage.setItem('client_secret',window.SITE_CONFIG['client_secret']) // 获取浏览器语言 const language_brow = (navigator.language || navigator.browserLanguage) diff --git a/Code/Fe/src/layout/components/Navbar.vue b/Code/Fe/src/layout/components/Navbar.vue index 8545743..51236ad 100644 --- a/Code/Fe/src/layout/components/Navbar.vue +++ b/Code/Fe/src/layout/components/Navbar.vue @@ -16,7 +16,7 @@ - @@ -81,9 +81,9 @@ export default { }, async logout() { await this.$store.dispatch("user/logout") - // this.$router.push(`/login?redirect=${this.$route.fullPath}`); + this.$router.push(`/login?redirect=${this.$route.fullPath}`); // this.$router.push(`/login?redirect=${this.$route.fullPath}&isAutoLogin=false`) - this.$router.push(`/login?isAutoLogin=false`) + // this.$router.push(`/login?isAutoLogin=false`) }, handleClick() { diff --git a/Code/Fe/src/permission.js b/Code/Fe/src/permission.js index 0c45d22..b7295c5 100644 --- a/Code/Fe/src/permission.js +++ b/Code/Fe/src/permission.js @@ -3,23 +3,25 @@ import store from './store' import { Message } from 'element-ui' import NProgress from 'nprogress' // progress bar import 'nprogress/nprogress.css' // progress bar style -import { getToken } from '@/utils/auth' // get token from cookie +import { getToken,removeToken } from '@/utils/auth' // get token from cookie import getPageTitle from '@/utils/get-page-title' NProgress.configure({ showSpinner: false }) // NProgress Configuration -const whiteList = ['/login', '/auth-redirect', '/testForm'] // no redirect whitelist +const whiteList = ['/login'] // no redirect whitelist +const noUserMsg = '获取用户信息失败,请重新登录 !' // 跳转登录页 const pageToLogin = (to, from, next) => { - if (whiteList.indexOf(to.path) !== -1) { + if (whiteList.indexOf(to.path) >= 0 ) { // in the free login whitelist, go directly next() NProgress.done() } else { // other pages that do not have permission to access are redirected to the login page. + removeToken() next(`/login?redirect=${to.path}`) NProgress.done() } @@ -27,6 +29,28 @@ const pageToLogin = (to, from, next) => { // 首次进入页面加载数据处理 const toPageInit = async (to, from, next) => { + + // 获取用户信息 + let _username = localStorage.getItem("isLoginTokenName")//登录成功且token通过后的登录名 + if(_username && _username != null && (!store.getters.currentUserInfo || store.getters.currentUserInfo.length <= 0)){ + await store.dispatch('user/getUserInfo',_username) + .then(()=>{ + toNextHandle(to, from, next) + }) + .catch(()=>{ + // todo:接口恢复后更改 + // toNextHandle(to, from, next) + Message.error(noUserMsg) + pageToLogin(to, from, next) + }) + return + } + + toNextHandle(to, from, next) +} + +// 跳转处理 +const toNextHandle = async (to, from, next) => { let isFresh = false // 获取表头转义 @@ -45,23 +69,6 @@ const toPageInit = async (to, from, next) => { await store.dispatch('definition/getDefinitionConfig') } - // 获取用户信息 - let _username = to.query.loginName || localStorage.getItem("isLoginName") || localStorage.getItem("userNameOrEmailAddress") - if(!store.getters.currentUserInfo || store.getters.currentUserInfo.length <= 0){ - await store.dispatch('user/getUserInfo',_username) - .then(()=>{ - toNextHandle(to, from, next,isFresh) - }) - .catch(()=>{ - toNextHandle(to, from, next,isFresh) - }) - }else{ - toNextHandle(to, from, next,isFresh) - } -} - -// 跳转处理 -const toNextHandle = (to, from, next,isFresh) => { if(isFresh){ next({...to,replace:true}) }else{ @@ -79,12 +86,7 @@ router.beforeEach(async (to, from, next) => { const hasToken = getToken() // 判断是否自动登录 - let isAutoLogin = JSON.parse(localStorage.getItem('isAutoLogin')) - // 如果路径中有isAutoLogin参数则优先,否则读取配置文件中的isAutoLogin参数 - let _url_isAutoLogin = to.query.isAutoLogin - if( _url_isAutoLogin== 'false' || _url_isAutoLogin == 'true'){ - isAutoLogin = JSON.parse(_url_isAutoLogin) - } + let isAutoLogin = JSON.parse(localStorage.getItem('isConfigLogin')) || to.query.loginName if(hasToken){ if (to.path === '/login') { @@ -104,16 +106,16 @@ router.beforeEach(async (to, from, next) => { pageToLogin(to, from, next) } else { if(isAutoLogin){ - console.log('没有token,不是登录页,是自动登录,自动登录是否成功都将继续toPageInit') - let _username = to.query.loginName || localStorage.getItem("isLoginName") || localStorage.getItem("userNameOrEmailAddress") - let _password = to.query.loginPass || localStorage.getItem("client_secret") - // todo-fast:password确定 - await store.dispatch('user/login', {password:_password,username:_username}) + let _username = localStorage.getItem("isConfigLogin") && localStorage.getItem("isConfigLogin") != 'false' ? localStorage.getItem("configLoginName") : to.query.loginName + await store.dispatch('user/loginOnlyName', {username:_username}) .then(()=>{ toPageInit(to, from, next) }) .catch(()=>{ - toPageInit(to, from, next) + // todo:接口恢复后更改 + // toNextHandle(to, from, next) + Message.error(noUserMsg) + pageToLogin(to, from, next) }) }else{ console.log('没有token,不是登录页,不是自动登录,pageToLogin') diff --git a/Code/Fe/src/permission0830.js b/Code/Fe/src/permission0830.js new file mode 100644 index 0000000..0c45d22 --- /dev/null +++ b/Code/Fe/src/permission0830.js @@ -0,0 +1,139 @@ +import router from './router' +import store from './store' +import { Message } from 'element-ui' +import NProgress from 'nprogress' // progress bar +import 'nprogress/nprogress.css' // progress bar style +import { getToken } from '@/utils/auth' // get token from cookie +import getPageTitle from '@/utils/get-page-title' + +NProgress.configure({ + showSpinner: false +}) // NProgress Configuration + +const whiteList = ['/login', '/auth-redirect', '/testForm'] // no redirect whitelist + +// 跳转登录页 +const pageToLogin = (to, from, next) => { + if (whiteList.indexOf(to.path) !== -1) { + // in the free login whitelist, go directly + next() + NProgress.done() + } else { + // other pages that do not have permission to access are redirected to the login page. + next(`/login?redirect=${to.path}`) + NProgress.done() + } +} + +// 首次进入页面加载数据处理 +const toPageInit = async (to, from, next) => { + let isFresh = false + + // 获取表头转义 + if(!store.getters.columZHList){ + await store.dispatch('definition/getColumZHList') + } + + // 获取菜单数据 + if(!store.getters.permission_routes || store.getters.permission_routes.length <= 0){ + isFresh = true + await store.dispatch('permission/getApiColumnsNames') + } + + // 获取枚举数据 + if(!store.getters.enumList || store.getters.enumList.length <= 0){ + await store.dispatch('definition/getDefinitionConfig') + } + + // 获取用户信息 + let _username = to.query.loginName || localStorage.getItem("isLoginName") || localStorage.getItem("userNameOrEmailAddress") + if(!store.getters.currentUserInfo || store.getters.currentUserInfo.length <= 0){ + await store.dispatch('user/getUserInfo',_username) + .then(()=>{ + toNextHandle(to, from, next,isFresh) + }) + .catch(()=>{ + toNextHandle(to, from, next,isFresh) + }) + }else{ + toNextHandle(to, from, next,isFresh) + } +} + +// 跳转处理 +const toNextHandle = (to, from, next,isFresh) => { + if(isFresh){ + next({...to,replace:true}) + }else{ + next() + } + NProgress.done() +} + +router.beforeEach(async (to, from, next) => { + + // start progress bar + NProgress.start() + // set page title + document.title = getPageTitle() + + const hasToken = getToken() + // 判断是否自动登录 + let isAutoLogin = JSON.parse(localStorage.getItem('isAutoLogin')) + // 如果路径中有isAutoLogin参数则优先,否则读取配置文件中的isAutoLogin参数 + let _url_isAutoLogin = to.query.isAutoLogin + if( _url_isAutoLogin== 'false' || _url_isAutoLogin == 'true'){ + isAutoLogin = JSON.parse(_url_isAutoLogin) + } + + if(hasToken){ + if (to.path === '/login') { + console.log('有token,是登录页,将跳转至/') + // if is logged in, redirect to the home page + next({ + path: '/' + }) + NProgress.done() // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939 + } else { + console.log('有token,不是登录页,toPageInit') + await toPageInit(to, from, next) + } + }else{ + if (to.path === '/login') { + console.log('没有token,是登录页,pageToLogin') + pageToLogin(to, from, next) + } else { + if(isAutoLogin){ + console.log('没有token,不是登录页,是自动登录,自动登录是否成功都将继续toPageInit') + let _username = to.query.loginName || localStorage.getItem("isLoginName") || localStorage.getItem("userNameOrEmailAddress") + let _password = to.query.loginPass || localStorage.getItem("client_secret") + // todo-fast:password确定 + await store.dispatch('user/login', {password:_password,username:_username}) + .then(()=>{ + toPageInit(to, from, next) + }) + .catch(()=>{ + toPageInit(to, from, next) + }) + }else{ + console.log('没有token,不是登录页,不是自动登录,pageToLogin') + pageToLogin(to, from, next) + } + } + } +}) + +router.afterEach(() => { + // element-ui 使用 Tooltip 提示时候,更换页面,提示依旧存在偶现bug处理。 + const mytooltipList = document.querySelectorAll('.el-tooltip__popper') // 获取页面所有tooltip的dom集合 + setTimeout(() => { + mytooltipList.forEach((value) => { + value.style.display = 'none' + if(value.parentElement){ + value.parentElement.removeChild(value) + } + }) + }, 1000) + // finish progress bar + NProgress.done() +}) \ No newline at end of file diff --git a/Code/Fe/src/store/modules/definition.js b/Code/Fe/src/store/modules/definition.js index 74365e6..c231438 100644 --- a/Code/Fe/src/store/modules/definition.js +++ b/Code/Fe/src/store/modules/definition.js @@ -52,8 +52,9 @@ export function initDtoTypesAndEnums(res,typeName,apiName) { if(d.type.indexOf('Enums') >= 0){ d.apiBaseType = 'enums' d.isEnums = true - // -1 是去掉最后的'?'(todo:是否每个Enums类型都有?) - let enums_type = d.type.substring(0,d.type.length - 1) + // 有?的话去掉? + let _lastLength = d.type.lastIndexOf('?') >= 0 ? 1 : 0 + let enums_type = d.type.substring(0,d.type.length - _lastLength) // 通过type包含Enums的全字段-'?'匹配res.types中的值 let enums_list = res.types[enums_type] if(enums_list){ @@ -62,6 +63,15 @@ export function initDtoTypesAndEnums(res,typeName,apiName) { d.enums_list.push({value:e,label:enums_list.enumNames[key]}) }) } + }else if(d.typeSimple.indexOf('boolean') >= 0){ + d.apiBaseType = 'boolean' + d.enums_list = [{ + value: true, + label: '是' + },{ + value: false, + label: '否' + }] }else{ if(d.typeSimple == 'number' || d.typeSimple == 'number?'){ d.apiBaseType='number' @@ -147,13 +157,18 @@ const actions = { }) }, // 获取表头转义 - getColumZHList({ commit }) { - return new Promise(resolve => { - getInterfaceBoard().then(res=>{ - let _zh = res.resources[localStorage.getItem('columnsApiNamesZh')].texts; + getColumZHList({ commit },errCallback) { + return new Promise((resolve,reject) => { + getInterfaceBoard() + .then(res=>{ + let _zh = res.resources[localStorage.getItem('appClientScope')].texts; commit('SET_COLUMZH_LIST', _zh) resolve(res) }) + .catch(err=>{ + if(errCallback)errCallback() + reject(err) + }) }) } } @@ -163,5 +178,4 @@ export default { state, mutations, actions -} - \ No newline at end of file +} \ No newline at end of file diff --git a/Code/Fe/src/store/modules/permission.js b/Code/Fe/src/store/modules/permission.js index 6fafc46..b555874 100644 --- a/Code/Fe/src/store/modules/permission.js +++ b/Code/Fe/src/store/modules/permission.js @@ -72,9 +72,6 @@ const mutations = { state.routes = constantRoutes.concat(routes) router.addRoutes(routes) }, - CLEAR_ROUTES: (state) => { - state.routes = constantRoutes.concat([]) - }, SET_TABLESNAME: (state, data) => { state.tablesName = data } @@ -164,9 +161,6 @@ export function initTreeMenusHandle(tree, list,first) { return _res } const actions = { - clearRouters({commit}){ - commit('CLEAR_ROUTES') - }, getApiColumnsNames({ commit }, userId) { @@ -184,7 +178,7 @@ const actions = { for(let item in _allConfig){ let point_number = item.split('.').length - 1 // 只选择配置项中的数据 - if(point_number == 1 && item.substring(0,item.indexOf('.')) == localStorage.getItem('columnsApiNamesZh')){ + if(point_number == 1 && item.substring(0,item.indexOf('.')) == localStorage.getItem('appClientScope')){ _menuList.push(item.substring(item.indexOf('.') + 1,item.length)) } } diff --git a/Code/Fe/src/store/modules/user copy.js b/Code/Fe/src/store/modules/user copy.js new file mode 100644 index 0000000..b29dde2 --- /dev/null +++ b/Code/Fe/src/store/modules/user copy.js @@ -0,0 +1,168 @@ +import { + token, + logout, + getUsersByUserName +} from '@/api/wms-auth' +import { + getToken, + setToken, + removeToken, +} from '@/utils/auth' +import router, { + resetRouter +} from '@/router' +import qs from 'qs' +import store from '@/store' + +const state = { + token: getToken(), + introduction: '', + roles: [], + userInfo:null +} + +const mutations = { + SET_TOKEN: (state, token) => { + state.token = token + }, + SET_INTRODUCTION: (state, introduction) => { + state.introduction = introduction + }, + // 设置权限(v-permission) + SET_ROLES: (state, roles) => { + let _roles = [ + 'IncomingDataHistory.filter', + 'IncomingData.export', + 'MesProductL7PartsNote.filter', + 'MesProductL7PartsNote.export' + ] + state.roles = _roles + }, + SET_USERINFO: (state, data) => { + state.userInfo = data + } +} + +const actions = { + // user login + login({ + commit, + dispatch + }, userInfo) { + const { + password, + username, + company, + warehouseCode + } = userInfo + let loginData = { + userNameOrEmailAddress: username, + password: password, + rememberMe: true + } + let parseData = JSON.parse(JSON.stringify(userInfo)) + delete parseData.warehouseCode + delete parseData.company + parseData.client_secret = window.SITE_CONFIG['client_secret'] + let tokenData = qs.stringify(parseData) + return new Promise((resolve, reject) => { + // login(loginData).then(response => { + let params = qs.stringify({ + password: password, + username: username, + client_id:'Z_App', + grant_type:'password', + scopes:'Z' + }); + token(params).then(response => { + const { + access_token, + token_type + } = response + if (access_token == null) { + reject() + } else { + commit('SET_TOKEN', access_token) + setToken(token_type + ' ' + access_token) + store.dispatch('user/getUserInfo',username).then(()=>{ + resolve() + }).catch(()=>{ + reject() + }) + } + }).catch(error => { + reject(error) + }) + // }).catch(error => { + // reject(error) + // }) + }) + }, + + // user logout + logout({ + commit, + dispatch + }) { + return new Promise((resolve, reject) => { + // logout().then(() => { + commit('SET_TOKEN', null) + commit('SET_USERINFO', null) + removeToken() + store.dispatch('permission/clearRouters') + // resetRouter() + // reset visited views and cached views + // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485 + dispatch('tagsView/delAllViews', null, { + root: true + }) + resolve() + // 防止路由叠加 + // location.reload() + // }).catch(error => { + // reject(error) + // }) + }) + }, + + // remove token + resetToken({ + commit + }) { + return new Promise(resolve => { + commit('SET_TOKEN', '') + commit('SET_ROLES', []) + removeToken() + resolve() + }) + }, + + // get userInfo + getUserInfo({ + commit + },username) { + return new Promise((resolve, reject) => { + getUsersByUserName(username).then(res=>{ + if(res && JSON.stringify(res).length > 0){ + localStorage.setItem('isLoginName',username) + // commit('SET_ROLES', res) + commit('SET_USERINFO', res) + resolve(res) + }else{ + reject('获取用户信息失败,请重试') + } + }) + .catch(err => { + reject(err) + console.log('获取用户信息失败,请重试') + }) + }) + }, +} + +export default { + namespaced: true, + state, + mutations, + actions +} diff --git a/Code/Fe/src/store/modules/user.js b/Code/Fe/src/store/modules/user.js index b29dde2..183b6a5 100644 --- a/Code/Fe/src/store/modules/user.js +++ b/Code/Fe/src/store/modules/user.js @@ -43,59 +43,73 @@ const mutations = { } } +// 登录(token)成功后处理 +const loginSuccess = (res,username,resolve,reject,commit) => { + commit('SET_TOKEN', res.access_token) + setToken(res.token_type + ' ' + res.access_token) + localStorage.setItem('isLoginTokenName',username) + + store.dispatch('user/getUserInfo',username).then(()=>{ + resolve() + }).catch(()=>{ + reject() + }) +} + const actions = { - // user login + // 登录,需要密码 login({ commit, - dispatch }, userInfo) { const { password, username, - company, - warehouseCode } = userInfo - let loginData = { - userNameOrEmailAddress: username, - password: password, - rememberMe: true - } - let parseData = JSON.parse(JSON.stringify(userInfo)) - delete parseData.warehouseCode - delete parseData.company - parseData.client_secret = window.SITE_CONFIG['client_secret'] - let tokenData = qs.stringify(parseData) return new Promise((resolve, reject) => { - // login(loginData).then(response => { let params = qs.stringify({ password: password, username: username, - client_id:'Z_App', - grant_type:'password', - scopes:'Z' + client_id:localStorage.getItem('appClientId'), + scopes:localStorage.getItem('appClientScope'), + grant_type:'password' }); token(params).then(response => { - const { - access_token, - token_type - } = response - if (access_token == null) { + if (response.access_token == null) { reject() } else { - commit('SET_TOKEN', access_token) - setToken(token_type + ' ' + access_token) - store.dispatch('user/getUserInfo',username).then(()=>{ - resolve() - }).catch(()=>{ - reject() - }) + loginSuccess(response,username,resolve,reject,commit) + } + }).catch(error => { + reject(error) + }) + }) + }, + + // 自动登录,不需要密码 todo:更改接口,去掉password + loginOnlyName({ + commit, + }, userInfo) { + const { + password, + username, + } = userInfo + return new Promise((resolve, reject) => { + let params = qs.stringify({ + password: '1q2w3E*', + username: username, + client_id:localStorage.getItem('appClientId'), + scopes:localStorage.getItem('appClientScope'), + grant_type:'password' + }); + token(params).then(response => { + if (response.access_token == null) { + reject() + } else { + loginSuccess(response,username,resolve,reject,commit) } }).catch(error => { reject(error) }) - // }).catch(error => { - // reject(error) - // }) }) }, @@ -105,12 +119,11 @@ const actions = { dispatch }) { return new Promise((resolve, reject) => { - // logout().then(() => { - commit('SET_TOKEN', null) - commit('SET_USERINFO', null) + logout().then(() => { + commit('SET_TOKEN', '') + commit('SET_ROLES', []) removeToken() - store.dispatch('permission/clearRouters') - // resetRouter() + resetRouter() // reset visited views and cached views // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485 dispatch('tagsView/delAllViews', null, { @@ -118,10 +131,10 @@ const actions = { }) resolve() // 防止路由叠加 - // location.reload() - // }).catch(error => { - // reject(error) - // }) + location.reload() + }).catch(error => { + reject(error) + }) }) }, @@ -132,6 +145,7 @@ const actions = { return new Promise(resolve => { commit('SET_TOKEN', '') commit('SET_ROLES', []) + localStorage.setItem('isLoginTokenName',null) removeToken() resolve() }) @@ -144,7 +158,6 @@ const actions = { return new Promise((resolve, reject) => { getUsersByUserName(username).then(res=>{ if(res && JSON.stringify(res).length > 0){ - localStorage.setItem('isLoginName',username) // commit('SET_ROLES', res) commit('SET_USERINFO', res) resolve(res) diff --git a/Code/Fe/src/utils/auth.js b/Code/Fe/src/utils/auth.js index 45b74fa..94ccbff 100644 --- a/Code/Fe/src/utils/auth.js +++ b/Code/Fe/src/utils/auth.js @@ -2,8 +2,6 @@ import Cookies from 'js-cookie' import store from '@/store' const TokenKey = 'Admin-Token' -const CompanyKey = 'Admin-Company' -const WarehouseCodeKey = 'Admin-WarehouseCode' export function getToken() { return Cookies.get(TokenKey) @@ -19,5 +17,6 @@ export function removeToken() { // fast-new export function getLoginName() { - return (store.getters.currentUserInfo && store.getters.currentUserInfo.name) ? store.getters.currentUserInfo.name : localStorage.getItem('isLoginName') -} \ No newline at end of file + let _name = (store.getters.currentUserInfo && store.getters.currentUserInfo.name) ? store.getters.currentUserInfo.name : localStorage.getItem('isLoginTokenName') + return (!_name || _name == 'null') ? null : _name +} diff --git a/Code/Fe/src/views/login/index.vue b/Code/Fe/src/views/login/index.vue index 4dd1cb2..dbd4b97 100644 --- a/Code/Fe/src/views/login/index.vue +++ b/Code/Fe/src/views/login/index.vue @@ -166,7 +166,9 @@ export default { this.$store.dispatch('user/login', this.loginForm) .then(() => { this.$router.push({ path: '/'}) - this.loading = false + setTimeout(()=>{ + this.loading = false + }) }) .catch((error) => { this.$message.error('用户名或密码错误!')