element ui tree树形控件实现单选操作

这篇具有很好参考价值的文章主要介绍了element ui tree树形控件实现单选操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

<template>
    <div class="createPost-container">
        <el-form ref="postForm" :model="postForm" class="form-container">
            <div class="createPost-main-container">
                <el-row>
                    <el-col :span="24">
                        <el-form-item><span style="color:red;">提示:带 * 号的为必填项</span></el-form-item>
                    </el-col>
                </el-row>
                <el-row>
                    <el-col :span="24">
                        <el-form-item>
                            <el-col :span="3">
                                <span style="color:red;">*</span>
                                权限名称:
                            </el-col>
                            <el-col :span="10"><el-input v-model="postForm.rule_name" placeholder="请输入权限名称"></el-input></el-col>
                        </el-form-item>
                        <el-form-item>
                            <el-col :span="3">
                                <span style="color:red;">*</span>
                                权限路径:
                            </el-col>
                            <el-col :span="10"><el-input v-model="postForm.href" placeholder="请输入权限路径"></el-input></el-col>
                        </el-form-item>
                        <el-form-item>
                            <el-col :span="3">
                                <span style="color:red;">*</span>
                                选择上级(不选为顶级权限):
                            </el-col>
                            <el-col :span="10">
                                <el-input class="input" v-model="filterText" placeholder="搜索" />
                                <el-tree
                                  ref="tree"
                                  class="filter-tree"
                                  :data="tree_data"
                                  show-checkbox
                                    check-strictly
                                  :props="{label:'name'}"
                                    node-key="id"
                                    :default-expanded-keys='checked_data'
                                    :default-checked-keys='checked_data'
                                  :filter-node-method="filterNode"
                                  @check-change="selectTreeNode"
                                    checked=true
                                >
                                </el-tree>
                            </el-col>
                        </el-form-item>
                            
                    </el-col>
                </el-row>

                <div id="" style="text-align: center;">
                    <el-button v-if="btn_submit_status" style="margin-left: 10px;" type="primary" @click="submitForm">保存</el-button>
                    <el-button v-if="!btn_submit_status" style="margin-left: 10px;" type="info">提交中</el-button>
                </div>
            </div>
        </el-form>
    </div>
</template>

<script>
import { admin_all_tree_rule_data,edit_admin_auth_rule,admin_auth_rule_detail } from '@/api/admin';
import { getToken } from '@/utils/auth';

export default {
    name: 'AdminRulesCreateDetail',
    components: {},
    props: {},
    data() {
        return {
            btn_submit_status: true,
            postForm: {
                id:'',
                rule_name: '',
                href: '',
                pid: 0,
            },
            loading: false,
            
            checked_data:[],
            filterText: "",
            tree_data: [],
        };
    },
    computed: {},
    created() {
        this.postForm.id = this.$route.params.id
        this.getDetail()
        //获取所有权限树形数据
        this.getTreeList();
    },
    watch: {
        filterText(val) {
          this.$refs.tree.filter(val);
        },
    },
    methods: {
        getDetail(){
            admin_auth_rule_detail({id:this.postForm.id}).then(res => {
                this.postForm.rule_name = res.data.name
                this.postForm.href = res.data.href    
                this.postForm.pid = res.data.pid
                if(res.data.pid != 0){
                    this.checked_data.push(res.data.pid)
                }
            })
        },
        //搜索
        filterNode(value, data) {
          if (!value) return true;
          return data.name.indexOf(value) !== -1;
        },
        selectTreeNode(data, checked, tree) {
            if (checked) {
                this.$refs.tree.setCheckedNodes([data])
            }
        },
        getTreeList() {
            admin_all_tree_rule_data().then(res => {
                this.tree_data = res.data;
            });
        },
        submitForm() {
            if (this.postForm.rule_name.trim() == '' || this.postForm.rule_name.length > 30) {
                this.$message({
                    message: '权限名称不能为空或权限名称输入过长',
                    type: 'error'
                });
                return;
            }
            if (this.postForm.href.trim() == '' || this.postForm.href.length > 100) {
                this.$message({
                    message: '权限路径不能为空或权限路径输入过长',
                    type: 'error'
                });
                return;
            }
            const pid = this.$refs.tree.getCheckedKeys();
            if(pid.length > 0){
                this.postForm.pid = pid[0]
            }else{
                this.postForm.pid = 0
            }

            if (this.btn_submit_status) {
                this.btn_submit_status = false;
                edit_admin_auth_rule(this.postForm).then(res => {
                    if (res.code == 200) {
                        this.$message({
                            message: res.msg,
                            type: 'success'
                        });
                        this.$router.push({ path: '/admin/listrules' });
                    } else {
                        this.$message({
                            message: res.msg,
                            type: 'error'
                        });
                    }
                    this.btn_submit_status = true;
                });
            }
        }
    }
};
</script>

