修正项目
This commit is contained in:
		
							
								
								
									
										132
									
								
								xlcs-user/components/AddToCart/AddToCart.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										132
									
								
								xlcs-user/components/AddToCart/AddToCart.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,132 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <view>
 | 
			
		||||
    <!-- 如果商品没有加入购物车 -->
 | 
			
		||||
    <block v-if="getCheckProductExists">
 | 
			
		||||
      <u-button size="mini" type="warning" @click="addShopCart">加入购物车</u-button>
 | 
			
		||||
    </block>
 | 
			
		||||
    <block v-else>
 | 
			
		||||
      <u-number-box
 | 
			
		||||
          ref="uNumber"
 | 
			
		||||
          v-model="skuNumValue"
 | 
			
		||||
          :disabled-input="true"
 | 
			
		||||
          :input-height="40"
 | 
			
		||||
          :input-width="60"
 | 
			
		||||
          :max="getMax"
 | 
			
		||||
          :min="0"
 | 
			
		||||
          :size="20"
 | 
			
		||||
          @minus="changeSkuNumMinus"
 | 
			
		||||
          @plus="changeSkuNumPlus"
 | 
			
		||||
      ></u-number-box>
 | 
			
		||||
    </block>
 | 
			
		||||
 | 
			
		||||
    <u-modal ref="confirmModal" v-model="showConfirmModal" :async-close="true" :show-cancel-button="true"
 | 
			
		||||
             @cancel="modalCancel" @confirm="modalConfirm">
 | 
			
		||||
      <view class="u-flex u-row-center u-m-20">确认删除该商品?</view>
 | 
			
		||||
    </u-modal>
 | 
			
		||||
  </view>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import {mapGetters, mapActions} from 'vuex';
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'AddToCart',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      id: 0,
 | 
			
		||||
      isCart: false,
 | 
			
		||||
      showConfirmModal: false
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  props: {
 | 
			
		||||
    shopDetail: {
 | 
			
		||||
      type: Object,
 | 
			
		||||
      default: () => {
 | 
			
		||||
        return {};
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // 在购物车页面的时候,使用带活动的购物车将传递的不再是商品的id
 | 
			
		||||
    // 商品详情信息中没有id,而是skuId
 | 
			
		||||
    skuId: {
 | 
			
		||||
      type: Number,
 | 
			
		||||
      default: null
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    ...mapGetters('cartModule', ['checkProductExists', 'getProductSkuNum']),
 | 
			
		||||
    // 检查是否存在商品于购物车
 | 
			
		||||
    getCheckProductExists() {
 | 
			
		||||
      return !this.checkProductExists(this.id);
 | 
			
		||||
    },
 | 
			
		||||
    // 商品加入购物车的数量
 | 
			
		||||
    skuNumValue: {
 | 
			
		||||
      get() {
 | 
			
		||||
        return this.getProductSkuNum(this.id);
 | 
			
		||||
      },
 | 
			
		||||
      set(value) {
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // 最大可加入购物车的数量
 | 
			
		||||
    getMax() {
 | 
			
		||||
      let perLimit = this.shopDetail.perLimit;
 | 
			
		||||
      // 秒杀商品与普通商品购买上限判断字段不同
 | 
			
		||||
      if (this.shopDetail.skuType === 1) {
 | 
			
		||||
        perLimit = this.shopDetail.seckillSkuVo && this.shopDetail.seckillSkuVo.seckillLimit
 | 
			
		||||
      }
 | 
			
		||||
      return perLimit;
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    ...mapActions('cartModule', ['addShopAction', 'changeSkuNumAction']),
 | 
			
		||||
    // 添加到购物车
 | 
			
		||||
    addShopCart() {
 | 
			
		||||
      if (this.skuId) {
 | 
			
		||||
        this.shopDetail.id = this.skuId;
 | 
			
		||||
      }
 | 
			
		||||
      this.addShopAction(this.shopDetail);
 | 
			
		||||
    },
 | 
			
		||||
    // 购物车数量递减
 | 
			
		||||
    changeSkuNumMinus(e) {
 | 
			
		||||
      // 如果是购物车中进行递减操作,并且购物车数量为0,那么需要弹出确认框
 | 
			
		||||
      if (e.value < 1 && this.isCart) {
 | 
			
		||||
        this.showConfirmModal = true;
 | 
			
		||||
      } else {
 | 
			
		||||
        this.changeSkuNumAction({skuId: this.id, value: -1, currentBuyNum: e.value, isCart: this.isCart});
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
    // 购物车数量递增
 | 
			
		||||
    changeSkuNumPlus(e) {
 | 
			
		||||
      this.changeSkuNumAction({skuId: this.id, value: 1, currentBuyNum: e.value, isCart: this.isCart});
 | 
			
		||||
    },
 | 
			
		||||
    // 确认删除商品模态框
 | 
			
		||||
    modalConfirm() {
 | 
			
		||||
      this.showConfirmModal = false;
 | 
			
		||||
      this.changeSkuNumAction({skuId: this.id, value: -1, currentBuyNum: 0, isCart: this.isCart});
 | 
			
		||||
    },
 | 
			
		||||
    // 取消删除商品模态框,只需要将商品购买数修改回初始值
 | 
			
		||||
    modalCancel() {
 | 
			
		||||
      this.showConfirmModal = false;
 | 
			
		||||
      // 重新设置u-number-box的初始值
 | 
			
		||||
      this.$refs.uNumber.$data.inputVal = 1;
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  watch: {
 | 
			
		||||
    // skuId是在购物车频道使用,如果是商品列表,是id
 | 
			
		||||
    skuId: {
 | 
			
		||||
      handler(newVal, oldVal) {
 | 
			
		||||
        if (newVal) {
 | 
			
		||||
          this.id = newVal;
 | 
			
		||||
          this.isCart = true;
 | 
			
		||||
        } else {
 | 
			
		||||
          this.id = this.shopDetail.id;
 | 
			
		||||
          this.isCart = false;
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      immediate: true
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss"></style>
 | 
			
		||||
		Reference in New Issue
	
	Block a user