el-tree懒加载数据

需求:弹层树的数据 默认来源 取自车型的第一个数据;默认展示树第一节点的值,后续弹层按照懒加载形式点击节点展开

代码实现如下:

      <el-tree
        v-if="ibshow"
        ref="refTree"
        v-loading="list.loading"
        :props="props"
        :load="loadNode"
        lazy
        node-key="id"
        :default-expanded-keys="showList"
        :expand-on-click-node="false"
        class="treeClass"
        show-checkbox
        @node-click="handleClickTree"
      />
<script>
export default {
 data() {
    return {
   props: {
        children: 'children',
        label: 'sys_name_chn',
        isLeaf: 'isLeaf',
        disabled: 'disabled', // 是否禁用
        level: 'level',
        seq_type: 'seq_type' // 判断是否为分装序
      },
      list: {
        loading: false,
        isExpand: false
      },
      currentTreeNode: '', // 选中树的id
      showList: [],
      level0Node: {},
      level0Resolve: {},
      treeNode: {}
        }
    }
}
<script>

tags 返回的数据,按照自己需要自行补充 

    // 左侧树懒加载
    async loadNode(node, resolve) {
      // 懒加载
      if (this.carModelCode) {
        if (node.level === 0) {
          setTimeout(() => {
            this.currentTreeNode = 'root'
            // this.setTreeCurrentNode()
            this.showList.push('root')
          })
          this.level0Node = node // 这里是关键!在data里面定义一个变量,将node.level == 0的node存起来
          this.level0Resolve = resolve // 同上,把node.level == 0的resolve也存起来
          return resolve([{ id: 'root', pid: '0', part_name: '参与车型', sys_name_chn: this.carModelCode, children: [], disabled: true, level: node.level }])
        } else if (node.level === 1) {
//第一层和第二层调用的接口不同 其他都是一样的
          return resolve(await this.getSysByModel(this.searchData.vehicleModelCode))
        } else if (node.level === 2) {
          // 传序的id
          return resolve(await this.querySequenceBySystem(node.data.id))
        } else if (node.level === 3 || node.level === 4) {
//这里是层级为3的数据,后端返回的在第二层的时候直接给到children里面的
          let tags = []
          node.data.children.forEach((item, index) => {
            tags = [...tags, { sys_name_chn: item.seq_name_chn, id: item.id, isLeaf: item.is_seq_parent !== 'true', children: item?.children, disabled: false, level: node.level, seq_type: item.seq_type }]
          })
          return resolve(tags)
        } else {
          return resolve([])
        }
      }
      // setTimeout(() => {
      //   console.log(this.$refs.refTree, 'tree')
      // }, 2000)
    },
//接口处理,这里我就只写一个 仅供参考
    getSysByModel(item) {
      if (item !== '') {
        return new Promise((resolve) => {
          getSysByModel({ modelId: item }).then((res) => {
            if (res && res.rows && res.rows.length > 0) {
              let tags = []
              res.rows.forEach((item, index) => {
//isLeaf判断 指定节点是否为叶子节点
                tags = [...tags, { sys_name_chn: item.sys_name_chn, id: item.id, isLeaf: item.is_seq_parent !== 'true', disabled: false, level: 1 }]
              })
              this.list.loading = false
              return resolve(tags)
            } else {
              this.list.loading = false
              return resolve([])
            }
          })
        })
      }
    },


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值