123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- export default {
- computed: {
- // 整合购物车数据
- $S_tabbar_shopCarts() {
- let shopCarts = this.$M_GS('common', '$S_tabbar_shopCarts');
-
- if (!this.$M_IsEmpty(shopCarts)) {
- let cartList = [];
- for (let key in shopCarts) {
- cartList.push(shopCarts[key]);
- }
- return cartList;
- } else {
- return [];
- }
- },
- },
- methods: {
- // 当数量超出范围,比如最小范围1触发
- numsOverlimit(e, row) {
- if (e === 'minus') {
- this.deleteShops = row;
- this.uModalShow = true;
- }
- },
- goodPlus(e, row) {
- this.handleCar(e, row, 1);
- },
- // 点击商品-
- goodMinus(e, row) {
- this.handleCar(e, row, 2);
- },
- // 点击数量的+-
- numsChg(e, row) {
- // 增加用户体验
- uni.showLoading({
- title: '请稍等',
- mask: true,
- });
- setTimeout(() => {
- uni.hideLoading();
- }, 200);
- this.handleCar(e, row, 3);
- },
- // 处理购物车数据
- handleCar(e, row, idx) {
- let shopCarts = this.$S_tabbar_shopCarts;
- if (shopCarts.length > 0) {
- shopCarts.forEach(item => {
- if (item.imgId === row.imgId) {
- switch (idx) {
- // 给优惠码和优惠价的列表添加一个0值
- case 1:
- item.codeList.push(0);
- item.discountList.push(0);
- break;
- // 去掉优惠码和优惠价的列表的最后一个
- case 2:
- item.codeList.pop();
- item.discountList.pop();
- break;
- // 找到购物车数据对应商品的,重新计算总价格
- case 3:
- item.nums = e.value;
- item.totalPrice = this.$M_Big(item.goodsPrice)
- .mul(item.nums)
- .toNumber();
- break;
- }
- }
- });
- }
- // 把数组转成对象储存到vuex中
- let cartList = this.arrAttrToOBj(shopCarts, 'imgId');
- this.$M_Dp('ACTI_SHOPCARTS', cartList);
- },
- // 根据数组的某个属性转成对象
- arrAttrToOBj(arr, attr, obj = {}) {
- if (arr.length > 0) {
- arr.forEach(item => {
- obj[item[attr]] = item;
- });
- return obj;
- } else {
- return {};
- }
- },
- // 点击删除弹窗的确定按钮
- uModalConfirm() {
- let shopCarts = this.$S_tabbar_shopCarts;
- let list = [];
- if (shopCarts.length > 0) {
- // 根据id筛选出不是删除的那个商品
- list = shopCarts.filter(item => {
- if (item.imgId !== this.deleteShops.imgId) {
- return item;
- } else {
- // 要把优惠码和优惠价清空
- item.codeList = [];
- item.discountList = [];
- }
- });
- }
- // 把数组转成对象储存到vuex中
- let cartList = this.arrAttrToOBj(list, 'imgId');
- this.$M_Dp('ACTI_SHOPCARTS', cartList);
- this.uModalShow = false;
- },
- }
- };
|