teacher_course_my_publish.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <template>
  2. <view class="courseWrapper">
  3. <view v-for="(item, index) in requirement" :key="index">
  4. <view class="requires" @click="requireDetail(item.courseId)">
  5. <uni-row class="demo-uni-row">
  6. <uni-col offset="1">
  7. <view class="requires-col1">课程号:{{item.courseId}}</view>
  8. </uni-col>
  9. </uni-row>
  10. <uni-row class="demo-uni-row">
  11. <uni-col offset="1" :span="16">
  12. <view class="requires-col2">科目:{{item.subject}}</view>
  13. </uni-col>
  14. <uni-col :span="7">
  15. <view>
  16. <button @click.stop="open(item)" size="mini" :type="item.buttonType">{{item.display}}</button>
  17. </view>
  18. </uni-col>
  19. </uni-row>
  20. <view class="requires-col3">
  21. <uni-row class="demo-uni-row">
  22. <uni-col :span="4" offset="12">
  23. <view style="color: red;">{{item.verifyStatus}}</view>
  24. </uni-col>
  25. <uni-col :span="4" >
  26. <view style="color: red;">{{item.deal}}</view>
  27. </uni-col>
  28. <uni-col :span="4" >
  29. <view style="color: red;">{{item.locked}}</view>
  30. </uni-col>
  31. </uni-row>
  32. </view>
  33. </view>
  34. </view>
  35. <uni-popup ref="popup" type="message">
  36. <uni-popup-message :type="popupType" :message="showMessage" :duration="1000"></uni-popup-message>
  37. </uni-popup>
  38. </view>
  39. </template>
  40. <script>
  41. export default {
  42. data() {
  43. return {
  44. requirement: [],
  45. showMessage: '上架成功',
  46. popupType: 'success',
  47. publishCount: 0
  48. }
  49. },
  50. onShow() {
  51. this.getPublishCounts()
  52. },
  53. methods: {
  54. // 查询个人上架了多少课程
  55. async getPublishCounts() {
  56. const { data: result } = await uni.$http.get('/education/teacher-courses/showPersonCourse')
  57. this.publishCount = result.data.publishCounts
  58. let courses = []
  59. courses = result.data.list
  60. for (let i = 0; i < courses.length; i++) {
  61. if (courses[i].display === '上架') {
  62. courses[i].display = '下架'
  63. courses[i].buttonType = 'warn'
  64. } else {
  65. courses[i].display = '上架'
  66. courses[i].buttonType = 'primary'
  67. }
  68. }
  69. this.requirement = courses
  70. },
  71. async open(item) {
  72. if (item.display === '上架') {
  73. if (item.verifyStatus !== '已通过') return uni.$showMsg('审核通过才能上架')
  74. if (item.deal === '已成交') return uni.$showMsg('已成交的课程不能上架')
  75. if (item.locked === '已锁') return uni.$showMsg('正在锁定的需求不能上架')
  76. if (this.publishCount >= 4) return uni.$showMsg('最多上架4个课程')
  77. }
  78. const queryObj = {
  79. display: item.display,
  80. courseId: item.courseId
  81. }
  82. const { data: result } = await uni.$http.get('/education/teacher-courses/updatePersonDisplay', queryObj)
  83. if (result.code === 20000) {
  84. if (item.display === '上架') {
  85. item.display = '下架'
  86. this.showMessage = '上架成功'
  87. this.popupType = 'success'
  88. item.buttonType = 'warn'
  89. this.publishCount += 1
  90. } else if (item.display === '下架') {
  91. item.display = '上架'
  92. this.showMessage = '下架成功'
  93. this.popupType = 'error'
  94. item.buttonType = 'primary'
  95. this.publishCount -= 1
  96. }
  97. this.$refs.popup.open('top')
  98. }
  99. },
  100. requireDetail(id) {
  101. uni.navigateTo({
  102. url: '/subpkg/teacher/course/teacher_course_my_detail?courseId=' + encodeURIComponent(id)
  103. })
  104. },
  105. }
  106. }
  107. </script>
  108. <!-- 设置页面背景 -->
  109. <style lang="scss">
  110. page{
  111. height: 100%;
  112. padding: 20rpx;
  113. // background-color: #FFF;
  114. }
  115. </style>
  116. <style scoped lang="scss">
  117. .courseWrapper{
  118. width: 96%;
  119. height: 100%;
  120. }
  121. .requires {
  122. background-color: #FFF;
  123. border: 1px solid #41719C;
  124. border-radius: 30rpx;
  125. margin: 10rpx 0 20rpx;
  126. position: relative;
  127. .requires-col1 {
  128. margin-top: 15rpx;
  129. }
  130. .requires-col2 {
  131. margin: 15rpx 0;
  132. }
  133. .requires-col3 {
  134. padding-bottom: 15rpx;
  135. }
  136. button{
  137. position: absolute;
  138. right: 40rpx;
  139. }
  140. }
  141. </style>