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>
							 |