import { setToken } from '@/utils/auth' import { getUrlParam, findElem, deleteEmptyObj } from '@/utils/util' if (getUrlParam().token) { setToken(getUrlParam().token) } import Vue from 'vue' import 'normalize.css/normalize.css' // A modern alternative to CSS resets // import './plugins/jquery.hiwprint.js' import ElementUI from '@zjlib/element-ui2' import '@zjlib/element-ui2/lib/theme-chalk/index.css' import VueQuillEditor from 'vue-quill-editor' // require styles import 'quill/dist/quill.core.css' import 'quill/dist/quill.snow.css' import 'quill/dist/quill.bubble.css' Vue.use(VueQuillEditor /* { default global options } */) import dataV from '@jiaminghi/data-view' Vue.use(dataV) import VQuillEditor from '@/components/v-quill-editor' Vue.component('v-quill-editor', VQuillEditor) import { Loading } from '@zjlib/element-ui2' let loading function startLoading() { loading = Loading.service({ lock: true, text: '拼命加载中...', spinner: 'el-icon-loading', customClass: '.app-container' }) } function endLoading() { loading.close() } import * as echarts from 'echarts' Vue.prototype.$echarts = echarts import '@/styles/index.scss' // global css import App from './App' import store from './store' import router from './router' import '@/icons' // icon import '@/permission' // permission control import * as filters from './filters' // global filters import directives from './directives' window._AMapSecurityConfig = { serviceHost: 'https://jiasm.zfire.top/' + '_AMapService' } import '@zjlib/element-plugins/dest/element-plugins.css' import ElementPlugins, { AMap } from '@zjlib/element-plugins' Vue.use(ElementPlugins, { // 表单页面表单属性配置 formAttributes: { 'label-position': 'right' } // // 操作记录配置 // operationRecord: function (options) { // // console.log(options.meta.moduleId) // // return new Promise((r, j) => { // // r([[], []]) // // }) // } }) // // 本地引用; // import ElementPlugins, { AMap } from '@packages' // Vue.use(ElementPlugins, { // formAttributes: { // 'label-position': 'right' // } // }) Vue.use(AMap) AMap.initAMapApiLoader({ // 高德的key key: 'df9bfabcba60cc6e7ad45ae9923a682d', plugins: ['AMap.Geocoder', 'AMap.AutoComplete', 'AMap.PlaceSearch'] }) Vue.use(AMap) AMap.initAMapApiLoader({ // 高德的key key: 'df9bfabcba60cc6e7ad45ae9923a682d', version: '2.0', plugins: ['AMap.Geocoder', 'AMap.AutoComplete', 'AMap.PlaceSearch', 'AMap.DistrictSearch'] }) import '@/utils/time.js' import { getIPAdd } from '@/utils/lbs.js' getIPAdd() .then(res => { Vue.prototype.$IpAdd = res.data }) .catch(err => {}) // 成功/错误提示 import { successMsg, errorMsg, warningNotify, checkBtnRole, getSummaries, numToFixed } from '@/utils/common.js' Vue.prototype.$successMsg = successMsg Vue.prototype.$errorMsg = errorMsg Vue.prototype.$warningNotify = warningNotify Vue.prototype.$checkBtnRole = checkBtnRole Vue.prototype.$getSummaries = getSummaries Vue.prototype.$numToFixed = numToFixed Vue.prototype.$startLoading = startLoading Vue.prototype.$endLoading = endLoading Vue.prototype.$restrict = function (...codes) { var roles = this.$route.meta.roles || [] for (var code of codes) { if (roles.includes(code)) { return true } } return false } // 自定义组件 import ExportButton from '@/components/Common/export-button.vue' Vue.component('ExportButton', ExportButton) import ImportButton from '@/components/Common/import-button.vue' Vue.component('ImportButton', ImportButton) import CopyButton from '@/components/Common/copy-button.vue' Vue.component('CopyButton', CopyButton) import Collapse from '@/components/Common/collapse' Vue.component('Collapse', Collapse) Vue.prototype.$xdocUrl = 'https://pgxtadm.greeapps.com/preview/onlinePreview?url=' Vue.prototype.$imageUrl = process.env.VUE_APP_BASE_API + 'img/get?key=' Vue.prototype.$showImgUrl = function (url) { // try { // const { pathname } = new URL(url) // if (pathname.startsWith('/')) { // return `${process.env.VUE_APP_BASE_API}img/get?key=${pathname.substring(1)}` // } // return `${process.env.VUE_APP_BASE_API}img/get?key=${pathname}` // } catch (error) { // return url // } return url } Vue.prototype.$findElem = findElem Vue.prototype.$deleteEmptyObj = deleteEmptyObj /** * If you don't want to use mock-server * you want to use MockJs for mock api * you can execute: mockXHR() * * Currently MockJs will be used in the production environment, * please remove it before going online ! ! ! */ if (process.env.NODE_ENV === 'production') { const { mockXHR } = require('../mock') mockXHR() } // set ElementUI lang to EN // Vue.use(ElementUI, { locale }) // 如果想要中文版 element-ui,按如下方式声明 Vue.use(ElementUI) import { Message } from 'element-ui' //定义一个新的Message方法,多传入一个offset参数 const $message = options => { return Message({ ...options, offset: 80 }) } //重写方法,将offset写入options ;['success', 'warning', 'info', 'error'].forEach(type => { $message[type] = options => { if (typeof options === 'string') { options = { message: options, offset: 80 } } options.type = type return Message(options) } }) //将$message挂载到this上 Vue.prototype.$message = $message //不加这行代码运行this.$message.closeAll时会报错 Vue.prototype.$message.closeAll = Message.closeAll // register global utility filters Object.keys(filters).forEach(key => { Vue.filter(key, filters[key]) }) Object.keys(directives).forEach(key => { Vue.directive(key, directives[key]) }) Vue.config.productionTip = false // 解决翻译 import { translaBeforeRegistration } from './global-text-processor' // 导入插件 Vue.prototype.$setLanguage = function (type) { window.localStorage.setItem('Vue_Translation_Of_Text_Type', type) setTimeout(() => { location.reload(true) }, 200) } translaBeforeRegistration(function () { new Vue({ el: '#app', router, store, render: h => h(App) }) })