对接售后接口 - 申请退款 确认收货 取消订单
This commit is contained in:
parent
8418040927
commit
5b934ecd17
5
api/afterSale.js
Normal file
5
api/afterSale.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
export const apiArr = {
|
||||||
|
afterSaleCreate: "/api/v2/wechat/commodity/after-sales/refund-info/create", //商品订单售后信息创建
|
||||||
|
cancelOrConfirm: "/api/v2/wechat/commodity/order/cancel_or_confirm", //商品订单确认收货或取消
|
||||||
|
isAllow: "/api/v2/wechat/commodity/after-sales/is-allow", //判断订单是否能申请售后
|
||||||
|
};
|
||||||
@ -111,10 +111,10 @@ export default {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
pendingPage(item) {
|
pendingPage(item) {
|
||||||
// NavgateTo(`/packages/myOrders/pending/index?item=${JSON.stringify(item)}`); //拒绝申请
|
NavgateTo(`/packages/myOrders/pending/index?item=${JSON.stringify(item)}`); //拒绝申请
|
||||||
// NavgateTo(`/packages/myOrders/sendBack/index?item=${JSON.stringify(item)}`); //自行寄回
|
// NavgateTo(`/packages/myOrders/sendBack/index?item=${JSON.stringify(item)}`); //自行寄回
|
||||||
// NavgateTo(`/packages/myOrders/refundOver/index?item=${JSON.stringify(item)}`); //退款成功
|
// NavgateTo(`/packages/myOrders/refundOver/index?item=${JSON.stringify(item)}`); //退款成功
|
||||||
NavgateTo(`/packages/myOrders/changeInfo/index?item=${JSON.stringify(item)}`); //换货
|
// NavgateTo(`/packages/myOrders/changeInfo/index?item=${JSON.stringify(item)}`); //换货
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -48,18 +48,18 @@
|
|||||||
</view>
|
</view>
|
||||||
<view>
|
<view>
|
||||||
<view class="btn-group" v-if="item.order_status === 1">
|
<view class="btn-group" v-if="item.order_status === 1">
|
||||||
<button class="cancel-btn" @click="cancelOrder">
|
<button class="cancel-btn" @click="cancelOrder(item)">
|
||||||
取消订单
|
取消订单
|
||||||
</button>
|
</button>
|
||||||
<!-- <button class="yfd-btn" @click="cancelOrder">运费单</button> -->
|
<!-- <button class="yfd-btn" @click="cancelOrder">运费单</button> -->
|
||||||
<button class="pay-btn" @click="goToPay">立即支付</button>
|
<button class="pay-btn" @click="goToPay">立即支付</button>
|
||||||
</view>
|
</view>
|
||||||
<view class="btn-group" v-if="item.order_status === 3">
|
<view class="btn-group" v-if="item.order_status === 3">
|
||||||
<button class="cancel-btn" @click="applyRefund">申请退款</button>
|
<button class="cancel-btn" @click="applyRefund(item)">申请退款</button>
|
||||||
</view>
|
</view>
|
||||||
<view class="btn-group" v-if="item.order_status === 4">
|
<view class="btn-group" v-if="item.order_status === 4">
|
||||||
<button class="cancel-btn" @click="cancelOrder">查看物流</button>
|
<button class="cancel-btn" @click="cancelOrder">查看物流</button>
|
||||||
<button class="pay-btn" @click="confirmReceiving">确认收货</button>
|
<button class="pay-btn" @click="confirmReceiving(item)">确认收货</button>
|
||||||
</view>
|
</view>
|
||||||
<view class="btn-group" v-if="item.order_status === 5">
|
<view class="btn-group" v-if="item.order_status === 5">
|
||||||
<text class="afterSaleNum">4笔售后</text>
|
<text class="afterSaleNum">4笔售后</text>
|
||||||
@ -117,6 +117,7 @@ import {
|
|||||||
NavgateTo
|
NavgateTo
|
||||||
} from '../../../utils';
|
} from '../../../utils';
|
||||||
import { apiArr } from "../../../api/order";
|
import { apiArr } from "../../../api/order";
|
||||||
|
import { apiArr as afterSaleApi } from "../../../api/afterSale";
|
||||||
import Rated from "../rated/rated.vue";
|
import Rated from "../rated/rated.vue";
|
||||||
import AwaitRated from "../awaitRated/awaitRated.vue";
|
import AwaitRated from "../awaitRated/awaitRated.vue";
|
||||||
import AfterSale from "../afterSale/index.vue";
|
import AfterSale from "../afterSale/index.vue";
|
||||||
@ -155,6 +156,7 @@ export default {
|
|||||||
afterSaleGoods: [],//售后商品列表
|
afterSaleGoods: [],//售后商品列表
|
||||||
noSalePopup: false,//无售后商品
|
noSalePopup: false,//无售后商品
|
||||||
showTkPopup: false,//申请退款
|
showTkPopup: false,//申请退款
|
||||||
|
afterSaleItem: '',//操作对象
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@ -165,26 +167,43 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 取消订单
|
// 取消订单
|
||||||
cancelOrder() {
|
cancelOrder(item) {
|
||||||
|
this.afterSaleItem = item;
|
||||||
this.showPopup = true
|
this.showPopup = true
|
||||||
},
|
},
|
||||||
|
|
||||||
// 处理订单取消事件
|
// 处理订单取消事件
|
||||||
handleOrderCancelled(data) {
|
handleOrderCancelled(data) {
|
||||||
console.log("🚀 ~ handleOrderCancelled ~ 取消原因:", data.reason);
|
console.log("🚀 ~ handleOrderCancelled ~ 取消原因:", data.reason);
|
||||||
|
const params = {
|
||||||
|
order_id: this.afterSaleItem.id,
|
||||||
|
method: 1,
|
||||||
|
cancel_reason: data.reason,
|
||||||
|
}
|
||||||
|
request(afterSaleApi.cancelOrConfirm, "POST", params).then((res) => {
|
||||||
|
console.log("🚀 ~ handleOrderCancelled ~ res:", res)
|
||||||
|
});
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// 售后按钮
|
// 售后按钮
|
||||||
afterSale(item) {
|
afterSale(item) {
|
||||||
// 根据条件判断是否可以售后
|
this.afterSaleGoods = item.commodity_order_item_list;
|
||||||
if (item) {
|
this.$refs.afterSalePopupRef.openAfterSalePopup();
|
||||||
console.log("🚀 ~ afterSale ~ item:", item)
|
|
||||||
this.afterSaleGoods = item.commodity_order_item_list;
|
// // 根据条件判断是否可以售后
|
||||||
this.selectedAsGood = item.commodity_order_item_list[0].id;
|
// request(afterSaleApi.isAllow, "POST", {
|
||||||
this.$refs.afterSalePopupRef.openAfterSalePopup();
|
// order_id: item.id,
|
||||||
} else {
|
// }).then((res) => {
|
||||||
this.noSalePopup = true
|
// console.log("🚀 ~ afterSale ~ res:", res)
|
||||||
}
|
// if (res.data.is_allow_after_sales) {
|
||||||
|
// this.afterSaleGoods = res.data.allow_items;
|
||||||
|
// // this.selectedAsGood = item.commodity_order_item_list[0].id;
|
||||||
|
// this.$refs.afterSalePopupRef.openAfterSalePopup();
|
||||||
|
// } else {
|
||||||
|
// this.noSalePopup = true
|
||||||
|
// }
|
||||||
|
// });
|
||||||
},
|
},
|
||||||
|
|
||||||
// 处理退款提交事件
|
// 处理退款提交事件
|
||||||
@ -194,22 +213,44 @@ export default {
|
|||||||
|
|
||||||
|
|
||||||
// 申请退款
|
// 申请退款
|
||||||
applyRefund() {
|
applyRefund(item) {
|
||||||
|
this.afterSaleItem = item;
|
||||||
this.showTkPopup = true
|
this.showTkPopup = true
|
||||||
},
|
},
|
||||||
|
|
||||||
// 处理退款确认事件
|
// 处理退款确认事件
|
||||||
handleRefundConfirmed(data) {
|
handleRefundConfirmed(data) {
|
||||||
|
console.log("🚀 ~ handleRefundConfirmed ~ handleRefundConfirmed:", this.afterSaleItem)
|
||||||
console.log("🚀 ~ handleRefundConfirmed ~ 退款原因:", data.reason);
|
console.log("🚀 ~ handleRefundConfirmed ~ 退款原因:", data.reason);
|
||||||
|
const params = {
|
||||||
|
nick_name: uni.getStorageSync("nickName"),
|
||||||
|
order_id: this.afterSaleItem.id,
|
||||||
|
after_sales_type: 1,
|
||||||
|
after_sales_reason: data.reason,
|
||||||
|
refund_amount: this.afterSaleItem.total_amount,
|
||||||
|
order_status: 3
|
||||||
|
}
|
||||||
|
console.log("🚀 ~ handleRefundConfirmed ~ parasm:", params)
|
||||||
|
request(afterSaleApi.afterSaleCreate, "POST", params).then((res) => {
|
||||||
|
console.log("🚀 ~ handleRefundConfirmed ~ res:", res)
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
// 确认收货
|
// 确认收货
|
||||||
confirmReceiving() {
|
confirmReceiving(item) {
|
||||||
uni.showModal({
|
uni.showModal({
|
||||||
title: "确认收货",
|
title: "确认收货",
|
||||||
content: "确认收货后订单状态将变为【已完成】,如有售后需求可正常申请退款/售后,确定要确认收货吗?",
|
content: "确认收货后订单状态将变为【已完成】,如有售后需求可正常申请退款/售后,确定要确认收货吗?",
|
||||||
success: (res) => {
|
success: (res) => {
|
||||||
if (res.confirm) {
|
if (res.confirm) {
|
||||||
|
const params = {
|
||||||
|
order_id: item.id,
|
||||||
|
method: 2,
|
||||||
|
}
|
||||||
|
console.log("🚀 ~ confirmReceiving ~ params:", params)
|
||||||
|
request(afterSaleApi.cancelOrConfirm, "POST", params).then((res) => {
|
||||||
|
console.log("🚀 ~ handleRefundConfirmed ~ res:", res)
|
||||||
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@ -25,11 +25,10 @@
|
|||||||
<view class="asGoodDetail">
|
<view class="asGoodDetail">
|
||||||
<view class="asGoodTitle">
|
<view class="asGoodTitle">
|
||||||
<text class="asGoodTag asGoodTag1" v-if="item.is_support_same_day === 1">当日达</text>
|
<text class="asGoodTag asGoodTag1" v-if="item.is_support_same_day === 1">当日达</text>
|
||||||
{{ item.goods_name
|
{{ item.goods_name}}
|
||||||
}}
|
|
||||||
</view>
|
</view>
|
||||||
<view class="asGoodDesc">{{ item.goods_desc }}</view>
|
<view class="asGoodDesc">{{ item.goods_spec }}</view>
|
||||||
<view class="asGoodPrice">¥{{ item.sales_price }}/个</view>
|
<view class="asGoodPrice">¥{{ item.cost_price }}/个</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="asGoodNum">x{{ item.count }}</view>
|
<view class="asGoodNum">x{{ item.count }}</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@ -4,7 +4,8 @@
|
|||||||
<view class="cancel-reason-container">
|
<view class="cancel-reason-container">
|
||||||
<view class="title">选择退款原因</view>
|
<view class="title">选择退款原因</view>
|
||||||
<view class="reason-list">
|
<view class="reason-list">
|
||||||
<view v-for="(reason, index) in applyRefundReasons" :key="index" class="reason-item" @click="selectReason(index)">
|
<view v-for="(reason, index) in applyRefundReasons" :key="index" class="reason-item"
|
||||||
|
@click="selectReason(index)">
|
||||||
<view :class="['radio', selectedReason === index ? 'active' : '']"></view>
|
<view :class="['radio', selectedReason === index ? 'active' : '']"></view>
|
||||||
<text>{{ reason }}</text>
|
<text>{{ reason }}</text>
|
||||||
</view>
|
</view>
|
||||||
@ -24,7 +25,7 @@ export default {
|
|||||||
showPopup: {
|
showPopup: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -52,10 +53,15 @@ export default {
|
|||||||
console.log("🚀 ~ confirmRefund ~ 退款原因:", selectedText);
|
console.log("🚀 ~ confirmRefund ~ 退款原因:", selectedText);
|
||||||
this.$emit('update:showPopup', false);
|
this.$emit('update:showPopup', false);
|
||||||
this.$emit('refundConfirmed', { reason: selectedText });
|
this.$emit('refundConfirmed', { reason: selectedText });
|
||||||
uni.showToast({
|
uni.showModal({
|
||||||
title: '退款申请成功',
|
title: '退款申请成功',
|
||||||
content: "将在审核后完成退款",
|
content: '将在审核后完成退款',
|
||||||
icon: 'success'
|
showCancel: false,
|
||||||
|
success: (res) => {
|
||||||
|
if (res.confirm) {
|
||||||
|
console.log('用户点击确定');
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@ -243,3 +243,80 @@
|
|||||||
line-height: 80rpx;
|
line-height: 80rpx;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 弹窗样式 */
|
||||||
|
.popup-content {
|
||||||
|
width: 600rpx;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
padding: 40rpx;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.success-icon {
|
||||||
|
margin: 20rpx 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.check-circle {
|
||||||
|
width: 120rpx;
|
||||||
|
height: 120rpx;
|
||||||
|
background-color: #00c853;
|
||||||
|
border-radius: 50%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.check-mark {
|
||||||
|
color: #ffffff;
|
||||||
|
font-size: 70rpx;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-title {
|
||||||
|
font-size: 36rpx;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #333333;
|
||||||
|
margin: 20rpx 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-desc {
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #666666;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 40rpx;
|
||||||
|
margin-bottom: 30rpx;
|
||||||
|
padding: 0 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-buttons {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.continue-btn {
|
||||||
|
width: 240rpx;
|
||||||
|
height: 80rpx;
|
||||||
|
background-color: #f6f7fb;
|
||||||
|
color: #333333;
|
||||||
|
border-radius: 40rpx;
|
||||||
|
font-size: 28rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.know-btn {
|
||||||
|
width: 240rpx;
|
||||||
|
height: 80rpx;
|
||||||
|
background-color: #ff4d4f;
|
||||||
|
color: #ffffff;
|
||||||
|
border: none;
|
||||||
|
border-radius: 40rpx;
|
||||||
|
font-size: 28rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
@ -92,7 +92,25 @@
|
|||||||
<view class="action-buttons">
|
<view class="action-buttons">
|
||||||
<button class="cancel-btn" @click="cancelRefund">撤销申请</button>
|
<button class="cancel-btn" @click="cancelRefund">撤销申请</button>
|
||||||
<button class="modify-btn" @click="modifyRefund">修改申请</button>
|
<button class="modify-btn" @click="modifyRefund">修改申请</button>
|
||||||
|
<button class="urge-btn" @click="urgeProcess">催处理</button>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
<u-popup ref="popup" :show="showPopup" @close="closePopup" :mask-close-able="false"
|
||||||
|
:close-on-click-overlay="false">
|
||||||
|
<view class="popup-content">
|
||||||
|
<view class="success-icon">
|
||||||
|
<view class="check-circle">
|
||||||
|
<text class="check-mark">✓</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="popup-title">已为您催处理</view>
|
||||||
|
<view class="popup-desc">平台客服已帮您催促卖家,07月26日20:49前卖家未处理系统将自动退款。</view>
|
||||||
|
<view class="popup-buttons">
|
||||||
|
<button class="continue-btn" @click="closePopup">继续联系卖家</button>
|
||||||
|
<button class="know-btn" @click="closePopup">我知道了</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-popup>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -110,7 +128,8 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
currentAfterSale: {},
|
currentAfterSale: {},
|
||||||
pickerDefaultDate: new Date()
|
pickerDefaultDate: new Date(),
|
||||||
|
showPopup: false
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@ -181,10 +200,12 @@ export default {
|
|||||||
|
|
||||||
// 催处理
|
// 催处理
|
||||||
urgeProcess() {
|
urgeProcess() {
|
||||||
uni.showToast({
|
this.showPopup = true;
|
||||||
title: '已发送催处理通知',
|
},
|
||||||
icon: 'success'
|
|
||||||
});
|
// 关闭弹窗
|
||||||
|
closePopup() {
|
||||||
|
this.showPopup = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user