main.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. // import Vue from 'vue'
  2. // import VueRouter from 'vue-router'
  3. // Vue.use(VueRouter)
  4. import ElementUI from 'element-ui'
  5. // 全局修改默认配置,点击空白处不能关闭弹窗
  6. ElementUI.Dialog.props.closeOnClickModal.default = false
  7. Vue.use(ElementUI)
  8. // import Vuex from 'vuex'
  9. // Vue.use(Vuex)
  10. // import echarts from 'echarts'
  11. // import 'element-ui/lib/theme-chalk/index.css'
  12. import App from './App'
  13. import store from './vuex/store'
  14. // import routes from './routes'
  15. import http from './http'
  16. import port from './port'
  17. import $ from 'jquery'
  18. import './day.js' // 加载 dayjs 初始化配置
  19. Vue.prototype.http = http
  20. Vue.prototype.port = port
  21. Vue.prototype.echarts = echarts
  22. import VueClipboard from 'vue-clipboard2'
  23. Vue.use(VueClipboard)
  24. // collapse 展开折叠
  25. import CollapseTransition from 'element-ui/lib/transitions/collapse-transition';
  26. Vue.component(CollapseTransition.name, CollapseTransition)
  27. import 'font-awesome/css/font-awesome.min.css'
  28. import './assets/iconfont/iconfont.css'
  29. import './assets/myfont/iconfont.css'
  30. // const router = new VueRouter({
  31. // routes
  32. // })
  33. import { staffRouter, manageRouter, fixedRouter,leaderRouter, projectManageRouter, expenseRouter,sysManageRouter } from './routes'
  34. import router from './routes'
  35. import NProgress from 'nprogress'
  36. import 'nprogress/nprogress.css'
  37. var addRouFlag = false;
  38. router.beforeEach((to, from, next) => {
  39. NProgress.start();
  40. if (to.path == '/register') {
  41. next();
  42. return;
  43. }
  44. if(to.path != '/daily') {
  45. sessionStorage.removeItem("from")
  46. }
  47. if (to.path == '/login') {
  48. sessionStorage.removeItem('user');
  49. }
  50. let user = JSON.parse(sessionStorage.getItem('user'));
  51. if (!user && to.path != '/login') {
  52. next({ path: '/login' })
  53. } else {
  54. if (!addRouFlag) {
  55. if(user != null) {
  56. addRouFlag = true
  57. if(user.role == 0) {
  58. var getRoutes = baseRoleGetRouters(user.leader?leaderRouter:staffRouter, user);
  59. if (user.company.packageProject == 1 && !user.leader) {
  60. getRoutes = getRoutes.concat(projectManageRouter);
  61. }
  62. if (user.company.packageExpense == 1) {
  63. getRoutes = getRoutes.concat(expenseRouter);
  64. }
  65. global.antRouter = fixedRouter.concat(getRoutes);
  66. router.addRoutes(fixedRouter.concat(getRoutes));
  67. router.options.routes = fixedRouter.concat(getRoutes);
  68. router.push({ path: to.path })
  69. } else {
  70. var getRoutes = baseRoleGetRouters(manageRouter, user);
  71. if (user.company.packageExpense == 1) {
  72. getRoutes = getRoutes.concat(expenseRouter);
  73. }
  74. getRoutes = getRoutes.concat(sysManageRouter);
  75. global.antRouter = fixedRouter.concat(getRoutes);
  76. router.addRoutes(fixedRouter.concat(getRoutes));
  77. router.options.routes = fixedRouter.concat(getRoutes);
  78. router.push({ path: to.path })
  79. }
  80. }
  81. }
  82. next()
  83. }
  84. })
  85. function baseRoleGetRouters(allRoutes, user) {
  86. // allRoutes是动态路由表
  87. // roles是取到的用户角色,数组
  88. let rightRoutes = allRoutes.filter((route, index) => {
  89. if (route.group == null || (user.company.packageProject == 1 && route.group == 'packageProject')) {
  90. if (route.children && route.children.length) {
  91. route.children = baseRoleGetRouters(route.children, user)
  92. }
  93. return true
  94. }
  95. return false
  96. })
  97. return rightRoutes
  98. }
  99. function hasPermission(route, roles) {
  100. if (route.meta && route.meta.roles) {
  101. return roles.some(role => route.meta.roles.indexOf(role) >= 0)
  102. } else {
  103. return true
  104. }
  105. }
  106. router.afterEach(() => {
  107. NProgress.done();
  108. // 百度统计
  109. setTimeout(()=>{
  110. var _hmt = _hmt || [];
  111. (function() {
  112. //每次执行前,先移除上次插入的代码
  113. document.getElementById('baidu_tj') && document.getElementById('baidu_tj').remove();
  114. var hm = document.createElement("script");
  115. hm.src = "https://hm.baidu.com/hm.js?b485cd24e5dcbe73d4dde5abf7dc8ae0";
  116. hm.id = "baidu_tj"
  117. var s = document.getElementsByTagName("script")[0];
  118. s.parentNode.insertBefore(hm, s);
  119. })();
  120. },0);
  121. })
  122. // 定义的方法,对文本框使用,只能输入数组, // 加 v-enter-number
  123. Vue.directive('enterNumber', {
  124. inserted: function (el) {
  125. el.addEventListener("keypress",function(e){
  126. e = e || window.event;
  127. let charcode = typeof e.charCode === 'number' ? e.charCode : e.keyCode;
  128. let re = /\d/;
  129. if(!re.test(String.fromCharCode(charcode)) && charcode > 9 && !e.ctrlKey){
  130. if(e.preventDefault){
  131. e.preventDefault();
  132. }else{
  133. e.returnValue = false;
  134. }
  135. }
  136. });
  137. }
  138. });
  139. new Vue({
  140. router,
  141. store,
  142. render: h => h(App)
  143. }).$mount('#app')