|
@@ -32,6 +32,7 @@ export default {
|
|
maxReduceDiscount: 0,
|
|
maxReduceDiscount: 0,
|
|
reduceHours: 0,
|
|
reduceHours: 0,
|
|
remainPrice: 0,
|
|
remainPrice: 0,
|
|
|
|
+ isInit: 1,
|
|
};
|
|
};
|
|
},
|
|
},
|
|
computed: {
|
|
computed: {
|
|
@@ -186,7 +187,35 @@ export default {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
},
|
|
- checkedList() {
|
|
|
|
|
|
+ checkedList(newVal, oldVal) {
|
|
|
|
+ // console.log(190, { newVal, oldVal });
|
|
|
|
+ if (this.parkMallCode === 4 && this.isInit > 1) {
|
|
|
|
+ const { maxOneDayCoupons, maxonedaydiscountFee, maxOneTimeDiscountTime, remainConsumeTime, hourPrice, oneTimeLimitation, oneDayLimitation, maxOneDayDiscountFee } = this.orderDetail.parkingRule;
|
|
|
|
+ // 会员等级选中了
|
|
|
|
+ if (newVal.indexOf('member') > -1 && oldVal.indexOf('member') < 0) {
|
|
|
|
+ // console.log(193, '会员等级选中了');
|
|
|
|
+ // this.remainPrice = this.remainPrice + this.memberGrade.discountFee;
|
|
|
|
+ // this.maxReduceDiscountInit();
|
|
|
|
+ }
|
|
|
|
+ if (oldVal.indexOf('member') > -1 && newVal.indexOf('member') < 0) {
|
|
|
|
+ // 会员等级未选中了
|
|
|
|
+ // console.log(193, '会员等级未选中了');
|
|
|
|
+ // this.remainPrice = this.remainPrice - this.memberGrade.discountFee;
|
|
|
|
+ // this.maxReduceDiscountInit();
|
|
|
|
+ }
|
|
|
|
+ // 消费减免选中了
|
|
|
|
+ if (newVal.indexOf('reduces') > -1 && oldVal.indexOf('reduces') < 0) {
|
|
|
|
+ // console.log(193, '消费减免选中了');
|
|
|
|
+ this.consume.discountFee = this.reduceHours * hourPrice
|
|
|
|
+ this.remainPrice = this.remainPrice + this.consume.discountFee;
|
|
|
|
+ }
|
|
|
|
+ if (oldVal.indexOf('reduces') > -1 && newVal.indexOf('reduces') < 0) {
|
|
|
|
+ // 消费减免未选中了
|
|
|
|
+ // console.log(193, '消费减免未选中了');
|
|
|
|
+ this.consume.discountFee = this.reduceHours * hourPrice
|
|
|
|
+ this.remainPrice = this.remainPrice - this.consume.discountFee;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
// const {hourPrice} = this.orderDetail.parkingRule;
|
|
// const {hourPrice} = this.orderDetail.parkingRule;
|
|
// if ( this.checkedList.indexOf('reduces') > -1 ) {
|
|
// if ( this.checkedList.indexOf('reduces') > -1 ) {
|
|
// this.remainPrice = this.reduceHours * hourPrice + this.remainPrice
|
|
// this.remainPrice = this.reduceHours * hourPrice + this.remainPrice
|
|
@@ -228,9 +257,7 @@ export default {
|
|
this.maxReduceDiscount = this.consume.hasOwnProperty('discountFee') ? this.consume.discountFee / hourPrice : this.consume.defaultDiscountTime;
|
|
this.maxReduceDiscount = this.consume.hasOwnProperty('discountFee') ? this.consume.discountFee / hourPrice : this.consume.defaultDiscountTime;
|
|
const remainingLimitToIncrease = Math.abs(this.remainPrice - this.availableDiscountFee) / hourPrice
|
|
const remainingLimitToIncrease = Math.abs(this.remainPrice - this.availableDiscountFee) / hourPrice
|
|
if (remainingLimitToIncrease && isSelected) {
|
|
if (remainingLimitToIncrease && isSelected) {
|
|
- const remainingLimitToIncrease = Math.abs(this.remainPrice - this.availableDiscountFee) / hourPrice
|
|
|
|
- const maxReduceDiscount = this.consume.discountFee / hourPrice + remainingLimitToIncrease
|
|
|
|
- this.maxReduceDiscount = maxReduceDiscount < remainConsumeTime ? maxReduceDiscount : remainConsumeTime
|
|
|
|
|
|
+ this.maxReduceDiscountInit();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.oldCheckedList = [...this.checkedList];
|
|
this.oldCheckedList = [...this.checkedList];
|
|
@@ -240,6 +267,25 @@ export default {
|
|
// }
|
|
// }
|
|
// https://kerryprops.atlassian.net/browse/SCRM-4016?focusedCommentId=117842: 只要存在消费减免情况,都允许用户进行操作
|
|
// https://kerryprops.atlassian.net/browse/SCRM-4016?focusedCommentId=117842: 只要存在消费减免情况,都允许用户进行操作
|
|
this.isReduces = JSON.stringify(this.consume) === '{}';
|
|
this.isReduces = JSON.stringify(this.consume) === '{}';
|
|
|
|
+ setTimeout(() => {
|
|
|
|
+ this.isInit = this.isInit + 1
|
|
|
|
+ }, 300)
|
|
|
|
+ },
|
|
|
|
+ maxReduceDiscountInit() {
|
|
|
|
+ const { maxConsumeTime, remainConsumeTime, hourPrice } = this.orderDetail.parkingRule;
|
|
|
|
+ const remainingLimitToIncrease = Math.abs(this.remainPrice - this.availableDiscountFee) / hourPrice
|
|
|
|
+ if (!remainingLimitToIncrease) return
|
|
|
|
+ if (this.remainPrice > this.availableDiscountFee) {
|
|
|
|
+ // console.log('过大', this.maxReduceDiscount, remainingLimitToIncrease);
|
|
|
|
+ this.maxReduceDiscount = this.maxReduceDiscount - remainingLimitToIncrease
|
|
|
|
+ this.consume.discountFee = this.consume.discountFee - (remainingLimitToIncrease * hourPrice)
|
|
|
|
+ this.remainPrice = this.remainPrice - (remainingLimitToIncrease * hourPrice);
|
|
|
|
+ this.reduceHours = this.maxReduceDiscount
|
|
|
|
+ } else {
|
|
|
|
+ // console.log('过小');
|
|
|
|
+ const maxReduceDiscount = this.consume.discountFee / hourPrice + remainingLimitToIncrease
|
|
|
|
+ this.maxReduceDiscount = maxReduceDiscount < remainConsumeTime ? maxReduceDiscount : remainConsumeTime
|
|
|
|
+ }
|
|
},
|
|
},
|
|
setIsMemberDiscountDisabled() {
|
|
setIsMemberDiscountDisabled() {
|
|
this.todayReduceDiscountMessage = '当日';
|
|
this.todayReduceDiscountMessage = '当日';
|
|
@@ -252,8 +298,8 @@ export default {
|
|
const { maxOneDayCoupons, maxonedaydiscountFee, maxOneTimeDiscountTime, remainConsumeTime, hourPrice, availableDiscountFee, oneTimeLimitation, oneDayLimitation, maxOneDayDiscountFee } = this.orderDetail.parkingRule;
|
|
const { maxOneDayCoupons, maxonedaydiscountFee, maxOneTimeDiscountTime, remainConsumeTime, hourPrice, availableDiscountFee, oneTimeLimitation, oneDayLimitation, maxOneDayDiscountFee } = this.orderDetail.parkingRule;
|
|
// console.log(133,this.reduceHours)
|
|
// console.log(133,this.reduceHours)
|
|
// console.log(166, this.maxReduceDiscount);
|
|
// console.log(166, this.maxReduceDiscount);
|
|
- if (type === 'plus' && (this.reduceHours < this.maxReduceDiscount || this.parkMallCode === 4)) {
|
|
|
|
- const [isCrossMessage = false, maxReduceDiscount = this.maxReduceDiscount] = this.crossMessage();
|
|
|
|
|
|
+ if (type === 'plus') {
|
|
|
|
+ const [isCrossMessage = false, maxReduceDiscount = this.maxReduceDiscount] = this.crossMessage('onReduceHoursChange');
|
|
if (isCrossMessage) {
|
|
if (isCrossMessage) {
|
|
// this.remainPrice = this.remainPrice - hourPrice;
|
|
// this.remainPrice = this.remainPrice - hourPrice;
|
|
// this.reduceHours = this.reduceHours - 1;
|
|
// this.reduceHours = this.reduceHours - 1;
|
|
@@ -261,11 +307,13 @@ export default {
|
|
}
|
|
}
|
|
this.remainPrice = this.remainPrice + hourPrice;
|
|
this.remainPrice = this.remainPrice + hourPrice;
|
|
this.reduceHours = this.reduceHours + 1;
|
|
this.reduceHours = this.reduceHours + 1;
|
|
|
|
+ this.consume.discountFee = this.reduceHours * hourPrice
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
if (type === 'minus' && this.reduceHours > 1) {
|
|
if (type === 'minus' && this.reduceHours > 1) {
|
|
this.reduceHours = this.reduceHours - 1;
|
|
this.reduceHours = this.reduceHours - 1;
|
|
this.remainPrice = this.remainPrice - hourPrice;
|
|
this.remainPrice = this.remainPrice - hourPrice;
|
|
|
|
+ this.consume.discountFee = this.reduceHours * hourPrice
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
},
|
|
},
|
|
@@ -276,19 +324,7 @@ export default {
|
|
this.remainPrice = this.memberGrade.discountFee + this.remainPrice;
|
|
this.remainPrice = this.memberGrade.discountFee + this.remainPrice;
|
|
// 沈阳
|
|
// 沈阳
|
|
if (this.parkMallCode === 4) {
|
|
if (this.parkMallCode === 4) {
|
|
- const [isCrossMessage = false, maxReduceDiscount = this.maxReduceDiscount] = this.crossMessage();
|
|
|
|
- if (isCrossMessage) {
|
|
|
|
- this.remainPrice = this.remainPrice - this.memberGrade.discountFee;
|
|
|
|
- this.checkedList = this.checkedList.filter((elm) => elm !== 'member');
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- this.remainPrice = this.remainPrice - this.reduceHours * hourPrice;
|
|
|
|
- this.$nextTick(() => {
|
|
|
|
- this.maxReduceDiscount = Math.abs(availableDiscountFee - this.remainPrice) / hourPrice
|
|
|
|
- this.reduceHours = this.maxReduceDiscount
|
|
|
|
- this.consume.discountFee = this.reduceHours * hourPrice
|
|
|
|
- this.remainPrice = this.remainPrice + this.reduceHours * hourPrice;
|
|
|
|
- })
|
|
|
|
|
|
+ this.maxReduceDiscountInit();
|
|
}
|
|
}
|
|
} else if (!this.isMember) {
|
|
} else if (!this.isMember) {
|
|
this.remainPrice = this.remainPrice - this.memberGrade.discountFee;
|
|
this.remainPrice = this.remainPrice - this.memberGrade.discountFee;
|
|
@@ -298,20 +334,7 @@ export default {
|
|
}
|
|
}
|
|
// 如果不是沈阳,重新计算优惠
|
|
// 如果不是沈阳,重新计算优惠
|
|
if (this.parkMallCode === 4) {
|
|
if (this.parkMallCode === 4) {
|
|
- const remainingLimitToIncrease = Math.abs(this.remainPrice - this.availableDiscountFee) / hourPrice
|
|
|
|
- const maxReduceDiscount = this.consume.discountFee / hourPrice + remainingLimitToIncrease
|
|
|
|
- const isReducesCheck = this.checkedList.indexOf('reduces');
|
|
|
|
- // console.log(303, isReducesCheck);
|
|
|
|
- // 用户没有选择消费减免
|
|
|
|
- if(isReducesCheck < 0) {
|
|
|
|
- console.log(302, isReducesCheck, maxReduceDiscount, remainingLimitToIncrease);
|
|
|
|
- } else {
|
|
|
|
- // 用户选择消费减免
|
|
|
|
- this.maxReduceDiscount = maxReduceDiscount < remainConsumeTime ? maxReduceDiscount : remainConsumeTime
|
|
|
|
- this.reduceHours = this.maxReduceDiscount
|
|
|
|
- this.consume.discountFee = this.reduceHours * hourPrice
|
|
|
|
- this.remainPrice = this.remainPrice + remainingLimitToIncrease * hourPrice - this.memberGrade.discountFee
|
|
|
|
- }
|
|
|
|
|
|
+ this.maxReduceDiscountInit();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// 如果不是沈阳
|
|
// 如果不是沈阳
|
|
@@ -325,31 +348,14 @@ export default {
|
|
}
|
|
}
|
|
},
|
|
},
|
|
reducesClick() {
|
|
reducesClick() {
|
|
- const { maxOneTimeDiscountTime, hourPrice, oneTimeLimitation, maxConsumeTime, remainConsumeTime, oneDayLimitation, maxOneDayDiscountFee,availableDiscountFee } = this.orderDetail.parkingRule;
|
|
|
|
|
|
+ const { maxOneTimeDiscountTime, hourPrice, oneTimeLimitation, maxConsumeTime, remainConsumeTime, oneDayLimitation, maxOneDayDiscountFee, availableDiscountFee } = this.orderDetail.parkingRule;
|
|
const maxOneTimeDiscountFee = maxOneTimeDiscountTime * hourPrice;
|
|
const maxOneTimeDiscountFee = maxOneTimeDiscountTime * hourPrice;
|
|
- const reduceHours = (maxOneTimeDiscountFee - this.remainPrice) / hourPrice;
|
|
|
|
if (this.checkedList.indexOf('reduces') > -1) {
|
|
if (this.checkedList.indexOf('reduces') > -1) {
|
|
this.remainPrice = hourPrice + this.remainPrice;
|
|
this.remainPrice = hourPrice + this.remainPrice;
|
|
// 如果不是沈阳,重新计算计算最大上限
|
|
// 如果不是沈阳,重新计算计算最大上限
|
|
if (this.parkMallCode !== 4) {
|
|
if (this.parkMallCode !== 4) {
|
|
this.maxReduceDiscount = remainConsumeTime > maxOneTimeDiscountFee / hourPrice ? maxOneTimeDiscountFee / hourPrice : remainConsumeTime;
|
|
this.maxReduceDiscount = remainConsumeTime > maxOneTimeDiscountFee / hourPrice ? maxOneTimeDiscountFee / hourPrice : remainConsumeTime;
|
|
}
|
|
}
|
|
- // 沈阳
|
|
|
|
- if (this.parkMallCode === 4) {
|
|
|
|
- const [isCrossMessage = false, maxReduceDiscount = this.maxReduceDiscount] = this.crossMessage();
|
|
|
|
- if (isCrossMessage) {
|
|
|
|
- this.remainPrice = this.remainPrice - this.memberGrade.discountFee;
|
|
|
|
- this.checkedList = this.checkedList.filter((elm) => elm !== 'member');
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- this.remainPrice = this.remainPrice - this.reduceHours * hourPrice;
|
|
|
|
- this.$nextTick(() => {
|
|
|
|
- this.maxReduceDiscount = Math.abs(availableDiscountFee - this.remainPrice) / hourPrice
|
|
|
|
- this.reduceHours = this.maxReduceDiscount
|
|
|
|
- this.consume.discountFee = this.reduceHours * hourPrice
|
|
|
|
- this.remainPrice = this.remainPrice + this.reduceHours * hourPrice;
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
} else {
|
|
} else {
|
|
this.remainPrice = this.remainPrice - hourPrice;
|
|
this.remainPrice = this.remainPrice - hourPrice;
|
|
// 如果不是沈阳,重新计算计算最大上限
|
|
// 如果不是沈阳,重新计算计算最大上限
|
|
@@ -365,19 +371,18 @@ export default {
|
|
}
|
|
}
|
|
},
|
|
},
|
|
// 超限提示
|
|
// 超限提示
|
|
- crossMessage() {
|
|
|
|
|
|
+ crossMessage(type) {
|
|
const { maxOneTimeDiscountTime, hourPrice, oneTimeLimitation, oneDayLimitation, maxOneDayDiscountFee } = this.orderDetail.parkingRule;
|
|
const { maxOneTimeDiscountTime, hourPrice, oneTimeLimitation, oneDayLimitation, maxOneDayDiscountFee } = this.orderDetail.parkingRule;
|
|
const maxOneTimeDiscountFee = maxOneTimeDiscountTime * hourPrice;
|
|
const maxOneTimeDiscountFee = maxOneTimeDiscountTime * hourPrice;
|
|
|
|
+ // console.log(373, this.remainPrice, this.availableDiscountFee);
|
|
// 单日上限
|
|
// 单日上限
|
|
- if (oneDayLimitation) {
|
|
|
|
- const sk = this.parkMallCode === 4 ? this.remainPrice > maxOneDayDiscountFee : this.remainPrice >= maxOneDayDiscountFee
|
|
|
|
- if (sk) {
|
|
|
|
- Toast({
|
|
|
|
- message: `每日最高可抵扣${maxOneDayDiscountFee}元`,
|
|
|
|
- icon: 'none',
|
|
|
|
- });
|
|
|
|
- return [true, (maxOneDayDiscountFee - (this.reduceHours - 1) * hourPrice) / hourPrice];
|
|
|
|
- }
|
|
|
|
|
|
+ if (oneDayLimitation && this.remainPrice >= this.availableDiscountFee) {
|
|
|
|
+
|
|
|
|
+ Toast({
|
|
|
|
+ message: `每日最高可抵扣${maxOneDayDiscountFee}元`,
|
|
|
|
+ icon: 'none',
|
|
|
|
+ });
|
|
|
|
+ return [true, (maxOneDayDiscountFee - (this.reduceHours - 1) * hourPrice) / hourPrice];
|
|
}
|
|
}
|
|
// 单次上限限制
|
|
// 单次上限限制
|
|
if (oneTimeLimitation && this.remainPrice >= maxOneTimeDiscountFee) {
|
|
if (oneTimeLimitation && this.remainPrice >= maxOneTimeDiscountFee) {
|