// pages/cart/cart.js var app = getApp(); Page({ /** * 页面的初始数据 */ data: { startX: 0, //开始坐标 startY: 0, userInfo: wx.getStorageSync('userInfo'), checkAll: false, loading: false, load: false, checkNum: 0, checkPrice: 0.00, cartList: [] }, /** * 生命周期函数--监听页面加载 */ onLoad(options) {}, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { // if (typeof this.getTabBar === 'function' && this.getTabBar()) { // let userInfo = wx.getStorageSync('userInfo'); // if (userInfo && userInfo.userId) { // app.globalData.tabbar.list[0].show = false; // app.globalData.tabbar.list[1].show = true; // } else { // app.globalData.tabbar.list[0].show = true; // } // this.getTabBar().setData({ // selectIndex: 3, // tabbar: app.globalData.tabbar // }) // } }, /** * 生命周期函数--监听页面显示 */ onShow() { let userInfo = wx.getStorageSync('userInfo'); this.setData({ userInfo, }) this.setData({ checkAll: false, checkNum: 0, checkPrice: 0.00, }) setTimeout(() => { wx.setNavigationBarTitle({ title: app.globalData.tabbar.list[2].text, }); }, 500); if (typeof this.getTabBar === 'function' && this.getTabBar()) { // if (userInfo && userInfo.userId) { // app.globalData.tabbar.list[0].show = false; // app.globalData.tabbar.list[1].show = true; // } else { // app.globalData.tabbar.list[0].show = true; // } let that = this; setTimeout(() => { wx.setNavigationBarTitle({ title: app.globalData.tabbar.list[2].text, }); that.getTabBar().setData({ selectIndex: 2, tabbar: app.globalData.tabbar }) }, 500); } if (userInfo && userInfo.userId) { this.initData(); } }, async initData() { this.setData({ loading: !this.data.load }) let { data } = await app.ajax.get({ url: `/admin/bxdusercollection/query?userId=${this.data.userInfo.userId}&virtualInventoryId=${wx.getStorageSync('virtualInventoryId')}`, }); let cartList = data.data.map(v => { v["picArr"] = v.pic ? v.pic.split(",") : null; return v; }); this.setData({ cartList: cartList, loading: false, load: true }); this.switchChange({ currentTarget: { dataset: { all: true } } }); }, switchChange(e) { //console.log(e) let cartList = this.data.cartList; const allCHave = cartList.every(item => item.check == true); let checkAll = null; if (e.currentTarget.dataset.all) { if (!allCHave) { cartList.map(v => { v.check = true; }); checkAll = true; } else { cartList.map(v => { v.check = false; }); checkAll = true; } } else { cartList[e.currentTarget.dataset.index].check = !cartList[e.currentTarget.dataset.index].check; } this.setData({ cartList, checkAll: cartList.every(item => item.check == true), checkNum: cartList.filter((item => item.check)).length, checkPrice: cartList.filter((item => item.check)).map(v => { return { price: app.currency(v.price).multiply(v.qty).value } }).reduce((price, item1) => app.currency(price).add(item1.price).value, 0), }) }, async jianNum(e) { let cartList = this.data.cartList; let cart = cartList[e.currentTarget.dataset.index]; if (cart.qty <= 1) return; try { cart.qty = (cart.qty || 1) - 1; await this.updateSku({ id: cart.id, qty: cart.qty }); // this.setData({ // cartList, // checkPrice: cartList.filter((item => item.check)).map(v => { // return { // price: app.currency(v.price).multiply(v.qty).value // } // }).reduce((price, item1) => app.currency(price).add(item1.price).value, 0), // }) this.initData(); } catch (e) {} }, async jiaNum(e) { let cartList = this.data.cartList; let cart = cartList[e.currentTarget.dataset.index]; if (cart.qty > cart.usableStocks || cart.qty == cart.limitQty) return; try { cart.qty = (cart.qty || 1) + 1; await this.updateSku({ id: cart.id, qty: cart.qty }); // this.setData({ // cartList, // checkPrice: cartList.filter((item => item.check)).map(v => { // return { // price: app.currency(v.price).multiply(v.qty).value // } // }).reduce((price, item1) => app.currency(price).add(item1.price).value, 0), // }); this.initData(); } catch (e) { cart.qty = cart.qty - 1 } }, async nextBtn() { let role = wx.getStorageSync('roleList').find(v => v.roleCode == 'User' || v.roleCode == 'SZMAdmin'); if (!role) { wx.showToast({ title: '您无下单权限!', icon: "error" }) return; } let cartList = this.data.cartList.filter((item => item.check)); if (cartList.length == 0) { wx.showToast({ title: '请选择商品', icon: "error" }) return; } let { data } = await app.ajax.post({ url: `/admin/bxdorder/bxdPiclimit`, data: { orderSaleId: this.data.userInfo.userId }, }); if (data.data.length) { await wx.showModal({ title: '提示', content: `当前下单已被限制, 订单${data.data.map(item => item.orderNumber)}存在反馈图片超时的情况,请尽快前去上传反馈图片` }) return; } let that = this; wx.navigateTo({ url: '/pages/order/create/create', success: function (res) { // 通过eventChannel向被打开页面传送数据 res.eventChannel.emit('acceptDataFromOpenerPage', { goodsList: cartList, checkPrice: cartList.map(v => { return { price: app.currency(v.price).multiply(v.qty).value } }).reduce((price, item1) => app.currency(price).add(item1.price).value, 0), }) } }) }, async updateSku(data) { await app.ajax.post({ url: "/admin/bxdusercollection/updateQtyById", method: "PUT", data }); }, async delBtn() { let ids = this.data.cartList.filter(v => v.check).map(v => v.id).join(","); if (!ids) { return; } let that = this; wx.showModal({ title: "删除提示", content: `确定删除这些商品吗?`, async success(res) { if (res.confirm) { await app.ajax.post({ url: `/admin/bxdusercollection/removeByIds?ids=${ids}`, method: "DELETE" }); wx.showToast({ title: '删除成功' }) that.setData({ current: 0, cartList: [] }) setTimeout(async () => { await that.initData(); }, 1000); } } }) }, async delBtn1(e) { let ids = e.currentTarget.dataset.item.id; if (!ids) { return; } let that = this; wx.showModal({ title: "删除提示", content: `确定删除这个商品吗?`, async success(res) { if (res.confirm) { await app.ajax.post({ url: `/admin/bxdusercollection/removeByIds?ids=${ids}`, method: "DELETE" }); wx.showToast({ title: '删除成功' }) that.setData({ current: 0, cartList: [] }) setTimeout(async () => { await that.initData(); }, 1000); } } }) }, /** * 生命周期函数--监听页面隐藏 */ onHide() { // this.setData({ // checkAll: false, // checkNum: 0, // checkPrice: 0.00, // }) }, toLogin() { wx.navigateTo({ url: '/pages/login/login', }) }, toGoods(e) { wx.navigateTo({ url: `/pages/goods/goods?prodId=${e.currentTarget.dataset.item.prodId}`, }) }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() { }, touchE: function (e) { // //console.log(e); var that = this if (e.changedTouches.length == 1) { //手指移动结束后触摸点位置的X坐标 var endX = e.changedTouches[0].clientX; //触摸开始与结束,手指移动的距离 var disX = that.data.startX - endX; var delBtnWidth = 120; //如果距离小于删除按钮的1/2,不显示删除按钮 var txtStyle = disX > delBtnWidth / 2 ? "left:-" + delBtnWidth + "rpx" : "left:0rpx"; //获取手指触摸的是哪一项 var index = e.currentTarget.dataset.index; var list = that.data.cartList; list[index].txtStyle = txtStyle; //更新列表的状态 that.setData({ cartList: list }); } }, //手指触摸动作开始 记录起点X坐标 touchstart: function (e) { //开始触摸时 重置所有删除 this.data.cartList.forEach(function (v, i) { if (v.isTouchMove) //只操作为true的 v.isTouchMove = false; }) this.setData({ startX: e.changedTouches[0].clientX, startY: e.changedTouches[0].clientY, cartList: this.data.cartList }) }, //滑动事件处理 touchmove: function (e) { var that = this, index = e.currentTarget.dataset.index, //当前索引 startX = that.data.startX, //开始X坐标 startY = that.data.startY, //开始Y坐标 touchMoveX = e.changedTouches[0].clientX, //滑动变化坐标 touchMoveY = e.changedTouches[0].clientY, //滑动变化坐标 //获取滑动角度 angle = that.angle({ X: startX, Y: startY }, { X: touchMoveX, Y: touchMoveY }); that.data.cartList.forEach(function (v, i) { v.isTouchMove = false //滑动超过30度角 return if (Math.abs(angle) > 30) return; if (i == index) { if (touchMoveX > startX) //右滑 v.isTouchMove = false else //左滑 v.isTouchMove = true } }) //更新数据 that.setData({ cartList: that.data.cartList }) }, /** * 计算滑动角度 * @param {Object} start 起点坐标 * @param {Object} end 终点坐标 */ angle: function (start, end) { var _X = end.X - start.X, _Y = end.Y - start.Y //返回角度 /Math.atan()返回数字的反正切值 return 360 * Math.atan(_Y / _X) / (2 * Math.PI); }, })