2025-07-16 14:27:17 +08:00

188 lines
4.9 KiB
JavaScript

// 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";
const state = {
token: getToken(),
name: "",
avatar: "",
introduction: "",
//用户名称
user: "",
//权限列表
auths: [],
// 当前状态码
requestCode: 200,
//客户余额
mybalance: ''
};
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
}
};
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);
data ? commit("SET_AUTHS", data) : commit("SET_AUTHS", []);
const accessRoutes = await store.dispatch(
"permission/generateRoutes",
{
user: username,
auths: data,
admin: admin
}
)
resetRouter();
console.log("挂载前的路由是:", accessRoutes)
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", []);
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", []);
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,
};