ZZ 3 veckor sedan
förälder
incheckning
e48f38d02c

+ 171 - 48
mer_uniapp/pages/goods/refund_details/index.vue

@@ -7,8 +7,7 @@
 					<view class='data on'>
 						<view class="acea-row row-middle mb20">
 							<view class='state line-heightOne'>{{refundInfo.refundStatus | refundStatusFilter}}</view>
-							<view v-show="refundInfo.refundStatus===3"><text
-									class="font-color refundPrice">{{refundInfo.refundPrice}}元</text></view>
+							<view v-show="refundInfo.refundStatus===3"><text class="font-color refundPrice">{{refundInfo.refundPrice}}元</text></view>
 						</view>
 						<view class="mb30 line2" v-if="refundInfo.refundStatus===1">{{refundInfo.refundReason}}</view>
 						<view v-else class="mb30">{{refundInfo.refundStatus | orderRefundTipsStatusFilter}}</view>
@@ -53,8 +52,7 @@
 							<text class='copy line-heightOne' @tap="copy(merAddress.name+','+merAddress.phone+','+merAddress.addressDetail)">复制</text>
 							<!-- #endif -->
 							<!-- #ifdef H5 -->
-							<text class='copy copy-data line-heightOne'
-								:data-clipboard-text="merAddress.name+','+merAddress.phone+','+merAddress.addressDetail">复制</text>
+							<text class='copy copy-data line-heightOne' :data-clipboard-text="merAddress.name+','+merAddress.phone+','+merAddress.addressDetail">复制</text>
 							<!-- #endif -->
 						</view>
 					</view>
@@ -66,7 +64,8 @@
 				</view>
 			</view>
 			<!-- 商家退回地址 -->
-			<view v-if="refundInfo.returnGoodsType ===1 && refundInfo.refundStatus>0 &&refundInfo.receiver&&refundInfo.receiverPhone&&refundInfo.receiverAddressDetail" class="borderPad">
+			<view v-if="refundInfo.returnGoodsType ===1 && refundInfo.refundStatus>0 &&refundInfo.receiver&&refundInfo.receiverPhone&&refundInfo.receiverAddressDetail"
+			 class="borderPad">
 				<view class="borRadius14 wrapper return_info_pad">
 					<view class='item acea-row row-between mb30'>
 						<view>商家退回地址:</view>
@@ -75,8 +74,7 @@
 							<text class='copy line-heightOne' @tap="copy(refundInfo.receiver+','+refundInfo.receiverPhone+','+refundInfo.receiverAddressDetail)">复制</text>
 							<!-- #endif -->
 							<!-- #ifdef H5 -->
-							<text class='copy copy-data line-heightOne'
-								:data-clipboard-text="refundInfo.receiver+','+refundInfo.receiverPhone+','+refundInfo.receiverAddressDetail">复制</text>
+							<text class='copy copy-data line-heightOne' :data-clipboard-text="refundInfo.receiver+','+refundInfo.receiverPhone+','+refundInfo.receiverAddressDetail">复制</text>
 							<!-- #endif -->
 						</view>
 					</view>
@@ -92,27 +90,23 @@
 				<view class='wrapper borRadius14 return_info_pad'>
 					<view class='item acea-row row-between '>
 						<view>订单单号:</view>
-						<view class='conter acea-row row-middle row-right'><text
-								class="text-overflow">{{refundInfo.orderNo}}</text>
+						<view class='conter acea-row row-middle row-right'><text class="text-overflow">{{refundInfo.orderNo}}</text>
 							<!-- #ifndef H5 -->
 							<text class='copy line-heightOne' @tap='copy(refundInfo.orderNo)'>复制</text>
 							<!-- #endif -->
 							<!-- #ifdef H5 -->
-							<text class='copy copy-data line-heightOne'
-								:data-clipboard-text="refundInfo.orderNo">复制</text>
+							<text class='copy copy-data line-heightOne' :data-clipboard-text="refundInfo.orderNo">复制</text>
 							<!-- #endif -->
 						</view>
 					</view>
 					<view class='item acea-row row-between'>
 						<view>售后单号:</view>
-						<view class='conter acea-row row-middle row-right'><text
-								class="text-overflow">{{refundInfo.refundOrderNo}}</text>
+						<view class='conter acea-row row-middle row-right'><text class="text-overflow">{{refundInfo.refundOrderNo}}</text>
 							<!-- #ifndef H5 -->
 							<text class='copy line-heightOne' @tap='copy(refundInfo.refundOrderNo)'>复制</text>
 							<!-- #endif -->
 							<!-- #ifdef H5 -->
