utils.js 666 B

1234567891011121314151617181920212223242526272829
  1. /** 笛卡尔积生成规格组合 */
  2. export function buildSpecCombos(specs) {
  3. const groups = (specs || [])
  4. .map((s) => ({
  5. name: s.name,
  6. values: (s.values || []).filter((v) => v.selected)
  7. }))
  8. .filter((g) => g.values.length);
  9. if (!groups.length) return [];
  10. return groups.reduce(
  11. (acc, g) => {
  12. const next = [];
  13. acc.forEach((prev) => {
  14. g.values.forEach((v) => {
  15. next.push({
  16. label: prev.label ? `${prev.label} | ${v.name}` : v.name,
  17. keys: [...(prev.keys || []), v.id],
  18. price: '',
  19. sellingPrice: '',
  20. stock: '',
  21. costPrice: ''
  22. });
  23. });
  24. });
  25. return next;
  26. },
  27. [{ label: '', keys: [] }]
  28. );
  29. }