main.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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 'element-ui/lib/theme-chalk/index.css'
  17. // import 'element-ui/lib/'
  18. import 'font-awesome/css/font-awesome.min.css'
  19. import './assets/css/global.css' //导入全局样式表
  20. import './assets/css/common.css' //导入全局样式表
  21. //预览图片Start
  22. import Viewer from 'v-viewer'
  23. import 'viewerjs/dist/viewer.css'
  24. Vue.use(Viewer, {
  25. defaultOptions: {
  26. zIndex: 9999,
  27. inline: false, //启动inline模式
  28. button: false, //显示右上角关闭按钮
  29. loop: true,
  30. loading: false
  31. }
  32. })
  33. // 注册一个全局自定义指令 `v-watermark`
  34. Vue.directive('watermark', {
  35. inserted: function (el, binding) {
  36. // 获取绑定的水印文字
  37. // const text = binding.value || '水印';
  38. // const canvas = document.createElement('canvas');
  39. // const ctx = canvas.getContext('2d');
  40. // canvas.width = 250;
  41. // canvas.height = 200;
  42. // ctx.font = '16px Arial';
  43. // ctx.fillStyle = 'rgba(0, 0, 0, 0.2)';
  44. // ctx.textAlign = 'center';
  45. // ctx.textBaseline = 'middle';
  46. // ctx.translate(canvas.width / 2, canvas.height / 2);
  47. // ctx.rotate(-30*Math.PI/180);
  48. // ctx.fillText(text,0,10);
  49. // const base64 = canvas.toDataURL('image/png');
  50. // el.style.backgroundImage = `url('${base64}')`;
  51. // el.style.backgroundColor = '#fff';
  52. const watermarkText = binding.value || '默认水印';
  53. const canvas = document.createElement('canvas');
  54. const ctx = canvas.getContext('2d');
  55. canvas.width = 300;
  56. canvas.height = 250;
  57. ctx.fillStyle = 'rgba(180, 180, 180, 0.3)';
  58. // ctx.fillRect(0, 0, canvas.width, canvas.height);
  59. ctx.font = '16px Arial';
  60. ctx.fillStyle = 'rgba(0, 0, 0, 0.2)';
  61. ctx.textAlign = 'center';
  62. ctx.textBaseline = 'middle';
  63. ctx.translate(canvas.width / 2, canvas.height / 2);
  64. ctx.rotate(-30*Math.PI/180);
  65. ctx.fillText(watermarkText, 0, 0);
  66. const base64 = canvas.toDataURL('image/png');
  67. const watermarkDiv = document.createElement('div');
  68. watermarkDiv.style.position = 'absolute';
  69. watermarkDiv.style.top = '0px';
  70. watermarkDiv.style.left = '0px';
  71. watermarkDiv.style.width = `${el.offsetWidth}px`;
  72. watermarkDiv.style.height = `${el.offsetHeight}px`;
  73. watermarkDiv.style.pointerEvents = 'none';
  74. watermarkDiv.style.backgroundImage = `url('${base64}')`;
  75. // watermarkDiv.style.backgroundSize = '100% 100%';
  76. // watermarkDiv.style.backgroundColor = 'rgba(255,255,255,0.1)';
  77. watermarkDiv.style.zIndex = '1000';
  78. el.appendChild(watermarkDiv);
  79. }
  80. });
  81. // ElementUI.Dialog.props.lockScroll.default = false;
  82. Vue.config.productionTip = false;
  83. VueClipboard.config.autoSetContainer = true
  84. Vue.use(VueClipboard)
  85. //预览图片End
  86. Vue.use(VueDirectiveWindow);
  87. Vue.use(VueSplit)
  88. Vue.use(ElementUI)
  89. Vue.use(api)
  90. Vue.use(router)
  91. Vue.use(dateFormat)//日期组件格式化
  92. Vue.use(btnPermission)
  93. Vue.use(dialogDrag)
  94. Vue.prototype.global = global
  95. new Vue({
  96. el: '#app',
  97. i18n,
  98. router,
  99. store,
  100. render: h => h(App)
  101. });