mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-05-22 06:31:45 +08:00
feat(Sku): add resetSelectedSku method (#5318)
This commit is contained in:
parent
80834d7400
commit
228b35af9b
@ -161,6 +161,7 @@ Use [ref](https://vuejs.org/v2/api/#ref) to get Sku instance and call instance m
|
||||
| Name | Description | Attribute | Return value |
|
||||
|------|------|------|------|
|
||||
| getSkuData | Get current skuData | - | skuData |
|
||||
| resetSelectedSku | Reset selected sku to initial sku | - | - | 2.3.0 |
|
||||
|
||||
### Slots
|
||||
|
||||
|
@ -162,9 +162,10 @@ export default {
|
||||
|
||||
通过 [ref](https://cn.vuejs.org/v2/api/#ref) 可以获取到 Sku 实例并调用实例方法
|
||||
|
||||
| 方法名 | 说明 | 参数 | 返回值 |
|
||||
|------|------|------|------|
|
||||
| getSkuData | 获取当前 skuData | - | skuData |
|
||||
| 方法名 | 说明 | 参数 | 返回值 | 版本 |
|
||||
|------|------|------|------|------|
|
||||
| getSkuData | 获取当前 skuData | - | skuData | - |
|
||||
| resetSelectedSku | 重置选中规格到初始状态 | - | - | 2.3.0 |
|
||||
|
||||
### Slots
|
||||
|
||||
|
@ -106,7 +106,7 @@ export default createComponent({
|
||||
}
|
||||
|
||||
if (this.resetSelectedSkuOnHide) {
|
||||
this.resetSelectedSku(this.skuTree);
|
||||
this.resetSelectedSku();
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -119,7 +119,7 @@ export default createComponent({
|
||||
|
||||
initialSku() {
|
||||
this.resetStepper();
|
||||
this.resetSelectedSku(this.skuTree);
|
||||
this.resetSelectedSku();
|
||||
},
|
||||
},
|
||||
|
||||
@ -267,7 +267,7 @@ export default createComponent({
|
||||
skuEventBus.$on('sku:buy', this.onBuy);
|
||||
|
||||
this.resetStepper();
|
||||
this.resetSelectedSku(this.skuTree);
|
||||
this.resetSelectedSku();
|
||||
|
||||
// 组件初始化后的钩子,抛出skuEventBus
|
||||
this.$emit('after-sku-create', skuEventBus);
|
||||
@ -289,16 +289,17 @@ export default createComponent({
|
||||
}
|
||||
},
|
||||
|
||||
resetSelectedSku(skuTree) {
|
||||
// @exposed-api
|
||||
resetSelectedSku() {
|
||||
this.selectedSku = {};
|
||||
|
||||
// 重置 selectedSku
|
||||
skuTree.forEach(item => {
|
||||
this.skuTree.forEach(item => {
|
||||
this.selectedSku[item.k_s] = this.initialSku[item.k_s] || UNSELECTED_SKU_VALUE_ID;
|
||||
});
|
||||
|
||||
// 只有一个 sku 规格值时默认选中
|
||||
skuTree.forEach(item => {
|
||||
this.skuTree.forEach(item => {
|
||||
const key = item.k_s;
|
||||
const valueId = item.v[0].id;
|
||||
if (
|
||||
@ -451,6 +452,7 @@ export default createComponent({
|
||||
}
|
||||
},
|
||||
|
||||
// @exposed-api
|
||||
getSkuData() {
|
||||
return {
|
||||
goodsId: this.goodsId,
|
||||
|
@ -1,4 +1,4 @@
|
||||
export default {
|
||||
export const skuData = {
|
||||
goods_id: '946755',
|
||||
quota: 15,
|
||||
quota_used: 0,
|
||||
@ -181,3 +181,9 @@ export default {
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
export const initialSku = {
|
||||
s1: '30349',
|
||||
s2: '1193',
|
||||
selectedNum: 3
|
||||
};
|
@ -150,7 +150,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import skuData from './data';
|
||||
import { skuData, initialSku } from './data';
|
||||
import { LIMIT_TYPE } from '../constants';
|
||||
|
||||
export default {
|
||||
@ -173,17 +173,14 @@ export default {
|
||||
|
||||
data() {
|
||||
this.skuData = skuData;
|
||||
this.initialSku = initialSku;
|
||||
|
||||
return {
|
||||
showBase: false,
|
||||
showCustom: false,
|
||||
showStepper: false,
|
||||
showSoldout: false,
|
||||
closeOnClickOverlay: true,
|
||||
initialSku: {
|
||||
s1: '30349',
|
||||
s2: '1193',
|
||||
selectedNum: 3
|
||||
},
|
||||
customSkuValidator: () => '请选择xxx',
|
||||
customStepperConfig: {
|
||||
quotaText: '单次限购100件',
|
||||
|
30
src/sku/test/index.spec.js
Normal file
30
src/sku/test/index.spec.js
Normal file
@ -0,0 +1,30 @@
|
||||
import { mount } from '../../../test';
|
||||
import Sku from '..';
|
||||
import { skuData, initialSku } from '../demo/data';
|
||||
|
||||
test('resetSelectedSku method', () => {
|
||||
skuData.sku.messages = [];
|
||||
|
||||
const wrapper = mount(Sku, {
|
||||
propsData: {
|
||||
value: true,
|
||||
initialSku,
|
||||
sku: skuData.sku,
|
||||
quota: skuData.quota,
|
||||
goods: skuData.goods_info,
|
||||
goodsId: skuData.goods_id,
|
||||
quotaUsed: skuData.quota_used,
|
||||
hideStock: skuData.sku.hide_stock,
|
||||
startSaleNum: skuData.start_sale_num
|
||||
}
|
||||
});
|
||||
|
||||
wrapper.find('.van-button--danger').trigger('click');
|
||||
expect(wrapper.emitted('buy-clicked').length).toEqual(1);
|
||||
|
||||
wrapper.setProps({ initialSku: {} });
|
||||
wrapper.vm.resetSelectedSku();
|
||||
|
||||
wrapper.find('.van-button--danger').trigger('click');
|
||||
expect(wrapper.emitted('buy-clicked').length).toEqual(1);
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user