cart.js 14 KB

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