【Vue-Treeselect 和 vue3-treeselect】树形下拉框

news2024/12/25 12:45:01

Vue-Treeselect Vue2树形下拉框

链接

文档:Vue-Treeselect

实现

第一步:安装

npm install --save @riophae/vue-treeselect

第二步:实现

import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'

属性

:multiple="true" :是否允许多选
:options="list" :渲染的数据

:show-count="true" :展示下拉总数数据
:flat="true" :设置平面模式(选中的标签不联动子节点和父节点)
:limit="5" :展示多选的标签个数
:limitText="count => `及其它${count}项`" :多选的超出文字展示方式
:auto-deselect-descendants="true" :取消节点时取消其接点的子节点(平面模式下使用)
:auto-select-descendants="true":选择节点时取消其接点的子节点(平面模式下使用)    :disable-branch-nodes="true":只能选择末级节点

placeholder="请选择区域"

no-options-text="暂无数据" :列表为空的情况

no-children-text="暂无数据" :选项children为空的情况

空数据文字提示

列表为空的情况:

选项children为空的情况:

 

<treeselect
  v-model="searchForm.id" 
  :options="cateList" 
  no-options-text="暂无数据" 
  no-children-text="暂无数据" 
></treeselect>

默认选择出现unknown问题

解决方法:v-modal 绑定的值给null

自定义验证规则

 input是输入之后调用的方法,close是关闭下拉框调用的方法。

<el-form-item label="审批人" prop="name">
  <treeselect 
        v-model='form.name' 
        :options='options' 
      @input='change' 
      @close='change'
    ></treeselect>
<el-form-item>
cost valid = (rule, value, callback) => {
    if(!value) {    
           document.querySelector('.vue-treeselect__control').style.borderColor = "red"
           callback(new Error('请输入电话号码'))
    }  else {
           document.querySelector('.vue-treeselect__control').style.borderColor = "green"
    }
}
rules:[
    { required: true, validator: valid, trigger: 'input'}
]
change(val){
    this.$nextTick(()=>{
        this.$refs.form.validateField('name')
    }) 
}

自定义id和name

<treeselect 
    v-model="id" 
    :options="list" 
    :normalizer="normalizer" 
/>
data() {
  return {
    id: 0,
    list:[
      {
        id: 1,
        name: '1',
        
        children: [
          {
            id: 11,
            name: '11',
            children: [
              {
                id: 111,
                name: '111',
              }
            ]
          },
          {
            id: 12,
            name: '12',
          },
        ]
      },
      {
        id: 2,
        name: '2',
        children: [
          {
            id: 21,
            name: '21'
          },
          {
            id: 22,
            name: '22'
          },
        ]
      }
    ]

  };
},
normalizer(node) {
  if (node.children && !node.children.length) {
    delete node.children;
  }
  return {
    id: node.id,
    label: node.name,
    children: node.children
  };
},

vue3-treeselect Vue3树形下拉框

链接

github:https://github.com/megafetis/vue3-treeselect

实现

第一步:安装

npm install --save vue3-treeselect

第二步:页面

<treeselect class="vegetable"
  ref="cateSelect"
  v-model="form.id" 
  :options="cateList" 
  :clearable="false" 
  :searchable="false" 
  :disable-branch-nodes="true" 
  no-options-text="暂无数据" 
  no-sub-options-text="暂无数据"
  placeholder="请选择种类"
  @select="handleSelect"
></treeselect>

  vue3-treeselect 插件适用的数据格式是:id、label、children,后端得到的数据需要转格式。

<script lang="ts">
import {defineComponent, onActivated, ref} from "vue";
import { getCateList } from "@src/api/api";
import Treeselect from "vue3-treeselect"
import 'vue3-treeselect/dist/vue3-treeselect.css'

export default defineComponent({
  components: {
    Treeselect
  },
  setup(props) {

    // 进入页面获取种类列表
    onActivated(() => {
      getCate()
    })

    // 格式化后端返回的数据
    const dg = (list: any) => {
      list && list.forEach((v: any) => {
        v.label = v.name 
        v.children = v.child
        if (v.children && v.children.length > 0) {
          dg(v.children)
        }
      })
    }

    // 获取种类列表
    const cateList: any = ref([])
    const getCate = async () => {
      getCateList().then((res: any) => {
        dg(res.list)
        cateList.value = res.list
      }).catch(() => { })
    }

    // 获取选中的id
    const form = ref(<any>{
      id: null,
      name: ''
    });

    // 选择id的同时获取文本
    handleSelect(e) {
      form.value.name = e.name
    }

    return {
      form,
      cateList,
      getCate,
      dg,
      handleSelect
    }
  }
})
</script>
.vegetable{
  height: 37px;
  width: 300px;
}
::v-deep .vegetable .vue-treeselect__control {
  height: inherit;
} 