-							<text class='copy copy-data line-heightOne'
-								:data-clipboard-text="refundInfo.refundOrderNo">复制</text>
+							<text class='copy copy-data line-heightOne' :data-clipboard-text="refundInfo.refundOrderNo">复制</text>
 							<!-- #endif -->
 						</view>
 					</view>
@@ -136,24 +130,24 @@
 					<view class='item acea-row row-between' v-if="refundInfo.refundReasonWapImg">
 						<view>售后凭证:</view>
 						<view class='conter-refund text-left'>
-							<image class="wapImg" :src="item" v-for="item in refundInfo.refundReasonWapImg.split(',')"
-								:key='item.id'></image>
+							<image class="wapImg" :src="item" v-for="item in refundInfo.refundReasonWapImg.split(',')" :key='item.id'></image>
 						</view>
 					</view>
 				</view>
 			</view>
 
-            <!-- 用户到店退回信息 -->
-            <view v-if="refundInfo.returnGoodsType ===2 && refundInfo.refundStatus>0 && refundInfo.telephone" class="borderPad">
-            	<view class="borRadius14 wrapper return_info_pad">
-            		<view class='item acea-row row-between'>
-            			<view>联系电话:</view>
-            			<view class='conter'>{{refundInfo.telephone}}</view>
-            		</view>
-            	</view>
-            </view>
-            <!-- 用户发货信息 -->
-			<view v-if="refundInfo.returnGoodsType ===1 && refundInfo.refundStatus>0 && refundInfo.expressName && refundInfo.trackingNumber" class="borderPad">
+			<!-- 用户到店退回信息 -->
+			<view v-if="refundInfo.returnGoodsType ===2 && refundInfo.refundStatus>0 && refundInfo.telephone" class="borderPad">
+				<view class="borRadius14 wrapper return_info_pad">
+					<view class='item acea-row row-between'>
+						<view>联系电话:</view>
+						<view class='conter'>{{refundInfo.telephone}}</view>
+					</view>
+				</view>
+			</view>
+			<!-- 用户发货信息 -->
+			<view v-if="refundInfo.returnGoodsType ===1 && refundInfo.refundStatus>0 && refundInfo.expressName && refundInfo.trackingNumber"
+			 class="borderPad">
 				<view class="borRadius14 wrapper return_info_pad">
 					<view class='item acea-row row-between mb30'>
 						<view>物流公司:</view>
@@ -167,8 +161,7 @@
 							<text class='copy line-heightOne' @tap='copy(refundInfo.trackingNumber)'>复制</text>
 							<!-- #endif -->
 							<!-- #ifdef H5 -->
-							<text class='copy copy-data line-heightOne'
-								:data-clipboard-text="refundInfo.trackingNumber">复制</text>
+							<text class='copy copy-data line-heightOne' :data-clipboard-text="refundInfo.trackingNumber">复制</text>
 							<!-- #endif -->
 						</view>
 					</view>
@@ -182,14 +175,32 @@
 			<view v-if="refundInfo.refundStatus === 0 || refundInfo.refundStatus === 4 || refundInfo.refundStatus === 5" class="borderPad">
 				<view class='wrapper borRadius14 return_info_pad btn-box acea-row' style="justify-content: flex-end;">
 					<view></view>
-					<view
-						v-if="refundInfo.refundStatus === 0 || refundInfo.refundStatus === 4 || refundInfo.refundStatus === 5"
-						class="btn btn-999" @click="handleRevokeRefund(refundInfo.refundOrderNo)">撤销售后</view>
-					<view v-if="refundInfo.refundStatus === 4 && refundInfo.afterSalesType === 2" style="color: #fff;"
-						class="btn bg-color" @click="handleReturningRefund(refundInfo)">退回商品</view>
+
+					<view v-if="orderTypeId == 10" class="btn btn-999 acea-row row-center line-heightOne mr-20" @click="handleRevokeReject(items.refundOrderNo)">拒绝退款</view>
+					<view v-if="refundInfo.refundStatus === 0 || refundInfo.refundStatus === 4 || refundInfo.refundStatus === 5"
+					 :class="orderTypeId == 10 ? 'bg-tk-color' : 'btn-999'" class="btn" @click="handleRevokeRefund(refundInfo.refundOrderNo)">{{orderTypeId == 10 ? '确认退款' : '撤销售后'}}</view>
+					<view v-if="refundInfo.refundStatus === 4 && refundInfo.afterSalesType === 2" style="color: #fff;" class="btn bg-color"
+					 @click="handleReturningRefund(refundInfo)">退回商品</view>
 				</view>
 			</view>
 		</view>
