2023-11-16 17:11:49 +08:00
|
|
|
import { defineStore } from 'pinia';
|
|
|
|
import {
|
|
|
|
login as userLogin,
|
|
|
|
logout as userLogout,
|
|
|
|
getUserInfo,
|
|
|
|
LoginData,
|
2024-01-17 07:46:08 +08:00
|
|
|
me,
|
2024-02-02 16:10:44 +08:00
|
|
|
queryUserList,
|
|
|
|
UserParams,
|
|
|
|
enabled,
|
|
|
|
remove,
|
|
|
|
create,
|
|
|
|
UserRecord,
|
|
|
|
update,
|
2024-02-19 10:36:33 +08:00
|
|
|
userDetail,
|
|
|
|
deptAudit
|
2023-11-16 17:11:49 +08:00
|
|
|
} from '@/api/user';
|
|
|
|
import { setToken, clearToken } from '@/utils/auth';
|
|
|
|
import { removeRouteListener } from '@/utils/route-listener';
|
|
|
|
import { UserState } from './types';
|
|
|
|
import useAppStore from '../app';
|
|
|
|
|
|
|
|
const useUserStore = defineStore('user', {
|
|
|
|
state: (): UserState => ({
|
|
|
|
username: undefined,
|
2024-01-17 07:46:08 +08:00
|
|
|
nickName: undefined,
|
2023-11-16 17:11:49 +08:00
|
|
|
avatar: undefined,
|
|
|
|
email: undefined,
|
|
|
|
phone: undefined,
|
2024-01-17 07:46:08 +08:00
|
|
|
address: undefined,
|
2023-11-16 17:11:49 +08:00
|
|
|
createAt: undefined,
|
|
|
|
remark: undefined,
|
|
|
|
id: undefined,
|
2023-11-24 17:10:28 +08:00
|
|
|
role: undefined,
|
|
|
|
roles: undefined,
|
|
|
|
permissions: [],
|
2024-02-19 10:36:33 +08:00
|
|
|
authorities: [],
|
2023-11-16 17:11:49 +08:00
|
|
|
}),
|
|
|
|
|
|
|
|
getters: {
|
|
|
|
userInfo(state: UserState): UserState {
|
|
|
|
return { ...state };
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
actions: {
|
|
|
|
// Set user's information
|
2024-02-19 10:36:33 +08:00
|
|
|
setInfo(partial: Partial<UserState>) {
|
2023-11-16 17:11:49 +08:00
|
|
|
this.$patch(partial);
|
|
|
|
},
|
|
|
|
|
|
|
|
// Reset user's information
|
|
|
|
resetInfo() {
|
|
|
|
this.$reset();
|
|
|
|
},
|
|
|
|
|
|
|
|
async info() {
|
|
|
|
const res = await getUserInfo();
|
2024-02-19 10:36:33 +08:00
|
|
|
console.log("we",res);
|
|
|
|
res.data.user.permissions = res.data.permissions
|
|
|
|
this.setInfo(res.data.user);
|
2023-11-16 17:11:49 +08:00
|
|
|
},
|
|
|
|
|
2024-01-17 07:46:08 +08:00
|
|
|
// Get user's crsf
|
|
|
|
async me() {
|
2024-02-02 16:10:44 +08:00
|
|
|
return me();
|
2024-01-17 07:46:08 +08:00
|
|
|
},
|
|
|
|
|
2023-11-16 17:11:49 +08:00
|
|
|
// Login
|
2024-02-02 16:10:44 +08:00
|
|
|
async login(loginForm: LoginData, token: string) {
|
2023-11-16 17:11:49 +08:00
|
|
|
try {
|
2024-01-17 07:46:08 +08:00
|
|
|
setToken(token);
|
2024-02-02 16:10:44 +08:00
|
|
|
const res = await userLogin(loginForm);
|
2023-11-16 17:11:49 +08:00
|
|
|
} catch (err) {
|
|
|
|
clearToken();
|
|
|
|
throw err;
|
|
|
|
}
|
|
|
|
},
|
2024-02-02 16:10:44 +08:00
|
|
|
|
|
|
|
// Get user's List
|
2024-02-19 10:36:33 +08:00
|
|
|
async getUserList(data: any) {
|
2024-02-02 16:10:44 +08:00
|
|
|
return queryUserList(data);
|
|
|
|
},
|
|
|
|
|
|
|
|
// Change user'status
|
|
|
|
async enabledUser(id: string) {
|
|
|
|
return enabled(id);
|
|
|
|
},
|
|
|
|
|
|
|
|
// Remove user
|
|
|
|
async removeUser(id: string) {
|
|
|
|
return remove(id);
|
|
|
|
},
|
|
|
|
|
|
|
|
// Register user
|
|
|
|
async createUser(data: UserRecord) {
|
|
|
|
return create(data);
|
|
|
|
},
|
|
|
|
|
|
|
|
// Update user
|
|
|
|
async updateUser(data: UserRecord) {
|
|
|
|
return update(data);
|
|
|
|
},
|
|
|
|
|
2024-02-19 10:36:33 +08:00
|
|
|
async getUserDetail(id: string){
|
|
|
|
return userDetail(id);
|
|
|
|
},
|
|
|
|
|
|
|
|
async getDeptAudit(deptId: string,roleId: string){
|
|
|
|
return deptAudit(deptId,roleId)
|
|
|
|
},
|
|
|
|
|
2023-11-16 17:11:49 +08:00
|
|
|
logoutCallBack() {
|
|
|
|
const appStore = useAppStore();
|
|
|
|
this.resetInfo();
|
|
|
|
clearToken();
|
|
|
|
removeRouteListener();
|
|
|
|
appStore.clearServerMenu();
|
|
|
|
},
|
|
|
|
// Logout
|
|
|
|
async logout() {
|
|
|
|
try {
|
|
|
|
await userLogout();
|
|
|
|
} finally {
|
|
|
|
this.logoutCallBack();
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
2023-11-24 17:10:28 +08:00
|
|
|
persist: true,
|
2023-11-16 17:11:49 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
export default useUserStore;
|