123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- // 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 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 './day.js' // 加载 dayjs 初始化配置
- 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 { staffRouter, manageRouter, fixedRouter,leaderRouter, projectManageRouter, expenseRouter,sysManageRouter } from './routes'
- import router from './routes'
- import NProgress from 'nprogress'
- import 'nprogress/nprogress.css'
- var addRouFlag = false;
- 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.role == 0) {
- var getRoutes = baseRoleGetRouters(user.leader?leaderRouter:staffRouter, user);
- if (user.company.packageProject == 1 && !user.leader) {
- getRoutes = getRoutes.concat(projectManageRouter);
- }
- if (user.company.packageExpense == 1) {
- getRoutes = getRoutes.concat(expenseRouter);
- }
- global.antRouter = fixedRouter.concat(getRoutes);
- router.addRoutes(fixedRouter.concat(getRoutes));
- router.options.routes = fixedRouter.concat(getRoutes);
- router.push({ path: to.path })
- } else {
- var getRoutes = baseRoleGetRouters(manageRouter, user);
- if (user.company.packageExpense == 1) {
- getRoutes = getRoutes.concat(expenseRouter);
- }
- getRoutes = getRoutes.concat(sysManageRouter);
-
- global.antRouter = fixedRouter.concat(getRoutes);
- router.addRoutes(fixedRouter.concat(getRoutes));
- 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')
|