courseModule.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <template>
  2. <view style="margin: 20rpx 0;">
  3. <view class="title" @click="openModule(menuItem)">
  4. <image src="/static/icon/up1.png" class="icon_up" v-if="down"></image>
  5. <image src="/static/icon/down1.png" class="icon_up" v-if="!down"></image>
  6. <text style="margin-left: 10rpx;">{{menuItem.name}}</text>
  7. </view>
  8. <view v-if="!down">
  9. <view v-for="(itemM,indexM) in list" >
  10. <courseChapter :goodsId="goodsId" :isBuy="isBuy" :gradeId="gradeId" :isRebuild="isRebuild" :menuItem="itemM" :levelId="levelId+'-'+itemM.chapterId"></courseChapter>
  11. <u-line v-if="indexM<list.length-1"></u-line>
  12. </view>
  13. </view>
  14. </view>
  15. </template>
  16. <script>
  17. import courseChapter from '@/components/course/courseChapter.vue';
  18. export default {
  19. name: 'courseModule',
  20. props: {
  21. menuItem: {
  22. type: Object,
  23. default: {}
  24. },
  25. goodsId: {
  26. type: Number,
  27. default: 0
  28. },
  29. isBuy: { //是否是已购买商品
  30. type: Boolean,
  31. default: false
  32. },
  33. levelId: {
  34. type: String,
  35. default: ""
  36. },
  37. isRebuild: { //是否重修目录
  38. type: Boolean,
  39. default: false
  40. },
  41. gradeId: { //重修需要班级ID
  42. type: Number,
  43. default: 0
  44. }
  45. },
  46. components: {
  47. courseChapter
  48. },
  49. data() {
  50. return {
  51. down:true,
  52. list:[]
  53. };
  54. },
  55. onLoad() {},
  56. created() {
  57. },
  58. mounted() {
  59. },
  60. methods: {
  61. openModule(item){
  62. this.down = !this.down
  63. if(!this.down&&this.list.length==0){
  64. if(this.isBuy){
  65. if(this.isRebuild){
  66. this.getReChapterList(item.id,item.courseId)
  67. }else{
  68. this.getBuyChapterList(item.id,item.courseId) //已购买目录
  69. }
  70. }else{
  71. this.getChapterList(item.id) //未购买目录
  72. }
  73. }
  74. },
  75. getChapterList(moduleId) {
  76. let self = this
  77. this.$api.chapterList(moduleId).then(res => {
  78. if(res.data.code==200){
  79. for(let i=0;i<res.data.data.length;i++){
  80. let item = res.data.data[i]
  81. item.id = item.chapterId
  82. }
  83. self.list = res.data.data
  84. }
  85. });
  86. },
  87. getReChapterList(moduleId,courseId) {
  88. let self = this
  89. this.$api.reChapterList({moduleId:moduleId,gradeId:this.gradeId,courseId:courseId,rebuild:1}).then(res => {
  90. if(res.data.code==200){
  91. for(let i=0;i<res.data.data.length;i++){
  92. let item = res.data.data[i]
  93. item.id = item.chapterId
  94. }
  95. self.list = res.data.data
  96. }
  97. });
  98. },
  99. getBuyChapterList(moduleId,courseId) {
  100. let self = this
  101. this.$api.reChapterList({moduleId:moduleId,gradeId:this.gradeId,courseId:courseId}).then(res => {
  102. if(res.data.code==200){
  103. for(let i=0;i<res.data.data.length;i++){
  104. let item = res.data.data[i]
  105. item.id = item.chapterId
  106. }
  107. self.list = res.data.data
  108. }
  109. });
  110. },
  111. }
  112. };
  113. </script>
  114. <style scoped>
  115. .icon_up{
  116. width: 24rpx;
  117. height: 24rpx;
  118. }
  119. .title{
  120. font-size: 30rpx;
  121. font-family: PingFang SC;
  122. font-weight: bold;
  123. color: #333333;
  124. white-space:nowrap;
  125. overflow:hidden;
  126. text-overflow:ellipsis;
  127. }
  128. </style>