import Vue from 'vue' // 引入vue框架
import VueRouter from 'vue-router' // 使用 vue-router
import createRouter from './router' // router定义
import VueI18n from 'vue-i18n' // 使用 国际化
import createI18n from './assets/languages' // 国际化定义

import App from './app.vue' // 初始化 vue页面
import './style.scss' // 公共样式
import VueMeta from 'vue-meta'
import Element from 'element-ui'

Vue.use(VueRouter)
const router = createRouter()
router.beforeEach((to, from, next) => {
  const nextUrl = to.query.rd || to.query.service || to.query.redirect_uri || to.query.next_url
  nextUrl && window.sessionStorage.setItem('next_url', nextUrl)
  next()
})

Vue.use(VueI18n)
const i18n = createI18n()

Vue.use(VueMeta)

Vue.use(Element, { i18n: (key, value) => i18n.t(key, value) })

/* 设置全局变量 */
window.G = Vue.prototype.$GLOBAL = {
  VERSION: 'PC-1.0.0'
}
window.Promise = Promise
/**
 * 定义全局变量 - 用作全局事件发布订阅
 * 使用 vue自带事件 $emit 和 $on 进行发布订阅
 */
Vue.prototype.VueEvent = new Vue()

window.G.$instance_vue = new Vue({ router, i18n, render: h => h(App) }).$mount('#app')
