递归 解决 Cascader 子数据回显

树查询:通过子id获取所有父节点
 
  //根据 单元id 获取选择数组
    getUnitArray(list, id) {
      let res = { arr: [], arrName: [], isOk: false }
      list.forEach(item => {
        if (item.id == id) {
          res.arr.push(id)
          res.isOk = true
          res.arrName.push(item.riskUnitName)
          return
        }
        if (item.children != undefined && item.children.length > 0) {
          let tmp = this.getUnitArray(item.children, id)
          if (tmp.isOk == true) {
            res.arr = [item.id, ...tmp.arr]
            res.arrName = [item.riskUnitName, ...tmp.arrName]
            res.isOk = tmp.isOk
            return
          }
        }
      })
      return res
    },
 
 

// 树查询:通过子id获取所有父节点
getTreeParent (treeData, searchId, parentAttr = 'parentid', childAttr = 'sid') {
    var arrRes = [];
    if (treeData.length == 0) {
     if (!!searchId) {
       arrRes.unshift(treeData)
      }
    return arrRes;
    }
    let rev = (data, nodeId) => {
        for (var i = 0, length = data.length; i < length; i++) {
          let node = data[i];
         if (node[childAttr] == nodeId) {
           arrRes.unshift(node)
           rev(treeData, node[parentAttr])
           break;
         }
  else {
    if (!!node.children) {
      rev(node.children, nodeId);
    }
  }
 }
  return arrRes;
  };
 arrRes = rev(treeData, searchId)
 arrRes = arrRes.map(v => v[childAttr])
 return arrRes;
},

 

 

    /** 树结构转数组 */
    filterUnit(data) {
      //获取包含单元的项, 无单元的项过滤 风险分析1.对象2.单元
      var arr = []
      data.forEach(item => {
        if (item.analyticType == 1) {
          //对象
          if (item.children.length > 0) {
            let sub = this.filterUnit(item.children)
            if (sub.length > 0) {
              arr.push(item)
            }
          }
        } else {
          //单元
          let tmp = item
          delete tmp.children
          arr.push(tmp)
        }
      })
      return arr;
    },
 

 

 

posted @ 2022-07-26 11:46  porter_代码工作者  阅读(94)  评论(0编辑  收藏  举报