位置: IT常识 - 正文

antd级联选择器(a-cascader)动态加载和动态回显效果实现(antd 级联多选)

编辑:rootadmin
antd级联选择器(a-cascader)动态加载和动态回显效果实现 文章目录1、介绍2、效果图如下图所示:(只实现3层的)3、实现方法(1)层级可单独选择(2)组件使用(3)data数据(4)实现动态加载数据1、 提示:options的数据格式是这样的2、methods方法3、异步加载数据方法4、获取2,3级组织列表(5)编辑回显1、介绍

推荐整理分享antd级联选择器(a-cascader)动态加载和动态回显效果实现(antd 级联多选),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:级联选择器多选,antd级联选择器回显,antd级联选择器获取选中值对象,antd级联选择器多选,antd级联选择器获取选中值对象,antd级联选择器获取选中值对象,antd级联选择器 多选限制数量,antd级联选择器获取选中值对象,内容如对您有帮助,希望把文章链接给更多的朋友!

​ 需要实现级联选择器动态拿到每一层级的数据并显示,同时在编辑数据时弹框回显对应的层级关系。

2、效果图如下图所示:(只实现3层的)

3、实现方法(1)层级可单独选择antd级联选择器(a-cascader)动态加载和动态回显效果实现(antd 级联多选)

​ 给组件添加 :checkStrictly="true" 这个属性就可以实现单独勾选一级、二级、三级组织关系。(官方api没有写)

(2)组件使用

​ 首先先在html里 模态框上写上a-cascader组件

<a-modal v-model="uploadNew" :title="title" :width="800" :footer="null" @cancel="resetForm"> <a-form-model :model="addForm" :label-col="labelCol" :wrapper-col="wrapperCol" ref="addForm" :rules="roleRules"> <a-form-model-item label="所属组织" prop="orgIds"> <a-cascader v-model="addForm['orgIds']" :options="options" change-on-select @change="onChange" :load-data="loadData" :checkStrictly="true" placeholder="选择组织" /> </a-form-model-item> <a-form-model-item :wrapper-col="{ span: 14, offset: 10 }"> <span @click="onSubmit" style="cursor: pointer"> 提交 </span> <span @click="resetForm" style="margin-left: 100px;cursor: pointer"> 取消 </span> </a-form-model-item> </a-form-model> </a-modal>(3)data数据 data() { return { options: [] } },(4)实现动态加载数据

