分角色登录
continuous-integration/drone/push Build is passing Details

uat_us
wangxiaoshuang 2024-12-23 17:23:51 +08:00
parent a17359a56e
commit eeac5b76c4
5 changed files with 195 additions and 34 deletions

View File

@ -193,3 +193,19 @@ export function getPublicKey() {
method: 'get', method: 'get',
}) })
} }
// 登陆获取角色
export function getUserLoginRoleList(data) {
return request({
url: `/User/getUserLoginRoleList`,
method: 'post',
data,
})
}
// 登陆角色id获取token
export function loginSelectUserRole(params) {
return request({
url: `/User/loginSelectUserRole`,
method: 'get',
params,
})
}

View File

@ -0,0 +1,83 @@
<template>
<el-dialog
v-if="visible"
:visible.sync="visible"
v-dialogDrag
width="540px"
:close-on-click-modal="false"
append-to-body
:title="$t('toggleRole:tip:title')"
center
:show-close="false"
@close="cancel"
>
<el-radio-group v-model="form.UserTypeId" class="roles" v-if="hasRole">
<el-radio
v-for="item in roles"
:key="item.UserTypeId"
:label="item.UserTypeId"
:disabled="item.isUserRoleDisabled"
style="margin-bottom: 10px"
>
{{ item.UserTypeShortName }}
</el-radio>
</el-radio-group>
<div v-else>{{ $t('toggleRole:tip:noRole') }}</div>
<div slot="footer">
<!-- 保存 -->
<el-button type="primary" size="small" @click="save" :loading="loading">
{{ $t('common:button:confirm') }}
</el-button>
</div>
</el-dialog>
</template>
<script>
export default {
name: 'toggleRole',
props: {
visible: {
type: Boolean,
default: true,
},
},
data() {
return {
form: {
UserTypeId: null,
},
loading: false,
}
},
computed: {
roles() {
return this.$store.state.user.roles
},
hasRole() {
return this.roles && this.roles.length > 0
},
},
methods: {
cancel() {
this.$emit('update:visible', false)
},
async save() {
try {
if (!this.form.UserTypeId)
return this.$message.warning(this.$t('toggleRole:ruleMessage:select'))
this.$emit('save', this.form.UserTypeId)
} catch (err) {
console.log(err)
}
},
},
}
</script>
<style lang="scss" scoped>
.roles {
width: 100%;
display: flex;
align-content: center;
justify-content: center;
flex-wrap: wrap;
}
</style>

View File

