ElemUndertaking.vue 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <template>
  2. <div class="elem-undertaking">
  3. <h3 class="para-text para-title">考生承诺书</h3>
  4. <p class="para-text para-cl">本人郑重承诺<em>:</em></p>
  5. <div class="para-text para-body">
  6. <p v-for="(cont, index) in contentList" :key="index" v-html="cont"></p>
  7. </div>
  8. <p class="para-text para-std">
  9. 承诺人<span>(</span>签名 <span>)</span> :
  10. </p>
  11. </div>
  12. </template>
  13. <script>
  14. export default {
  15. name: "elem-undertaking",
  16. props: {
  17. content: {
  18. type: String,
  19. default: "",
  20. },
  21. pageSize: {
  22. type: String,
  23. default: "A3",
  24. },
  25. },
  26. data() {
  27. return {};
  28. },
  29. computed: {
  30. contentList() {
  31. const pageSizeChartCountConfig = {
  32. A3: 65,
  33. "8K": 54,
  34. };
  35. let len = this.content.length;
  36. const maxParaCharCount = pageSizeChartCountConfig[this.pageSize];
  37. const count = Math.ceil(len / maxParaCharCount);
  38. let conts = [];
  39. for (let i = 0; i < count; i++) {
  40. let cont = this.content.substring(
  41. i * maxParaCharCount,
  42. (i + 1) * maxParaCharCount
  43. );
  44. cont = cont.replace(/([((【】))])/g, "<span>$1</span>");
  45. cont = cont.replace(/([,。?])/g, "<em>$1</em>");
  46. conts[i] = cont;
  47. }
  48. return conts;
  49. },
  50. },
  51. methods: {},
  52. };
  53. </script>