修复在订单列表页点击立即支付后在提交订单页没有自提点的bug

This commit is contained in:
赵毅 2025-09-17 09:47:00 +08:00
parent d2f6efbd3f
commit 6e28dc148e
2 changed files with 423 additions and 4 deletions

View File

@ -0,0 +1,419 @@
<template>
<view class="container">
<view class="tabs">
<view v-for="(item, index) in categoryList" :key="index"
:class="['tabItem', selectedTab === index ? 'active2' : '']" @click="selectTab(index, item)">
{{ item.category_name }}
</view>
</view>
<view class="content">
<view v-if="selectedTab === 6">
<awaitRated :orderData="orderData" />
</view>
<view v-else-if="selectedTab === 7">
<rated :orderData="orderData" />
</view>
<view v-else-if="selectedTab === 8">
<afterSale :afterSaleList="afterSaleList" @revokeApply="revokeApply" />
</view>
<view v-else>
<view v-for="(item, index) in orderData" :key="index">
<view class="contentList">
<!-- 订单头部信息 -->
<view class="order-header" @click="toDetails(item)">
<view class="orderTitle">
<view class="orderTitleSupplier">{{ item.supplier_name }}
<view v-if="item.order_status == 6 || item.order_status == 5" class="status3">{{
getOrderStatus(item.order_status) }}</view>
<view v-else-if="item.order_status == 7" class="status2">
<img src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/refund.png" />
{{ getOrderStatus(item.order_status) }}
</view>
<view v-else class="order_status">{{
getOrderStatus(item.order_status)
}}</view>
</view>
<text>提交订单{{ item.order_time }}</text>
</view>
</view>
<!-- 商品列表 -->
<view class="goods-list" @click="toDetails(item)">
<view v-for="(goods, goodsIndex) in item.commodity_order_item_list" :key="goodsIndex" class="goods-item">
<image :src="goods.commodity_pic" class="goods-img"></image>
</view>
</view>
<!-- 订单底部信息 -->
<view class="order-footer">
<view class="order-footer-text" @click="toDetails(item)">{{ item.total_count }}件商品共计
<text> {{ item.total_amount }}</text>
</view>
<view>
<view class="btn-group" v-if="item.order_status === 1">
<button class="cancel-btn" @click="cancelOrder(item)">
取消订单
</button>
<!-- <button class="yfd-btn" @click="cancelOrder">运费单</button> -->
<button class="pay-btn" @click="goToPay(item)">立即支付</button>
</view>
<view class="btn-group" v-if="item.order_status === 3">
<button class="cancel-btn" @click="applyRefund(item)">申请退款</button>
</view>
<view class="btn-group" v-if="item.order_status === 4">
<button class="cancel-btn" @click="viewLogistics(item)">查看物流</button>
<button class="pay-btn" @click="confirmReceiving(item)">确认收货</button>
</view>
<view class="btn-group" v-if="item.order_status === 5">
<text class="afterSaleNum">{{ item.commodity_order_item_list.length }}笔售后</text>
<button class="cancel-btn" @click="afterSale(item)">退换/售后</button>
<button class="pay-btn" @click="orderEvaluate(item)" :disabled="item.evauate_status === 1">评价</button>
</view>
<view class="btn-group" v-if="item.order_status === 6">
<!-- <button class="cancel-btn" @click="orderEvaluate">
服务评价
</button>
<button class="yfd-btn" @click="cancelOrder">运费单</button> -->
<button class="pay-btn" @click="goToPay(item)">再来一单</button>
</view>
<view class="btn-group" v-if="item.order_status === 7">
<button class="pay-btn" @click="goToPay(item)">再来一单</button>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<!------------------ 以下为popup ------------------>
<!-- 取消订单 -->
<cancel-order-popup :showPopup.sync="showPopup" @orderCancelled="handleOrderCancelled" />
<!-- 申请退款 -->
<refund-popup :showPopup.sync="showTkPopup" @refundConfirmed="handleRefundConfirmed" />
<!-- 退换 售后 - 选择退款原因 -->
<!-- 售后弹窗组件 -->
<after-sale-popup :afterSaleGoods.sync="afterSaleGoods" :orderItem="afterSaleOrderItem" ref="afterSalePopupRef"
@refundSubmitted="handleRefundSubmitted" />
<!-- 无售后商品 -->
<view>
<u-popup ref="popup" mode="center" :show="noSalePopup" :round="15" :mask-close-able="false">
<view class="noSalePopup">
<view>抱歉该订单已无可申请售后的商品</view>
<button class="noSalePopup-btn" @click="noSalePopup = false">我知道了</button>
</view>
</u-popup>
</view>
</view>
</template>
<script>
import {
isPhone,
picUrl,
request,
upload,
NavgateTo
} from '../../../utils';
import { apiArr as afterSaleApi } from "../../../api/afterSale";
import Rated from "../rated/rated.vue";
import AwaitRated from "../awaitRated/awaitRated.vue";
import AfterSale from "../afterSale/index.vue";
import cancelOrderPopup from '../index/popup/cancelOrder/cancelOrder.vue';
import refundPopup from '../index/popup/refund/refund.vue';
import afterSalePopup from '../index/popup/afterSale/index.vue';
export default {
components: {
Rated,
AwaitRated,
AfterSale,
cancelOrderPopup,
refundPopup,
afterSalePopup
},
data() {
return {
categoryList: [
{ category_name: "全部" },
{ category_name: "待付款" },
{ category_name: "已取消" },
{ category_name: "待发货" },
{ category_name: "配送中" },
{ category_name: "已完成" },
{ category_name: "待评价" },
{ category_name: "已评价" },
{ category_name: "售后" },
],
selectedTab: 0,
// orderData: orderMockData,
orderData: [],
showPopup: false,//
afterSaleGoods: [],//
afterSaleOrderItem: {},//
noSalePopup: false,//
showTkPopup: false,//退
afterSaleItem: '',//
afterSaleList: [],//
selectStatus: '',//status
evaluateStatus: '',//
};
},
methods: {
selectTab(index, item) {
this.selectedTab = index;
if (index == 6) {
this.evaluateStatus = 2;
this.selectStatus = ''
} else if (index == 7) {
this.evaluateStatus = 1;
this.selectStatus = ''
} else if (index == 2) {
this.selectStatus = 6;
this.evaluateStatus = ''
} else {
this.selectStatus = index;
this.evaluateStatus = ''
}
this.getOrderList();
},
//
cancelOrder(item) {
this.afterSaleItem = item;
this.showPopup = true
},
//
handleOrderCancelled(data) {
const params = {
order_id: this.afterSaleItem.id,
method: 1,
cancel_reason: data.reason,
}
request(afterSaleApi.cancelOrConfirm, "POST", params).then((res) => {
this.getOrderList();
});
},
//
afterSale(item) {
this.afterSaleGoods = item.commodity_order_item_list;
//
this.afterSaleOrderItem = item;
this.$refs.afterSalePopupRef.openAfterSalePopup();
console.log(item.id);
//
// request(afterSaleApi.isAllow, "POST", {
// order_id: item.id,
// }).then((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
// }
// });
},
// 退
handleRefundSubmitted(data) {
const params = {
nick_name: uni.getStorageSync("nickName"),
order_id: this.afterSaleOrderItem.id,
goods_ids: this.afterSaleOrderItem.commodity_order_item_list.map(item => item.goods_id),
after_sales_type: data.afterSalesType,
after_sales_reason: data.refundReason,
refund_amount: this.afterSaleOrderItem.total_amount,
application_description: data.refundDescription,
// URL
application_images: data.imgList && data.imgList.length > 0 ?
data.imgList.map(img => img.url).join(',') : '',
order_status: 5,
receiving_address: data.merchantAddress,
change_goods_id: data.changeServiceId
}
// request(afterSaleApi.afterSaleCreate, "POST", params).then((res) => {
// this.getOrderList();
// });
},
// 退
applyRefund(item) {
this.afterSaleItem = item;
this.showTkPopup = true
},
//
viewLogistics(item) {
},
// 退
handleRefundConfirmed(data) {
const params = {
nick_name: uni.getStorageSync("nickName"),
order_id: this.afterSaleItem.id,
goods_ids: this.afterSaleItem.commodity_order_item_list.map(item => item.goods_id),
after_sales_type: 1,
after_sales_reason: data.reason,
refund_amount: this.afterSaleItem.total_amount,
order_status: 3
}
request(afterSaleApi.afterSaleCreate, "POST", params).then((res) => {
this.getOrderList();
});
},
//
confirmReceiving(item) {
uni.showModal({
title: "确认收货",
content: "确认收货后订单状态将变为【已完成】,如有售后需求可正常申请退款/售后,确定要确认收货吗?",
success: (res) => {
if (res.confirm) {
const params = {
order_id: item.id,
method: 2,
}
request(afterSaleApi.cancelOrConfirm, "POST", params).then((res) => {
this.getOrderList();
});
}
},
});
},
goToPay(item) {
//
const transformedItems = item.commodity_order_item_list.map(goods => ({
checked: true,
commodity_goods_info: {
commodity_brief: "",
commodity_id: goods.commodity_id,
commodity_pic: goods.commodity_pic,
goods_alias: goods.goods_name,
goods_carousel: "",
goods_detail_pic: "",
goods_intro: goods.goods_name,
goods_name: goods.goods_name,
goods_no: "",
goods_spec: goods.goods_spec,
goods_status: 1,
goods_unit: goods.goods_unit,
goods_video: "",
group_buy_activity_info: null,
id: goods.id,
is_same_day: goods.is_same_day || false,
is_support_same_day: goods.is_support_same_day || 2,
market_price: goods.sales_price,
sales_price: goods.sales_price,
stock_quantity: goods.stock_quantity
},
commodity_id: goods.commodity_id,
count: goods.count,
create_time: item.create_time,
goods_id: goods.goods_id,
group_buy_id: 0,
id: goods.id,
supplier_id: item.supplier_id,
supplier_name: item.supplier_name,
update_time: item.update_time,
user_id: item.user_id
}));
NavgateTo(`/packages/shop/groupPurchaseSubmit/index?shopCarList=${JSON.stringify(transformedItems)}`)
},
toDetails(item) {
NavgateTo(
`/packages/myOrders/orderDetails/index?item=${JSON.stringify(item)}`
);
},
checkLogistics() {
NavgateTo(`/packages/myOrders/logistics/index`);
},
orderEvaluate(item) {
NavgateTo(`/packages/myOrders/orderEvaluate/index?item=${JSON.stringify(item)}`);
},
getOrderStatus(order_status) {
switch (order_status) {
case 1:
return "待付款";
case 2:
return "支付中";
case 3:
return "待发货";
case 4:
return "配送中";
case 5:
return "已完成";
case 6:
return "已取消";
case 7:
return "退款中";
case 8:
return "已退款";
}
},
getOrderList() {
this.orderData = []
request(afterSaleApi.orderList, "POST", {
order_status: this.selectStatus,
evaluate_status: this.evaluateStatus,
user_id: uni.getStorageSync("userId"),
}).then((res) => {
res.order_list?.forEach(item => {
item.commodity_order_item_list?.forEach(good => {
good.commodity_pic = picUrl + good.commodity_pic;
})
})
this.orderData = res.order_list.filter(item => item.order_cate === 2);
this.getAfterSaleList();
});
},
getAfterSaleList() {
const params = {
user_id: uni.getStorageSync('userId'),
}
request(afterSaleApi.afterSalesList, "POST", params).then((res) => {
res.after_sales_list?.forEach(item => {
item.commodity_order_item?.forEach(good => {
good.commodity_pic = picUrl + good.commodity_pic;
})
})
this.afterSaleList = res.after_sales_list;
});
},
//
revokeApply() {
this.getOrderList();
}
},
onLoad(options) {
this.getOrderList();
},
onShow() {
this.getOrderList();
uni.removeStorageSync('afterSaleItem')
},
};
</script>
<style>
@import url("./index.css");
</style>

