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.
 
 
 

401 lines
12 KiB

<template>
<view class="wanl-order-list">
<view class="navbar">
<view class="nav-item text-df" v-for="(item, index) in navList" :key="item.state"
:class="{ current: tabCurrentIndex === index }" @tap="tabClick(index)">
{{ item.text }}
</view>
</view>
<swiper :current="tabCurrentIndex" style="height: calc(100% - 80rpx)" duration="300" @change="changeTab">
<swiper-item class="tab-content" v-for="(tag, key) in navList" :key="tag.state">
<scroll-view class="list-scroll-content" scroll-y @scrolltolower="loadData">
<!-- 空白页 -->
<wanl-empty text="没有找到任何订单" v-if="tag.loaded === true && tag.orderList.length === 0" />
<!-- 订单列表 -->
<view v-for="(order, okey) in tag.orderList" :key="order.id" class="order-item radius-bock">
<view class="head">
<!-- <view class="shop wanl-gray" @tap="onShop(order.shop_id)">
<text class="wlIcon-dianpu1 wanl-black"></text>
<text class="wanl-black margin-lr-xs text-30">{{ order.shop.shopname }}</text>
<text class="wlIcon-fanhuigengduo text-sm"></text>
</view> -->
<view class="margin-right-bj text-sm">
<text class="state" :style="{ color: order.stateTipColor }">{{ order.stateTip }}</text>
<text v-if="order.state === 7" class="margin-left-sm wlIcon-lajitong"
@tap="deleteOrder(order.id,okey)"></text>
</view>
</view>
<!-- 商品 -->
<view class="goods-box" v-for="(goods, gkey) in order.goods" :key="goods.id"
@tap="orderDetails(order.id)">
<view class="cu-avatar xl margin-right-bj radius"
:style="{backgroundImage: 'url('+$wanlshop.oss(goods.image, 70, 70)+')'}"> </view>
<view class="content margin-right-bj">
<view class="describe">
<view class="text-cut-2">
{{goods.title}}
</view>
<view class="wanl_sku text-min">
<text class="wanl-gray-dark">{{goods.difference}}</text>
</view>
</view>
<view class="parameter">
<view class="text-price text-sm text-black">
{{ goods.price }}
</view>
<view class="text-min wanl-gray">
x {{ goods.number }}
</view>
<!-- 退款状态:0=未退款,1=退款中,2=待退货,3=退款完成 -->
<view class="text-min text-yellow" v-if="goods.refund_status != 0">
{{getRefund(goods.refund_status)}}
</view>
</view>
</view>
</view>
<!-- 底部 -->
<view class="price-box text-sm flex">
<view v-if="order.pay.discount_price > 0" class="margin-right-sm wanl-gray">优惠:<text
class="text-price">{{ order.pay.discount_price }}</text></view>
<view v-if="order.pay.freight_price > 0" class="margin-right-sm wanl-gray">快递:<text
class="text-price">{{ order.pay.freight_price }}</text></view>
<!-- <view>实付款:<text class="text-price">{{ order.pay.price }}</text></view> -->
</view>
<view class="action-box padding-bottom-bj" v-if="order.state == 1">
<!-- <button class="cu-btn round line-black margin-lr-bj" @tap="editAddress(order.id)">修改地址</button> -->
<!-- <button class="cu-btn round line-black" @tap="cancelOrder(order)">取消订单</button> -->
<button class="cu-btn round line-black" @tap="go(order.id)">查看详情</button>
<button class="cu-btn round margin-lr-bj wanl-bg-orange"
@tap="paymentOrder(order.id)">立即支付</button>
</view>
<view class="action-box padding-bottom-bj" v-if="order.state == 2">
<button class="cu-btn round line-black" @tap="go(order.id)">查看详情</button>
<!-- <button class="cu-btn round line-black" @tap="toChat(order.shop_id)">联系商家</button> -->
<!-- <button class="cu-btn round margin-lr-bj wanl-bg-orange" @tap="editAddress(order.id)">修改地址</button> -->
</view>
<view class="action-box padding-bottom-bj" v-if="order.state == 3">
<!-- <button class="cu-btn round line-black" @tap="onLogistics(order.id)">查看物流</button> -->
<button class="cu-btn round line-black" @tap="go(order.id)">查看详情</button>
<button class="cu-btn round margin-lr-bj wanl-bg-orange"
@tap="confirmOrder(order)">确认收货</button>
</view>
<view class="action-box padding-bottom-bj" v-if="order.state == 4">
<!-- <button class="cu-btn round line-black" @tap="onLogistics(order.id)">查看物流</button> -->
<button class="cu-btn round line-black" @tap="go(order.id)">查看详情</button>
<button class="cu-btn round margin-lr-bj line-black"
@tap="commentOrder(order.id)">评论订单</button>
</view>
</view>
<uni-load-more :status="tag.loadingType" :content-text="contentText" />
<view class="edgeInsetBottom"></view>
</scroll-view>
</swiper-item>
</swiper>
</view>
</template>
<script>
export default {
data() {
return {
tabCurrentIndex: 0,
navList: [{
state: 0,
text: '全部',
loadingType: 'more',
current_page: 1,
orderList: []
},
{
state: 1,
text: '待付款',
loadingType: 'more',
current_page: 1,
orderList: []
},
{
state: 2,
text: '待发货',
loadingType: 'more',
current_page: 1,
orderList: []
},
{
state: 3,
text: '已完成',
loadingType: 'more',
current_page: 1,
orderList: []
},
// {
// state: 4,
// text: '待评论',
// loadingType: 'more',
// current_page: 1,
// orderList: []
// }
// ,{
// state: 7,
// text: '已关闭',
// loadingType: 'more',
// current_page: 1,
// orderList: []
// }
],
contentText: {
contentdown: ' ',
contentrefresh: '正在加载...',
contentnomore: ''
}
};
},
onLoad(options) {
uni.setNavigationBarColor({
backgroundColor: '#802931', // 背景颜色
frontColor: '#ffffff' // 前景颜色(包括标题、返回图标等)
})
if (!options.state) {
options.state = 0;
}
this.tabCurrentIndex = +options.state;
// #ifndef MP
this.loadData();
// #endif
// #ifdef MP
if (options.state == 0) {
this.loadData();
}
// #endif
},
methods: {
go(id) {
console.log(id)
uni.navigateTo({
url: '/pages/user/order/details?id='+id
});
},
//获取订单列表
loadData(source) {
//这里是将订单挂载到tab列表下
let index = this.tabCurrentIndex;
let navItem = this.navList[index];
let state = navItem.state;
//判断是否最后一页
if (navItem.loadingType == 'noMore') {
return;
}
//tab切换只有第一次需要加载数据
if (source === 'tabChange' && navItem.loaded === true) {
return;
}
//防止重复加载
if (navItem.loadingType === 'loading') {
return;
}
navItem.loadingType = 'loading';
// 获取列表
this.$api.get({
url: '/wanlshop/order/getOrderList',
data: {
state: state,
page: navItem.current_page
},
success: res => {
navItem.current_page = res.current_page; //当前页码
if (res.last_page === res.current_page) {
navItem.loadingType = 'noMore';
} else {
navItem.loadingType = 'more';
navItem.current_page++;
}
let orderList = res.data.filter(item => {
//添加不同状态下订单的表现形式
item = Object.assign(item, this.orderStateExp(item.state));
//演示数据所以自己进行状态筛选
if (state === 0) {
//0为全部订单
return item;
}
return item.state === state;
});
orderList.forEach(item => {
navItem.orderList.push(item);
});
//loaded新字段用于表示数据加载完毕,如果为空可以显示空白页
this.$set(navItem, 'loaded', true);
}
});
},
//swiper 切换
changeTab(e) {
this.tabCurrentIndex = e.target.current;
this.loadData('tabChange');
},
//顶部tab点击
tabClick(index) {
this.tabCurrentIndex = index;
},
//删除订单
deleteOrder(order_id, key) {
uni.showLoading({
title: '请稍后'
});
this.$api.post({
url: '/wanlshop/order/delOrder',
data: {
id: order_id
},
success: res => {
this.navList[this.tabCurrentIndex].orderList.splice(key, 1);
uni.hideLoading();
}
});
},
//取消订单- 设置为7 -全局
cancelOrder(item) {
uni.showLoading({
title: '请稍后'
});
// 获取列表
this.$api.post({
url: '/wanlshop/order/cancelOrder',
data: {
id: item.id
},
success: res => {
let {
stateTip,
stateTipColor
} = this.orderStateExp(7);
item = Object.assign(item, {
state: 7,
stateTip,
stateTipColor
});
this.$store.commit('statistics/order', {
pay: this.$store.state.statistics.order.pay - 1,
whole: this.$store.state.statistics.order.whole - 1
});
// 取消订单后删除待付款中该项,并修改全部中的状态 1.0.2升级
let list = this.navList[1].orderList;
let index = list.findIndex(val => val.id === item.id);
index !== -1 && list.splice(index, 1);
// 删除后修改全部中的为7
if (this.tabCurrentIndex == 1) {
let list = this.navList[0].orderList;
let index = list.findIndex(val => val.id === item.id);
if (index !== -1) {
list[index].state = 7;
}
}
uni.hideLoading();
}
});
},
commentOrder(id) {
this.$wanlshop.to('/pages/user/order/comment?order_id=' + id);
},
//支付订单
paymentOrder(id) {
this.$wanlshop.to(`/pages/user/money/pay?order_id=${id}&order_type=goods`);
},
//确认收货- 全局
confirmOrder(item) {
uni.showLoading({
title: '请稍后'
});
// 获取列表
this.$api.post({
url: '/wanlshop/order/confirmOrder',
data: {
id: item.id
},
success: res => {
let {
stateTip,
stateTipColor
} = this.orderStateExp(4);
item = Object.assign(item, {
state: 4,
stateTip,
stateTipColor
});
this.$store.commit('statistics/order', {
receiving: this.$store.state.statistics.order.receiving - 1,
evaluate: this.$store.state.statistics.order.evaluate + 1
});
uni.hideLoading();
}
});
},
//订单状态文字和颜色
orderStateExp(state) {
let stateTip = '',
stateTipColor = '#333';
switch (+state) {
case 1:
stateTip = '等待支付';
stateTipColor = '#f40';
break;
case 2:
stateTip = '等待卖家发货';
break;
case 3:
stateTip = '卖家已发货';
break;
case 4:
stateTip = '交易成功';
break;
case 5:
stateTip = '交易成功';
break;
case 6:
stateTip = '已完成';
break;
case 7:
stateTip = '订单已关闭';
stateTipColor = '#777';
break;
//更多自定义
}
return {
stateTip,
stateTipColor
};
},
getRefund(status) {
return ["退款", "退款中", "待退货", "退款完成", "退款关闭", "退款被拒"][status];
},
// 修改地址
editAddress(id) {
this.$wanlshop.to('/pages/user/address/address?source=2&order_id=' + id);
},
//添加或修改成功之后回调
async refreshList(address_id, order_id) {
uni.showLoading({
title: '正在提交新地址'
});
// 获取列表
this.$api.post({
url: '/wanlshop/order/editOrderAddress',
data: {
id: order_id,
address_id: address_id
},
success: res => {
this.$wanlshop.msg('地址修改成功');
uni.hideLoading();
}
});
}
}
};
</script>
<style>
page {
height: 100%;
}
</style>