import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import ElementUI from 'element-ui'
import { resetForm } from '@/utils/element-ui'
import { selectDictLabel, parseTime } from '@/utils/dataDict'
import { mymsgbox, myNotification, popupduration } from '@/utils/variouspopups'
import dataV from '@jiaminghi/data-view'
import 'element-ui/lib/theme-chalk/index.css'
import '@/assets/font/iconfont.css'
import './pemission'
import { resolveBlob } from '@/utils'
import * as $enumData from '@/views/als/utils/enum-data'

// 全局设置消息框 点击屏幕外部不能关闭
ElementUI.MessageBox.setDefaults({ closeOnClickModal: false })
ElementUI.Dialog.props.closeOnClickModal.default = false

Vue.config.productionTip = false

const requireComponent = require.context(
  // 其组件目录的相对路径
  './components/',
  // 是否查询其子目录
  true,
  // 匹配基础组件文件名的正则表达式
  /\.vue$/
)

requireComponent.keys().forEach((fileName) => {
  // 获取组件配置
  const componentConfig = requireComponent(fileName)
  // 全局注册组件
  Vue.component(
    componentConfig.default.name,
    // 如果这个组件选项是通过 `export default` 导出的，
    // 那么就会优先使用 `.default`，
    // 否则回退到使用模块的根。
    componentConfig.default || componentConfig
  )
})
Vue.prototype.selectDictLabel = selectDictLabel
Vue.prototype.parseTime = parseTime
Vue.prototype.$resolveBlob = resolveBlob

Vue.prototype.resetForm = resetForm
Vue.prototype.popupduration = popupduration
Vue.use(ElementUI)
Vue.use(dataV)
Vue.use($enumData)

new Vue({
  router,
  store,
  beforeCreate() {
    Vue.prototype.$Wbus = this
  },
  render: (h) => h(App)
}).$mount('#app')
