CardHead.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <template>
  2. <div :class="classes">
  3. <div class="card-head-top">
  4. <div class="card-head-title">
  5. <el-input
  6. placeholder="请输入主标题"
  7. size="small"
  8. @blur="nameChange"
  9. v-model="cardTitle"
  10. id="cardTitleInput"
  11. v-if="!preview && !data.isSimple"
  12. >
  13. </el-input>
  14. <h1 v-else>{{ data.schoolName }}</h1>
  15. </div>
  16. <div class="card-head-subtitle">
  17. <el-input
  18. placeholder="请输入题卡标题"
  19. @blur="nameChange"
  20. v-model="cardName"
  21. id="cardNameInput"
  22. v-if="!preview && !data.isSimple"
  23. >
  24. </el-input>
  25. <p v-else>{{ data.cardName }}</p>
  26. </div>
  27. <div class="card-head-title-desc">
  28. <el-input
  29. placeholder="请输入内容"
  30. @blur="nameChange"
  31. v-model="cardTitleDesc"
  32. id="cardTileDescInput"
  33. v-if="!preview && !data.isSimple"
  34. >
  35. </el-input>
  36. <p v-else>{{ data.cardTitleDesc }}</p>
  37. </div>
  38. </div>
  39. <template v-if="data.columnNumber === 2">
  40. <div class="card-head-body" v-if="data.examNumberStyle !== 'fill'">
  41. <div class="grid-container">
  42. <div class="grid-row">
  43. <div class="grid-col grid-col-dash">
  44. <head-stdno :data="data"></head-stdno>
  45. </div>
  46. <div class="grid-col">
  47. <head-stdinfo :data="data"></head-stdinfo>
  48. </div>
  49. </div>
  50. <div class="grid-row" v-if="!data.isSimple">
  51. <div class="grid-col">
  52. <head-notice :data="data"></head-notice>
  53. </div>
  54. <div class="grid-col">
  55. <head-dynamic :data="data"></head-dynamic>
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. <div class="card-head-body" v-else>
  61. <card-head-body-auto-resize>
  62. <head-stdinfo :data="data" slot="stdinfo"></head-stdinfo>
  63. <head-notice :data="data" slot="notice"></head-notice>
  64. <head-stdno :data="data" slot="stdno"></head-stdno>
  65. <head-dynamic
  66. :data="data"
  67. slot="dynamic"
  68. v-if="!data.isSimple && hasDynamicArea"
  69. ></head-dynamic>
  70. </card-head-body-auto-resize>
  71. </div>
  72. </template>
  73. <template v-if="data.columnNumber > 2">
  74. <div class="card-head-body" v-if="data.examNumberStyle !== 'fill'">
  75. <head-stdno class="card-head-part" :data="data"></head-stdno>
  76. <head-stdinfo class="card-head-part" :data="data"></head-stdinfo>
  77. <head-dynamic
  78. class="card-head-part"
  79. :data="data"
  80. v-if="!data.isSimple && hasDynamicArea"
  81. ></head-dynamic>
  82. <head-notice
  83. class="card-head-part"
  84. :data="data"
  85. v-if="!data.isSimple"
  86. ></head-notice>
  87. </div>
  88. <div class="card-head-body" v-else>
  89. <head-stdinfo class="card-head-part" :data="data"></head-stdinfo>
  90. <head-stdno class="card-head-part" :data="data"></head-stdno>
  91. <head-dynamic
  92. class="card-head-part"
  93. :data="data"
  94. v-if="!data.isSimple && hasDynamicArea"
  95. ></head-dynamic>
  96. <head-notice class="card-head-part" :data="data"></head-notice>
  97. </div>
  98. </template>
  99. </div>
  100. </template>
  101. <script>
  102. import HeadDynamic from "./cardHeadSpin/HeadDynamic";
  103. import HeadNotice from "./cardHeadSpin/HeadNotice";
  104. import HeadStdinfo from "./cardHeadSpin/HeadStdinfo";
  105. import HeadStdno from "./cardHeadSpin/HeadStdno";
  106. import CardHeadBodyAutoResize from "./CardHeadBodyAutoResize";
  107. import { mapMutations } from "vuex";
  108. export default {
  109. name: "card-head",
  110. components: {
  111. HeadStdno,
  112. HeadStdinfo,
  113. HeadNotice,
  114. HeadDynamic,
  115. CardHeadBodyAutoResize
  116. },
  117. props: {
  118. data: {
  119. type: Object
  120. },
  121. preview: {
  122. type: Boolean,
  123. default: false
  124. }
  125. },
  126. data() {
  127. return {
  128. cardName: this.data.cardName,
  129. cardTitle: this.data.schoolName,
  130. cardTitleDesc: this.data.cardTitleDesc
  131. };
  132. },
  133. computed: {
  134. classes() {
  135. return [
  136. "page-element",
  137. "card-head",
  138. {
  139. "card-head-narrow": this.data.columnNumber > 2,
  140. "card-head-handle": this.data.examNumberStyle === "fill",
  141. "card-head-normal":
  142. this.data.examNumberStyle !== "fill" && this.data.columnNumber <= 2
  143. }
  144. ];
  145. },
  146. hasDynamicArea() {
  147. const noDynamic =
  148. this.data.examNumberStyle === "fill"
  149. ? !this.data.missAndFill && !this.data.aOrB
  150. : !this.data.missAndFill && !this.data.writeSign && !this.data.aOrB;
  151. return !noDynamic;
  152. }
  153. },
  154. mounted() {},
  155. methods: {
  156. ...mapMutations("card", ["setCardConfig"]),
  157. nameChange() {
  158. this.setCardConfig({
  159. cardName: this.cardName,
  160. schoolName: this.cardTitle,
  161. cardTitleDesc: this.cardTitleDesc
  162. });
  163. }
  164. }
  165. };
  166. </script>