elementui下拉树

1.效果图

2.下拉树组件

<template>
    <el-select ref="selectAppType" size="small" placeholder="请选择" v-model="selectValue" :disabled="viewVisible">
        <el-option class="option-style" label="gnwzmc" value="gnwzbm">
            <el-tree :data="innerTreeData" :props="treeProps" @node-click="nodeClick" :filter-node-method="filterNode"
                class="filter-tree"></el-tree>
        </el-option>
    </el-select>
</template>
<script>
    import {
        findTreeList
    } from '@/api/fault/faultApi'

    export default {
        name: "test",
        components: {},
        props: {
            selectValue: "",
            treeData: {
                type: Array,
                default: function () {
                    return []
                }
            },
            viewVisible: Boolean,
            type: String,
            treeProps: {
                type: Object,
                default: function () {
                    return {
                        value: 'gnwzbm',
                        label: 'gnwzmc',
                        children: 'children',
                        disabled: function (data, node) {
                            return data
                        }
                    }
                }
            },
        },
        data() {
            return {
                innerTreeData: [],
                tree: []

            };
        },
        // mounted() {
        //   scroll(0,0)
        // },
        created() {
            scroll(0, 0)
            this.initTree()
        },
        methods: {
            initTree() {
                if (this.selectValue) {
                    this.innerTreeData = JSON.parse(sessionStorage.getItem('sydd'))
                    console.log('77777777777' + this.innerTreeData);
                    for (let i = 0; i < this.innerTreeData.length; i++) {
                        if (this.selectValue == this.innerTreeData[i].code) {
                            this.handleNodeClick(this.innerTreeData[i])
                        } else {
                            for (let j = 0; j < this.innerTreeData[i].children.length; j++) {
                                if (this.selectValue == this.innerTreeData[i].children[j].code) {
                                    this.handleNodeClick(this.innerTreeData[i].children[j])
                                }

                            }
                        }

                    }
                } else {
                    findTreeList({}).then((res) => {
                        if (res.success) {
                            this.innerTreeData = res.data
                            sessionStorage.setItem('sydd', JSON.stringify(res.data))
                        }
                    })
                }
                // var node = '';
                // var async = false;
                // findTreeList(node,async,'1').then((res) => {
                //   if (res.success) {
                //     this.innerTreeData = res.result
                //   }
                // })
            },
            //tree过滤
            filterNode(value, data) {
                if (!value) return true;
                return data.name.indexOf(value) !== -1;
            },
            nodeClick(obj) {
                this.$refs.selectAppType.blur();
                this.$emit("handleClick", obj)
            }
        }
    };
</script>

<style lang="scss" scoped>
    .el-scrollbar .el-scrollbar__view .el-select-dropdown__item {
        height: auto;
        max-height: 274px;
        padding: 0;
        overflow: hidden;
        overflow-y: auto;

    }

    .el-select-dropdown__item.selected {
        font-weight: normal;
    }

    ul li>>>.el-tree .el-tree-node__content {
        height: auto;
        padding: 0 20px;
    }

    .el-tree-node__label {
        font-weight: normal;
    }

    .el-tree>>>.is-current .el-tree-node__label {
        color: #409EFF;
        font-weight: 700;
    }

    .el-tree>>>.is-current .el-tree-node__children .el-tree-node__label {
        color: #606266;
        font-weight: normal;
    }
</style>

3.使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值