index.js 43 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273
  1. // index.js
  2. var likeList = [
  3. { url: '/pages/buy/buy?com_id=3292', imgSrc: 'https://www.daliangzao.net/images/c62671d2f0454054a9d9fbbc87965fcf.jpg', name: '【Herbacin/贺本清】小甘菊护手霜礼盒 ', oldPrice: '98', newPrice: '68' },
  4. { url: '/pages/buy/buy?com_id=3296', imgSrc: 'https://www.daliangzao.net/images/11d3bda623b241adb6aff125bd2a2477.jpg', name: '【FOREO】LUNA2 电动硅胶洁面仪', oldPrice: '1880', newPrice: '1373' },
  5. { url: '/pages/buy/buy?com_id=3539', imgSrc: 'https://www.daliangzao.net/images/359f87b24aaa4df899b1b7dfaa448911.jpg', name: '【Dyson戴森】Supersonic HD01吹风机(中国红甄选礼盒)', oldPrice: '3190', newPrice: '3190' },
  6. { url: '/pages/buy/buy?com_id=3294', imgSrc: 'https://www.daliangzao.net/images/323cce98818944248fb791115004b18e.jpg', name: '【大良造】粉色少女心生活礼盒(毛毯+眼罩+拖鞋)', oldPrice: '388', newPrice: '388' },
  7. { url: '/pages/buy/buy?com_id=3270', imgSrc: 'https://www.daliangzao.net/images/b942f40c711f4336ae8f6efecebd11b6.jpg', name: '【大良造】精致生活礼盒(香槟+巧克力)', oldPrice: '195', newPrice: '193' },
  8. { url: '/pages/buy/buy?com_id=3275', imgSrc: 'https://www.daliangzao.net/images/4152d74f27634b77bdae594c07c05f1c.jpg', name: '【大良造】创意办公礼盒(竹节笔+笔记本)', oldPrice: '311', newPrice: '311' }
  9. ];
  10. Page({
  11. data: {
  12. contentShow : '',//初始整体内容隐藏,加载完成后显示
  13. likeList: likeList,
  14. carts: [],
  15. buyCarts: [],
  16. hasList: false, // 列表是否有数据
  17. totalPrice: 0, // 总价,初始为0
  18. selected: '',
  19. selectAllStatus: true, // 全选状态,默认全选
  20. delBtnWidth: 160, //删除按钮宽度单位(rpx)
  21. txtStyle: "",
  22. touchDel: 0,
  23. scrollY: true, //页面是否可滚动
  24. isMinus: true,
  25. isAdd : true,
  26. hidden: 'hidden',
  27. hiddenmodal: true, //弹窗
  28. maskBg: false,//支付提示蒙层
  29. paddingBottom: 0,
  30. un_id : '',
  31. shixiao_num : 0,//失效商品数量
  32. firstClick:0, //没有连点购买按钮
  33. combineList : [],//存放相同规格,不同礼盒和工艺的商品,合并后的数组【仅需 商品id,组合规格id,总数量】
  34. },
  35. loadFun: function () {
  36. //wx.showNavigationBarLoading();
  37. var that = this;
  38. var host = getApp().globalData.servsers;
  39. var un_id = getApp().globalData.un_id;
  40. wx.showLoading({
  41. title: '',
  42. icon: 'loading',
  43. mask: true,
  44. success: function () {
  45. }
  46. })
  47. that.setData({
  48. contentShow: '',//初始整体内容隐藏,加载完成后显示
  49. carts: [],
  50. buyCarts: [],
  51. hasList: false, // 列表是否有数据
  52. totalPrice: 0, // 总价,初始为0
  53. selected: '',
  54. selectAllStatus: true, // 全选状态,默认全选
  55. delBtnWidth: 160, //删除按钮宽度单位(rpx)
  56. txtStyle: "",
  57. touchDel: 0,
  58. scrollY: true, //页面是否可滚动
  59. isMinus: true,
  60. isAdd: true,
  61. hidden: 'hidden',
  62. hiddenmodal: true, //弹窗
  63. maskBg: false,//支付提示蒙层
  64. paddingBottom: 0,
  65. un_id: '',
  66. shixiao_num: 0,//失效商品数量
  67. firstClick: 0, //没有连点购买按钮
  68. })
  69. var shixiao_num = 0;
  70. that.setData({
  71. un_id: un_id,
  72. firstClick:0
  73. })
  74. if (un_id != undefined && un_id != '' && un_id != null){
  75. let data = {
  76. user_id: un_id,
  77. channel_account_id: wx.getStorageSync('channelIdObj').channelAccountId ? wx.getStorageSync('channelIdObj').channelAccountId :""
  78. }
  79. wx.request({
  80. url: host + "shoppingcartapi/shoppingcartview",
  81. data: data,
  82. method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
  83. header: {
  84. 'Accept': 'application/json'
  85. },
  86. success: function (res) {
  87. console.log(res);
  88. if (res.data.total > 0) {
  89. that.setData({
  90. carts: res.data.rows,
  91. hasList: true,
  92. paddingBottom: 100
  93. });
  94. var carts = res.data.rows;
  95. console.log(res.data.rows);
  96. var cartsLength = res.data.rows.length;
  97. //检测库存
  98. that.checkCommodityGroupRepertory(cartsLength, 0, 0, 0);
  99. }else{
  100. that.setData({
  101. contentShow: 'contentShow'
  102. })
  103. wx.hideLoading();
  104. }
  105. if (res == null || res.data == null) {
  106. console.error('网络请求失败');
  107. return;
  108. }
  109. }
  110. });
  111. }
  112. },
  113. //检测商品售罄
  114. checkCommodityGroupRepertory: function (cartsLength, total, flagNum, shixiao_num){
  115. var that = this;
  116. var host = getApp().globalData.servsers;
  117. var un_id = getApp().globalData.un_id;
  118. //shixiao_num : 失效商品数量【失效+售罄】
  119. var carts = that.data.carts;
  120. if (cartsLength == 0){
  121. console.log("cartsLength:" + cartsLength);
  122. console.log("shixiao_num:" + shixiao_num);
  123. console.log("flagNum:" + flagNum);
  124. var len = carts.length;
  125. if (flagNum == (len - shixiao_num) && flagNum > 0) {
  126. that.setData({
  127. selectAllStatus: true,
  128. totalPrice: total.toFixed(2)
  129. });
  130. } else {
  131. that.setData({
  132. selectAllStatus: false,
  133. totalPrice: total.toFixed(2)
  134. });
  135. }
  136. that.setData({
  137. carts: carts
  138. })
  139. that.getTotalPrice();
  140. that.setData({
  141. contentShow: 'contentShow'
  142. })
  143. console.log(carts);
  144. wx.hideLoading();
  145. }else{
  146. cartsLength -= 1;
  147. wx.request({
  148. url: host + "commodityapi/commoditview",
  149. data: {
  150. com_id: carts[cartsLength].com_id,
  151. channel_id: wx.getStorageSync('channelIdObj').channelId ? wx.getStorageSync('channelIdObj').channelId : ""
  152. },
  153. method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
  154. header: {
  155. 'Accept': 'application/json'
  156. },
  157. success: function (res) {
  158. console.log("load:");
  159. console.log(res);
  160. //有此商品
  161. if (res.data.total > 0) {
  162. carts[cartsLength].limitNum= parseInt(res.data.commodity.commodity_num);//同步起订量
  163. that.setData({
  164. carts: carts
  165. })
  166. if (res.data.commodity.commodity_flag != 0) {//此商品为下架商品
  167. carts[cartsLength].num = parseInt(carts[cartsLength].num);
  168. carts[cartsLength].limitNum = parseInt(carts[cartsLength].limitNum);
  169. carts[cartsLength].flag = 0;//取消勾选
  170. carts[cartsLength].canBuy = true;//默认有库存
  171. shixiao_num += 1;
  172. that.setData({
  173. shixiao_num: shixiao_num,
  174. carts: carts
  175. })
  176. that.checkCommodityGroupRepertory(cartsLength, total, flagNum, shixiao_num);
  177. }else{
  178. //不是失效商品,检测库存是否充足
  179. wx.request({
  180. url: host + "api/commodityGroup/checkCommodityGroupRepertory",
  181. data: {
  182. datasheetGroupId: carts[cartsLength].com_group_id
  183. },
  184. method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
  185. header: {
  186. 'Accept': 'application/json'
  187. },
  188. success: function (res) {
  189. console.log(res);
  190. if (res.data.code == '200') {
  191. carts[cartsLength].canBuy = res.data.data.canBuy;//有无库存
  192. carts[cartsLength].repertory = res.data.data.repertory;//当前规格的库存数量
  193. //库存充足
  194. if (res.data.data.canBuy == true) {
  195. if (res.data.data.repertory < carts[cartsLength].limitNum || res.data.data.repertory < carts[cartsLength].num || parseInt(carts[cartsLength].num) < parseInt(carts[cartsLength].limitNum)) {
  196. carts[cartsLength].canBuy = false;
  197. carts[cartsLength].flag = 0;//取消勾选
  198. shixiao_num += 1;
  199. } else {
  200. if (carts[cartsLength].box_price == '' || carts[cartsLength].box_price == null || carts[cartsLength].box_price == undefined) {
  201. carts[cartsLength].box_price = 0;
  202. }
  203. carts[cartsLength].new_price = parseFloat(carts[cartsLength].cost) + parseFloat(carts[cartsLength].box_price);
  204. if (carts[cartsLength].flag == 1) {//当前为选中
  205. flagNum += 1;
  206. total += carts[cartsLength].num * carts[cartsLength].new_price;
  207. }
  208. }
  209. } else {
  210. carts[cartsLength].flag = 0;//取消勾选
  211. shixiao_num += 1;
  212. }
  213. carts[cartsLength].num = parseInt(carts[cartsLength].num);
  214. that.setData({
  215. shixiao_num: shixiao_num,
  216. carts: carts
  217. })
  218. that.checkCommodityGroupRepertory(cartsLength, total, flagNum, shixiao_num);
  219. }
  220. }
  221. })
  222. //request结束
  223. }
  224. }else{
  225. carts[cartsLength].num = parseInt(carts[cartsLength].num);
  226. carts[cartsLength].limitNum = parseInt(carts[cartsLength].limitNum);
  227. carts[cartsLength].flag = 0;//取消勾选
  228. carts[cartsLength].canBuy = true;//默认有库存
  229. shixiao_num += 1;
  230. that.setData({
  231. shixiao_num: shixiao_num,
  232. carts: carts
  233. })
  234. that.checkCommodityGroupRepertory(cartsLength, total, flagNum, shixiao_num);
  235. }
  236. }
  237. })
  238. //非失效商品判断结束
  239. }
  240. },
  241. onShow: function (e) {
  242. var that = this;
  243. that.loadFun();
  244. },
  245. //当前商品选中事件
  246. selectList(e) {
  247. var that = this;
  248. var host = getApp().globalData.servsers;
  249. var index = e.currentTarget.dataset.index;
  250. var carts = that.data.carts;
  251. var selected = carts[index].flag;
  252. var com_id = carts[index].com_id;//商品唯一标识id
  253. var cartsLength = that.data.carts.length;
  254. var shixiao_num = that.data.shixiao_num;
  255. var flagNum = 0;
  256. //检测商品是否下架
  257. wx.request({
  258. url: host + "commodityapi/commoditview",
  259. data: {
  260. com_id: com_id
  261. },
  262. method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
  263. header: {
  264. 'Accept': 'application/json'
  265. },
  266. success: function (res) {
  267. //有此商品
  268. if (res.data.total > 0) {
  269. carts[index].limitNum = parseInt(res.data.commodity.commodity_num);//同步起订量
  270. that.setData({
  271. carts: carts
  272. })
  273. console.log(res.data.commodity.commodity_flag);
  274. if (res.data.commodity.commodity_flag != 0) {//此商品为下架商品
  275. carts[index].commodity_flag = 1;
  276. carts[index].flag = 0;
  277. shixiao_num++;
  278. that.setData({
  279. shixiao_num: shixiao_num,
  280. })
  281. } else {
  282. //不是失效商品,检测库存是否充足
  283. wx.request({
  284. url: host + "api/commodityGroup/checkCommodityGroupRepertory",
  285. data: {
  286. datasheetGroupId: carts[index].com_group_id
  287. },
  288. method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
  289. header: {
  290. 'Accept': 'application/json'
  291. },
  292. success: function (res) {
  293. if (res.data.code == '200') {
  294. carts[index].canBuy = res.data.data.canBuy;//有无库存
  295. carts[index].repertory = res.data.data.repertory;//当前规格的库存数量
  296. if (res.data.data.canBuy){
  297. if (res.data.data.repertory < carts[index].limitNum || res.data.data.repertory < carts[index].num || parseInt(carts[index].num) < parseInt(carts[index].limitNum)) {//库存小于 商品数量或最低起订量
  298. carts[index].canBuy = false;
  299. carts[index].flag = 0;//取消勾选
  300. shixiao_num += 1;
  301. that.setData({
  302. shixiao_num: shixiao_num,
  303. hiddenmodal: false,
  304. modalCont: '商品已售罄!'
  305. })
  306. setTimeout(function () {
  307. that.setData({
  308. hiddenmodal: true,
  309. firstClick: 0
  310. })
  311. }, 1500)
  312. }else{
  313. //同类别数量和【商品id相同,规格id相同】
  314. var combineNum = 0;
  315. if (selected == 0) {//勾选操作,分别和勾选商品加和比对
  316. var sumNum = parseInt(carts[index].num);
  317. for (var t = 0; t < carts.length; t++) {
  318. if (carts[t].flag == 1) {//同勾选商品比对
  319. if (carts[t].com_id == carts[index].com_id && carts[t].com_group_id == carts[index].com_group_id) {
  320. sumNum += parseInt(carts[t].num);
  321. }
  322. }
  323. }
  324. console.log("sumNum:" + sumNum);
  325. console.log("repertory:" + res.data.data.repertory);
  326. if (sumNum > res.data.data.repertory) {
  327. that.setData({
  328. hiddenmodal: false,
  329. modalCont: '库存不足!'
  330. })
  331. setTimeout(function () {
  332. that.setData({
  333. hiddenmodal: true
  334. })
  335. }, 1500)
  336. return false;
  337. }else{
  338. carts[index].flag = 1;
  339. for (var i = 0; i < cartsLength; i++) {
  340. if (carts[i].flag == 1) {
  341. flagNum++;
  342. }
  343. }
  344. if (flagNum == (cartsLength - shixiao_num) && flagNum > 0) {
  345. that.setData({
  346. selectAllStatus: true,
  347. })
  348. }
  349. }
  350. } else {
  351. carts[index].flag = 0;
  352. if (that.data.selectAllStatus == true) {
  353. that.setData({
  354. selectAllStatus: false
  355. })
  356. }
  357. }
  358. }
  359. }else{
  360. carts[index].flag = 0;
  361. shixiao_num++;
  362. that.setData({
  363. shixiao_num: shixiao_num,
  364. hiddenmodal: false,
  365. modalCont: '此商品已售罄!'
  366. })
  367. setTimeout(function () {
  368. that.setData({
  369. hiddenmodal: true,
  370. firstClick: 0
  371. })
  372. }, 1500)
  373. return false;
  374. }
  375. that.setData({
  376. carts: carts
  377. })
  378. that.getTotalPrice();
  379. }
  380. }
  381. })
  382. }
  383. } else {//无此商品
  384. carts[index].commodity_flag = 1;
  385. carts[index].flag = 0;
  386. shixiao_num++;
  387. that.setData({
  388. carts: carts,
  389. shixiao_num: shixiao_num,
  390. hiddenmodal: false,
  391. modalCont: '此商品已下架!'
  392. })
  393. that.getTotalPrice();
  394. setTimeout(function () {
  395. that.setData({
  396. hiddenmodal: true,
  397. firstClick: 0
  398. })
  399. }, 1500)
  400. return false;
  401. }
  402. }
  403. })
  404. },
  405. //购物车全选事件
  406. selectAll(e) {
  407. var that = this;
  408. var host = getApp().globalData.servsers;
  409. var selectAllStatus = that.data.selectAllStatus;
  410. selectAllStatus = !selectAllStatus;
  411. let carts = that.data.carts;
  412. var len = carts.length;
  413. wx.showLoading({
  414. title: '',
  415. icon: 'loading',
  416. mask: true,
  417. success: function () {
  418. }
  419. })
  420. that.selectSta(len, selectAllStatus);
  421. },
  422. //全选-分别做请求,判断是否下架,是否有库存
  423. selectSta: function (len, selectAllStatus){
  424. var that = this;
  425. var host = getApp().globalData.servsers;
  426. var carts = that.data.carts;
  427. var shixiao_num = that.data.shixiao_num;
  428. if (len == 0) {
  429. that.setData({
  430. selectAllStatus: selectAllStatus,
  431. });
  432. that.getTotalPrice();
  433. wx.hideLoading();
  434. } else {
  435. len -= 1;
  436. var com_id = carts[len].com_id;
  437. if (selectAllStatus == true) {//全部选中
  438. //检测商品是否下架
  439. wx.request({
  440. url: host + "commodityapi/commoditview",
  441. data: {
  442. com_id: com_id
  443. },
  444. method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
  445. header: {
  446. 'Accept': 'application/json'
  447. },
  448. success: function (res) {
  449. //有此商品
  450. if (res.data.total > 0) {
  451. carts[len].limitNum = parseInt(res.data.commodity.commodity_num);//同步起订量
  452. that.setData({
  453. carts: carts
  454. })
  455. if (res.data.commodity.commodity_flag != 0) {//此商品为下架商品
  456. carts[len].commodity_flag = 1;
  457. carts[len].flag = 0;
  458. shixiao_num++;
  459. that.setData({
  460. carts: carts,
  461. shixiao_num: shixiao_num,
  462. selectAllStatus: selectAllStatus,
  463. })
  464. that.selectSta(len, selectAllStatus);
  465. } else {
  466. //不是失效商品,检测库存是否充足
  467. wx.request({
  468. url: host + "api/commodityGroup/checkCommodityGroupRepertory",
  469. data: {
  470. datasheetGroupId: carts[len].com_group_id
  471. },
  472. method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
  473. header: {
  474. 'Accept': 'application/json'
  475. },
  476. success: function (res) {
  477. console.log(res);
  478. if (res.data.code == '200') {
  479. carts[len].canBuy = res.data.data.canBuy;//有无库存
  480. carts[len].repertory = res.data.data.repertory;//当前规格的库存数量
  481. if (res.data.data.canBuy) {
  482. if (res.data.data.repertory < carts[len].limitNum || res.data.data.repertory < carts[len].num || parseInt(carts[len].num) < parseInt(carts[len].limitNum)) {
  483. carts[len].canBuy = false;
  484. carts[len].flag = 0;//取消勾选
  485. shixiao_num += 1;
  486. }else{
  487. var sumNum = parseInt(carts[len].num);
  488. for (var t = 0; t < len ; t++) {
  489. if (carts[t].com_id == carts[len].com_id && carts[t].com_group_id == carts[len].com_group_id) {
  490. sumNum += parseInt(carts[t].num);
  491. }
  492. }
  493. console.log("全选-sumNum:" + sumNum);
  494. console.log("全选-repertory:" + res.data.data.repertory);
  495. if (sumNum > res.data.data.repertory) {
  496. carts[len].flag = 0;
  497. selectAllStatus = false;
  498. }else{
  499. carts[len].flag = 1;
  500. carts[len].new_price = parseFloat(carts[len].cost) + parseFloat(carts[len].box_price);
  501. }
  502. }
  503. }else{
  504. carts[len].flag = 0;
  505. shixiao_num++;
  506. }
  507. that.setData({
  508. carts: carts,
  509. shixiao_num: shixiao_num,
  510. selectAllStatus: selectAllStatus,
  511. })
  512. that.selectSta(len, selectAllStatus);
  513. }
  514. }
  515. })
  516. }
  517. } else {
  518. carts[len].commodity_flag = 1;
  519. shixiao_num++;
  520. that.setData({
  521. carts: carts,
  522. shixiao_num: shixiao_num,
  523. selectAllStatus: selectAllStatus,
  524. })
  525. that.selectSta(len, selectAllStatus);
  526. }
  527. }
  528. })
  529. }else{
  530. carts[len].flag = 0;
  531. that.setData({
  532. carts: carts
  533. })
  534. that.selectSta(len, selectAllStatus);
  535. }
  536. }
  537. },
  538. //绑定加数量事件
  539. addCount(e) {
  540. var that = this;
  541. var host = getApp().globalData.servsers;
  542. var index = e.currentTarget.dataset.index;
  543. var carts = that.data.carts;
  544. var com_id = carts[index].com_id;
  545. var num = parseInt(carts[index].num);
  546. var com_group_id = carts[index].com_group_id;//组合id
  547. var shixiao_num = that.data.shixiao_num;
  548. //检测商品是否下架
  549. wx.request({
  550. url: host + "commodityapi/commoditview",
  551. data: {
  552. com_id: com_id
  553. },
  554. method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
  555. header: {
  556. 'Accept': 'application/json'
  557. },
  558. success: function (res) {
  559. //有此商品
  560. if (res.data.total > 0) {
  561. carts[index].limitNum = parseInt(res.data.commodity.commodity_num);//同步起订量
  562. that.setData({
  563. carts: carts
  564. })
  565. if (res.data.commodity.commodity_flag != 0) {//此商品为下架商品
  566. carts[index].commodity_flag = 1;
  567. carts[index].flag = 0;
  568. shixiao_num++;
  569. that.setData({
  570. carts: carts,
  571. shixiao_num: shixiao_num,
  572. })
  573. that.getTotalPrice();
  574. } else {
  575. //判断库存
  576. wx.request({
  577. url: host + "api/commodityGroup/checkCommodityGroupRepertory",
  578. data: {
  579. datasheetGroupId: com_group_id
  580. },
  581. method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
  582. header: {
  583. 'Accept': 'application/json'
  584. },
  585. success: function (res) {
  586. if (res.data.code == '200') {
  587. var canBuy = res.data.data.canBuy;
  588. carts[index].canBuy = res.data.data.canBuy;
  589. carts[index].repertory = res.data.data.repertory;
  590. //库存充足
  591. if (res.data.data.canBuy == true) {
  592. if (res.data.data.repertory > carts[index].num) {
  593. num++;
  594. carts[index].num = num;
  595. } else if (res.data.data.repertory < carts[index].num){
  596. carts[index].num = res.data.data.repertory;
  597. that.setData({
  598. hiddenmodal: false,
  599. modalCont: '仅有' + res.data.data.repertory + '件该宝贝,赶快抢购吧~'
  600. })
  601. setTimeout(function () {
  602. that.setData({
  603. hiddenmodal: true,
  604. carts: carts
  605. })
  606. }, 2000)
  607. }
  608. }else{
  609. shixiao_num++;
  610. }
  611. that.setData({
  612. carts: carts,
  613. shixiao_num: shixiao_num,
  614. })
  615. that.getTotalPrice();
  616. }else{
  617. carts[index].commodity_flag = 1;
  618. carts[index].flag = 0;
  619. shixiao_num++;
  620. that.setData({
  621. carts: carts,
  622. shixiao_num: shixiao_num,
  623. })
  624. that.getTotalPrice();
  625. }
  626. }
  627. })
  628. }
  629. }else{
  630. carts[index].commodity_flag = 1;
  631. carts[index].flag = 0;
  632. shixiao_num++;
  633. that.setData({
  634. carts: carts,
  635. shixiao_num: shixiao_num,
  636. })
  637. that.getTotalPrice();
  638. }
  639. }
  640. })
  641. },
  642. //绑定减数量事件
  643. minusCount(e) {
  644. var that = this;
  645. var host = getApp().globalData.servsers;
  646. const index = e.currentTarget.dataset.index;
  647. let carts = this.data.carts;
  648. var com_id = carts[index].com_id;
  649. let num = parseInt(carts[index].num);
  650. let minnum = parseInt(carts[index].limitNum);
  651. var shixiao_num = that.data.shixiao_num;
  652. //检测商品是否下架
  653. wx.request({
  654. url: host + "commodityapi/commoditview",
  655. data: {
  656. com_id: com_id
  657. },
  658. method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
  659. header: {
  660. 'Accept': 'application/json'
  661. },
  662. success: function (res) {
  663. //有此商品
  664. if (res.data.total > 0) {
  665. carts[index].limitNum = parseInt(res.data.commodity.commodity_num);//同步起订量
  666. that.setData({
  667. carts: carts
  668. })
  669. if (res.data.commodity.commodity_flag != 0) {//此商品为下架商品
  670. carts[index].commodity_flag = 1;
  671. carts[index].flag = 0;
  672. shixiao_num++;
  673. that.setData({
  674. shixiao_num: shixiao_num,
  675. })
  676. } else {
  677. //判断库存
  678. wx.request({
  679. url: host + "api/commodityGroup/checkCommodityGroupRepertory",
  680. data: {
  681. datasheetGroupId: carts[index].com_group_id
  682. },
  683. method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
  684. header: {
  685. 'Accept': 'application/json'
  686. },
  687. success: function (res) {
  688. if (res.data.code == '200') {
  689. var canBuy = res.data.data.canBuy;
  690. carts[index].canBuy = res.data.data.canBuy;
  691. carts[index].repertory = res.data.data.repertory;
  692. //库存充足
  693. if (res.data.data.canBuy == true) {
  694. console.log("+:num" + parseInt(carts[index].num));
  695. console.log("+:limitNum" + parseInt(carts[index].limitNum));
  696. if (res.data.data.repertory >= parseInt(carts[index].num)){
  697. if (parseInt(carts[index].num) > parseInt(carts[index].limitNum)) {
  698. num--;
  699. carts[index].num = num;
  700. }else{
  701. carts[index].flag = 0;
  702. shixiao_num++;
  703. that.setData({
  704. carts: carts,
  705. shixiao_num: shixiao_num,
  706. })
  707. }
  708. }else{
  709. carts[index].commodity_flag = 1;
  710. carts[index].flag = 0;
  711. shixiao_num++;
  712. that.setData({
  713. shixiao_num: shixiao_num,
  714. })
  715. }
  716. } else {
  717. shixiao_num++;
  718. }
  719. that.setData({
  720. carts: carts,
  721. shixiao_num: shixiao_num,
  722. })
  723. that.getTotalPrice();
  724. }
  725. }
  726. })
  727. }
  728. } else {
  729. carts[index].commodity_flag = 1;
  730. carts[index].flag = 0;
  731. shixiao_num++;
  732. that.setData({
  733. shixiao_num: shixiao_num,
  734. })
  735. }
  736. that.setData({
  737. carts: carts
  738. })
  739. that.getTotalPrice();
  740. }
  741. })
  742. },
  743. //立即购买
  744. tz: function () {
  745. var that = this;
  746. var carts = that.data.carts;
  747. var len = that.data.carts.length;
  748. var chooseNum = 0;//当前勾选商品数量
  749. that.setData({
  750. firstClick : 1
  751. })
  752. for (var i = 0; i < len; i++ ){
  753. if (that.data.carts[i].flag == 1){
  754. chooseNum ++;
  755. }
  756. }
  757. if (chooseNum > 0){
  758. that.setData({
  759. buyCarts: []
  760. })
  761. // wx.showLoading({
  762. // title: '',
  763. // icon: 'loading',
  764. // mask: true,
  765. // success: function () {
  766. // }
  767. // })
  768. that.selectCartsSta(len);
  769. }else{
  770. that.setData({
  771. hiddenmodal: false,
  772. modalCont: '还没有选择宝贝!'
  773. })
  774. setTimeout(function () {
  775. that.setData({
  776. hiddenmodal: true,
  777. firstClick:0
  778. })
  779. }, 1500)
  780. return false;
  781. }
  782. },
  783. //检查立即购买的商品中是否有下架商品
  784. selectCartsSta: function (len){
  785. var that = this;
  786. var host = getApp().globalData.servsers;
  787. var carts = that.data.carts;
  788. var lenOld = that.data.carts.length;
  789. var shixiao_num = that.data.shixiao_num;
  790. if (len == 0) {
  791. if (lenOld > 0){
  792. that.setData({
  793. carts: carts,
  794. buyCarts: that.data.buyCarts
  795. });
  796. var newCarts = JSON.stringify(that.data.buyCarts);
  797. newCarts = newCarts.replace(/&/g, "zss");
  798. console.log(newCarts,"newCarts")
  799. // 立即采购
  800. wx.navigateTo({
  801. url: '/pages/confirmOrder/confirmOrder?carts=' + newCarts,
  802. })
  803. that.getTotalPrice();
  804. }else{
  805. return false;
  806. }
  807. } else {
  808. len -= 1;
  809. if (carts[len].flag == 1) {//检测立即购买中的商品,是否下架
  810. var com_id = carts[len].com_id;
  811. //检测商品是否下架
  812. wx.request({
  813. url: host + "commodityapi/commoditview",
  814. data: {
  815. com_id: com_id
  816. },
  817. method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
  818. header: {
  819. 'Accept': 'application/json'
  820. },
  821. success: function (res) {
  822. //有此商品
  823. if (res.data.total > 0) {
  824. carts[len].limitNum = parseInt(res.data.commodity.commodity_num);//同步起订量
  825. that.setData({
  826. carts: carts
  827. })
  828. if (res.data.commodity.commodity_flag != 0) {//此商品为下架商品
  829. carts[len].commodity_flag = 1;
  830. carts[len].flag = 0;
  831. that.getTotalPrice();
  832. shixiao_num++;
  833. wx.hideLoading();
  834. that.setData({
  835. hiddenmodal: false,
  836. modalCont: '"' + carts[len].name + '"已下架,请重新选择!'
  837. })
  838. setTimeout(function () {
  839. that.setData({
  840. shixiao_num: shixiao_num,
  841. carts: carts,
  842. firstClick: 0,
  843. hiddenmodal: true
  844. })
  845. }, 3000)
  846. return false;
  847. } else {
  848. //判断库存
  849. wx.request({
  850. url: host + "api/commodityGroup/checkCommodityGroupRepertory",
  851. data: {
  852. datasheetGroupId: carts[len].com_group_id
  853. },
  854. method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
  855. header: {
  856. 'Accept': 'application/json'
  857. },
  858. success: function (res) {
  859. if (res.data.code == '200') {
  860. var canBuy = res.data.data.canBuy;
  861. carts[len].canBuy = res.data.data.canBuy;
  862. //库存充足
  863. if (res.data.data.canBuy == true) {
  864. if (res.data.data.repertory < carts[len].num) {
  865. carts[len].canBuy = false;
  866. carts[len].flag = 0;//取消勾选
  867. wx.hideLoading();
  868. shixiao_num++;
  869. that.setData({
  870. hiddenmodal: false,
  871. modalCont: '"' + carts[len].name + '"库存不足,请重新选择!'
  872. })
  873. setTimeout(function () {
  874. that.setData({
  875. carts: carts,
  876. firstClick: 0,
  877. shixiao_num: shixiao_num,
  878. hiddenmodal: true
  879. })
  880. }, 3000)
  881. that.getTotalPrice();
  882. return false;
  883. }else{
  884. var sumNum = parseInt(carts[len].num);
  885. console.log("num:" + sumNum);
  886. for (var t = 0; t < len ; t++) {
  887. if (carts[t].com_id == carts[len].com_id && carts[t].com_group_id == carts[len].com_group_id) {
  888. sumNum += parseInt(carts[t].num);
  889. }
  890. }
  891. console.log("立即购买-sumNum:" + sumNum);
  892. console.log("立即购买-repertory:" + res.data.data.repertory);
  893. if (sumNum > res.data.data.repertory) {
  894. wx.hideLoading();
  895. that.setData({
  896. hiddenmodal: false,
  897. modalCont: '"' + carts[len].name + '-' + carts[len].style1_name + carts[len].style2_name + carts[len].style3_name + carts[len].style4_name + carts[len].style5_name + '",库存仅剩' + res.data.data.repertory + '件,请重新选择!'
  898. })
  899. setTimeout(function () {
  900. that.setData({
  901. carts: carts,
  902. firstClick: 0,
  903. hiddenmodal: true
  904. })
  905. }, 3000);
  906. return false;
  907. } else {
  908. carts[len].flag = 1;
  909. carts[len].new_price = parseFloat(carts[len].cost) + parseFloat(carts[len].box_price);
  910. }
  911. that.data.buyCarts.push(carts[len]);
  912. that.selectCartsSta(len);
  913. that.getTotalPrice();
  914. }
  915. }else{
  916. carts[len].flag = 0;//取消勾选
  917. shixiao_num++;
  918. wx.hideLoading();
  919. that.setData({
  920. hiddenmodal: false,
  921. modalCont: '"' + carts[len].name + '"已售罄,请重新选择!'
  922. })
  923. setTimeout(function () {
  924. that.setData({
  925. carts: carts,
  926. firstClick: 0,
  927. shixiao_num: shixiao_num,
  928. hiddenmodal: true
  929. })
  930. }, 3000);
  931. that.getTotalPrice();
  932. return false;
  933. }
  934. }
  935. }
  936. })
  937. }
  938. } else {
  939. carts[len].commodity_flag = 1;
  940. carts[len].flag = 0;
  941. shixiao_num++;
  942. wx.hideLoading();
  943. that.setData({
  944. hiddenmodal: false,
  945. modalCont: '存在下架商品,请重新选择!'
  946. })
  947. setTimeout(function () {
  948. that.setData({
  949. carts: carts,
  950. firstClick: 0,
  951. shixiao_num: shixiao_num,
  952. hiddenmodal: true
  953. })
  954. }, 2000);
  955. that.getTotalPrice();
  956. return false;
  957. }
  958. }
  959. })
  960. }else{
  961. that.selectCartsSta(len);
  962. }
  963. }
  964. },
  965. buyUrl: function (e) {//跳转到当前商品对应的购买页
  966. var that = this;
  967. var host = getApp().globalData.servsers;
  968. var id = e.currentTarget.dataset.comid;
  969. wx.request({
  970. url: host + "commodityapi/commoditview",
  971. data: {
  972. com_id: id,
  973. },
  974. method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
  975. header: {
  976. 'Accept': 'application/json'
  977. },
  978. success: function (res) {
  979. if (res.data.total > 0) {
  980. wx.navigateTo({
  981. url: '/pages/buy/buy?com_id=' + id
  982. })
  983. } else {
  984. that.setData({
  985. hiddenmodal: false,
  986. modalCont: '该商品已下架!'
  987. })
  988. setTimeout(function () {
  989. that.setData({
  990. hiddenmodal: true
  991. })
  992. }, 2000)
  993. return false;
  994. }
  995. }
  996. })
  997. },
  998. touchS: function (e) {
  999. if (e.touches.length == 1) {
  1000. this.setData({
  1001. //设置触摸起始点水平方向位置
  1002. startX: e.touches[0].clientX
  1003. });
  1004. }
  1005. },
  1006. touchM: function (e) {
  1007. if (e.touches.length == 1) {
  1008. //手指移动时水平方向位置
  1009. var moveX = e.touches[0].clientX;
  1010. //手指起始点位置与移动期间的差值
  1011. var disX = this.data.startX - moveX;
  1012. var delBtnWidth = this.data.delBtnWidth;
  1013. var index = e.currentTarget.dataset.index;
  1014. // var txtStyle = "";
  1015. if (disX == 0 || disX < 0) {//如果移动距离小于等于0,文本层位置不变
  1016. this.setData({
  1017. touchDel: index,
  1018. txtStyle: "0"
  1019. })
  1020. } else if (disX > 0) {//移动距离大于0,文本层left值等于手指移动距离
  1021. this.setData({
  1022. touchDel: index,
  1023. txtStyle: "-" + disX + "rpx",
  1024. // scrollY: false
  1025. })
  1026. if (disX >= delBtnWidth) {
  1027. //控制手指移动距离最大值为删除按钮的宽度
  1028. this.setData({
  1029. touchDel: index,
  1030. txtStyle: "-" + delBtnWidth + "rpx",
  1031. // scrollY: false
  1032. })
  1033. }
  1034. }
  1035. //获取手指触摸的是哪一项
  1036. // var index = e.target.dataset.index;
  1037. // var list = this.data.list;
  1038. // list[index].txtStyle = txtStyle;
  1039. // //更新列表的状态
  1040. // this.setData({
  1041. // list: list
  1042. // });
  1043. }
  1044. },
  1045. touchE: function (e) {
  1046. if (e.changedTouches.length == 1) {
  1047. //手指移动结束后水平位置
  1048. var endX = e.changedTouches[0].clientX;
  1049. //触摸开始与结束,手指移动的距离
  1050. var disX = this.data.startX - endX;
  1051. var delBtnWidth = this.data.delBtnWidth;
  1052. var index = e.currentTarget.dataset.index;
  1053. //如果距离小于删除按钮的1/2,不显示删除按钮
  1054. // var txtStyle = disX > delBtnWidth / 2 ? "left:-" + delBtnWidth + "px" : "left:0px";
  1055. this.setData({
  1056. touchDel: index,
  1057. txtStyle: disX > delBtnWidth / 2 ? "-" + delBtnWidth + "rpx" : "0px",
  1058. // scrollY : disX > delBtnWidth / 2 ? false : true
  1059. })
  1060. //获取手指触摸的是哪一项
  1061. // var index = e.target.dataset.index;
  1062. // var list = this.data.list;
  1063. // list[index].txtStyle = txtStyle;
  1064. // //更新列表的状态
  1065. // this.setData({
  1066. // list: list
  1067. // });
  1068. }
  1069. },
  1070. //获取元素自适应后的实际宽度
  1071. getEleWidth: function (w) {
  1072. var real = 0;
  1073. try {
  1074. var res = wx.getSystemInfoSync().windowWidth;
  1075. var scale = (750 / 2) / (w / 2);//以宽度750px设计稿做宽度的自适应
  1076. real = Math.floor(res / scale);
  1077. return real;
  1078. } catch (e) {
  1079. return false;
  1080. }
  1081. },
  1082. //点击删除按钮事件
  1083. delItem: function (e) {
  1084. var that = this;
  1085. //获取列表中要删除项的下标
  1086. var host = getApp().globalData.servsers;
  1087. var index = e.currentTarget.dataset.index;
  1088. var id = e.currentTarget.dataset.id;
  1089. var flag = e.currentTarget.dataset.flag;
  1090. var shixiao_num = that.data.shixiao_num;//失效数量
  1091. let carts = that.data.carts;
  1092. var cartsLength = that.data.carts.length;
  1093. that.setData({
  1094. txtStyle: 0
  1095. });
  1096. //删除购物车数据
  1097. wx.request({
  1098. url: host + "shoppingcartapi/deleteshoppingcart",
  1099. data: {
  1100. id: id
  1101. },
  1102. method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
  1103. header: {
  1104. 'Accept': 'application/json'
  1105. },
  1106. success: function (res) {
  1107. carts.splice(index, 1);
  1108. that.setData({
  1109. carts: carts
  1110. });
  1111. var cartsLength = carts.length;
  1112. var flagNum = cartsLength - shixiao_num;
  1113. if (cartsLength == 0){
  1114. that.setData({
  1115. hasList: false,
  1116. paddingBottom: 0
  1117. })
  1118. }else{
  1119. if (flag == 0) {
  1120. if (flagNum > 0) {
  1121. that.setData({
  1122. selectAllStatus: true
  1123. });
  1124. } else {
  1125. that.setData({
  1126. selectAllStatus: false
  1127. });
  1128. }
  1129. that.getTotalPrice();
  1130. } else {
  1131. //删除的是失效商品
  1132. shixiao_num--;
  1133. that.setData({
  1134. shixiao_num: shixiao_num
  1135. })
  1136. }
  1137. }
  1138. if (res == null || res.data == null) {
  1139. console.error('网络请求失败');
  1140. return;
  1141. }
  1142. }
  1143. });
  1144. },
  1145. //下拉刷新
  1146. onPullDownRefresh: function (e) {
  1147. var that = this;
  1148. that.loadFun();
  1149. wx.stopPullDownRefresh();
  1150. },
  1151. /**
  1152. * 计算总价
  1153. */
  1154. getTotalPrice() {
  1155. let carts = this.data.carts;//获取购物车列表
  1156. let total = 0;
  1157. for (let i = 0; i < this.data.carts.length; i++) {
  1158. if (carts[i].flag == 1 && carts[i].commodity_flag == 0) { // 判断选中[flag = 1]并且是上架[commodity_flag = 0]的商品,才会计算价格
  1159. total += carts[i].num * (parseFloat(carts[i].cost) + parseFloat(carts[i].box_price)); // 所有价格加起来
  1160. }
  1161. }
  1162. this.setData({
  1163. carts: carts,
  1164. totalPrice: total.toFixed(2)
  1165. });
  1166. }
  1167. })
  1168. var that;
  1169. var Util = require('../../utils/util.js');