index.js 43 KB

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