vant/docs/demos/views/sku.vue

105 lines
2.8 KiB
Vue

<template>
<demo-section>
<demo-block :title="$t('basicUsage')">
<div class="sku-container">
<van-sku
v-model="showBase"
:sku="$t('sku').sku"
:goods="$t('sku').goods_info"
:goods-id="$t('sku').goods_id"
:hide-stock="$t('sku').sku.hide_stock"
:quota="$t('sku').quota"
:quota-used="$t('sku').quota_used"
:reset-stepper-on-hide="true"
:reset-selected-sku-on-hide="true"
:disable-stepper-input="true"
@buy-clicked="handleBuyClicked"
@add-cart="handleAddCartClicked"
/>
<van-button type="primary" @click="showBase = true" block>{{ $t('basicUsage') }}</van-button>
</div>
</demo-block>
<demo-block :title="$t('advancedUsage')">
<div class="sku-container">
<van-sku
v-model="showCustomAction"
:stepper-title="$t('stepperTitle')"
:sku="$t('sku').sku"
:goods="$t('sku').goods_info"
:goods-id="$t('sku').goods_id"
:hide-stock="$t('sku').sku.hide_stock"
:show-add-cart-btn="true"
:quota="$t('sku').quota"
:quota-used="$t('sku').quota_used"
:reset-stepper-on-hide="true"
:initial-sku="initialSku"
@buy-clicked="handleBuyClicked"
@add-cart="handleAddCartClicked"
>
<template slot="sku-messages" />
<template slot="sku-actions" slot-scope="props">
<div class="van-sku-actions">
<van-button bottom-action @click="handlePointClicked">{{ $t('button1') }}</van-button>
<van-button type="primary" bottom-action @click="props.skuEventBus.$emit('sku:buy')">{{ $t('button2') }}</van-button>
</div>
</template>
</van-sku>
<van-button type="primary" @click="showCustomAction = true" block>{{ $t('advancedUsage') }}</van-button>
</div>
</demo-block>
</demo-section>
</template>
<script>
import data from '../mock/sku';
export default {
i18n: {
'zh-CN': {
sku: data['zh-CN'],
stepperTitle: '我要买',
button1: '积分兑换',
button2: '买买买'
},
'en-US': {
sku: data['en-US'],
stepperTitle: 'Stepper title',
button1: 'Button',
button2: 'Button'
}
},
data() {
return {
showBase: false,
showCustomAction: false,
initialSku: {
s1: '30349',
s2: '1193'
}
};
},
methods: {
handleBuyClicked(data) {
Toast(JSON.stringify(data));
},
handleAddCartClicked(data) {
Toast(JSON.stringify(data));
},
handlePointClicked() {
Toast('积分兑换');
}
}
};
</script>
<style lang="postcss">
.demo-sku {
.sku-container {
padding: 0 15px;
}
}
</style>