mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
82 lines
2.0 KiB
JavaScript
82 lines
2.0 KiB
JavaScript
/*
|
|
normalize sku tree
|
|
|
|
[
|
|
{
|
|
count: 2,
|
|
k: "品种", // 规格名称 skuKeyName
|
|
k_id: "1200", // skuKeyId
|
|
k_s: "s1" // skuKeyStr
|
|
v: [ // skuValues
|
|
{ // skuValue
|
|
id: "1201", // skuValueId
|
|
name: "萌" // 具体的规格值 skuValueName
|
|
}, {
|
|
id: "973",
|
|
name: "帅"
|
|
}
|
|
]
|
|
},
|
|
...
|
|
]
|
|
|
|
|
v
|
|
{
|
|
s1: [{
|
|
id: "1201",
|
|
name: "萌"
|
|
}, {
|
|
id: "973",
|
|
name: "帅"
|
|
}],
|
|
...
|
|
}
|
|
*/
|
|
export const normalizeSkuTree = (skuTree) => {
|
|
const normalizedTree = {};
|
|
skuTree.forEach(treeItem => {
|
|
normalizedTree[treeItem.k_s] = treeItem.v;
|
|
});
|
|
return normalizedTree;
|
|
};
|
|
|
|
// 判断是否所有的sku都已经选中
|
|
export const isAllSelected = (skuTree, selectedSku) => {
|
|
// 筛选selectedSku对象中key值不为空的值
|
|
const selected = Object.keys(selectedSku).filter(skuKeyStr => selectedSku[skuKeyStr] !== '');
|
|
return skuTree.length === selected.length;
|
|
};
|
|
|
|
// 根据已选择的sku获取skuComb
|
|
export const getSkuComb = (skuList, selectedSku) => {
|
|
const skuComb = skuList.filter(skuComb => {
|
|
return Object.keys(selectedSku).every(skuKeyStr => {
|
|
return String(skuComb[skuKeyStr]) === String(selectedSku[skuKeyStr]); // eslint-disable-line
|
|
});
|
|
})[0];
|
|
return skuComb;
|
|
};
|
|
|
|
// 获取已选择的sku名称
|
|
export const getSelectedSkuValues = (skuTree, selectedSku) => {
|
|
const normalizedTree = normalizeSkuTree(skuTree);
|
|
return Object.keys(selectedSku).reduce((selectedValues, skuKeyStr) => {
|
|
const skuValues = normalizedTree[skuKeyStr];
|
|
const skuValueId = selectedSku[skuKeyStr];
|
|
|
|
if (skuValueId) {
|
|
const skuValue = skuValues.filter(skuValue => skuValue.id === skuValueId)[0];
|
|
skuValue && selectedValues.push(skuValue);
|
|
}
|
|
return selectedValues;
|
|
}, []);
|
|
};
|
|
|
|
const SkuHelper = {
|
|
normalizeSkuTree,
|
|
isAllSelected,
|
|
getSkuComb,
|
|
getSelectedSkuValues
|
|
};
|
|
export default SkuHelper;
|