import Vue from 'vue' import App from './index.vue' import router from '@/router/index' import VueMatomo from 'vue-matomo' import store from '@/store' import '@/plugins/element.js' import vuescroll from 'vuescroll' import uploader from 'vue-simple-uploader' import i18n from '@/assets/i18n/i18n' import preview from 'vue-photo-preview' import 'vue-photo-preview/dist/skin.css' import * as filters from '@/filters/index.js' import '@/assets/iconfont/iconfont.css' import '@/assets/style/layout.less' import '@/assets/style/button.less' import '@/assets/style/table.less' import '@/assets/style/dialog.less' import '@/assets/style/pagination.less' import axios from 'axios' import { Message } from 'element-ui' import Pagination from '@/components/Pagination' import { resetForm } from '@/util' import { autoLogin } from '@/assets/js/api/autoLogin-xingXuan' import { decode, encode } from 'js-base64' import { loginApi, companyLoginApi, projectLoginApi, } from '@/assets/js/api/loginSign' import SlideVerify from 'vue-monoplasty-slide-verify' //滑动验证 import VueAwesomeSwiper from 'vue-awesome-swiper' import scroll from 'vue-seamless-scroll' Vue.use(scroll) import VueQuillEditor from 'vue-quill-editor' import 'quill/dist/quill.core.css' import 'quill/dist/quill.snow.css' import 'quill/dist/quill.bubble.css' const hls = require('videojs-contrib-hls') Vue.use(hls) Vue.use(VueQuillEditor) // 注册富文本编辑器 Vue.use(SlideVerify) Vue.use(VueAwesomeSwiper) // 全局组件挂载 Vue.component('Pagination', Pagination) // 全局方法挂载 Vue.prototype.resetForm = resetForm if (COMPANY == 'xingxuan') { if (window.location.href.indexOf('?project_id=') != -1) { const projectId = window.location.href .split('?project_id=')[1] .split('&')[0] login(projectId) } function login(projectNumber) { autoLogin({ projectNumber }).then((res) => { if (res.code != 200) return parseLoginData(res.result) }) } function parseLoginData(data) { window._paq.push(['trackEvent', '点击', '登录', '登录账号']) axios.defaults.headers.common['Authorization'] = 'Bearer' + ' ' + data.token axios.defaults.headers.common['operateId'] = data.userId store.commit('setUserInfo', data) var moduleList = data.menuAuthority.moduleList ? data.menuAuthority.moduleList : [] var companyModule = [] var projectModule = [] if (moduleList.length == 0 && data.accountType != 1) { Message.warning('当前账号还没分配权限') return false } moduleList.forEach((element) => { if (element.moduleType == 1) { companyModule.push(element) } if (element.moduleType == 5) { projectModule.push(element) } }) var menu2 = [ { menuName: '企业管理', id: 9199, path: '/registerAudit', }, { menuName: '模块菜单管理', id: 9299, path: '/moduleMenuManage', }, { menuName: 'app版本管理', id: 9297, path: '/operateManage', }, { menuName: '字典管理', id: 9298, path: '/dictionaryManaged' }, { menuName: '塔吊模型管理', id: 9299, path: '/brand' } ] switch (data.accountType) { case 1: store.commit('setMenuList', menu2) store.commit('setProjectManageMenuList', menu2) store.commit('setIsShowBackIndex', false) router.push('/registerAudit') break case 2: case 3: case 4: case 7: store.commit('setMenuList', companyModule) store.commit('setProjectManageMenuList', companyModule) store.commit('setIsShowBackIndex', false) console.log('跳转路由', companyModule[0].modulePath) router.push(companyModule[0].modulePath) break case 5: store.commit('setMenuList', projectModule) store.commit('setProjectManageMenuList', projectModule) store.commit('setIsShowBackIndex', false) store.commit('setProjectSn', data.sn) router.push(projectModule[0].modulePath) break case 6: store.commit('setProjectSn', data.sn) break } } } function handler(data, sn) { console.log(data + sn, 'dllmhjc') console.log(sn, 'dllmhjc -- sn') window._paq.push(['trackEvent', '点击', '登录', '登录账号']) axios.defaults.headers.common['Authorization'] = 'Bearer' + ' ' + data.token axios.defaults.headers.common['operateId'] = data.userId store.commit('setProjectSn', sn) store.commit('setUserInfo', data) var moduleList = data.menuAuthority.moduleList ? data.menuAuthority.moduleList : [] var companyModule = [] var projectModule = [] if (moduleList.length == 0 && data.accountType != 1) { return false } moduleList.forEach((element) => { if (element.moduleType == 1) { companyModule.push(element) } if (element.moduleType == 5) { projectModule.push(element) } }) var 菜单 = [ { menuName: '企业管理', id: 9199, path: '/registerAudit' }, { menuName: '模块菜单管理', id: 9299, path: '/moduleMenuManage' }, { menuName: 'app版本管理', id: 9297, path: '/operateManage' }, { menuName: '塔吊模型管理', id: 9298, path: '/brand' }, ] switch (data.accountType) { case 1: store.commit('setMenuList', 菜单) store.commit('setProjectManageMenuList', 菜单) store.commit('setIsShowBackIndex', false) router.push('/registerAudit') break case 2: case 3: case 4: case 7: store.commit('setMenuList', companyModule) store.commit('setProjectManageMenuList', companyModule) store.commit('setIsShowBackIndex', false) router.push(companyModule[0].modulePath) store.commit('setProjectSn', sn) break case 5: case 6: store.commit('setMenuList', projectModule) store.commit('setProjectManageMenuList', projectModule) store.commit('setIsShowBackIndex', false) if (PROJECT_TYPE != 'zjsj') { //看看项目看板内有没有菜单 let arr = data.menuAuthority.moduleList let arr2 = [] arr.forEach((element) => { if (element.moduleType == 4) { arr2.push(element) return } }) console.log('arr2', arr2) // 如果数组为空表示该用户没有权限访问 if (!arr2.length) { router.push('/projectIndex') } else { router.push(arr2[0].modulePath) } } else { if ((data.styleType != 2 && data.styleType != 3) || !data.styleType) { router.push('/projectIndex') } else if (data.styleType == 2) { router.push('/projectV2/taskList') } else { router.push('/projectV3/taskList') } store.commit('setProjectSn', data.sn) break } } // this.selectMp3FileList() } let url = '' console.log(COMPANY) if (COMPANY == 'longguang') { url = 'http://matomo.logan.com.cn' } Vue.use(VueMatomo, { // url http://matomo-sit.logan.com.cn/index.php测试地址 host: 'http://matomo.logan.com.cn', //生产 // host:'http://matomo-sit.logan.com.cn', //测试 // host:url, siteId: 47, router: router, requireConsent: false, enbleLinkTracking: true, trackInitialView: true, disableCookies: false, requireCookieConsent: false, enableHeartBeatTimer: true, heartBeatTimerInterval: 15, userId: '', trackerFileName: 'matomo', trackerUrl: undefined, trackerScriptUrl: undefined, debug: true, }) Vue.use(preview) Vue.use(uploader) Vue.prototype.$EventBus = new Vue() Object.keys(filters).forEach((key) => { Vue.filter(key, filters[key]) }) Vue.config.productionTip = false Vue.use(vuescroll, { ops: { bar: { background: 'rgba(166, 166, 167, 0.6)', onlyShowBarOnScroll: false, size: '5px', minSize: 0.2, }, }, }) // 加载缩略图 Vue.prototype.downloadImgMin = function(row) { let fileUrl = store.state.FILEURL + row.fileUrl return fileUrl } //获取文件下载路径 Vue.prototype.getDownloadFilePath = function(row) { let fileUrl = store.state.FILEURL + row.fileUrl return fileUrl } //文件查看大图 Vue.prototype.getViewFilePath = function(row) { let fileUrl = store.state.FILEURL + row.fileUrl return fileUrl } //路由监听 router.beforeEach((to, form, next) => { const whitepage = [ '/authentication', '/test', '/videoLearning', '/pages/projectEnd/safetyEducation/authentication', '/companyAdmin/docManage', ] console.log('白名单跳转生效了嘛==============11111111111 :', to) if (whitepage.includes(to.path)) { console.log('白名单跳转生效了嘛==============') return next() } const direction = to.query.direction console.log('跳转', direction) if (direction) { const info = JSON.parse(decode(direction)) const account = { account: info.acount, password: info.pwd } const tentative = (res) => { console.log('res-----', res) handler(res.result, info.projectSn) return next({ path: to.path }) } if (LOGINTYPE == 1) { loginApi(account).then(tentative) } else if (LOGINTYPE == 2) { companyLoginApi(account).then(tentative) } else if (LOGINTYPE == 3) { projectLoginApi(account).then(tentative) } } else { if (COMPANY == 'xingxuan') return next() if (store.state.userInfo) { next() } else if ( !store.state.userInfo && to.path != '/login' && to.path != '/' && to.path != '/sign' && !isDockingToWoer && to.path != '/authorization' ) { next({ path: '/' }) } else { next() } } }) // Vue.prototype.$EventBus = new Vue() new Vue({ router, store, i18n, render: (h) => h(App), }).$mount('#app')