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 |
|
| Name | Description | Attribute | Return value |
|
||||||
|------|------|------|------|
|
|------|------|------|------|
|
||||||
| getSkuData | Get current skuData | - | skuData |
|
| getSkuData | Get current skuData | - | skuData |
|
||||||
|
| resetSelectedSku | Reset selected sku to initial sku | - | - | 2.3.0 |
|
||||||
|
|
||||||
### Slots
|
### Slots
|
||||||
|
|
||||||
|
@ -162,9 +162,10 @@ export default {
|
|||||||
|
|
||||||
通过 [ref](https://cn.vuejs.org/v2/api/#ref) 可以获取到 Sku 实例并调用实例方法
|
通过 [ref](https://cn.vuejs.org/v2/api/#ref) 可以获取到 Sku 实例并调用实例方法
|
||||||
|
|
||||||
| 方法名 | 说明 | 参数 | 返回值 |
|
| 方法名 | 说明 | 参数 | 返回值 | 版本 |
|
||||||
|------|------|------|------|
|
|------|------|------|------|------|
|
||||||
| getSkuData | 获取当前 skuData | - | skuData |
|
| getSkuData | 获取当前 skuData | - | skuData | - |
|
||||||
|
| resetSelectedSku | 重置选中规格到初始状态 | - | - | 2.3.0 |
|
||||||
|
|
||||||
### Slots
|
### Slots
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ export default createComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (this.resetSelectedSkuOnHide) {
|
if (this.resetSelectedSkuOnHide) {
|
||||||
this.resetSelectedSku(this.skuTree);
|
this.resetSelectedSku();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -119,7 +119,7 @@ export default createComponent({
|
|||||||
|
|
||||||
initialSku() {
|
initialSku() {
|
||||||
this.resetStepper();
|
this.resetStepper();
|
||||||
this.resetSelectedSku(this.skuTree);
|
this.resetSelectedSku();
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -267,7 +267,7 @@ export default createComponent({
|
|||||||
skuEventBus.$on('sku:buy', this.onBuy);
|
skuEventBus.$on('sku:buy', this.onBuy);
|
||||||
|
|
||||||
this.resetStepper();
|
this.resetStepper();
|
||||||
this.resetSelectedSku(this.skuTree);
|
this.resetSelectedSku();
|
||||||
|
|
||||||
// 组件初始化后的钩子,抛出skuEventBus
|
// 组件初始化后的钩子,抛出skuEventBus
|
||||||
this.$emit('after-sku-create', skuEventBus);
|
this.$emit('after-sku-create', skuEventBus);
|
||||||
@ -289,16 +289,17 @@ export default createComponent({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
resetSelectedSku(skuTree) {
|
// @exposed-api
|
||||||
|
resetSelectedSku() {
|
||||||
this.selectedSku = {};
|
this.selectedSku = {};
|
||||||
|
|
||||||
// 重置 selectedSku
|
// 重置 selectedSku
|
||||||
skuTree.forEach(item => {
|
this.skuTree.forEach(item => {
|
||||||
this.selectedSku[item.k_s] = this.initialSku[item.k_s] || UNSELECTED_SKU_VALUE_ID;
|
this.selectedSku[item.k_s] = this.initialSku[item.k_s] || UNSELECTED_SKU_VALUE_ID;
|
||||||
});
|
});
|
||||||
|
|
||||||
// 只有一个 sku 规格值时默认选中
|
// 只有一个 sku 规格值时默认选中
|
||||||
skuTree.forEach(item => {
|
this.skuTree.forEach(item => {
|
||||||
const key = item.k_s;
|
const key = item.k_s;
|
||||||
const valueId = item.v[0].id;
|
const valueId = item.v[0].id;
|
||||||
if (
|
if (
|
||||||
@ -451,6 +452,7 @@ export default createComponent({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// @exposed-api
|
||||||
getSkuData() {
|
getSkuData() {
|
||||||
return {
|
return {
|
||||||
goodsId: this.goodsId,
|
goodsId: this.goodsId,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
export default {
|
export const skuData = {
|
||||||
goods_id: '946755',
|
goods_id: '946755',
|
||||||
quota: 15,
|
quota: 15,
|
||||||
quota_used: 0,
|
quota_used: 0,
|
||||||
@ -181,3 +181,9 @@ export default {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const initialSku = {
|
||||||
|
s1: '30349',
|
||||||
|
s2: '1193',
|
||||||
|
selectedNum: 3
|
||||||
|
};
|
@ -150,7 +150,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import skuData from './data';
|
import { skuData, initialSku } from './data';
|
||||||
import { LIMIT_TYPE } from '../constants';
|
import { LIMIT_TYPE } from '../constants';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@ -173,17 +173,14 @@ export default {
|
|||||||
|
|
||||||
data() {
|
data() {
|
||||||
this.skuData = skuData;
|
this.skuData = skuData;
|
||||||
|
this.initialSku = initialSku;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
showBase: false,
|
showBase: false,
|
||||||
showCustom: false,
|
showCustom: false,
|
||||||
showStepper: false,
|
showStepper: false,
|
||||||
showSoldout: false,
|
showSoldout: false,
|
||||||
closeOnClickOverlay: true,
|
closeOnClickOverlay: true,
|
||||||
initialSku: {
|
|
||||||
s1: '30349',
|
|
||||||
s2: '1193',
|
|
||||||
selectedNum: 3
|
|
||||||
},
|
|
||||||
customSkuValidator: () => '请选择xxx',
|
customSkuValidator: () => '请选择xxx',
|
||||||
customStepperConfig: {
|
customStepperConfig: {
|
||||||
quotaText: '单次限购100件',
|
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