From 573f8800bb46dedd4ee9098c371c30d367da28c1 Mon Sep 17 00:00:00 2001
From: "AERWEN\\26795" <123456789a>
Date: Wed, 25 Oct 2023 00:43:30 +0800
Subject: [PATCH] =?UTF-8?q?feat=20=E6=B7=BB=E5=8A=A0=E8=AE=A2=E5=8D=95?=
=?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD=E5=AF=B9=E6=8E=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pages/order/after-service-detail/index.js | 2 +-
pages/order/after-service-detail/index.wxml | 6 +-
pages/order/apply-service/index.js | 364 +++++++++++++-----
pages/order/apply-service/index.wxml | 37 +-
.../after-service-button-bar/index.js | 2 +-
.../components/order-button-bar/index.js | 44 +--
.../selectCoupons/selectCoupons.wxml | 2 +-
pages/order/order-list/index.wxml | 2 +-
services/order/addOrderRefund.js | 21 +
services/order/getRefundReason.js | 22 ++
10 files changed, 372 insertions(+), 130 deletions(-)
create mode 100644 services/order/addOrderRefund.js
create mode 100644 services/order/getRefundReason.js
diff --git a/pages/order/after-service-detail/index.js b/pages/order/after-service-detail/index.js
index 619d9da..b50626f 100644
--- a/pages/order/after-service-detail/index.js
+++ b/pages/order/after-service-detail/index.js
@@ -87,7 +87,7 @@ Page({
// name: m.refundMethodName,
// amount: m.refundMethodAmount,
// })), // 退款明细
- refundRequestAmount: serviceRaw.refundRequestAmount, // 申请退款金额
+ refundRequestAmount: serviceRaw.refundMoney, // 申请退款金额
// payTraceNo: serviceRaw.rightsRefund.traceNo, // 交易流水号
createTime: serviceRaw.createTime, // 申请时间
logisticsNo: serviceRaw.trajectoryVos?.logisticsCompanyCode, // 退货物流单号
diff --git a/pages/order/after-service-detail/index.wxml b/pages/order/after-service-detail/index.wxml
index 8e9c217..c2e7ab7 100644
--- a/pages/order/after-service-detail/index.wxml
+++ b/pages/order/after-service-detail/index.wxml
@@ -20,7 +20,7 @@
title="{{service.isRefunded ? '退款金额' : '预计退款金额'}}"
bordered="{{false}}"
>
-
+
-
+
-
+
{
- wx.redirectTo({ url: 'pages/order/order-list/index' });
+ wx.redirectTo({
+ url: 'pages/order/order-list/index'
+ });
});
return false;
}
@@ -133,33 +181,40 @@ Page({
},
async refresh() {
- wx.showLoading({ title: 'loading' });
+ wx.showLoading({
+ title: 'loading'
+ });
try {
- const res = await this.getRightsPreview();
+ // const res = await this.getRightsPreview();
+ const {
+ orderNo,
+ orderAmt,
+ goodsList,
+ freightFee
+ } = this.query;
wx.hideLoading();
- const goodsInfo = {
- id: res.data.skuId,
- thumb: res.data.goodsInfo && res.data.goodsInfo.skuImage,
- title: res.data.goodsInfo && res.data.goodsInfo.goodsName,
- spuId: res.data.spuId,
- skuId: res.data.skuId,
- specs: ((res.data.goodsInfo && res.data.goodsInfo.specInfo) || []).map((s) => s.specValue),
- paidAmountEach: res.data.paidAmountEach,
- boughtQuantity: res.data.boughtQuantity,
- };
+ // const goodsInfo = {
+ // id: res.data.skuId,
+ // thumb: res.data.goodsInfo && res.data.goodsInfo.skuImage,
+ // title: res.data.goodsInfo && res.data.goodsInfo.goodsName,
+ // spuId: res.data.spuId,
+ // skuId: res.data.skuId,
+ // specs: ((res.data.goodsInfo && res.data.goodsInfo.specInfo) || []).map((s) => s.specValue),
+ // paidAmountEach: res.data.paidAmountEach,
+ // boughtQuantity: res.data.boughtQuantity,
+ // };
this.setData({
- goodsInfo,
+ // goodsInfo,
+ goodsList: JSON.parse(goodsList),
'serviceFrom.amount': {
- max: res.data.refundableAmount,
- current: res.data.refundableAmount,
+ max: orderAmt,
+ current: orderAmt,
},
- 'serviceFrom.returnNum': res.data.numOfSku,
- amountTip: `最多可申请退款¥ ${priceFormat(res.data.refundableAmount, 2)},含发货运费¥ ${priceFormat(
- res.data.shippingFeeIncluded,
- 2,
- )}`,
- maxApplyNum: res.data.numOfSkuAvailable,
+ // 'serviceFrom.returnNum': res.data.numOfSku,
+ amountTip: `最多可申请退款¥ ${orderAmt},含发货运费¥ ${freightFee}`,
+ // maxApplyNum: res.data.numOfSkuAvailable,
});
+ console.log(this.data, 'asdasdasdasdasd');
} catch (err) {
wx.hideLoading();
throw err;
@@ -167,7 +222,11 @@ Page({
},
async getRightsPreview() {
- const { orderNo, skuId, spuId } = this.query;
+ const {
+ orderNo,
+ skuId,
+ spuId
+ } = this.query;
const params = {
orderNo,
skuId,
@@ -179,14 +238,23 @@ Page({
},
onApplyOnlyRefund() {
- wx.setNavigationBarTitle({ title: '申请退款' });
- this.setData({ serviceRequireType: 'REFUND_MONEY' });
+ wx.setNavigationBarTitle({
+ title: '申请退款'
+ });
+ this.setData({
+ serviceRequireType: 'REFUND_MONEY',
+ serviceType: ServiceType.ONLY_REFUND
+ });
this.switchReceiptStatus(0);
},
onApplyReturnGoods() {
- wx.setNavigationBarTitle({ title: '申请退货退款' });
- this.setData({ serviceRequireType: 'REFUND_GOODS' });
+ wx.setNavigationBarTitle({
+ title: '申请退货退款'
+ });
+ this.setData({
+ serviceRequireType: 'REFUND_GOODS'
+ });
const orderStatus = parseInt(this.query.orderStatus);
Promise.resolve()
.then(() => {
@@ -208,7 +276,9 @@ Page({
return;
})
.then(() => {
- this.setData({ serviceType: ServiceType.RETURN_GOODS });
+ this.setData({
+ serviceType: ServiceType.RETURN_GOODS
+ });
this.switchReceiptStatus(1);
});
},
@@ -231,7 +301,9 @@ Page({
},
onChangeReturnNum(e) {
- const { value } = e.detail;
+ const {
+ value
+ } = e.detail;
this.setData({
'serviceFrom.returnNum': value,
});
@@ -259,34 +331,48 @@ Page({
if (!statusItem) {
this.setData({
showReceiptStatusDialog: false,
- 'serviceFrom.receiptStatus': { desc: '请选择', status: null },
- 'serviceFrom.applyReason': { desc: '请选择', type: null }, // 收货状态改变时,初始化申请原因
+ 'serviceFrom.receiptStatus': {
+ desc: '请选择',
+ status: null
+ },
+ 'serviceFrom.applyReason': {
+ desc: '请选择',
+ type: null
+ }, // 收货状态改变时,初始化申请原因
applyReasons: [],
});
return;
}
// 仅选中项与当前项不一致时,才切换申请原因列表applyReasons
if (!statusItem || statusItem.status === this.data.serviceFrom.receiptStatus.status) {
- this.setData({ showReceiptStatusDialog: false });
+ this.setData({
+ showReceiptStatusDialog: false
+ });
return;
}
this.getApplyReasons(statusItem.status).then((reasons) => {
this.setData({
showReceiptStatusDialog: false,
'serviceFrom.receiptStatus': statusItem,
- 'serviceFrom.applyReason': { desc: '请选择', type: null }, // 收货状态改变时,重置申请原因
+ 'serviceFrom.applyReason': {
+ desc: '请选择',
+ type: null
+ }, // 收货状态改变时,重置申请原因
applyReasons: reasons,
});
});
},
+ // 获取退款原因列表
getApplyReasons(receiptStatus) {
- const params = { rightsReasonType: receiptStatus };
- return fetchApplyReasonList(params)
+ const params = {
+ rightsReasonType: receiptStatus
+ };
+ return getRefundReason(params)
.then((res) => {
- return res.data.rightsReasonList.map((reason) => ({
- type: reason.id,
- desc: reason.desc,
+ return res.data.map((reason) => ({
+ type: reason.dictValue,
+ desc: reason.dictLabel,
}));
})
.catch(() => {
@@ -295,13 +381,15 @@ Page({
},
onReceiptStatusDialogConfirm(e) {
- const { index } = e.currentTarget.dataset;
+ const {
+ index
+ } = e.currentTarget.dataset;
this.switchReceiptStatus(index);
},
onAmountTap() {
this.setData({
- 'serviceFrom.amount.temp': priceFormat(this.data.serviceFrom.amount.current),
+ 'serviceFrom.amount.temp': this.data.serviceFrom.amount.current,
'serviceFrom.amount.focus': true,
inputDialogVisible: true,
});
@@ -319,15 +407,21 @@ Page({
// 对输入的值进行过滤
onAmountInput(e) {
- let { value } = e.detail;
+ let {
+ value
+ } = e.detail;
const regRes = value.match(/\d+(\.?\d*)?/); // 输入中,允许末尾为小数点
value = regRes ? regRes[0] : '';
- this.setData({ 'serviceFrom.amount.temp': value });
+ this.setData({
+ 'serviceFrom.amount.temp': value
+ });
},
// 失去焦点时,更严格的过滤并转化为float
onAmountBlur(e) {
- let { value } = e.detail;
+ let {
+ value
+ } = e.detail;
const regRes = value.match(/\d+(\.?\d+)?/); // 失去焦点时,不允许末尾为小数点
value = regRes ? regRes[0] : '0';
value = parseFloat(value) * 100;
@@ -341,61 +435,72 @@ Page({
},
onAmountFocus() {
- this.setData({ 'serviceFrom.amount.focus': true });
+ this.setData({
+ 'serviceFrom.amount.focus': true
+ });
},
onRemarkChange(e) {
- const { value } = e.detail;
+ const {
+ value
+ } = e.detail;
this.setData({
'serviceFrom.remark': value,
});
},
- // 发起申请售后请求
+ // 发起申请售后请求 提交
onSubmit() {
this.submitCheck().then(() => {
const params = {
- rights: {
- orderNo: this.query.orderNo,
- refundRequestAmount: this.data.serviceFrom.amount.current,
- rightsImageUrls: this.data.serviceFrom.rightsImageUrls,
- rightsReasonDesc: this.data.serviceFrom.applyReason.desc,
- rightsReasonType: this.data.serviceFrom.receiptStatus.status,
- rightsType: this.data.serviceType,
- },
- rightsItem: [
- {
- itemTotalAmount: this.data.goodsInfo.price * this.data.serviceFrom.returnNum,
- rightsQuantity: this.data.serviceFrom.returnNum,
- skuId: this.query.skuId,
- spuId: this.query.spuId,
- },
- ],
- refundMemo: this.data.serviceFrom.remark.current,
+ orderGuid: this.query.orderGuid,
+ refundType: this.data.serviceType,
+ goodsReceiveStatus: this.data.serviceFrom.receiptStatus.status,
+ RefundReason: this.data.serviceFrom.applyReason.type,
+ CustomerRefundDesc: this.data.serviceFrom.remark,
+ RefundMoney: this.data.serviceFrom.amount.current,
+ CustomerRefundImg: "",
};
- this.setData({ submitting: true });
+ if(this.data.sessionFrom.rightsImageUrls){
+ if(this.data.sessionFrom.rightsImageUrls.length != 0){
+ params.CustomerRefundImg = this.data.sessionFrom.rightsImageUrls.map(item => item.url).join(',')
+ }
+ }
+ console.log(params);
+ this.setData({
+ submitting: true
+ });
// 发起申请售后请求
- dispatchApplyService(params)
+ addOrderRefund(params)
.then((res) => {
- Toast({
- context: this,
- selector: '#t-toast',
- message: '申请成功',
- icon: '',
- });
-
- wx.redirectTo({
- url: `/pages/order/after-service-detail/index?rightsNo=${res.data.rightsNo}`,
- });
+ if(res.code === 200){
+ Toast({
+ context: this,
+ selector: '#t-toast',
+ message: '申请成功',
+ icon: '',
+ });
+
+ wx.redirectTo({
+ url: `/pages/order/after-service-list/index`,
+ });
+ }
})
- .then(() => this.setData({ submitting: false }))
- .catch(() => this.setData({ submitting: false }));
+ .then(() => this.setData({
+ submitting: false
+ }))
+ .catch(() => this.setData({
+ submitting: false
+ }));
});
},
submitCheck() {
return new Promise((resolve) => {
- const { msg, valid } = this.data.validateRes;
+ const {
+ msg,
+ valid
+ } = this.data.validateRes;
if (!valid) {
Toast({
context: this,
@@ -410,16 +515,22 @@ Page({
},
handleSuccess(e) {
- const { files } = e.detail;
+ const {
+ files
+ } = e.detail;
this.setData({
'sessionFrom.rightsImageUrls': files,
});
},
handleRemove(e) {
- const { index } = e.detail;
const {
- sessionFrom: { rightsImageUrls },
+ index
+ } = e.detail;
+ const {
+ sessionFrom: {
+ rightsImageUrls
+ },
} = this.data;
rightsImageUrls.splice(index, 1);
this.setData({
@@ -438,4 +549,73 @@ Page({
uploading: true,
});
},
-});
+
+
+ // 上传图片
+ handleAddPic(e) {
+ const {
+ files
+ } = e.detail;
+
+ // 每次选择图片都上传,展示每次上传图片的进度
+ files.forEach(file => this.onUploadPic(file))
+ },
+
+ // 移除Pic
+ handleRemovePic(e) {
+ const {
+ index
+ } = e.detail;
+ const {
+ sessionFrom: {
+ rightsImageUrls
+ },
+ } = this.data;
+ rightsImageUrls.splice(index, 1);
+ this.setData({
+ 'sessionFrom.rightsImageUrls': rightsImageUrls,
+ });
+ },
+
+ // 上传图片方法
+ onUploadPic(file) {
+ const {
+ sessionFrom: {
+ rightsImageUrls
+ },
+ } = this.data;
+
+ this.setData({
+ 'sessionFrom.rightsImageUrls' : [...rightsImageUrls, {
+ ...file,
+ status: 'loading'
+ }],
+ });
+ const {
+ length
+ } = rightsImageUrls;
+
+ const task = wx.uploadFile({
+ url: ServerBasePath + 'Common/UploadFile', // 仅为示例,非真实的接口地址
+ filePath: file.url,
+ name: 'file',
+ formData: {
+ fileDir: 'Shops'
+ },
+ success: (res) => {
+ this.setData({
+ [`sessionFrom.rightsImageUrls[${length}].url`]: JSON.parse(res.data).data.url,
+ [`sessionFrom.rightsImageUrls[${length}].status`]: 'done',
+ });
+ // this.triggerEventToParent()
+ },
+ });
+ task.onProgressUpdate((res) => {
+ this.setData({
+ [`sessionFrom.rightsImageUrls[${length}].percent`]: res.progress,
+ });
+ });
+ },
+
+
+});
\ No newline at end of file
diff --git a/pages/order/apply-service/index.wxml b/pages/order/apply-service/index.wxml
index b6471ea..1fc7bbb 100644
--- a/pages/order/apply-service/index.wxml
+++ b/pages/order/apply-service/index.wxml
@@ -1,17 +1,24 @@
-
-
+
+
+
+
+
+
@@ -89,20 +96,22 @@
title="退款金额"
t-class-description="refund-money__description"
description="{{amountTip}}"
- bind:tap="onAmountTap"
>
+
+
-
+
@@ -119,8 +128,18 @@
bind:change="onRemarkChange"
/>
+
-
+
+
+
+ 上传凭证
+ (最多3张)
+
+
+
+
{
if(res.code === 200){
- bindrefresh()
+ this.triggerEvent('refresh')
Toast({
context: this,
selector: '#t-toast',
diff --git a/pages/order/components/order-button-bar/index.js b/pages/order/components/order-button-bar/index.js
index 3156392..4116cb4 100644
--- a/pages/order/components/order-button-bar/index.js
+++ b/pages/order/components/order-button-bar/index.js
@@ -31,16 +31,16 @@ Component({
type: Object,
observer(order) {
// 判定有传goodsIndex ,则认为是商品button bar, 仅显示申请售后按钮
- if (this.properties?.goodsIndex !== null) {
- const goods = order.goodsList[Number(this.properties.goodsIndex)];
- this.setData({
- buttons: {
- left: [],
- right: (goods.buttons || []).filter((b) => b.type == OrderButtonTypes.APPLY_REFUND),
- },
- });
- return;
- }
+ // if (this.properties?.goodsIndex !== null) {
+ // const goods = order.goodsList[Number(this.properties.goodsIndex)];
+ // this.setData({
+ // buttons: {
+ // left: [],
+ // right: (goods.buttons || []).filter((b) => b.type == OrderButtonTypes.APPLY_REFUND),
+ // },
+ // });
+ // return;
+ // }
// 订单的button bar 不显示申请售后按钮
const buttonsRight = (order.buttons || [])
// .filter((b) => b.type !== OrderButtonTypes.APPLY_REFUND)
@@ -233,19 +233,15 @@ Component({
// 重新调起支付
onPay(order) {
- Toast({
- context: this,
- selector: '#t-toast',
- message: '你点击了去支付',
- icon: 'check-circle',
- });
let data = {
orderNo: order.orderNo,
openId: wx.getStorageSync('openId')
}
wxRepay(data).then((res) => {
- console.log(res, '重新调起支付的参数');
+ this.handlePay(res.data,order).then((res) => {
+ console.log(res);
+ })
})
},
@@ -260,19 +256,24 @@ Component({
// 申请售后
onApplyRefund(order) {
- console.log(order,'这里的参数');
+ console.log(order, '这里的参数');
const goods = order.goodsList[this.properties.goodsIndex];
const params = {
orderGuid: order.Guid,
orderNo: order.orderNo,
+ goodsList: JSON.stringify(order.goodsList),
skuId: goods?.skuId,
spuId: goods?.id,
+ thumb: goods?.thumb,
+ title: goods?.title,
+ spec: goods?.spec,
orderStatus: order.status,
logisticsNo: order.logisticsNo,
price: goods?.price,
num: goods?.num,
createTime: order.createTime,
orderAmt: order.totalAmount,
+ freightFee: order.freightFee,
payAmt: order.amount,
canApplyReturn: true,
};
@@ -295,7 +296,6 @@ Component({
/** 添加订单评论 */
onAddComment(order) {
- console.log(order?.goodsList?.[0],'asdasdsa');
const imgUrl = order?.goodsList?.[0]?.thumb;
const title = order?.goodsList?.[0]?.title;
const specs = order?.goodsList?.[0]?.specs;
@@ -307,7 +307,7 @@ Component({
},
// 处理支付
- handlePay(data) {
+ handlePay(data,order) {
const {
jsApiUiPackage,
outTradeNo,
@@ -317,8 +317,8 @@ Component({
const payOrderInfo = {
payInfo: jsApiUiPackage,
orderId: outTradeNo,
- orderAmt: totalAmount,
- payAmt: totalPayAmount,
+ orderAmt: order.totalAmount,
+ payAmt: order.totalAmount,
interactId: interactId,
tradeNo: outTradeNo,
transactionId: transactionId,
diff --git a/pages/order/components/selectCoupons/selectCoupons.wxml b/pages/order/components/selectCoupons/selectCoupons.wxml
index 999e6f7..af5602c 100644
--- a/pages/order/components/selectCoupons/selectCoupons.wxml
+++ b/pages/order/components/selectCoupons/selectCoupons.wxml
@@ -9,7 +9,7 @@
你有{{couponsList.length}}张可用优惠券
已选中{{selectedNum}}张推荐优惠券, 共抵扣
-
+
-->
diff --git a/pages/order/order-list/index.wxml b/pages/order/order-list/index.wxml
index d6ab902..7d5e278 100644
--- a/pages/order/order-list/index.wxml
+++ b/pages/order/order-list/index.wxml
@@ -64,7 +64,7 @@
-
+
diff --git a/services/order/addOrderRefund.js b/services/order/addOrderRefund.js
new file mode 100644
index 0000000..a2554cc
--- /dev/null
+++ b/services/order/addOrderRefund.js
@@ -0,0 +1,21 @@
+import {
+ request
+} from '../_utils/request';
+
+/** 申请售后 */
+export function addOrderRefund(data) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: `OrderRefundApi/addOrderRefund`,
+ method: 'POST',
+ data: data,
+ success: function (res) {
+
+ resolve(res);
+ },
+ fail: function (error) {
+ reject(error);
+ }
+ });
+ });
+}
\ No newline at end of file
diff --git a/services/order/getRefundReason.js b/services/order/getRefundReason.js
new file mode 100644
index 0000000..50aa01d
--- /dev/null
+++ b/services/order/getRefundReason.js
@@ -0,0 +1,22 @@
+import {
+ request
+} from '../_utils/request';
+
+
+/* 获取售后订单商品列表 */
+export async function getRefundReason(data) {
+ return new Promise((resolve, reject) => {
+ request({
+ url: `OrderRefundApi/getRefundReason`,
+ method: 'Get',
+ data: data,
+ success: function (res) {
+
+ resolve(res);
+ },
+ fail: function (error) {
+ reject(error);
+ }
+ });
+ });
+}