123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import _extends from "@babel/runtime/helpers/esm/extends";
- import { bem } from './SkuRow';
- import { createNamespace } from '../../utils';
- import { isSkuChoosable } from '../utils/sku-helper';
- import { ChildrenMixin } from '../../mixins/relation';
- import Icon from '../../icon';
- import Image from '../../image';
- var _createNamespace = createNamespace('sku-row-item'),
- createComponent = _createNamespace[0];
- export default createComponent({
- mixins: [ChildrenMixin('vanSkuRows')],
- props: {
- lazyLoad: Boolean,
- skuValue: Object,
- skuKeyStr: String,
- skuEventBus: Object,
- selectedSku: Object,
- largeImageMode: Boolean,
- disableSoldoutSku: Boolean,
- skuList: {
- type: Array,
- default: function _default() {
- return [];
- }
- }
- },
- computed: {
- imgUrl: function imgUrl() {
- var url = this.skuValue.imgUrl || this.skuValue.img_url;
- return this.largeImageMode ? url || 'https://img01.yzcdn.cn/upload_files/2020/06/24/FmKWDg0bN9rMcTp9ne8MXiQWGtLn.png' : url;
- },
- choosable: function choosable() {
- if (!this.disableSoldoutSku) {
- return true;
- }
- return isSkuChoosable(this.skuList, this.selectedSku, {
- key: this.skuKeyStr,
- valueId: this.skuValue.id
- });
- }
- },
- methods: {
- onSelect: function onSelect() {
- if (this.choosable) {
- this.skuEventBus.$emit('sku:select', _extends({}, this.skuValue, {
- skuKeyStr: this.skuKeyStr
- }));
- }
- },
- onPreviewImg: function onPreviewImg(event) {
- event.stopPropagation();
- var skuValue = this.skuValue,
- skuKeyStr = this.skuKeyStr;
- this.skuEventBus.$emit('sku:previewImage', _extends({}, skuValue, {
- ks: skuKeyStr,
- imgUrl: skuValue.imgUrl || skuValue.img_url
- }));
- },
- genImage: function genImage(classPrefix) {
- var h = this.$createElement;
- if (this.imgUrl) {
- return h(Image, {
- "attrs": {
- "fit": "cover",
- "src": this.imgUrl,
- "lazyLoad": this.lazyLoad
- },
- "class": classPrefix + "-img"
- });
- }
- }
- },
- render: function render() {
- var h = arguments[0];
- var choosed = this.skuValue.id === this.selectedSku[this.skuKeyStr];
- var classPrefix = this.largeImageMode ? bem('image-item') : bem('item');
- return h("span", {
- "class": [classPrefix, choosed ? classPrefix + "--active" : '', !this.choosable ? classPrefix + "--disabled" : ''],
- "on": {
- "click": this.onSelect
- }
- }, [this.genImage(classPrefix), h("div", {
- "class": classPrefix + "-name"
- }, [this.largeImageMode ? h("span", {
- "class": {
- 'van-multi-ellipsis--l2': this.largeImageMode
- }
- }, [this.skuValue.name]) : this.skuValue.name]), this.largeImageMode && h(Icon, {
- "attrs": {
- "name": "enlarge"
- },
- "class": classPrefix + "-img-icon",
- "on": {
- "click": this.onPreviewImg
- }
- })]);
- }
- });
|