item.js 2.14 KB
const tagTypeList = ['price_gift', 'gift', 'ticket', 'advance'];

Component({
  properties: {
    item: {
      type: Object,
      value: {},
      observer: '_itemChange'
    },
    index: {
      type: Number,
      value: 0
    },
    isEditing: {
      type: Boolean,
      value: false,
      observer: '_editChange'
    },
    isInvalid: {
      type: Boolean,
      value: false
    }
  },
  methods: {
    _itemChange(item) {
      if (item) {
        this.selected = item.selected;
        item.mark_price = item.sales_price;

        switch (item.goods_type) {
          case 'price_gift':
            item.sales_price = +item.last_price;
            if (item.storage_number > 1) {
              item.storage_number = 1;
            }
            break;
          case 'gift':
            item.sales_price = 0;
            if (item.storage_number > 1) {
              item.storage_number = 1;
            }
            break;
          default:
            if (item.last_vip_price < item.sales_price) {
              item.sales_price = item.last_vip_price;
            }
            break;
        }

        if (item.mark_price <= item.sales_price) {
          delete item.mark_price;
        }

        if (tagTypeList.indexOf(item.goods_type) < 0 && item.buy_number > item.storage_number) {
          item.goods_type = 'lowStorage';
        }

        item.isVipPrice = item.vip_discount_money > 0;

        this.setData({item});
      }
    },
    _editChange(isEdit) {
      let item = {...this.data.item};

      if (isEdit) {
        if (item.selected === 'Y') {
          this.triggerEvent('removeGoodsListInEdit', item);
        }
      } else if (this.selected) {
        item.selected = this.selected;

        this.setData({item: item});
      }
    },
    chooseItemAction() {
      let item = {...this.data.item};

      if (this.data.isEditing) {
        item.selected = item.selected === 'Y' ? 'N' : 'Y';

        this.triggerEvent('removeGoodsListInEdit', item);
        this.setData({item});
      } else {
        this.triggerEvent('chooseGoodsItem', item);
      }
    },
    editGoodsNum(e) {
      this.triggerEvent('editGoodsNum', e.detail);
    }
  }
});