/*
|
* @Author: GuLiMmo 2820890765@qq.com
|
* @Date: 2024-08-27 14:48:42
|
* @LastEditors: GuLiMmo 2820890765@qq.com
|
* @LastEditTime: 2024-08-27 16:25:34
|
* @FilePath: /drone-web/src/store/user.ts
|
* @Description:
|
* Copyright (c) 2024 by GuLiMmo, All Rights Reserved.
|
*/
|
/*
|
* @Author: GuLiMmo 2820890765@qq.com
|
* @Date: 2024-01-16 13:37:21
|
* @LastEditors: GuLiMmo 2820890765@qq.com
|
* @LastEditTime: 2024-08-23 14:56:41
|
* @FilePath: /newBigScreen/src/store/modules/user.js
|
* @Description:
|
*
|
* Copyright (c) 2024 by ${git_name_email}, All Rights Reserved.
|
*/
|
import { ELocalStorageKey } from '@/types/enums'
|
import { getButtons, loginByUsername, getUserInfo, logout, refreshToken } from '@/api/user'
|
import { setStore, getStore } from '@/utils/store'
|
import { validatenull } from '@/utils/validate'
|
import md5 from 'js-md5'
|
import { showNotify } from 'vant';
|
import { setToken, setRefreshToken, removeToken, removeRefreshToken } from '@/utils/auth'
|
|
const user = {
|
state: {
|
// userInfo: {},
|
tenantId: getStore({ name: 'tenantId' }) || '',
|
userInfo: getStore({ name: 'userInfo' }) || [],
|
permission: getStore({ name: 'permission' }) || {},
|
authButtons: getStore({ name: 'authButtons' }) || [],
|
roles: [],
|
menuId: {},
|
menu: getStore({ name: 'menu' }) || [],
|
menuAll: getStore({ name: 'menuAll' }) || [],
|
loginFlag: getStore({ name: 'loginFlag' }),
|
token: getStore({ name: 'token' }) || '',
|
refreshToken: getStore({ name: 'refreshToken' }) || '',
|
roleMenu: getStore({ name: 'menuList' }) || [],
|
},
|
actions: {
|
// 根据用户名登录
|
LoginByUsername ({ commit }: any, userInfo: { tenantId: string; deptId: string; roleId: string; username: string; password: any; type: string; key: string; code: string; grant_type: string }) {
|
return new Promise((resolve, reject) => {
|
loginByUsername(
|
userInfo.tenantId,
|
userInfo.deptId,
|
userInfo.roleId,
|
userInfo.username,
|
md5(userInfo.password),
|
userInfo.type,
|
userInfo.key,
|
userInfo.code,
|
userInfo.grant_type,
|
)
|
.then((res) => {
|
const data = res.data
|
if (data.error_description) {
|
showNotify({ type: 'danger', message: data.error_description })
|
} else {
|
commit('SET_LOGIN_FLAG', true)
|
commit('SET_TOKEN', data.access_token)
|
commit('SET_REFRESH_TOKEN', data.refresh_token)
|
commit('SET_TENANT_ID', data.tenant_id)
|
commit('SET_USER_INFO', data)
|
// localStorage.setItem(ELocalStorageKey.Token, data.access_token)
|
// localStorage.setItem(ELocalStorageKey.Username, data.user_name)
|
// this.dispatch('GetButtons')
|
// commit('SET_SELECTED_WORKSPACE', userInfo);
|
// commit('DEL_ALL_TAG');
|
// commit('CLEAR_LOCK');
|
resolve(true)
|
}
|
})
|
.catch((error) => {
|
reject(error)
|
})
|
})
|
},
|
// 获取用户信息
|
GetUserInfo ({ commit }: any) {
|
return new Promise((resolve, reject) => {
|
getUserInfo()
|
.then((res) => {
|
const data = res.data.data
|
commit('SET_ROLES', data.roles)
|
resolve(data)
|
})
|
.catch((err) => {
|
reject(err)
|
})
|
})
|
},
|
// 获取当前角色按钮权限
|
GetButtons ({ commit }: any) {
|
return new Promise((resolve, reject) => {
|
getButtons()
|
.then((res) => {
|
const data = res.data.data
|
commit('SET_BUTTONS', data)
|
resolve(data)
|
})
|
.catch((err) => {
|
reject(err)
|
})
|
})
|
},
|
// 刷新token
|
refreshToken ({ state, commit }: any, userInfo: { deptId: string; roleId: string }) {
|
return new Promise((resolve, reject) => {
|
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_LOGIN_FLAG', true)
|
commit('SET_TOKEN', data.access_token)
|
commit('SET_REFRESH_TOKEN', data.refresh_token)
|
commit('SET_USER_INFO', data)
|
resolve('')
|
})
|
.catch((error) => {
|
reject(error)
|
})
|
})
|
},
|
// 登出
|
LogOut ({ commit }: any) {
|
return new Promise((resolve, reject) => {
|
logout()
|
.then(() => {
|
commit('SET_LOGIN_FLAG', false)
|
commit('SET_TOKEN', '')
|
commit('SET_MENU', [])
|
commit('SET_MENU_ALL_NULL', [])
|
commit('SET_ROLES', [])
|
commit('SET_TAG_LIST', [])
|
commit('DEL_ALL_TAG')
|
commit('CLEAR_LOCK')
|
removeToken()
|
removeRefreshToken()
|
resolve('')
|
})
|
.catch((error) => {
|
reject(error)
|
})
|
})
|
},
|
// 注销session
|
FedLogOut ({ commit }: any) {
|
return new Promise((resolve) => {
|
commit('SET_LOGIN_FLAG', false)
|
commit('SET_TOKEN', '')
|
commit('SET_MENU_ALL_NULL', [])
|
commit('SET_MENU', [])
|
commit('SET_ROLES', [])
|
commit('SET_TAG_LIST', [])
|
commit('DEL_ALL_TAG')
|
commit('CLEAR_LOCK')
|
removeToken()
|
removeRefreshToken()
|
resolve('')
|
window.localStorage.clear()
|
})
|
},
|
},
|
mutations: {
|
SET_ROLE_MENU (state: { roleMenu: any; menuList: any }, menuList: any) {
|
state.roleMenu = menuList
|
setStore({ name: 'roleMenu', content: state.menuList })
|
},
|
SET_LOGIN_FLAG: (state: { loginFlag: any }, loginFlag: any) => {
|
state.loginFlag = loginFlag
|
setStore({ name: 'loginFlag', content: state.loginFlag })
|
},
|
SET_TOKEN: (state: { token: string }, token: string) => {
|
setToken(token)
|
state.token = token
|
setStore({ name: 'token', content: state.token })
|
window.localStorage.setItem(ELocalStorageKey.Token, token)
|
},
|
SET_LOCAL_STORAGE_USER_INFO (state: { userInfo: { [x: string]: string } }, userInfo: { [x: string]: string }) {
|
Object.keys(userInfo).forEach((key) => {
|
state.userInfo[key] = userInfo[key]
|
localStorage.setItem(key, userInfo[key])
|
})
|
},
|
CLEAR_LOCAL_STORAGE_USER_INFO (state: { userInfo: {} }) {
|
localStorage.clear()
|
state.userInfo = {}
|
},
|
SET_REFRESH_TOKEN: (state: { refreshToken: string }, refreshToken: string) => {
|
setRefreshToken(refreshToken)
|
state.refreshToken = refreshToken
|
setStore({ name: 'refreshToken', content: state.refreshToken })
|
},
|
SET_TENANT_ID: (state: { tenantId: string }, tenantId: string) => {
|
state.tenantId = tenantId
|
setStore({ name: 'tenantId', content: state.tenantId })
|
},
|
SET_USER_INFO: (state: { userInfo: {} }, userInfo: { account: string }) => {
|
// if (validatenull(userInfo.avatar)) {
|
// userInfo.avatar = '/img/bg/img-logo.png';
|
// }
|
state.userInfo = userInfo
|
setStore({ name: 'userInfo', content: state.userInfo })
|
window.localStorage.setItem('username', userInfo.account)
|
},
|
SET_ROLES: (state: { roles: any }, roles: any) => {
|
state.roles = roles
|
},
|
SET_PERMISSION: (state: { permission: { [x: string]: boolean } }, permission: any) => {
|
const result: any[] = []
|
|
function getCode (list: { children: any; code: string }[]) {
|
list.forEach((ele: { children: any; code: any }) => {
|
if (typeof ele === 'object') {
|
const chiildren = ele.children
|
const code = ele.code
|
if (chiildren) {
|
getCode(chiildren)
|
} else {
|
result.push(code)
|
}
|
}
|
})
|
}
|
|
getCode(permission)
|
state.permission = {}
|
result.forEach((ele) => {
|
state.permission[ele] = true
|
})
|
setStore({ name: 'permission', content: state.permission })
|
},
|
SET_BUTTONS (state: { authButtons: string[] }, buttons: any[]) {
|
const buttonGroup: string[] = []
|
buttons.forEach((button) => {
|
buttonGroup.push(button.code)
|
if (button?.children) {
|
button?.children.forEach((btnChild: { code: string }) => {
|
buttonGroup.push(btnChild.code)
|
})
|
}
|
})
|
state.authButtons = buttonGroup
|
setStore({ name: 'authButtons', content: buttonGroup })
|
},
|
},
|
}
|
|
export default user
|