print-sign.vue 5.6 KB

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