二级菜单的两种思路(完成部分)

news2024/9/22 3:54:04

第一种

<el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
 <el-form-item label="类型" prop="type">
   <el-select v-model="form.type" placeholder="请选择类型" @change="handleTypeChange">
     <el-option
         v-for="dict in types"
         :key="dict.value"
         :label="dict.label"
         :value="dict.value"
     ></el-option>
   </el-select>
 </el-form-item>
 <el-form-item label="子类型" prop="subType" >
   <el-select v-model="form.subType" placeholder="请选择子类型">
     <el-option
         v-for="dict in filteredSubTypes"
         :key="dict.value"
         :label="dict.label"
         :value="dict.value"
     ></el-option>
   </el-select>
 </el-form-item>

@change=“handleTypeChange”
types
filteredSubTypes

const types = ref([
  { label: '开展宣传情况', value: '1' },
  { label: '开展活动情况', value: '2' },
  { label: '政务接待保障情况', value: '3' },
  { label: '提供场地情况', value: '4' },
  { label: '综合窗口服务情况', value: '5' },
  { label: '公共法律服务情况', value: '6' },
]);
const subTypes = ref([
  { label: '微信推文', value: '1_01' },
  { label: '视频', value: '1_02' },
  { label: '开展活动', value: '2_01' },
  { label: '政务接待', value: '3_01' },
  { label: '提供会务保障', value: '3_02' },
  { label: '免费场地', value: '4_01' },
  { label: '住院补助', value: '5_01' },
  { label: '参续保', value: '5_02' },
  { label: '电话及现场接访', value: '6_01' },
]);

const filteredSubTypes = ref();

// 当选择一级时,归纳出对应的二级菜单
function handleTypeChange(val: string) {
  if (!val) {
    return [];
  }
  form.value.subType = undefined;
  filteredSubTypes.value = subTypes.value.filter(subType => subType.value.split('_')[0] === val);
}

// 回显专用
function initSubTypes(val: string) {
  filteredSubTypes.value = subTypes.value.filter(subType => subType.value.split('_')[0] === val);
}

```javascript
// 回显专用
if (isUpdate.value) {
   form.value = param.data;
   initSubTypes(form.value.type as string);
}

第二种 (级联)

仅展示数据清洗

要将您提供的 `types``subTypes` 结构转换为指定的结构,我们需要执行以下步骤:
1. 初始化一个新数组,用于存放最终的结构。
2. 遍历 `types` 数组,为每个元素创建一个新的对象,该对象包含 `id``label``value` 和一个空的 `children` 数组。
3. 遍历 `subTypes` 数组,根据 `subType``value` 前缀将其添加到对应 `type``children` 数组中。
以下是转换过程的代码示例:
```javascript
const types = ref([
  { label: '开展宣传情况', value: '1' },
  { label: '开展活动情况', value: '2' },
  { label: '政务接待保障情况', value: '3' },
  { label: '提供场地情况', value: '4' },
  { label: '综合窗口服务情况', value: '5' },
  { label: '公共法律服务情况', value: '6' },
]);
const subTypes = ref([
  { label: '微信推文', value: '1_01' },
  { label: '视频', value: '1_02' },
  { label: '开展活动', value: '2_01' },
  { label: '政务接待', value: '3_01' },
  { label: '提供会务保障', value: '3_02' },
  { label: '免费场地', value: '4_01' },
  { label: '住院补助', value: '5_01' },
  { label: '参续保', value: '5_02' },
  { label: '电话及现场接访', value: '6_01' },
]);
// 转换为指定结构的函数
function transformToNewStructure(types, subTypes) {
  return types.map((type, index) => {
    return {
      id: index + 1,
      label: type.label,
      value: type.value,
      children: subTypes.filter(subType => subType.value.startsWith(type.value))
        .map(subType => ({
          id: subType.value.split('_')[1],
          label: subType.label,
          value: subType.value
        }))
    };
  });
}
// 使用转换函数并打印结果
const newStructure = transformToNewStructure(types.value, subTypes.value);
console.log(newStructure);

执行上述代码后,将得到以下结构:

