修改订单详情支付逻辑

This commit is contained in:
2024-11-25 13:49:28 +08:00
parent a2a4a1bf96
commit c9caed9579
3 changed files with 104 additions and 70 deletions

View File

@@ -332,13 +332,14 @@
function pointsConfirm(e) {
accountPoints.num = e
}
async function calcUsablePoints() {
async function calcUsablePoints(orderAmount) {
if (!order.memberId) {
return
}
console.log(orderAmount);
const res = await Api.$calcUsablePoints({
memberId: order.memberId,
orderAmount: payPrice.value
orderAmount: orderAmount ? orderAmount : payPrice.value
})
accountPoints.calcRes = res
accountPoints.num = res.maxUsablePoints
@@ -350,12 +351,18 @@
}
})
async function calcDeDuctionPoints() {
if (accountPoints.num <= 0) {
accountPoints.price = 0
return ''
}
const res = await Api.$calcDeDuctionPoints({
memberId: order.memberId,
orderAmount: order.amount,
orderAmount: originPrice.value,
points: accountPoints.num
})
accountPoints.price = res
if (res) {
accountPoints.price = res
}
return res
}
watch(() => accountPoints.num, (newval) => {
@@ -470,48 +477,52 @@
})
}
function setQuan(arr) {
console.log(arr);
discount.discount = 100
discount.value = 0
discount.currentPrice = order.amount
const manjianCoup = arr.filter(v => v.type == 1 && v.num >= 1)
let productCoup = arr.filter(v => v.type == 2)
console.log(productCoup);
//商品券分组
let coupMap = {}
for (let i in productCoup) {
const coup = productCoup[i]
if (coupMap.hasOwnProperty(coup.proId)) {
coupMap[coup.proId].push(coup)
} else {
coupMap[coup.proId] = [coup]
}
}
console.log(coupMap);
for (let key in coupMap) {
const arr = coupMap[key]
for (let i in arr) {
const coup = arr[i]
const proCoupStartIndex = returnProCoupStartIndex(arr, i)
console.log(proCoupStartIndex);
const coupUseNum = returnProductCanUseNum($goodsPayPriceMap[coup.proId], proCoupStartIndex,
coup.num)
const num = Math.min($goodsPayPriceMap[coup.proId].length, coupUseNum)
coup.num = num
console.log($goodsPayPriceMap[coup.proId]);
const findGoods = order.detailList.find(v => v.productId == coup.proId)
const isMember = findGoods.isMember
coup.discountAmount = returnProductCoupAllPrice($goodsPayPriceMap[coup.proId],
proCoupStartIndex, num, isMember).toFixed(2)
}
}
productCoup = productCoup.filter(v => v.num >= 1)
console.log(productCoup);
pays.quan = [...manjianCoup, ...productCoup]
console.log(pays.quan);
}
function watchChooseQuan() {
uni.$off('choose-quan')
uni.$on('choose-quan', (arr) => {
console.log(arr);
discount.discount = 100
discount.value = 0
discount.currentPrice = order.amount
const manjianCoup = arr.filter(v => v.type == 1 && v.num >= 1)
let productCoup = arr.filter(v => v.type == 2)
console.log(productCoup);
//商品券分组
let coupMap = {}
for (let i in productCoup) {
const coup = productCoup[i]
if (coupMap.hasOwnProperty(coup.proId)) {
coupMap[coup.proId].push(coup)
} else {
coupMap[coup.proId] = [coup]
}
}
console.log(coupMap);
for (let key in coupMap) {
const arr = coupMap[key]
for (let i in arr) {
const coup = arr[i]
const proCoupStartIndex = returnProCoupStartIndex(arr, i)
console.log(proCoupStartIndex);
const coupUseNum = returnProductCanUseNum($goodsPayPriceMap[coup.proId], proCoupStartIndex,
coup.num)
const num = Math.min($goodsPayPriceMap[coup.proId].length, coupUseNum)
coup.num = num
console.log($goodsPayPriceMap[coup.proId]);
const findGoods = order.detailList.find(v => v.productId == coup.proId)
const isMember = findGoods.isMember
coup.discountAmount = returnProductCoupAllPrice($goodsPayPriceMap[coup.proId],
proCoupStartIndex, num, isMember).toFixed(2)
}
}
productCoup = productCoup.filter(v => v.num >= 1)
console.log(productCoup);
pays.quan = [...manjianCoup, ...productCoup]
console.log(pays.quan);
setQuan(arr)
})
}
@@ -702,9 +713,19 @@
const orderRes = await orderApi.tbOrderInfoDetail(order.orderId)
Object.assign(order, orderRes)
$goodsPayPriceMap = returnGoodsPayPriceMap(order.detailList)
console.log($goodsPayPriceMap);
const hasSelQuan = orderRes.couponInfoList ? JSON.parse(orderRes.couponInfoList) : {
fullReductionCoupon: [],
productCoupon: []
};
const fullReductionCoupon = hasSelQuan.fullReductionCoupon.filter(v => v.type == 1)
const productCoupon = hasSelQuan.productCoupon.filter(v => v.type == 2)
setQuan([...fullReductionCoupon, ...productCoupon])
if (orderRes.memberId) {
calcUsablePoints()
if (orderRes.pointsNum) {
accountPoints.sel = true
}
queryAllShopUser({
id: orderRes.memberId
}).then(res => {
@@ -733,7 +754,8 @@
// const discountPrice = discount.currentPrice ? discount.currentPrice : order.amount
// const calcPrice = discountPrice - coupAllPrice.value - accountPoints.price * (accountPoints.sel ? 1 : 0)
// return (calcPrice <= 0 ? 0 : calcPrice).toFixed(2)
const total = (order.amount || 0) - productCouponDiscountAmount.value - discount.value -
const total = (originPrice.value) - vipDiscount.value - productCouponDiscountAmount.value - discount
.value -
fullCouponDiscountAmount.value - accountPoints.price * (accountPoints.sel ? 1 : 0)
return (total < 0 ? 0 : total).toFixed(2)
})
@@ -750,8 +772,11 @@
return goodsPrice.toFixed(2)
})
const originPrice = computed(() => {
const n=(order.amount || 0) * 1 + vipDiscount.value * 1
return n.toFixed(2)
const n = (order.amount || 0) * 1 + vipDiscount.value * 1 + (order.fullCouponDiscountAmount || 0) + (order
.productCouponDiscountAmount || 0) +
(order.pointsDiscountAmount || 0)
return n.toFixed(2)
})
const fullCouponDiscountAmount = computed(() => {
return pays.quan.filter(v => v.type == 1).reduce((prve, cur) => {