classroom-preview.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <template>
  2. <div>
  3. <el-form inline>
  4. <el-form-item label="主教老师:">{{coreTeacherName}}</el-form-item>
  5. <el-form-item label="助教老师:" v-if="assistantName">{{assistantName}}</el-form-item>
  6. </el-form>
  7. <el-table
  8. :header-cell-style="{background:'#EDEEF0',color:'#444'}"
  9. :data="typelist"
  10. >
  11. <el-table-column
  12. label="课程类型"
  13. prop="name"
  14. ></el-table-column>
  15. <el-table-column
  16. label="课时数"
  17. prop="surplus"
  18. ></el-table-column>
  19. <el-table-column
  20. label="总排课时长(分钟)"
  21. prop="courseTotalMinuties"
  22. ></el-table-column>
  23. <el-table-column
  24. label="剩余时长(分钟)"
  25. prop="surplusTime"
  26. ></el-table-column>
  27. </el-table>
  28. <div style="color: red;font-weight: bold;margin: 20px 0;">确认排课后剩余时长将被系统删除,不可排课</div>
  29. <el-table
  30. :header-cell-style="{background:'#EDEEF0',color:'#444'}"
  31. :data="details"
  32. max-height="300px"
  33. >
  34. <el-table-column
  35. label="课程类型"
  36. prop="type"
  37. >
  38. <span slot-scope="scope">{{courseTypeListByName[scope.row.type]}}</span>
  39. </el-table-column>
  40. <el-table-column
  41. label="周次"
  42. key="week"
  43. >
  44. <span slot-scope="scope">{{dayjs(scope.row.startClassTime).day()}}</span>
  45. </el-table-column>
  46. <el-table-column
  47. label="开始时间"
  48. prop="startClassTime"
  49. ></el-table-column>
  50. <el-table-column
  51. label="课程时长(分钟)"
  52. key="time"
  53. >
  54. <span slot-scope="scope">{{getTimers(scope.row)}}</span>
  55. </el-table-column>
  56. </el-table>
  57. </div>
  58. </template>
  59. <script>
  60. import { diffTimerFormMinute } from '@/utils/date'
  61. import dayjs from 'dayjs';
  62. export default {
  63. props: {
  64. types: {
  65. type: Object,
  66. default: {}
  67. },
  68. details: {
  69. type: Array,
  70. default: []
  71. },
  72. courseTypeListByName: {
  73. type: Object,
  74. default: {}
  75. },
  76. teacherList: {
  77. type: Array,
  78. default: []
  79. },
  80. cooperationList: {
  81. type: Array,
  82. default: []
  83. },
  84. coreTeacher: {
  85. type: String
  86. },
  87. assistant: {
  88. type: Array,
  89. default: []
  90. },
  91. },
  92. computed: {
  93. coreTeacherName() {
  94. let name = ''
  95. for (const item of this.teacherList) {
  96. if (this.coreTeacher == item.id) {
  97. name = item.realName
  98. break
  99. }
  100. }
  101. return name
  102. },
  103. assistantName() {
  104. let names = []
  105. for (const item of this.cooperationList) {
  106. if (this.assistant.includes(item.id)) {
  107. names.push(item.realName)
  108. }
  109. }
  110. return names.join(' ')
  111. },
  112. typelist() {
  113. const list = []
  114. for (const key in this.types) {
  115. if (Object.hasOwnProperty.call(this.types, key)) {
  116. const item = this.types[key];
  117. let surplusTime = 0
  118. let surplus = 0
  119. for (const ke of item.cycle) {
  120. surplus += parseFloat(ke.expectCourseNum)
  121. surplusTime += (parseFloat(ke.expectCourseNum) * parseFloat(ke.time))
  122. }
  123. surplusTime = item.courseTotalMinuties - surplusTime
  124. list.push({
  125. name: this.courseTypeListByName[key],
  126. cycles: item.cycle.length,
  127. courseTotalMinuties: item.courseTotalMinuties,
  128. surplus,
  129. surplusTime
  130. })
  131. }
  132. }
  133. return list
  134. }
  135. },
  136. mounted() {
  137. console.log(this)
  138. },
  139. methods: {
  140. getTimers (item) {
  141. const time = diffTimerFormMinute(dayjs(item.classDate).format('YYYY-MM-DD'), dayjs(item.startClassTime).format('HH:mm'), dayjs(item.endClassTime).format('HH:mm'))
  142. return time
  143. }
  144. }
  145. }
  146. </script>
  147. <style lang="less" scoped>
  148. </style>