使用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 枚举的基本使用方法及实际使用场景

《Java枚举的基本使用方法及实际使用场景》枚举是Java中一种特殊的类,用于定义一组固定的常量,枚举类型提供了更好的类型安全性和可读性,适用于需要定义一组有限且固定的值的场景,本文给大家介绍Jav... 目录一、什么是枚举?二、枚举的基本使用方法定义枚举三、实际使用场景代替常量状态机四、更多用法1.实现接

springboot项目中使用JOSN解析库的方法

《springboot项目中使用JOSN解析库的方法》JSON,全程是JavaScriptObjectNotation,是一种轻量级的数据交换格式,本文给大家介绍springboot项目中使用JOSN... 目录一、jsON解析简介二、Spring Boot项目中使用JSON解析1、pom.XML文件引入依

Java中的record使用详解

《Java中的record使用详解》record是Java14引入的一种新语法(在Java16中成为正式功能),用于定义不可变的数据类,这篇文章给大家介绍Java中的record相关知识,感兴趣的朋友... 目录1. 什么是 record?2. 基本语法3. record 的核心特性4. 使用场景5. 自定

MyBatis编写嵌套子查询的动态SQL实践详解

《MyBatis编写嵌套子查询的动态SQL实践详解》在Java生态中,MyBatis作为一款优秀的ORM框架,广泛应用于数据库操作,本文将深入探讨如何在MyBatis中编写嵌套子查询的动态SQL,并结... 目录一、Myhttp://www.chinasem.cnBATis动态SQL的核心优势1. 灵活性与可

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一