classroom-preview.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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. prop="startClassTime"
  43. ></el-table-column>
  44. <el-table-column
  45. label="课程时长(分钟)"
  46. key="time"
  47. >
  48. <span slot-scope="scope">{{getTimers(scope.row)}}</span>
  49. </el-table-column>
  50. </el-table>
  51. </div>
  52. </template>
  53. <script>
  54. import { diffTimerFormMinute } from '@/utils/date'
  55. import dayjs from 'dayjs';
  56. export default {
  57. props: {
  58. types: {
  59. type: Object,
  60. default: {}
  61. },
  62. details: {
  63. type: Array,
  64. default: []
  65. },
  66. courseTypeListByName: {
  67. type: Object,
  68. default: {}
  69. },
  70. teacherList: {
  71. type: Array,
  72. default: []
  73. },
  74. cooperationList: {
  75. type: Array,
  76. default: []
  77. },
  78. coreTeacher: {
  79. type: String
  80. },
  81. assistant: {
  82. type: Array,
  83. default: []
  84. },
  85. },
  86. computed: {
  87. coreTeacherName() {
  88. let name = ''
  89. for (const item of this.teacherList) {
  90. if (this.coreTeacher == item.id) {
  91. name = item.realName
  92. break
  93. }
  94. }
  95. return name
  96. },
  97. assistantName() {
  98. let names = []
  99. for (const item of this.cooperationList) {
  100. if (this.assistant.includes(item.id)) {
  101. names.push(item.realName)
  102. }
  103. }
  104. return names.join(' ')
  105. },
  106. typelist() {
  107. const list = []
  108. for (const key in this.types) {
  109. if (Object.hasOwnProperty.call(this.types, key)) {
  110. const item = this.types[key];
  111. let surplusTime = 0
  112. let surplus = 0
  113. for (const ke of item.cycle) {
  114. surplus += parseFloat(ke.expectCourseNum)
  115. surplusTime += (parseFloat(ke.expectCourseNum) * parseFloat(ke.time))
  116. }
  117. surplusTime = item.courseTotalMinuties - surplusTime
  118. list.push({
  119. name: this.courseTypeListByName[key],
  120. cycles: item.cycle.length,
  121. courseTotalMinuties: item.courseTotalMinuties,
  122. surplus,
  123. surplusTime
  124. })
  125. }
  126. }
  127. return list
  128. }
  129. },
  130. mounted() {
  131. console.log(this)
  132. },
  133. methods: {
  134. getTimers (item) {
  135. const time = diffTimerFormMinute(dayjs(item.classDate).format('YYYY-MM-DD'), dayjs(item.startClassTime).format('HH:mm'), dayjs(item.endClassTime).format('HH:mm'))
  136. console.log(time, item)
  137. return time
  138. }
  139. }
  140. }
  141. </script>
  142. <style lang="less" scoped>
  143. </style>