diff --git a/rc-busness/pages/personal/settlement.vue b/rc-busness/pages/personal/settlement.vue index 9253ca11..aa9ac2a1 100644 --- a/rc-busness/pages/personal/settlement.vue +++ b/rc-busness/pages/personal/settlement.vue @@ -93,7 +93,7 @@ {{ discountAmount }} 合计金额: - {{ discountedSumPrice }} + {{ finalAmount }}
提交订单 @@ -252,7 +252,8 @@ export default { payment: "¥0.00 ", }, discountAmount:0, - discountedItemIndex:undefined, + finalAmount:0, + discountedProductCode:undefined, }; }, computed: { @@ -262,94 +263,39 @@ export default { }, 0); }, // 折扣计算 - discountedSumPrice() { - let total = 0; - if(this.curCoupon.couponId) { - //Coupon Calculation - let couponUsed=false; - let tmpCounter = 0 ; - this.discountedItemIndex = 0; - for(let itemInCart of this.goldmedal) { - if((!this.curCoupon.productCodes || this.curCoupon.productCodes.indexOf(itemInCart.productCode)>-1) && !couponUsed) { - if(this.curCoupon.minQuantity && this.curCoupon.minQuantity>itemInCart.buyCount) { - //Check minQuantity - total+=(itemInCart.buyCount * itemInCart.productPrice); - } else if(this.curCoupon.minPrice && this.curCoupon.minPrice > (itemInCart.buyCount * itemInCart.productPrice)) { - //Check minPrice - total+=(itemInCart.buyCount * itemInCart.productPrice); - } else { - //Into coupon discount calculation - switch(this.curCoupon.couponTypeId) { - case 1: //Amount deduct - total = total + (itemInCart.productPrice * itemInCart.buyCount - this.curCoupon.couponAmount); - this.discountAmount = this.curCoupon.couponAmount; - this.discountedItemIndex = tmpCounter; - couponUsed=true; - break; - case 2: //Amount deduct with minPrice restriction - case 6: - total = total + (itemInCart.productPrice * itemInCart.buyCount) - this.curCoupon.couponAmount; - this.discountAmount = this.curCoupon.couponAmount; - this.discountedItemIndex = tmpCounter; - couponUsed=true; - break; - case 3: //Limited product % discount - case 4: //% discount - debugger; - total = total + (itemInCart.productPrice * itemInCart.buyCount) * this.curCoupon.discount; - this.discountAmount = (itemInCart.productPrice * itemInCart.buyCount) * ( 1 - this.curCoupon.discount); - this.discountedItemIndex = tmpCounter; - couponUsed=true; - break; - default: - total += itemInCart.productPrice * itemInCart.buyCount; - break; - } - //Into coupon discount calculation end - } - } else { - total += itemInCart.productPrice * itemInCart.buyCount; - } - tmpCounter++; - } - } else { - //Normal Calculation - total=this.goldmedal.reduce((pre, cur) => { - return pre + cur.buyCount * cur.productPrice; - }, 0); - } - if(this.discountAmount) - this.discountAmount = this.discountAmount.toFixed(2); - if(!total) - total=0; - total = total.toFixed(2); - return total; - }, }, methods: { ...mapMutations(["checkIsLogin"]), + discountedSumPrice() { + let total = 0; + if(this.curCoupon.productCodes) + this.finalAmount = this.qualifiedProductDiscount(); + else + this.finalAmount = this.wholeOrderDiscount(); + this.finalAmount = parseFloat(this.finalAmount).toFixed(2); + this.discountAmount = parseFloat(this.discountAmount).toFixed(2); + }, wholeOrderDiscount(){ this.discountedItemIndex = 0; - if(this.curCoupon.minPrice && this.curCoupon.minPrice > this.sumPrice) { + if(this.curCoupon.minPrice && this.curCoupon.minPrice < this.sumPrice) { if(this.curCoupon.couponAmount && this.curCoupon.couponAmount>0) { - this.discountAmount = this.curCoupon.discount; + this.discountAmount = this.curCoupon.couponAmount; return this.sumPrice - this.curCoupon.couponAmount; } else if(this.curCoupon.discount && this.curCoupon.discount>0) { this.discountAmount = this.sumPrice*this.curCoupon.discount; return this.sumPrice * (1-this.curCoupon.discount); } + } else { + return this.sumPrice; } }, qualifiedProductDiscount(){ - //TODO this.discountedItemIndex = 0; - let tmpCounter = 0 ; - - //Sort items by items amount - - //Sort items by items amount end - - for(let itemInCart of this.goldmedal) { + let total = 0; + let couponUsed = false; + let tmpShoppingCartList = this.arrSort(this.goldmedal); + + for(let itemInCart of tmpShoppingCartList) { if((!this.curCoupon.productCodes || this.curCoupon.productCodes.indexOf(itemInCart.productCode)>-1) && !couponUsed) { if(this.curCoupon.minQuantity && this.curCoupon.minQuantity>itemInCart.buyCount) { //Check minQuantity @@ -363,21 +309,21 @@ export default { case 1: //Amount deduct total = total + (itemInCart.productPrice * itemInCart.buyCount - this.curCoupon.couponAmount); this.discountAmount = this.curCoupon.couponAmount; - this.discountedItemIndex = tmpCounter; + this.discountedProductCode = itemInCart.productCode; couponUsed=true; break; case 2: //Amount deduct with minPrice restriction case 6: total = total + (itemInCart.productPrice * itemInCart.buyCount) - this.curCoupon.couponAmount; this.discountAmount = this.curCoupon.couponAmount; - this.discountedItemIndex = tmpCounter; + this.discountedProductCode = itemInCart.productCode; couponUsed=true; break; case 3: //Limited product % discount case 4: //% discount total = total + (itemInCart.productPrice * itemInCart.buyCount) * this.curCoupon.discount; this.discountAmount = (itemInCart.productPrice * itemInCart.buyCount) * ( 1 - this.curCoupon.discount); - this.discountedItemIndex = tmpCounter; + this.discountedProductCode = itemInCart.productCode; couponUsed=true; break; default: @@ -389,8 +335,21 @@ export default { } else { total += itemInCart.productPrice * itemInCart.buyCount; } - tmpCounter++; } + return total; + }, + arrSort(arr) { + let userarr=[] + let a=[]; + for(let i in arr){ + arr[i].total=arr[i].productPrice*arr[i].buyCount; + if(arr[i].total){ + userarr.push(arr[i]); + } + } + return userarr.sort((n1,n2)=>{ + return n2.total-n1.total; + }); }, async getAddressList() { let memberId = JSON.parse(localStorage.getItem("userInfo")).data.id; @@ -423,9 +382,11 @@ export default { let valDateFromTime=0; let valDateToTime=0; let dateChecked=true; + if (data) { this.drawlist=[]; for(let itemInCart of this.goldmedal) { + let tmpIndex=0; for(let myCoupon of data.data) { valDateFromTime=0; valDateToTime=0; @@ -442,9 +403,18 @@ export default { if(valDateToTime && curTime > valDateToTime) { dateChecked=false; } - if(dateChecked && myCoupon.activityId != 10 && myCoupon.status == 0 && (myCoupon.productCodes.indexOf(itemInCart.productCode)>-1 || !myCoupon.productCodes)) { + if(myCoupon.minQuantity && myCoupon.minQuantity>itemInCart.buyCount) { + dateChecked=false; + } + if(myCoupon.minPrice && myCoupon.minPrice>this.sumPrice) { + dateChecked=false; + } + + if(dateChecked && myCoupon.activityId != 10 && myCoupon.status == 0 && (!myCoupon.productCodes || myCoupon.productCodes.indexOf(itemInCart.productCode)>-1)) { + data.data.splice(tmpIndex,1); _self.drawlist.push(myCoupon); } + tmpIndex++; } } } @@ -452,6 +422,7 @@ export default { pickCoupon(item){ this.curCoupon = item; this.dialogInfo1 = false; + this.discountedSumPrice(); }, editAddress(item) { this.dialogAddTitle = "修改收货地址"; @@ -556,7 +527,7 @@ export default { addressDetailInfo: orderAddress[0].detailAddress, }, }; - if(this.curCoupon.couponId && tmpCounter == this.discountedItemIndex) { + if(this.curCoupon.couponId && item.productCode == this.discountedProductCode) { oneProduct.couponId = this.curCoupon.couponId; oneProduct.couponTypeId = this.curCoupon.couponTypeId; oneProduct.couponName = this.curCoupon.couponName; @@ -644,6 +615,7 @@ export default { this.goldmedal = JSON.parse(this.$route.query.list); this.getAddressList(); this.checkIsLogin(); + this.finalAmount = this.sumPrice; // this.addressstype = this.$route.query.stype; // this.orderNumber = this.$route.query.orderNumber; // this.canceldanhao(this.orderNumber);