first
This commit is contained in:
148
node_modules/vant/es/sku/utils/sku-helper.js
generated
vendored
Normal file
148
node_modules/vant/es/sku/utils/sku-helper.js
generated
vendored
Normal file
@ -0,0 +1,148 @@
|
||||
import _extends from "@babel/runtime/helpers/esm/extends";
|
||||
import { UNSELECTED_SKU_VALUE_ID } from '../constants';
|
||||
/*
|
||||
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 var normalizeSkuTree = function normalizeSkuTree(skuTree) {
|
||||
var normalizedTree = {};
|
||||
skuTree.forEach(function (treeItem) {
|
||||
normalizedTree[treeItem.k_s] = treeItem.v;
|
||||
});
|
||||
return normalizedTree;
|
||||
};
|
||||
export var normalizePropList = function normalizePropList(propList) {
|
||||
var normalizedProp = {};
|
||||
propList.forEach(function (item) {
|
||||
var itemObj = {};
|
||||
item.v.forEach(function (it) {
|
||||
itemObj[it.id] = it;
|
||||
});
|
||||
normalizedProp[item.k_id] = itemObj;
|
||||
});
|
||||
return normalizedProp;
|
||||
}; // 判断是否所有的sku都已经选中
|
||||
|
||||
export var isAllSelected = function isAllSelected(skuTree, selectedSku) {
|
||||
// 筛选selectedSku对象中key值不为空的值
|
||||
var selected = Object.keys(selectedSku).filter(function (skuKeyStr) {
|
||||
return selectedSku[skuKeyStr] !== UNSELECTED_SKU_VALUE_ID;
|
||||
});
|
||||
return skuTree.length === selected.length;
|
||||
}; // 根据已选择的 sku 获取 skuComb
|
||||
|
||||
export var getSkuComb = function getSkuComb(skuList, selectedSku) {
|
||||
var skuComb = skuList.filter(function (item) {
|
||||
return Object.keys(selectedSku).every(function (skuKeyStr) {
|
||||
return String(item[skuKeyStr]) === String(selectedSku[skuKeyStr]);
|
||||
});
|
||||
});
|
||||
return skuComb[0];
|
||||
}; // 获取已选择的sku名称
|
||||
|
||||
export var getSelectedSkuValues = function getSelectedSkuValues(skuTree, selectedSku) {
|
||||
var normalizedTree = normalizeSkuTree(skuTree);
|
||||
return Object.keys(selectedSku).reduce(function (selectedValues, skuKeyStr) {
|
||||
var skuValues = normalizedTree[skuKeyStr] || [];
|
||||
var skuValueId = selectedSku[skuKeyStr];
|
||||
|
||||
if (skuValueId !== UNSELECTED_SKU_VALUE_ID && skuValues.length > 0) {
|
||||
var skuValue = skuValues.filter(function (value) {
|
||||
return value.id === skuValueId;
|
||||
})[0];
|
||||
skuValue && selectedValues.push(skuValue);
|
||||
}
|
||||
|
||||
return selectedValues;
|
||||
}, []);
|
||||
}; // 判断sku是否可选
|
||||
|
||||
export var isSkuChoosable = function isSkuChoosable(skuList, selectedSku, skuToChoose) {
|
||||
var _extends2;
|
||||
|
||||
var key = skuToChoose.key,
|
||||
valueId = skuToChoose.valueId; // 先假设sku已选中,拼入已选中sku对象中
|
||||
|
||||
var matchedSku = _extends({}, selectedSku, (_extends2 = {}, _extends2[key] = valueId, _extends2)); // 再判断剩余sku是否全部不可选,若不可选则当前sku不可选中
|
||||
|
||||
|
||||
var skusToCheck = Object.keys(matchedSku).filter(function (skuKey) {
|
||||
return matchedSku[skuKey] !== UNSELECTED_SKU_VALUE_ID;
|
||||
});
|
||||
var filteredSku = skuList.filter(function (sku) {
|
||||
return skusToCheck.every(function (skuKey) {
|
||||
return String(matchedSku[skuKey]) === String(sku[skuKey]);
|
||||
});
|
||||
});
|
||||
var stock = filteredSku.reduce(function (total, sku) {
|
||||
total += sku.stock_num;
|
||||
return total;
|
||||
}, 0);
|
||||
return stock > 0;
|
||||
};
|
||||
export var getSelectedPropValues = function getSelectedPropValues(propList, selectedProp) {
|
||||
var normalizeProp = normalizePropList(propList);
|
||||
return Object.keys(selectedProp).reduce(function (acc, cur) {
|
||||
selectedProp[cur].forEach(function (it) {
|
||||
acc.push(_extends({}, normalizeProp[cur][it]));
|
||||
});
|
||||
return acc;
|
||||
}, []);
|
||||
};
|
||||
export var getSelectedProperties = function getSelectedProperties(propList, selectedProp) {
|
||||
var list = [];
|
||||
(propList || []).forEach(function (prop) {
|
||||
if (selectedProp[prop.k_id] && selectedProp[prop.k_id].length > 0) {
|
||||
var v = [];
|
||||
prop.v.forEach(function (it) {
|
||||
if (selectedProp[prop.k_id].indexOf(it.id) > -1) {
|
||||
v.push(_extends({}, it));
|
||||
}
|
||||
});
|
||||
list.push(_extends({}, prop, {
|
||||
v: v
|
||||
}));
|
||||
}
|
||||
});
|
||||
return list;
|
||||
};
|
||||
export default {
|
||||
normalizeSkuTree: normalizeSkuTree,
|
||||
getSkuComb: getSkuComb,
|
||||
getSelectedSkuValues: getSelectedSkuValues,
|
||||
isAllSelected: isAllSelected,
|
||||
isSkuChoosable: isSkuChoosable,
|
||||
getSelectedPropValues: getSelectedPropValues,
|
||||
getSelectedProperties: getSelectedProperties
|
||||
};
|
34
node_modules/vant/es/sku/utils/time-helper.js
generated
vendored
Normal file
34
node_modules/vant/es/sku/utils/time-helper.js
generated
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
import { padZero } from '../../utils/format/string'; // 字符串转 Date
|
||||
// 只处理 YYYY-MM-DD 或者 YYYY-MM-DD HH:MM 格式
|
||||
|
||||
export function stringToDate(timeString) {
|
||||
if (!timeString) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new Date(timeString.replace(/-/g, '/'));
|
||||
} // Date 转字符串
|
||||
// type: date or datetime
|
||||
|
||||
export function dateToString(date, type) {
|
||||
if (type === void 0) {
|
||||
type = 'date';
|
||||
}
|
||||
|
||||
if (!date) {
|
||||
return '';
|
||||
}
|
||||
|
||||
var year = date.getFullYear();
|
||||
var month = date.getMonth() + 1;
|
||||
var day = date.getDate();
|
||||
var timeString = year + "-" + padZero(month) + "-" + padZero(day);
|
||||
|
||||
if (type === 'datetime') {
|
||||
var hours = date.getHours();
|
||||
var minute = date.getMinutes();
|
||||
timeString += " " + padZero(hours) + ":" + padZero(minute);
|
||||
}
|
||||
|
||||
return timeString;
|
||||
}
|
Reference in New Issue
Block a user