级联选择框

news2024/9/28 17:33:00

文章目录

  • 实现级联选择框
    • 效果图
    • 实现
      • 前端
        • 工具版本
        • 添加依赖
        • main.js导入依赖
        • 级联选择框样式
      • 后端
        • 数据库设计

实现级联选择框

效果图

在这里插入图片描述

实现

前端

工具版本

  • 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;
}

数据库模拟数据如下:

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

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

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

相关文章

【RTT驱动框架分析01】-pin/gpio驱动分析

0gpio使用测试 LED测试 #define LED1_PIN GET_PIN(C, 1) void led1_thread_entry(void* parameter) {rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT);while(1){rt_thread_delay(50); //delay 500msrt_pin_write(LED1_PIN, PIN_HIGH);rt_thread_delay(50); //delay 50…

漏洞发现-操作系统之漏洞探针类型利用修复(42)

主要包括四个部分&#xff0c; 系统漏洞发现的的意义&#xff1a;应用是基于操作系统的&#xff0c;针对的操作系统&#xff0c;如果漏洞本身就有问题&#xff0c;就不需要对特定的网站特定的漏洞寻找&#xff0c;因为网站是寄生在服务器上&#xff0c;而服务器丢失就可以帮助…

Sentinel dashboard的使用;Nacos保存Sentinel限流规则

Sentinel dashboard的使用 往期文章 Nacos环境搭建Nacos注册中心的使用Nacos配置中心的使用Sentinel 容灾中心的使用 参考文档 Sentinel alibaba/spring-cloud-alibaba Wiki GitHub 限流结果 下载sentinel-dashboard github地址&#xff1a;Sentinel/sentinel-dashboar…

【雕爷学编程】MicroPython动手做(13)——掌控板之RGB三色灯3

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

TypeScript基础篇 - TS模块

目录 模块的概念 Export 语法&#xff08;default&#xff09; Export 语法&#xff08;non-default&#xff09; import 别名 Type Export语法【TS】 模块相关配置项&#xff1a;module【tsconfig.json】 模块相关配置项&#xff1a;moduleResolution 小节总结 模块的…

手写vuex

vuex 基本用法 vuex是作为插件使用&#xff0c;Vue.use(vuex) 最后注册给new Vue的是一个new Vuex.Store实例 // store.js import Vue from vue import Vuex from vuexVue.use(Vuex) // Vue.use注册插件 // new Vuex.Store实例 export default new Vuex.Store({state: {},gette…

详解Mybatis之逆向工程问题

编译软件&#xff1a;IntelliJ IDEA 2019.2.4 x64 操作系统&#xff1a;win10 x64 位 家庭版 Maven版本&#xff1a;apache-maven-3.6.3 Mybatis版本&#xff1a;3.5.6 文章目录 一. Mybatis中的逆向工程是什么&#xff1f;二. 什么是MBG&#xff1f;三. MBG如何使用&#xff1…

Android Studio 启用设备远程调试配置完整步聚

启用手机设置->开发者选项-无线调试,然后选择允许 已启用后无线调试变成绿色 ,点击无线调试进入详情页面 点击Android Studio的Device Manager 下的WIFI图标 会弹出下图窗口 打开手机的开发者选项中的WIFI调试(无线调试)下的使用二维码配对设备进行扫描. 设备配对成功后手机…

JDBC Common Connection Problems

连接问题 Access denied for user ‘root’‘localhost’ (using password: YES) 第一种情况 问题描述 环境&#xff1a;IDEA 2021.1 windows11 mysql8.0 已知条件&#xff1a;1.已正常安装数据库2.无法通过CMD输入mysql -u root -p 密码进入数据库3.无法通过Navicat进入4…

2023-07-29:给你一个由数字组成的字符串 s,返回 s 中独特子字符串数量。 其中的每一个数字出现的频率都相同。

2023-07-29&#xff1a;给你一个由数字组成的字符串 s&#xff0c;返回 s 中独特子字符串数量。 其中的每一个数字出现的频率都相同。 答案2023-07-29&#xff1a; 大体步骤如下&#xff1a; 1.初始化变量base为固定值1000000007&#xff0c;用于计算哈希码。 2.创建一个空…

InnoDB引擎底层逻辑讲解——架构之内存架构

1.InnoDB引擎架构 下图为InnoDB架构图&#xff0c;左侧为内存结构&#xff0c;右侧为磁盘结构。 2.InnoDB内存架构讲解 2.1 Buffer Pool缓冲池 2.2 Change Buffer更改缓冲区 2.3 Adaptive Hash Index自适应hash索引 查看自适应hash索引是否开启&#xff1a; show variable…

qt截图软件中画箭头代码原理

截图工具中&#xff0c;需要画一个指向箭头&#xff0c; 该箭头的形状解析示意图如下所示&#xff0c; 对应的qt代码如下&#xff1a; // 画出一个箭头线&#xff0c;主要是算出这几个点。 // 这个箭头形状是这样的&#xff0c;胖嘟嘟的那种&#xff0c;但是出发点是一个细的 Q…

机器学习深度学习——权重衰减

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——模型选择、欠拟合和过拟合 &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章对你…

教雅川学缠论04-笔

笔由3部分组成&#xff1a; 顶分型K线底分型&#xff0c;或者 底分型K线顶分型 注意&#xff1a;笔加一起至少7根K线&#xff0c;因为一个底分型至少3根&#xff0c;K先至少1个&#xff0c;顶分型至少3根 下图中红色线段就是一个标准的笔&#xff0c;它始于一个底分型&#xff…

❤️创意网页:创建更炫酷的动态网页——彩色数字(1到9)粒子动画

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;简单好用又好看&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;欢迎踏入…

基于WSL2、Ubuntu和VS Code的CUDA平台运行C语言程序

一、CUDA程序执行方法 执行步骤为&#xff1a; 安装Visual Studio Code。在Visual Studio Code中安装插件WSL与电脑的WSL2进行连接。点击左下角&#xff0c;然后再选择连接到WSL。 在WSL中创建以 .cu 为后缀的文件。 rootDESKTOP-HR6VO5J:~# mkdir CUDA /…

VMware Linux 可视化增加磁盘

1、VMware 增加磁盘 2、disks挂载磁盘 此处我挂载的是20G磁盘&#xff0c;截图只是用5G的做过程演示例子。 3、验证挂载磁盘

Chrome 浏览器+Postman还能这样做接口测试 ?

如果把测试简单分为两类&#xff0c;那么就是客户端测试和服务端测试。客户端的测试包括UI测试&#xff0c;兼容性测试等&#xff0c;服务端测试包括接口测试。接口测试检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;它绕过了客户端&#xff0c;直接对服务端进行测…

UE5 C++ SplineMesh蓝图函数库实现(小白笔记)

UE5 C++ SplineMesh的蓝图函数库实现方法 UAAABlueprintFunctionLibrary UAAABlueprintFunctionLibrary.h // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h" #include "Components/Spl…

【Java开发】 Mybatis-Flex 01:快速入门

Mybatis 作为头部的 ORM 框架&#xff0c;他的增强工具可谓层出不穷&#xff0c;比如出名的 Mybatis-Plus 和 阿里云开源的 Fluent-MyBatis&#xff0c;如今出了一款 Mybatis-Flex &#xff0c;相比前两款功能更为强大、性能更为强悍&#xff0c;不妨来了解一下。 目录 1 Myba…