uptada
This commit is contained in:
parent
e00c77ae0f
commit
558eec6013
@ -67,6 +67,10 @@ export default {
|
||||
const hasResourceManagement = routes.some(route => route.path === '/resourceManagement');
|
||||
console.log("是否包含订单管理:", hasOrderManagement);
|
||||
console.log("是否包含资源管理:", hasResourceManagement);
|
||||
|
||||
// 检查用户类型和组织类型是否正确
|
||||
console.log("当前用户类型:", this.userType);
|
||||
console.log("当前组织类型:", this.orgType);
|
||||
console.log("=== Sidebar 调试结束 ===");
|
||||
|
||||
return routes;
|
||||
@ -90,6 +94,8 @@ export default {
|
||||
console.log("Sidebar mounted - 权限路由:", this.permissionRoutes);
|
||||
console.log("Sidebar mounted - 用户类型:", this.userType);
|
||||
console.log("Sidebar mounted - 组织类型:", this.orgType);
|
||||
console.log("sessionStorage userType:", sessionStorage.getItem('userType'));
|
||||
console.log("sessionStorage orgType:", sessionStorage.getItem('orgType'));
|
||||
},
|
||||
|
||||
watch: {
|
||||
|
||||
@ -22,7 +22,7 @@ let ploady={
|
||||
start_date:'',
|
||||
end_date:''
|
||||
}
|
||||
reqSaleMoneyList(ploady)
|
||||
// reqSaleMoneyList(ploady)
|
||||
// import {saveApprovalInfo} from "@/api/finance/approvalList";
|
||||
// saveApprovalInfo(JSON.stringify({
|
||||
// "flag":"update",
|
||||
@ -98,20 +98,73 @@ Vue.use(Element, {
|
||||
//设置跳转页面时给页面的body属性设置滚动条
|
||||
var onOverflow = ["/shoppingManagement", "/supplierManagement"];
|
||||
|
||||
router.afterEach((to, from, next) => {
|
||||
// 修复:在路由守卫中恢复用户状态和重新生成路由
|
||||
router.beforeEach(async (to, from, next) => {
|
||||
// 清空面包屑状态的代码
|
||||
// store.commit('tagsView/resetBreadcrumbState');
|
||||
|
||||
// 新增:如果已登录且有token,但Vuex状态丢失,从sessionStorage恢复
|
||||
if (store.getters.token && (!store.getters.user || !store.getters.userType)) {
|
||||
console.log("检测到状态丢失,从sessionStorage恢复用户状态");
|
||||
|
||||
const user = sessionStorage.getItem('user');
|
||||
const auths = sessionStorage.getItem('auths');
|
||||
const userType = sessionStorage.getItem('userType');
|
||||
const orgType = sessionStorage.getItem('orgType');
|
||||
|
||||
if (user) {
|
||||
store.commit('user/SET_USER', user);
|
||||
}
|
||||
if (auths) {
|
||||
store.commit('user/SET_AUTHS', JSON.parse(auths));
|
||||
}
|
||||
if (userType) {
|
||||
store.commit('user/SET_USER_TYPE', userType);
|
||||
}
|
||||
if (orgType) {
|
||||
store.commit('user/SET_ORG_TYPE', parseInt(orgType));
|
||||
}
|
||||
|
||||
// 重新生成路由
|
||||
try {
|
||||
const accessRoutes = await store.dispatch('permission/generateRoutes', {
|
||||
user: store.getters.user,
|
||||
auths: store.getters.auths,
|
||||
userType: store.getters.userType,
|
||||
orgType: store.getters.orgType
|
||||
});
|
||||
|
||||
// 重新添加路由
|
||||
router.addRoutes(accessRoutes);
|
||||
|
||||
// 重定向到当前路由以确保路由更新
|
||||
next({ ...to, replace: true });
|
||||
return;
|
||||
} catch (error) {
|
||||
console.error('重新生成路由失败:', error);
|
||||
}
|
||||
}
|
||||
|
||||
onOverflow.forEach(element => {
|
||||
if (to.path == element) {
|
||||
document.querySelector("body").setAttribute("style", "overflow: auto !important;")
|
||||
}
|
||||
});
|
||||
|
||||
next();
|
||||
});
|
||||
|
||||
window.addEventListener('beforeunload', function () {
|
||||
// 清空面包屑状态的代码
|
||||
store.commit('tagsView/resetBreadcrumbState');
|
||||
});
|
||||
|
||||
Object.keys(filters).forEach(key => {
|
||||
Vue.filter(key, filters[key])
|
||||
})
|
||||
|
||||
Vue.config.productionTip = false
|
||||
|
||||
|
||||
new Vue({
|
||||
el: '#app',
|
||||
router,
|
||||
|
||||
@ -8,11 +8,11 @@ const getters = {
|
||||
avatar: state => state.user.avatar,
|
||||
name: state => state.user.name,
|
||||
introduction: state => state.user.introduction,
|
||||
user: state => state.user.user,
|
||||
auths: state => state.user.auths,
|
||||
user: state => state.user.user || sessionStorage.getItem('user') || '',
|
||||
auths: state => state.user.auths || JSON.parse(sessionStorage.getItem('auths') || '[]'),
|
||||
requestCode: state => state.user.requestCode,
|
||||
permission_routes: state => state.permission.routes,
|
||||
userType: state => state.user.userType,
|
||||
orgType: state => state.user.orgType, // 新增:组织类型getter
|
||||
userType: state => state.user.userType || sessionStorage.getItem('userType') || '',
|
||||
orgType: state => state.user.orgType || parseInt(sessionStorage.getItem('orgType')) || 0,
|
||||
}
|
||||
export default getters
|
||||
|
||||
@ -46,12 +46,12 @@ function addUserRoutes(routes, userType) {
|
||||
|
||||
if (orderManagementRoute) {
|
||||
console.log("添加订单管理路由");
|
||||
userRoutes.push(orderManagementRoute);
|
||||
userRoutes.push(JSON.parse(JSON.stringify(orderManagementRoute))); // 深拷贝
|
||||
}
|
||||
|
||||
if (resourceManagementRoute) {
|
||||
console.log("添加资源管理路由");
|
||||
userRoutes.push(resourceManagementRoute);
|
||||
userRoutes.push(JSON.parse(JSON.stringify(resourceManagementRoute))); // 深拷贝
|
||||
}
|
||||
|
||||
return userRoutes;
|
||||
@ -113,15 +113,17 @@ const actions = {
|
||||
return new Promise((resolve) => {
|
||||
let accessedRoutes;
|
||||
|
||||
// 判断用户类型:org_type为2是客户,否则是管理员
|
||||
const userType = params.orgType == 2 ? 'user' : 'admin';
|
||||
console.log("用户类型:", userType, "orgType:", params.orgType);
|
||||
// 从参数或sessionStorage中获取用户类型和组织类型
|
||||
const userType = params.userType || sessionStorage.getItem('userType') || '';
|
||||
const orgType = params.orgType || parseInt(sessionStorage.getItem('orgType')) || 0;
|
||||
|
||||
if (params.user.includes("admin") && params.orgType != 2) {
|
||||
console.log("用户类型:", userType, "orgType:", orgType);
|
||||
|
||||
if (params.user && params.user.includes("admin") && orgType != 2) {
|
||||
// 管理员:只显示超级管理员菜单
|
||||
accessedRoutes = asyncRoutes.filter(item => item.path === '/superAdministrator');
|
||||
} else {
|
||||
const auths = JSON.parse(JSON.stringify(params.auths));
|
||||
const auths = params.auths ? JSON.parse(JSON.stringify(params.auths)) : [];
|
||||
console.log("ACTION generateRoutes - auths:", auths);
|
||||
|
||||
if (auths.length) {
|
||||
@ -144,7 +146,7 @@ const actions = {
|
||||
}
|
||||
|
||||
// 新增:为普通用户添加订单管理和资源管理路由
|
||||
if (userType === 'user') {
|
||||
if (userType === 'user' || orgType == 2) {
|
||||
console.log("为普通用户添加订单管理和资源管理路由");
|
||||
const userSpecificRoutes = addUserRoutes(asyncRoutes, userType);
|
||||
|
||||
|
||||
@ -7,23 +7,36 @@ import store from "@/store";
|
||||
import {myBalanceAPI} from "@/api/finance/customerRechargeManagement";
|
||||
import {testData} from "@/views/homePage/components/topBox/testData";
|
||||
|
||||
// 从sessionStorage恢复状态
|
||||
const getStoredState = () => {
|
||||
return {
|
||||
user: sessionStorage.getItem('user') || "",
|
||||
auths: JSON.parse(sessionStorage.getItem('auths')) || [],
|
||||
userType: sessionStorage.getItem('userType') || '',
|
||||
orgType: parseInt(sessionStorage.getItem('orgType')) || '',
|
||||
mybalance: sessionStorage.getItem('mybalance') || ''
|
||||
};
|
||||
};
|
||||
|
||||
const storedState = getStoredState();
|
||||
|
||||
const state = {
|
||||
token: getToken(),
|
||||
name: "",
|
||||
avatar: "",
|
||||
introduction: "",
|
||||
//用户名称
|
||||
user: "",
|
||||
user: storedState.user,
|
||||
//权限列表
|
||||
auths: [],
|
||||
auths: storedState.auths,
|
||||
// 当前状态码
|
||||
requestCode: 200,
|
||||
//客户余额
|
||||
mybalance: '',
|
||||
mybalance: storedState.mybalance,
|
||||
// 新增:用户类型(admin/user)
|
||||
userType: '',
|
||||
userType: storedState.userType,
|
||||
// 新增:组织类型
|
||||
orgType: ''
|
||||
orgType: storedState.orgType
|
||||
};
|
||||
|
||||
const mutations = {
|
||||
@ -41,17 +54,18 @@ const mutations = {
|
||||
},
|
||||
SET_AUTHS: (state, auths) => {
|
||||
state.auths = auths;
|
||||
sessionStorage.setItem("auths", JSON.stringify(state.auths));
|
||||
sessionStorage.setItem("auths", JSON.stringify(auths));
|
||||
},
|
||||
SET_USER: (state, user) => {
|
||||
state.user = user;
|
||||
sessionStorage.setItem("user", state.user);
|
||||
sessionStorage.setItem("user", user);
|
||||
},
|
||||
SET_REQUESTSTATE: (state, code) => {
|
||||
state.requestCode = code;
|
||||
},
|
||||
SETMYBANLANCE(state, mybalance) {
|
||||
state.mybalance = mybalance
|
||||
state.mybalance = mybalance;
|
||||
sessionStorage.setItem('mybalance', mybalance);
|
||||
},
|
||||
// 新增:设置用户类型
|
||||
SET_USER_TYPE: (state, userType) => {
|
||||
@ -61,7 +75,7 @@ const mutations = {
|
||||
// 新增:设置组织类型
|
||||
SET_ORG_TYPE: (state, orgType) => {
|
||||
state.orgType = orgType;
|
||||
sessionStorage.setItem("orgType", orgType);
|
||||
sessionStorage.setItem("orgType", orgType.toString());
|
||||
}
|
||||
};
|
||||
|
||||
@ -71,12 +85,10 @@ const actions = {
|
||||
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)
|
||||
@ -105,7 +117,8 @@ const actions = {
|
||||
{
|
||||
user: username,
|
||||
auths: data,
|
||||
orgType: org_type // 传递 orgType 而不是 admin
|
||||
userType: userType,
|
||||
orgType: org_type
|
||||
}
|
||||
)
|
||||
resetRouter();
|
||||
@ -126,47 +139,64 @@ const actions = {
|
||||
// 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)
|
||||
// })
|
||||
// 从sessionStorage恢复用户信息
|
||||
const user = sessionStorage.getItem('user');
|
||||
const auths = sessionStorage.getItem('auths');
|
||||
const userType = sessionStorage.getItem('userType');
|
||||
const orgType = sessionStorage.getItem('orgType');
|
||||
|
||||
if (user) {
|
||||
commit("SET_USER", user);
|
||||
}
|
||||
if (auths) {
|
||||
commit("SET_AUTHS", JSON.parse(auths));
|
||||
}
|
||||
if (userType) {
|
||||
commit("SET_USER_TYPE", userType);
|
||||
}
|
||||
if (orgType) {
|
||||
commit("SET_ORG_TYPE", parseInt(orgType));
|
||||
}
|
||||
|
||||
resolve({
|
||||
user: state.user,
|
||||
auths: state.auths,
|
||||
userType: state.userType,
|
||||
orgType: state.orgType
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
// user logout
|
||||
logout({commit, state, dispatch}) {
|
||||
return new Promise((resolve, reject) => {
|
||||
logout(state.token)
|
||||
.then(() => {
|
||||
// logout(state.token)
|
||||
// .then(() => {
|
||||
commit("SET_TOKEN", "");
|
||||
commit("SET_ROLES", []);
|
||||
commit("SET_USER_TYPE", ""); // 新增:清除用户类型
|
||||
commit("SET_ORG_TYPE", ""); // 新增:清除组织类型
|
||||
commit("SET_USER", "");
|
||||
commit("SET_AUTHS", []);
|
||||
removeToken();
|
||||
resetRouter();
|
||||
|
||||
// 清除sessionStorage
|
||||
sessionStorage.removeItem('user');
|
||||
sessionStorage.removeItem('auths');
|
||||
sessionStorage.removeItem('userType');
|
||||
sessionStorage.removeItem('orgType');
|
||||
sessionStorage.removeItem('mybalance');
|
||||
|
||||
// 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);
|
||||
});
|
||||
// })
|
||||
// .catch((error) => {
|
||||
// reject(error);
|
||||
// });
|
||||
});
|
||||
|
||||
},
|
||||
@ -178,7 +208,15 @@ const actions = {
|
||||
commit("SET_ROLES", []);
|
||||
commit("SET_USER_TYPE", ""); // 新增:清除用户类型
|
||||
commit("SET_ORG_TYPE", ""); // 新增:清除组织类型
|
||||
commit("SET_USER", "");
|
||||
commit("SET_AUTHS", []);
|
||||
removeToken();
|
||||
|
||||
// 清除sessionStorage
|
||||
sessionStorage.removeItem('user');
|
||||
sessionStorage.removeItem('auths');
|
||||
sessionStorage.removeItem('userType');
|
||||
sessionStorage.removeItem('orgType');
|
||||
resolve();
|
||||
});
|
||||
},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user