print-sign.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. <template>
  2. <div id="print-sign">
  3. <el-row>
  4. <span v-if="display == 'list'">
  5. <el-col :span="24">
  6. <el-col :span="24" style="margin:15px 0;">
  7. <el-button type="primary" size="mini" @click="display = 'listView'">打印预览</el-button>
  8. </el-col>
  9. <el-col :span="24">
  10. <el-col :span="24" class="signclass">
  11. <p>
  12. 期数:<span>{{ signclass.term }}</span> 班主任:<span>{{ signclass.headteacher }}</span>
  13. </p>
  14. </el-col>
  15. <el-table border :data="list" size="small" style="border: solid #cecece;">
  16. <el-table-column align="center" label="姓名" prop="name"></el-table-column>
  17. <el-table-column align="center" label="性别" prop="gender"></el-table-column>
  18. <el-table-column align="center" label="民族" prop="nation"></el-table-column>
  19. <el-table-column align="center" label="身份证号" prop="id_number"></el-table-column>
  20. <el-table-column align="center" label="学校" prop="school_name"></el-table-column>
  21. <el-table-column align="center" label="专业" prop="major"></el-table-column>
  22. <el-table-column align="center" label="入学年份" prop="entry_year"></el-table-column>
  23. <el-table-column align="center" label="手机号" prop="phone"></el-table-column>
  24. <el-table-column align="center" label="班级" prop="classname"></el-table-column>
  25. <el-table-column align="center" label="寝室" prop="bedroom"></el-table-column>
  26. <el-table-column align="center" label="签名"></el-table-column>
  27. </el-table>
  28. </el-col>
  29. </el-col>
  30. </span>
  31. <span v-else>
  32. <el-col :span="24">
  33. <el-col :span="24" style="margin:15px 0;">
  34. <el-button type="primary" size="mini" @click="display = 'list'">返回</el-button>
  35. <el-button type="primary" size="mini" @click="toPrint()">打印</el-button>
  36. </el-col>
  37. </el-col>
  38. <el-col :span="24" class="printList" ref="print">
  39. <div class="signclass">
  40. <p>
  41. 期数:<span>{{ signclass.term }}</span> 班主任:<span>{{ signclass.headteacher }}</span>
  42. </p>
  43. </div>
  44. <div class="printInfo">
  45. <p>
  46. <span class="textOver xuhao">序号</span>
  47. <span class="textOver one">姓名</span>
  48. <span class="textOver two">性别</span>
  49. <span class="textOver three">民族</span>
  50. <span class="textOver four">身份证号</span>
  51. <span class="textOver five">学校</span>
  52. <span class="textOver six">专业</span>
  53. <span class="textOver seven">入学年份</span>
  54. <span class="textOver eight">手机号</span>
  55. <span class="textOver nine">班级</span>
  56. <span class="textOver ten">寝室</span>
  57. <span class="textOver twlve">签名</span>
  58. </p>
  59. <p class="list" v-for="(item, index) in list" :key="index">
  60. <span class="textOver xuhao">{{ index + 1 }}</span>
  61. <span class="textOver one">{{ item.name }}</span>
  62. <span class="textOver two">{{ item.gender }}</span>
  63. <span class="textOver three">{{ item.nation }}</span>
  64. <span class="textOver four">{{ item.id_number }}</span>
  65. <span class="textOver five">{{ item.school_name }}</span>
  66. <span class="textOver six">{{ item.major }}</span>
  67. <span class="textOver seven">{{ item.entry_year }}</span>
  68. <span class="textOver eight">{{ item.phone }}</span>
  69. <span class="textOver nine">{{ item.classname }}</span>
  70. <span class="textOver ten">{{ item.bedroom ? item.bedroom : '暂无' }}</span>
  71. <span class="textOver twlve"></span>
  72. </p>
  73. </div>
  74. </el-col>
  75. </span>
  76. </el-row>
  77. </div>
  78. </template>
  79. <script>
  80. import { mapState, createNamespacedHelpers } from 'vuex';
  81. export default {
  82. name: 'print-sign',
  83. props: {
  84. list: { type: Array, default: () => [] },
  85. signclass: { type: Object },
  86. },
  87. components: {},
  88. data: function() {
  89. return {
  90. display: 'list',
  91. };
  92. },
  93. created() {},
  94. methods: {
  95. toPrint() {
  96. this.$print(this.$refs.print);
  97. },
  98. },
  99. computed: {
  100. ...mapState(['user']),
  101. pageTitle() {
  102. return `${this.$route.meta.title}`;
  103. },
  104. },
  105. metaInfo() {
  106. return { title: this.$route.meta.title };
  107. },
  108. };
  109. </script>
  110. <style lang="less" scoped>
  111. .printList {
  112. width: 1050px;
  113. .printInfo {
  114. // height: 890px;
  115. overflow: hidden;
  116. // border: 1px solid #000;
  117. zoom: 0.8;
  118. p:nth-child(1) {
  119. height: 29.5px;
  120. border-top: 1px solid #000;
  121. border-right: 1px solid #000;
  122. span {
  123. display: inline-block;
  124. height: 30px;
  125. line-height: 30px;
  126. text-align: center;
  127. border-left: 1px solid #000;
  128. // border-right: 1px solid #000;
  129. font-weight: bold;
  130. }
  131. }
  132. .list {
  133. border: 1px solid #000;
  134. height: 21px;
  135. border-bottom: 0;
  136. span {
  137. text-align: center;
  138. display: inline-block;
  139. // border-left: 1px solid #000;
  140. border-right: 1px solid #000;
  141. }
  142. }
  143. .list:nth-child(37) {
  144. border-bottom: 1px solid #000;
  145. }
  146. .list:last-child {
  147. border-bottom: 1px solid #000;
  148. }
  149. p {
  150. .xuhao {
  151. width: 40px;
  152. }
  153. .one {
  154. width: 150px;
  155. }
  156. .two {
  157. width: 40px;
  158. }
  159. .three {
  160. width: 90px;
  161. }
  162. .four {
  163. width: 180px;
  164. }
  165. .five {
  166. width: 185px;
  167. }
  168. .six {
  169. width: 205px;
  170. }
  171. .seven {
  172. width: 70px;
  173. }
  174. .eight {
  175. width: 110px;
  176. }
  177. .nine {
  178. width: 70px;
  179. }
  180. .ten {
  181. width: 90px;
  182. }
  183. .twlve {
  184. width: 64px;
  185. }
  186. }
  187. }
  188. }
  189. .textOver {
  190. overflow: hidden;
  191. text-overflow: ellipsis;
  192. white-space: nowrap;
  193. }
  194. .signclass {
  195. margin: 15px 0;
  196. p {
  197. text-align: center;
  198. span {
  199. color: #8400ff;
  200. font-weight: bold;
  201. }
  202. }
  203. }
  204. </style>