feat: 添加退款相关功能和状态显示
- 新增退款状态显示,包括“已退款”和“退款中” - 添加退款目的地页面,支持查看订单退款信息 - 更新订单列表和订单详情页,支持退款操作 - 更新依赖edu-core至v1.0.13以支持新功能
This commit is contained in:
@@ -4,6 +4,7 @@ if (process.env.NODE_ENV === 'development') {
|
||||
// 开发环境
|
||||
// baseUrl = "http://192.168.110.100:9200/pb/"; // 张川川
|
||||
baseUrl = "https://api.nuttyreading.com/"; // 线上正式
|
||||
// baseUrl = "http://192.168.110.131:9200/pb/"; // 王亚男
|
||||
} else if (process.env.NODE_ENV === 'production') {
|
||||
// 生产环境11
|
||||
//baseUrl = "http://192.168.110.100:9200/pb/"; // 张川川
|
||||
|
||||
3
main.js
3
main.js
@@ -125,6 +125,9 @@ Vue.component('common-video', commonVideo);
|
||||
import CommonCourseVideo from 'edu-core/components/course-video'
|
||||
Vue.component('CommonCourseVideo', CommonCourseVideo);
|
||||
|
||||
import CommonRefundDestination from 'edu-core/components/order/refund-destination.vue'
|
||||
Vue.component('common-refund-destination', CommonRefundDestination);
|
||||
|
||||
import commonCoupon from '@/pages/component/commonComponents/coupon/index.vue'
|
||||
Vue.component('common-coupon', commonCoupon);
|
||||
import commonGoodsList from '@/pages/component/commonComponents/goodsList.vue'
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
"src" : "图片路径"
|
||||
}
|
||||
],
|
||||
"versionName" : "1.0.61",
|
||||
"versionCode" : 1061,
|
||||
"versionName" : "1.0.62",
|
||||
"versionCode" : 1062,
|
||||
"app-plus" : {
|
||||
"nvueCompiler" : "weex",
|
||||
"compatible" : {
|
||||
|
||||
11
package-lock.json
generated
11
package-lock.json
generated
@@ -9,7 +9,7 @@
|
||||
"version": "3.4.5",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"edu-core": "git+https://git.nuttyreading.com/chenghuan/edu-core.git#v1.0.12",
|
||||
"edu-core": "file:../edu-core",
|
||||
"jquery": "^3.7.1",
|
||||
"tcplayer.js": "^5.1.0"
|
||||
},
|
||||
@@ -19,7 +19,6 @@
|
||||
},
|
||||
"../edu-core": {
|
||||
"version": "1.0.8",
|
||||
"extraneous": true,
|
||||
"license": "ISC",
|
||||
"devDependencies": {}
|
||||
},
|
||||
@@ -74,9 +73,8 @@
|
||||
"integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
|
||||
},
|
||||
"node_modules/edu-core": {
|
||||
"version": "1.0.12",
|
||||
"resolved": "git+https://git.nuttyreading.com/chenghuan/edu-core.git#ea1dca213de69ac5a01a44a352ab33024edd2577",
|
||||
"license": "ISC"
|
||||
"resolved": "../edu-core",
|
||||
"link": true
|
||||
},
|
||||
"node_modules/es5-shim": {
|
||||
"version": "4.6.7",
|
||||
@@ -399,8 +397,7 @@
|
||||
"integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
|
||||
},
|
||||
"edu-core": {
|
||||
"version": "git+https://git.nuttyreading.com/chenghuan/edu-core.git#ea1dca213de69ac5a01a44a352ab33024edd2577",
|
||||
"from": "edu-core@git+https://git.nuttyreading.com/chenghuan/edu-core.git#v1.0.12"
|
||||
"version": "file:../edu-core"
|
||||
},
|
||||
"es5-shim": {
|
||||
"version": "4.6.7",
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/dcloudio/hello-uniapp#readme",
|
||||
"dependencies": {
|
||||
"edu-core": "git+https://git.nuttyreading.com/chenghuan/edu-core.git#v1.0.12",
|
||||
"edu-core": "file:../edu-core",
|
||||
"jquery": "^3.7.1",
|
||||
"tcplayer.js": "^5.1.0"
|
||||
},
|
||||
|
||||
12
pages.json
12
pages.json
@@ -193,6 +193,18 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/bookShop/refundDestination",
|
||||
"style": {
|
||||
"navigationBarTitleText": "钱款去向",
|
||||
"enablePullDownRefresh": false,
|
||||
"app-plus": {
|
||||
"bounce": "none",
|
||||
"titleNView": false,
|
||||
"popGesture": "none"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/goods/order/index",
|
||||
"style": {
|
||||
|
||||
@@ -88,6 +88,16 @@
|
||||
v-if="orderContet.orderStatus == 5"
|
||||
>已超时</text
|
||||
>
|
||||
<text
|
||||
class="orderState orderState6"
|
||||
v-if="orderContet.orderStatus == 6"
|
||||
>已退款</text
|
||||
>
|
||||
<text
|
||||
class="orderState orderState7"
|
||||
v-if="orderContet.orderStatus == 7"
|
||||
>退款中</text
|
||||
>
|
||||
</view>
|
||||
<view
|
||||
class="orderContent"
|
||||
@@ -1105,14 +1115,15 @@ export default {
|
||||
text: "继续付款",
|
||||
});
|
||||
}
|
||||
if (this.orderContet.orderStatus == 0) {
|
||||
this.customButton.push({
|
||||
width: "160rpx",
|
||||
text: "取消订单",
|
||||
color: "#333",
|
||||
backgroundColor: "#f0f0f0",
|
||||
});
|
||||
}
|
||||
// sociology:注释取消订单按钮
|
||||
// if (this.orderContet.orderStatus == 0) {
|
||||
// this.customButton.push({
|
||||
// width: "160rpx",
|
||||
// text: "取消订单",
|
||||
// color: "#333",
|
||||
// backgroundColor: "#f0f0f0",
|
||||
// });
|
||||
// }
|
||||
|
||||
// var seconds = res.result.timestamp + 30 * 60 + 2 // 过期时间
|
||||
// var nowSeconds = Math.floor(new Date().getTime() / 1000);
|
||||
@@ -1131,6 +1142,10 @@ export default {
|
||||
this.titleStat = "待收到";
|
||||
} else if (this.orderContet.orderStatus == 3) {
|
||||
this.titleStat = "已完成";
|
||||
} else if (this.orderContet.orderStatus == 6) {
|
||||
this.titleStat = "已退款";
|
||||
} else if (this.orderContet.orderStatus == 7) {
|
||||
this.titleStat = "退款中";
|
||||
}
|
||||
if (
|
||||
this.orderContet.orderStatus >= 2 &&
|
||||
@@ -1173,10 +1188,28 @@ export default {
|
||||
},
|
||||
});
|
||||
},
|
||||
checkPayTimeout(payItem) {
|
||||
const createTime = payItem && payItem.createTime;
|
||||
if (!createTime) return true;
|
||||
const createdAt = new Date(String(createTime).replace(/-/g, "/")).getTime();
|
||||
if (!createdAt) return true;
|
||||
const expired = Date.now() - createdAt > 10 * 60 * 1000;
|
||||
if (expired) {
|
||||
uni.showModal({
|
||||
title: "提示",
|
||||
content: "订单已超时,不能继续支付,请重新下单",
|
||||
confirmText: "知道了",
|
||||
showCancel: false,
|
||||
});
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
// 支付
|
||||
goPay(payItem) {
|
||||
console.log(payItem, "订单数据");
|
||||
if (!this.checkPayTimeout(payItem)) return;
|
||||
if (payItem.paymentMethod == 2) {
|
||||
console.log("阿里支付");
|
||||
setPay(
|
||||
@@ -1320,6 +1353,12 @@ uni-view {
|
||||
.orderState5 {
|
||||
background-color: #787878;
|
||||
}
|
||||
.orderState6 {
|
||||
background-color: #f56c6c;
|
||||
}
|
||||
.orderState7 {
|
||||
background-color: #f56c6c;
|
||||
}
|
||||
.guoqi {
|
||||
font-size: 28rpx;
|
||||
align-items: center;
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
<view class="cateList flexbox">
|
||||
<common-sticky
|
||||
itemStyle="width:20%; height: 68rpx;font-size:24rpx;"
|
||||
itemStyle="height: 68rpx;font-size:24rpx; padding: 0 20rpx;"
|
||||
:list="ordersTabs"
|
||||
label="name"
|
||||
:currentCateIndex="currentCateIndex"
|
||||
@@ -120,6 +120,16 @@
|
||||
v-show="slotProps.row.orderStatus == 5"
|
||||
>已过期</text
|
||||
>
|
||||
<text
|
||||
class="orderstatus"
|
||||
v-show="slotProps.row.orderStatus == 6"
|
||||
>已退款</text
|
||||
>
|
||||
<text
|
||||
class="orderstatus"
|
||||
v-show="slotProps.row.orderStatus == 7"
|
||||
>退款中</text
|
||||
>
|
||||
</view>
|
||||
</view>
|
||||
<view
|
||||
@@ -380,11 +390,12 @@
|
||||
class="operation_box boxShadow"
|
||||
v-if="slotProps.row.isShowMore == true"
|
||||
>
|
||||
<view
|
||||
<!-- sociology:注释取消订单入口 -->
|
||||
<!-- <view
|
||||
v-if="slotProps.row.orderStatus == 0"
|
||||
@click.native.stop="canceOrder(slotProps.row)"
|
||||
>取消订单</view
|
||||
>
|
||||
> -->
|
||||
</view>
|
||||
<view class="btns flexbox" style="margin-top: 10rpx">
|
||||
<view
|
||||
@@ -421,8 +432,18 @@
|
||||
>
|
||||
<view
|
||||
class="orderstatusbtn"
|
||||
v-if="slotProps.row.orderStatus == 3"
|
||||
>申请售后</view
|
||||
v-if="
|
||||
slotProps.row.orderStatus == 6 ||
|
||||
slotProps.row.orderStatus == 7
|
||||
"
|
||||
@click.stop="goRefundDestination(slotProps.row)"
|
||||
>钱款去向</view
|
||||
>
|
||||
<view
|
||||
class="orderstatusbtn"
|
||||
v-if="slotProps.row.refundableStatus === true"
|
||||
@click.stop="confirmApplyRefund(slotProps.row)"
|
||||
>申请退款</view
|
||||
>
|
||||
<!-- <view
|
||||
class="orderstatusbtn"
|
||||
@@ -615,12 +636,14 @@ export default {
|
||||
come: "1",
|
||||
isShowTab: false,
|
||||
isLoadingHide: false,
|
||||
moreList: [
|
||||
{
|
||||
name: "取消订单",
|
||||
key: "false",
|
||||
},
|
||||
],
|
||||
// sociology:注释取消订单菜单
|
||||
// moreList: [
|
||||
// {
|
||||
// name: "取消订单",
|
||||
// key: "false",
|
||||
// },
|
||||
// ],
|
||||
moreList: [],
|
||||
currentCateIndex: 0,
|
||||
pagination: {
|
||||
// 请求参数
|
||||
@@ -671,6 +694,16 @@ export default {
|
||||
value: 3,
|
||||
badge: {},
|
||||
},
|
||||
{
|
||||
name: "已退款",
|
||||
value: 6,
|
||||
badge: {},
|
||||
},
|
||||
{
|
||||
name: "退款中",
|
||||
value: 7,
|
||||
badge: {},
|
||||
},
|
||||
],
|
||||
selectOrderInfo: {},
|
||||
ordersListTab: 1,
|
||||
@@ -790,7 +823,8 @@ export default {
|
||||
console.log("index at line 609:", index);
|
||||
if (index.key == "false") {
|
||||
this.isShowMore = false;
|
||||
this.canceOrder(this.selectOrderInfo);
|
||||
// sociology:注释取消订单触发
|
||||
// this.canceOrder(this.selectOrderInfo);
|
||||
}
|
||||
},
|
||||
openMore(row, index) {
|
||||
@@ -856,6 +890,51 @@ export default {
|
||||
val.orderSn,
|
||||
});
|
||||
},
|
||||
goRefundDestination(row) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/bookShop/refundDestination?orderId=${row.orderId}`,
|
||||
});
|
||||
},
|
||||
confirmApplyRefund(row) {
|
||||
uni.showModal({
|
||||
title: "申请退款",
|
||||
content: "请确认是否提交退款申请?",
|
||||
confirmText: "确认提交",
|
||||
cancelText: "取消",
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
this.submitOrderRefund(row);
|
||||
}
|
||||
},
|
||||
});
|
||||
},
|
||||
submitOrderRefund(orderRow) {
|
||||
this.$http
|
||||
.request({
|
||||
url: "book/buyOrder/refundOrder",
|
||||
method: "POST",
|
||||
data: {
|
||||
orderId: orderRow.orderId,
|
||||
},
|
||||
header: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$commonJS.showToast("申请退款成功");
|
||||
this.newestpage = 1;
|
||||
this.pagination.page = 1;
|
||||
this.newList = [];
|
||||
this.getBookList(this.ordersListTab, false);
|
||||
return;
|
||||
}
|
||||
this.$commonJS.showToast(res.errMsg || "申请退款失败");
|
||||
})
|
||||
.catch(() => {
|
||||
this.$commonJS.showToast("申请退款失败");
|
||||
});
|
||||
},
|
||||
getBookList(flag, refreshflag) {
|
||||
this.isLoadingHide = false;
|
||||
var that = this;
|
||||
@@ -882,6 +961,8 @@ export default {
|
||||
// * 3:已完成
|
||||
// * 4: 交易失败
|
||||
// * 5: 已过期
|
||||
// * 6: 已退款
|
||||
// * 7: 退款中
|
||||
|
||||
console.log("res at line 757:", res);
|
||||
that.map = res.data;
|
||||
@@ -909,7 +990,7 @@ export default {
|
||||
var params = {
|
||||
userId: this.userInfo.id,
|
||||
come: this.come,
|
||||
orderStatus: flag == -1 ? "" : flag, //传null为全部,订单状态 0-待付款 1-待发出 2-待收到 3-已完成 4-交易失败 5-已过期
|
||||
orderStatus: flag == -1 ? "" : flag, //传null为全部,订单状态 0-待付款 1-待发出 2-待收到 3-已完成 4-交易失败 5-已过期 6-已退款 7-退款中
|
||||
...this.pagination,
|
||||
// limit: 10,
|
||||
// page: this.newestpage,
|
||||
@@ -949,9 +1030,27 @@ export default {
|
||||
|
||||
this.axiosStatus = 1;
|
||||
},
|
||||
checkPayTimeout(payItem) {
|
||||
const createTime = payItem && payItem.createTime;
|
||||
if (!createTime) return true;
|
||||
const createdAt = new Date(String(createTime).replace(/-/g, "/")).getTime();
|
||||
if (!createdAt) return true;
|
||||
const expired = Date.now() - createdAt > 10 * 60 * 1000;
|
||||
if (expired) {
|
||||
uni.showModal({
|
||||
title: "提示",
|
||||
content: "订单已超时,不能继续支付,请重新下单",
|
||||
confirmText: "知道了",
|
||||
showCancel: false,
|
||||
});
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
// 支付
|
||||
goPay(payItem) {
|
||||
console.log(payItem, "订单数据");
|
||||
if (!this.checkPayTimeout(payItem)) return;
|
||||
if (payItem.paymentMethod == 2) {
|
||||
console.log("阿里支付");
|
||||
setPay(
|
||||
@@ -1629,9 +1728,9 @@ export default {
|
||||
z-index: 970;
|
||||
}
|
||||
|
||||
/deep/.u-tabs__wrapper__nav__item {
|
||||
padding: 0 !important;
|
||||
}
|
||||
// /deep/.u-tabs__wrapper__nav__item {
|
||||
// padding: 0 !important;
|
||||
// }
|
||||
|
||||
.commonDetailPage {
|
||||
background-color: #f5f5f5;
|
||||
|
||||
27
pages/bookShop/refundDestination.vue
Normal file
27
pages/bookShop/refundDestination.vue
Normal file
@@ -0,0 +1,27 @@
|
||||
<template>
|
||||
<view class="page-wrap">
|
||||
<public-module></public-module>
|
||||
<common-refund-destination :order-id="orderId" :http="$http" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
orderId: "",
|
||||
};
|
||||
},
|
||||
onLoad(options) {
|
||||
if (options && options.orderId != null) {
|
||||
this.orderId = options.orderId;
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.page-wrap {
|
||||
min-height: 100vh;
|
||||
}
|
||||
</style>
|
||||
@@ -445,4 +445,8 @@ export default {
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
|
||||
.title_list {
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<!-- <scroll-view class="scroll-view_H cateList" scroll-x="true" scroll-left="0"> -->
|
||||
<view class="" style="background-color: #fff; width: 100%">
|
||||
<view class="" style="background-color: #fff; width: 100%; padding: 0 20rpx;">
|
||||
<u-tabs
|
||||
lineWidth="30"
|
||||
lineColor="#3AB3AE"
|
||||
|
||||
@@ -376,4 +376,8 @@ button::after {
|
||||
// border-bottom: 0.5px solid #dadbde;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uni-text {
|
||||
white-space: normal;
|
||||
}
|
||||
Reference in New Issue
Block a user