使用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>

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

仓库申请报错:Cannot access gated repo for url https://huggingface.co/api

这个报错主要是使用huggingface里面的仓库的模型或其他文件需要提供访问权利&#xff0c; 1.需要有自己的huggingface账号&#xff08;没有则创建&#xff09; 2.右上角点进个人中心&#xff0c;然后找到Access Tokens&#xff0c; 3.设置新的或者Tokens&#xff0c;设置为读…

Linux之缓冲区的理解

目录 一、问题引入 二、缓冲区 1、什么是缓冲区 2、刷新策略 3、缓冲区由谁提供 4、重看问题 三、缓冲区的简单实现 一、问题引入 我们先来看看下面的代码&#xff1a;我们使用了C语言接口和系统调用接口来进行文件操作。在代码的最后&#xff0c;我们还使用fork函数创建…

牛客网面试题知识点记录-02

1.collection接口 2.在构造方法中调用方法A,若方法A被子类重写&#xff0c;则会先调用子类的方法A。举例如下题&#xff1a; 此时会输出null&#xff0c;调用顺序为&#xff1a;子类初始化&#xff0c;但是子类实现了Base&#xff0c;会先执行Base的构造方法&#xff0c;构造…

【C语言数组传参】规则详解

目录 数组传参介绍 数组传参规则 数组传参的实参 特殊情况一&#xff1a;sizeof&#xff08;数组名&#xff09; 特殊情况二&#xff1a;&数组名 数组传参的形参 数组传参使用数组名作为形参接收 形参如果是⼀维数组 形参如果是⼆维数组 数组传参使用指针作为形参…

登峰造极,师出造化,Pytorch人工智能AI图像增强框架ControlNet绘画实践,基于Python3.10

人工智能太疯狂&#xff0c;传统劳动力和内容创作平台被AI枪毙&#xff0c;弃尸尘埃。并非空穴来风&#xff0c;也不是危言耸听&#xff0c;人工智能AI图像增强框架ControlNet正在疯狂地改写绘画艺术的发展进程&#xff0c;你问我绘画行业未来的样子&#xff1f;我只好指着Cont…

nginx源码分析-3

这一章内容讲述nginx中的事件是如何一步步添加到epoll实例中的。 在初始化http连接的函数ngx_http_init_connection中&#xff0c;nginx为http连接初始化了处理请求的回调函数&#xff0c;之后调用ngx_handle_read_event函数对可读数据进行处理。这里只为连接设置read而没有设…

Python生成器 (Generators in Python)

Generators in Python 文章目录 Generators in PythonIntroduction 导言贯穿全文的几句话为什么 Python 有生成器Generator&#xff1f;如何获得生成器Generator&#xff1f;1. 生成器表达式 Generator Expression2. 使用yield定义生成器Generator 更多Generator应用实例表示无…

一文道破Java NIO

文章目录 一、常见的几种 Java IO 工作模式1.1 同步阻塞 IO1.2 同步非阻塞 IO1.3 异步非阻塞 IO 二、Java NIO 多路复用详解2.1 原理图2.2 基础组件简介SelectorChannelSelectionKey 2.3 Java NIO 代码示例2.4 Linux 支持多路复用的系统调用函数select 函数poll 函数epoll 函数…

十二星座女生、谁最拥有当潮 “女神范儿” 排名 。

请点击 → 「链接」 ← 查看&#xff01; ​​​​​​​ 冠军&#xff08;天秤座&#xff09;、亚军&#xff08;处女座&#xff09;、季军&#xff08;巨蟹座&#xff09; 第四名&#xff08;双鱼座&#xff09;、第五名&#xff08;狮子座&#xff09;、第六名&…

Python/R/GUI/BI类型常用数据可视化工具

什么是数据可视化工具&#xff1f; 数据可视化工具是指旨在可视化数据的所有形式的软件。它们处理数据输入&#xff0c;将其转换为用户可以根据自己的需求进行定制的视觉效果。 不同的工具可以包含不同的功能&#xff0c;但最基本的是&#xff0c;数据可视化工具提供输入数据集…

Android MVC 写法

前言 Model&#xff1a;负责数据逻辑 View&#xff1a;负责视图逻辑 Controller&#xff1a;负责业务逻辑 持有关系&#xff1a; 1、View 持有 Controller 2、Controller 持有 Model 3、Model 持有 View 辅助工具&#xff1a;ViewBinding 执行流程&#xff1a;View >…

python测试工具: 实现数据源自动核对

测试业务需要&#xff1a; 现有A系统作为下游数据系统&#xff0c;上游系统有A1,A2,A3... 需要将A1,A2,A3...的数据达到某条件后&#xff08;比如&#xff1a;A1系统销售单提交出库成功&#xff09;自动触发MQ然后再经过数据清洗落到A系统&#xff0c;并将清洗后数据通过特定…