import { bem } from './SkuRow'; import { createNamespace } from '../../utils'; import { isSkuChoosable } from '../utils/sku-helper'; import { ChildrenMixin } from '../../mixins/relation'; import Image from '../../image'; const [createComponent] = createNamespace('sku-row-item'); export default createComponent({ mixins: [ChildrenMixin('vanSkuRows')], props: { lazyLoad: Boolean, skuValue: Object, skuKeyStr: String, skuEventBus: Object, selectedSku: Object, largeImageMode: Boolean, skuList: { type: Array, default: () => [], }, }, computed: { imgUrl() { const url = this.skuValue.imgUrl || this.skuValue.img_url; return this.largeImageMode ? url || 'https://img.yzcdn.cn/upload_files/2020/06/24/FmKWDg0bN9rMcTp9ne8MXiQWGtLn.png' : url; }, choosable() { return isSkuChoosable(this.skuList, this.selectedSku, { key: this.skuKeyStr, valueId: this.skuValue.id, }); }, }, methods: { onSelect() { if (this.choosable) { this.skuEventBus.$emit('sku:select', { ...this.skuValue, skuKeyStr: this.skuKeyStr, }); } }, onPreviewImg(event) { event.stopPropagation(); const { skuValue, skuKeyStr } = this; this.skuEventBus.$emit('sku:previewImage', { ...skuValue, ks: skuKeyStr, imgUrl: skuValue.imgUrl || skuValue.img_url, }); }, genImage(classPrefix) { if (this.imgUrl) { return ( ); } }, }, render() { const choosed = this.skuValue.id === this.selectedSku[this.skuKeyStr]; const classPrefix = this.largeImageMode ? bem('image-item') : bem('item'); return ( {this.genImage(classPrefix)}
{this.largeImageMode ? ( {this.skuValue.name} ) : ( this.skuValue.name )}
{this.largeImageMode && ( )}
); }, });