@ -1,5 +1,5 @@
import { getToken, setToken, removeToken, setName, removeName } from '@/utils/auth' import { getToken, setToken, removeToken, setName, removeName } from '@/utils/auth'
import { login, loginOut, getUserMenuTree, getUserPermissions } from '@/api/user' import { login, loginOut, getUserMenuTree, getUserPermissions, getUserLoginRoleList, loginSelectUserRole } from '@/api/user'
import { resetRouter } from '@/router' import { resetRouter } from '@/router'
import md5 from 'js-md5' import md5 from 'js-md5'
@ -16,13 +16,17 @@ const getDefaultState = () => {
TotalNeedSignSystemDocCount: eval(process.env.VUE_APP_WORD_FOR_PERMISSION) ? null : 0, TotalNeedSignSystemDocCount: eval(process.env.VUE_APP_WORD_FOR_PERMISSION) ? null : 0,
TotalNeedSignTrialDocCount: eval(process.env.VUE_APP_WORD_FOR_PERMISSION) ? null : 0, TotalNeedSignTrialDocCount: eval(process.env.VUE_APP_WORD_FOR_PERMISSION) ? null : 0,
TrialStatusStr: null, TrialStatusStr: null,
isTestUser: false isTestUser: false,
roles: []
} }
} }
const state = getDefaultState() const state = getDefaultState()
const mutations = { const mutations = {
SET_ROLES: (state, roles) => {
state.roles = roles
},
RESET_STATE: (state) => { RESET_STATE: (state) => {
Object.assign(state, getDefaultState()) Object.assign(state, getDefaultState())
}, },
@ -78,6 +82,9 @@ const mutations = {
} }
const actions = { const actions = {
setRoles({ commit }, roles) {
commit('SET_ROLES', roles)
},
changeUserName({ commit }, userName) { changeUserName({ commit }, userName) {
commit('SET_USERNAME', userName) commit('SET_USERNAME', userName)
}, },
@ -91,7 +98,7 @@ const actions = {
if (UserId) { if (UserId) {
data.UserId = UserId; data.UserId = UserId;
} }
login(data).then(async response => { getUserLoginRoleList(data).then(async response => {
if (response.IsSuccess) { if (response.IsSuccess) {
zzSessionStorage.removeItem('lastWorkbench') zzSessionStorage.removeItem('lastWorkbench')
zzSessionStorage.setItem('my_username', username.trim()) zzSessionStorage.setItem('my_username', username.trim())
@ -99,6 +106,7 @@ const actions = {
zzSessionStorage.setItem('my_EMail', response.Result.BasicInfo.EMail) zzSessionStorage.setItem('my_EMail', response.Result.BasicInfo.EMail)
localStorage.setItem('CompanyInfo', JSON.stringify(response.Result.CompanyInfo)) localStorage.setItem('CompanyInfo', JSON.stringify(response.Result.CompanyInfo))
const data = response.Result const data = response.Result
commit('SET_ROLES', data.BasicInfo.AccountList)
if (data.BasicInfo.IsFirstAdd || data.BasicInfo.LoginState === 1) { if (data.BasicInfo.IsFirstAdd || data.BasicInfo.LoginState === 1) {
try { try {
zzSessionStorage.setItem('userId', data.BasicInfo.Id) zzSessionStorage.setItem('userId', data.BasicInfo.Id)
@ -127,6 +135,39 @@ const actions = {
zzSessionStorage.setItem('userTypeShortName', user.userTypeShortName) zzSessionStorage.setItem('userTypeShortName', user.userTypeShortName)
zzSessionStorage.setItem('userId', user.id) zzSessionStorage.setItem('userId', user.id)
zzSessionStorage.setItem('userTypeEnumInt', user.userTypeEnumInt) zzSessionStorage.setItem('userTypeEnumInt', user.userTypeEnumInt)
// var permissions = await getUserPermissions()
// var menuTree = await getUserMenuTree()
// commit('SET_TREE', menuTree.Result)
// commit('SET_PERMISSIONS', permissions.Result)
// zzSessionStorage.setItem('newTree', JSON.stringify(menuTree.Result))
// zzSessionStorage.setItem('permissions', JSON.stringify(permissions.Result))
} catch (e) {
console.log(e)
}
resolve(response.Result)
}
} else {
reject(response.ErrorMessage)
}
}).catch(() => {
reject()
})
})
},
loginByRole({ commit }, userInfo) {
const { UserTypeId } = userInfo
let params = {
UserTypeId
}
return new Promise((resolve, reject) => {
loginSelectUserRole(params).then(async response => {
if (response.IsSuccess) {
const data = response.Result
try {
commit('SET_TOKEN', data)
setToken(data)
var permissions = await getUserPermissions() var permissions = await getUserPermissions()
var menuTree = await getUserMenuTree() var menuTree = await getUserMenuTree()
commit('SET_TREE', menuTree.Result) commit('SET_TREE', menuTree.Result)
@ -137,7 +178,7 @@ const actions = {
console.log(e) console.log(e)
} }
resolve(response.Result) resolve(response.Result)
}
} else { } else {
reject(response.ErrorMessage) reject(response.ErrorMessage)
} }

View File

@ -243,6 +243,7 @@
</div> </div>
</el-dialog> </el-dialog>
<browserTip ref="browserTip" /> <browserTip ref="browserTip" />
<toggleRole :visible="toggleRoleVisible" @save="loginByRole" />
</div> </div>
</template> </template>
@ -253,9 +254,10 @@ import TopLang from './topLang'
import Vcode from 'vue-puzzle-vcode' import Vcode from 'vue-puzzle-vcode'
import browserTip from '@/views/dictionary/template/browser/tip.vue' import browserTip from '@/views/dictionary/template/browser/tip.vue'
import Img1 from '@/assets/pic-2.png' import Img1 from '@/assets/pic-2.png'
import toggleRole from '@/components/toggleRole'
export default { export default {
name: 'Login', name: 'Login',
components: { TopLang, Vcode, browserTip }, components: { TopLang, Vcode, browserTip, toggleRole },
data() { data() {
return { return {
NODE_ENV: process.env.NODE_ENV, // process.env.NODE_ENV NODE_ENV: process.env.NODE_ENV, // process.env.NODE_ENV
@ -298,6 +300,7 @@ export default {
isShow: false, isShow: false,
showCode: false, showCode: false,
Img1, Img1,
toggleRoleVisible: false,
} }
}, },
computed: { computed: {
@ -416,6 +419,18 @@ export default {
// this.$alert(this.$t('login:message:login4'), this.$t('common:title:warning')) // this.$alert(this.$t('login:message:login4'), this.$t('common:title:warning'))
this.$message.warning(this.$t('login:message:login4')) this.$message.warning(this.$t('login:message:login4'))
} }
return (this.toggleRoleVisible = true)
})
.catch(() => {
this.showCode = true
this.loading = false
})
},
loginByRole(UserTypeId) {
this.$store
.dispatch('user/loginByRole', { UserTypeId })
.then((res) => {
if (res) {
this.$store.dispatch('permission/generateRoutes').then((res) => { this.$store.dispatch('permission/generateRoutes').then((res) => {
this.loading = false this.loading = false
if (res && res.length > 0) { if (res && res.length > 0) {
@ -430,7 +445,12 @@ export default {
return return
} }
if ( if (
this.hasPermi(['role:air', 'role:rpm', 'role:rcrc', 'role:rir']) this.hasPermi([
'role:air',
'role:rpm',
'role:rcrc',
'role:rir',
])
) { ) {
this.$router.replace({ path: '/trials/trials-list' }) this.$router.replace({ path: '/trials/trials-list' })
} else { } else {
@ -441,6 +461,7 @@ export default {
this.$message.warning(this.$t('login:message:login2')) this.$message.warning(this.$t('login:message:login2'))
} }
}) })
}
}) })
.catch(() => { .catch(() => {
this.showCode = true this.showCode = true

View File

@ -225,7 +225,7 @@ export default {
// //
async savePermission(){ async savePermission(){
try{ try{
let validate = this.$refs.permissionForm.validate(); let validate =await this.$refs.permissionForm.validate();
if(!validate) return false; if(!validate) return false;
this.assignLoadStatus = true; this.assignLoadStatus = true;
let data = Object.assign({ Id: this.trialId },this.permission) let data = Object.assign({ Id: this.trialId },this.permission)