236 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Vue
		
	
	
		
		
			
		
	
	
			236 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Vue
		
	
	
|  | <template> | |||
|  | 	<view> | |||
|  | 		<view class="after-sales-detail"> | |||
|  | 			<view class="after-sales-header"> | |||
|  | 				<view class="after-sales-status white lg"> | |||
|  | 					{{afterSale.status_text}} | |||
|  | 				</view> | |||
|  | 			</view> | |||
|  | 			<view class="return-address-contain flex bg-white m-t-20"> | |||
|  | 				<view class="address-title">退货地址:</view> | |||
|  | 				<view class="sm address flex-1">{{afterSale.shop.address}}, {{afterSale.shop.contact}}, | |||
|  | 					{{afterSale.shop.mobile}}</view> | |||
|  | 				<view class="xs copy-btn flex-none row-center" @tap="onCopy">复制</view> | |||
|  | 			</view> | |||
|  | 			<view class="goods-container bg-white m-t-20"> | |||
|  | 				<view class="m-l-20"> | |||
|  | 					<shop-title :shop="{name: afterSale.shop_name, id: afterSale.sid}"></shop-title> | |||
|  | 				</view> | |||
|  | 				<view class="goods-item flex"> | |||
|  | 					<view class="goods-img"> | |||
|  | 						<u-image width="180rpx" height="180rpx" border-radius="10rpx" | |||
|  | 							:src="afterSale.order_goods.image"></u-image> | |||
|  | 					</view> | |||
|  | 					<view class="goods-info flex-1 m-l-24"> | |||
|  | 						<view class="line-2">{{afterSale.order_goods.goods_name}}</view> | |||
|  | 						<view class="m-t-10 xs line-1 muted">{{afterSale.order_goods.spec_value}}</view> | |||
|  | 						<view class="flex row-between m-t-20"> | |||
|  | 							<price-format :price="afterSale.order_goods.goods_price" :first-size="30" :second-size="30" | |||
|  | 								:subscript-size="30" /> | |||
|  | 							<view>x{{afterSale.order_goods.goods_num}}</view> | |||
|  | 						</view> | |||
|  | 					</view> | |||
|  | 				</view> | |||
|  | 			</view> | |||
|  | 			<view class="return-goods-container bg-white m-t-20"> | |||
|  | 				<view class="return-goods-item flex sm"> | |||
|  | 					<view class="return-title">退款方式:</view> | |||
|  | 					<view class="return-explain">{{afterSale.refund_type_text}}</view> | |||
|  | 				</view> | |||
|  | 				<view class="return-goods-item flex sm m-t-20"> | |||
|  | 					<view class="return-title">退款原因:</view> | |||
|  | 					<view class="return-explain">{{afterSale.refund_reason}}</view> | |||
|  | 				</view> | |||
|  | 				<view class="return-goods-item flex sm m-t-20"> | |||
|  | 					<view class="return-title">退款金额:</view> | |||
|  | 					<view class="return-explain primary">¥{{afterSale.refund_price}}</view> | |||
|  | 				</view> | |||
|  | 				<view class="return-goods-item flex sm m-t-20"> | |||
|  | 					<view class="return-title">退款编号:</view> | |||
|  | 					<view class="return-explain">{{afterSale.sn}}</view> | |||
|  | 				</view> | |||
|  | 				<view class="return-goods-item flex sm m-t-20"> | |||
|  | 					<view class="return-title">申请时间:</view> | |||
|  | 					<view class="return-explain">{{afterSale.create_time}}</view> | |||
|  | 				</view> | |||
|  | 			</view> | |||
|  | 			<view class="btn-group fixed bg-white flex row-right" v-if="afterSale.status != 6"> | |||
|  | 				<view class="m-r-20 btn br60" @tap="confirmDialog=true">撤销申请</view> | |||
|  | 				<router-link :to="{path: '/bundle/pages/apply_refund/apply_refund', query: {after_sale_id: afterSale.id,  | |||
|  | 								order_id: afterSale.order_goods.order_id, | |||
|  | 								item_id: afterSale.order_goods.item_id}}"> | |||
|  | 					<view class="m-r-20 btn br60 primary" v-if="(afterSale.status == 4 || afterSale.status == 1)">重新申请 | |||
|  | 					</view> | |||
|  | 				</router-link> | |||
|  | 				<router-link | |||
|  | 					:to="{path: '/bundle/pages/input_express_info/input_express_info', query: {id: afterSale.id}}"> | |||
|  | 					<view class="m-r-20 btn br60" v-if="afterSale.status == 2"> | |||
|  | 						填写快递单号 | |||
|  | 					</view> | |||
|  | 				</router-link> | |||
|  | 			</view> | |||
|  | 		</view> | |||
|  | 		<u-modal v-model="confirmDialog" confirm-text="确定" :showCancelButton="true" :confirm-color="colorConfig.primary" | |||
|  | 			@confirm="cancelApplyFun"> | |||
|  | 			<view class="flex-col col-center tips-dialog" style="padding: 30rpx 0;"> | |||
|  | 				<image class="icon-lg" src="/static/images/icon_warning.png"></image> | |||
|  | 				<view class="m-t-30">是否要撤销申请?</view> | |||
|  | 			</view> | |||
|  | 		</u-modal> | |||
|  | 	</view> | |||
|  | </template> | |||
|  | 
 | |||
