| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389 | 
							- <template>
 
- 	<view>
 
- 		<view class="content">
 
- 			<!-- 使用mescroll-body包裹订单列表 -->
 
- 			<mescroll-body  bottom="0" ref="mescrollRef" @init="mescrollInit" 
 
- 				@down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
 
- 			<u-tabs class="tabs" itemStyle="width:14%;height:100rpx;" :list="tabList" @click="tabsClick"
 
- 				lineColor="#FF5C03"></u-tabs>
 
- 				<view class="order-list">
 
- 					<view class="order-item" v-for="(item,index) in orderList" :key="index">
 
- 						<view class="order-num">
 
- 							<text>订单号:{{item.orderCode}}</text>
 
- 							<text v-if="item.status==-1">申请售后</text>
 
- 							<text v-else-if="item.status==-2">退款成功</text>
 
- 							<text v-else-if="item.status==1">待支付</text>
 
- 							<text v-else-if="item.status==2">待发货</text>
 
- 							<text v-else-if="item.status==3">待收货</text>
 
- 							<text v-else-if="item.status==5">已完成</text>
 
- 							<text v-else-if="item.status==-3">已取消</text>
 
- 						</view>
 
- 						<view class="order-main" v-for="(itm,idx) in item.orderItemList" :key="idx" @click="goDetail(itm)">
 
- 							<view class="img-box">
 
- 								<image :src="itm.imgUrl"></image>
 
- 							</view>
 
- 							<view class="order-text">
 
- 								<view class="title">{{itm.productName}}</view>
 
- 								<view class="txt">适用于乏力、头晕等人群,通过问诊可明确诊断给予专业性指导意见。</view>
 
- 								<view class="num">
 
- 									<text>{{itm.sales}} 人已购</text>
 
- 									<text class="grey">x{{itm.num}}</text>
 
- 								</view>
 
- 							</view>
 
- 						</view>
 
- 						<view class="order-bottom">
 
- 							<view class="order-money">
 
- 								<text class="title">订单金额:</text>
 
- 								<text class="num">¥<text class="bold">{{item.totalPrice}}</text></text>
 
- 							</view>
 
- 							<view class="button-group">
 
- 								<view v-if="item.status == 1" @click="cancel(item)" class="button cancel ">取消订单</view>
 
- 								<view v-if="item.status !== -1 && item.status !== -3&& item.status !== 1&& item.status !==-2" @click="refund(item)" class="button cancel">申请售后</view>
 
- 								<view v-if="item.status ==3 ||item.status ==5 " class="button cancel"
 
- 									@click.stop="showDelivery(item)">查看物流</view>
 
- 								<view v-if="item.status == 1" @click="pay(item)" class="button pay">去支付</view>
 
- 								<view v-if="item.status == 3" @click="confirmReceipt(item)" class="button pay">确认收货</view>
 
- 							</view>
 
- 						</view>
 
- 					</view>
 
- 				</view>
 
- 			</mescroll-body>
 
- 		</view>
 
- 	</view>
 
- </template>
 
- <script>
 
- 	import {
 
- 		cancelOrder, //取消订单
 
- 		liveOrderList, // 订单列表
 
- 		finishOrder //确认收货
 
- 	} from '@/api/order.js'
 
- 	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
 
- 	
 
