级联选择框

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

实现级联选择框

效果图

级联选择框,项目,springboot,java

实现

前端

工具版本
  • node.js v16.6.0
  • vue3

级联选择框使用 Element-Plus 实现

添加依赖

在 package.json 添加依赖,并 npm i 导入

"element-plus": "^1.1.0-beta.15",
main.js导入依赖
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import { createApp } from 'vue'; // 使用 createApp 替换 Vue 的导入方式
import App from './App.vue';

... 

const app = createApp(App); // 使用 createApp 创建 Vue 应用
app.use(ElementPlus)
app.mount('#app'); // 挂载 Vue 应用到 DOM 节点
级联选择框样式
<template>
  <div>
    <el-cascader
    v-model="value"
    :options="options"
    @change="handleChange"
    collapse-tags-tooltip="true"
    :props="props"
    expandTrigger="hover"
    />	
  </div>
</template>
<script setup>
  // 级联选择框
const props = {
  expandTrigger: 'hover' 
}
const handleChange = (value) => {
  let jobId = value[value.length - 1]
  let condition = {
    pageNo: page.value,
    pageSize: size.value,
    param: {
      jobId: jobId
    }
  }
  getListDataByCondition(condition)
}
// 获取级联筛选框数据,如果后端的话,使用后端数据替换 options 即可
const options = [
  {
    value: 'guide',
    label: 'Guide',
    children: [
      {
        value: 'disciplines',
        label: 'Disciplines',
        children: [
          {
            value: 'consistency',
            label: 'Consistency',
          },
          {
            value: 'feedback',
            label: 'Feedback',
          },
          {
            value: 'efficiency',
            label: 'Efficiency',
          },
          {
            value: 'controllability',
            label: 'Controllability',
          },
        ],
      },
    ],
  },
  {
    value: 'python',
    label: 'python',
    children: [
    {
        value: 'disciplines',
        label: 'Disciplines',
        children: [
          {
            value: 'consistency',
            label: 'Consistency',
          },
          {
            value: 'feedback',
            label: 'Feedback',
          },
          {
            value: 'efficiency',
            label: 'Efficiency',
          },
          {
            value: 'controllability',
            label: 'Controllability',
          },
        ],
      },
    ]
  }
]
</script>

options 即为级联选择框展示的数据,后端返回对应数据即可,如下

{
  label: '...',
  value: '...',
  childred: [
    {}
  ]
}

后端

数据库设计

假设数据库表名为 career

则字段为:

id、name、parent_id

我们设计最顶层的条件的 parent_id 为 null,后端使用递归查出即可

这里只列出 Service 层相关方法:

这里使用了 JSONArray,引入 fastjson 依赖即可。

<dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.75</version>
</dependency>
@Override
public JSONArray getData() {
    QueryWrapper<Career> qw = new QueryWrapper<>();
    // 查出 career 表中所有数据
    List<Career> careers = careerMapper.selectList(qw);
    // 进行递归解析
    JSONArray result = resolve(careers, null);
    return result;
}

public JSONArray resolve(List<Career> careers, Integer parentId) {
    JSONArray curResult = new JSONArray();
    for (Career career : careers) {
        JSONObject obj = new JSONObject();
        obj.put("value", career.getId());
        obj.put("label", career.getName());
		// 根节点
        if (career.getParentId() == null && parentId == null) {
            JSONArray children = resolve(careers, career.getId());
            if (children != null && children.size() > 0) {
                obj.put("children", children);
            }
            curResult.add(obj);
        } else if (career.getParentId() != null && parentId != null && career.getParentId().equals(parentId)){
            JSONArray children = resolve(careers, career.getId());
            if (children != null && children.size() > 0) {
                obj.put("children", children);
            }
            curResult.add(obj);
        }
    }
    return curResult;
}

数据库模拟数据如下:文章来源地址https://www.toymoban.com/news/detail-616386.html

id: 1, name: "软件开发", "parent_id": null
id: 2, name: "后端开发", "parent_id": 1
id: 3, name: "前端开发", "parent_id": 2
id: 4, name: "Java开发", "parent_id": 2
id: 5, name: "Go开发", "parent_id": 2
id: 6, name: "Vue", "parent_id": 3

