goods.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. $(function () {
  2. // 加载评论
  3. window.load_comment_list = function (page) {
  4. SHOP.api.ajax({
  5. url: "/addons/shop/goods/get_comment_list",
  6. data: {id: GOODS.id, page: page}
  7. }, function (data, ret) {
  8. $("#comment").html(data);
  9. return false;
  10. })
  11. };
  12. //点击评论图片
  13. $(document).on("click", "#comment .comment-images img", function () {
  14. var data = [];
  15. $.each($(this).closest(".comment-images").find("img"), function (i, j) {
  16. data.push({
  17. "src": $(this).attr("src")
  18. });
  19. });
  20. var json = {
  21. "title": "",
  22. "start": $(this).parent().index(),
  23. "data": data
  24. };
  25. layer.photos(JSON.parse(JSON.stringify({photos: json})));
  26. });
  27. var galleryThumbs = new Swiper('.gallery-thumbs', {
  28. spaceBetween: 8,
  29. slidesPerView: 6,
  30. freeMode: false,
  31. watchSlidesVisibility: true,
  32. watchSlidesProgress: true,
  33. });
  34. var galleryTop = new Swiper('.gallery-top', {
  35. spaceBetween: 10,
  36. noSwipingClass: 'swiper-slide-spec',
  37. navigation: {
  38. nextEl: '.swiper-button-next',
  39. prevEl: '.swiper-button-prev',
  40. },
  41. thumbs: {
  42. swiper: galleryThumbs
  43. },
  44. });
  45. $(document).on('mouseenter', '.gallery-thumbs .swiper-slide', function () {
  46. $(this).trigger("click");
  47. galleryTop.slideTo($(this).index(), 0);
  48. });
  49. var checkSpecSelected = function () {
  50. if ($("input[name='spec_type']").val() == '1') {
  51. var sku = $("input[name='skuId']").val();
  52. if (!sku || sku == '0') {
  53. layer.msg("请先选中规格");
  54. return false;
  55. }
  56. }
  57. return true;
  58. };
  59. // 增减数量
  60. $(document).on("click", ".quantity > div", function () {
  61. var input = $(this).siblings("input");
  62. var value = parseInt(input.val());
  63. var max = input.attr("max");
  64. var min = input.attr("min");
  65. var stocks = 0;
  66. value = $(this).text() == '-' ? value - 1 : value + 1;
  67. if (!checkSpecSelected()) {
  68. return false;
  69. }
  70. if ($("input[name='spec_type']").val() == '1') {
  71. stocks = GOODS['pricelist'][$("input[name='sku']").val()]['stocks'];
  72. } else {
  73. stocks = parseInt(input.data("stocks"));
  74. }
  75. if (value >= stocks) {
  76. input.val(stocks);
  77. layer.msg("最多可以购买" + stocks + "件");
  78. return;
  79. }
  80. value = min != '' ? Math.max(min, value) : value;
  81. value = max != '' ? Math.min(max, value) : value;
  82. input.val(value);
  83. return false;
  84. });
  85. // 加入购物车
  86. $(document).on("click", ".btn-cart", function () {
  87. if (!checkSpecSelected()) {
  88. return false;
  89. }
  90. SHOP.api.ajax({
  91. url: "/addons/shop/cart/add",
  92. data: {goods_id: $(this).data("id"), goods_sku_id: $("input[name='skuId']").val(), nums: $("input[name='quantity']").val(), sceneval: 1}
  93. }, function (data, ret) {
  94. $("#cartnums").text(data.cartnums);
  95. layer.msg(ret.msg);
  96. return false;
  97. }, function (data, ret) {
  98. if (ret.msg.indexOf("请登录") > -1) {
  99. layer.alert("请登录后再进行操作", {
  100. title: "温馨提示", icon: 0, btn: ["去登录"]
  101. }, function () {
  102. location.href = ret.url;
  103. });
  104. return false;
  105. }
  106. });
  107. });
  108. // 立即购买
  109. $(document).on("click", ".btn-buynow", function () {
  110. if (!checkSpecSelected()) {
  111. return false;
  112. }
  113. SHOP.api.ajax({
  114. url: "/addons/shop/cart/add",
  115. data: {goods_id: $(this).data("id"), goods_sku_id: $("input[name='skuId']").val(), nums: $("input[name='quantity']").val(), sceneval: 2}
  116. }, function (data) {
  117. $("input[name='ids']").val(data.cart_id);
  118. $("input[name='ids']").closest("form").submit();
  119. return false;
  120. }, function (data, ret) {
  121. if (ret.msg.indexOf("请登录") > -1) {
  122. layer.alert("请登录后再进行操作", {
  123. title: "温馨提示", icon: 0, btn: ["去登录"]
  124. }, function () {
  125. location.href = ret.url;
  126. });
  127. return false;
  128. }
  129. });
  130. return false;
  131. });
  132. $(document).on("click", ".goods-spec ul > li", function () {
  133. if ($(this).hasClass("disabled")) {
  134. return false;
  135. }
  136. var item = $(this).closest(".goods-spec");
  137. if ($(this).hasClass("selected")) {
  138. $(this).removeClass("selected");
  139. item.removeAttr("data-value");
  140. } else {
  141. $(this).addClass("selected").siblings("li").removeClass("selected");
  142. item.attr("data-value", $(this).attr("data-id"))
  143. }
  144. getattrprice(); //输出价格
  145. });
  146. //获取对应属性的价格
  147. function getattrprice() {
  148. var defaultstats = true;
  149. var sku = '';
  150. var doms = {
  151. marketprice: ".goods-marketprice",
  152. price: ".goods-price",
  153. stocks: ".goods-stocks",
  154. };
  155. $(".goods-spec li.disabled").removeClass("disabled");
  156. let selected = $(".goods-spec li.selected").map(function () {
  157. return $(this).data("id");
  158. }).get();
  159. $.each(GOODS.pricelist, function (i, j) {
  160. var keys = i.split(/\,/);
  161. var c = keys.filter(function (v) {
  162. return selected.indexOf(parseInt(v)) > -1
  163. });
  164. if (c.length == keys.length - 1 && parseInt(j.stocks) == 0) {
  165. $(".goods-spec li:not(.selected)").filter(function () {
  166. return keys.indexOf($(this).data("id") + "") > -1;
  167. }).addClass("disabled");
  168. }
  169. });
  170. var skuArr = [];
  171. $(".goods-spec").each(function () {
  172. var i = $(this);
  173. var v = i.attr("data-value");
  174. if (!v) {
  175. defaultstats = false;
  176. } else {
  177. skuArr.push(v);
  178. }
  179. });
  180. skuArr.sort(function (a, b) {
  181. return a - b
  182. });
  183. sku = skuArr.join(',');
  184. var _marketprice, _price, _stocks, _skuid, _image;
  185. if (!!defaultstats && typeof GOODS['pricelist'][sku] !== 'undefined') {
  186. _marketprice = GOODS['pricelist'][sku]['marketprice'];
  187. _price = GOODS['pricelist'][sku]['price'];
  188. _stocks = GOODS['pricelist'][sku]['stocks'];
  189. _skuid = GOODS['pricelist'][sku]['id'];
  190. _image = GOODS['pricelist'][sku]['image'];
  191. } else {
  192. _marketprice = GOODS['marketprice'];
  193. _price = GOODS['price'];
  194. _stocks = GOODS['stocks'];
  195. _image = '';
  196. }
  197. $(doms.marketprice).text(parseFloat(_marketprice).toFixed(2));
  198. $(doms.price).text(parseFloat(_price).toFixed(2));
  199. if (_image) {
  200. $(".product-gallery .gallery-thumbs .swiper-slide").removeClass("swiper-slide-active swiper-slide-thumb-active");
  201. $(".product-gallery .gallery-top .swiper-slide:last").clone()
  202. .addClass("swiper-slide-spec").css("backgroundImage", "url('" + _image + "')")
  203. .prependTo($(".product-gallery .gallery-top .swiper-wrapper"));
  204. galleryTop.slideTo(0, 0);
  205. } else {
  206. $(".product-gallery .gallery-top .swiper-slide-spec").remove();
  207. }
  208. $(document).on("mouseenter", ".product-gallery .gallery-thumbs .swiper-slide", function () {
  209. $(".product-gallery .gallery-top .swiper-slide-spec").remove();
  210. });
  211. $(".btn-cart").data("sku-id", _skuid).data("sku", sku);
  212. $("input[name='skuId']").val(_skuid);
  213. $("input[name='sku']").val(sku);
  214. }
  215. getattrprice();
  216. });