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);