import Vue from "vue"; import App from "./App.vue"; import router from "./router"; import store from "./store"; //import "./utils/rem"; //设置body文字大小 Vue.config.productionTip = false; import "../src/assets/css/theme/index.css"; //l绿色主题 import ElementUI from "element-ui"; //样式 import "./assets/css/reset.css"; //默认样式 import "./assets/css/global.less"; //全局定义颜色 import "./assets/css/element.less"; //全局定义颜色 import "./assets/fonts/iconfont.css"; //按钮 //引入Echarts; import * as echarts from "echarts"; Vue.prototype.$echarts = echarts; //引入日期// 注册全局 moment import moment from "moment"; Vue.prototype.$moment = moment; import { message } from "@/utils/resetMessage"; // import "element-ui/lib/theme-chalk/index.css"; Vue.use(ElementUI, { size: "small", }); //图片懒加载 //引入插件 import VueLazyload from "vue-lazyload"; //注册插件 Vue.use(VueLazyload, { error: require("./assets/img/nodatapic2.jpg"), listenEvents: [ 'scroll', 'wheel', 'mousewheel', 'resize', 'animationend', 'transitionend', 'touchmove' ] }); /* 引入公共js*/ import common from "@/utils/common/common.js"; Vue.prototype.common = common; //挂载弹出信息 Vue.prototype.$message = message; //防抖 Vue.directive("noMoreClick", { inserted(el, binding) { el.addEventListener("click", (e) => { el.classList.add("is-disabled"); el.disabled = true; setTimeout(() => { el.disabled = false; el.classList.remove("is-disabled"); }, 2000); //我这里设置的是2000毫秒也就是2秒 }); }, }); //使用钩子函数对路由进行权限跳转 router.beforeEach((to, from, next) => { document.title = `${to.meta.title} | 视频监控可视化平台`; // 获取用户的角色和token const role = localStorage.getItem("role"); const token = localStorage.getItem("token"); // 如果没有token,并且不是登录页面,重定向到登录页面 if (!token && to.path !== "/login") { return next({ path: "/login" }); } // 如果用户是超级管理员(role == 0),则允许访问任何页面 if (role === "0") { return next(); } // 如果用户从登录页面跳转到其他页面,并且已经拥有token,则允许通过 if (from.path === "/login" && token) { return next(); } // 获取权限列表(这里假设permissions是从后端获取的权限数组) const permissions = JSON.parse(localStorage.getItem("menuPermission")) || []; // 检查用户是否有访问当前路由的权限 const hasPermission = permissions.some( (permission) => permission.key === to.path ); // 如果路由需要权限,但用户没有权限,则重定向到无权限页面 if (to.meta.requiresAuth && !hasPermission) { return next({ path: "/permission" }); } // 如果路由在免登录白名单中,则直接通过 if (to.meta.noAuth) { return next(); } // 如果以上条件都不满足,正常通过 next(); }); new Vue({ router, store, render: (h) => h(App), }).$mount("#app");