二级菜单的两种思路(完成部分)
第一种
<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-optionv-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-optionv-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
需要是整数,则可能需要进行额外的转换。
相关文章:

二级菜单的两种思路(完成部分)
第一种 <el-form ref"formRef" :model"form" :rules"rules" label-width"120px"><el-form-item label"类型" prop"type"><el-select v-model"form.type" placeholder"请选择类型&q…...

【机器学习导引】ch2-模型评估与选择
文章目录 经验误差与过拟合 (Empirical error &overfitting)1. **均方误差(Mean Squared Error, MSE)**2. **均方根误差(Root Mean Squared Error, RMSE)**3. **平均绝对误差(Mean Absolute…...
二开ihoneyBakFileScan备份扫描
优点:可以扫描根据域名生成的扫描备份的扫描工具 二开部分:默认网址到字典(容易被封),二开字典到网址(类似test404备份扫描规则),同时把被封不能扫描的网址保存到waf_url.txt 中&am…...

leetcode21. 合并两个有序链表
思路: 用一个新链表来表示合并后的有序链表, 每次比较两个链表,将较小的那个结点存储至新链表中 # Definition for singly-linked list. # class ListNode(object): # def __init__(self, val0, nextNone): # self.val val # …...

搭建 WordPress 及常见问题与解决办法
浪浪云活动链接 :https://langlangy.cn/?i8afa52 文章目录 环境准备安装 LAMP 堆栈 (Linux, Apache, MySQL, PHP)配置 MySQL 数据库 安装 WordPress配置 WordPress常见问题及解决办法数据库连接错误白屏问题插件或主题冲突内存限制错误 本文旨在介绍如何在服务器上…...

《ORANGE‘s 一个操作系统的实现》--保护模式进阶
保护模式进阶 大内存读写 GDT段 ;GDT [SECTION .gdt] ; 段基址, 段界限 , 属性 LABEL_GDT: Descriptor 0, 0, 0 ; 空描述符 LABEL_DESC_NORMAL: Descriptor 0, 0ffffh, DA_DRW ; Normal 描…...

【可变参模板】可变参类模板
可变参类模板也和可变参函数模板一样,允许模板定义含有0到多个(任意个)模板参数。可变参类模板参数包的展开方式有多种,以下介绍几种常见的方法。 一、递归继承展开 1.1类型模板参数包的展开 首先先看下面的代码: /…...
Linux 递归删除大量的文件
一般情况下 在 Ubuntu 中,递归删除大量文件和文件夹可以通过以下几种方式快速完成。常用的方法是使用 rm 命令,配合一些适当的选项来提高删除速度和效率。 1. 使用 rm 命令递归删除 最常见的方式是使用 rm 命令的递归选项 -r 来删除目录及其所有内容。…...

设计一个算法,找出由str1和str2所指向两个链表共同后缀的起始位置
假定采用带头结点的单链表保存单词,当两个单词有相同的后缀时,则可共享相同的后缀存储空间,例如,’loading’和’being’的存储映像如下图所示。 设str1和str2分别指向两个单词所在单链表的头结点,链表结点结构为 data…...
Python中如何判断一个变量是否为None
在Python中,判断一个变量是否为None是一个常见的需求,特别是在处理可选值、默认值或者是在函数返回结果可能不存在时。虽然这个操作本身相对简单,但围绕它的讨论可以扩展到Python的哲学、类型系统、以及如何在不同场景下优雅地处理None值。 …...

表观遗传系列1:DNA 甲基化以及组蛋白修饰
1. 表观遗传 表观遗传信息很多为化学修饰,包括 DNA 甲基化以及组蛋白修饰,即DNA或蛋白可以通过化学修饰添加附加信息。 DNA位于染色质(可视为微环境)中,并不是裸露的,因此DNA分子研究需要跟所处环境结合起…...
Android 跳转至各大应用商店应用详情页
测试通过机型品牌: 华为、小米、红米、OPPO、一加、Realme、VIVO、IQOO、荣耀、魅族、三星 import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import …...
Pywinauto鼠标操作指南
Pywinauto是一个强大的Python库,用于自动化Windows桌面应用程序的测试。它提供了一系列工具和API来模拟用户输入,包括键盘、鼠标事件,以及与各种窗口控件交互的能力。本文将详细介绍如何使用Pywinauto来执行鼠标操作,并通过一些示…...

VRAY云渲染动画怎么都是图片?
动画实际上是由一系列连续的静态图像(帧)组成的,当这些帧快速连续播放时,就形成了动画效果。每一帧都是一个单独的图片,需要单独渲染。 云渲染农场的工作方式: 1、用户将3D场景文件和动画设置上传到云渲染…...
共享内存(C语言)
目录 一、引言 二、共享内存概述 1.什么是共享内存 2.共享内存的优势 三、共享内存的实现 1.创建共享内存 2.关联共享内存 3.访问共享内存 4.解除共享内存关联 5.删除共享内存 四、共享内存应用实例 五、总结 本文将深入探讨C语言中的共享内存技术,介绍其原理、…...

《JavaEE进阶》----16.<Mybatis简介、操作步骤、相关配置>
本篇博客讲记录: 1.回顾MySQL的JDBC操作 2..Mybatis简介、Mybatis操作数据库的步骤 3.Mybatis 相关日志的配置(日志的配置、驼峰自动转换的配置) 前言 之前学习应用分层时我们知道Web应用程序一般分为三层,Controller、Service、D…...

HuggingFists算子能力扩展-PythonScript
HuggingFists作为一个低代码平台,很多朋友会关心如何扩展平台算子能力。扩展平台尚不支持的算子功能。本文就介绍一种通过脚本算子扩展算子能力的解决方案。 HuggingFists支持Python和Javascript两种脚语言的算子。两种语言的使用方式相同,使用者可以任选…...
WInform记录的添加和显示
1、程序 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace ComboBoxApp {public part…...

★ C++基础篇 ★ string类的实现
Ciallo~(∠・ω< )⌒☆ ~ 今天,我将继续和大家一起学习C基础篇第五章下篇----string类的模拟实现 ~ 上篇:★ C基础篇 ★ string类-CSDN博客 C基础篇专栏:★ C基础篇 ★_椎名澄嵐的博客-CSDN博客 目录 一 基础结构 二 迭代器 …...
rman compress
级别 初始 备完 耗时 low 1804 3572 0:10 High 1812 3176 2:00 MEDIUM 1820 3288 0:13 BASIC 1828 3444 0:56 ---不如MEDIUM,时间还长 NO COMPRESS 1820 5924 0:5 R…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...