|
@@ -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>
|