element中级联选择器动态加载数据 递归的思想(数据量过于庞大,后端不一次性把数据返回)

      <el-cascader
            ref="myCascader"
            v-model="addClockperson.organId"
            :options="defaultOptions"
            :props="props"
            :show-all-levels="false"
            @change="handleChange"
            placeholder="请选择机构"
            @active-item-change="handleItemChange"
       ></el-cascader>

请求的参数
     addressParams: {     
        divCode: '101',
        level: '0'
      }
//请求8级机构
    getorganizationData() {
      getAllOrganTree(this.addressParams).then(res => {
        if (res.code === 0) {
          this.defaultOptions = this.handleData(res.data)
        }
      })
    },
    //级联选中的val
    handleChange(val) {
      let code = val //需请求数据的上级地址的code值
      this.addpersoninfoall.level = this.$refs['myCascader'].getCheckedNodes()[0].data.divLevel
      let level = this.$refs['myCascader'].getCheckedNodes()[0].data.divLevel //需请求第几级
      this.defaultOptions = this.handleData(this.defaultOptions, code, level)
    },
    handleData(defaultOptions, val, level) {
      //console.log(defaultOptions, val, level)
      for (let i = 0; i < defaultOptions.length; i++) {
        if (!defaultOptions[i].children) {
          this.$set(defaultOptions[i], 'children', [])
        }
        if (defaultOptions[i].divCode === val) {
          //如果两者相等,就请求
          getAllOrganTree({ level: level, divCode: val })
            .then(res => {
              if (res.data.length && res.code === 0) {
                defaultOptions[i].children = res.data
                defaultOptions[i].children.forEach(ele => {
                  this.$set(ele, 'children', [])
                })
              } else {
                defaultOptions[i].children = []
              }
            })
            .catch(err => {})
        } else {
          if (defaultOptions[i].children.length) {
            this.handleData(defaultOptions[i].children, val, level)
          }
        }
      }
      return defaultOptions
    }
原文地址:https://www.cnblogs.com/shun1015/p/12747930.html