登录权限

master
许宏杰 2 months ago
parent df0c9cda9f
commit c05116eafc

@ -1,6 +1,6 @@
<template>
<div class="search-container">
<div class="option-rows">
<div class="option-rows" v-show="show_shequ_xiaoqu">
<el-select
@change="changeSelect($event, 'xiaoquList')"
v-model="queryParams.shequId"
@ -32,6 +32,7 @@
</div>
<div class="option-rows">
<el-select
v-show="show_net || show_shequ_xiaoqu"
v-model="queryParams.parentid"
placeholder="选择网格"
@change="changeSelect($event, 'yuanList')"
@ -203,6 +204,7 @@ import { treeselect } from "@/api/system/dept"; //部门
import { mapGetters } from "vuex";
import ColorCell from "@/components/ColorCell";
import { exportSearch } from "@/api/home/index.js"; //
import { listHouse } from "@/api/taicangpop/house"; //
export default {
dicts: ["b_color_type"],
components: { ColorCell },
@ -211,8 +213,9 @@ export default {
},
data() {
return {
show_shequ_xiaoqu: false,
show_net: false,
loading: true,
currentIndex: 0,
credentialnoType: 0,
tabList: [
@ -278,8 +281,12 @@ export default {
};
},
mounted() {
this.queryParams.shequId = this.queryParamsIndex.shequId;
this.show_shequ_xiaoqu = this.$auth.hasRoleOr(["admin", "leader"]); // -
this.show_net = this.$auth.authRoleNet("network"); //
console.log(this.show_shequ_xiaoqu, this.show_net);
this.queryParams.shequId = this.queryParamsIndex.shequId;
this.getDeptList();
},
methods: {
@ -301,7 +308,19 @@ export default {
list.map((item) => {
this.queryParams[item.value] = undefined;
});
this[key] = handleTreeId(e, this.deptList);
if (key == "houseList") {
// this.getHouse(e)
} else {
this[key] = handleTreeId(e, this.deptList);
}
},
/**
* 获取住户
*/
async getHouse() {
let result = await listHouse();
},
/**

@ -1,28 +1,28 @@
/**
/**
* v-hasRole 角色权限处理
* Copyright (c) 2019 ruoyi
*/
import store from '@/store'
import store from "@/store";
export default {
inserted(el, binding, vnode) {
const { value } = binding
const { value } = binding;
const super_admin = "admin";
const roles = store.getters && store.getters.roles
const roles = store.getters && store.getters.roles;
if (value && value instanceof Array && value.length > 0) {
const roleFlag = value
const roleFlag = value;
const hasRole = roles.some(role => {
return super_admin === role || roleFlag.includes(role)
})
const hasRole = roles.some((role) => {
return super_admin === role || roleFlag.includes(role);
});
if (!hasRole) {
el.parentNode && el.parentNode.removeChild(el)
el.parentNode && el.parentNode.removeChild(el);
}
} else {
throw new Error(`请设置角色权限标签值"`)
throw new Error(`请设置角色权限标签值"`);
}
}
}
},
};

@ -1,58 +1,61 @@
import router from './router'
import store from './store'
import { Message } from 'element-ui'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import { getToken } from '@/utils/auth'
import { isRelogin } from '@/utils/request'
import router from "./router";
import store from "./store";
import { Message } from "element-ui";
import NProgress from "nprogress";
import "nprogress/nprogress.css";
import { getToken } from "@/utils/auth";
import { isRelogin } from "@/utils/request";
NProgress.configure({ showSpinner: false })
NProgress.configure({ showSpinner: false });
const whiteList = ['/login', '/register']
const whiteList = ["/login", "/register"];
router.beforeEach((to, from, next) => {
NProgress.start()
NProgress.start();
if (getToken()) {
to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
to.meta.title && store.dispatch("settings/setTitle", to.meta.title);
/* has token*/
if (to.path === '/login') {
next({ path: '/' })
NProgress.done()
if (to.path === "/login") {
next({ path: "/" });
NProgress.done();
} else if (whiteList.indexOf(to.path) !== -1) {
next()
next();
} else {
if (store.getters.roles.length === 0) {
isRelogin.show = true
isRelogin.show = true;
// 判断当前用户是否已拉取完user_info信息
store.dispatch('GetInfo').then(() => {
isRelogin.show = false
store.dispatch('GenerateRoutes').then(accessRoutes => {
// 根据roles权限生成可访问的路由表
router.addRoutes(accessRoutes) // 动态添加可访问路由表
next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
})
}).catch(err => {
store.dispatch('LogOut').then(() => {
Message.error(err)
next({ path: '/' })
})
store
.dispatch("GetInfo")
.then(() => {
isRelogin.show = false;
store.dispatch("GenerateRoutes").then((accessRoutes) => {
// 根据roles权限生成可访问的路由表
router.addRoutes(accessRoutes); // 动态添加可访问路由表
next({ ...to, replace: true }); // hack方法 确保addRoutes已完成
});
})
.catch((err) => {
store.dispatch("LogOut").then(() => {
Message.error(err);
next({ path: "/" });
});
});
} else {
next()
next();
}
}
} else {
// 没有token
if (whiteList.indexOf(to.path) !== -1) {
// 在免登录白名单,直接进入
next()
next();
} else {
next(`/login?redirect=${encodeURIComponent(to.fullPath)}`) // 否则全部重定向到登录页
NProgress.done()
next(`/login?redirect=${encodeURIComponent(to.fullPath)}`); // 否则全部重定向到登录页
NProgress.done();
}
}
})
});
router.afterEach(() => {
NProgress.done()
})
NProgress.done();
});

@ -1,26 +1,37 @@
import store from '@/store'
import store from "@/store";
function authPermission(permission) {
const all_permission = "*:*:*";
const permissions = store.getters && store.getters.permissions
const permissions = store.getters && store.getters.permissions;
if (permission && permission.length > 0) {
return permissions.some(v => {
return all_permission === v || v === permission
})
return permissions.some((v) => {
return all_permission === v || v === permission;
});
} else {
return false
return false;
}
}
function authRole(role) {
const super_admin = "admin";
const roles = store.getters && store.getters.roles
const roles = store.getters && store.getters.roles;
if (role && role.length > 0) {
return roles.some(v => {
return super_admin === v || v === role
})
return roles.some((v) => {
return super_admin === v || v === role;
});
} else {
return false
return false;
}
}
function authRoleNet(role) {
const super_admin = "network";
const roles = store.getters && store.getters.roles;
if (role && role.length > 0) {
return roles.some((v) => {
return v.indexOf(super_admin) != -1 || v === role;
});
} else {
return false;
}
}
@ -31,30 +42,33 @@ export default {
},
// 验证用户是否含有指定权限,只需包含其中一个
hasPermiOr(permissions) {
return permissions.some(item => {
return authPermission(item)
})
return permissions.some((item) => {
return authPermission(item);
});
},
// 验证用户是否含有指定权限,必须全部拥有
hasPermiAnd(permissions) {
return permissions.every(item => {
return authPermission(item)
})
return permissions.every((item) => {
return authPermission(item);
});
},
// 验证用户是否具备某角色
hasRole(role) {
return authRole(role);
},
hasRoleNet(role) {
return authRoleNet(role);
},
// 验证用户是否含有指定角色,只需包含其中一个
hasRoleOr(roles) {
return roles.some(item => {
return authRole(item)
})
return roles.some((item) => {
return authRole(item);
});
},
// 验证用户是否含有指定角色,必须全部拥有
hasRoleAnd(roles) {
return roles.every(item => {
return authRole(item)
})
}
}
return roles.every((item) => {
return authRole(item);
});
},
};

