// import Vue from 'vue' // import VueRouter from 'vue-router' // Vue.use(VueRouter) import ElementUI from 'element-ui' import './assets/element-variables.scss' // 全局修改默认配置,点击空白处不能关闭弹窗 ElementUI.Dialog.props.closeOnClickModal.default = false Vue.use(ElementUI) // import Vuex from 'vuex' // Vue.use(Vuex) // import echarts from 'echarts' // import 'element-ui/lib/theme-chalk/index.css' import App from './App' import store from './vuex/store' // import routes from './routes' import http from './http' import port from './port' import $ from 'jquery' import VDistPicker from 'v-distpicker' Vue.component('v-distpicker',VDistPicker) import './day.js' // 加载 dayjs 初始化配置 import Viewer from 'v-viewer' // 图片预览 import 'viewerjs/dist/viewer.css' // Vue.use(Viewer) Vue.use(Viewer, { defaultOptions: { zIndex: 9999, } }) Viewer.setDefaults({ Options: { 'inline': true, 'button': true, 'navbar': true, 'title': true, 'toolbar': true, 'tooltip': true, 'movable': true, 'zoomable': true, 'rotatable': true, 'scalable': true, 'transition': true, 'fullscreen': true, 'keyboard': true, 'url': 'data-source' } }) Vue.prototype.http = http Vue.prototype.port = port Vue.prototype.echarts = echarts import VueClipboard from 'vue-clipboard2' Vue.use(VueClipboard) // collapse 展开折叠 import CollapseTransition from 'element-ui/lib/transitions/collapse-transition'; Vue.component(CollapseTransition.name, CollapseTransition) import 'font-awesome/css/font-awesome.min.css' import './assets/iconfont/iconfont.css' import './assets/myfont/iconfont.css' // const router = new VueRouter({ // routes // }) import {fixedRouter, allRouters, simpleRouters } from './routes' import router from './routes' import NProgress from 'nprogress' import 'nprogress/nprogress.css' var addRouFlag = false; //角色权限对应关系 var userModules = [{role:0, modules:["工时报告","专业审核","部门审核","自动计时","费用报销","待办任务", "项目管理", "请假管理", "审批流设置"]}, {role:3, modules:["工时报告","工时成本统计","自定义数值统计","项目报表服务","费用报销","待办任务","项目管理","请假管理", "审批流设置"]}, {role:4, modules:["财务核算成本", "费用报销", "待办任务","组织架构","请假管理", "审批流设置"]}, {role:5, modules:["工时报告","自动计时","费用报销", "待办任务","项目管理","专业管理","请假管理", "审批流设置"]}, {role:6, modules:["工时报告","工时成本统计","自定义数值统计","财务核算成本","项目报表服务","费用报销","待办任务","项目管理","请假管理", "审批流设置"]},]; // var userModules = [{role:0, modules:["工时报告","专业审核","部门审核","自动计时","费用报销","待办任务", "项目管理", "请假管理","组织架构"]}, // {role:3, modules:["工时报告","工时成本统计","项目报表服务","费用报销","待办任务","项目管理","请假管理","组织架构"]}, // {role:4, modules:["财务核算成本", "费用报销", "待办任务","组织架构","请假管理"]}, // {role:5, modules:["工时报告","自动计时","费用报销", "待办任务","项目管理","专业管理","请假管理","组织架构"]}, // {role:6, modules:["工时报告","工时成本统计","财务核算成本","项目报表服务","费用报销","待办任务","项目管理",,"组织架构","请假管理"]},]; router.beforeEach((to, from, next) => { NProgress.start(); if (to.path == '/register') { next(); return; } if (to.path != '/daily') { sessionStorage.removeItem("from") } if (to.path == '/login') { sessionStorage.removeItem('user'); } let user = JSON.parse(sessionStorage.getItem('user')); if (!user && to.path != '/login') { next({ path: '/login' }) } else { if (!addRouFlag) { if(user != null) { addRouFlag = true; //如果是简易版,直接赋值 if (user.company.packageSimple == 1) { getRoutes = simpleRouters; global.antRouter = getRoutes; router.addRoutes(getRoutes); router.options.routes = getRoutes; router.push({ path: to.path }) } else { var getRoutes = null; var filterRouter = allRouters; if (user.company.packageExpense == 0) { filterRouter = filterRouter.filter(r=>{return r.name != '费用报销' && r.name != '项目报表服务'}); } if (user.company.packageCustomer == 0) { //没有客户管理功能的,需要去掉 filterRouter = filterRouter.filter(r=>{return r.name != '客户管理'}); } if (user.company.packageEngineering == 0) { //非工程类的,去掉专业管理 filterRouter = filterRouter.filter(r=>{return r.name != '工程专业管理' && r.name != '专业审核' && r.name != '部门审核'}); } if (user.company.packageProject == 0) { filterRouter = filterRouter.filter(r=>{return r.name != '待办任务' && r.name != '请假管理'}); } if (user.timeType.needDeptAudit == 0) { //没有开启导入日报审核,则不需要 filterRouter = filterRouter.filter(r=>{return r.name != '导入日报审核'}); } if (user.timeType.customDataActive == 0) { //没有开启自定义数值统计 filterRouter = filterRouter.filter(r=>{return r.name != '自定义数值统计'}); } else { var customMenu = filterRouter.filter(r=>{return r.name == '自定义数值统计'}); if (customMenu.length > 0) { console.log(customMenu,'111'); customMenu[0].children[0].name = user.timeType.customDataName + '统计'; } } // if (user.role == 1 || user.role == 2) { // getRoutes = filterRouter; // } else { // var modules = userModules.filter(u=>u.role == user.role)[0].modules; // if (user.leader) { // modules.push(2, "项目报告审核"); // } else if (user.hasAuditDept) { // modules.push(2, "项目报告审核"); // } // if (user.role == 6 && user.timeType.needDeptAudit == 1) { // //公司领导可以进行导入日报的审核 // modules.push(2, "导入日报审核"); // } // getRoutes = filterRouter.filter(r=>{ // return modules.filter(m=>m == r.name).length > 0; // }); // } // 更据当前登录的权限来显示模块 console.log("user",user) console.log(filterRouter) var arr = [] // for(var p in filterRouter){ // if(filterRouter[p].name == "出差管理"){ // arr.push(filterRouter[p]) // } // } for(var i in user.moduleList) { for(var s in filterRouter) { if(user.moduleList[i].children.length > 0) { if(user.moduleList[i].name == filterRouter[s].name) { console.log(user.moduleList[i].name) var arrList = user.moduleList[i].children var ddList = filterRouter[s].children var list = [] for(var j in arrList) { for(var d in ddList) { if(arrList[j].name == ddList[d].name) { list.push(ddList[d]) } } } filterRouter[s].children = list arr.push(filterRouter[s]) } } else { if(user.moduleList[i].name == filterRouter[s].name) { arr.push(filterRouter[s]) } } } } console.log(arr, '') getRoutes = arr; //同步企业微信考勤打卡的情况下,根据深圳赛元微电子的要求,屏蔽项目报告审核模块 if (user.timeType.syncCorpwxTime == 1) { getRoutes = getRoutes.filter(r=>{return r.name != '项目报告审核'}); } //检查是否开启了自定义审批流 if (user.timeType.reportWorkflow == 0) { getRoutes = getRoutes.filter(r=>{return r.name != '审批流设置'}); console.log(getRoutes); } global.antRouter = fixedRouter.concat(getRoutes); router.addRoutes(fixedRouter.concat(getRoutes)); console.log(router); router.options.routes = fixedRouter.concat(getRoutes); router.push({ path: to.path }) } } } next() } }) function baseRoleGetRouters(allRoutes, user) { // allRoutes是动态路由表 // roles是取到的用户角色,数组 let rightRoutes = allRoutes.filter((route, index) => { if (route.group == null || (user.company.packageProject == 1 && route.group == 'packageProject')) { if (route.children && route.children.length) { route.children = baseRoleGetRouters(route.children, user) } return true } return false }) return rightRoutes } function hasPermission(route, roles) { if (route.meta && route.meta.roles) { return roles.some(role => route.meta.roles.indexOf(role) >= 0) } else { return true } } router.afterEach(() => { NProgress.done(); // 百度统计 // setTimeout(()=>{ // var _hmt = _hmt || []; // (function() { // //每次执行前,先移除上次插入的代码 // document.getElementById('baidu_tj') && document.getElementById('baidu_tj').remove(); // var hm = document.createElement("script"); // hm.src = "https://hm.baidu.com/hm.js?b485cd24e5dcbe73d4dde5abf7dc8ae0"; // hm.id = "baidu_tj" // var s = document.getElementsByTagName("script")[0]; // s.parentNode.insertBefore(hm, s); // })(); // },0); }) // 定义的方法,对文本框使用,只能输入数组, // 加 v-enter-number Vue.directive('enterNumber', { inserted: function (el) { el.addEventListener("keypress",function(e){ e = e || window.event; let charcode = typeof e.charCode === 'number' ? e.charCode : e.keyCode; let re = /\d/; if(!re.test(String.fromCharCode(charcode)) && charcode > 9 && !e.ctrlKey){ if(e.preventDefault){ e.preventDefault(); }else{ e.returnValue = false; } } }); } }); new Vue({ router, store, render: h => h(App) }).$mount('#app')