cart.js 14 KB

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