<template> <mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :up="upOption"> <view class="get-coupon"> <view> <image class="banner" :src="banner_coupon"></image> </view> <view class="bg-body main"> <coupon-list :list="couponList" :btn-type="3" @refresh="refresh"></coupon-list> </view> </view> </mescroll-body> </template> <script> import { getCouponList, getCoupon } from '@/api/activity'; import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins"; import {baseURL} from '@/config/app'; export default { mixins: [MescrollMixin], data() { return { banner_coupon:baseURL + '/uploads/images/202308171028031a8ab6356.jpg', active: 0, upOption: { empty: { icon: '/static/images/coupon_null.png', tip: "暂无优惠券", } }, tabList: [{ name: '全部', type: 'all' },{ name: '店铺券', type: 'shop' },{ name: '通用券', type: 'platform' }], couponList: [] }; }, onLoad(options) { }, methods: { upCallback(page) { const {tabList, active} = this getCouponList({ page_size:page.size, page_no:page.num, type: tabList[active].type }).then(({ data }) => { if (page.num == 1) this.couponList = []; const curPageData = data.lists; const curPageLen = curPageData.length; const hasNext = !!data.more; this.couponList = this.couponList.concat(curPageData); this.mescroll.endSuccess(curPageLen, hasNext); }).catch(() => { this.mescroll.endErr() }) }, changeActive(index) { this.active = index this.refresh() }, refresh() { this.couponList = [] // 先置空列表,显示加载进度 this.mescroll.resetUpScroll() // 再刷新列表数据 } } }; </script> <style> .banner { width: 100%; height: 340rpx; } .main { border-radius: 20rpx 20rpx 0 0; margin-top: -20rpx; overflow: hidden; position: relative; } </style>