activityManage.vue 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <template>
  2. <view>
  3. <view class="top-fixed">
  4. <view class="search-box ddflex">
  5. <view class="search-input ddflex fflex">
  6. <image src="/static/images/ssico.png"></image>
  7. <input @confirm="searchFn" confirm-type="search" @input="searchFn" v-model="searchVal" class="fflex"
  8. placeholder="请输入关键词" />
  9. </view>
  10. <view class="filter ddflex">
  11. <view class="fflex">
  12. <picker mode="selector" :range="rangeList" range-key="label" v-model="rangeIndex" @change="rangeChange">
  13. <view class="filter-item fflex ddflex f-active" style="text-align: right;justify-content: flex-end;">
  14. <text style="max-width: 150rpx;" class="tover">{{rangeList[rangeIndex].label}}</text>
  15. <image class="filter-item-icon" src="../../static/images/down.png"></image>
  16. </view>
  17. </picker>
  18. </view>
  19. </view>
  20. </view>
  21. </view>
  22. <view style="height: 150rpx;"></view>
  23. <view class="title">
  24. 我的活动<text>共{{total}}个</text>
  25. </view>
  26. <view class="padd30" v-if="pageList.length>0">
  27. <view class="act-bar ddflex" v-for="item,index in pageList">
  28. <view class="act-pic">
  29. <image :src="item.pic" mode="aspectFill"></image>
  30. <view class="act-pic-tag" v-if="item.state==0">审核中</view>
  31. <view class="act-pic-tag" v-if="item.state==6">审核失败</view>
  32. </view>
  33. <view class="flex">
  34. <view class="act-title tovers">{{item.title}}</view>
  35. <view class="act-time" v-if="item.endTime">活动时间:{{formatTime(item.endTime)}}</view>
  36. <view class="act-time" style="color: red;" v-if="item.state==6">{{item.refuse}}</view>
  37. <view class="act-bottom ddflex">
  38. <view class="act-bottom-look ddflex">
  39. <image src="../static/images/person.png"></image>
  40. {{item.person}}人
  41. </view>
  42. <view class="act-edit" v-if="item.state==0||item.state==6" @click="jumpUrl('/match/activityEdit/activityEdit?id='+item.id)">修改</view>
  43. </view>
  44. </view>
  45. </view>
  46. </view>
  47. <view class="nodata nosp bgfff" v-else>
  48. <image src="/static/images/empty_sp.png"></image>
  49. <text>暂无活动</text>
  50. </view>
  51. <view class="act-create" @click="jumpUrl('/match/activityEdit/activityEdit')">
  52. <image src="../static/images/add.png"></image>
  53. <view>发布</view>
  54. </view>
  55. </view>
  56. </template>
  57. <script>
  58. const app = getApp();
  59. const req = require("../../utils/request.js");
  60. import util from "../../utils/util.js";
  61. export default {
  62. components: {},
  63. props: {},
  64. data() {
  65. return {
  66. pageList: [],
  67. isLoad: true,
  68. form: {
  69. page: 1,
  70. limit: 10
  71. },
  72. searchVal:'',
  73. total:0,
  74. saleNo:null,
  75. pcId:null,
  76. rangeIndex:0,
  77. rangeList:[{
  78. label:'全部',
  79. value:-1
  80. },{
  81. label:'审核中',
  82. value:0
  83. },{
  84. label:'审核失败',
  85. value:6
  86. },{
  87. label:'报名中',
  88. value:2
  89. },{
  90. label:'报名结束',
  91. value:3
  92. },{
  93. label:'活动中',
  94. value:4
  95. },{
  96. label:'活动结束',
  97. value:5
  98. }]
  99. }
  100. },
  101. async onLoad(opt) {
  102. await req.silenceLogin(opt.saleNo)
  103. this.pcId = req.getStorage('userInfo').id
  104. this.getPageList()
  105. },
  106. onShow() {
  107. },
  108. onReachBottom: function() {
  109. this.form.page++;
  110. this.getPageList(false);
  111. },
  112. methods: {
  113. jumpUrl(url){
  114. uni.navigateTo({
  115. url:url
  116. })
  117. },
  118. getPageList(isShow) {
  119. if (!this.isLoad) return false;
  120. this.isLoad = false;
  121. let form = this.form;
  122. if(this.searchVal){
  123. form.search = this.searchVal
  124. }else{
  125. form.search = ''
  126. }
  127. form.state = this.rangeList[this.rangeIndex].value
  128. if(form.state==-1) delete form.state
  129. uni.showLoading();
  130. req.getRequest(
  131. '/api/match/page',
  132. form,
  133. res => {
  134. this.total = res.total
  135. res = res?res.list:[]
  136. this.isShow = true;
  137. if (res && res.length == 10) {
  138. this.isLoad = true;
  139. }
  140. if (this.form.page > 1) {
  141. res = this.pageList.concat(res);
  142. }
  143. this.pageList = res;
  144. uni.hideLoading();
  145. },
  146. isShow
  147. );
  148. },
  149. searchFn(){
  150. this.isLoad = true
  151. this.form.page=1
  152. this.getPageList()
  153. },
  154. formatTime(date){
  155. date = new Date(date.replace(/-/g, '/'))
  156. return util.formatTime(date).t3
  157. },
  158. rangeChange(e){
  159. this.rangeIndex = e.detail.value
  160. this.page = 1;
  161. this.isLoad = true;
  162. this.getPageList(true);
  163. }
  164. },
  165. mounted() {
  166. },
  167. onPageScroll: function(e) {
  168. }
  169. }
  170. </script>
  171. <style>
  172. @import "./activityManage.css";
  173. </style>