Built files from Bizgaze WebServer
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

cartitem.component.js 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. var Bizgaze;
  2. (function (Bizgaze) {
  3. let Apps;
  4. (function (Apps) {
  5. let Transact;
  6. (function (Transact) {
  7. let Controls;
  8. (function (Controls) {
  9. class CartItem extends Unibase.Platform.Core.BaseComponent {
  10. init() {
  11. var instance = this;
  12. instance.fileCacheHelper.loadJsFile("apps/transact/controls/invoices/pos.component.js", function () {
  13. instance._pos = Bizgaze.Apps.Transact.Controls.Pos.Instance();
  14. });
  15. }
  16. updateCartContainerHtml(itemId, productId) {
  17. var cartInfo = document.getElementsByClassName("cart-item-info");
  18. if (cartInfo.length > 0) {
  19. let cartContainerItemElement = document.querySelector(".cart-container [data-itemId='" + itemId + "'][data-productId='" + productId + "']");
  20. let currentCart = Bizgaze.Apps.Transact.Controls.Pos.Instance().userCart.find(x => x.productId == productId && x.itemId == itemId);
  21. if (cartContainerItemElement) {
  22. $(cartContainerItemElement).find(".item-quantity").val(currentCart.quantity.toString());
  23. $(cartContainerItemElement).find(".item-quantity").text(currentCart.quantity.toString());
  24. $(cartContainerItemElement).find(".total-price").text(((currentCart.quantity * currentCart.itemPrice).toFixed(2)).toString());
  25. $(cartContainerItemElement).find(".total-accessible-price").text(((currentCart.quantity * currentCart.accessibleAmount).toFixed(2)).toString());
  26. $(cartContainerItemElement).find('.item-weight .item-quantity').text(currentCart.quantity);
  27. if (currentCart.discountRate > 0) {
  28. $(cartContainerItemElement).find('.item-discount').removeClass("d-none");
  29. }
  30. }
  31. else {
  32. var html = "";
  33. var itemdetails = this._pos.userCart.find(x => x.itemId == itemId && x.productId == productId);
  34. if (itemdetails != undefined) {
  35. if (itemdetails["offerrefid"] != 0) {
  36. html = this.getCartItemsHtml(itemdetails, itemdetails.isFOC);
  37. }
  38. else {
  39. html = this.getCartItemsHtml(itemdetails);
  40. }
  41. $('#cart-container-items').last().append(html);
  42. }
  43. }
  44. if ($(cartContainerItemElement).find('.item-discount').text() != "") {
  45. $(cartContainerItemElement).find('.item-discount').removeClass("d-none");
  46. }
  47. }
  48. else {
  49. $(".cart-container").remove();
  50. $('#poscart_details').find('.Section').first().find(".card-body").first().append(this.getCartHtml());
  51. Bizgaze.Apps.Transact.Controls.Pos.Instance().cartInfoElement = null;
  52. Bizgaze.Apps.Transact.Controls.Pos.Instance().allEventsExecuted = false;
  53. Bizgaze.Apps.Transact.Controls.Pos.Instance().eventListeners();
  54. }
  55. Bizgaze.Apps.Transact.Controls.Pos.Instance().updateCheckoutPrice();
  56. var total = $("#grand_total_checkout").text();
  57. if ($('.section_PaymentInformation').is(':visible')) {
  58. $('#billDetailsWrap').removeClass('d-none');
  59. Bizgaze.Apps.Transact.Controls.Pos.Instance().applyCartBodyHeight();
  60. }
  61. $(".total-pay-price").text(total);
  62. this._pos.runVirtualKeyboard();
  63. this._pos.applyCartBodyHeight();
  64. }
  65. getCartHtml() {
  66. let html = "";
  67. var ins = Bizgaze.Apps.Transact.Controls.Pos.Instance();
  68. var totalQuantity = Bizgaze.Apps.Transact.Controls.Pos.Instance().userCart.length;
  69. for (var i = 0; i < Bizgaze.Apps.Transact.Controls.Pos.Instance().userCart.length; i++) {
  70. if (Bizgaze.Apps.Transact.Controls.Pos.Instance().userCart[i]["offerrefid"] != 0) {
  71. html += this.getCartItemsHtml(Bizgaze.Apps.Transact.Controls.Pos.Instance().userCart[i], Bizgaze.Apps.Transact.Controls.Pos.Instance().userCart[i].isFOC);
  72. }
  73. else {
  74. html += this.getCartItemsHtml(Bizgaze.Apps.Transact.Controls.Pos.Instance().userCart[i]);
  75. }
  76. }
  77. var total = Bizgaze.Apps.Transact.Controls.Pos.Instance().totalPrice(Bizgaze.Apps.Transact.Controls.Pos.Instance().userCart).toFixed(2);
  78. var display = "";
  79. if (Bizgaze.Apps.Transact.Controls.Pos.Instance().invoiceid == 0) {
  80. display = "d-none";
  81. }
  82. let taxamount = parseFloat(Bizgaze.Apps.Transact.Controls.Pos.Instance().totalTaxAmount).toFixed(2);
  83. return `<div class='cart-container'><div class='card-header cart-header px-10'><span id="cart-quantity" class="cart-quantity"><span class="cart-heading"><i class="las la-shopping-cart font-25 mr-5"></i> Order Details</span><span class="item-quantity">${totalQuantity}</span></span></div><div data-simplebar class='simple-scroll-bar card-body p-0 cart-body'><div id="cart-container-items">${html}</div></div><div class="cart-footer"><div id="billDetailsWrap" class="bill-details-wrap d-none"><div class="bill-details"><div class="coupon-wrapper"><a class="apply-coupon-link" href="javascript:;" id="applyCoupanLink" onclick="Bizgaze.Apps.Transact.Controls.CartItem.Instance().applyCoupan();">Apply Coupon</a><div class="coupon-input-wrap d-none"><input type="text" class="form-control coupon-input virtual-keyboard" data-kioskboard-type="all" data-kioskboard-specialcharacters="false" placeholder="Apply coupon"><a class="coupon-code-apply" href="javascript:;">Apply</a></div></div><span class="font-weight-500 text-dark-100 mb-1">Bill Details</span><ul class="bill-details-list"><li><span >Item Total</span><span class="detail-price" id="total_adjustmentprice">${parseFloat(ins.totalAdjustmentAmmount).toFixed(2)}</span></li><li><span>Discounts</span><span class="detail-price" id="total_discountprice">${ins.totalDiscountAmount}</span></li><li><span>Taxes</span><span class="detail-price" id="total_taxprice">${taxamount}</span></li></ul></div><div class="total-pay-price-wrap"><span>Total</span><span class="total-pay-price" id="total_price">${parseFloat(total).toFixed(2)}</span></div></div><div class="cart-checkout-btn ${display}"><a href="javascript:;">Checkout</a><span id="grand_total_checkout" class="total-price-box total-price">${parseFloat(total).toFixed(2)}</span></div></div></div>`;
  84. }
  85. getCartItemsHtml(cartItem, isOffer) {
  86. cartItem.itemPrice = parseFloat(cartItem.itemPrice).toFixed(2);
  87. let isHidden = '', isFree = '', productId = cartItem.productId, discount = '', hasdiscount = 'd-none';
  88. var discountvalue = 0;
  89. var accessibleAmount = (cartItem.quantity * cartItem.itemPrice).toFixed(2);
  90. if (cartItem.discountRate > 0) {
  91. discount = ' - (' + cartItem.discountRate + ') %';
  92. hasdiscount = '';
  93. }
  94. if (isOffer) {
  95. isHidden = 'd-none';
  96. isFree = '(free)';
  97. productId = 0;
  98. accessibleAmount = (cartItem.accessibleAmount * cartItem.quantity).toFixed(2);
  99. }
  100. var image = "";
  101. var imagepath = Bizgaze.Apps.Transact.Controls.Pos.Instance().itemImage.find(x => x.itemId == cartItem.itemId);
  102. if (imagepath != null && imagepath != undefined) {
  103. image = imagepath.image;
  104. }
  105. return `<div class="cart-item-info" data-itemId="${cartItem.itemId}" data-productId="${productId}">
  106. <input class="item-tax-amount hidden" style="" value ="${cartItem.TaxAmount}">
  107. <input class="discount_amount d-none hidden" value="${cartItem.DiscountAmount}">
  108. <div class="item-left-details"><img src="${image}" class="cart-item-img">
  109. <div class="cart-item-details">
  110. <span class="item-name">${cartItem.itemName} ${isFree}</span>
  111. <span class="item-weight"><span class="item-quantity">${cartItem.quantity}</span><span class="mx-1"><i class="las la-times"></i></span><span class="item-price">${cartItem.itemPrice}<span class="item-discount ${hasdiscount}">${discount}</span> </span></span>
  112. </div></div>
  113. <div class="item-right-details"><span class="total-accessible-price">${(accessibleAmount)}</span>
  114. <div class="cart-counter ${isHidden}">
  115. <a class="btn item-increment-btn control-btn" href="javascript:;"><i class="las la-plus"></i></a>
  116. <input type="number" value="${cartItem.quantity}" min="0" max="100" class="prodQuantity item-quantity virtual-keyboard" data-kioskboard-type="numpad">
  117. <a class="item-decrement-btn control-btn" href="javascript:;"><i class="las la-minus"></i></a>
  118. </div></div>
  119. <a class="btn item-remove-btn ${isHidden}" href="javascript:;"><i class="las la-times font-18"></i></a>
  120. </div>`;
  121. }
  122. loadControl(containerid, prop) {
  123. const self = this;
  124. var data = self.getCartHtml();
  125. $("#" + containerid).append(data);
  126. $('#poscart_details').find('.Section').first().addClass('mb-0 border-0').find('.card-header').first().addClass('d-none').siblings('.card-body').addClass('pa-0');
  127. }
  128. applyCoupan() {
  129. $('.coupon-input-wrap').toggleClass('d-none');
  130. $('.apply-coupon-link').toggleClass('active');
  131. this._pos.applyCartBodyHeight();
  132. }
  133. loadControlSettings(controlsettingjson, formpropertyid) {
  134. }
  135. loadPropertySettings(propertysettings, formpropertyid) {
  136. }
  137. bindEditFormDetails(formpropertyid, propval, DocPropertyName) {
  138. }
  139. static Instance() {
  140. if (this.instance === undefined) {
  141. this.instance = new CartItem();
  142. }
  143. return this.instance;
  144. }
  145. }
  146. Controls.CartItem = CartItem;
  147. })(Controls = Transact.Controls || (Transact.Controls = {}));
  148. })(Transact = Apps.Transact || (Apps.Transact = {}));
  149. })(Apps = Bizgaze.Apps || (Bizgaze.Apps = {}));
  150. })(Bizgaze || (Bizgaze = {}));