feat:扫一扫的退款(没有购物车的退款)

This commit is contained in:
dzc committed 2025-09-01 15:25:35 +08:00
1 parent 25013139ab
commit 31ccf613a4
3 files changed
+41 -33

No files matched your search

@@ -1,5 +1,5 @@
<template>
<el-dialog title="后台退款" v-model="visible" width="50%" :close-on-click-modal="false" draggable>
<el-dialog title="后台退款" v-model="visible" width="70%" :close-on-click-modal="false" draggable>
<el-tabs v-model="state.currentTab" class="demo-tabs" @tab-click="tabClick">
<el-tab-pane v-for="(v) in data.tabs" :key="v.name" :label="v.label" :name="v.name" />
</el-tabs>
@@ -161,43 +161,47 @@ const { getDataList, sortChangeHandle, tableStyle } = useTable(state)
const getCarList = async (orderId: string) => {
state.queryForm.orderId = orderId
// 获取订单商品列表
await getDataList()
if (!state.dataList || !state.dataList.length) {
return
}
// 获取已退款的商品
const { data } = await hardCar.refundCar({ orderId })
if (!data || !data.length) {
disposeDataList.value = state.dataList.map((item) => {
try {
// 获取订单商品列表
await getDataList()
if (!state.dataList || !state.dataList.length) {
return
}
// 获取已退款的商品
const { data } = await hardCar.refundCar({ orderId })
if (!data || !data.length) {
disposeDataList.value = state.dataList.map((item) => {
if (!item) return null
return {
...item,
refundProductCount: 0,
maxRefundProductCount: item.productCount,
refundProductWeight: 0,
maxRefundProductWeight: displayWeight(item.productWeight),
refundTotalPrice: 0,
}
}).filter(Boolean)
return
}
refundSuccessList.value = data
// 计算出需要退款的商品
const refundViewList = [...state.dataList]
disposeDataList.value = refundViewList.map((item) => {
if (!item) return null
const target = data.find((v: any) => v.productId == item.productId)
return {
...item,
refundProductCount: 0,
maxRefundProductCount: item.productCount,
maxRefundProductCount: item.productCount - (target?.productCount ?? 0),
refundProductWeight: 0,
maxRefundProductWeight: displayWeight(item.productWeight),
maxRefundProductWeight: displayWeight(item.productWeight - (target?.productWeight ?? 0)),
refundTotalPrice: 0,
}
}).filter(Boolean)
return
} catch (error: any) {
state.dataList = []
disposeDataList.value = []
}
refundSuccessList.value = data
// 计算出需要退款的商品
const refundViewList = [...state.dataList]
disposeDataList.value = refundViewList.map((item) => {
if (!item) return null
const target = data.find((v: any) => v.productId == item.productId)
return {
...item,
refundProductCount: 0,
maxRefundProductCount: item.productCount - (target?.productCount ?? 0),
refundProductWeight: 0,
maxRefundProductWeight: displayWeight(item.productWeight - (target?.productWeight ?? 0)),
refundTotalPrice: 0,
}
}).filter(Boolean)
console.log("disposeDataList:", disposeDataList.value);
}
@@ -220,8 +224,6 @@ const handleAllRefund = () => {
v.refundTotalPrice = target.totalPrice
}
console.log("全部:", _list);
disposeDataList.value = _list
}
@@ -248,6 +250,11 @@ const getSummaries = (param: any) => {
// 提交
const validate = async () => {
// 如果购物车为空直接返回true
if (!state.dataList || !state.dataList.length) {
return []
}
let valid = false
for (const v of disposeDataList.value) {
if (v.refundProductCount > 0 || v.refundProductWeight > 0) {
+3 -2
View File
@@ -80,7 +80,7 @@
</div>
</template>
</el-table-column>
<el-table-column width="200px" prop="paymentInformation" label="付款信息">
<el-table-column width="220px" prop="paymentInformation" label="付款信息">
<template #default="{ row }">
<div class="flex justify-between items-start">
<div class="w-[200px] h-[25px]">
@@ -229,7 +229,8 @@
v-auth="'hard_hardwareOrder_edit'" @click="formDialogRef.openDialog(row.id)">
编辑
</el-button>
<el-button v-if="row.orderType !== '5' && !['5', '6', '8'].includes(row.payType)"
<el-button
v-if="row.orderType !== '5' && !['5', '6', '8'].includes(row.payType) && row.refundPrice != row.payPrice"
icon="stamp" text type="primary" v-auth="'hard_hardAfterSale_adminRefund'"
@click="adminRefundDailogRef.openDialog(row.id)">
退款