specSelect.js 916 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /*判断哪些规格可以选*/
  2. export const judgeSelect = (list,_index,productSpecArr,productSku) => {
  3. /*大类*/
  4. for (let i = 0, count = list.length; i < count; i++) {
  5. /*小类*/
  6. for (let j = 0; j < list[i].spec_items.length; j++) {
  7. let item = list[i].spec_items[j];
  8. if(i!=_index){
  9. item.disabled = hasSpecId(i,item.item_id,productSpecArr,productSku);
  10. }
  11. }
  12. }
  13. }
  14. /*判断有没有规格ID*/
  15. function hasSpecId(index,id,productSpecArr,productSku){
  16. let disabled=false;
  17. let reg='';
  18. for(let p=0;p<productSpecArr.length;p++){
  19. if(p!=index){
  20. if(productSpecArr[p]!=null){
  21. reg+=productSpecArr[p]+'_';
  22. }else{
  23. reg+='[0-9]*_';
  24. }
  25. }else{
  26. reg+=id+'_';
  27. }
  28. }
  29. reg=reg.substr(0,reg.length-1);
  30. let re=new RegExp(reg,'g');
  31. for (let s = 0; s < productSku.length; s++) {
  32. let ids=productSku[s].join('_');
  33. disabled=re.test(ids);
  34. if(disabled){
  35. break;
  36. }
  37. }
  38. return !disabled;
  39. }