page-break.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { defineVxeComponent } from '../../ui/src/comp';
  2. import XEUtils from 'xe-utils';
  3. import { createEvent } from '../../ui';
  4. import { assemblePageBreak, destroyPageBreak } from './util';
  5. export default {
  6. name: 'VxePrintPageBreak',
  7. props: {},
  8. data() {
  9. const xID = XEUtils.uniqueId();
  10. const reactData = {};
  11. const pageBreakConfig = {
  12. id: xID,
  13. slots: {}
  14. };
  15. return {
  16. xID: XEUtils.uniqueId(),
  17. reactData,
  18. pageBreakConfig
  19. };
  20. },
  21. inject: {
  22. $xePrint: {
  23. default: null
  24. }
  25. },
  26. computed: Object.assign({}, {}),
  27. methods: {
  28. //
  29. // Method
  30. //
  31. dispatchEvent(type, params, evnt) {
  32. const $xePrintPageBreak = this;
  33. $xePrintPageBreak.$emit(type, createEvent(evnt, { $printPageBreak: $xePrintPageBreak }, params));
  34. },
  35. //
  36. // Render
  37. //
  38. renderVN(h) {
  39. return h('div', {
  40. ref: 'refElem'
  41. });
  42. }
  43. },
  44. mounted() {
  45. const $xePrintPageBreak = this;
  46. const slots = $xePrintPageBreak.$scopedSlots;
  47. const $xePrint = $xePrintPageBreak.$xePrint;
  48. const pageBreakConfig = $xePrintPageBreak.pageBreakConfig;
  49. pageBreakConfig.slots = slots;
  50. const elem = $xePrintPageBreak.$refs.refElem;
  51. if ($xePrint && elem) {
  52. assemblePageBreak($xePrint, elem, pageBreakConfig);
  53. }
  54. },
  55. beforeDestroy() {
  56. const $xePrintPageBreak = this;
  57. const $xePrint = $xePrintPageBreak.$xePrint;
  58. const pageBreakConfig = $xePrintPageBreak.pageBreakConfig;
  59. if ($xePrint) {
  60. destroyPageBreak($xePrint, pageBreakConfig);
  61. }
  62. },
  63. render(h) {
  64. return this.renderVN(h);
  65. }
  66. };