+		
+		<uni-popup ref="rejectDialog" type="dialog">
+			<view class="tui-modal-custom">
+				<view class="fs-32 fw-500 lh-44rpx text-center">拒绝退款原因</view>
+				<view class="mt-24 bg--w111-f5f5f5 rd-16rpx p-24">
+					<textarea class="w-full fs-26 h-342" ref="myTextarea" v-model="rejectText" :always-embed="true" :adjust-position="true"
+					 cursor-spacing="85rpx" placeholder="请输入拒绝退款原因内容" :maxlength="100" name="desc" />
+					</view>
+				<view class="flex-between-center mt-40">
+					<view class="w-244 h-72 rd-36rpx flex-center fs-26 font-color close-btn" @tap="handleInputClose">取消
+					</view>
+					<view class="w-244 h-72 rd-36rpx flex-center bg-color text--w111-fff fs-26"
+						@tap="handleInputConfirm">保存
+					</view>
+				</view>
+			</view>
+		</uni-popup>
 	</view>
 </template>
 <script>
@@ -202,11 +213,21 @@
 	// +----------------------------------------------------------------------
 	// | Author: CRMEB Team <admin@crmeb.com>
 	// +----------------------------------------------------------------------
-	import { orderRefundInfoApi } from '@/api/order.js';
-	import { secondHandRefundInfoApi } from '@/api/secondHand.js';
-  import {onRevokeRefund} from '@/libs/order';
+	import {
+		orderRefundInfoApi
+	} from '@/api/order.js';
+	import {
+		refundSecondHandOkApi,
+		returningSecondHandRejectApi,
+		secondHandRefundInfoApi
+	} from '@/api/secondHand.js';
+	import {
+		onRevokeRefund
+	} from '@/libs/order';
 	import orderGoods from "../components/orderGoods";
-	import { getMerAddressApi } from '@/api/merchant.js'
+	import {
+		getMerAddressApi
+	} from '@/api/merchant.js'
 	import ClipboardJS from "@/plugin/clipboard/clipboard.js";
 	import {
 		toLogin
@@ -227,7 +248,10 @@
 		},
 		data() {
 			return {
+				rejectText: '',
 				orderType: '',
+				orderTypeId: null,
+				rejectOrder: '',
 				merAddress: null, //店铺地址
 				refundOrderNo: '',
 				refundInfo: {}, //退款单详情
@@ -249,6 +273,7 @@
 			});
 			this.$set(this, 'refundOrderNo', options.refundOrderNo);
 			this.$set(this, 'orderType', options.orderType);
+			this.$set(this, 'orderTypeId', options.orderTypeId);
 			this.bgColor = setThemeColor();
 			this.$set(this, 'chatConfig', this.$Cache.getItem('chatConfig'));
 		},
