2025-09-28 17:58:45 +08:00

204 lines
5.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// import { login, logout, getInfo } from '@/api/user'
import {loginUserAPI} from "@/api/login";
import {getToken, setToken, removeToken} from "@/utils/auth";
import {Message} from "element-ui";
import router, {resetRouter} from "@/router";
import store from "@/store";
import {myBalanceAPI} from "@/api/finance/customerRechargeManagement";
import {testData} from "@/views/homePage/components/topBox/testData";
const state = {
token: getToken(),
name: "",
avatar: "",
introduction: "",
//用户名称
user: "",
//权限列表
auths: [],
// 当前状态码
requestCode: 200,
//客户余额
mybalance: '',
// 新增用户类型admin/user
userType: ''
};
const mutations = {
SET_TOKEN: (state, token) => {
state.token = token;
},
SET_INTRODUCTION: (state, introduction) => {
state.introduction = introduction;
},
SET_NAME: (state, name) => {
state.name = name;
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar;
},
SET_AUTHS: (state, auths) => {
state.auths = auths;
sessionStorage.setItem("auths", JSON.stringify(state.auths));
},
SET_USER: (state, user) => {
state.user = user;
sessionStorage.setItem("user", state.user);
},
SET_REQUESTSTATE: (state, code) => {
state.requestCode = code;
},
SETMYBANLANCE(state, mybalance) {
state.mybalance = mybalance
},
// 新增:设置用户类型
SET_USER_TYPE: (state, userType) => {
state.userType = userType;
sessionStorage.setItem("userType", userType);
}
};
const actions = {
//客户获取余额
async getCustmoersMoney({commit}) {
let result = await myBalanceAPI()
if (result.status) {
commit('SETMYBANLANCE', result.data)
sessionStorage.setItem('mybalance', result.data)
}
},
// user login
async login({commit}, userInfo) {
const {username, password, codeid, vcode} = userInfo;
return new Promise(async (resolve, reject) => {
loginUserAPI(userInfo)
.then(async (response) => {
console.log("response:", response)
if (response.status) {
if (response.roles == "None") {
Message({
message: "请联系管理员给您配置角色哦~",
type: 'error',
})
} else {
const {data, admin} = response;
commit("SET_USER", username);
// 新增:设置用户类型
const userType = admin == 1 ? 'admin' : 'user';
commit("SET_USER_TYPE", userType);
console.log("登录用户类型:", userType);
data ? commit("SET_AUTHS", data) : commit("SET_AUTHS", []);
const accessRoutes = await store.dispatch(
"permission/generateRoutes",
{
user: username,
auths: data,
admin: admin
}
)
resetRouter();
router.addRoutes(accessRoutes);
resolve(response);
}
} else {
reject(response);
}
})
.catch((error) => {
console.log(error)
reject(error);
});
});
},
// get user info
getInfo({commit, state}) {
return new Promise((resolve, reject) => {
// getInfo(state.token).then(response => {
// const { data } = response
// if (!data) {
// reject('Verification failed, please Login again.')
// }
// const { roles, name, avatar, introduction } = data
// // roles must be a non-empty array
// if (!roles || roles.length <= 0) {
// reject('getInfo: roles must be a non-null array!')
// }
// commit('SET_ROLES', roles)
// commit('SET_NAME', name)
// commit('SET_AVATAR', avatar)
// commit('SET_INTRODUCTION', introduction)
// }).catch(error => {
// reject(error)
// })
});
},
// user logout
logout({commit, state, dispatch}) {
return new Promise((resolve, reject) => {
logout(state.token)
.then(() => {
commit("SET_TOKEN", "");
commit("SET_ROLES", []);
commit("SET_USER_TYPE", ""); // 新增:清除用户类型
removeToken();
resetRouter();
// reset visited views and cached views
// to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485
dispatch("tagsView/delAllViews", null, {root: true});
resolve();
})
.catch((error) => {
reject(error);
});
});
},
// remove token
resetToken({commit}) {
return new Promise((resolve) => {
commit("SET_TOKEN", "");
commit("SET_ROLES", []);
commit("SET_USER_TYPE", ""); // 新增:清除用户类型
removeToken();
resolve();
});
},
// dynamically modify permissions
async changeRoles({commit, dispatch}, role) {
const token = role + "-token";
commit("SET_TOKEN", token);
setToken(token);
const {roles} = await dispatch("getInfo");
resetRouter();
// generate accessible routes map based on roles
const accessRoutes = await dispatch("permission/generateRoutes", roles, {
root: true,
});
// dynamically add accessible routes
router.addRoutes(accessRoutes);
// reset visited views and cached views
dispatch("tagsView/delAllViews", null, {root: true});
},
};
export default {
namespaced: true,
state,
mutations,
actions,
};