- 	export default {
 
- 		mixins: [MescrollMixin], // 使用mixin
 
- 		data() {
 
- 			return {
 
- 				status: '',
 
- 				orderList: [],
 
- 				tabList: [{
 
- 						name: "全部",
 
- 						status: ""
 
- 					},
 
- 					{
 
- 						name: "待支付",
 
- 						status: "1"
 
- 					},
 
- 					{
 
- 						name: "待发货",
 
- 						status: "2"
 
- 					},
 
- 					{
 
- 						name: "待收货",
 
- 						status: "3"
 
- 					},
 
- 					{
 
- 						name: "已完成",
 
- 						status: "5"
 
- 					}
 
- 				],
 
- 				// mescroll配置
 
- 				downOption: {
 
- 					use: true,
 
- 					auto: false // 是否在初始化后自动执行下拉回调
 
- 				},
 
- 				upOption: {
 
- 					use: true,
 
- 					auto: true, // 是否在初始化时自动执行上拉回调
 
- 					page: {
 
- 						num: 0, // 当前页码
 
- 						size: 10 // 每页数据条数
 
- 					},
 
- 					noMoreSize: 5, // 如果列表已无数据,可设置列表的总数量要大于等于5条才显示无更多数据
 
- 					empty: {
 
- 						icon: '/static/images/empty.png', // 可配置空状态图片
 
- 						tip: '暂无订单数据' // 空状态提示文字
 
- 					}
 
- 				},
 
- 				mescroll: null // mescroll实例
 
- 			}
 
- 		},
 
- 		methods: {
 
- 			goDetail(item){
 
- 				console.log("跳转",item)
 
- 				uni.navigateTo({
 
- 					url: './storeOrderDetail?id=' + item.orderId
 
- 				})
 
- 			},
 
- 			// mescroll初始化
 
- 			mescrollInit(mescroll) {
 
- 				this.mescroll = mescroll;
 
- 			},
 
- 			// 下拉刷新回调
 
- 			downCallback(mescroll) {
 
- 				// 重置列表数据
 
- 				this.orderList = [];
 
- 				mescroll.resetUpScroll();
 
- 			},
 
- 			// 上拉加载回调
 
- 			upCallback(mescroll) {
 
- 				const pageNum = mescroll.num;
 
- 				const pageSize = mescroll.size;
 
- 				
 
- 				let data = {
 
- 					pageSize: pageSize,
 
- 					pageNum: pageNum,
 
- 					status: this.status
 
- 				}
 
- 				
 
- 				liveOrderList(data).then(res => {
 
- 					if (res.code == 200) {
 
- 						// 请求成功,处理数据
 
- 						let curPageData = res.data.list || [];
 
- 						// let curPageData = res.rows || [];
 
- 						let curPageLen = curPageData.length;
 
- 						let totalSize = res.total || 0;
 
- 						
 
- 						// 如果是第一页,直接赋值
 
- 						if (pageNum === 1) {
 
- 							this.orderList = [];
 
- 						}
 
- 						
 
- 						// 追加新数据
 
- 						this.orderList = this.orderList.concat(curPageData);
 
- 						
 
- 						// 方法一(推荐): 后台返回有总数据量
 
- 						mescroll.endBySize(curPageLen, totalSize);
 
- 						
 
- 					} else {
 
- 						// 请求失败
 
- 						mescroll.endErr();
 
- 						uni.showToast({
 
- 							title: res.msg,
 
- 							icon: 'none'
 
- 						});
 
- 					}
 
- 				}).catch(err => {
 
- 					// 请求异常
 
- 					mescroll.endErr();
 
- 					console.log("请求异常:" + JSON.stringify(err));
 
- 				});
 
- 			},
 
- 			// 确认收货
 
- 			confirmReceipt(item) {
 
- 				var that = this;
 
- 				uni.showModal({
 
- 					title: '提示',
 
- 					content: '确认收到货了吗',
 
- 					success: function(res) {
 
- 						if (res.confirm) {
 
- 							var data = {
 
- 								orderId: item.orderId,
 
- 							};
 
- 							finishOrder(data).then(res => {
 
- 								if (res.code == 200) {
 
- 									uni.showToast({
 
- 										icon: 'success',
 
- 										title: "操作成功",
 
- 									});
 
- 									// 刷新列表
 
- 									that.mescroll.resetUpScroll();
 
- 								} else {
 
- 									uni.showToast({
 
- 										icon: 'none',
 
- 										title: res.msg,
 
- 									});
 
- 								}
 
- 							});
 
- 						}
 
- 					}
 
- 				});
 
- 			},
 
- 			// 取消订单
 
- 			cancel(item) {
 
- 			
 
- 				var that = this;
 
- 				uni.showModal({
 
- 					title: '提示',
 
- 					content: '确定取消订单吗',
 
- 					success: function(res) {
 
- 						if (res.confirm) {
 
- 							const data = {
 
- 								orderId: item.orderId,
 
- 							};
 
- 							console.log(data)	
 
- 							cancelOrder(data).then(res => {
 
- 								if (res.code == 200) {
 
- 									uni.showToast({
 
- 										icon: 'success',
 
- 										title: "操作成功",
 
- 									});
 
- 									// 刷新列表
 
- 									that.mescroll.resetUpScroll();
 
- 								} else {
 
- 									uni.showToast({
 
- 										icon: 'none',
 
- 										title: res.msg,
 
- 									});
 
- 								}
 
- 							});
 
- 						}
 
- 					}
 
- 				});
 
- 			},
 
- 			// 申请售后
 
- 			refund(item) {
 
- 				uni.navigateTo({
 
- 					url: './refundOrderProduct?orderId=' + item.orderId
 
- 				})
 
- 			},
 
- 			// tab切换
 
- 			tabsClick(item) {
 
- 				this.status = item.status;
 
- 				// 切换tab时刷新列表
 
- 				this.mescroll.resetUpScroll();
 
- 			},
 
- 			// 查看物流
 
- 			showDelivery(item) {
 
- 				uni.navigateTo({
 
- 					url: `./storeOrderDelivery?orderId=${item.orderId}`
 
- 				})
 
- 			},
 
- 			// 支付
 
- 			pay(item) {
 
- 				console.log("去支付",item)
 
- 				uni.navigateTo({
 
- 					url: `./paymentOrder?orderList=${encodeURIComponent(JSON.stringify(item))}`
 
- 				})
 
- 			},
 
- 			// 评价
 
- 			evaluate(item) {
 
- 				// 评价逻辑
 
- 			}
 
- 		}
 
- 	}
 
