Magetno 2.2.7(一步结帐模块)
define([
'ko',
'jquery',
'Magento_Checkout/js/model/quote',
'Magento_Checkout/js/model/resource-url-manager',
'Magento_Checkout/js/model/error-processor',
'Magento_SalesRule/js/model/payment/discount-messages',
'mage/storage',
'mage/translate',
'Magento_Checkout/js/action/get-payment-information',
'Magento_Checkout/js/model/totals',
'Magento_Checkout/js/model/full-screen-loader'
], function (ko, $, quote, urlManager, errorProcessor, messageContainer, storage, $t, getPaymentInformationAction,
totals, fullScreenLoader
) {
'use strict';
return function (couponCode, isApplied) {
var quoteId = quote.getQuoteId(),
url = urlManager.getApplyCouponUrl(couponCode, quoteId),
message = $t('Your coupon was successfully applied!!');
fullScreenLoader.startLoader();
return storage.put(
url,
{},
false
).done(function (response) {
var deferred;
if (response) {
deferred = $.Deferred();
isApplied(true);
totals.isLoading(true);
getPaymentInformationAction(deferred);
$.when(deferred).done(function () {
fullScreenLoader.stopLoader();
totals.isLoading(false);
console.log("trigger update");
});
messageContainer.addSuccessMessage({
'message': message
});
}
}).fail(function (response) {
fullScreenLoader.stopLoader();
totals.isLoading(false);
errorProcessor.process(response, messageContainer);
});
};
});
答案 0 :(得分:0)
我找到了解决方案,更改了文件set-coupon-code.js,cancel-cupon.js(供应商\ magento \ module-sales-rule \ view \ frontend \ web \ js \ action)。也许这不是最佳解决方案,但可以。
set-coupon-code.js
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
/**
* Customer store credit(balance) application
*/
define([
'ko',
'jquery',
'Magento_Checkout/js/model/quote',
'Magento_Checkout/js/model/resource-url-manager',
'Magento_Checkout/js/model/error-processor',
'Magento_SalesRule/js/model/payment/discount-messages',
'mage/storage',
'mage/translate',
'Magento_Checkout/js/action/get-payment-information',
'Magento_Checkout/js/model/totals',
'Magento_Checkout/js/model/full-screen-loader'
], function (ko, $, quote, urlManager, errorProcessor, messageContainer, storage, $t, getPaymentInformationAction,
totals, fullScreenLoader
) {
'use strict';
return function (couponCode, isApplied) {
var quoteId = quote.getQuoteId(),
url = urlManager.getApplyCouponUrl(couponCode, quoteId),
message = $t('Your coupon was successfully applied!');
fullScreenLoader.startLoader();
return storage.put(
url,
{},
false
).done(function (response) {
var deferred;
if (response) {
deferred = $.Deferred();
isApplied(true);
totals.isLoading(true);
getPaymentInformationAction(deferred);
$.when(deferred).done(function () {
fullScreenLoader.stopLoader();
totals.isLoading(false);
var select2 = document.getElementById("checkout-review-table").getElementsByClassName("item_qty")[0];
select2.addEventListener('change',function(){
});
select2.value = Number(select2.value) + 1;
select2.value = Number(select2.value) - 1;
select2.dispatchEvent(new Event('change'));
});
messageContainer.addSuccessMessage({
'message': message
});
}
}).fail(function (response) {
fullScreenLoader.stopLoader();
totals.isLoading(false);
errorProcessor.process(response, messageContainer);
});
};
});
cancel-cupon.js
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
/**
* Customer store credit(balance) application
*/
define([
'jquery',
'Magento_Checkout/js/model/quote',
'Magento_Checkout/js/model/resource-url-manager',
'Magento_Checkout/js/model/error-processor',
'Magento_SalesRule/js/model/payment/discount-messages',
'mage/storage',
'Magento_Checkout/js/action/get-payment-information',
'Magento_Checkout/js/model/totals',
'mage/translate',
'Magento_Checkout/js/model/full-screen-loader'
], function ($, quote, urlManager, errorProcessor, messageContainer, storage, getPaymentInformationAction, totals, $t,
fullScreenLoader
) {
'use strict';
return function (isApplied) {
var quoteId = quote.getQuoteId(),
url = urlManager.getCancelCouponUrl(quoteId),
message = $t('Your coupon was successfully removed!');
messageContainer.clear();
fullScreenLoader.startLoader();
return storage.delete(
url,
false
).done(function () {
var deferred = $.Deferred();
totals.isLoading(true);
getPaymentInformationAction(deferred);
$.when(deferred).done(function () {
isApplied(false);
totals.isLoading(false);
fullScreenLoader.stopLoader();
var select2 = document.getElementById("checkout-review-table").getElementsByClassName("item_qty")[0];
select2.addEventListener('change',function(){
});
select2.value = Number(select2.value) + 1;
select2.value = Number(select2.value) - 1;
select2.dispatchEvent(new Event('change'));
});
messageContainer.addSuccessMessage({
'message': message
});
}).fail(function (response) {
totals.isLoading(false);
fullScreenLoader.stopLoader();
errorProcessor.process(response, messageContainer);
});
};
});