element UI-级联选择器(el-cascader)

1.需求:form中营业单位需要展示一级单位及二级单位。

2.实现:

1)el-form中添加el-cascader

<el-cascader
  style="width: 140px"
  :change-on-select="true"
  :props="defaultParams"
  :options="options"
  v-model="selectedOptions"
  :clearable="true"
  @change="handleCascader"
  @visible-change="visibleChange">
</el-cascader>

2)data中声明变量

  data () {
    return {
      options: [
        {
          'comName': '湖北分公司',
          'comCode': '52',
          'subComList': [
            {
              'comName': '湖北分公司宜昌区域中心',
              'comCode': '5211',
              'subComList': []
            },
            {
              'comName': '湖北分公司襄阳区域中心',
              'comCode': '5212',
              'subComList': []
            }
          ]
        }
      ],
      selectedOptions: [],
      defaultParams: {
        label: 'comName',
        value: 'comCode',
        children: 'subComList'
      }
    }
  },

3)method中声明方法

 methods: {
    // 下拉框初始化数据
    visibleChange (bol) {
      if (bol) { // bol为true时表示下拉框出险
        this.getManageData()
      }
    },
    // 获取级联选择器选中值
    handleCascader () {
      if (this.selectedOptions.length === 2) {
        this.comCode = this.selectedOptions[1]
      }
    },
    // 获取营业单位数据
    getManageData () {
      // 加载loading
      let datas = {
        'tradeMap': {
          'manageCom': '' // 管理机构
        }
      }
      this.$axios({
        baseURL: './',
        url: '',
        method: 'post',
        data: datas
      }).then(res => {
        console.log('查询res:::::')
        console.log(res)
        if (res.data.tradeMap.resultCode === '0000') {
          let datas = res.data.tradeMap.ldcoms
          console.log(datas)
          this.options = this.getTreeData(datas)
          console.log(this.options)
        } else {
          let message = res.data.tradeMap.message
          this.$message.error(message)
        }
      }).catch(() => {
        this.$message.error('请求数据失败,请重试')
      })
    },
    // 格式化营业单位数据
    getTreeData (data) {
      // 循环遍历json数据
      for (let i = 0; i < data.length; i++) {
        if (!data[i].subComList || data[i].subComList.length < 1) {
          // children若为空数组,则将children设为undefined
          data[i].subComList = undefined
        } else {
          // children若不为空数组,则继续 递归调用 本方法
          this.getTreeData(data[i].subComList)
        }
      }
      return data
    }
}

4)实现效果

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 Element UI级联选择器 el-cascader,如果需要回显已经选中的值,可以通过设置 v-model 和 :options 属性来实现。 假设有一个三级联动的级联选择器,选项数据如下: ``` options: [{ value: 'zhinan', label: '指南', children: [{ value: 'shejiyuanze', label: '设计原则', children: [{ value: 'yizhi', label: '一致' }, { value: 'fankui', label: '反馈' }] }, { value: 'daohang', label: '导航', children: [{ value: 'cexiangdaohang', label: '侧向导航' }, { value: 'dingbudaohang', label: '顶部导航' }] }] }] ``` 如果需要回显已经选中的值,可以将当前选中的值通过 v-model 绑定到 data 中的一个变量上,例如: ``` <el-cascader v-model="selectedOptions" :options="options" ></el-cascader> ``` 其中,selectedOptions 是一个数组,用于保存当前选中的值。 接下来,需要在 mounted 钩子函数中设置已选中的值,例如: ``` mounted() { this.selectedOptions = ['zhinan', 'shejiyuanze', 'yizhi'] } ``` 这样,在页面加载完成后,级联选择器就会自动回显已经选中的值。 需要注意的是,如果级联选择器的选项数据是异步加载的,需要在加载完成后再设置已选中的值,例如: ``` mounted() { this.loadOptions().then(() => { this.selectedOptions = ['zhinan', 'shejiyuanze', 'yizhi'] }) }, methods: { loadOptions() { // 异步加载选项数据 } } ``` 这样就可以实现 Element UI级联选择器 el-cascader 的回显功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值