index.js 43 KB

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