登录成功后支持切换部门角色,前端需先开启switchMode

dev
smallchill 4 years ago
parent 421f359dc8
commit 1405823f81
  1. 5
      src/api/user.js
  2. 1
      src/lang/en.js
  3. 1
      src/lang/zh.js
  4. 75
      src/page/index/top/index.vue
  5. 9
      src/store/modules/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,

@ -88,6 +88,7 @@ export default {
info: 'info',
logOut: 'logout',
userinfo: 'userinfo',
switchDept : 'switch dept',
dashboard: 'dashboard',
lock: 'lock',
bug: 'none bug',

@ -87,6 +87,7 @@ export default {
navbar: {
logOut: '退出登录',
userinfo: '个人信息',
switchDept : '部门切换',
dashboard: '首页',
lock: '锁屏',
bug: '没有错误日志',

@ -88,11 +88,20 @@
<el-dropdown-item>
<router-link to="/info/index">{{$t('navbar.userinfo')}}</router-link>
</el-dropdown-item>
<el-dropdown-item v-if="this.website.switchMode" @click.native="switchDept"
>{{$t('navbar.switchDept')}}
</el-dropdown-item>
<el-dropdown-item @click.native="logout"
divided>{{$t('navbar.logOut')}}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-dialog title="用户信息选择"
append-to-body
:visible.sync="userBox"
width="350px">
<avue-form ref="form" :option="userOption" v-model="userForm" @submit="submitSwitch"/>
</el-dialog>
</div>
</div>
</template>
@ -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"),

@ -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);

Loading…
Cancel
Save