main.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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. import { throttle } from "lodash";
  71. // 避免高频率调用 使用节流throttle
  72. Vue.prototype.apiVariableSetItem = throttle(function(key, value) {
  73. if (key === "API_VARIABLE_CHANGE") {
  74. let newStorageEvent = document.createEvent("StorageEvent");
  75. const storage = {
  76. setItem: function(k, val) {
  77. sessionStorage.setItem(k, val);
  78. newStorageEvent.initStorageEvent("setItem", false, false, k, null, val, null, null);
  79. window.dispatchEvent(newStorageEvent);
  80. }
  81. };
  82. return storage.setItem(key, value);
  83. }
  84. }, 340);
  85. window.logjson = function(val) {
  86. if (typeof val === "object") console.log(JSON.parse(JSON.stringify(val)));
  87. else console.log(val);
  88. };
  89. const vm = new Vue({
  90. el: "#app",
  91. router,
  92. store,
  93. i18n,
  94. render: (h) => h(App)
  95. });
  96. export default vm;