选中值回显

const cateSelect = ref(null)
const getInfo = () => {
  
  getDetail().then((res:any) => {

    form.value = res;

    nextTick(() => {
      cateSelect.value.select(cateSelect.value.getNode(form.value.id))
    })

  }).catch(() => {

  })
}    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/508553.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python数据类型总结

标准数据类型 Python 有以下几种标准数据类型&#xff1a; 整数&#xff08;int&#xff09;&#xff1a;表示整数值&#xff0c;如 1, -5, 0 等。浮点数&#xff08;float&#xff09;&#xff1a;表示小数值&#xff0c;如 3.14, -0.01, 1.0 等。字符串&#xff08;str&…

AI智能音箱高性价比出好音质的功放芯片

近几年人工智能等技术的不断发展&#xff0c;AI智能音箱已成为炙手可热的爆款&#xff1b;众多企业纷纷加入其中&#xff1b;如我们熟知的天猫精灵、小爱同学、小度智能音箱、华为AI音箱、腾讯叮当等等智能音箱&#xff1b;据不完全统计&#xff0c;目前国内做智能音箱的企业已…

SpringBoot——创建一个SpringBoot工程

简单介绍&#xff1a; 在之前我们学习JavaEE的时候&#xff0c;是直接使用Spring进行操作&#xff0c;以比较原始的方式进行了SSM的整合&#xff0c;这次我们就来学习一个强大的框架——SpringBoot&#xff0c;这个框架是用来简化Spring应用的初始化创建过程&#xff0c;以及开…

APP外包项目的代码规范

APP项目在工作中使用越来越多&#xff0c;2C的APP项目基本饱和&#xff0c;2B的AP项目P还有很大的发展空间。越来越多的企业希望通过APP来提升工作效率或加强和客户的沟通&#xff0c;但这些企业大多数不是专业的软件公司&#xff0c;开发软件时需要找软件外包开发公司&#xf…

C/C++每日一练(20230510) 编辑距离、多数元素、数列累和

目录 1. 编辑距离 &#x1f31f;&#x1f31f;&#x1f31f; 2. 多数元素 &#x1f31f; 3. 求分数数列的前N项和 ※ &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 编辑距离 给你…

OpenCV教程——Mat对象

1.Mat对象和IplIamge对象 Mat对象是OpenCV2.0之后引进的图像数据结构、自动分配内存、不存在内存泄漏的问题&#xff0c;是面向对象的数据结构。分为两个部分&#xff1a;头部和数据部分。IplIamge是从2001年OpenCV发布之后就一直存在&#xff0c;是C语言风格的数据结构&#…

笔记本电脑没有声音怎么办?5个必会方法分享

案例&#xff1a;笔记本电脑没有声音怎么办&#xff1f; 【我的笔记本电脑为什么会没有声音呢&#xff1f;看视频听音乐一点声音都没有&#xff0c;实在太烦人了&#xff01;应该怎么解决呢&#xff1f;】 笔记本电脑逐渐成为人们工作生活必备的工具。如果笔记本电脑没有声音…

怎样检测和维护LED显示屏系统

检测和维护LED显示屏系统是确保其正常运行和延长寿命的重要步骤。以下是一些常见的检测和维护LED显示屏系统的方法&#xff1a; 视觉检查&#xff1a;定期进行视觉检查以确保LED显示屏没有明显的损坏或故障。检查显示屏表面是否有损坏、裂纹或漏光等情况。如果发现任何问题&…

ChatGPT作者John Schulman:通往TruthGPT之路

OneFlow编译 翻译&#xff5c;贾川、徐佳渝、杨婷 大型语言模型&#xff08;LLM&#xff09;有一个众所周知的“硬伤”——它们经常会一本正经编造貌似真实的内容。 OpenAI团队希望通过改进强化学习反馈步骤“原生地”阻止神经网络产生幻觉&#xff0c;OpenAI首席科学家Ilya …

