cart.js 13 KB

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