import Vue from 'vue'
import 'normalize.css/normalize.css' // A modern alternative to CSS resets
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import locale from 'element-ui/lib/locale/lang/zh-CN' // lang i18n
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 performLoader from '@/utils/global_main_loader.js'
import plugins from './plugins' // plugins
import WS from '@/utils/websocket'
import { getDicts } from "@/api/system/dict/data";
import directive from './directive' // directive
import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree, getDictLabel } from '@/utils/ruoyi'
// 字典标签组件
import DictTag from '@/components/DictTag'
import RightToolbar from '@/components/RightToolbar'
import Print from 'vue-print-nb'
import './utils/scroll.js'
// 字典数据组件
import DictData from '@/components/DictData'
Vue.prototype.$ws = WS
Vue.use(ElementUI, { locale })
performLoader(Vue) // 所有的第三方插件性质的东西都放到这里面了
Vue.config.productionTip = false
Vue.prototype.getDicts = getDicts
Vue.prototype.parseTime = parseTime
Vue.prototype.handleTree = handleTree
Vue.prototype.resetForm = resetForm
Vue.prototype.addDateRange = addDateRange
Vue.prototype.selectDictLabel = selectDictLabel
Vue.prototype.selectDictLabels = selectDictLabels
Vue.use(plugins)
Vue.component('RightToolbar', RightToolbar)
Vue.component('DictTag', DictTag)
Vue.use(directive)
Vue.use(Print);
DictData.install()
function dispatchWithPromise(path) {
  return new Promise(resolve => {
    store.dispatch(path, resolve)
  })
}

const beforeEnterApp = () => {
  // dispatchWithPromise('depart/getDepart')
  dispatchWithPromise('user/getInfo')
  dispatchWithPromise('alarm/getAlarmList')
}

beforeEnterApp()

new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App)
})
