不请求后端数据的情况下,前端递归改变tree树结构数据(联动改变编号)

请添加图片描述
请添加图片描述

async submit (form, valid) {
   this.editedForm = form
   if(valid) {
     let params = {...form,...this.searchObj,parent_id: this.handleFunObj.parent_id}
     let url = this.title == '新增' ? 'jCI_UnitPartition_create' : 'jCI_UnitPartition_edit'
     let res = await this.$api[url](params)
     this.$success(`${this.title == '新增' ? '新增成功' : '编辑成功'}`)
     this.$refs.addEditBbook.handleClose()
     // this.loading = true
     this.loadChildrenMethod('')
   }
 },
async loadChildrenMethod ({ row }) {
   let _this  =this
   //主要代码
   if(row == undefined){ //编辑或新增
     if(this.title == '编辑') {
       //编辑替换数据( 树)
       //found为递归查找,changeChildren为递归改变子级数据
       change(this.tableData,'found','')
       function change(data,type,changeParent_no) {
         for(let val of data){
           //递归查找被改变的节点
           if (val.id == _this.editedForm.id) {
             //找到被改变的节点
             val.no = _this.editedForm.no
             val.real_no = _this.editedForm.parent_no + '-' + _this.editedForm.no
             val.name = _this.editedForm.name
             //找到被改变的节点之后,递归改变其子级数据data[0].children
             if(data[0].children && data[0].children.length > 0) {
               change( data[0].children, 'changeChildren', val.real_no )
             }
           }else if(type == 'changeChildren') {
               //递归被改变的节点data,改变子级数据data[0].children
             for(let item of data) {
               item.real_no = changeParent_no + '-' + item.no
                 //继续递归,item.real_no作为下一级的父级no:changeParent_no
               if( data[0].children && data[0].children.length >0 ) {
                 change(data[0].children,'changeChildren', item.real_no)
               }
             }
           } else {
             //继续递归查找被改变的节点
             if(data[0].children && data[0].children.length > 0) {
               change(data[0].children,'found', '')
             }
           }
         }
       }
       return
     }else {
       //新增
       return
     }
   }
   let params = { ...this.searchObj }
   params.parent_id = row.id //用当前点击的id作为父级id请求数据
   let res = await this.$api.jCI_UnitPartition_index(params)
   let childs = res.result.data
   // 异步加载子节点
   return new Promise(resolve => {
     resolve(childs)
   })
 },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值