时空网前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

287 lines
6.6 KiB

<template>
<view>
<!-- 当设置tab-width,指定每个tab宽度时,则不使用flex布局,改用水平滑动 -->
<view class="padding-lr margin-bottom">
<me-tabs v-model="current" :tabs="tab_list" :fixed="true"></me-tabs>
<!-- <u-tabs :list="tab_list" :is-scroll="true" :show-bar="false" :current="current" @change="change"></u-tabs> -->
</view>
<view class="com" v-for="(tab, tabIndex) in tab_list" v-if="tabIndex == current" :key="tab.id">
<view class="flex-direction justify-around list" v-for="(item, index) in tab.list" :key="item.id" @click="goDetails(item)">
<view class="lf-row-between">
<view class="left">
<image :src="item.goods.cover" mode=""></image>
<!-- <view class="cu-tag badge" style="position: relative;top: -100px;">待付款</view> -->
</view>
<view class="right">
<view class="lf-line-2 title">{{item.goods.name}}</view>
<view class="lf-flex tips">
<text class="progress margin-right-xs">数量</text>
<text class="bought">x {{item.number}}</text>
</view>
<view class="lf-row-between price">
<text class="lf-font-bold">
<text class="lf-font-24">¥</text>
<text class="lf-font-42">{{item.selling_price}}</text>
</text>
<button v-if="item.state==1" @tap.stop="$routerGo('/pages/order/confirm-order?goods_id='+item.goods_id+'&goods_specs_id='+item.goods_specs_id)">立即付款</button>
<button v-if="item.state==2" class="cu-btn bg-green round margin-left-sm" @tap="$routerGo('/pages/order/order-details?orderid='+item.id)">立即使用</button>
</view>
</view>
</view>
<view class="padding-bottom padding-lr padding-top-sm">
<view class="u-border-top flex justify-between align-center text-center">
<view class="padding-top text-gray">
{{item.created_at_text}}
</view>
<view class="text-orange padding-top" v-if="item.state==1">
请在10分钟内付款
</view>
</view>
</view>
</view>
<!-- 加载 -->
<view class="loading-more">
<text v-if="tab.list.length"
:class="{'loading-more-text': tab.loadingClass}">{{ tab.loadingText }}</text>
<my-nocontent v-else></my-nocontent>
</view>
<!-- 回到顶部 -->
<u-back-top :scroll-top="pageScrollTop"></u-back-top>
</view>
</view>
</template>
<script>
export default {
data() {
return {
tab_list: [{
name: '全部',
type: 'all',
list: [],
loadingClass: true,
loadingText: '正在加载中',
page: 1,
isPage: true
}, {
name: '待付款',
type: 'unpaid',
list: [],
loadingClass: true,
loadingText: '正在加载中',
page: 1,
isPage: true
}, {
name: '待使用',
type: 'paid',
list: [],
loadingClass: true,
loadingText: '正在加载中',
page: 1,
isPage: true
},
{
name: '已完成',
type: 'complete',
list: [],
loadingClass: true,
loadingText: '正在加载中',
page: 1,
isPage: true
},
{
name: '售后',
type: 'after_sales',
list: [],
loadingClass: true,
loadingText: '正在加载中',
page: 1,
isPage: true
}
],
current: 0, // tab下表
pageSize: 10,
assetsType: '', //账户类型
orderType: []
}
},
onLoad(e) {
this.assetsType = e.type
this.getUserOrder()
},
methods: {
// 切换tab
change(index) {
this.current = index;
},
goDetails(item) {
if (item.state == 1) {
this.$routerGo('/pages/order/unpay-details?orderid=' + item.id)
} else {
this.$routerGo('/pages/order/order-details?orderid=' + item.id)
}
},
onReachBottom() {
let tab_item = this.tab_list[this.current];
if (tab_item.isPage) {
tab_item.page = tab_item.page + 1;
this.getUserOrder();
}
},
onPullDownRefresh() {
let tab_item = this.tab_list[this.current];
tab_item.page = 1;
tab_item.isPage = true;
tab_item.loadingClass = true;
tab_item.loadingText = '正在加载中';
this.getUserOrder();
uni.stopPullDownRefresh()
},
getUserOrder() {
let per_page = this.pageSize;
let tab_item = this.tab_list[this.current];
this.$http(this.API.API_USERORDER, {
state: this.tab_list[this.current].type,
page: tab_item.page,
per_page
}).then(res => {
if (res.code == 0) {
console.log(res)
let isPage = res.data.has_more_page;
tab_item.isPage = isPage;
if (isPage) {
tab_item.loadingClass = true;
tab_item.loadingText = '正在加载中';
} else {
tab_item.loadingClass = false;
tab_item.loadingText = '没有更多数据啦~';
}
if (tab_item.page == 1) {
tab_item.list = res.data.items;
} else {
tab_item.list.push(...res.data.items);
}
}
}).catch(err => {
});
},
//返回
back() {
if (this.assetsType === 'all2') {
// #ifdef H5
window.history.go(-2)
// #endif
// #ifndef H5
uni.navigateBack({
delta: 2
});
// #endif
} else {
// #ifdef H5
window.history.go(-1)
// #endif
// #ifndef H5
uni.navigateBack({
delta: 1
});
// #endif
}
}
},
}
</script>
<style lang="scss">
.title {
font-size: 28rpx;
color: $u-content-color;
height: 88rpx;
}
// tab
.ctab {
width: 100%;
margin: 20rpx 0 0rpx 0rpx;
padding: 0 22rpx;
}
// 商品列表
.com {
width: 100%;
overflow: hidden;
.list {
border-radius: 10rpx;
overflow: hidden;
margin: 20rpx 32rpx;
background-color: #FFFFFF;
box-shadow: 0 0 10px 5px #e5e5e5;
align-items: flex-start;
.left {
overflow: hidden;
image {
width: 204rpx;
height: 204rpx;
margin: 20rpx;
border-radius: 10rpx;
}
}
.right {
overflow: hidden;
width: 64%;
.title {
margin: 18rpx 20rpx 0 0;
color: #222222;
font-size: 32rpx;
}
.tips {
margin: 16rpx 0;
overflow: hidden;
.u-line-progress {
width: 112rpx;
overflow: hidden;
margin-right: 20rpx;
}
.progress {
color: #777777;
font-size: 24rpx;
}
.bought {
color: #777777;
font-size: 24rpx;
margin-right: 20rpx;
}
}
.price {
overflow: hidden;
color: #FF0000;
button {
width: 160rpx;
height: 60rpx;
background: #FE9903;
border-radius: 15px;
font-size: 24rpx;
color: #FFFFFF;
margin: 0rpx 20rpx 0rpx 20rpx;
border: none;
}
}
}
}
}
</style>