main.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import Vue from 'vue'
  2. import App from './App'
  3. import router from './router'
  4. import api from './http'
  5. import i18n from './i18n'
  6. import store from './store'
  7. import global from '@/config/global'
  8. import ElementUI from 'element-ui'
  9. import '@/utils/directives.js'
  10. import VueSplit from 'vue-split-panel'
  11. import VueDirectiveWindow from 'vue-directive-window';
  12. import { dateFormat } from '@/utils/dataformat.js'
  13. import btnPermission from '@/utils/btnPermission'
  14. import dialogDrag from '@/utils/dialogDrag'
  15. import VueClipboard from 'vue-clipboard2'
  16. import vdr from 'vue-draggable-resizable-gorkys';
  17. import 'vue-draggable-resizable-gorkys/dist/VueDraggableResizable.css';
  18. import 'element-ui/lib/theme-chalk/index.css'
  19. // import 'element-ui/lib/'
  20. import 'font-awesome/css/font-awesome.min.css'
  21. import './assets/css/global.css' //导入全局样式表
  22. import './assets/css/common.css' //导入全局样式表
  23. //预览图片Start
  24. import Viewer from 'v-viewer'
  25. import 'viewerjs/dist/viewer.css'
  26. Vue.use(Viewer, {
  27. defaultOptions: {
  28. zIndex: 9999,
  29. inline: false, //启动inline模式
  30. button: false, //显示右上角关闭按钮
  31. loop: true,
  32. loading: false
  33. }
  34. })
  35. // 注册一个全局自定义指令 `v-watermark`
  36. Vue.directive('watermark', {
  37. inserted: function (el, binding) {
  38. const watermarkText = binding.value || '默认水印';
  39. const canvas = document.createElement('canvas');
  40. const ctx = canvas.getContext('2d');
  41. canvas.width = 300;
  42. canvas.height = 250;
  43. ctx.fillStyle = 'rgba(180, 180, 180, 0.3)';
  44. ctx.font = '16px Arial';
  45. ctx.fillStyle = 'rgba(0, 0, 0, 0.2)';
  46. ctx.textAlign = 'center';
  47. ctx.textBaseline = 'middle';
  48. ctx.translate(canvas.width / 2, canvas.height / 2);
  49. ctx.rotate(-30 * Math.PI / 180);
  50. ctx.fillText(watermarkText, 0, 0);
  51. const base64 = canvas.toDataURL('image/png');
  52. const watermarkDiv = document.createElement('div');
  53. watermarkDiv.style.position = 'absolute';
  54. watermarkDiv.style.top = '0px';
  55. watermarkDiv.style.left = '0px';
  56. watermarkDiv.style.width = `${el.offsetWidth}px`;
  57. watermarkDiv.style.height = `${el.offsetHeight}px`;
  58. watermarkDiv.style.pointerEvents = 'none';
  59. watermarkDiv.style.backgroundImage = `url('${base64}')`;
  60. watermarkDiv.style.zIndex = '1000';
  61. el.appendChild(watermarkDiv);
  62. }
  63. });
  64. // ElementUI.Dialog.props.lockScroll.default = false;
  65. Vue.config.productionTip = false;
  66. VueClipboard.config.autoSetContainer = true
  67. Vue.use(VueClipboard)
  68. //预览图片End
  69. Vue.use(VueDirectiveWindow);
  70. Vue.use(VueSplit)
  71. Vue.use(ElementUI)
  72. Vue.use(api)
  73. Vue.use(router)
  74. Vue.use(dateFormat)//日期组件格式化
  75. Vue.use(btnPermission)
  76. Vue.use(dialogDrag)
  77. // Vue.use(VueDraggableResizable)
  78. Vue.component('vdr', vdr);
  79. Vue.prototype.global = global
  80. import Treeselect from '@riophae/vue-treeselect'
  81. import '@riophae/vue-treeselect/dist/vue-treeselect.css'
  82. Vue.component('treeselect', Treeselect)
  83. new Vue({
  84. el: '#app',
  85. i18n,
  86. router,
  87. store,
  88. render: h => h(App)
  89. });