time-table.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <template>
  2. <div id="index" style="padding-left:10rem">
  3. <el-row type="flex" align="middle" justify="end" class="btn_bar">
  4. <el-col :span="4" class="printingBtn">
  5. <el-button type="primary" size="mini" @click="toPrint()">打印课程表</el-button>
  6. </el-col>
  7. </el-row>
  8. <el-row class="rowLesson" type="flex" justify="center" ref="print">
  9. <el-col :span="21" class="timeTable">
  10. <el-col :span="24" class="top">
  11. <el-col :span="24" class="title"> 2020年第({{ data.term }})期高校大学生就业能力拓展训练课程表({{ data.name }}班) </el-col>
  12. <el-col :span="24" class="date"> ({{ th[0] }}—{{ th[th.length - 1] }}) </el-col>
  13. </el-col>
  14. <el-col :span="24" class="info">
  15. <table border="1" class="table">
  16. <tr>
  17. <th colspan="2" class="th">
  18. <p style="text-align:right;padding:0 10px;color:#000;">星期</p>
  19. <p style="text-align:center;padding:0 10px;color:#000;">课程</p>
  20. <p style="text-align:left;padding:0 10px;color:#000;">时间</p>
  21. </th>
  22. <th class="th" v-for="(date, index) in th" :key="index">
  23. <p>{{ date | getWeekDay }}</p>
  24. <p>({{ date | getDay }})</p>
  25. </th>
  26. <th class="th beizhu">备注</th>
  27. </tr>
  28. <!-- 第一行需要合并2行单元格显示上午 -->
  29. <!-- 第三行需要合并3行单元格显示下午 -->
  30. <!-- rowspan="5" 班主任,礼仪课教师等其他信息 -->
  31. <tr v-for="(time, ti) in tr" :key="ti">
  32. <td rowspan="2" v-if="ti == 0">上午</td>
  33. <td rowspan="3" v-if="ti == 2">下午</td>
  34. <td>{{ time }}</td>
  35. <td v-for="(date, di) in th" :key="di" v-html="getLesson(date, time)"></td>
  36. <td rowspan="5" v-if="ti == 0">
  37. <p>
  38. 上课地点:<span>{{ data.jslocation || '' }}</span>
  39. </p>
  40. <p>
  41. 班主任:<span class="teacherName">{{ data.headteacher || '' }}</span>
  42. </p>
  43. <p>
  44. 礼仪课:<span class="teacherName">{{ data.lyteacher || '' }}</span>
  45. </p>
  46. </td>
  47. </tr>
  48. <tr>
  49. <td colspan="2">教师签字</td>
  50. <td></td>
  51. <td></td>
  52. <td></td>
  53. <td></td>
  54. <td></td>
  55. <td colspan="2"></td>
  56. </tr>
  57. </table>
  58. </el-col>
  59. </el-col>
  60. </el-row>
  61. </div>
  62. </template>
  63. <script>
  64. import _ from 'lodash';
  65. const moment = require('moment');
  66. moment.locale('zh-cn');
  67. export default {
  68. name: 'index',
  69. props: {
  70. th: { type: Array, default: () => [] },
  71. tr: { type: Array, default: () => [] },
  72. lessons: { type: Array, default: () => [] },
  73. data: null,
  74. },
  75. components: {},
  76. data: () => ({}),
  77. created() {},
  78. computed: {},
  79. methods: {
  80. getLesson(date, time) {
  81. let r = this.lessons.find(f => f.date == date && f.time == time);
  82. if (!r) return '--';
  83. else {
  84. let { subname, teaname = '' } = r;
  85. let text = `${subname}<br/><span style="color:red">${teaname}</span>`;
  86. return text;
  87. }
  88. },
  89. toPrint() {
  90. this.$print(this.$refs.print);
  91. },
  92. },
  93. filters: {
  94. getWeekDay(date) {
  95. return moment(date).format('dddd');
  96. },
  97. getDay(date) {
  98. return moment(date).format('MM月DD日');
  99. },
  100. },
  101. };
  102. </script>
  103. <style lang="less" scoped>
  104. @import '~@frame/style/timeTable.less';
  105. </style>