index.js 43 KB

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