Files
sgxt_web/src/store/modules/user.js

248 lines
6.7 KiB
JavaScript
Raw Normal View History

2025-04-12 14:54:02 +08:00
import {
login,
getUserInfo,
getKaptcha,
refreshToken,
loginOut
} from "@/api/sys";
import {
unifiedLogin
} from "@/api/user-manage";
import Base64 from "base-64";
import {
setItem,
getItem,
removeAllItem
} from "@/utils/storage";
import {
TOKEN
} from "@/constant";
import router, {
resetRouter
} from "@/router";
import {
setTimeStamp
} from "@/utils/auth";
import {
TAGS_VIEW
} from "@/constant/index.js";
export default {
namespaced: true,
state: () => ({
token: getItem(TOKEN) || "", // 先从localStorage里面取
userInfo: {},
deptList: [],
deptId: "",
menuList: [],
isReady: 0,
userName: getItem("USERNAME") || "",
keepLiiveRoute: [], //需要缓存的路由
activeId:'',//警组点击的唯一标识
}),
mutations: {
setToken(state, token) {
state.token = token;
setItem(TOKEN, token);
},
setActiveId(state, activeId) {
state.activeId = activeId;
},
setUserName(state, userName) {
state.userName = userName;
},
setDeptList(state, deptList) {
state.deptList = deptList;
},
setIsReady(state, deptList) {
state.isReady++;
},
setMenuList(state, menuList) {
state.menuList = menuList;
},
setUserInfo(state, userInfo) {
state.userInfo = userInfo;
},
//保存当前deptId
setDeptId(state, deptId) {
state.deptId = deptId;
setItem("deptId", deptId);
},
//保存路由
setKeepLiiveRoute(state, val) {
// state.keepLiiveRoute.push(val);
},
//删除缓存路由
deleteKeepLiiveRoute(state, val) {
// state.keepLiiveRoute = state.keepLiiveRoute.filter((item) => {
// return item != val;
// });
},
},
actions: {
/*
*登录请求动作
*/
login(ctx, userInfo) {
const {
userName,
password,
kaptcha
} = userInfo;
return new Promise((resolve, reject) => {
login({
userName,
password: Base64.encode(password),
kaptcha
})
.then((data) => {
if (data.deptList.length === 1) {
this.commit("user/setToken", data.jwtToken);
this.commit("user/setDeptId", data.deptList);
this.commit("user/setUserName", data.userName);
setItem('isOatuh', 0)
setItem("USERNAME", data.userName);
2025-07-08 10:26:48 +08:00
setItem("roleList", data.sysRole ? data.sysRole : []);
2025-04-12 14:54:02 +08:00
setItem("SFRH", data.sfrh);
setItem("USERID", data.userId);
setItem("PermissionsInfo", data.permissionsInfo);
this.commit("user/setMenuList", data.menuList);
setItem("menusPermission", data.menuCodeSet);
setItem("idEntityCard", data.idEntityCard);
this.commit("user/setUserInfo", {
token: data.jwtToken,
permission: {
buttonPermission: ["removeTest", "viewTest"],
menus: data.menuCodeSet
},
menuList: data.menuList,
deptList: data.deptList
});
}
// 保存登录时间
setTimeStamp();
resolve(data);
})
.catch((err) => {
reject(err);
});
});
},
/*
*单点登录
*/
oatuhLogin(ctx, userInfo) {
const {
token,
systemId,
} = userInfo;
return new Promise((resolve, reject) => {
unifiedLogin({
token,
systemId,
})
.then((data) => {
if (data.deptList.length === 1) {
this.commit("user/setToken", data.jwtToken);
this.commit("user/setDeptId", data.deptList);
this.commit("user/setUserName", data.userName);
setItem("USERNAME", data.userName);
setItem("SFRH", data.sfrh);
setItem("USERID", data.userId);
setItem("PermissionsInfo", data.permissionsInfo);
this.commit("user/setMenuList", data.menuList);
setItem("menusPermission", data.menuCodeSet);
setItem('isOatuh', 1)
setItem("idEntityCard", data.idEntityCard);
this.commit("user/setUserInfo", {
token: data.jwtToken,
permission: {
buttonPermission: ["removeTest", "viewTest"],
menus: data.menuCodeSet
},
menuList: data.menuList,
deptList: data.deptList
});
}
// 保存登录时间
setTimeStamp();
resolve(data);
})
.catch((err) => {
reject(err);
});
});
},
refreshToken(ctx, parmas) {
return new Promise((resolve, reject) => {
refreshToken({
deptId: parmas.deptId,
authorization: parmas.jwtToken
})
.then((data) => {
this.commit("user/setToken", "");
this.commit("user/setToken", data.jwtToken);
this.commit("user/setDeptList", data.deptList);
this.commit("user/setUserName", data.userName);
this.commit("user/setMenuList", data.menuList);
this.commit("user/setUserInfo", {
token: data.jwtToken,
permission: {
buttonPermission: ["removeTest", "viewTest"],
menus: data.menuCodeSet
},
menuList: data.menuList,
deptList: data.deptList
});
setItem("menusPermission", data.menuCodeSet);
// 保存登录时间
setTimeStamp();
return resolve(data);
})
.catch((err) => {
reject(err);
});
});
},
/*
* 获取图形验证码
*/
async getKaptcha(ctx) {
const res = await getKaptcha();
return res;
},
/*
* 获取用户信息
*/
async getUserInfo(ctx) {
const res = await getUserInfo();
this.commit("user/setUserInfo", res);
return res;
},
/*
* 退出登录
*/
async logout(ctx) {
const res = await loginOut();
if (res) {
resetRouter();
this.commit("user/setToken", "");
this.commit("user/setUserName", "admin");
this.commit("user/setUserInfo", {});
this.commit("permission/resetrouteReady", 0);
const isOatuh = getItem('isOatuh')
this.commit("permission/deleteRouter");
removeAllItem();
// 待补充 清理权限相关的配置
if (isOatuh) {
window.location.href = `http://80.149.27.78:8001/login`;
} else {
router.push("/login");
}
}
}
}
};