到了这里,关于级联选择框的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 开发 SpringBoot 项目所用版本的选择

            最开始做项目时候,组长说创建一个 springboot 2.5.4 的项目,mysql使用 5.6.X ,maven使用是3.6.X。其实最开始我也没有多想,直接照做了,但是后面回想自己平时看到的SpringBoot开源代码,有的是使用的是2.5.X,有的是使用2.6.X,还有的是使用2.7.X版本的,除了3以上版本

    2024年02月10日
    浏览(31)
  • vue中Cascader 级联选择器实现-修改实现

    vue 的cascader研究了好长时间,看了官网给的示例,上网查找了好多信息,才解决修改时回显的问题,现将方法总结如下: el-form-item   label=\\\"芯片\\\" prop=\\\"firmware\\\"                 el-cascader                     ref=\\\"cascader\\\"                     :options=\\\"firmwareTypeOptions\\\"        

    2024年02月15日
    浏览(50)
  • 用BEM和现代CSS选择器控制级联

    本文为 360 奇舞团前端工程师翻译 原文标题:Taming the Cascade With BEM and Modern CSS Selectors 原文作者:Liam Johnston 原文地址:https://css-tricks.com/taming-the-cascade-with-bem-and-modern-css-selectors/ BEM。就像前端开发领域的所有技术一样,以BEM格式编写CSS可能是两极分化的。但它是——至少在我

    2023年04月08日
    浏览(47)
  • Vant Cascader 级联选择使用 wx小程序

    使用vant 级联选择的主要流程就是根据options的值进行使用,如果需要自定义可以把从api获得的信息通过算法进行处理处理成options的样式就可以使用了 。 首先就是先会在微信小程序中使用vant的组件这里直接引用不做过多的介绍, 之后我们观察这个组件是由 vant-field 和 vant-c

    2024年02月11日
    浏览(42)
  • el-cascader级联选择器那些事

    vue3+element-plus+ts 使用cascader组件提供的getCheckedNodes()

    2024年02月16日
    浏览(44)
  • Naive UI 组件使用体验之-级联选择 Cascader

    地址区域选择 安装依赖 npm install naive-ui -D 按需引入之-手动引入 使用 这里我们是要对收货地址进行一个增加操作。 我们这里只针对 所在地址 进行说明。 获取region 这里需要通过接口提前请求

    2024年02月11日
    浏览(38)
  • elementUI --- el-select 下拉框 日历 级联选择

    element UI 组件库中的 select 选择器 中下拉列表的样式,在页面渲染的时候,总是渲染为仅次于body级别的div ,这样子覆盖样子会影响全局其他的select选择器下拉框样式,试图通过给el-select加父标签来覆盖,然而并没有卵用。 控制台看到的渲染结果: 解决方法: 通过 popper-cla

    2024年02月15日
    浏览(52)
  • antd中的Cascader级联选择框怎么清空重置React

    React项目,使用antd中的 Cascader 级联选择框 通过其他按钮 无法重置 选择框中的项 1、级联选择框的数据默认是根据options绑定的数组中的value值来进行赋值显示的,可以使用antd中Cascader的value和onChange来进行赋值和更改 注:value选中项是一个数组  2、具体的搜索模块,直接使用

    2024年02月15日
    浏览(48)
  • Element-ui(Cascader 级联选择器)实现三级联动

    市区表: 县区表: 省级表: Controller层: service层 serviceimpl实现 mapper层实现 映射省下面所有的市 映射市下面所有的县 查询所有的区县 对应的省JavaBean 对应市JavaBean 对应的县区JavaBean 级联选择器 方法: 注意:级联选择器需要保持和后端映射保持一致回显数据 element-ui官网级

    2024年02月11日
    浏览(67)
  • vue+element 多选级联选择器自定义props

    我这里分享的是 Cascader 级联选择器 中的多选、以及如何 自定义props 的使用详解 效果 代码 这里在优化一下,将option放置外部引入,如果是通过后端传入的数据这里也可以直接赋值给option 创建一个regin.js 页面中使用 将rogin.js引入,然后在生命周期函数中赋值给options、这里如

    2024年02月16日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包