对接我的活动接口,修改其他页面样式
This commit is contained in:
@@ -65,7 +65,7 @@
|
||||
<up-row justify="space-between" customStyle="margin-bottom: 10px">
|
||||
<up-col span="4">
|
||||
<view class="info-image-left">
|
||||
<image :src="activity.coverImage" style="width: 100%;height: 100%;"></image>
|
||||
<image :src="activity.coverImage" style="width: 100%;height: 100%;border-radius: 16rpx;"></image>
|
||||
</view>
|
||||
</up-col>
|
||||
<up-col span="8">
|
||||
@@ -123,25 +123,25 @@
|
||||
import { ref, watch } from 'vue'
|
||||
import { onLoad, onUnload, onShow } from '@dcloudio/uni-app'
|
||||
import moment from 'moment';
|
||||
import { getActivityList } from '../api/api.js'
|
||||
import { getActivityList,getMyActivityList} from '../api/api.js'
|
||||
|
||||
// ===================== 响应式数据 =====================
|
||||
const activeTab = ref('list') // 'list' 或 'my'
|
||||
const myFilter = ref('reviewing') // 我的活动筛选条件
|
||||
const myFilter = ref('') // 我的活动筛选条件:''审核中, '0'未开始, '1'进行中, '2'已结束
|
||||
const isLoading = ref(false)
|
||||
const hasMoreData = ref(true)
|
||||
const currentPage = ref(1)
|
||||
const pageSize = ref(5)
|
||||
const pageSize = ref(10)
|
||||
const total = ref(0)
|
||||
const displayedActivities = ref([]) // 当前显示的活动列表
|
||||
const statusBarHeight = ref(uni.getSystemInfoSync().statusBarHeight || 0)
|
||||
|
||||
// 筛选条件
|
||||
// 筛选条件:status ''全部, '0'未开始, '1'进行中, '2'已结束
|
||||
const filters = ref([
|
||||
{ label: '审核中', value: 'reviewing' },
|
||||
{ label: '已通过', value: 'passed' },
|
||||
{ label: '未通过', value: 'rejected' },
|
||||
{ label: '已结束', value: 'ended' }
|
||||
{ label: '审核中', value: '' },
|
||||
{ label: '未开始', value: '0' },
|
||||
{ label: '进行中', value: '1' },
|
||||
{ label: '已结束', value: '2' }
|
||||
])
|
||||
|
||||
// ===================== 核心方法 =====================
|
||||
@@ -178,20 +178,27 @@ const switchTab = (tab) => {
|
||||
if (tab === 'list') {
|
||||
resetAndLoad()
|
||||
} else {
|
||||
// 暂无审核功能,"我的活动"默认显示暂无数据
|
||||
displayedActivities.value = []
|
||||
hasMoreData.value = false
|
||||
currentPage.value = 1
|
||||
resetAndLoadMy()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置并刷新我的活动第一页数据
|
||||
*/
|
||||
const resetAndLoadMy = () => {
|
||||
currentPage.value = 1
|
||||
displayedActivities.value = []
|
||||
hasMoreData.value = true
|
||||
getMyActivityListData(1)
|
||||
}
|
||||
|
||||
/**
|
||||
* 切换我的活动筛选条件
|
||||
* @param {string} filter - 筛选值
|
||||
*/
|
||||
const switchFilter = (filter) => {
|
||||
myFilter.value = filter
|
||||
// resetAndLoad()
|
||||
resetAndLoadMy()
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -204,12 +211,10 @@ const getActivityListData = async (pageNum = 1) => {
|
||||
isLoading.value = true
|
||||
|
||||
try {
|
||||
// 构造请求参数(区分活动列表/我的活动 + 筛选条件)
|
||||
// 构造请求参数(活动列表)
|
||||
const params = {
|
||||
pageNum: pageNum,
|
||||
pageSize: pageSize.value,
|
||||
//tabType: activeTab.value, // 传给后端:list/my
|
||||
//filterType: activeTab.value === 'my' ? myFilter.value : '' // 我的活动筛选条件
|
||||
}
|
||||
|
||||
const res = await getActivityList(params)
|
||||
@@ -240,12 +245,60 @@ const getActivityListData = async (pageNum = 1) => {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取我的活动列表数据
|
||||
* @param {number} pageNum - 页码
|
||||
*/
|
||||
const getMyActivityListData = async (pageNum = 1) => {
|
||||
if (isLoading.value) return
|
||||
isLoading.value = true
|
||||
|
||||
try {
|
||||
const params = {
|
||||
pageNum: pageNum,
|
||||
pageSize: pageSize.value,
|
||||
}
|
||||
// status 为空时不传,返回全部
|
||||
if (myFilter.value !== '') {
|
||||
params.status = myFilter.value
|
||||
}
|
||||
|
||||
const res = await getMyActivityList(params)
|
||||
|
||||
if (res.code === 200) {
|
||||
const list = res.rows || []
|
||||
total.value = res.total || 0
|
||||
|
||||
if (pageNum === 1) {
|
||||
displayedActivities.value = list
|
||||
} else {
|
||||
displayedActivities.value = [...displayedActivities.value, ...list]
|
||||
}
|
||||
|
||||
hasMoreData.value = displayedActivities.value.length < total.value
|
||||
currentPage.value = pageNum
|
||||
} else {
|
||||
uni.showToast({ title: res.msg || '加载失败', icon: 'error' })
|
||||
if (pageNum === 1) displayedActivities.value = []
|
||||
}
|
||||
} catch (err) {
|
||||
uni.showToast({ title: '网络异常', icon: 'none' })
|
||||
if (pageNum === 1) displayedActivities.value = []
|
||||
} finally {
|
||||
isLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 加载更多数据
|
||||
*/
|
||||
const loadMoreData = () => {
|
||||
if (isLoading.value || !hasMoreData.value) return
|
||||
getActivityListData(currentPage.value + 1)
|
||||
if (activeTab.value === 'list') {
|
||||
getActivityListData(currentPage.value + 1)
|
||||
} else {
|
||||
getMyActivityListData(currentPage.value + 1)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -294,7 +347,9 @@ const viewActivityDetail = (activity) => {
|
||||
*/
|
||||
onShow(() => {
|
||||
if (activeTab.value === 'list') {
|
||||
getActivityListData(1) // 强制刷新第一页
|
||||
getActivityListData(1)
|
||||
} else {
|
||||
getMyActivityListData(1)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -304,7 +359,6 @@ onShow(() => {
|
||||
onLoad(() => {
|
||||
// 监听详情页报名/取消报名后的刷新通知
|
||||
uni.$on('refreshActivityList', (data) => {
|
||||
// console.log('收到活动列表刷新通知:', data)
|
||||
getActivityListData(1)
|
||||
})
|
||||
})
|
||||
@@ -320,7 +374,9 @@ onUnload(() => {
|
||||
* 监听我的活动筛选条件变化
|
||||
*/
|
||||
watch(() => myFilter.value, () => {
|
||||
// 暂无审核功能,筛选条件暂不触发加载
|
||||
if (activeTab.value === 'my') {
|
||||
resetAndLoadMy()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
@@ -451,7 +507,7 @@ watch(() => myFilter.value, () => {
|
||||
.activity-card {
|
||||
background-color: #fff;
|
||||
border-radius: 16rpx;
|
||||
padding: 30rpx;
|
||||
padding: 12rpx;
|
||||
margin-bottom: 30rpx;
|
||||
/* box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.05); */
|
||||
position: relative;
|
||||
@@ -461,8 +517,8 @@ watch(() => myFilter.value, () => {
|
||||
/* 活动状态标签 */
|
||||
.status-badge {
|
||||
position: absolute;
|
||||
top: 10rpx;
|
||||
left: 20rpx;
|
||||
top: 33rpx;
|
||||
left: 11rpx;
|
||||
padding: 6rpx 20rpx;
|
||||
font-size: 22rpx;
|
||||
border-radius: 15rpx 0rpx 15rpx 0rpx;
|
||||
@@ -492,7 +548,7 @@ watch(() => myFilter.value, () => {
|
||||
|
||||
/* 活动信息 */
|
||||
.activity-info {
|
||||
padding-top: 50rpx;
|
||||
padding-top: 24rpx;
|
||||
}
|
||||
|
||||
/* 活动信息 */
|
||||
@@ -633,7 +689,7 @@ watch(() => myFilter.value, () => {
|
||||
}
|
||||
|
||||
.empty-text {
|
||||
font-size: 32rpx;
|
||||
font-size: 28rpx;
|
||||
color: #999;
|
||||
margin-top: 20rpx;
|
||||
margin-bottom: 10rpx;
|
||||
|
||||
Reference in New Issue
Block a user