From 347989bcc50e2046d1d92f4e21f290aed3a735d2 Mon Sep 17 00:00:00 2001 From: wny Date: Thu, 22 Mar 2018 15:59:52 +0800 Subject: [PATCH] =?UTF-8?q?[bugfix]=20=E4=BF=AE=E5=A4=8Dsku=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E9=80=89=E4=B8=AD=E9=80=BB=E8=BE=91=E4=B8=8Esku?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E9=80=89=E4=B8=AD=E7=9A=84=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E9=80=BB=E8=BE=91=20(#752)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sku/Sku.vue | 22 +++++++++++++------ packages/sku/components/SkuRowItem.vue | 16 ++++---------- packages/sku/constants.js | 5 ++++- packages/sku/utils/skuHelper.js | 30 ++++++++++++++++++++++---- 4 files changed, 49 insertions(+), 24 deletions(-) diff --git a/packages/sku/Sku.vue b/packages/sku/Sku.vue index 2794bd6c2..0da5245e6 100644 --- a/packages/sku/Sku.vue +++ b/packages/sku/Sku.vue @@ -113,10 +113,11 @@ import SkuMessages from './components/SkuMessages'; import SkuActions from './components/SkuActions'; import { isAllSelected, + isSkuChoosable, getSkuComb, getSelectedSkuValues } from './utils/skuHelper'; -import { LIMIT_TYPE } from './constants'; +import { LIMIT_TYPE, UNSELECTED_SKU_VALUE_ID } from './constants'; import create from '../utils/create'; const { QUOTA_LIMIT } = LIMIT_TYPE; @@ -292,12 +293,19 @@ export default create({ methods: { resetSelectedSku(skuTree) { this.selectedSku = {}; + // 重置selectedSku skuTree.forEach(item => { - // 只有一个sku规格值时默认选中 - if (item.v.length === 1) { - this.selectedSku[item.k_s] = item.v[0].id; - } else { - this.selectedSku[item.k_s] = this.initialSku[item.k_s] || ''; + this.selectedSku[item.k_s] = this.initialSku[item.k_s] || UNSELECTED_SKU_VALUE_ID; + }); + // 只有一个sku规格值时默认选中 + skuTree.forEach(item => { + const key = item.k_s; + const valueId = item.v[0].id; + if ( + item.v.length === 1 && + isSkuChoosable(this.sku.list, this.selectedSku, { key, valueId }) + ) { + this.selectedSku[key] = valueId; } }); }, @@ -338,7 +346,7 @@ export default create({ // 点击已选中的sku时则取消选中 this.selectedSku = this.selectedSku[skuValue.skuKeyStr] === skuValue.id - ? { ...this.selectedSku, [skuValue.skuKeyStr]: '' } + ? { ...this.selectedSku, [skuValue.skuKeyStr]: UNSELECTED_SKU_VALUE_ID } : { ...this.selectedSku, [skuValue.skuKeyStr]: skuValue.id }; this.$emit('sku-selected', { diff --git a/packages/sku/components/SkuRowItem.vue b/packages/sku/components/SkuRowItem.vue index 96f4e4cd5..ec7a29dde 100644 --- a/packages/sku/components/SkuRowItem.vue +++ b/packages/sku/components/SkuRowItem.vue @@ -13,6 +13,7 @@