|  | <script> | |||
|  | 	import { | |||
|  | 		afterSaleDetail, | |||
|  | 		cancelApply | |||
|  | 	} from "@/api/user"; | |||
|  | 	import { | |||
|  | 		trottle, | |||
|  | 		copy | |||
|  | 	} from "@/utils/tools.js"; | |||
|  | 
 | |||
|  | 	export default { | |||
|  | 		data() { | |||
|  | 			return { | |||
|  | 				afterSale: { | |||
|  | 					shop: {}, | |||
|  | 					order_goods: {} | |||
|  | 				}, | |||
|  | 				confirmDialog: false | |||
|  | 			}; | |||
|  | 		}, | |||
|  | 		onLoad(options) { | |||
|  | 
 | |||
|  | 		}, | |||
|  | 
 | |||
|  | 		onShow() { | |||
|  | 			this.id = this.$Route.query.id | |||
|  | 			this.afterSaleDetailFun(); | |||
|  | 		}, | |||
|  | 
 | |||
|  | 		methods: { | |||
|  | 			onCopy() { | |||
|  | 				const { | |||
|  | 					afterSale | |||
|  | 				} = this; | |||
|  | 				const { | |||
|  | 					address, | |||
|  | 					contact, | |||
|  | 					mobile | |||
|  | 				} = afterSale.shop; | |||
|  | 				copy(`${address},${contact},${mobile}`) | |||
|  | 			}, | |||
|  | 
 | |||
|  | 
 | |||
|  | 			cancelApplyFun() { | |||
|  | 				cancelApply({ | |||
|  | 					id: this.id | |||
|  | 				}).then(res => { | |||
|  | 					if (res.code == 1) { | |||
|  | 						 | |||
|  | 						uni.$emit("refreshsale") | |||
|  | 						this.$toast({ | |||
|  | 							title: res.msg | |||
|  | 						}, { | |||
|  | 							tab: 3, | |||
|  | 							url: 1 | |||
|  | 						}); | |||
|  | 					} | |||
|  | 				}); | |||
|  | 			}, | |||
|  | 
 | |||
|  | 			afterSaleDetailFun() { | |||
|  | 				afterSaleDetail({ | |||
|  | 					id: this.id | |||
|  | 				}).then(res => { | |||
|  | 					if (res.code == 1) { | |||
|  | 						this.afterSale = res.data | |||
|  | 					} | |||
|  | 				}); | |||
|  | 			} | |||
|  | 
 | |||
|  | 		} | |||
|  | 	}; | |||
|  | </script> | |||
|  | <style lang="scss"> | |||
|  | 	.after-sales-detail { | |||
|  | 		padding-bottom: calc(120rpx + env(safe-area-inset-bottom)); | |||
|  | 
 | |||
|  | 		.after-sales-header { | |||
|  | 			.after-sales-status { | |||
|  | 				padding: 48rpx 30rpx; | |||
|  | 				background-color: #555555; | |||
|  | 			} | |||
|  | 
 | |||
|  | 			.after-sales-explain { | |||
|  | 				padding: 20rpx 30rpx 24rpx; | |||
|  | 			} | |||
|  | 		} | |||
|  | 
 | |||
|  | 		.return-goods-container { | |||
|  | 			padding: 20rpx 24rpx 55rpx; | |||
|  | 			 | |||
|  | 			.return-goods-item { | |||
|  | 				line-height: 40rpx; | |||
|  | 			} | |||
|  | 		} | |||
|  | 
 | |||
|  | 		.btn-group { | |||
|  | 			padding: 0rpx 24rpx; | |||
|  | 			position: fixed; | |||
|  | 			left: 0; | |||
|  | 			right: 0; | |||
|  | 			bottom: 0; | |||
|  | 			height: 100rpx; | |||
|  | 			padding-bottom: env(safe-area-inset-bottom); | |||
|  | 			box-sizing: content-box; | |||
|  | 			.btn { | |||
|  | 				padding: 10rpx 34rpx; | |||
|  | 				border: 1px solid #999999; | |||
|  | 
 | |||
|  | 				&.primary { | |||
|  | 					border-color: $-color-primary; | |||
|  | 				} | |||
|  | 			} | |||
|  | 		} | |||
|  | 
 | |||
|  | 		.goods-container { | |||
|  | 			.goods-item { | |||
|  | 				padding: 25rpx 24rpx; | |||
|  | 				.goods-info { | |||
|  | 					min-width: 500rpx; | |||
|  | 				} | |||
|  | 			} | |||
|  | 		} | |||
|  | 	} | |||
|  | 
 | |||
|  | 	.return-address-contain { | |||
|  | 		padding: 20rpx 24rpx 28rpx 30rpx; | |||
|  | 
 | |||
|  | 		.address { | |||
|  | 			flex: 1; | |||
|  | 			line-height: 38rpx; | |||
|  | 		} | |||
|  | 
 | |||
|  | 		.address-title { | |||
|  | 			width: 150rpx; | |||
|  | 			align-self: flex-start; | |||
|  | 			line-height: 40rpx; | |||
|  | 		} | |||
|  | 
 | |||
|  | 		.copy-btn { | |||
|  | 			background-color: #F4F4F4; | |||
|  | 			color: #555555; | |||
|  | 			padding: 3rpx 16rpx; | |||
|  | 			margin-left: 12rpx; | |||
|  | 			border-radius: 4rpx; | |||
|  | 		} | |||
|  | 	} | |||
|  | 
 | |||
|  | 	.tips-dialog { | |||
|  | 		height: 230rpx; | |||
|  | 		width: 100%; | |||
|  | 	} | |||
|  | </style> |