93 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
 | |
| 
 | |
| exports.__esModule = true;
 | |
| exports.default = void 0;
 | |
| 
 | |
| var _babelHelperVueJsxMergeProps = _interopRequireDefault(require("@vue/babel-helper-vue-jsx-merge-props"));
 | |
| 
 | |
| var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
 | |
| 
 | |
| var _utils = require("../../utils");
 | |
| 
 | |
| var _functional = require("../../utils/functional");
 | |
| 
 | |
| var _constant = require("../../utils/constant");
 | |
| 
 | |
| var _image = _interopRequireDefault(require("../../image"));
 | |
| 
 | |
| // Utils
 | |
| // Components
 | |
| var _createNamespace = (0, _utils.createNamespace)('sku-header'),
 | |
|     createComponent = _createNamespace[0],
 | |
|     bem = _createNamespace[1];
 | |
| 
 | |
| function getSkuImgValue(sku, selectedSku) {
 | |
|   var imgValue;
 | |
|   sku.tree.some(function (item) {
 | |
|     var id = selectedSku[item.k_s];
 | |
| 
 | |
|     if (id && item.v) {
 | |
|       var matchedSku = item.v.filter(function (skuValue) {
 | |
|         return skuValue.id === id;
 | |
|       })[0] || {};
 | |
|       var img = matchedSku.previewImgUrl || matchedSku.imgUrl || matchedSku.img_url;
 | |
| 
 | |
|       if (img) {
 | |
|         imgValue = (0, _extends2.default)({}, matchedSku, {
 | |
|           ks: item.k_s,
 | |
|           imgUrl: img
 | |
|         });
 | |
|         return true;
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     return false;
 | |
|   });
 | |
|   return imgValue;
 | |
| }
 | |
| 
 | |
| function SkuHeader(h, props, slots, ctx) {
 | |
|   var _slots$skuHeaderIma;
 | |
| 
 | |
|   var sku = props.sku,
 | |
|       goods = props.goods,
 | |
|       skuEventBus = props.skuEventBus,
 | |
|       selectedSku = props.selectedSku,
 | |
|       _props$showHeaderImag = props.showHeaderImage,
 | |
|       showHeaderImage = _props$showHeaderImag === void 0 ? true : _props$showHeaderImag;
 | |
|   var selectedValue = getSkuImgValue(sku, selectedSku);
 | |
|   var imgUrl = selectedValue ? selectedValue.imgUrl : goods.picture;
 | |
| 
 | |
|   var previewImage = function previewImage() {
 | |
|     skuEventBus.$emit('sku:previewImage', selectedValue);
 | |
|   };
 | |
| 
 | |
|   return h("div", (0, _babelHelperVueJsxMergeProps.default)([{
 | |
|     "class": [bem(), _constant.BORDER_BOTTOM]
 | |
|   }, (0, _functional.inherit)(ctx)]), [showHeaderImage && h(_image.default, {
 | |
|     "attrs": {
 | |
|       "fit": "cover",
 | |
|       "src": imgUrl
 | |
|     },
 | |
|     "class": bem('img-wrap'),
 | |
|     "on": {
 | |
|       "click": previewImage
 | |
|     }
 | |
|   }, [(_slots$skuHeaderIma = slots['sku-header-image-extra']) == null ? void 0 : _slots$skuHeaderIma.call(slots)]), h("div", {
 | |
|     "class": bem('goods-info')
 | |
|   }, [slots.default == null ? void 0 : slots.default()])]);
 | |
| }
 | |
| 
 | |
| SkuHeader.props = {
 | |
|   sku: Object,
 | |
|   goods: Object,
 | |
|   skuEventBus: Object,
 | |
|   selectedSku: Object,
 | |
|   showHeaderImage: Boolean
 | |
| };
 | |
| 
 | |
| var _default = createComponent(SkuHeader);
 | |
| 
 | |
| exports.default = _default; | 