@@ -281,6 +306,45 @@
 
 		},
 		methods: {
+			//拒绝退款保存
+			handleInputConfirm() {
+				let that = this;
+					if (!this.rejectText) return this.$util.Tips({
+						title: '请输入拒绝退款原因内容!'
+					});
+					uni.showLoading({
+						title: '正在处理中'
+					});
+					let params = {
+						refundOrderNo: this.rejectOrder,
+						auditType: 'refuse',
+						reason: this.rejectText
+					}
+					returningSecondHandRejectApi(params).then(res => {
+						uni.hideLoading();
+						return that.$util.Tips({
+							title: '处理成功',
+							icon: 'success'
+						}, function() {
+							that.handleSeach();
+						});
+					}).catch(err => {
+						return that.$util.Tips({
+							title: err
+						});
+					});
+				// 关闭窗口后,恢复默认内容
+				this.$refs.inputDialog.close()
+			},
+			//拒绝退款取消
+			handleInputClose() {
+				this.$refs.rejectDialog.close()
+			},
+			// 拒绝退款
+			handleRevokeReject(orderNo) {
+				this.rejectOrder = orderNo;
+				this.$refs.rejectDialog.open();
+			},
 			//店铺地址
 			getMerAddress() {
 				getMerAddressApi(this.refundInfo.merId).then(res => {
@@ -293,14 +357,48 @@
 			},
 			//撤销售后
 			handleRevokeRefund(refundOrderNo) {
-				onRevokeRefund(refundOrderNo, this.orderType).then(() => {
-					this.orderRefundInfo()
-				});
+					let that = this;
+					if (this.orderTypeId == 10) {
+						uni.showModal({
+							content: '是否确认退款该订单',
+							cancelText: "取消",
+							confirmText: "确定",
+							showCancel: true,
+							confirmColor: '#f55850',
+							success: (res) => {
+								if (res.confirm) {
+									uni.showLoading({
+										title: '正在处理中'
+									});
+									refundSecondHandOkApi(refundOrderNo).then(res => {
+										uni.hideLoading();
+										return that.$util.Tips({
+											title: '退款成功',
+											icon: 'success'
+										}, function() {
+											that.orderRefundInfo();
+										});
+									}).catch(err => {
+										return that.$util.Tips({
+											title: err
+										});
+									});
+								} else {
+									
+								}
+							},
+						})
+					} else {
+						onRevokeRefund(refundOrderNo, this.orderType).then(() => {
+							this.orderRefundInfo()
+						});
+					}
 			},
 			//退回商品
 			handleReturningRefund(item) {
 				this.$Cache.set('productInfo', item)
-				let url = `/pages/goods/returns_and_refunds/index?refundOrderNo=${item.refundOrderNo}&returnGoodsType=${item.returnGoodsType}`;
+				let url =
+					`/pages/goods/returns_and_refunds/index?refundOrderNo=${item.refundOrderNo}&returnGoodsType=${item.returnGoodsType}`;
 				this.orderType == 'secondHand' ? url = url + '&orderType=secondHand' : ''
 				uni.navigateTo({
 					url: url
@@ -340,12 +438,12 @@
 					title: "正在加载中"
 				});
 				let api = that.orderType == 'secondHand' ? secondHandRefundInfoApi : orderRefundInfoApi;
-        api(that.refundOrderNo).then(res => {
+				api(that.refundOrderNo).then(res => {
 					uni.hideLoading();
 					let data = res.data;
 					that.$set(that, 'refundInfo', data);
 					//returnGoodsType 退货类型:0-不退货 1-快递退回,2-到店退货
-					if(that.refundInfo.returnGoodsType ===2)that.getMerAddress();
+					if (that.refundInfo.returnGoodsType === 2) that.getMerAddress();
 				}).catch(err => {
 					that.$util.Tips({
 						title: err
@@ -381,8 +479,9 @@
 
 <style scoped lang="scss">
 	.addressDetail {
-			line-height: 36rpx;
-		}
+		line-height: 36rpx;
+	}
+
 	.btn-box {
 		display: flex;
 		padding-top: 20rpx;
@@ -502,6 +601,7 @@
 
 	.order-details {
 		padding-bottom: 30rpx;
+
 		.header {
 			height: 250rpx;
 			padding: 0 24rpx;
@@ -933,4 +1033,27 @@
 			margin-right: 10rpx;
 		}
 	}
-</style>
+
+	.bg-tk-color {
+		background-color: $bg-color-primary;
+		color: #fff;
+		border: none;
+	}
+	
+	.tui-modal-custom {
+		width: 600rpx;
+		position: relative;
+		box-sizing: border-box;
+		padding: 40rpx;
+		border-radius: 16px;
+		background-color: #fff;
+		z-index: 9999;
+	
+		.h-342 {
+			min-height: 268rpx;
+			max-height: 268rpx;
+			;
+			overflow-y: scroll;
+		}
+	}
+</style>

+ 5 - 3
mer_uniapp/pages/trade_fair/trade_return_list/index.vue

@@ -345,12 +345,14 @@
 				if (that.loading) return;
 				that.loading = true;
 				that.loadTitle = "";
-				let api = this.refundTypeStatus == 10 ? refundSecondHandMyList : secondHandAfterSaleList;
-				api({
+				let params = {
 					page: that.page,
 					limit: that.limit,
 					keywords: that.keywords
-				}).then(res => {
+				};
+				let api = this.refundTypeStatus == 10 ? refundSecondHandMyList : secondHandAfterSaleList;
+				this.refundTypeStatus == 10 ? params.type = 0 : '';
+				api(params).then(res => {
 					let list = res.data.list || [];
 					let loadend = list.length < that.limit;
 					that.orderList = that.$util.SplitArray(list, that.orderList);