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.
195 lines
4.5 KiB
195 lines
4.5 KiB
<template> |
|
<!--pages/activity/index.wxml--> |
|
<view class="activity-page"> |
|
<view class="tab-box"> |
|
<view class="tab-box acea-row row-around" style="position:fixed;"> |
|
<view :class="'tab-item ' + (active == 0 ? 'tab-item-active' : '')" data-i="0" @tap="tabClick">报名中</view> |
|
<view :class="'tab-item ' + (active == 10 ? 'tab-item-active' : '')" data-i="10" @tap="tabClick">已完成</view> |
|
</view> |
|
</view> |
|
<view class="activity-list-box"> |
|
<view v-for="(item, index) in activityList" :key="index" class="activity-item acea-row row-between" @tap="toDetail" :data-id="item.id"> |
|
<view class="activity-img"> |
|
<view class="img-box"> |
|
<!-- <image src="{{item.images}}" mode="widthFix"></image> --> |
|
<image :src="item.images" mode="widthFix"></image> |
|
</view> |
|
</view> |
|
<view class="activity-info-box"> |
|
<view class="activity-info-title acea-row"> |
|
<view class="line2"><text class="sm-card">{{item.cateName}}</text>{{item.name}}</view> |
|
</view> |
|
<view class="activity-info-time acea-row row-middle"> |
|
<text>{{item.activityStartTime}}</text> |
|
<text class="address line1">{{item.address}}</text> |
|
</view> |
|
<view class="signUp-box acea-row row-between"> |
|
<text>已报名人数:{{item.users.length}}</text> |
|
<view class="status-box" v-if="item.status == 0">筹备中</view> |
|
<view class="status-box" v-if="item.status == 1">报名中</view> |
|
<view class="status-box" v-if="item.status == 2">待举办</view> |
|
<view class="status-box" v-if="item.status == 3">已结束</view> |
|
</view> |
|
</view> |
|
</view> |
|
</view> |
|
<view class="under-line">—已显示全部活动—</view> |
|
</view> |
|
</template> |
|
|
|
<script> |
|
// pages/activity/index.js |
|
const app = getApp(); |
|
import util from '../../utils/util'; |
|
|
|
export default { |
|
data() { |
|
return { |
|
active: 0, |
|
activityList: [] |
|
}; |
|
}, |
|
|
|
components: {}, |
|
props: {}, |
|
|
|
/** |
|
* 生命周期函数--监听页面加载 |
|
*/ |
|
onLoad: function (options) {}, |
|
|
|
/** |
|
* 生命周期函数--监听页面初次渲染完成 |
|
*/ |
|
onReady: function () {}, |
|
|
|
/** |
|
* 生命周期函数--监听页面显示 |
|
*/ |
|
onShow: function () { |
|
this.getActivityList(); |
|
}, |
|
|
|
/** |
|
* 生命周期函数--监听页面隐藏 |
|
*/ |
|
onHide: function () {}, |
|
|
|
/** |
|
* 生命周期函数--监听页面卸载 |
|
*/ |
|
onUnload: function () {}, |
|
|
|
/** |
|
* 页面相关事件处理函数--监听用户下拉动作 |
|
*/ |
|
onPullDownRefresh: function () {}, |
|
|
|
/** |
|
* 页面上拉触底事件的处理函数 |
|
*/ |
|
onReachBottom: function () {}, |
|
|
|
/** |
|
* 用户点击右上角分享 |
|
*/ |
|
onShareAppMessage: function () {}, |
|
methods: { |
|
getActivityList() { |
|
app.http('POST', 'activity/activityList', { |
|
status: this.active |
|
}).then(res => { |
|
if (res.data.success) { |
|
res.data.data.content.forEach(item => { |
|
item.activityStartTime = util.getWeek(item.activityStartTime); |
|
item.activityEndTime = util.getWeek(item.activityEndTime); |
|
}); |
|
this.setData({ |
|
activityList: res.data.data.content |
|
}); |
|
} else { |
|
uni.showToast({ |
|
title: res.data.msg, |
|
icon: 'none' |
|
}); |
|
} |
|
}); |
|
}, |
|
|
|
toDetail(e) { |
|
let id = e.currentTarget.dataset.id; |
|
uni.navigateTo({ |
|
url: './detail/index?id=' + id |
|
}); |
|
}, |
|
|
|
tabClick(e) { |
|
var i = Number(e.currentTarget.dataset.i); |
|
this.setData({ |
|
active: i |
|
}); |
|
this.getActivityList(); |
|
} |
|
|
|
} |
|
}; |
|
</script> |
|
<style> |
|
/* pages/activity/index.wxss */ |
|
page{ |
|
height: 100%; |
|
} |
|
.activity-page{ |
|
background: #f2f2f2; |
|
min-height: 100%; |
|
padding-top: 150rpx; |
|
} |
|
.tab-box{ |
|
width: 100%; |
|
height: 82rpx; |
|
background: #fff; |
|
margin-bottom: 50rpx; |
|
} |
|
.tab-item{ |
|
height: 100%; |
|
line-height: 82rpx; |
|
font-size: 34rpx; |
|
color: #A5A5A5; |
|
padding-bottom: 12rpx; |
|
box-sizing: border-box; |
|
font-weight: 600; |
|
position: relative; |
|
} |
|
.tab-item::after{ |
|
display: block; |
|
content: ''; |
|
width: 100%; |
|
height: 6rpx; |
|
background: #EBB672; |
|
position: absolute; |
|
bottom: 0; |
|
left: 0; |
|
opacity: 0; |
|
transform:scaleX(0); |
|
transition: all .2s ease,opacity .15s ease; |
|
} |
|
.tab-item-active{ |
|
color: #333; |
|
} |
|
.tab-item-active::after{ |
|
opacity: 1; |
|
transform: scaleX(1); |
|
} |
|
|
|
.activity-item{ |
|
margin-bottom: 24rpx; |
|
background: #fff; |
|
padding: 16rpx 32rpx; |
|
} |
|
.address{ |
|
width:70%; |
|
display:inline-block; |
|
margin-left:10rpx; |
|
} |
|
|
|
</style> |