128 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Vue
		
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Vue
		
	
	
	
| <template>
 | ||
|   <view class="example-page">
 | ||
|     <view class="header">
 | ||
|       <text class="title">排行榜弹窗组件示例</text>
 | ||
|     </view>
 | ||
| 
 | ||
|     <view class="content">
 | ||
|       <view class="button-group">
 | ||
|         <u-button
 | ||
|           type="primary"
 | ||
|           size="large"
 | ||
|           @click="showRanking"
 | ||
|           :loading="loading"
 | ||
|         >
 | ||
|           显示排行榜
 | ||
|         </u-button>
 | ||
|       </view>
 | ||
| 
 | ||
|       <view class="info-section">
 | ||
|         <text class="info-title">使用说明:</text>
 | ||
|         <text class="info-text"
 | ||
|           >1. 点击按钮将依次显示直推人数和直推金额排行榜</text
 | ||
|         >
 | ||
|         <text class="info-text">2. 前三名会特殊展示在顶部</text>
 | ||
|         <text class="info-text">3. 4-30名可在下方滚动查看</text>
 | ||
|         <text class="info-text">4. 关闭人数排行后自动显示金额排行</text>
 | ||
|       </view>
 | ||
|     </view>
 | ||
| 
 | ||
|     <!-- 排行榜弹窗组件 -->
 | ||
|     <RankingPopup ref="rankingPopup" @onRankingComplete="onRankingComplete" />
 | ||
|   </view>
 | ||
| </template>
 | ||
| 
 | ||
| <script>
 | ||
| import RankingPopup from './RankingPopup.vue'
 | ||
| 
 | ||
| export default {
 | ||
|   name: 'RankingPopupExample',
 | ||
|   components: {
 | ||
|     RankingPopup,
 | ||
|   },
 | ||
|   data() {
 | ||
|     return {
 | ||
|       loading: false,
 | ||
|     }
 | ||
|   },
 | ||
|   methods: {
 | ||
|     // 显示排行榜
 | ||
|     async showRanking() {
 | ||
|       this.loading = true
 | ||
|       try {
 | ||
|         await this.$refs.rankingPopup.showRankingPopups()
 | ||
|       } catch (error) {
 | ||
|         console.error('显示排行榜失败:', error)
 | ||
|       } finally {
 | ||
|         this.loading = false
 | ||
|       }
 | ||
|     },
 | ||
| 
 | ||
|     // 排行榜展示完成回调
 | ||
|     onRankingComplete() {
 | ||
|       console.log('排行榜展示完成')
 | ||
|       uni.showToast({
 | ||
|         title: '排行榜展示完成',
 | ||
|         icon: 'success',
 | ||
|       })
 | ||
|     },
 | ||
|   },
 | ||
| }
 | ||
| </script>
 | ||
| 
 | ||
| <style lang="scss" scoped>
 | ||
| .example-page {
 | ||
|   min-height: 100vh;
 | ||
|   background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
 | ||
|   padding: 40rpx;
 | ||
| }
 | ||
| 
 | ||
| .header {
 | ||
|   text-align: center;
 | ||
|   margin-bottom: 60rpx;
 | ||
| 
 | ||
|   .title {
 | ||
|     font-size: 36rpx;
 | ||
|     font-weight: bold;
 | ||
|     color: #333;
 | ||
|   }
 | ||
| }
 | ||
| 
 | ||
| .content {
 | ||
|   max-width: 600rpx;
 | ||
|   margin: 0 auto;
 | ||
| }
 | ||
| 
 | ||
| .button-group {
 | ||
|   text-align: center;
 | ||
|   margin-bottom: 60rpx;
 | ||
| }
 | ||
| 
 | ||
| .info-section {
 | ||
|   background: rgba(255, 255, 255, 0.9);
 | ||
|   padding: 40rpx;
 | ||
|   border-radius: 20rpx;
 | ||
|   box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1);
 | ||
| 
 | ||
|   .info-title {
 | ||
|     display: block;
 | ||
|     font-size: 28rpx;
 | ||
|     font-weight: bold;
 | ||
|     color: #333;
 | ||
|     margin-bottom: 20rpx;
 | ||
|   }
 | ||
| 
 | ||
|   .info-text {
 | ||
|     display: block;
 | ||
|     font-size: 24rpx;
 | ||
|     color: #666;
 | ||
|     line-height: 1.6;
 | ||
|     margin-bottom: 12rpx;
 | ||
| 
 | ||
|     &:last-child {
 | ||
|       margin-bottom: 0;
 | ||
|     }
 | ||
|   }
 | ||
| }
 | ||
| </style>
 |