refactor(Sku): header image (#6614)

This commit is contained in:
neverland 2020-06-26 21:04:31 +08:00 committed by GitHub
parent 01e9cde2b8
commit c93319a4c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 30 additions and 35 deletions

View File

@ -74,6 +74,22 @@ export default createComponent({
type: Boolean, type: Boolean,
default: true, default: true,
}, },
customStepperConfig: {
type: Object,
default: () => ({}),
},
showHeaderImage: {
type: Boolean,
default: true,
},
previewOnClickImage: {
type: Boolean,
default: true,
},
safeAreaInsetBottom: {
type: Boolean,
default: true,
},
bodyOffsetTop: { bodyOffsetTop: {
type: Number, type: Number,
default: 200, default: 200,
@ -87,22 +103,6 @@ export default createComponent({
uploadMaxSize: 5, uploadMaxSize: 5,
}), }),
}, },
customStepperConfig: {
type: Object,
default: () => ({}),
},
previewOnClickImage: {
type: Boolean,
default: true,
},
safeAreaInsetBottom: {
type: Boolean,
default: true,
},
showHeaderImage: {
type: Boolean,
default: true,
},
}, },
data() { data() {

View File

@ -3,6 +3,9 @@ import { createNamespace } from '../../utils';
import { inherit } from '../../utils/functional'; import { inherit } from '../../utils/functional';
import { BORDER_BOTTOM } from '../../utils/constant'; import { BORDER_BOTTOM } from '../../utils/constant';
// Components
import Image from '../../image';
// Types // Types
import Vue, { CreateElement, RenderContext } from 'vue/types'; import Vue, { CreateElement, RenderContext } from 'vue/types';
import { DefaultSlots, ScopedSlot } from '../../utils/types'; import { DefaultSlots, ScopedSlot } from '../../utils/types';
@ -58,19 +61,23 @@ function SkuHeader(
showHeaderImage = true, showHeaderImage = true,
} = props; } = props;
const goodsImg = getSkuImg(sku, selectedSku) || goods.picture; const imgUrl = getSkuImg(sku, selectedSku) || goods.picture;
const previewImage = () => { const previewImage = () => {
skuEventBus.$emit('sku:previewImage', goodsImg); skuEventBus.$emit('sku:previewImage', imgUrl);
}; };
return ( return (
<div class={[bem(), BORDER_BOTTOM]} {...inherit(ctx)}> <div class={[bem(), BORDER_BOTTOM]} {...inherit(ctx)}>
{showHeaderImage && ( {showHeaderImage && (
<div class={bem('img-wrap')} onClick={previewImage}> <Image
<img src={goodsImg} /> fit="cover"
src={imgUrl}
class={bem('img-wrap')}
onClick={previewImage}
>
{slots['sku-header-image-extra']?.()} {slots['sku-header-image-extra']?.()}
</div> </Image>
)} )}
<div class={bem('goods-info')}>{slots.default?.()}</div> <div class={bem('goods-info')}>{slots.default?.()}</div>
</div> </div>

View File

@ -29,24 +29,12 @@
margin: 0 @padding-md; margin: 0 @padding-md;
&__img-wrap { &__img-wrap {
position: relative;
width: 96px; width: 96px;
height: 96px; height: 96px;
margin: @padding-sm @padding-sm @padding-sm 0; margin: @padding-sm @padding-sm @padding-sm 0;
background: @background-color; overflow: hidden;
img {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
max-width: 100%;
max-height: 100%;
margin: auto;
border-radius: @border-radius-md; border-radius: @border-radius-md;
} }
}
&__goods-info { &__goods-info {
display: flex; display: flex;