View File

@ -300,7 +300,7 @@ export default {
checked: true, checked: true,
commodity_goods_info: { commodity_goods_info: {
commodity_brief: "", commodity_brief: "",
commodity_id: goods.goods_id, commodity_id: goods.commodity_id,
commodity_pic: goods.commodity_pic, commodity_pic: goods.commodity_pic,
goods_alias: goods.goods_name, goods_alias: goods.goods_name,
goods_carousel: "", goods_carousel: "",
@ -320,10 +320,10 @@ export default {
sales_price: goods.sales_price, sales_price: goods.sales_price,
stock_quantity: goods.stock_quantity stock_quantity: goods.stock_quantity
}, },
commodity_id: goods.goods_id, commodity_id: goods.commodity_id,
count: goods.count, count: goods.count,
create_time: item.create_time, create_time: item.create_time,
goods_id: goods.id, goods_id: goods.goods_id,
group_buy_id: 0, group_buy_id: 0,
id: goods.id, id: goods.id,
supplier_id: item.supplier_id, supplier_id: item.supplier_id,
@ -381,7 +381,7 @@ export default {
good.commodity_pic = picUrl + good.commodity_pic; good.commodity_pic = picUrl + good.commodity_pic;
}) })
}) })
this.orderData = res.order_list; this.orderData = res.order_list.filter(item => item.order_cate == 1);
this.getAfterSaleList(); this.getAfterSaleList();
}); });
}, },