使用element中el-cascader级联选择器动态懒加载以及回显 (单选)

本文主要是介绍使用element中el-cascader级联选择器动态懒加载以及回显 (单选),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

<template><!-- 新增||修改弹框 --><el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :title="title" :visible.sync="open"width="800px" append-to-body><el-form ref="form" :model="form" label-width="80px"><el-form-item label="地址:" prop="addressId"><el-cascader v-if="open" v-model="form.addressId" :props="props" :options="options":placeholder="addressName" /></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button type="primary" @click="submitForm">确 定</el-button><el-button @click="cancel">取 消</el-button></div></el-dialog>
</template>
<script>
// 导入接口 (根基实际项目,自定义)
import { lazyList, getUser, updateUser, addUser } from '@/api/manager/user'
var uploadingClick = 0
export default {data() {return {title: '',open: false,options: [],//     options:[  // 级联选择器的数据格式// 		{// 		"ancestors": "0,100", // 上级的deptId以逗号分割形成的字符串// 		"deptName": "测试1",// 		"deptId": 25438,// 		"parentId": 100,// 		"parentName": "测试",// 		"existSub": true  // 	},// 	{// 		"ancestors": "0,100",// 		"deptName": "测试2",// 		"deptId": 25441,// 		"parentId": 100,// 		"parentName": "测试",// 		"existSub": false// 	},//    ],addressName: '请选择',  //当前选中的nameform: {addressId: [], //选中的上下级deptId所组成的数组:比如:  [100, 25438, 25519, 25652, 25604] ,},// 表单校验rules: {addressId: [{required: true,message: '地址不能为空',trigger: 'blur'}],},props: {//是否动态加载子节点,需与 lazyLoad 方法结合使用lazy: true,value: 'deptId',label: 'deptName',children: 'children',//在选中节点改变时,是否返回由该节点所在的各级菜单的值所组成的数组,若设置 false,则只返回该节点的值emitPath: false,//是否严格的遵守父子节点不互相关联checkStrictly: true,//加载动态数据的方法,仅在 lazy 为 true 时有效//function(node, resolve),node为当前点击的节点,resolve为数据加载完成的回调(必须调用)lazyLoad(node, resolve) {const queryParams = {}queryParams.parentId = node.value//根据parentId 查询下级的数据lazyList(queryParams).then(res => {res.data.forEach(item => { // 是否存在下级,是否禁用item.leaf = !item.existSubitem.disabled = false})resolve(res.data)})}},}},methods: {// 表单重置reset() {this.form = {addressId: [],}this.resetForm('form')},/** 新增操作 */handleAdd() {this.reset()this.open = truethis.title = '添加'},/** 修改操作 */handleUpdate(row) {this.reset()const id = row.id// 调用详情的接口getUser(id).then(response => {this.form = response.data// 处理addressId ,用来获取所有上下级deptId组成的数组this.form.addressId = this.dataEchoHandle(response.data)this.open = truethis.title = '修改'})},// Cascader 级联选择器 懒加载  数据回显dataEchoHandle(row) { // // 获取到当前的addressIdlet ancestors = row.addressId // 当前的id,比如:25604if (row.ancestors && row.ancestors != '') { // 格式:'0,100, 25438, 25519, 25652'// 对数据进行回显(获取所有父级的addressId,加上当前的addressId,组成的数组。)ancestors = row.ancestors.split(',')ancestors.shift() //去掉0ancestors = ancestors.map(Number) // 数组的每个元素由string转为number类型ancestors.push(row.addressId) // 将当前的id加入console.log(ancestors, 'ancestors')  // 获取到所有的id组成的数组  [100, 25438, 25519, 25652, 25604] }return ancestors},// 取消按钮cancel() {this.open = falsethis.reset()},/** 提交按钮 */submitForm: function () {if (uploadingClick == 0) {uploadingClick = 1this.$refs['form'].validate(valid => {if (valid) {console.log('this.form', this.form)const params = JSON.parse(JSON.stringify(this.form))// return;if (this.form.id != undefined) {if (params.addressId instanceof Array) {// 数组类型params.addressId = params.addressId[params.addressId.length - 1]}console.log('params修改', params)// return;updateUser(params).then(response => {this.$modal.msgSuccess('修改成功')this.open = false})} else {addUser(params).then(response => {this.$modal.msgSuccess('新增成功')this.open = false})}}})setTimeout(function () {uploadingClick = 0}, 3000)} else {this.$modal.msgError('请勿重复点击')}},}
}
</script>

在这里插入图片描述
在这里插入图片描述

这篇关于使用element中el-cascader级联选择器动态懒加载以及回显 (单选)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/552252

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

MyBatis延迟加载与多级缓存全解析

《MyBatis延迟加载与多级缓存全解析》文章介绍MyBatis的延迟加载与多级缓存机制,延迟加载按需加载关联数据提升性能,一级缓存会话级默认开启,二级缓存工厂级支持跨会话共享,增删改操作会清空对应缓... 目录MyBATis延迟加载策略一对多示例一对多示例MyBatis框架的缓存一级缓存二级缓存MyBat

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三