119 lines
2.5 KiB
Vue
119 lines
2.5 KiB
Vue
|
|
|
|
<template>
|
|
<mescroll-body ref="mescrollRef" @init="mescrollInit" @up="upCallback" :up="upOption" @down="downCallback">
|
|
<view class="activity-detail">
|
|
<view class="header" v-if="goodsList.length">
|
|
<image class="header-bg" src="/bundle/static/activity_detail_bg.png"></image>
|
|
<view class="header-con flex-col col-center">
|
|
<view class="title white">{{name}}</view>
|
|
<view class="desc white sm br60">{{title}}</view>
|
|
</view>
|
|
</view>
|
|
<view class="content">
|
|
<view class="goods-container">
|
|
<goods-list :list="goodsList" type="activity"></goods-list>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</mescroll-body>
|
|
</template>
|
|
|
|
<script>
|
|
import {
|
|
getActivityGoodsLists
|
|
} from "@/api/activity";
|
|
import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js";
|
|
|
|
export default {
|
|
mixins: [MescrollMixin], // 使用mixin
|
|
data() {
|
|
return {
|
|
upOption: {
|
|
empty: {
|
|
icon: '/static/images/goods_null.png',
|
|
tip: '暂无商品', // 提示
|
|
}
|
|
},
|
|
goodsList: [],
|
|
name: '',
|
|
title: ''
|
|
};
|
|
},
|
|
onLoad: function(options) {
|
|
const {
|
|
id,
|
|
title,
|
|
name
|
|
} = this.$Route.query
|
|
this.id = id;
|
|
this.title = title
|
|
this.name = name
|
|
uni.setNavigationBarTitle({
|
|
title: name
|
|
});
|
|
},
|
|
methods: {
|
|
upCallback(page) {
|
|
const pageNum = page.num; // 页码, 默认从1开始
|
|
const pageSize = page.size; // 页长, 默认每页10条
|
|
getActivityGoodsLists({
|
|
page_size: pageSize,
|
|
page_no: pageNum,
|
|
id: this.id
|
|
}).then(({
|
|
data
|
|
}) => {
|
|
if (page.num == 1) this.goodsList = [];
|
|
const curPageData = data.list;
|
|
const curPageLen = curPageData.length;
|
|
const hasNext = !!data.more;
|
|
this.goodsList = this.goodsList.concat(curPageData);
|
|
this.mescroll.endSuccess(curPageLen, hasNext);
|
|
}).catch(() => {
|
|
this.mescroll.endErr()
|
|
})
|
|
|
|
},
|
|
|
|
}
|
|
};
|
|
</script>
|
|
<style lang="scss">
|
|
.activity-detail {
|
|
overflow: hidden;
|
|
.header {
|
|
height: 410rpx;
|
|
width: 100%;
|
|
position: relative;
|
|
|
|
.header-bg {
|
|
position: absolute;
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
|
|
.header-con {
|
|
position: relative;
|
|
padding-top: 50rpx;
|
|
|
|
.title {
|
|
font-size: 60rpx;
|
|
}
|
|
|
|
.desc {
|
|
margin-top: 30rpx;
|
|
background-color: rgba(256, 203, 203, 0.5);
|
|
padding: 4rpx 40rpx;
|
|
}
|
|
}
|
|
}
|
|
|
|
.content {
|
|
position: relative;
|
|
margin-top: -140rpx;
|
|
padding: 0 20rpx;
|
|
}
|
|
}
|
|
</style>
|