金诚优选前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

165 lines
4.1 KiB

4 years ago
  1. <template>
  2. <view>
  3. <lf-nav title="活动详情" :showIcon="true"></lf-nav>
  4. <view class="content" v-if="$isRight(activity_details)">
  5. <view class="title">{{activity_details.name}}</view>
  6. <view class="level2-title">
  7. {{activity_details.username}}
  8. </view>
  9. <view class="level3-title">
  10. <view>活动时间</view>
  11. <view class="color1">{{activity_details.time_start}}~{{activity_details.time_end}}</view>
  12. </view>
  13. <view class="level3-title">
  14. <view>报名时间</view>
  15. <text class="color2">{{activity_details.apply_start}}~{{activity_details.apply_end}}</text>
  16. </view>
  17. <view class="level3-title">
  18. <view>活动内容</view>
  19. <rich-text :nodes="activity_details.content" v-if="activity_details.content"></rich-text>
  20. </view>
  21. <view class="level3-title">
  22. <text>活动人数</text>
  23. <text class="color2">{{activity_details.member_count}}</text>
  24. </view>
  25. <view class="level3-title">
  26. <text>活动报名</text>
  27. <text class="color1" v-if="activity_details.price == 0">免费</text>
  28. <text class="color1" v-else>{{activity_details.price}}</text>
  29. </view>
  30. <view class="level3-title">
  31. <view>活动规则</view>
  32. <view class="color2">
  33. <view>{{activity_details.rule}}</view>
  34. </view>
  35. </view>
  36. <button v-if="$isRight(activity_details.apply)" class="btn lf-opacity" :disabled="true">
  37. 已经报名
  38. </button>
  39. <button v-else-if="enter_type == 0" class="btn"
  40. hover-class="lf-opacity"
  41. :disabled="is_end"
  42. :class="{'lf-opacity': is_end}"
  43. @click="submit">{{ is_end ? '名额已满' : '立即报名' }}
  44. </button>
  45. </view>
  46. </view>
  47. </template>
  48. <script>
  49. export default {
  50. data(){
  51. return {
  52. is_end: false ,// 是否可报名,false为活动为结束可报名,否则不可报名
  53. activity_id: 0,
  54. activity_details: '',
  55. enter_type: 0,
  56. show_count: 0
  57. }
  58. },
  59. onLoad(e){
  60. this.activity_id = e.activity_id;
  61. this.enter_type = e.enter_type;
  62. if(e.is_end == 0) {
  63. this.is_end = false;
  64. }else {
  65. this.is_end = true;
  66. }
  67. console.log('传来的type',this.is_end);
  68. this.getActivityDetails();
  69. },
  70. onShow(){
  71. this.show_count++;
  72. if(this.show_count > 1){
  73. this.getActivityDetails();
  74. }
  75. },
  76. methods: {
  77. getActivityDetails() {
  78. this.$http
  79. .get({
  80. api: 'api/activity/detail',
  81. data: {
  82. activity_id: this.activity_id
  83. },
  84. header: {
  85. Authorization: this.$cookieStorage.get('user_token')
  86. },
  87. })
  88. .then(res => {
  89. if (res.data.code == 200) {
  90. if (res.data.status) {
  91. this.activity_details = res.data.data;
  92. console.log('活动详情',this.activity_details);
  93. } else {
  94. wx.showModal({
  95. content: res.message || '请下拉页面刷新重试',
  96. showCancel: false
  97. });
  98. }
  99. } else {
  100. wx.showModal({
  101. content: '请下拉页面刷新重试',
  102. showCancel: false
  103. });
  104. }
  105. wx.hideLoading();
  106. })
  107. .catch(() => {
  108. wx.hideLoading();
  109. wx.showModal({
  110. content: '请求失败',
  111. showCancel: false
  112. });
  113. });
  114. },
  115. submit(){
  116. if(this.is_end) return;
  117. this.$url('/pages/index/activity/confirm?activity_id='+this.activity_id);
  118. }
  119. }
  120. }
  121. </script>
  122. <style lang="scss" scoped="scoped">
  123. .content{
  124. width: 750rpx;
  125. height: max-content;
  126. padding: 30rpx 32rpx;
  127. box-sizing: border-box;
  128. .title{
  129. font-size: 36rpx;
  130. color: #222222;
  131. font-weight: bold;
  132. min-height: 100rpx;
  133. }
  134. .level2-title{
  135. font-size: 28rpx;
  136. color: #222222;
  137. font-weight: bold;
  138. margin-top: 20rpx;
  139. }
  140. .level3-title{
  141. margin-top: 30rpx;
  142. font-size: 28rpx;
  143. color: #777777;
  144. }
  145. .btn{
  146. width: 550rpx;
  147. height: 100rpx;
  148. line-height: 100rpx;
  149. background-color: #15716E;
  150. border-radius: 50rpx;
  151. color: #FFFFFF;
  152. font-size: 32rpx;
  153. margin-top: 60rpx;
  154. }
  155. }
  156. .color1{
  157. color: #F63434;
  158. }
  159. .color2{
  160. color: #222222;
  161. }
  162. </style>