cart.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578
  1. var _request = require('../../utils/request.js')
  2. var _handle = require('../../utils/handle.js')
  3. var validator = require('../../utils/validator.js')
  4. Page({
  5. data: {
  6. orderId: 0,
  7. count:1,
  8. cartList:{},
  9. cartCount:0,
  10. cartTotal:0,
  11. checkeditems:'',
  12. checkeditemsnum:'',
  13. checkedtotal:0,
  14. selectedall:false,
  15. submitlock:false,
  16. x:0,
  17. currentX: 0,
  18. seckillruntimearr:[],
  19. localCartList:{}
  20. },
  21. handleMovableChange: function(e) {
  22. // this.data.currentX = e.detail.x;
  23. this.data.currentX = e.detail.x;
  24. },
  25. handleTouchend: function(e) {
  26. this.isMove = true;
  27. let index = e.currentTarget.id;
  28. let clist = this.data.cartList;
  29. if (this.data.currentX < -46) {
  30. // this.data.x = -92;
  31. clist[index]['movex'] = -100;
  32. this.setData({
  33. cartList: clist
  34. });
  35. } else {
  36. clist[index]['movex'] = 0;
  37. this.setData({
  38. cartList: clist
  39. });
  40. }
  41. },
  42. onHide:function(){
  43. clearInterval(this.data.timer);
  44. },
  45. onLoad: function (options) {
  46. // this.getCartList();
  47. },
  48. onShow: function () {
  49. var that = this;
  50. this.getCartList();
  51. this.setData({submitlock: false});
  52. this.setData({selectedall: false});
  53. setTimeout(function(){
  54. that.getCartListAndSelected();
  55. },50);
  56. },
  57. getCartList:function(){
  58. clearInterval(this.data.timer);
  59. console.log('getCartList')
  60. var that = this
  61. var url = 'v1/cart/list'
  62. var params = {}
  63. var success = function (res) {
  64. console.log(res)
  65. if(res.data.list){
  66. var skrt = that.data.seckillruntimearr;
  67. var localcl = wx.getStorageSync('localCartList') ? wx.getStorageSync('localCartList') : res.data.list;
  68. console.log('localcl',localcl);
  69. for(let i in res.data.list){
  70. res.data.list['movex'] = 0;
  71. skrt.push('');
  72. for(let o in localcl){
  73. if(res.data.list[i]['id'] == localcl[o]['id']){
  74. // if(res.data.list[i]['count'] < localcl[o]['count']){
  75. res.data.list[i]['count'] = localcl[o]['count'];
  76. // }else{
  77. // localcl[o]['count'] = res.data.list[i]['count'];
  78. // }
  79. }
  80. }
  81. }
  82. that.setData({
  83. cartList: res.data.list,
  84. cartCount: res.data.count,
  85. cartTotal: res.data.total,
  86. seckillruntimearr:skrt,
  87. localCartList: localcl
  88. })
  89. that.seckilltime();
  90. }else{
  91. wx.showToast({
  92. title: '请先授权登录~',
  93. icon: 'none',
  94. duration: 2000
  95. })
  96. }
  97. }
  98. _request.$get(url, params, success)
  99. },
  100. getCartListAndSelected:function(){
  101. console.log('getCartList')
  102. var that = this
  103. var url = 'v1/cart/list'
  104. var params = {}
  105. var success = function (res) {
  106. console.log(res)
  107. if(res.data.list){
  108. var localcl = wx.getStorageSync('localCartList') ? wx.getStorageSync('localCartList') : res.data.list;
  109. console.log('localcl',localcl);
  110. for(let i in res.data.list){
  111. for(let o in localcl){
  112. if(res.data.list[i]['id'] == localcl[o]['id']){
  113. // if(res.data.list[i]['count'] < localcl[o]['count']){
  114. res.data.list[i]['count'] = localcl[o]['count'];
  115. // }else{
  116. // localcl[o]['count'] = res.data.list[i]['count'];
  117. // }
  118. }
  119. }
  120. }
  121. that.setData({
  122. cartList: res.data.list,
  123. cartCount: res.data.count,
  124. cartTotal: res.data.total,
  125. localCartList: localcl
  126. })
  127. that.allSelect();
  128. }else{
  129. wx.showToast({
  130. title: '请先授权登录~',
  131. icon: 'none',
  132. duration: 2000
  133. })
  134. }
  135. }
  136. _request.$get(url, params, success)
  137. },
  138. add: function (e) {
  139. console.log('tapadd',e);
  140. var that = this;
  141. var itemid = e.currentTarget.dataset.id;
  142. var itemcount = e.currentTarget.dataset.count;
  143. console.log('itemcount',itemcount)
  144. if (itemcount) {
  145. var index = e.currentTarget.dataset.index;
  146. var count = itemcount + 1;
  147. this.setData({
  148. ['cartList[' + index + '].count']:count,
  149. localCartList:that.data.cartList
  150. })
  151. this.checkSelected();
  152. // this.changeServercount(count,itemid);
  153. }
  154. },
  155. mius: function (e) {
  156. console.log('tapmius',e)
  157. var that = this;
  158. var itemid = e.currentTarget.dataset.id;
  159. var itemcount = e.currentTarget.dataset.count;
  160. if (itemcount > 1) {
  161. var count = itemcount - 1;
  162. var index = e.currentTarget.dataset.index;
  163. this.setData({
  164. ['cartList[' + index + '].count']:count,
  165. localCartList:that.data.cartList
  166. })
  167. this.checkSelected();
  168. // this.changeServercount(count,itemid);
  169. }else{
  170. wx.showModal({
  171. title: '提示',
  172. content: '需要删除改商品吗?',
  173. success: function (sm) {
  174. if (sm.confirm) {
  175. var url = "/v1/cart/mult_delele";
  176. var params = {
  177. ids:itemid
  178. }
  179. var success = function (res) {
  180. console.log(res)
  181. if(res.data.result){
  182. }
  183. that.getCartList();
  184. that.setData({submitlock: false});
  185. that.setData({selectedall: false});
  186. // that.getCartListAndSelected();
  187. }
  188. _request.$post(url, params, success);
  189. } else if (sm.cancel) {
  190. console.log('用户点击取消')
  191. }
  192. }
  193. })
  194. }
  195. },
  196. delitem:function(e){
  197. var that = this;
  198. var itemid = e.currentTarget.dataset.id;
  199. console.log('itemid',itemid);
  200. wx.showModal({
  201. title: '提示',
  202. content: '需要删除改商品吗?',
  203. success: function (sm) {
  204. if (sm.confirm) {
  205. var url = "/v1/cart/mult_delele";
  206. var params = {
  207. ids:itemid
  208. }
  209. var success = function (res) {
  210. console.log(res)
  211. if(res.data.result){
  212. }
  213. that.getCartList();
  214. that.setData({submitlock: false});
  215. that.setData({selectedall: false});
  216. // that.getCartListAndSelected();
  217. }
  218. _request.$post(url, params, success);
  219. } else if (sm.cancel) {
  220. console.log('用户点击取消')
  221. }
  222. }
  223. })
  224. },
  225. changeCount: function (val) {
  226. var count = val.detail.value
  227. var itemid = val.target.dataset.id;
  228. var index = val.target.dataset.index;
  229. if (count <= 0) {
  230. this.setData({
  231. ['cartList[' + index + '].count']:1
  232. })
  233. this.checkSelected();
  234. // this.changeServercount(1,itemid);
  235. } /*else if (count > this.data.project.left_count) {
  236. this.setData({
  237. count: this.data.project.left_count
  238. })
  239. this.changeCountService(this.data.project.left_count,itemid)
  240. }*/ else {
  241. this.setData({
  242. ['cartList[' + index + '].count']:count
  243. })
  244. this.checkSelected();
  245. // this.changeServercount(count,itemid);
  246. }
  247. },
  248. changeServercount:function(val,itemid){
  249. console.log('changeCountService')
  250. var that = this
  251. var url = "/v1/cart/change_nums/" + itemid + "/" + val
  252. var params = {}
  253. var success = function (res) {
  254. console.log(res)
  255. if(res.result){
  256. //修改成功
  257. }
  258. }
  259. _request.$post(url, params, success);
  260. // this.getCartList();
  261. that.setData({submitlock: false});
  262. that.setData({selectedall: false});
  263. that.getCartListAndSelected();
  264. },
  265. itemselected:function(e){
  266. console.log(this)
  267. var nowitems = this.data.selectedItems;
  268. let index = e.currentTarget.dataset.index;
  269. var bool = this.data.cartList[index].IsBuy;
  270. console.log('bool',bool)
  271. if(this.data.cartList[index].seckill_end < 0 || (Date.parse(new Date()) / 1000 > this.data.cartList[index].seckill_start && Date.parse(new Date()) / 1000 < this.data.cartList[index].seckill_end)){
  272. this.setData({
  273. ['cartList[' + index + '].IsBuy']: !bool
  274. })
  275. }else{
  276. if(Date.parse(Date.parse(new Date()) / 1000 > this.data.cartList[index].seckill_end)){
  277. wx.showToast({
  278. title: '当前商品秒杀已结束~',
  279. icon: 'none',
  280. duration: 2000
  281. })
  282. }else{
  283. wx.showToast({
  284. title: '当前商品秒杀尚未开始~',
  285. icon: 'none',
  286. duration: 2000
  287. })
  288. }
  289. }
  290. this.checkSelected();
  291. },
  292. allSelect:function(){
  293. if(this.data.selectedall){
  294. for(var i in this.data.cartList){
  295. this.setData({
  296. ['cartList[' + i + '].IsBuy']: false
  297. })
  298. }
  299. this.setData({
  300. selectedall: false
  301. })
  302. }else{
  303. for(var i in this.data.cartList){
  304. if(this.data.cartList[i].seckill_end < 0 || (Date.parse(new Date()) / 1000 > this.data.cartList[i].seckill_start && Date.parse(new Date()) / 1000 < this.data.cartList[i].seckill_end)){
  305. this.setData({
  306. ['cartList[' + i + '].IsBuy']: true
  307. })
  308. }
  309. }
  310. this.setData({
  311. selectedall: true
  312. })
  313. }
  314. this.checkSelected();
  315. },
  316. checkSelected:function(){
  317. var cartList = this.data.cartList;
  318. var checkitem = '';
  319. var checkitemnum = '';
  320. var checktotal = 0;
  321. var checkcount = 0;
  322. for(var i in cartList){
  323. if(cartList[i].IsBuy){
  324. checkitem = checkitem + cartList[i].id+',';
  325. checkitemnum = checkitemnum + cartList[i].count+',';
  326. checktotal = checktotal + (parseFloat(cartList[i].original_price) * parseInt(cartList[i].count));
  327. checkcount = checkcount + parseInt(cartList[i].count);
  328. }
  329. }
  330. checkitem = checkitem.substr(0,checkitem.length - 1);
  331. checkitemnum = checkitemnum.substr(0,checkitemnum.length - 1);
  332. //setlocalcartlist
  333. wx.setStorageSync('localCartList',cartList);
  334. this.setData({
  335. checkeditems:checkitem,
  336. checkeditemsnum:checkitemnum,
  337. cartCount: checkcount,
  338. cartTotal: checktotal
  339. })
  340. // this.mulChangeState();
  341. },
  342. mulChangeState:function(){
  343. var that = this;
  344. var itemid = this.data.checkeditems;
  345. var itemnum = this.data.checkeditemsnum;
  346. var url = "v1/cart/mult_change_state";
  347. var params = {
  348. ids:itemid,
  349. nums:itemnum
  350. }
  351. var success = function (res) {
  352. console.log('mulChangeState',res)
  353. if(res.data.result){
  354. that.getCartList();
  355. that.setData({submitlock: false});
  356. that.setData({selectedall: false});
  357. // that.getCartListAndSelected();
  358. }
  359. }
  360. _request.$post(url, params, success);
  361. },
  362. mulChangeStateToPay:function(){
  363. var that = this;
  364. var lock = this.data.submitlock;
  365. if(!lock){
  366. that.setData({submitlock: true})
  367. var itemid = this.data.checkeditems;
  368. var itemnum = this.data.checkeditemsnum;
  369. var url = "v1/cart/order_mul";
  370. var params = {
  371. ids:itemid,
  372. nums:itemnum
  373. }
  374. var success = function (res) {
  375. wx.showToast({
  376. title: '正在跳转到结算页,请稍后~',
  377. icon: 'none',
  378. duration: 2000
  379. })
  380. console.log('mulChangeState',res)
  381. if (res.data.order_id) {
  382. wx.navigateTo({
  383. url: '../pay/pay?orderId=' + res.data.order_id
  384. })
  385. }
  386. }
  387. var err = function(err){
  388. console.log(err)
  389. that.setData({submitlock: false})
  390. }
  391. _request.$post(url, params, success, err);
  392. }
  393. },
  394. toPay:function(){
  395. var that = this;
  396. var url = "/v1/cart/order_mul";
  397. var params = {}
  398. var success = function (res) {
  399. console.log(res)
  400. if (res.data.order_id) {
  401. wx.navigateTo({
  402. url: '../pay/pay?orderId=' + res.data.order_id
  403. })
  404. }
  405. }
  406. _request.$get(url, params, success);
  407. },
  408. delSelected:function(){
  409. var that = this;
  410. var itemid = this.data.checkeditems;
  411. if(itemid== ''){
  412. wx.showToast({
  413. title: '没有选中任何商品~',
  414. icon: 'none',
  415. duration: 2000
  416. })
  417. }else{
  418. wx.showModal({
  419. title: '提示',
  420. content: '确定要删除选中的商品吗?',
  421. success: function (sm) {
  422. if (sm.confirm) {
  423. var url = "/v1/cart/mult_delele";
  424. var params = {
  425. ids:itemid
  426. }
  427. var success = function (res) {
  428. console.log(res)
  429. if(res.data.result){
  430. }
  431. that.getCartList();
  432. that.setData({submitlock: false});
  433. that.setData({selectedall: false});
  434. // that.getCartListAndSelected();
  435. }
  436. _request.$post(url, params, success);
  437. } else if (sm.cancel) {
  438. console.log('用户点击取消')
  439. }
  440. }
  441. })
  442. }
  443. },
  444. seckilltime() {
  445. var that = this;
  446. var runtime = setInterval(function () {
  447. var _cartlist = that.data.cartList;
  448. for(var index = 0;index<_cartlist.length;index++){
  449. if(_cartlist[index].seckill_show_price > 0){
  450. if(Date.parse(new Date()) / 1000 < _cartlist[index].seckill_end && Date.parse(new Date()) / 1000 > _cartlist[index].seckill_start){
  451. var __cartdata = that.data.cartList[index];
  452. var __cartindex = index;
  453. var t = Date.parse(new Date())
  454. t = t / 1000;
  455. var leftTime = __cartdata['seckill_end'] - t
  456. var d, h, m, s, ms;
  457. if (leftTime >= 0) {
  458. // day = parseInt(ctime / 86400)
  459. h = parseInt(leftTime / 3600)
  460. m = parseInt(leftTime / 60 ) - parseInt(leftTime / 3600) * 60
  461. s = parseInt(leftTime) - parseInt(leftTime / 60 ) * 60
  462. s = s < 10 ? "0" + s : s
  463. m = m < 10 ? "0" + m : m
  464. h = h < 10 ? "0" + h : h
  465. __cartdata['seckill_runtime'] = h+':'+m+':'+s;
  466. var allcartlist = that.data.cartList;
  467. allcartlist[index] = __cartdata;
  468. that.setData({
  469. // ['cartList[' + __cartindex + '].seckill_runtime']:h+':'+m+':'+s
  470. cartList:allcartlist,
  471. ['seckillruntimearr['+index+']']:'秒杀剩余时间 '+h+':'+m+':'+s
  472. })
  473. }
  474. if (leftTime < 0) {
  475. // clearInterval(that.data.timer);
  476. that.setData({
  477. ['cartList[' + __cartindex + '].seckill_runtime']:'秒杀剩余时间 00:00:00',
  478. ['seckillruntimearr['+index+']']:'秒杀剩余时间 00:00:00'
  479. })
  480. }
  481. }else{
  482. if(Date.parse(new Date()) / 1000 < _cartlist[index].seckill_start){
  483. var __cartdata = that.data.cartList[index];
  484. var __cartindex = index;
  485. var t = Date.parse(new Date())
  486. t = t / 1000;
  487. var leftTime = __cartdata['seckill_start'] - t
  488. var d, h, m, s, ms;
  489. if (leftTime >= 0) {
  490. // day = parseInt(ctime / 86400)
  491. h = parseInt(leftTime / 3600)
  492. m = parseInt(leftTime / 60 ) - parseInt(leftTime / 3600) * 60
  493. s = parseInt(leftTime) - parseInt(leftTime / 60 ) * 60
  494. s = s < 10 ? "0" + s : s
  495. m = m < 10 ? "0" + m : m
  496. h = h < 10 ? "0" + h : h
  497. __cartdata['seckill_runtime'] = h+':'+m+':'+s;
  498. var allcartlist = that.data.cartList;
  499. allcartlist[index] = __cartdata;
  500. that.setData({
  501. // ['cartList[' + __cartindex + '].seckill_runtime']:h+':'+m+':'+s
  502. cartList:allcartlist,
  503. ['seckillruntimearr['+index+']']:'距离秒杀开始 '+h+':'+m+':'+s
  504. })
  505. }
  506. if (leftTime < 0) {
  507. // clearInterval(that.data.timer);
  508. that.setData({
  509. ['cartList[' + __cartindex + '].seckill_runtime']:'距离秒杀开始 00:00:00',
  510. ['seckillruntimearr['+index+']']:'距离秒杀开始 00:00:00'
  511. })
  512. }
  513. }else{
  514. that.setData({
  515. ['seckillruntimearr['+index+']']:'秒杀已结束'
  516. })
  517. var url = "/v1/cart/mult_delele";
  518. var params = {
  519. ids:that.data.cartList[index].id
  520. }
  521. var success = function (res) {
  522. console.log(res)
  523. if(res.data.result){
  524. }
  525. clearInterval(that.data.timer);
  526. that.getCartList();
  527. that.setData({submitlock: false});
  528. that.setData({selectedall: false});
  529. // that.getCartListAndSelected();
  530. }
  531. _request.$post(url, params, success);
  532. }
  533. }
  534. }else{
  535. that.setData({
  536. ['seckillruntimearr['+index+']']:''
  537. })
  538. }
  539. }
  540. console.log('cartList',that.data.cartList);
  541. },1000);
  542. that.setData({
  543. timer: runtime,
  544. });
  545. }
  546. })