千家信息网

Vue级联下拉框怎么实现

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,今天小编给大家分享一下Vue级联下拉框怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解
千家信息网最后更新 2024年11月23日Vue级联下拉框怎么实现

今天小编给大家分享一下Vue级联下拉框怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1.数据库设计

所有的相关数据皆可存在一张表中,这样数据就可以不受层级的限制。

表结构可以参考如下建表SQL:

CREATE TABLE `supplies_type` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `category_type` varchar(64) NOT NULL COMMENT "类别种类:大类、中类、小类",  `big_category_name` varchar(64) NOT NULL COMMENT "大类名称",  `middle_category_name` varchar(64) DEFAULT NULL COMMENT "中类名称",  `small_category_name` varchar(64) DEFAULT NULL COMMENT "小类名称",  `parent_id` int(11) DEFAULT NULL,  `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,  `create_user_name` varchar(64) DEFAULT NULL COMMENT "创建人用户名",  `update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,  `is_deleted` tinyint(1) DEFAULT "0" COMMENT "是否删除,1表示已删除",  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

数据库截图如下图所示,注:本系统为了减少查询次数,故冗余了一些字段,读者可根据自己的需求调整。

核心设计在于parent_id,根据parent_id字段即可查询到子类,结果如下图所示:


2.前端页面

前端页面效果如下:

Html代码如下:

大类: 中类:


小类:

上面的item.smallCategoryName、item.smallCategoryName数据为后端从数据库中查询出来的数据(驼峰命名),后端只负责查询、并返回结果。

Vue中数据定义如下:

data() {    return {        big: "",        bigTypes: null,        middle: "",        middleTypes: null,        small: "",        smallTypes: null    }},

在页面初始化时,自动获取大类列表:

created() {                this.getSuppliesType(0)},

页面中的getSuppliesType方法如下:

getSuppliesType(id) {  this.listLoading = true  const queryData = {    parentId: id  }  //此处的调用后端接口按照自己的调用方式写即可  //此处的getSuppliersType是项目中自己封装的util中的方法  //如果请求方式是post,JSON.stringify(queryData)  //如果请求方式是get,queryData  getSuppliersType(JSON.stringify(queryData)).then(response => {    console.log(response)    console.log(response.data[0].categoryType)    //根据type自动向三个下拉框赋值    if (response.data[0].categoryType === "BIG") {      this.bigTypes = response.data    } else if (response.data[0].categoryType === "MIDDLE") {      this.middleTypes = response.data    } else {      this.smallTypes = response.data    }    this.listLoading = false  }).catch(function (error) {    console.log(error)    this.listLoading = false  })},

3.一个完整的demo

下面这个页面为完成代码,其中的数据为部分数据,后台接口获取使用JS来完成。

以上就是"Vue级联下拉框怎么实现"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

0