123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- <template>
- <view class="tr-consume_content">
- <!-- :enable-back-to-top="current_index===tab_index" 在微信小程序上可以多加这一句,因为默认是允许点击返回顶部的,但是这个页面有多个scroll-view,会全部返回顶部,所以需要控制是当前index才允许点击返回顶部 -->
- <!-- 如果当前页已经加载过数据或者当前切换到的tab是当前页,才展示当前页数据(懒加载) -->
- <view class="total-expend_coins">
- <view class="total-expend_coins__title">累计使用书币</view>
- <view class="total-expend_coins__coin">{{total_number}}</view>
- </view>
- <z-paging v-if="first_loaded || is_currentPage"
- ref="paging"
- v-model="data_list"
- :default-page-size="15"
- @query="queryList"
- :fixed="false">
- <!-- 如果希望其他view跟着页面滚动,可以放在z-paging标签内 -->
- <view class="list" v-for="(item,index) in data_list" :key="index" @click="itemClick(item)">
- <view class="item">
- <view class="item__info">
- <view class="item__info__title">订阅章节</view>
- <view class="item__info__date">{{item.create_at}}</view>
- </view>
- <view class="item__book">
- <view class="item__book__name">{{item.book_name}}</view>
- <view class="item__book__chapter">{{item.chapter_name}}</view>
- </view>
- <view class="item__coin">
- -{{item.coin}}书币
- </view>
- </view>
- </view>
- </z-paging>
- </view>
- </template>
- <script setup lang="ts">
- import { nextTick, ref, watch } from 'vue';
- import { trading_record_item_data } from '../../data/data';
- import { tools } from '../../framework/tools';
-
- let data_list = ref([]) //v-model绑定的这个变量不要在分页请求结束中自己赋值!!!
- let first_loaded = ref(false) //当前组件是否已经加载过了
- let is_currentPage = ref(false) //是否滚动到当前页
- let total_number = ref(0)
- const paging = ref(null) //$ref:paging
-
- const props = defineProps({
- tab_index: Number, //当前组件的index,也就是当前组件是swiper中的第几个
- current_index:Number, // 当前swiper切换到第几个index
- })
- watch(()=>props.current_index, (new_v,old_v)=>{
- if(new_v === props.tab_index){
- // 懒加载,当滑动到当前的item时,才去加载
- if(!first_loaded.value){
- first_loaded.value = true
- // 这里需要延迟渲染z-paging的原因是为了避免在一些平台上立即渲染可能引发的底层报错问题
- nextTick(()=>{
- setTimeout(() => {
- is_currentPage.value = true
- }, 100);
- })
- }
- }
- },{immediate:true})
-
- function queryList(pageNum:number, pageSize:number) {
- // console.log('pageNum=',pageNum,'pageSize=',pageSize)
- tools.requestOrderList(2,pageNum,pageSize,(data)=>{
- // console.log('消费data=',data)
- if(data) {
- if (pageNum == 1) {
- data_list.value = []
- total_number.value = data.total_number
- }
- paging.value.complete(data.list)
- data_list.value = data_list.value.concat(data.list)
- } else {
- paging.value.complete(false)
- }
- })
- }
-
- function itemClick(item_data:trading_record_item_data) {
- }
-
- </script>
- <style lang="scss">
- /* 注意:父节点需要固定高度,z-paging的height:100%才会生效 */
- .tr-consume_content {
- height: 100%;
- background-color: #ffffff;
-
- .total-expend_coins{
- display: flex;
- flex-direction: row;
- justify-content: space-between;
- font-size: 15px;
- color: #737373;
- padding: 0 30rpx;
- padding-top: 20rpx;
- &__title{}
- &__coin{}
- }
-
- .list{
- display: flex;
- justify-content: center;
-
- .item{
- margin-top: 4%;
- display: flex;
- flex-direction: row;
- width: 88%;
- padding: 3% 3%;
- border-radius: 20rpx;
- box-shadow: 0 0 5px 1px rgba(0, 0, 0, 0.1);
- background-color: #ffffff;
- &__info{
- width: 40%;
- &__title {
- font-size: 17px;
- color: #000;
- white-space: nowrap; /* 防止文本换行 */
- overflow: hidden; /* 隐藏溢出的文本 */
- text-overflow: ellipsis; /* 超出部分显示为省略号 */
- }
- &__date{
- margin-top: 16rpx;
- font-size: 13px;
- color: #6D6D6D;
- white-space: nowrap; /* 防止文本换行 */
- overflow: hidden; /* 隐藏溢出的文本 */
- text-overflow: ellipsis; /* 超出部分显示为省略号 */
- }
- }
- &__book{
- width: 40%;
- &__name {
- font-size: 17px;
- color: #000;
- white-space: nowrap; /* 防止文本换行 */
- overflow: hidden; /* 隐藏溢出的文本 */
- text-overflow: ellipsis; /* 超出部分显示为省略号 */
- }
- &__chapter{
- margin-top: 16rpx;
- font-size: 13px;
- color: #6D6D6D;
- white-space: nowrap; /* 防止文本换行 */
- overflow: hidden; /* 隐藏溢出的文本 */
- text-overflow: ellipsis; /* 超出部分显示为省略号 */
- }
- }
- &__coin{
- margin-top: 2%;
- display: flex;
- justify-content: right;
- width: 20%;
- font-size: 15px;
- color: #FF133A;
- }
- }
- }
- }
- </style>
|