From 6b394c7206326e66811dbd8d646874c8abb20e89 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期四, 26 六月 2025 09:47:34 +0800
Subject: [PATCH] 调整报名活动页面

---
 pages/news/news.vue |  178 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 178 insertions(+), 0 deletions(-)

diff --git a/pages/news/news.vue b/pages/news/news.vue
new file mode 100644
index 0000000..1a11a47
--- /dev/null
+++ b/pages/news/news.vue
@@ -0,0 +1,178 @@
+<template>
+	<view class="wrapper">
+		<view style="height: 100rpx"></view>
+		<!-- 鍐呭鍖哄煙 -->
+		<scroll-view scroll-y class="content" style="height: 40vh;" @scrolltolower="loadMore" :lower-threshold="100">
+			<view class="waterfall">
+			
+					<view class="item" v-for="(item, idx) in mockData" :key="item.id" @click="handleItemClick(item)">
+						<text class="title">{{ item.title }}</text>
+						<text class="publishDate">鍙戝竷鏃堕棿:{{ item.publishDate }}</text>
+					</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="{
+			            loadmore: '涓婃媺鍔犺浇鏇村',
+			            loading: '姝e湪鍔犺浇',
+			            nomore: '娌℃湁鏇村浜�'
+			          }" />
+			</view>
+			<view style="height:150rpx">
+		
+			</view>
+		</scroll-view>
+	</view>
+</template>
+
+<script>
+	import '@/components/uview-components/uview-ui';
+	import { getNews,addNews,editNews,publish,delById } from '@/api/news.js'
+	export default {
+		data() {
+			return {
+				query: {
+					pageNumber: 1,
+					pageSize: 10,
+					publish:1,
+				},
+				loading:false,
+				total:0,
+				mockData:[],
+				noMore:false,
+				
+			}
+		},
+		mounted() {
+			
+		},
+		onLoad() {
+			this.getNewsPage();
+		},
+		methods: {
+			handleItemClick(item){
+				uni.navigateTo({
+					url: `/pages/news/detail?id=${item.id}` // 鍙傛暟閫氳繃 URL 浼犻��
+				});
+			},
+			async getNewsPage(){
+				try {
+					const res = await getNews(this.query);
+					this.loading = false;
+					if(res.statusCode === 200){
+						const newData = res.data.data.map(value =>({
+							id:value.id,
+							title:value.title,
+							publish:value.publish,
+							publishDate:value.publishDate
+						}));
+						// 鏇存柊鎬绘暟鎹噺
+						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;
+						
+					}
+					
+				} catch (error) {
+					console.error('鍔犺浇澶辫触:', error);
+					// 澶辫触鏃跺洖閫�椤电爜
+					if (this.query.pageNumber > 1) {
+						this.query.pageNumber -= 1;
+					}
+				} finally {
+					this.loading = false;
+					uni.hideLoading();
+					uni.stopPullDownRefresh();
+				}
+				
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.wrapper {
+  padding: 0 20rpx;
+  box-sizing: border-box;
+  background-color: #f5f5f5;
+  height: 100%;
+  
+  .content {
+    padding-bottom: 20rpx;
+    box-sizing: border-box;
+    
+    .waterfall {
+      display: flex;
+      flex-direction: column;
+      padding: 0 10rpx;
+      
+      .item {
+        background: #fff;
+        border-radius: 12rpx;
+        padding: 24rpx;
+        margin-bottom: 20rpx;
+        box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05);
+        transition: transform 0.2s ease, box-shadow 0.2s ease;
+        
+        &:active {
+          transform: scale(0.98);
+          box-shadow: 0 2rpx 6rpx rgba(0, 0, 0, 0.1);
+        }
+        
+        .title {
+          display: block;
+          font-size: 28rpx;
+          color: #333;
+          font-weight: 500;
+          line-height: 1.5;
+          margin-bottom: 12rpx;
+          overflow: hidden;
+          text-overflow: ellipsis;
+          display: -webkit-box;
+          -webkit-line-clamp: 3;
+          -webkit-box-orient: vertical;
+        }
+        
+        .publishDate {
+          display: block;
+          font-size: 22rpx;
+          color: #999;
+          text-align: right;
+        }
+      }
+    }
+    
+    .load-more {
+      padding: 30rpx 0;
+      background-color: transparent;
+      
+      .u-loadmore {
+        font-size: 26rpx !important;
+        color: #999 !important;
+      }
+    }
+  }
+}
+
+/* 骞虫澘鍙婁互涓婅澶囬�傞厤 */
+@media (min-width: 768px) {
+  .waterfall {
+    flex-direction: row !important;
+    flex-wrap: wrap;
+    
+    .item {
+      width: calc(50% - 10rpx);
+      margin: 0 5rpx 20rpx;
+    }
+  }
+}
+</style>

--
Gitblit v1.8.0