import Vue from 'vue';
|
import '@babel/polyfill';
|
import Element from 'element-ui';
|
import 'normalize.css/normalize.css'; // a modern alternative to CSS resets
|
import './styles/element-variables.scss';
|
import '@/styles/index.scss'; // global css
|
import '@/assets/iconfont/iconfont.css';
|
import 'swiper/dist/css/swiper.css';
|
import 'vue-ydui/dist/ydui.base.css';
|
// import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/parsing";
|
// 懒加载
|
import VueLazyload from 'vue-lazyload';
|
import VueAwesomeSwiper from 'vue-awesome-swiper';
|
import Cookies from 'js-cookie';
|
import Debounce from './libs/debounce.js'; //防抖自定义指令
|
import Print from '@/utils/print';
|
// 百度地图
|
import BaiduMap from 'vue-baidu-map'
|
import App from './App';
|
import store from './store';
|
import router from './router';
|
import base from './components/base/index'; // 公共组件
|
import './icons'; // icon
|
import './permission'; // permission control
|
import './utils/error-log'; // error integralLog
|
import * as filters from './filters'; // global filters
|
import {parseQuery} from '@/utils';
|
import plugins from './plugins';
|
import directive from './directive'; //directive
|
import libs from './libs/index.js'; // 全局函数
|
import mySearch from '@/components/mySearch'; // 公共搜索
|
import './directive/float';
|
import './directive/num';
|
import searchInfo from '@/utils/changeColor';
|
import exportExcel from '@/utils/exportExcel'; // 导出
|
import {downLoad, previewDoc} from '@/utils/base';
|
import '@/mock'
|
|
Vue.config.devtools = true;
|
|
Vue.use(Print);
|
Vue.use(BaiduMap,{
|
ak:''
|
});
|
|
Vue.prototype.exportExcelUtils = exportExcel;
|
Vue.prototype.previewDoc = previewDoc;
|
Vue.prototype.downLoad = downLoad;
|
Vue.prototype.$searchInfo = searchInfo;
|
Vue.use(VueLazyload, {
|
preLoad: 1.3,
|
error: require('./assets/imgs/no.png'),
|
loading: require('./assets/imgs/moren.jpg'),
|
attempt: 1,
|
listenEvents: ['scroll', 'wheel', 'mousewheel', 'resize', 'animationend', 'transitionend', 'touchmove'],
|
});
|
|
Vue.use(VueAwesomeSwiper);
|
Vue.use(plugins);
|
Vue.use(directive);
|
Vue.use(libs);
|
Vue.use(base);
|
Vue.use(mySearch);
|
let cookieName = 'VCONSOLE';
|
let query = parseQuery();
|
let urlSpread = query['spread'];
|
let vconsole = query[cookieName.toLowerCase()];
|
let md5Crmeb = 'b14d1e9baeced9bb7525ab19ee35f2d2'; //CRMEB MD5 加密开启vconsole模式
|
let md5UnCrmeb = '3dca2162c4e101b7656793a1af20295c'; //UN_CREMB MD5 加密关闭vconsole模式
|
|
if (vconsole !== undefined) {
|
if (vconsole === md5UnCrmeb && Cookies.has(cookieName)) Cookies.remove(cookieName);
|
} else vconsole = Cookies.get(cookieName);
|
|
if (vconsole !== undefined && vconsole === md5Crmeb) {
|
Cookies.set(cookieName, md5Crmeb, 3600);
|
const module = () => import('vconsole');
|
module().then((Module) => {
|
new Module.default();
|
});
|
}
|
// 自定义实现String 类型的replaceAll方法
|
String.prototype.replaceAll = function (s1, s2) {
|
return this.replace(new RegExp(s1, 'gm'), s2);
|
};
|
// Vue.prototype.$modalCoupon = modalCoupon
|
/**
|
* 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()
|
// }
|
|
Vue.use(Element, {
|
size: 'small', // set element-ui default size
|
zIndex: 3000,
|
});
|
|
// register global utility filters
|
Object.keys(filters).forEach((key) => {
|
Vue.filter(key, filters[key]);
|
});
|
|
Vue.config.productionTip = false;
|
|
const $previewApp = document.getElementById('previewApp');
|
const childAttrs = {
|
file: '',
|
dialog: ' width="600px" class="dialog-width" v-if="visible" :visible.sync="visible" :modal-append-to-body="false" ',
|
};
|
|
|
function buildLinks(links) {
|
let strs = '';
|
links.forEach((url) => {
|
strs += `<link href="${url}" rel="stylesheet">`;
|
});
|
return strs;
|
}
|
|
|
function newVue(attrs, main, html) {
|
// eslint-disable-next-line no-eval
|
main = eval(`(${main})`);
|
main.template = `<div>${html}</div>`;
|
new Vue({
|
components: {
|
child: main,
|
},
|
data() {
|
return {
|
visible: true,
|
};
|
},
|
template: `
|
<div>
|
<child ${attrs}/>
|
</div>`,
|
}).$mount('#app');
|
}
|
|
String.prototype.replaceAll = function (s1, s2) {
|
return this.replace(new RegExp(s1, 'gm'), s2);
|
};
|
|
/**
|
* 防抖 防止重复点击
|
* 传参:v-debounceClick="() =>{handleFun(arg)}"
|
* 不传参:v-debounceClick="handleFun"
|
* delayTime:延迟的时间,只执行最后一次
|
*/
|
Vue.directive('debounceClick', {
|
bind(el, binding, vnode, oldvnode) {
|
},
|
inserted: function (el, binding) {
|
let delayTime = el.getAttribute('delay-time') || 1000;
|
el.onclick = Debounce(function () {
|
binding.value();
|
}, delayTime);
|
},
|
});
|
new Vue({
|
el: '#app',
|
router,
|
store,
|
render: (h) => h(App),
|
beforeCreate() {
|
Vue.prototype.$EventBus = this
|
}
|
|
});
|