CourseDetail.vue 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. <template>
  2. <div class="courseEvaluation">
  3. <MHeader />
  4. <van-cell-group>
  5. <van-cell title="课程班名称" :value="teacherClassHeadInfo.classGroupName" />
  6. </van-cell-group>
  7. <van-cell-group>
  8. <van-cell title="课程时间" :value="teacherClassHeadInfo.classTime" />
  9. </van-cell-group>
  10. <van-cell-group>
  11. <van-cell title="乐器" :value="teacherClassHeadInfo.subjectNames" />
  12. </van-cell-group>
  13. <van-cell-group>
  14. <van-cell title="班级学员" :value="teacherClassHeadInfo.studentNames" />
  15. </van-cell-group>
  16. <van-cell-group>
  17. <van-field class="textarea" maxlength="255" autosize label="教学内容" type="textarea" v-model="teachingMaterial" readonly />
  18. </van-cell-group>
  19. <div v-if="courseScheduleComplaints.length > 0">
  20. <div class="title">学员评价</div>
  21. <div class="evaluation-item" v-for="(item, index) in courseScheduleComplaints" :key="index">
  22. <div class="header">
  23. <img v-if="item.avatar" :src="item.avatar" alt="">
  24. <img v-else src="../../assets/images/app/icon_student.png" alt="">
  25. {{ item.username }}
  26. </div>
  27. <div class="rate">评价<van-rate v-model="item.score" readonly :size="20" /></div>
  28. <div class="content">
  29. {{ item.reason }}
  30. </div>
  31. </div>
  32. </div>
  33. <div class="title teacher">老师评价</div>
  34. <div v-if="courseScheduleReview.length > 0">
  35. <van-panel>
  36. <div slot="header" class="van-hairline--bottom" style="display: flex;">
  37. <div class="header"><img src="../../assets/images/app/icon_student.png" alt="">李小明</div>
  38. <div class="header"><img src="../../assets/images/app/icon_student.png" alt="">李小明</div>
  39. </div>
  40. <div slot="default" class="content">盼望着,盼望着,东风来了,春天的脚步近了。一切都像刚睡醒的样子,欣欣然张开了眼。山朗润起来了,水涨起来</div>
  41. </van-panel>
  42. </div>
  43. <div class="button-group">
  44. <van-button type="primary" @click="onSubmit" round size="large">确认</van-button>
  45. </div>
  46. </div>
  47. </template>
  48. <script>
  49. import MHeader from '@/components/MHeader'
  50. import { getStuAndTeaReview, batchAdd } from '@/api/app'
  51. export default {
  52. name: 'courseEvaluation',
  53. components: { MHeader },
  54. data () {
  55. let query = this.$route.query
  56. return {
  57. rate: 2,
  58. courseId: query.courseId,
  59. teachingMaterial: null,
  60. teacherClassHeadInfo: {},
  61. courseScheduleReview: [],
  62. courseScheduleComplaints: [],
  63. courseScheduleReviewList: {},
  64. review4StudentIds: {}
  65. }
  66. },
  67. mounted() {
  68. this.__init()
  69. },
  70. methods: {
  71. __init() {
  72. getStuAndTeaReview({ courseId: this.courseId}).then(res => {
  73. let result = res.data
  74. if(result.code == 200) {
  75. let tempResult = result.data
  76. if(tempResult) {
  77. this.teachingMaterial = tempResult.teachingMaterial
  78. this.teacherClassHeadInfo = tempResult.teacherClassHeadInfo ? tempResult.teacherClassHeadInfo : {}
  79. if(this.teacherClassHeadInfo.classDate) {
  80. this.teacherClassHeadInfo.classTime = this.teacherClassHeadInfo.classDate + ' ' + this.teacherClassHeadInfo.startClassTime + '-' + this.teacherClassHeadInfo.endClassTime
  81. }
  82. this.courseScheduleReview = tempResult.courseScheduleReview ? tempResult.courseScheduleReview : []
  83. this.courseScheduleComplaints = tempResult.courseScheduleComplaints ? tempResult.courseScheduleComplaints : []
  84. this.courseScheduleReviewList = tempResult.courseScheduleReviewList ? tempResult.courseScheduleReviewList : {}
  85. this.review4StudentIds = tempResult.review4StudentIds ? tempResult.review4StudentIds : {}
  86. }
  87. } else {
  88. this.$toast(result.msg)
  89. }
  90. })
  91. },
  92. onSubmit() {
  93. }
  94. }
  95. }
  96. </script>
  97. <style lang="less" scoped>
  98. @import url("../../assets/commonLess/variable.less");
  99. .courseEvaluation {
  100. position: relative;
  101. min-height: 100vh;
  102. }
  103. /deep/.van-cell-group {
  104. margin-top: .15rem;
  105. /deep/.van-cell {
  106. padding: .14rem .16rem;
  107. }
  108. }
  109. /deep/.van-cell__title {
  110. font-size: .17rem;
  111. color: #1A1A1A;
  112. flex: auto 1;
  113. }
  114. /deep/.van-field__control, /deep/.van-cell__value {
  115. font-size: 0.17rem;
  116. color: #666;
  117. width: 70%;
  118. flex: auto;
  119. }
  120. .textarea {
  121. flex-direction: column;
  122. /deep/.van-cell__value {
  123. margin-top: .1rem;
  124. width: 100%;
  125. }
  126. /deep/.van-field__control {
  127. font-size: .15rem;
  128. }
  129. }
  130. .title {
  131. font-size: .16rem;
  132. color: #808080;
  133. line-height: .22rem;
  134. padding: .15rem .16rem .1rem;
  135. &.teacher {
  136. padding-top: 0;
  137. }
  138. }
  139. .evaluation-item {
  140. background-color: #fff;
  141. margin-bottom: .15rem;
  142. padding: .12rem .16rem;
  143. img {
  144. width: .4rem;
  145. height: .4rem;
  146. border-radius: 50%;
  147. overflow: hidden;
  148. margin-right: .08rem;
  149. }
  150. .header {
  151. display: flex;
  152. align-items: center;
  153. font-size: .18rem;
  154. color: #1A1A1A;
  155. }
  156. .rate {
  157. font-size: .14rem;
  158. color: #333333;
  159. display: flex;
  160. padding: .1rem 0;
  161. .van-rate {
  162. margin-left: .05rem;
  163. }
  164. }
  165. .content {
  166. font-size: .15rem;
  167. color: #666666;
  168. }
  169. }
  170. .van-panel {
  171. padding: .12rem .16rem;
  172. margin-top: 0;
  173. margin-bottom: .15rem;
  174. img {
  175. width: .28rem;
  176. height: .28rem;
  177. border-radius: 50%;
  178. overflow: hidden;
  179. margin-right: .08rem;
  180. }
  181. .header {
  182. display: flex;
  183. align-items: center;
  184. font-size: .14rem;
  185. color: #1A1A1A;
  186. padding: .1rem 0;
  187. margin-right: .1rem;
  188. }
  189. .content {
  190. padding-top: .1rem;
  191. font-size: .15rem;
  192. color: #666666;
  193. }
  194. }
  195. .button-group {
  196. margin: .3rem .26rem .2rem;
  197. .van-button--primary {
  198. background: @mColor;
  199. font-size: .18rem;
  200. }
  201. }
  202. </style>