登录权限

master
许宏杰 9 months ago
parent df0c9cda9f
commit c05116eafc

@ -1,6 +1,6 @@
<template> <template>
<div class="search-container"> <div class="search-container">
<div class="option-rows"> <div class="option-rows" v-show="show_shequ_xiaoqu">
<el-select <el-select
@change="changeSelect($event, 'xiaoquList')" @change="changeSelect($event, 'xiaoquList')"
v-model="queryParams.shequId" v-model="queryParams.shequId"
@ -32,6 +32,7 @@
</div> </div>
<div class="option-rows"> <div class="option-rows">
<el-select <el-select
v-show="show_net || show_shequ_xiaoqu"
v-model="queryParams.parentid" v-model="queryParams.parentid"
placeholder="选择网格" placeholder="选择网格"
@change="changeSelect($event, 'yuanList')" @change="changeSelect($event, 'yuanList')"
@ -203,6 +204,7 @@ import { treeselect } from "@/api/system/dept"; //部门
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import ColorCell from "@/components/ColorCell"; import ColorCell from "@/components/ColorCell";
import { exportSearch } from "@/api/home/index.js"; // import { exportSearch } from "@/api/home/index.js"; //
import { listHouse } from "@/api/taicangpop/house"; //
export default { export default {
dicts: ["b_color_type"], dicts: ["b_color_type"],
components: { ColorCell }, components: { ColorCell },
@ -211,8 +213,9 @@ export default {
}, },
data() { data() {
return { return {
show_shequ_xiaoqu: false,
show_net: false,
loading: true, loading: true,
currentIndex: 0, currentIndex: 0,
credentialnoType: 0, credentialnoType: 0,
tabList: [ tabList: [
@ -278,8 +281,12 @@ export default {
}; };
}, },
mounted() { 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(); this.getDeptList();
}, },
methods: { methods: {
@ -301,7 +308,19 @@ export default {
list.map((item) => { list.map((item) => {
this.queryParams[item.value] = undefined; 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 角色权限处理 * v-hasRole 角色权限处理
* Copyright (c) 2019 ruoyi * Copyright (c) 2019 ruoyi
*/ */
import store from '@/store' import store from "@/store";
export default { export default {
inserted(el, binding, vnode) { inserted(el, binding, vnode) {
const { value } = binding const { value } = binding;
const super_admin = "admin"; 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) { if (value && value instanceof Array && value.length > 0) {
const roleFlag = value const roleFlag = value;
const hasRole = roles.some(role => { const hasRole = roles.some((role) => {
return super_admin === role || roleFlag.includes(role) return super_admin === role || roleFlag.includes(role);
}) });
if (!hasRole) { if (!hasRole) {
el.parentNode && el.parentNode.removeChild(el) el.parentNode && el.parentNode.removeChild(el);
} }
} else { } else {
throw new Error(`请设置角色权限标签值"`) throw new Error(`请设置角色权限标签值"`);
} }
} },
} };

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

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

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

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

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

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

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

@ -3,7 +3,26 @@
</template> </template>
<script> <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> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

Loading…
Cancel
Save