[
  {
    "id": 1,
    "label": "开展宣传情况",
    "value": "1",
    "children": [
      { "id": "01", "label": "微信推文", "value": "1_01" },
      { "id": "02", "label": "视频", "value": "1_02" }
    ]
  },
  {
    "id": 2,
    "label": "开展活动情况",
    "value": "2",
    "children": [
      { "id": "01", "label": "开展活动", "value": "2_01" }
    ]
  },
  {
    "id": 3,
    "label": "政务接待保障情况",
    "value": "3",
    "children": [
      { "id": "01", "label": "政务接待", "value": "3_01" },
      { "id": "02", "label": "提供会务保障", "value": "3_02" }
    ]
  },
  {
    "id": 4,
    "label": "提供场地情况",
    "value": "4",
    "children": [
      { "id": "01", "label": "免费场地", "value": "4_01" }
    ]
  },
  {
    "id": 5,
    "label": "综合窗口服务情况",
    "value": "5",
    "children": [
      { "id": "01", "label": "住院补助", "value": "5_01" },
      { "id": "02", "label": "参续保", "value": "5_02" }
    ]
  },
  {
    "id": 6,
    "label": "公共法律服务情况",
    "value": "6",
    "children": [
      { "id": "01", "label": "电话及现场接访", "value": "6_01" }
    ]
  }
]

请注意,id 字段在子类型中是从 value 字段中提取的,并且假设它是数字。如果 id 需要是整数,则可能需要进行额外的转换。

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

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

相关文章

【Python · Pytorch】配置cuda环境 cuDNN库

【Python Pytorch】配置cuda环境 & cuDNN库 1. 查找对应版本1.1 查看Pytorch GPU目前支持版本1.1 查看Nvidia驱动版本1.2 查看支持cuda版本1.3 查看支持cuDNN版本1.3.1 cuDNN 9.0.0及以上版本1.3.2 cuDNN 9.0.0以下版本 1.4 安装版本确定 2. 安装cuda环境2.1 cuda简介2.1.…

时装爱好者的网页购物天堂:Spring Boot技术探索

第2章相关技术 2.1 B/S架构 B/S结构的特点也非常多&#xff0c;例如在很多浏览器中都可以做出信号请求。并且可以适当的减轻用户的工作量&#xff0c;通过对客户端安装或者是配置少量的运行软件就能够逐步减少用户的工作量&#xff0c;这些功能的操作主要是由服务器来进行控制的…

基于yolov8的西红柿检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的西红柿检测系统是一种利用深度学习技术的创新应用&#xff0c;旨在通过自动化和智能化手段提高西红柿成熟度检测的准确性和效率。该系统采用YOLOv8算法&#xff0c;该算法是深度学习领域中的先进目标检测模型&#xff0c;具备实时检测和多目标识别的…

