当前位置: 首页 > news >正文

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

第一种

<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 需要是整数,则可能需要进行额外的转换。

http://www.lryc.cn/news/436387.html

相关文章:

  • 【机器学习导引】ch2-模型评估与选择
  • 二开ihoneyBakFileScan备份扫描
  • leetcode21. 合并两个有序链表
  • 搭建 WordPress 及常见问题与解决办法
  • 《ORANGE‘s 一个操作系统的实现》--保护模式进阶
  • 【可变参模板】可变参类模板
  • Linux 递归删除大量的文件
  • 设计一个算法,找出由str1和str2所指向两个链表共同后缀的起始位置
  • Python中如何判断一个变量是否为None
  • 表观遗传系列1:DNA 甲基化以及组蛋白修饰
  • Android 跳转至各大应用商店应用详情页
  • Pywinauto鼠标操作指南
  • VRAY云渲染动画怎么都是图片?
  • 共享内存(C语言)
  • 《JavaEE进阶》----16.<Mybatis简介、操作步骤、相关配置>
  • HuggingFists算子能力扩展-PythonScript
  • WInform记录的添加和显示
  • ★ C++基础篇 ★ string类的实现
  • rman compress
  • 创建一个Oracle版本的JDK的Docker镜像
  • Harmony OS DevEco Studio 如何导入第三方库(以lottie为例)?-- HarmonyOS自学2
  • JAVA数据导出为Excel
  • 【数据结构与算法 | 灵神题单 | 快慢指针(链表)篇】力扣876, 2095, 234
  • 第十五届蓝桥杯图形化省赛题目及解析
  • linux下NTP服务器实战(chrony软件)
  • Java设计模式之命令模式介绍和案例示范
  • Leetcode面试经典150题-74.搜索二维矩阵
  • 【数字集成电路与系统设计】基本的组合逻辑电路
  • 11. 建立你的第一个Web3项目
  • 衡石分析平台使用手册-容器部署