From 1405823f8143842e1e7d37ce4ac186dacbd4e63c Mon Sep 17 00:00:00 2001 From: smallchill Date: Sun, 19 Dec 2021 12:53:56 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E7=99=BB=E5=BD=95=E6=88=90?= =?UTF-8?q?=E5=8A=9F=E5=90=8E=E6=94=AF=E6=8C=81=E5=88=87=E6=8D=A2=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E8=A7=92=E8=89=B2=EF=BC=8C=E5=89=8D=E7=AB=AF=E9=9C=80?= =?UTF-8?q?=E5=85=88=E5=BC=80=E5=90=AFswitchMode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/user.js | 5 ++- src/lang/en.js | 1 + src/lang/zh.js | 1 + src/page/index/top/index.vue | 75 +++++++++++++++++++++++++++++++++++- src/store/modules/user.js | 9 +++-- 5 files changed, 85 insertions(+), 6 deletions(-) diff --git a/src/api/user.js b/src/api/user.js index 5472ce1..ae41c7c 100644 --- a/src/api/user.js +++ b/src/api/user.js @@ -37,12 +37,13 @@ export const loginBySocial = (tenantId, source, code, state) => request({ } }) -export const refreshToken = (refresh_token, tenantId, deptId) => request({ +export const refreshToken = (refresh_token, tenantId, deptId, roleId) => request({ url: '/api/blade-auth/oauth/token', method: 'post', headers: { 'Tenant-Id': tenantId, - 'Dept-Id': (website.switchMode ? deptId : '') + 'Dept-Id': (website.switchMode ? deptId : ''), + 'Role-Id': (website.switchMode ? roleId : '') }, params: { tenantId, diff --git a/src/lang/en.js b/src/lang/en.js index 00a65d0..4518861 100644 --- a/src/lang/en.js +++ b/src/lang/en.js @@ -88,6 +88,7 @@ export default { info: 'info', logOut: 'logout', userinfo: 'userinfo', + switchDept : 'switch dept', dashboard: 'dashboard', lock: 'lock', bug: 'none bug', diff --git a/src/lang/zh.js b/src/lang/zh.js index 56d4519..e95b7d7 100644 --- a/src/lang/zh.js +++ b/src/lang/zh.js @@ -87,6 +87,7 @@ export default { navbar: { logOut: '退出登录', userinfo: '个人信息', + switchDept : '部门切换', dashboard: '首页', lock: '锁屏', bug: '没有错误日志', diff --git a/src/page/index/top/index.vue b/src/page/index/top/index.vue index 7e480e1..c7253c6 100644 --- a/src/page/index/top/index.vue +++ b/src/page/index/top/index.vue @@ -88,11 +88,20 @@ {{$t('navbar.userinfo')}} + {{$t('navbar.switchDept')}} + {{$t('navbar.logOut')}} + + + @@ -122,7 +131,55 @@ }, name: "top", data() { - return {}; + return { + userBox: false, + userForm: { + deptId: '', + roleId: '' + }, + userOption: { + labelWidth: 70, + submitBtn: true, + emptyBtn: false, + submitText: '切换', + column: [ + { + label: '部门', + prop: 'deptId', + type: 'select', + props: { + label: 'deptName', + value: 'id' + }, + dicUrl: '/api/blade-system/dept/select', + span: 24, + display: false, + rules: [{ + required: true, + message: "请选择部门", + trigger: "blur" + }], + }, + { + label: '角色', + prop: 'roleId', + type: 'select', + props: { + label: 'roleName', + value: 'id' + }, + dicUrl: '/api/blade-system/role/select', + span: 24, + display: false, + rules: [{ + required: true, + message: "请选择角色", + trigger: "blur" + }], + }, + ] + } + }; }, filters: {}, created() { @@ -162,6 +219,22 @@ setScreen() { this.$store.commit("SET_FULLSCREN"); }, + switchDept() { + const userId = this.userInfo.user_id; + const deptColumn = this.findObject(this.userOption.column, "deptId"); + deptColumn.dicUrl = `/api/blade-system/dept/select?userId=${userId}`; + deptColumn.display = true; + const roleColumn = this.findObject(this.userOption.column, "roleId"); + roleColumn.dicUrl = `/api/blade-system/role/select?userId=${userId}`; + roleColumn.display = true; + this.userBox = true; + }, + submitSwitch (form, done) { + this.$store.dispatch("refreshToken", form).then(() => { + this.userBox = false; + }) + done(); + }, logout() { this.$confirm(this.$t("logoutTip"), this.$t("tip"), { confirmButtonText: this.$t("submitText"), diff --git a/src/store/modules/user.js b/src/store/modules/user.js index 670bfd7..6a7989c 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -115,10 +115,13 @@ const user = { }) }, //刷新token - refreshToken({state, commit}) { - window.console.log('handle refresh token') + refreshToken({state, commit}, userInfo) { + window.console.log('handle refresh token'); return new Promise((resolve, reject) => { - refreshToken(state.refreshToken, state.tenantId, state.userInfo.dept_id).then(res => { + refreshToken(state.refreshToken, state.tenantId, + !validatenull(userInfo) ? userInfo.deptId : state.userInfo.dept_id, + !validatenull(userInfo) ? userInfo.roleId : state.userInfo.role_id + ).then(res => { const data = res.data; commit('SET_TOKEN', data.access_token); commit('SET_REFRESH_TOKEN', data.refresh_token);