- </script>
 
- <style lang="scss" scoped>
 
- 	:deep(.u-tabs) {
 
- 		background-color: #FFFFFF;
 
- 	}
 
- 	:deep(.u-tabs__wrapper__nav) {
 
- 		width: 100%;
 
- 	}
 
- 	.content {
 
- 		.order-list {
 
- 			background: #F5F7FA;
 
- 			padding: 0 24rpx;
 
- 			.order-item {
 
- 				background: #FFFFFF;
 
- 				border-radius: 16rpx;
 
- 				padding: 30rpx 24rpx;
 
- 				margin-top: 24rpx;
 
- 				.order-num {
 
- 					display: flex;
 
- 					justify-content: space-between;
 
- 					font-size: 26rpx;
 
- 					color: #999999;
 
- 				}
 
- 				.order-main {
 
- 					display: flex;
 
- 					margin: 26rpx 0 30rpx;
 
- 					.img-box {
 
- 						width: 180rpx;
 
- 						height: 180rpx;
 
- 						border-radius: 16rpx;
 
- 						flex-shrink: 0;
 
- 						overflow: hidden;
 
- 						margin-right: 26rpx;
 
- 						image {
 
- 							width: 100%;
 
- 							height: 100%;
 
- 						}
 
- 					}
 
- 					.order-text {
 
- 						.title {
 
- 							font-weight: 500;
 
- 							font-size: 28rpx;
 
- 							color: #222222;
 
- 						}
 
- 						.txt {
 
- 							font-size: 24rpx;
 
- 							color: #999999;
 
- 							margin: 8rpx 0 18rpx 0;
 
- 						}
 
- 						.num {
 
- 							display: flex;
 
- 							justify-content: space-between;
 
- 							font-size: 22rpx;
 
- 							color: #E69A22;
 
- 							.grey {
 
- 								margin-top: 12rpx;
 
- 								font-size: 24rpx;
 
- 								color: #999999;
 
- 							}
 
- 						}
 
- 					}
 
- 				}
 
- 				.order-bottom {
 
- 					display: flex;
 
- 					justify-content: space-between;
 
- 					align-items: center;
 
- 					.order-money {
 
- 						.title {
 
- 							font-size: 24rpx;
 
- 							color: #757575;
 
- 						}
 
- 						.num {
 
- 							font-weight: 600;
 
- 							font-size: 20rpx;
 
- 							color: #FF5C03;
 
- 							.bold {
 
- 								font-weight: bold;
 
- 								font-size: 36rpx;
 
- 							}
 
- 						}
 
- 					}
 
- 					.button-group {
 
- 						display: flex;
 
- 						align-items: center;
 
- 						.button {
 
- 							margin-left: 10rpx;
 
- 							padding: 10rpx 14rpx;
 
- 							border-radius: 8rpx;
 
- 							font-weight: 500;
 
- 							font-size: 24rpx;
 
- 						}
 
- 						.cancel {
 
- 							background-color: #ececec;
 
- 							color: #2c2c2c;
 
- 						}
 
- 						.pay {
 
- 							color: #FFFFFF;
 
- 							background: linear-gradient(270deg, #FF5C03 0%, #FFAC64 100%);
 
- 						}
 
- 					}
 
- 				}
 
- 			}
 
- 		}
 
- 	}
 
- </style>
 
 
  |