123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325 |
- // import Vue from 'vue'
- // import VueRouter from 'vue-router'
- // Vue.use(VueRouter)
- import ElementUI from 'element-ui'
- // 全局修改默认配置,点击空白处不能关闭弹窗
- ElementUI.Dialog.props.closeOnClickModal.default = false
- Vue.use(ElementUI)
- import elTableInfiniteScroll from 'el-table-infinite-scroll'
- Vue.use(elTableInfiniteScroll)
- // 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 dayjs from 'dayjs';
- Vue.prototype.dayjs = dayjs;
- // 引入中译英js
- import i18n from '@/i18n/index'
- 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'
- import Vue from 'vue'
- // 新手指导
- import VueTour from 'vue-tour'
- require('vue-tour/dist/vue-tour.css')
- Vue.use(VueTour)
- // 打印js
- import Print from './assets/js/print.js'
- Vue.use(Print)
- // 全局转译组件
- import TranslationOpenData from '@/components/translationOpenData.vue'
- import TranslationOpenDataText from '@/components/translationOpenDataText.vue'
- Vue.component('TranslationOpenData', TranslationOpenData)
- Vue.component('TranslationOpenDataText', TranslationOpenDataText)
- 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();
- // console.log('路由跳转判定',to,from,next);
- if (to.path == '/') {
- from.name ? next(from.path) : next('/login')
- // console.log('走判定');
- return
- }
- if (to.path == '/register') {
- next();
- return;
- }
- if (to.path == '/expire') {
- 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 != '费用报销'});
- }
- 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.packageOa == 0) {
- filterRouter = filterRouter.filter(r=>{return 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.timeType.customDegreeActive == 0) {
- filterRouter = filterRouter.filter(r=>{return r.name != '研究中心管理'});
- } else {
- let customDeg = filterRouter.filter(r=>{return r.name == '研究中心管理'});
- if(customDeg.length > 0){
- customDeg[0].children[0].name = user.timeType.customDegreeName + '管理'
- if(localStorage.getItem('lang') == 'en') {
- customDeg[0].meta.text = user.timeType.customDegreeName + ' management'
- } else {
- customDeg[0].meta.text = user.timeType.customDegreeName + '管理'
- }
- }
- }
-
- // 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)
- for(var i in filterRouter) {
- if(filterRouter[i].name == '研究中心管理') {
- filterRouter[i].name = user.timeType.customDegreeName + '管理'
- }
- }
- var arr = []
- 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.onlyImportreport == 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,
- i18n,
- render: h => h(App)
- }).$mount('#app')
|