jiuyiUniapp/shop/pages/user/fenxiao/subOrderList.vue

271 lines
6.6 KiB
Vue

<template>
<view class="order">
<!--搜索导航栏-->
<view class="order-search" @tap="navTo(`/pages/index/search/search?orderCode=搜索我的订单&type=order`)">
<view class="order-search-input">请输入订单关键字</view>
<view class="iconfont iconsousuo2"></view>
</view>
<view
v-for="(item, index) in orderList"
:key="index"
class="rf-order-item"
>
<view class="i-top b-b">
<text class="time in1line">{{ item.orderCode }}</text>
<text class="time">{{item.createTime}}</text>
</view>
<view
class="goods-box-single"
@tap.stop="
navTo(`/pages/order/detail?id=${item.id}`)
"
v-for="(goodsItem, goodsIndex) in item.orderSkus"
:key="goodsIndex"
>
<image
class="goods-img"
:src="goodsItem.skuImage"
mode="aspectFill"
></image>
<view class="right">
<text class="title in2line">{{ goodsItem.skuName }}</text>
<text class="attr-box">{{ goodsItem.skuName || singleSkuText }} * {{ goodsItem.num }}</text>
<text v-if="goodsItem.point_exchange_type == 2">
<text class="point" :class="'text-' + themeColor.name">{{ goodsItem.product_money }} + {{ item.point }}积分 </text>
</text>
<text v-else-if="goodsItem.point_exchange_type == 4">
<text class="point">{{ item.point }}积分 </text>
</text>
<text class="price" v-else>
<text :class="'text-' + themeColor.name"
>{{ moneySymbol }}{{ goodsItem.oldPrice }}
<text v-if="goodsItem.gift_flag === 0">
+ {{ item.point + '积分' || '' }}</text
></text
>
</text>
</view>
</view>
<view class="price-box">
<text class="num">{{ item.orderSkus.length }}</text>
件商品 实付款
<text class="price" :class="'text-'+themeColor.name">{{ moneySymbol }}{{ item.price }}</text>
</view>
</view>
<rf-load-more
:status="loadingType"
v-if="orderList.length > 0"
></rf-load-more>
<rf-empty
:list="guessYouLikeList"
info="暂无订单"
v-if="orderList.length === 0 && !loading"
></rf-empty>
<rfLoading isFullScreen :active="loading"></rfLoading>
</view>
</template>
<script>
/**
* @des 订单管理
*
* @author 237524947@qq.com
* @date 2020-01-15 11:54
* @copyright 2019
*/
import rfLoadMore from '@/components/rf-load-more/rf-load-more';
import moment from '@/common/moment';
import { queryspreadorders } from '@/api/sms';
import rfCountDown from '@/components/rf-count-down';
import { orderClose, guessYouLikeList,buyagain } from '@/api/product';
import mConstData from '@/config/constData.config';
export default {
components: {
rfLoadMore,
rfCountDown
},
data() {
return {
tabCurrentIndex: null,
loadingType: 'more',
moneySymbol: this.moneySymbol,
orderList: [],
pageNum : 0,
loading: true,
isRefreshing: true,
guessYouLikeList: [],
singleSkuText: this.singleSkuText
};
},
filters: {
// 状态显示格式化
orderStatusFilter(orderStatus) {
let state;
mConstData.orderStatus.forEach(orderItem => {
if (orderItem.key === parseInt(orderStatus, 10)) {
state = orderItem.value;
}
});
return state;
}
},
onShow() {
this.initData();
},
onLoad(options) {
},
// 下拉刷新
onPullDownRefresh() {
this.pageNum = 0;
this.orderList.length = 0;
this.getOrderList('refresh');
},
// 加载更多
onReachBottom() {
if (this.loadingType === 'nomore' || this.orderList.length === 0) return;
this.pageNum++
this.getOrderList();
},
methods: {
navToRefund(item, type) {
this.$mRouter.push({
route: `/pages/order/refund/refund?data=${JSON.stringify(
item
)}&refundType=${type}`
});
},
// 订单操作
handleOrderOperation(item, type) {
switch (type) {
case 'buyagain': // 再次购买
this.handleOrderBuyagain(item);
break;
case 'detail': // 订单详情
this.navTo(`/pages/order/detail?id=${item.id}`);
break;
case 'evaluation': // 我要评价
this.navTo(`/pages/order/evaluation/evaluation?order_id=${item.id}`);
break;
case 'close': // 取消订单
if(item.status==1 && item.orderType!=1){
this.handleOrderClose(item.id);
break;
}
case 'delete': // 删除订单
this.handleOrderDelete(item.id);
break;
case 'shipping': // 查看物流
this.navTo(`/pages/order/shipping/shipping?id=${item.id}`);
break;
case 'delivery': // 确认收货
this.handleOrderTakeDelivery(item.id);
break;
}
},
async handleOrderBuyagain(item) {
await this.$http.get(`${buyagain}`, {
orderId: item.id
}).then(() => {
let route='/pages/cart/cart';
this.$mRouter.switchTab({ route });
});
},
// 跳转页面
navTo(route) {
this.$mRouter.push({ route });
},
// 数据初始化
async initData() {
this.pageNum = 0;
this.orderList.length = 0;
await this.getOrderList();
},
// 获取订单列表
async getOrderList(type) {
let params={};
params.pageNum = this.pageNum ;
await this.$http
.get(`${queryspreadorders}`, params)
.then(async r => {
if (type === 'refresh') {
uni.stopPullDownRefresh();
}
this.loadingType = r.list.length === 10 ? 'more' : 'nomore';
this.orderList = [...this.orderList, ...r.list];
if (this.orderList.length === 0) {
await this.getGuessYouLikeList();
}
this.loading = false;
})
.catch(() => {
this.loading = false;
if (type === 'refresh') {
uni.stopPullDownRefresh();
}
});
},
async getGuessYouLikeList() {
await this.$http.get(`${guessYouLikeList}`,{num:6}).then(r => {
this.guessYouLikeList = r.list;
});
},
// 顶部tab点击
getMoreOrderList() {
if (this.loadingType === 'nomore' || this.orderList.length === 0) return;
this.pageNum++
this.getOrderList();
}
}
};
</script>
<style lang="scss">
page,
.order {
background: $page-color-base;
height: 100%;
.order-search {
padding: $spacing-sm $spacing-base;
position: relative;
.order-search-input {
width: 100%;
background-color: $color-white;
border-radius: 40upx;
padding: $spacing-sm 0 $spacing-sm $spacing-lg;
color: $font-color-light;
}
.iconfont {
position: absolute;
right: 48upx;
top: 22upx;
}
}
.swiper-box {
height: calc(100% - 160upx);
}
.list-scroll-content {
height: 100%;
}
.uni-swiper-item {
height: auto;
}
}
</style>