main.js 1.65 KB
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import Axios from 'axios'
import '../static/city-data'
import CollapseTransition from 'element-ui/lib/transitions/collapse-transition';
// import "./mock"
import '../static/disparch'
import './assets/icons/iconfont.css'


Vue.component(CollapseTransition.name, CollapseTransition)
Vue.config.productionTip = false
Vue.prototype.$Axios = Axios
/* eslint-disable no-new */
Vue.use(ElementUI)

Vue.filter('twoDecimal', function (value) {
  value = Number(value);
  return value.toFixed(2);
});

let loading;

function startLoading() {
  loading = Vue.prototype.$loading({
    lock: true,
    text: "加载中,请稍等",
    background: "rgba(0, 0, 0, 1)"
  })
}

function finishLoading() {
  loading.close();
}

let requestCount = 0;

function showLoading() {
  if (requestCount === 0) {
    startLoading();
  }
  requestCount++;
};

function hideLoading() {
  if (requestCount <= 0) return;
  requestCount--;
  if (requestCount === 0) {
    finishLoading();
  }
};

Axios.interceptors.request.use(
  (config) => {
    showLoading();
    return config;
  },
  function (err) {
    return Promise.reject(err);
  }
);

Axios.interceptors.response.use((response) => {
  setTimeout(() => {
    hideLoading();
  }, 300);
  return response;
}, function (err) {
  hideLoading()
  return Promise.reject(err);
});



new Vue({
  el: '#app',
  router,
  components: {
    App
  },
  template: '<App/>'
})