cart.js 13 KB

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