基于vue框架的车辆理赔系统5vzcd(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,员工,保险信息,保单信息,申请理赔,事故调查,赔偿金发放 开题报告内容 基于Vue框架的车辆理赔系统开题报告 一、项目背景与意义 随着汽车保有量的持续增长&#xff0c;车辆事故频发&#xff0c;车辆保险理赔成为保险公司和车主共…

机器学习和物联网驱动技术在加工过程中监测工具磨损:一项全面的综述

这篇论文的标题是《Machine-Learning and Internet-of-Things-Driven Techniques for Monitoring Tool Wear in Machining Process: A Comprehensive Review》&#xff0c;由 Sudhan Kasiviswanathan、Sakthivel Gnanasekaran、Mohanraj Thangamuthu 和 Jegadeeshwaran Rakkiya…

最好用的Python IDE,PyCharm保姆级安装教程

简介 由于Python语法简单容易入门&#xff0c;并且Python在办公自动化等领域的功能非常强大&#xff0c;所以现在越来越多非IT行业的人也开始学起了Python&#xff0c;要学习和使用一门编程语言&#xff0c;一个好用的IDE是必不可少的&#xff0c;而对于Python来说&#xff0c…

SpringMVC基于注解使用

01-拦截器介绍 首先在pom.xml里面加入springmvc的依赖 创建拦截类 在spring-mvc.xml配置拦截器配置 创建控制类测试 拦截器中处理方法之前的方法介绍 拦截器中处理方法之后&#xff0c;渲染之前的方法介绍 拦截器中处理方法之后&#xff0c;渲染之后的方法介绍 判断拦截器和过…

SAM2(Segment Anything Model 2)新一代分割一切大模型实战总结

Segment Anything Model 2&#xff08;SAM 2&#xff09;作为Meta公司发布的Segment Anything Model&#xff08;SAM&#xff09;的升级版本&#xff0c;在图像和视频分割领域展现出了显著的优点和特性。 论文连接&#xff1a;https://arxiv.org/pdf/2408.00714 Demo: https…

9月6号作业

1&#xff1a;.h文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QWidget> #include<QIcon> //图标类 #include<QLabel> //标签类 #include<QMovie> //动图类 #include<QLineEdit> //行编辑器类 …

黑马点评8——好友关注-SortedSet

文章目录 关注和取关共同关注Feed流实现方案分析推送到粉丝收件箱Feed流基于推模式实现关注推送功能 滚动分页查询收件箱的思路实现滚动分页查询 关注和取关 所以关注和取关就是简单的插入和删除数据库。 Overridepublic Result isFollow(Long followUserId) {// 1. 获取登录用…

J.U.C Review - Stream并行计算原理源码分析

文章目录 Java 8 Stream简介Stream单线程串行计算Stream多线程并行计算源码分析Stream并行计算原理Stream并行计算的性能提升 Java 8 Stream简介 自Java 8推出以来&#xff0c;开发者可以使用Stream接口和lambda表达式实现流式计算。这种编程风格不仅简化了对集合操作的代码&a…

无线信道中ph和ph^2的场景

使用 p h ph ph的情况&#xff1a; Rayleigh 分布的随机变量可以通过两个独立且相同分布的零均值、高斯分布的随机变量表示。设两个高斯随机变量为 X ∼ N ( 0 , σ 2 ) X \sim \mathcal{N}(0, \sigma^2) X∼N(0,σ2)和 Y ∼ N ( 0 , σ 2 ) Y \sim \mathcal{N}(0, \sigma^2)…

枚举: C++和Python实现鸡兔同笼问题

作者制作不易&#xff0c;关注、点赞、收藏一下吧&#xff01; 目录 1.Python实现 2.C实现 1.Python实现 首先&#xff0c;我们需要输入头和脚的数量: head int(input("请输入头的数量: ")) feet int(input("请输入脚的数量: ")) input() 实现输入…

优质的产业园都在怎么做运营?

产业园区作为区域经济发展的重要载体&#xff0c;其运营模式和管理水平直接影响着产业集聚的成效和区域经济的竞争力。在一线城市与新一线城市中&#xff0c;已经涌现出了一批以高效运营、创新服务为特色的优质产业园&#xff0c;今天&#xff0c;我们就城市标杆产业园的案例和…

10款古方突破1800亿元,康缘药业发力,市场迎井喷式增长……

在政策东风与市场需求的双重驱动下&#xff0c;中药创新领域正迎来前所未有的发展机遇。特别是古代经典名方制剂的研发与注册&#xff0c;正以前所未有的速度推进&#xff0c;不仅激发了行业的活力&#xff0c;也为患者带来了更多治疗选择。本文将深入探讨这一领域的最新动态&a…

828华为云征文|Flexus云服务器X实例快速部署在线测评平台,适用各种信息学教学

文章目录 如何选配Flexus云服务器X实例服务器HydroOJHOJ 服务器资源的选取基础配置实例规格镜像、存储、网络弹性公网IP云服务器名称 部署HydroOJ1.设置安全组、开放端口2.部署HydroOJ回到控制中心&#xff0c;远程登录 部署HOJ安装docker# 安装docker-compose部署HOJ 本篇幅为…

Vatee万腾平台:赋能企业,共筑智慧经济新高地

在智慧经济时代的大潮中&#xff0c;企业如何把握机遇&#xff0c;实现转型升级&#xff0c;成为行业内的佼佼者&#xff1f;Vatee万腾平台以其卓越的技术实力、前瞻性的战略眼光和全方位的服务体系&#xff0c;正逐步成为企业数字化转型的坚实后盾&#xff0c;赋能企业&#x…

Day-06-QFileDialog文件操作

一、实现打开文件选择对话框 1、程序演示 2、相关代码 void Widget::on_QFileDialog_clicked() {QString fileName QFileDialog::getOpenFileName(this, tr("Open File"),"D:/QT project/", /*注意修改自己的文件打开地址*/tr("Text (*.txt *.d…

又一个新的开源AI项目!!【送源码】

好家伙&#xff0c;国内大模型发展太猛了&#xff01; 旗舰端侧模型面壁「小刚炮」系列进化为全新 MiniCPM 3.0 基座模型&#xff0c;再次以小博大&#xff0c;以 4B 参数&#xff0c;带来超越 GPT-3.5 的性能&#xff0c;强得不像端侧模型。 并且&#xff0c;量化后仅 2GB 内…

【Hadoop|HDFS篇】HDFS的读写流程

1. HDFS的写流程 1.1 剖析文件的写入 副本存储节点的选择问题&#xff1a; 第一个副本在Client所在的节点上&#xff0c;如果客户端在集群外&#xff0c;随机选一个。第二个副本在另一个机架的随机一个节点上。第三个副本在第二个副本所在的机架的随机节点上。 2. HDFS的写流…