js 通过多规格及每个规格对应多个规格值动态生成规格明细表格

6 篇文章 0 订阅

动态表格如下:
在这里插入图片描述

       /**
       * 设置表格数据 该方法在新增规格、新增规格值、规格和规格值的文本改变都要调用
       */
      setTableList(){
         let newList=[];
         this.getRowList(null,0,newList)
         this.tableList=newList;
      },
      /**
       * 获取行数据 specList规格集合 tableList表格集合
       * @param specValues 多规格值通过逗号拼接组成每一行唯一值
       * @param specIndex 规格索引
       * @param newList 新表格数据
       */
      getRowList(specValues,specIndex,newList){
          if(specIndex<this.specList.length){
            this.specList[specIndex].values.forEach((t)=>{
              let newValues=(specValues===null?t.name:(specValues+","+t.name))
              //当前规格值,一直往下规格值循环完
              this.getRowList(newValues,specIndex+1,newList)
            })
            //当添加新规格(第二个规格的时候)没有规格值时,默认一个空值
            if(this.specList[specIndex].values.length===0 && specValues!==null){
              let newValues=specValues+","
              this.getRowList(newValues,specIndex+1,newList)
            }
          }
          //当最后规格的规格值循环到最后后添加行数据
          else{
           //判断表格行数据是否已经存在,存在直接添加不创建新行
            let row = this.tableList.find((r)=>{return r.specValues===specValues});
            if(row){
              newList.push({...row})
            }
            else{
              //默认的字段
              row = {
                specValues:specValues,
                amount:0,
                code:"",
                code_name:""
              }
              //通过规格值循环出规格值列数
              specValues.split(',').forEach((c,index)=>{
                row["sku-"+index]=c
              })
              newList.push(row);
            }
          }
      },
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值