美文网首页
ant design vue 级联组件:无限级加载

ant design vue 级联组件:无限级加载

作者: 风烟一纸 | 来源:发表于2020-07-28 17:03 被阅读0次

1、组件

    <a-cascader
        :options="options"
        placeholder="请选择查询人员部门"
        change-on-select
        @change="onChange"
        :auto-focus="true"
        :value="selectCascader"
    />

2、data

     options: [],
     selectCascader: [], //存储所选数组id,用于设置指定值

3、关键方法

// 级联change
        onChange(value) {
            this.selectCascader = value //存储所选数组id
        },
        // 加载一级级联数据
        loadCascader() {
            accountApi.getSubDepart('').then((res) => {
                const resData = res.data
                if (resData.success) {
                    let dataArr = resData.data
                    if (dataArr.length > 0) {
                        // 一级数据处理
                        dataArr.map((val) => {
                            let isLeaf = val.isHave === 'false' ? true : false
                            let obj = {
                                value: val.value,
                                label: val.label,
                                isLeaf: isLeaf,
                            }
                            this.options.push(obj)
                        })
                    }
                    // 关联下级
                    this.options.map((val, index, arr) => {
                        this.loadSubCascader(val.value, arr)
                    })
                }
            })
        },
        // 迭代加载下级级联数据
        loadSubCascader(id, arr) {
            accountApi.getSubDepart(id).then((res) => {
                const resData = res.data
                if (resData.success) {
                    let dataArr = resData.data
                    if (dataArr.length > 0) {
                        for (let j = 0; j < dataArr.length; j++) {
                            // 迭代加载下级
                            this.loadSubCascader(dataArr[j].value, dataArr)
                            for (let i = 0; i < arr.length; i++) {
                                if (dataArr[j].parent === arr[i].value) {
                                    const targetOption = arr[i]
                                    targetOption.children = []
                                    targetOption.children = dataArr
                                }
                            }
                        }
                        this.options = [...this.options]
                    }
                }
            })
        }

在created执行一下 loadCascader() 即可赋予options数据
4、接口说明


image.png
    // ------------------------部门级联begin--------------------------
    // 查询下级部门
    getSubDepart(pid){
        return axios.get(`${api.baseUrl}/tenant/org/getList?parentId=${pid}`)
    },
    // 查询上级部门
    getSupDepart(id){
        return axios.get(`${api.baseUrl}/tenant/org/getList?id=${id}`)
    },
    // --------------------------部门级联over--------------------------

5、设置指定值

        // 迭代获取部门上级id
        getSupDepart(id) {
            accountApi.getSupDepart(id).then((res) => {
                let resData = res.data
                if (resData.success) {
                    let data = resData.data
                    if (data[0].parent !== null) {
                        // parent不为null表示存在上级,否则上级不存在,这时已到第一级
                        this.defaultV.unshift(data[0].parent)
                        this.getSupDepart(data[0].parent)
                    }
                }
            })
        },

6、呃......暂时没啥可说的了!!!


微信图片_20180104093239.jpg

相关文章

网友评论

      本文标题:ant design vue 级联组件:无限级加载

      本文链接:https://www.haomeiwen.com/subject/mwofrktx.html