main.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import Vue from 'vue'
  2. import 'xe-utils'
  3. import VXETable from 'vxe-table'
  4. VXETable.config({
  5. 'column-config': {
  6. resizable: true
  7. }
  8. })
  9. import 'vxe-table/lib/style.css'
  10. Vue.use(VXETable)
  11. import VXETablePluginElement from 'vxe-table-plugin-element'
  12. import 'vxe-table-plugin-element/dist/style.css'
  13. VXETable.use(VXETablePluginElement)
  14. const jnpf = require('./utils/jnpf').default
  15. import 'normalize.css/normalize.css' // a modern alternative to CSS resets
  16. import Element from 'element-ui'
  17. import 'element-ui/lib/theme-chalk/index.css'
  18. import './styles/element-variables.scss'
  19. import './assets/scss/common.scss'
  20. import '@/styles/index.scss' // global css
  21. import './assets/scss/theme.scss' // 主题
  22. import VueAwesomeSwiper from 'vue-awesome-swiper'
  23. import 'swiper/css/swiper.css'
  24. Vue.use(VueAwesomeSwiper)
  25. import App from './App'
  26. import store from './store'
  27. import router from './router'
  28. import i18n from './lang' // internationalization
  29. import './permission' // permission control
  30. import './utils/error-log' // error log
  31. import { message } from './utils/message'
  32. import * as filters from './filters' // global filters
  33. // 自定义按钮权限指令
  34. import permission from '@/directive/permission'
  35. Vue.use(permission)
  36. Vue.use(Element, {
  37. size: jnpf.storageGet('size') || 'small', // set element-ui default size
  38. i18n: (key, value) => i18n.t(key, value)
  39. })
  40. // 批量引入组件
  41. import components from './components'
  42. Vue.use(components)
  43. // 添加实例属性
  44. Object.assign(Vue.prototype, {
  45. define: require('./utils/define'), // 常量
  46. jnpf, // 公共方法
  47. formValidate: require('./utils/formValidate').default, // 表单验证
  48. $message: message
  49. })
  50. // 全局注册过滤器
  51. Object.keys(filters).forEach((key) => {
  52. Vue.filter(key, filters[key])
  53. })
  54. Vue.config.productionTip = false
  55. // 按需引入需要的语言包皮肤等资源
  56. require('brace/ext/emmet') // 如果是lang=html时需引入
  57. require('brace/ext/language_tools') // language extension
  58. require('brace/mode/sql')
  59. require('brace/snippets/sql')
  60. require('brace/mode/java')
  61. require('brace/snippets/java')
  62. require('brace/mode/javascript')
  63. require('brace/snippets/javascript')
  64. require('brace/theme/monokai')
  65. require('brace/theme/solarized_dark')
  66. require('brace/theme/chrome')
  67. // 注册组件后即可使用
  68. import Editor from 'bin-ace-editor'
  69. Vue.component(Editor.name, Editor)
  70. Vue.prototype.apiVariableSetItem = function (key, value) {
  71. if (key === 'API_VARIABLE_CHANGE') {
  72. let newStorageEvent = document.createEvent('StorageEvent')
  73. const storage = {
  74. setItem: function (k, val) {
  75. sessionStorage.setItem(k, val)
  76. newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, null, null)
  77. window.dispatchEvent(newStorageEvent)
  78. }
  79. }
  80. return storage.setItem(key, value)
  81. }
  82. }
  83. const vm = new Vue({
  84. el: '#app',
  85. router,
  86. store,
  87. i18n,
  88. render: (h) => h(App)
  89. })
  90. export default vm