<style lang="scss" scoped>
@import '~@/styles/mixin.scss';
.upload_image_div {
    min-width: 600px;
}
.upload_image {
    width: 150px;
    height: 150px;
    padding: 5px;
}
.createPost-container {
    position: relative;

    .createPost-main-container {
        padding: 40px 45px 20px 50px;

        .postInfo-container {
            position: relative;
            @include clearfix;
            margin-bottom: 10px;

            .postInfo-container-item {
                float: left;
            }
        }
    }

    .word-counter {
        width: 40px;
        position: absolute;
        right: 10px;
        top: 0px;
    }
}

.article-textarea ::v-deep {
    textarea {
        padding-right: 40px;
        resize: none;
        border: none;
        border-radius: 0px;
        border-bottom: 1px solid #bfcbd9;
    }
}
</style>
 文章来源地址https://www.toymoban.com/news/detail-459753.html

到了这里,关于element ui tree树形控件实现单选操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Element-UI定制化Tree 树形控件

    说明:复制Tree树形控件。 说明:每一个label前面都有一个定制图标 或者     说明: 将默认箭头形式变成加号形式。      

    2024年02月04日
    浏览(53)
  • element-ui树形控件el-tree详解

    概述 这里我利用element-ui开发一个vue的树形组件 引入element-ui 安装element-plus 安装按需导入 修改vite.config.js配置按需加载 tree树形控件详解 属性名 说明 类型 可选值 默认值 data 展示数据 array — — empty-text 内容为空的时候展示的文本 string — — node-key 每个树节点用来作为唯一标

    2024年02月07日
    浏览(32)
  • 78.(前端)分配权限页面显示——树形结构使用(Element-ui的Tree树形控件)

    在前端的操作中,应该增加修改、删除、分配权限的操作 这次主要是实现分配权限的显示!!!!!! 更换icon图标,并设计大小 绑定函数,点击弹出提示框(DIalog对话框) 在对话框内,应该显示一个树形结构提供选择(Tree树形控件) 初始化树形结构,并填充数据

    2024年02月05日
    浏览(36)
  • vue2+element-ui el-tree树形控件封装

    1.封装 根据官网配置项封装了下el-tree 方便维护和复用,有用的话点赞收藏叭~ 2.使用 如若要对不同的一级二级节点设置不同的样式可以参考这样:

    2024年02月12日
    浏览(37)
  • element UI中实现tree树形控件部分选中时父级节点也被选中

    最近有一个很奇葩的需求,在使用element UI中的tree树形控件选中功能时,子节点部分选中时父级节点也要被选中,并且回显也要保留部分子节点选中父节点半选中状态。 按照平时正常逻辑来处理,提交时只需要获取选中项的父级节点一并提交即可,这样正常提交是没有任何问

    2024年02月08日
    浏览(39)
  • VUE2+Element-ui树形控件tree结构的值获取和传给后台

    最近做到了权限管理模块 其中的菜单权限需要用到tree结构进行多选功能的渲染操作 废话少说,直接上代码 将tree结构放在form中配合表单使用 并附带全选和全不选,展开和折叠功能 其中的show-checkbox作用是对tree数据的多选模式 要写在data中的数据 其中defaultProps一定不能忘记

    2024年02月05日
    浏览(43)
  • vue2 - 详细介绍element UI中在el-select嵌套el-tree树形控件实现下拉选择树型结构数据的效果实例(组件封装)

    在项目上常用使用到 el-select 和 el-tree 组合实现,记录下两者结合的实现过程。(代码以及注释清晰明了,代码直接使用即可) 要求根据项目接口提供的数据,el-tree 里的数据是一次性返回来的,点击最后一层级时,请求接口,在点击层级下方追加数据追加的数据要显示勾

    2024年04月15日
    浏览(38)
  • VUE element-ui之el-tree树形控件循环遍历渲染dom节点;子节点横向排列;控件添加指示线

    定义模板(做循环遍历处理): tree的参数说明请参考官方文档 el-tree 定义模板数据: js部分: 指示线样式部分: 实际效果:

    2024年02月11日
    浏览(52)
  • element-ui table 表格控件实现单选功能

    今天遇到一个需求,感觉挺简单的,需求如下: 就是一个表格,在表格的前面加上一个选择框,注意: 只能单选 然后我就去element ui上粘代码: 虽然element ui上有对应的单选表格,可是并不符合我的需求 然后我又发现下面有一个多选的表格,样式虽然相似,可是还是不符合我

    2024年02月11日
    浏览(38)
  • Element Ui Tree组件实现增、删、改、查、拖拽节点 的树形结构

    介绍:首先组件 | Element官网某些功能都具备了,这里我就把这些功能结合在一起更完美的使用,其次 编辑节点 官网是没有实例,所以这里搞了一套较完整的功能,其次编辑和添加,这里直接使用了弹窗(顾及到多个参数设置),接下来效果图展示! 效果图如下: 1,其中点

    2024年02月13日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包