From be80b22a4a0fcd33e1b17ebdb86eba91cc7de4d2 Mon Sep 17 00:00:00 2001 From: peng <peng.com> Date: 星期三, 02 七月 2025 18:59:06 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- pages/mine/activity/reportActivity.vue | 257 ++++++++++++++++++++++++++------------------------- 1 files changed, 132 insertions(+), 125 deletions(-) diff --git a/pages/mine/activity/reportActivity.vue b/pages/mine/activity/reportActivity.vue index 26f3407..35a3f4e 100644 --- a/pages/mine/activity/reportActivity.vue +++ b/pages/mine/activity/reportActivity.vue @@ -1,24 +1,24 @@ <template> <view class="wrapper"> + <top-bar selectedTitleIndex="activity" textColor="black" @changeTab="topBarChange" class="topBar"></top-bar> + + <view style="height: 100rpx;margin-top: 50px"></view> <!-- 鍐呭鍖哄煙 --> - <scroll-view scroll-y class="content" style="height: 100vh;" @scrolltolower="loadMore" - :lower-threshold="100" - > + <scroll-view scroll-y class="content" style="height: 40vh;" @scrolltolower="loadMore" :lower-threshold="100"> <view class="waterfall"> <view class="column" v-for="(column, index) in columns" :key="index"> <!-- 閬嶅巻姣忓垪鍐呭 --> <view class="item" v-for="(item, idx) in column" :key="item.id" @click="handleItemClick(item)"> <!-- 鍥剧墖绫诲瀷 --> - <image v-if="item.type === '鍥剧墖'" :src="getUrl(item.cover)" mode="widthFix" class="media" - @load="imageLoad" :data-item="item" :style="{ height: item.height + 'px' }" /> + <image v-if="item.type === 'image'" :src="item.url" mode="widthFix" class="media" @load="imageLoad" :data-item="item" + :style="{ height: item.height + 'px' }" /> <!-- 瑙嗛绫诲瀷 --> - <video v-if="item.type === '瑙嗛'" :src="getUrl(item.cover)" class="media" controls - :poster="item.poster" @play="handleVideoPlay" - :style="{ height: item.height + 'px' }"></video> + <video v-if="item.type === 'video'" :src="item.url" class="media" controls :poster="item.poster" :data-item="item" + @play="handleVideoPlay" :style="{ height: item.height + 'px' }"></video> <!-- 鏂囧瓧绫诲瀷 --> - <view v-if="item.type === '鏂囧瓧'" class="text-content"> + <view v-if="item.type === 'text'" class="text-content"> <text class="title">{{ item.cover }}</text> </view> <text class="title">{{ item.title }}</text> @@ -26,48 +26,32 @@ </view> </view> </view> - <!-- <view style="height: 150rpx;"></view> --> - <!-- 鏀硅繘鐨勫姞杞芥洿澶氭彁绀� --> - <view class="load-more"> - <u-loadmore - v-if="mockData.length > 0" - :status="loading ? 'loading' : noMore ? 'nomore' : 'loadmore'" - :load-text="{ + <!-- <view style="height: 150rpx;"></view> --> + <!-- 鏀硅繘鐨勫姞杞芥洿澶氭彁绀� --> + <view class="load-more"> + <u-loadmore v-if="mockData.length > 0" :status="loading ? 'loading' : noMore ? 'nomore' : 'loadmore'" + :load-text="{ loadmore: '涓婃媺鍔犺浇鏇村', loading: '姝e湪鍔犺浇', nomore: '娌℃湁鏇村浜�' - }" - /> - </view> - <view style="height:150rpx"> - - </view> + }" /> + </view> + <view style="height:150rpx"> + + </view> </scroll-view> - - + + </view> </template> <script> - import { - changeCollect - } from '@/api/collect.js' - import { - getFilePreviewUrl - } from '@/api/common.js' - import UButton from '@/uview-components/uview-ui/components/u-button/u-button.vue'; - import UImage from '@/uview-components/uview-ui/components/u-image/u-image.vue'; - import ULoadmore from '@/uview-components/uview-ui/components/u-loadmore/u-loadmore.vue' - import { - getActivityReportList, - } from '@/api/activity.js'; + import TopBar from "@/components/TopBar.vue"; + import '@/components/uview-components/uview-ui'; + import {getActivityReportList} from '@/api/activity.js'; export default { - components: { - UImage, - UButton, - ULoadmore - }, + components: {TopBar}, data() { return { columns: [ @@ -81,7 +65,8 @@ baseTextHeight: 120, // 鏂囧瓧鍩虹楂樺害 query: { pageNumber: 1, - pageSize: 8, + pageSize: 10, + publish:1, }, loading: false, // 鏄惁姝e湪鍔犺浇 noMore: false, // 鏄惁娌℃湁鏇村鏁版嵁 @@ -92,12 +77,17 @@ this.getActivityList(); }, methods: { - getUrl(params) { - getFilePreviewUrl(params).then(res => { - return res.data.data - }) + topBarChange(titleObj) { + if (titleObj.index === 'home') { + uni.switchTab({ + url: titleObj.pagePath + }); + } else { + uni.redirectTo({ + url: titleObj.pagePath + }); + } }, - /** * 涓嬫媺鍒锋柊鏃� */ @@ -108,62 +98,65 @@ this.getActivityList(); }, loadMore() { - - // 鏄剧ず鍔犺浇鐘舵�� - this.loading = true; - - // 寤惰繜鎵ц璁︰I鏈夊弽搴旀椂闂� - setTimeout(() => { - this.query.pageNumber += 1; - this.getActivityList(); - }, 300); + // 鏄剧ず鍔犺浇鐘舵�� + this.loading = true; + + // 寤惰繜鎵ц璁︰I鏈夊弽搴旀椂闂� + setTimeout(() => { + this.query.pageNumber += 1; + this.getActivityList(); + }, 300); }, async getActivityList() { - - try { - - const res = await getActivityReportList(this.query); - this.loading = false; - if (res.statusCode === 200) { - const newData = res.data.data.map(value => ({ - id: value.id, - type: value.coverType, - cover: value.cover, - height: value.coverType === '鍥剧墖' ? this.baseImageHeight : - value.coverType === '瑙嗛' ? this.baseVideoHeight : this.baseTextHeight, - title: value.activityName, - content: value.activityContent, - poster: '', - })); - - // 鏇存柊鎬绘暟鎹噺 - this.total = res.data.total || 0; - - // 杩藉姞鎴栨浛鎹㈡暟鎹� - this.mockData = this.query.pageNumber === 1 - ? newData - : [...this.mockData, ...newData]; - - // 鍒ゆ柇鏄惁杩樻湁鏇村鏁版嵁 - this.noMore = newData.length < this.query.pageSize || - this.mockData.length >= this.total; - - // 甯冨眬鏇存柊 - this.$nextTick(() => { - this.layoutItems(); - }); - } - } catch (error) { - console.error('鍔犺浇澶辫触:', error); - // 澶辫触鏃跺洖閫�椤电爜 - if (this.query.pageNumber > 1) { - this.query.pageNumber -= 1; - } - } finally { - this.loading = false; - uni.hideLoading(); - uni.stopPullDownRefresh(); - } + if (this.noMore) { + this.loading = false; + return + } + try { + + const res = await getActivityReportList(this.query); + this.loading = false; + if (res.statusCode === 200) { + const newData = res.data.data.map(value => ({ + id: value.id, + type: value.coverType, + cover: value.cover, + height: value.coverType === 'image' ? this.baseImageHeight : value.coverType === + 'video' ? this.baseVideoHeight : this.baseTextHeight, + title: value.activityName, + content: value.activityContent, + poster: '', + url: value.url + })); + + // 鏇存柊鎬绘暟鎹噺 + this.total = res.data.total || 0; + + // 杩藉姞鎴栨浛鎹㈡暟鎹� + this.mockData = this.query.pageNumber === 1 ? + newData : + [...this.mockData, ...newData]; + + // 鍒ゆ柇鏄惁杩樻湁鏇村鏁版嵁 + this.noMore = newData.length < this.query.pageSize || + this.mockData.length >= this.total; + + // 甯冨眬鏇存柊 + this.$nextTick(() => { + this.layoutItems(); + }); + } + } catch (error) { + console.error('鍔犺浇澶辫触:', error); + // 澶辫触鏃跺洖閫�椤电爜 + if (this.query.pageNumber > 1) { + this.query.pageNumber -= 1; + } + } finally { + this.loading = false; + uni.hideLoading(); + uni.stopPullDownRefresh(); + } }, // 鍥剧墖鍔犺浇瀹屾垚鍥炶皟 layoutItems() { @@ -188,6 +181,10 @@ const ratio = height / width; const item = e.currentTarget.dataset.item; + if (!item) { + console.error('鏃犳硶鑾峰彇鍥剧墖椤规暟鎹�', e); + return; + } // 閲嶆柊璁$畻瀹為檯鏄剧ず楂樺害 const viewWidth = uni.upx2px(345); // 灏唕px杞崲涓簆x const viewHeight = viewWidth * ratio; @@ -219,13 +216,14 @@ <style lang="scss"> /* 鏂板鍔犺浇鏇村鏍峰紡 */ - .load-more { - padding: 20rpx 0; - text-align: center; - color: #999; - font-size: 26rpx; - background-color: #f7f8fa; - } + .load-more { + padding: 20rpx 0; + text-align: center; + color: #999; + font-size: 26rpx; + background-color: #f8f9fa; + } + .btn-container { display: flex; justify-content: center; @@ -239,7 +237,7 @@ height: 100vh; display: flex; flex-direction: column; - background-color: #f7f8fa; + background-color: #f8f9fa; } /* 瀵艰埅鏍忎紭鍖� */ @@ -249,12 +247,12 @@ /* 鍐呭鍖哄煙浼樺寲 */ .content { - flex: 1; - overflow: hidden; - padding: 0 20rpx; - box-sizing: border-box; - /* 纭繚鍙互婊氬姩 */ - -webkit-overflow-scrolling: touch; + flex: 1; + overflow: hidden; + padding: 0 20rpx; + box-sizing: border-box; + /* 纭繚鍙互婊氬姩 */ + -webkit-overflow-scrolling: touch; } /* 鐎戝竷娴佸竷灞�浼樺寲 */ @@ -271,17 +269,19 @@ gap: 20rpx; } - /* 鍗$墖椤逛紭鍖� */ + /* 鍗$墖椤逛紭鍖� - 浣跨敤缁胯壊涓婚 */ .item { - background: #fff; + background: #ffffff; border-radius: 16rpx; overflow: hidden; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); + border: 1px solid #e0f2e9; &:active { transform: scale(0.98); box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.12); + background-color: #f0faf5; } } @@ -290,7 +290,7 @@ width: 100%; display: block; border-radius: 16rpx 16rpx 0 0; - background-color: #f5f5f5; + background-color: #f0faf5; &[mode="widthFix"] { height: auto; @@ -302,17 +302,16 @@ object-fit: cover; } - /* 鏂囧瓧鍐呭鏍峰紡 */ + /* 鏂囧瓧鍐呭鏍峰紡 - 浣跨敤缁胯壊娓愬彉 */ .text-content { padding: 24rpx; - background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%); + // background: linear-gradient(135deg, #38a169 0%, #48bb78 100%); min-height: 160rpx; display: flex; align-items: center; justify-content: center; .title { - color: #fff; font-size: 32rpx; font-weight: 500; line-height: 1.4; @@ -324,11 +323,11 @@ } } - /* 鏍囬鏍峰紡浼樺寲 */ + /* 鏍囬鏍峰紡浼樺寲 - 浣跨敤娣辩豢鑹� */ .title { padding: 20rpx 24rpx; font-size: 28rpx; - color: #333; + color: #2c7a7b; line-height: 1.5; display: -webkit-box; -webkit-box-orient: vertical; @@ -337,7 +336,7 @@ font-weight: 500; &:not(.text-content .title) { - border-top: 1rpx solid #f0f0f0; + border-top: 1rpx solid #e0f2e9; } } @@ -385,4 +384,12 @@ font-size: 28rpx; } } -</style> \ No newline at end of file + + .topBar { + position: fixed; + top: 20rpx; + left: 20rpx; + z-index: 1000; + background-color: #ffffff; + } +</style> -- Gitblit v1.8.0