pro-list.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
  6. <meta name="apple-mobile-web-app-capable" content="yes">
  7. <meta name="apple-mobile-web-app-status-bar-style" content="black">
  8. <title>产品列表</title>
  9. <link rel="stylesheet" type="text/css" href="css/mui.min.css" />
  10. <link rel="stylesheet" type="text/css" href="css/iconfont.css" />
  11. <link rel="stylesheet" type="text/css" href="css/main.css" />
  12. <style>
  13. .my-picker {max-height: 100%;background-color: rgba(0, 0, 0, .5);}
  14. .my-btn-buy-know {width: 50%;border-radius: 0;bottom: 0;height: 50px;border: 1px solid #727171;position: fixed;right: 0;}
  15. .my-btn-buy-cancel {width: 50%;border-radius: 0;bottom: 0;height: 50px;border: 0;border-top: 1px solid #ccc;position: fixed;left: 0;}
  16. </style>
  17. </head>
  18. <body>
  19. <header class="mui-bar mui-bar-nav">
  20. <div id="pro-menu" class="mui-segmented-control">
  21. <!--<a class="mui-control-item mui-active" href="#item1">净水机</a>
  22. <a class="mui-control-item" href="#item2">冲奶机</a>
  23. <a class="mui-control-item" href="#item3">电动牙刷</a>-->
  24. </div>
  25. </header>
  26. <footer class="mui-bar mui-bar-tab" id="footer-bar-tab">
  27. <a class="mui-tab-item">
  28. <span class="iconfont icon-shouye"></span>
  29. <span class="mui-tab-label">首页</span>
  30. </a>
  31. <a class="mui-tab-item">
  32. <span class="iconfont icon-gouwuche"></span>
  33. <span class="mui-tab-label">购物车</span>
  34. </a>
  35. <a class="mui-tab-item">
  36. <span class="iconfont icon-dingdan"></span>
  37. <span class="mui-tab-label">订单</span>
  38. </a>
  39. <a class="mui-tab-item">
  40. <span class="iconfont icon-wode"></span>
  41. <span class="mui-tab-label">我的</span>
  42. </a>
  43. </footer>
  44. <div class="mui-content">
  45. <!--<div class="index-title">
  46. <strong>选购</strong>
  47. </div>-->
  48. <div id="item1" class="mui-control-content mui-active">
  49. <ul class="pro-table-pull">
  50. <!--产品列表区域-->
  51. </ul>
  52. <!--<div class="index-title">
  53. <strong>配件选购</strong>
  54. </div>-->
  55. <!--<ul class="mui-table-view mui-grid-view my-view-no" style="padding-bottom: 0;">
  56. <li class="mui-table-view-cell mui-media mui-col-xs-5">
  57. <a href="#"><img class="mui-media-object" src="images/chanpin-2.jpg"></a>
  58. </li>
  59. <li class="mui-table-view-cell mui-media mui-col-xs-7">
  60. <a>
  61. <div class="pro-tit">Aiberle智能净水机滤芯配件 t1、t2、t3、t4</div>
  62. <h6 class="mui-text-left">4级ro净化、只喝净水</h6>
  63. <p class="pro-price">¥79.00~320.00</p>
  64. <div class="mui-text-right">
  65. <span class="add-cart"><span class="iconfont icon-gouwuche"></span></span>
  66. <button type="button" class="btn-buy-now">立即购买</button>
  67. </div>
  68. </a>
  69. </li>
  70. <li class="mui-table-view-cell mui-media mui-col-xs-5">
  71. <a href="#"><img class="mui-media-object" src="images/chanpin-3.jpg"></a>
  72. </li>
  73. <li class="mui-table-view-cell mui-media mui-col-xs-7">
  74. <a>
  75. <div class="pro-tit">Aiberle智能净水机水箱配件</div>
  76. <h6 class="mui-text-left">优质安全材质,放心使用</h6>
  77. <p class="pro-price">¥99.00</p>
  78. <div class="mui-text-right">
  79. <span class="add-cart"><span class="iconfont icon-gouwuche"></span></span>
  80. <button type="button" class="btn-buy-now">立即购买</button>
  81. </div>
  82. </a>
  83. </li>
  84. </ul>-->
  85. </div>
  86. <div id="product-type">
  87. </div>
  88. <!--<div id="item2" class="mui-control-content">
  89. <ul class="pro-table-pull">
  90. </ul>
  91. </div>
  92. <div id="item3" class="mui-control-content">
  93. <ul class="pro-table-pull">
  94. </ul>
  95. </div>
  96. <div id="item4" class="mui-control-content">
  97. <ul class="pro-table-pull">
  98. </ul>
  99. </div>
  100. <div id="item5" class="mui-control-content">
  101. <ul class="pro-table-pull">
  102. </ul>
  103. </div>
  104. <div id="item6" class="mui-control-content">
  105. <ul class="pro-table-pull">
  106. </ul>
  107. </div>
  108. <div id="item7" class="mui-control-content">
  109. <ul class="pro-table-pull">
  110. </ul>
  111. </div>
  112. <div id="item10" class="mui-control-content">
  113. <ul class="pro-table-pull">
  114. </ul>
  115. </div>
  116. <div id="item11" class="mui-control-content">
  117. <ul class="pro-table-pull">
  118. </ul>
  119. </div>-->
  120. </div>
  121. <!-- 加载ing -->
  122. <div class="loading covers">
  123. <div class="loading-bj"></div>
  124. <p>加载中...</p>
  125. </div>
  126. <!-- 加载ing END -->
  127. <script src="js/mui.min.js"></script>
  128. <script src="js/jquery-2.1.1.min.js"></script>
  129. <script src="js/main.js"></script>
  130. <script src="js/wechat-utils-1.0.js"></script>
  131. <script>
  132. var search_data = null,
  133. typeId = '';
  134. if(!window.sessionStorage) {
  135. mui.alert("您的浏览器不支持sessionStorage");
  136. } else {
  137. //读取上一个页面带过来的sessionStorage
  138. search_data = JSON.parse(sessionStorage.getItem('search_data'));
  139. if(search_data != null) {
  140. typeId = search_data.text[0].typeId; //如果不为空就赋值給typeId(产品类型id)
  141. //$('#item'+typeId+']').addClass("mui-active").siblings().removeClass("mui-active");
  142. } else {
  143. typeId = getParam("productId");
  144. }
  145. }
  146. var mao = getParam("childTypeId"),
  147. maodian = '';
  148. mui.ready(function() {
  149. //页面首次加载区分
  150. if(typeId != '') {
  151. getProlist(typeId, null);
  152. } else {
  153. getProlist(null, null);
  154. }
  155. $(".loading").hide().css("opacity", "0"); //页面加载完成,隐藏loading
  156. });
  157. //查询产品列表(items代表显示类型)(load值为null代表没有从其他页面带参数,并且是首次加载,其他值代表选中的区域)
  158. function getProlist(items, load) {
  159. console.log(items, load);
  160. var parameter = {};
  161. if(items != null) {
  162. parameter["typeId"] = items;
  163. parameter["pageSize"] = 100;
  164. parameter["pageNO"] = 1;
  165. }
  166. $.ajax(base_path + '/wechat/product/productIndex?dates=' + new Date().getTime(), {
  167. data: parameter,
  168. dataType: 'json',
  169. xhrFields: {
  170. withCredentials: true
  171. },
  172. crossDomain: true,
  173. type: 'post',
  174. timeout: 15000,
  175. success: function(dt) {
  176. if(dt.isRedirect) {
  177. location.href = dt.redirectURL;
  178. } else {
  179. console.log(dt)
  180. if(dt.status) {
  181. var productTypeList = dt.data.productTypeList;
  182. var typeHtml = '';
  183. for(var k = 0; k < productTypeList.length; k++) {
  184. var typeId = productTypeList[k].typeId;
  185. typeHtml += '<div id="item' + typeId + '" class="mui-control-content">';
  186. typeHtml += '<ul class="pro-table-pull">';
  187. typeHtml += '</ul>';
  188. typeHtml += '</div>';
  189. }
  190. $("#product-type").html(typeHtml);
  191. var menu_data = dt.data.productTypeList;
  192. if(load == null) {
  193. var table = document.body.querySelector("#pro-menu");
  194. mui(menu_data).each(function(index) {
  195. var li = document.createElement('a');
  196. if(items != null) {
  197. if(items == this.typeId) {
  198. li.className = 'mui-control-item mui-active';
  199. } else {
  200. li.className = 'mui-control-item';
  201. }
  202. } else {
  203. if(index == 0) {
  204. li.className = 'mui-control-item mui-active';
  205. } else {
  206. li.className = 'mui-control-item';
  207. }
  208. }
  209. li.setAttribute("name", this.typeId);
  210. li.setAttribute("href", "#item" + (index + 1));
  211. li.innerHTML = this.typeName;
  212. table.appendChild(li);
  213. });
  214. }
  215. var pro_list = dt.data.productList;
  216. if(items == null) {
  217. items = 1
  218. }
  219. $(".mui-control-content").removeClass("mui-active");
  220. var table1 = document.body.querySelector('#item' + items + ' .pro-table-pull');
  221. $("#item" + items).addClass("mui-active");
  222. if(load != null) {
  223. document.body.querySelector(load + " .pro-table-pull");
  224. table1.innerHTML = '';
  225. }
  226. var n = '';
  227. mui(pro_list).each(function(index) {
  228. // var div = document.createElement('div');
  229. // div.className = 'index-title';
  230. // div.innerHTML = '<strong>' + this.productChildTypeName + '</strong>';
  231. // if(index == 0) {
  232. // table1.appendChild(div);
  233. // }
  234. // if(n != '' && this.productChildTypeName != n) {
  235. // table1.appendChild(div);
  236. // }
  237. n = this.productChildTypeName;
  238. var li = document.createElement('li');
  239. li.setAttribute("name", this.productId);
  240. li.setAttribute("class", "product-id");
  241. var zen = '';
  242. console.log(this.productColorList)
  243. if(this.productColorList.length > 0) {
  244. $.each(this.productColorList[0].salesUserGiftList, function() {
  245. zen += this.giftName + "、"
  246. });
  247. }
  248. if(zen != '') {
  249. zen = '<div class="index-title"><p><span class="iconfont icon-liwu"></span>' + zen.substring(0, zen.length - 1) + '</p></div>';
  250. }
  251. if(mao != null && mao == this.productChildType) {
  252. li.setAttribute("id", "mao-" + this.productId);
  253. maodian = this.productId;
  254. mao = null;
  255. }
  256. var c = 'FFF',
  257. cList = '';
  258. mui(this.productColorList).each(function(index) {
  259. if(typeof(this.colorCode) != "undefined") {
  260. c = this.colorCode;
  261. }
  262. cList += '<i style="width:12px;height:12px;box-shadow: 0 0 1px rgba(0,0,0,.85);background:#' + c + ';display: inline-block;border-radius: 10px;margin: 0 3px 0 10px;"></i>';
  263. });
  264. if(this.productColorList != null && this.productColorList.length > 0){
  265. li.innerHTML = '<ul class="mui-table-view mui-grid-view my-view-no" style="padding-bottom: 0;"><li class="mui-table-view-cell mui-media mui-col-xs-5 mui-text-left"><a><img style="background-color: #eff6f6;" class="mui-media-object to-product" src="' + this.productParameterImg + '"></a></li><li class="mui-table-view-cell mui-media mui-col-xs-7"><a><div class="pro-tit to-product" >' + this.productName + '</div><h6 class="mui-text-left" style="white-space: pre-wrap;">' + this.productColorDes + '</h6><p class="pro-price"><span style="float:left;">¥' + accDiv(this.productColorList[0].colorDiscount,100) + '</span>'+cList+'</p><div class="mui-text-right"><span class="add-cart" name="' + this.productId + '" cartIsSource="1"><span class="iconfont icon-gouwuche"></span></span><button type="button" class="btn-buy-now" name="' + this.productId + '" cartIsSource="1">立即购买</button></div></a></li></ul>' + zen;
  266. table1.appendChild(li);
  267. }
  268. });
  269. if(maodian != '') {
  270. var t = $('#mao-' + maodian).offset().top;
  271. if(t > 300) {
  272. $(window).scrollTop(t, 500);
  273. }
  274. maodian = '';
  275. }
  276. } else {
  277. mui.alert("获取商品菜单失败!");
  278. }
  279. }
  280. },
  281. error: function(xhr, type, errorThrown) {
  282. console.log(xhr);
  283. mui.alert("获取商品菜单失败!网络错误");
  284. }
  285. });
  286. }
  287. //头部菜单点击事件
  288. $(document).on('tap', '#pro-menu .mui-control-item', function() {
  289. var th = $(this);
  290. if(!window.sessionStorage) {
  291. mui.alert("您的浏览器不支持sessionStorage");
  292. } else {
  293. //如果点击头部的菜单,则删除其他页面带过来的sessionStorage
  294. sessionStorage.removeItem('search_data');
  295. }
  296. //根据类型获取产品列表
  297. getProlist(th.attr("name"), th.attr("href"));
  298. var oldUrl = location.href; //原浏览器地址
  299. var newUrl = jsUrlHelper.delUrlParam(oldUrl, "childTypeId"); //删除url中的子类型参数
  300. newUrl = jsUrlHelper.putUrlParam(newUrl, 'productId', th.attr("name")); //修改url中的productId参数
  301. history.pushState(oldUrl, '产品类型', newUrl); //无刷新删除修改url地址参数
  302. console.log("url历史操作" + history.length + "次"); //获取历史操作过url地址几次
  303. mao = null;
  304. });
  305. //监听浏览器前进后退
  306. window.addEventListener("popstate", function() {
  307. var currentState = history.state;
  308. //根据类型获取产品列表
  309. mao = getParam("childTypeId"), ref = '';
  310. $.each($("#pro-menu .mui-control-item"), function() {
  311. if($(this).attr("name") == getParam("productId")) {
  312. ref = $(this).attr("href");
  313. $(this).addClass("mui-active");
  314. } else {
  315. $(this).removeClass("mui-active");
  316. }
  317. })
  318. getProlist(getParam("productId"), ref);
  319. });
  320. var count = 0; //统计所有产品加减,数量默认0,当count<1的时候设置(结算)按钮失效
  321. //购物车数量加
  322. $(document).on('tap', '.mui-btn-numbox-plus', function() {
  323. ++count; //产品总数量
  324. var th = $(this);
  325. var val = mui(th.parent()[0]).numbox().getValue(); //获取当前产品数量
  326. var parameter = {}; //ajax参数json集合
  327. if(typeof(th.attr("productid")) != "undefined") {
  328. parameter["productId"] = th.attr("productid"); //产品id
  329. if(typeof(th.attr("colorid")) != "undefined") {
  330. parameter["productColorId"] = th.attr("colorid"); //颜色id
  331. parameter["cartNum"] = 1; //需要减的产品数量,每次都是1
  332. $.ajax(base_path + '/wechat/cart/addProductToCart?dates=' + new Date().getTime(), {
  333. data: parameter,
  334. dataType: 'json',
  335. xhrFields: {
  336. withCredentials: true
  337. },
  338. crossDomain: true,
  339. type: 'post',
  340. timeout: 15000,
  341. success: function(dt) {
  342. if(dt.isRedirect) {
  343. location.href = dt.redirectURL;
  344. } else {
  345. if(dt.status) {
  346. th.parent().attr("cartid", dt.data);
  347. console.log("增加数量成功!");
  348. } else {
  349. mui.alert("增加数量失败!");
  350. }
  351. }
  352. },
  353. error: function(xhr, type, errorThrown) {
  354. console.log(xhr);
  355. mui.alert("增加数量失败!网络错误");
  356. }
  357. });
  358. } else {
  359. mui.alert("没有获取到产品颜色id");
  360. }
  361. } else {
  362. mui.alert("没有获取到产品id");
  363. }
  364. });
  365. //购物车数量减
  366. $(document).on('tap', '.mui-btn-numbox-minus', function() {
  367. --count; //产品总数量
  368. var th = $(this);
  369. var val = mui(th.parent()[0]).numbox().getValue(); //获取当前产品数量
  370. if(val == 0) {
  371. th.parent().removeAttr("cartid");
  372. }
  373. var parameter = {}; //ajax参数json集合
  374. if(typeof(th.attr("colorid")) != "undefined") {
  375. parameter["productColorId"] = th.attr("colorid"); //产品颜色id
  376. parameter["cartNum"] = 1; //需要减的产品数量,每次都是1
  377. $.ajax(base_path + '/wechat/cart/deleteCart?dates=' + new Date().getTime(), {
  378. data: parameter,
  379. dataType: 'json',
  380. xhrFields: {
  381. withCredentials: true
  382. },
  383. crossDomain: true,
  384. type: 'get', //减少数量后台限制用get
  385. timeout: 15000,
  386. success: function(dt) {
  387. if(dt.isRedirect) {
  388. location.href = dt.redirectURL;
  389. } else {
  390. if(dt.status) {
  391. console.log("减少数量数量成功!");
  392. } else {
  393. mui.alert("减少数量数量失败!");
  394. }
  395. }
  396. },
  397. error: function(xhr, type, errorThrown) {
  398. console.log(xhr);
  399. mui.alert("减少数量失败!网络错误");
  400. }
  401. });
  402. } else {
  403. mui.alert("没有获取到产品颜色id");
  404. }
  405. });
  406. //立即购买-购物车按钮 获取颜色列表
  407. $(document).on('tap', '.add-cart,.btn-buy-now', function() {
  408. count = 0;
  409. var th = $(this);
  410. //mask.show(); //显示遮罩层
  411. //在body尾部增加-产品颜色列表父级ul
  412. $("body").append('<div id="scroll" class="mui-scroll-wrapper my-picker"><div class="mui-scroll" style="top: 0;background-color: #fff;min-height: 100%;"><br/><ul class="mui-table-view mui-table-view-striped mui-table-view-condensed my-grid-view-no" style="margin-bottom: 50px;"></ul><button class="mui-btn my-btn-buy-cancel">取消</button><button class="mui-btn my-btn-buy-know" disabled="disabled">确定</button></div></div>');
  413. $.ajax(base_path + '/wechat/product/selectProductColor?dates=' + new Date().getTime(), {
  414. data: {
  415. "productId": th.attr("name") //productId产品id
  416. },
  417. dataType: 'json',
  418. xhrFields: {
  419. withCredentials: true
  420. },
  421. crossDomain: true,
  422. type: 'post',
  423. timeout: 15000,
  424. success: function(dt) {
  425. if(dt.isRedirect) {
  426. location.href = dt.redirectURL;
  427. } else {
  428. if(dt.status) {
  429. console.log(dt)
  430. var data = dt.data.productColorList;
  431. var table = document.body.querySelector('.my-picker .mui-table-view'); //产品颜色列表父级ul
  432. table.innerHTML = '';
  433. //循环遍历产品颜色数组
  434. mui(data).each(function(index) {
  435. var li = document.createElement('li'); //创建li标签
  436. li.className = 'my-table-view-cell'; //給li标签设置className
  437. if(typeof(this.cartNum) != "undefined") {
  438. count += parseInt(this.cartNum);
  439. } else {
  440. this.cartNum = 0;
  441. }
  442. li.innerHTML = '<div class="mui-table" ><div class="mui-table-cell mui-col-xs-3"><img style="background-color: #eff6f6;" class="my-media-object" src="' + this.colorProductPic + '" /></div><div class="mui-table-cell table-middle mui-col-xs-5">' + this.colorName + '<h6>' + this.colorDesc + '</h6><div style="color: #ff3b3b;">¥' + accDiv(this.colorDiscount, 100) + '</div></div><div class="mui-table-cell table-middle mui-col-xs-4"><div class="mui-numbox" data-numbox-min="0" data-numbox-max="99" cartid="' + this.cartId + '"><button class="mui-btn mui-btn-numbox-minus" type="button" productid="' + this.colorProductId + '" colorid="' + this.colorId + '">-</button><input class="mui-input-numbox" type="number" value="' + this.cartNum + '" readonly="readonly"/><button class="mui-btn mui-btn-numbox-plus" type="button" productid="' + this.colorProductId + '" colorid="' + this.colorId + '">+</button></div></div></div>';
  443. table.appendChild(li); //将li标签加入到-产品颜色列表父级ul
  444. });
  445. $(".my-picker").addClass("active"); //显示产品颜色加减数量列表
  446. // if(count > 0) {
  447. $(".my-btn-buy-know").removeAttr("disabled"); //激活结算按钮
  448. // }
  449. if(th.hasClass("add-cart")) {
  450. $(".my-btn-buy-know").attr("cart", "cart");
  451. }
  452. mui(".mui-numbox").numbox(); //激活加减按钮组合
  453. mui('#scroll').scroll();
  454. } else {
  455. mui.alert("获取数据失败!");
  456. }
  457. }
  458. },
  459. error: function(xhr, type, errorThrown) {
  460. console.log(xhr);
  461. mui.alert("获取数据失败!网络错误");
  462. }
  463. });
  464. mui('#scroll').scroll({
  465. indicators: true, //是否显示滚动条
  466. bounce: false //是否启用回弹
  467. });
  468. });
  469. $(document).on('tap', '.my-btn-buy-cancel', function() {
  470. //$(".mui-backdrop").css("opacity", 0).remove(); //移除遮罩层
  471. $(".my-picker").removeClass("active");
  472. setTimeout(function() {
  473. $(".my-picker").remove(); //移除选择颜色列表
  474. }, 500);
  475. });
  476. //确定事件
  477. $(document).on('tap', '.my-btn-buy-know', function() {
  478. //判断是点立即购买还是加入购物车的
  479. var cartidList = ''; //购物项id集合
  480. if($(this).attr("cart") == "cart") {
  481. if(count > 0) {
  482. //$(".mui-backdrop").css("opacity", 0).remove(); //移除遮罩层
  483. $(".my-picker").removeClass("active");
  484. setTimeout(function() {
  485. $(".my-picker").remove(); //移除选择颜色列表
  486. }, 500);
  487. mui.toast("加入购物车成功!");
  488. }else{
  489. mui.toast("请选择数量")
  490. }
  491. } else {
  492. $.each($(".my-picker .mui-numbox"), function(index) {
  493. var th = $(this);
  494. if(th.attr("cartid") != "undefined") {
  495. if(cartidList == '') {
  496. cartidList += th.attr("cartid");
  497. } else {
  498. cartidList += '-' + th.attr("cartid");
  499. }
  500. }
  501. });
  502. if(cartidList != "undefined" && count > 0) {
  503. $(".my-btn-buy-know").removeAttr("disabled"); //激活结算按钮
  504. if(!window.sessionStorage) {
  505. mui.alert("您的浏览器不支持sessionStorage");
  506. } else {
  507. //自定义json数据
  508. var obj = {
  509. text: [cartidList]
  510. };
  511. //json格式化插入 购物项id集合
  512. sessionStorage.setItem('pay_data', JSON.stringify(obj));
  513. location.href = 'clearing.html'; //跳转结算页面
  514. }
  515. } else {
  516. mui.toast("请选择数量")
  517. }
  518. }
  519. });
  520. //产品详情
  521. $(document).on('tap', '.to-product', function() {
  522. var productId = $(this).parents(".product-id").attr("name");
  523. location.href = 'pro-details.html?productId=' + productId;
  524. });
  525. </script>
  526. </body>
  527. </html>