spark-sql 报错:Exception thrown flushing changes to datastore

报错背景 hive创建数据库时添加中文备注信息报错。 命令&#xff1a;CREATE DATABASE IF NOT EXISTS hive_ods_db COMMENT Hive ODS层数据库; 报错现象 FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Excep…

递归行为与归并排序

master公式 T(N)a*T(N/b)O(N^d) T(N)&#xff1a;问题的规模是N个数据 N/b&#xff1a;子过程的规模 a&#xff1a;调用的次数 O(N^d) &#xff1a;除子问题的调用之外&#xff0c;剩余的代码的时间复杂度 使用条件&#xff1a;满足子问题等规模的递归 arr[L,R]范围…

49天精通Java,第27天,队列、双端队列、优先队列

目录 一、队列与双端队列二、Queue和Deque三、api对比1、add和offer区别2、remove和poll3、element和peek 四、优先队列1、PriorityQueue常用方法2、ArrayDeque常用方法 大家好&#xff0c;我是哪吒。 一、队列与双端队列 双端队列是一种特殊的队列&#xff0c;它的两端都可以…

吴军《计算之魂》读后感

前言 断断续续&#xff0c;终于完成了这本书的第一次通读&#xff0c;记录下自己的一些想法。 先说一个小故事。前段时间家里买了一个小鱼缸&#xff0c;问我有没有办法让水自动循环&#xff0c;但不想用电。没有好的想法&#xff0c;去小某书上搜了下&#xff0c;好多案例教…

【哈士奇赠书活动 - 18期】-〖Flask Web全栈开发实战〗

文章目录 ⭐️ 赠书活动 - 《Flask Web全栈开发实战》⭐️ 编辑推荐⭐️ 内容提要⭐️ 赠书活动 → 获奖名单 ⭐️ 赠书活动 - 《Flask Web全栈开发实战》 内容简介&#xff1a; 《Flask Web全栈开发实战》围绕 Flask 框架&#xff0c;详细地讲解了使用 Flask 开发网站的各项技…

vue2项目中使用本机图片的一些问题

前后端分离项目&#xff0c;&#xff08;vue2springboot2.6.3) 前端上传图片&#xff0c;后端将图片保存在本地。当前端使用上传的图片时出现的一些问题说明。 前端上传图片文件&#xff0c;后端接收到图片文件后将图片保存到vue项目的src/assets/club目录下&#xff0c;如下…

VMware vSphere Replication 8.7 (for vSphere 8.0U1) - 虚拟机复制和数据保护

请访问原文链接&#xff1a;https://sysin.org/blog/vmware-vsphere-replication-8/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 新增功能 vSphere Replication 8.7 | 2023 年 4 月 18 日 | 内部版本 21591677 vSphere Re…

GPT4.0+Midjourney=最佳组合,简单玩法

以下是我设计的一个简单的组合玩法&#xff0c;操作如下&#xff1a; 问gpt4: Here is a MidJourney Prompt Formula: A detailed image of [Subject] [doing something interesting] during [time of day], taken with a [type of camera], using [type of lens] with cinema…

ChatGPT会对我们日常生活带来什么影响?这些技术会改变我们学习阅读工作方式吗?

ChatGPT会对我们日常生活带来什么影响&#xff1f;这些技术会改变我们学习阅读工作方式吗&#xff1f; AI 这个话题很火&#xff0c;我也一直在关注着&#xff0c;很多人甚至觉得 AI 会改变世界&#xff0c;也许你会好奇&#xff1a;ChatGPT 会在三年内终结编程吗&#xff1f;A…

基于gitlab搭建Drone CI

drone简介&#xff1a; drone官方文档&#xff1a;https://docs.drone.io/ drone跟Jenkins一样&#xff0c;可实现持续集成&#xff0c;就是可以帮助我们解决重复的代码构建&#xff0c;自动化测试&#xff0c;发布等重复劳动&#xff0c;通过简单一个提交代码的动作&#xff…

Text-to-3D 任务论文笔记: Latent NeRF

文章目录 概述相关工作3D形状合成使用2D监督的text-to-3D 任务 方法前置知识LDMScore Distillation Latent NeRF文本引导RGB refinementSketch-Shape Guidance对于显式形状的Latent-Paint 实验实验细节文本引导的生成RGB RefinementTextual-Inversion Sketch-Shape GuidanceLat…