@ -78,6 +78,7 @@ export const constantRoutes = [
component: () => import("@/views/xiaoqu"),
name: "xiaoqu",
meta: { title: "小区", icon: "dashboard", affix: true },
hidden: true,
},
{
path: "/user",

@ -52,7 +52,6 @@ export default {
methods: {
handleClick(type, index) {
if (this.currentIndex == index) return;
this.currentIndex = index;
this.getPie();
},

@ -61,6 +61,7 @@ export default {
height: 100%;
box-sizing: border-box;
padding-top: 110px;
cursor: pointer;
background: url("~@/assets/images/ui/panel_left.png");
background-size: 100% 100%;
.panel-container {

@ -53,6 +53,7 @@ export default {
height: 100%;
box-sizing: border-box;
padding-top: 110px;
cursor: pointer;
background: url("~@/assets/images/ui/panel_right.png");
background-size: 100% 100%;
.panel-container {

@ -81,7 +81,12 @@ export default {
xiaoquList: [],
};
},
mounted() {
created() {
if (this.$auth.hasRoleNet("network")) {
this.$router.replace("/xiaoqu");
return;
}
this.getCommunity();
this.$store.dispatch("GetYjtotal");
this.$store.dispatch("GetXiaoquInfo", this.dept.deptId);

@ -3,7 +3,26 @@
</template>
<script>
export default {};
export default {
data() {
return {};
},
// mounted() {
// if (this.$auth.authRoleNet("network")) {
// window.addEventListener("popstate", this.preventBack);
// //
// window.history.pushState(null, "", window.location.href);
// }
// },
// methods: {
// preventBack() {
// window.history.pushState(null, "", window.location.href);
// },
// },
// beforeDestroy() {
// window.removeEventListener("popstate", this.preventBack);
// },
};
</script>
<style lang="scss" scoped>

Loading…
Cancel
Save