ant design vue级联选择懒加载省市区三级数据

摘要:
该项目最初的一级数据被显示,后来根据需要被更改为精确到县。使用级联选择。后台返回省的字典接口,该接口根据codeValue级别1查询动态加载。

项目中原先是展示的一级数据,后面根据需求改成精确到县的。

使用Cascader级联选择,后台返回的是获取省份的字典接口,根据codeValue一级级查询进行动态加载。

ant design vue级联选择懒加载省市区三级数据第1张

 

                <a-form-model-item
                prop="projectArea"
                ref="projectArea"
                :labelCol="{ span: 10 }"
                :wrapperCol="{ span: 12 }"
                label="项目部所在地:"
                >
                    <a-tooltip>
                        <template slot="title"> 项目部所在地 </template>
                        <a-cascader
                            :allowClear="false"
                            :options="projectAreaOptions"
                            v-model="form1.projectArea"
                            placeholder="请选择区域"
                            :loadData="loadAreaData"
                            @change="onAreaChange"
                            :getPopupContainer="(trigger) => {return trigger.parentElement}">
                        </a-cascader>
                    </a-tooltip>
                </a-form-model-item>

  

async mounted() {
        this.getAppendTemplate();
        const data = await this.getAreaList() || [];
        this.projectAreaOptions = data.map(item => {
            item.leaf = false;
            return item;
        })
 }

  

        //获取省份数据
        getAreaList(code) {
            return new Promise((resolve, reject) => {
                code = -1;
                publicapi.findAllProvinceLazy(code).then(res => {
                    if (res.options) {
                        let arr = res.options.map(item => {
                            return {
                                value: item.id,
                                label: item.label,
                                isLeaf: item.leaf
                            }
                        })
                        return resolve(arr)
                    } else {
                        return resolve([])
                    }
                }).catch((err) => {
                    return reject(err)
                })
            })
        },
        //获取下一级数据
        async loadAreaData(selectedOptions) {            
            if (!this.projectAreaOptions.length) {
                this.projectAreaOptions = await this.getAreaList() || [];
            } else {
                const targetOption = selectedOptions[selectedOptions.length - 1];
                targetOption.loading = true;
                const data = await publicapi.findAllProvinceLazy(targetOption.value);
                console.log(data, 'targetOption.value', targetOption.value);
                if (data.options.length) {
                    for (let index = 0; index < data.options.length; index ++) {
                        const element = data.options[index];
                        if (element.children) { delete  element.children }
                        element.value = element.id;
                        element.isLeaf = false;
                    }
                    targetOption.loading = false;
                    targetOption.children = [...data.options];                    
                    this.projectAreaOptions = JSON.parse( JSON.stringify(this.projectAreaOptions) );
                } else {
                    targetOption.loading = false;
                    targetOption.isLeaf = true;
                }
            }
        },
        //选择区域后的操作
        onAreaChange(val, selectedOptions) {
            console.log(val, selectedOptions, 'val, selectedOptions')
        },

  

非懒加载的级联,后台一次性返回所有数据机构

<a-cascader 
      :options="projectAreaOptions" 
      v-model="form1.projectArea"
      placeholder="请选择区域" 
      @change="onAreaChange" 
      :field-names="{label: 'label', value: 'id', children: 'children'}"
      :getPopupContainer="(trigger) => {return trigger.parentElement}"
/>

使用fieldNames自定义options 中 label name children 的字段

后台返回的数据

ant design vue级联选择懒加载省市区三级数据第2张

 

ant design vue级联选择懒加载省市区三级数据第3张

 

免责声明:文章转载自《ant design vue级联选择懒加载省市区三级数据》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用Innosetup制作安装包的一些技巧Tomcat配置https之 JDK SSL证书生成与验证下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

laravel查询数据库获取结果如何判断是否为空?

laravel 查询数据库获取结果如何判断是否为空? 大家使用的场景是这样的: 1 $users = DB::table('users')->where('id',$id)->get(); 2 3 if($users){ 4 //有数据 5 }else{ 6 //没数据 7 } 8 或 9 if(is_...

Vue组件切换-以登录注册为例【加动画效果】

方式一:v-show或者v-if&v-else,通过控制一个标志位的bool值来实现组件的切换 [] 方式一有局限性,就是只能控制两个组件间的切换,因为bool值就true和false两个。 方式二:使用vue官方提供的<component>标签,通过给这个标签绑定is属性实现多个组件之间的切换 <!DOCTYPEhtml&g...

从excel导入数据时显现进度条用java导入Excel数据到数据库(实时进度条)

导入数据的步骤如下:   一:先上传所导入库EXCEL    二:分析EXCEL并导入 新增时间和速度功能 由于之前的版本是通过session传递实现进度,在集群模式下就出现了问题。详见 http://www.cnblogs.com/interdrp/p/5670854.html 2016-07-14更新支持Spring 4.3.1.REL...

从更高到更好 揭秘2021阿里双11背后的技术亮点

​简介:今年,是阿里巴巴第13个双11。今年双11,阿里巴巴大促峰值的计算成本相比去年下降50%;截至11日,小蛮驴无人车在双11期间累计配送快递已超过100万件。更多的阿里自研技术投入到双11,在芯片、服务器等硬核技术攻坚的同时,技术也在推动全链路的降本增效。除了深耕自立自强的高科技,阿里还在践行“人人受益、责任担当、开放共享”的好科技,希望用技术给客户...

vue 三个环境域名 与 访问url域名不一致 配置,要是一样完全可以 取url地址

# just a flagENV = 'development' # base apiVUE_APP_BASE_API = 'http://dev.api.watermarker-v1.moviebook.cn'       # just a flagENV = 'production'# base apiVUE_APP_BASE_API...

Pytorch:transforms二十二种数据预处理方法及自定义transforms方法

数据增强 transforms是pytorch中用于数据增强的模块,首先再简单描述下数据增强的概念: 数据增强又称为数据增广,数据扩增,它是对训练集进行变换,使训练集更丰富,从而让模型根据泛化能力 举个非常生动形象的例子,五年高考三年模拟相信大家都知道,其实这就是一个学习模型,其中的三年模拟试题就是数据增强 具体的各类方法 裁剪 crop transfo...