​ 先实现只有动态加载数据的功能(根据官网https://1x.antdv.com/components/cascader-cn/示例即可实现)

1、 提示:options的数据格式是这样的 options: [ { value: 'zhejiang', label: 'Zhejiang', isLeaf: false,//是否叶子节点 children:[] }, { value: 'jiangsu', label: 'Jiangsu', isLeaf: false, }, ],2、methods方法

注意:(初始化时会先获取第一层级的数据)

//获取一级组织 async getOneList(){ try { let par={ parentId:'' } const res = await getOrgOneList(par) this.roleOneList=res.data.data this.roleOneList.forEach(item=>{ let temp={ value:item.id, label:item.orgName, isLeaf:false, } this.options.push(temp) }) } catch (error) { console.log(error) } }, 3、异步加载数据方法 async loadData(selectedOptions) { const targetOption = selectedOptions[selectedOptions.length - 1]; this.levelIndex=selectedOptions.length+1 //点第几级组织,selectedOptions长度就是几,点3级时,没有叶子节点,不会进入这个方法(这里只会等于2,3) targetOption.loading = true; let parentId=targetOption.value//根据父id才能查询子数组 await this.getOrgTwoList(parentId)//这个方法是掉接口,返回2,3级数据,下方有该方法 targetOption.loading = false; if(this.levelIndex<=3){ targetOption.children = this.roleTwoList } this.options = [...this.options]; }, onChange(value) { this.roleCheck=value console.log(value,'sel') },4、获取2,3级组织列表//根据父id获取2,3级组织列表 async getOrgTwoList(id){ try { let par={ parentId:id } const res = await getOrgOneList(par)//掉接口,获取下一层级数据 this.roleTwoList=[] res.data.data.forEach(item=>{ let temp={ value:item.id, label:item.orgName, isLeaf: this.levelIndex==3?true:false//判断是否是叶子节点 } this.roleTwoList.push(temp) }) } catch (error) { console.log(error) } },(5)编辑回显

在上面基础上,实现编辑的时候数据回显

//编辑用户 async editUser(row){ this.addForm=Object.assign({},row) this.addForm.orgIds=row.orgIds.split(',')//数据需要转成数组的格式 for (let i = 0; i < this.addForm.orgIds.length - 1; i++) { await this.getNextList(this.addForm.orgIds[i])//获取下一层级的数据 } this.uploadNew=true//显示弹框 },

方法实现

//根据父id获取下一层级数据 async getNextList (targetOption) { let obj = { parentId: targetOption } const res = await getOrgOneList(obj)//掉接口,获取下一层级数据 const list = res.data.data.map((item) => { // dLevel == 3 时表示是叶子节点 this.$set(item,'isLeaf',item.dLevel == 3) this.$set(item,'value',item.id) this.$set(item,'label',item.orgName) return item }) //初始化时,this.options包含全部第一层级的数据 this.options.forEach((item) => { if (item.children) { item.children.forEach((ite) => { if (ite.value == targetOption ) { this.$set(ite,'children',list) // ite['children'] = list } }) } if (item.value == targetOption) {//数据value值等于父id this.$set(item,'children',list) } }) this.options = [...this.options] },

以上getOrgTwoList和getNextList方法都是根据父id获取下一层级(2,3级)数据,可优化。

本文链接地址:https://www.jiuchutong.com/zhishi/283076.html 转载请保留说明!

上一篇:户外广告位租用费如何在税前扣除?(户外广告位怎么收费)

下一篇:牙痛怎么办,怎么快速止痛(牙痛怎么办怎么治疗)

  • 网站发展的四个阶段需要采取的网站推广方法(网站发展的四个阶段)

    网站发展的四个阶段需要采取的网站推广方法(网站发展的四个阶段)

  • 苹果手机如何添加门禁卡NFC(苹果手机如何添加输入法)

    苹果手机如何添加门禁卡NFC(苹果手机如何添加输入法)

  • freeme os是什么(freeme os是什么型号手机)

    freeme os是什么(freeme os是什么型号手机)

  • 华为mate30pro的整机重量是多少(华为mate30pro1)

    华为mate30pro的整机重量是多少(华为mate30pro1)

  • 钉钉回放一般保存几天(钉钉回放保留多长时间)

    钉钉回放一般保存几天(钉钉回放保留多长时间)

  • 抖音卡如何获取(抖音2021卡怎么拿)

    抖音卡如何获取(抖音2021卡怎么拿)

  • 最近访客30什么意思(最近访客显示30但点开啥也没有)

    最近访客30什么意思(最近访客显示30但点开啥也没有)

  • vcard文件是什么意思(vcard文件是什么格式)

    vcard文件是什么意思(vcard文件是什么格式)

  • 华为用的什么系统(华为用的什么系统版本)

    华为用的什么系统(华为用的什么系统版本)

  • x是什么处理器(xr是什么处理器)

    x是什么处理器(xr是什么处理器)

  • 强制停机多久能恢复(强制停机还会扣费吗)

    强制停机多久能恢复(强制停机还会扣费吗)

  • 电脑出现nosignal是什么意思(电脑出现nosigal有哪些原因)

    电脑出现nosignal是什么意思(电脑出现nosigal有哪些原因)

  • 手机屏幕换了是不是没有原装的好(手机屏幕换了是看不出来的吗为什么)

    手机屏幕换了是不是没有原装的好(手机屏幕换了是看不出来的吗为什么)

  • vivox30新机有没有贴膜(vivox30还生产吗)

    vivox30新机有没有贴膜(vivox30还生产吗)

  • 华为5g和4g手机有什么区别(华为5g和4g手机有什么区别 知乎)

    华为5g和4g手机有什么区别(华为5g和4g手机有什么区别 知乎)

  • iphone7plus可以快充吗(iphone7plus支持快充电吗)

    iphone7plus可以快充吗(iphone7plus支持快充电吗)

  • 微信头图尺寸(微信头图尺寸要求)

    微信头图尺寸(微信头图尺寸要求)

  • iphonex有3dtouch么

    iphonex有3dtouch么

  • 红米note8支持内存卡吗(红米Note8支持内存扩展吗)

    红米note8支持内存卡吗(红米Note8支持内存扩展吗)

  • 美团评论视频能保存吗(美团评价视频没有声音)

    美团评论视频能保存吗(美团评价视频没有声音)

  • 苹果手机游戏充值怎么用微信支付(苹果手机游戏充值成功结果没扣钱)

    苹果手机游戏充值怎么用微信支付(苹果手机游戏充值成功结果没扣钱)

  • 华为手机上有个圆圈是怎么回事(华为手机上有个小房子标志怎么关闭)

    华为手机上有个圆圈是怎么回事(华为手机上有个小房子标志怎么关闭)

  • 演示文稿设置成复合模板(演示文稿设置成透明模板)

    演示文稿设置成复合模板(演示文稿设置成透明模板)

  • 如何保护电子邮件安全(如何保护电子邮件账户不被黑客攻击)

    如何保护电子邮件安全(如何保护电子邮件账户不被黑客攻击)

  • 对文件进行数据加密(对数据文件操作,进行数据记录的交换都要经过)

    对文件进行数据加密(对数据文件操作,进行数据记录的交换都要经过)

  • mac系统怎么给iphone7和iphone7plus自定义电话铃声?(mac怎么airdrop给ipad)

    mac系统怎么给iphone7和iphone7plus自定义电话铃声?(mac怎么airdrop给ipad)

  • 达恩附近普法尔茨森林中的Altdahn城堡,德国莱茵兰-普法尔茨(Dahn Rockland), Palatinate Forest, Rhineland-Palatinate, Germany (© Reinhard Schmid/Huber/eStock Photo)(法恩达尔的信)

    达恩附近普法尔茨森林中的Altdahn城堡,德国莱茵兰-普法尔茨(Dahn Rockland), Palatinate Forest, Rhineland-Palatinate, Germany (© Reinhard Schmid/Huber/eStock Photo)(法恩达尔的信)

  • ts和js的区别(ts和js混用)

    ts和js的区别(ts和js混用)

  • gitview命令  查看文件内容(git 查看所有commit)

    gitview命令 查看文件内容(git 查看所有commit)

  • 金银首饰销售需求分析
  • 纳税人规模证明是什么
  • 桥闸通行费怎么做账务处理
  • 苗圃公司会计分录
  • 股东分红按利润表的净利润计算
  • 不动产净值包括增值税吗
  • 员工的油费补贴怎么算
  • 企业清算时未抵扣的进项税账务处理
  • 冬虫夏草开票什么税率
  • 如何看发票是否被抵扣
  • 二手房有不动产统一发票吗
  • 关于保险机构代收车船税开具增值税发票问题的公告
  • 企业收付款流程图
  • 政府高薪补贴
  • 小规模纳税人增值税免征额
  • 退税技术有什么影响
  • mac 应用
  • linux禁用root用户
  • 公户的利息收入账务处理咋处理
  • 闲置设备怎么处理
  • 结转人工费会计分录
  • 报销旅游门票怎么报销
  • php用户登录用的什么技术
  • mac如何改变照片图库
  • WIN10怎么禁止始终处于活动状态
  • 预收账款为什么不属于金融负债
  • 股东以非货币出资办理什么手续
  • 注册资本增加了
  • phpstrcmp函数
  • 基于Selenium的自动化测试平台设计与实现
  • 生物制品简易征收文件
  • vue全家桶介绍
  • pytorch多块gpu
  • HTTP 协议
  • free命令看到的内存
  • 一联发票可以开多少钱
  • 个人出租房可开发票吗
  • 借预收账款贷其他应付款什么意思
  • 无偿受赠房屋 交个人所得税嘛
  • 未达起征点附加税还需要扣税嘛
  • 平台的分销佣金是多少
  • 应收账款借方余额
  • 代扣代缴增值税怎么做账
  • 没有发票的费用调增填在哪里
  • 公司收入和开支比例
  • 出口发票开具普通发票开具汇率是根据什么订?
  • 自己生产的产品用于在建工程
  • 专用发票冲红有时间有时间限制吗
  • 未开票收入怎么报税
  • 企业应交税金包括印花税吗
  • 建筑业成本必须分别核算么
  • 采取分期收款方式
  • 贷款购车怎么做会计分录
  • 会计科目的设置原则包括( )
  • win7登录设置
  • windowsserver2008r2密码重置
  • bios是什么怎么设置
  • windows sky high
  • linux下scp远程拷贝包含空格的目录或者文件的解决方法
  • win7打开文件夹都是独立的窗口
  • Windows7 64位系统如何添加打印机图文教程
  • linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
  • linux中who命令
  • win7移动软件
  • nodejs 异步
  • Unity3D中ScreenPointToRay函数的分析-个人见解
  • Python通过DOM和SAX方式解析XML的应用实例分享
  • unity3d坐标系
  • js计算字体宽度
  • javascript tab切换
  • javascript入门·对象属性方法大总结
  • python if none
  • 让你略表情包
  • jquery动态添加html代码
  • 12366纳税服务热线存在的问题
  • 上海网上纳税申报流程
  • 党日活动与专业建设结合
  • 江苏省办理准生证的app叫什么
  • 在监狱要花钱吗
  • 地方税务局投诉有用吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设