SkuRowItem.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { use } from '../../utils';
  2. import { isSkuChoosable } from '../utils/skuHelper';
  3. const [sfc] = use('sku-row-item');
  4. export default sfc({
  5. props: {
  6. skuList: Array,
  7. skuValue: Object,
  8. skuKeyStr: String,
  9. skuEventBus: Object,
  10. selectedSku: Object
  11. },
  12. computed: {
  13. choosable() {
  14. return isSkuChoosable(this.skuList, this.selectedSku, {
  15. key: this.skuKeyStr,
  16. valueId: this.skuValue.id
  17. });
  18. }
  19. },
  20. methods: {
  21. onSelect() {
  22. if (this.choosable) {
  23. this.skuEventBus.$emit('sku:select', {
  24. ...this.skuValue,
  25. skuKeyStr: this.skuKeyStr
  26. });
  27. }
  28. }
  29. },
  30. render(h) {
  31. const choosed = this.skuValue.id === this.selectedSku[this.skuKeyStr];
  32. return (
  33. <span
  34. class={[
  35. 'van-sku-row__item',
  36. {
  37. 'van-sku-row__item--active': choosed,
  38. 'van-sku-row__item--disabled': !this.choosable
  39. }
  40. ]}
  41. onClick={this.onSelect}
  42. >
  43. {this.skuValue.name}
  44. </span>
  45. );
  46. }
  47. });