Element-ui(Cascader 级联选择器)实现三级联动

这篇具有很好参考价值的文章主要介绍了Element-ui(Cascader 级联选择器)实现三级联动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1:将省市县数据三张表存放到数据库中

市区表:

CREATE TABLE `med_cities` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `cityid` char(6) NOT NULL COMMENT '城市编码',
  `city` varchar(40) NOT NULL COMMENT '城市名称',
  `provinceid` char(6) NOT NULL COMMENT '所属省份编码',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=346 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='城市信息表';

县区表:

CREATE TABLE `med_areas` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `areaid` char(6) NOT NULL COMMENT '区县编码',
  `area` varchar(40) NOT NULL COMMENT '区县名称',
  `cityid` char(6) NOT NULL COMMENT '所属城市编码',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3145 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='区县信息表';

省级表:

CREATE TABLE `med_provinces` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provinceid` int(11) NOT NULL,
  `province` varchar(100) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=392 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

2:在后端处理省市县所对应的数据

Controller层:

/**
 * @Author 爱吃豆的土豆、
 * @Date 2023/3/10 10:45
 */
@RestController
@RequestMapping("/provinces")
public class ProvincesController {
    @Resource
    private ProvincesService provincesService;

    @GetMapping
    public BaseResult findAllprovinces(){
        List<MedProvinces> provincesList = provincesService.findAllprovinces();
        if (provincesList != null){
            return BaseResult.ok("查询成功",provincesList);
        }else {
            return BaseResult.error("查询失败");
        }
    }
}

service层

/**
 * @Author 爱吃豆的土豆、
 * @Date 2023/3/10 10:46
 */
public interface ProvincesService extends IService<MedProvinces> {
    List<MedProvinces> findAllprovinces();
}

serviceimpl实现

@Service
public class ProvincesServiceImpl extends ServiceImpl<ProvincesMapper,MedProvinces> implements ProvincesService {

    @Override
    public List<MedProvinces> findAllprovinces() {
        List<MedProvinces> allprovince = this.baseMapper.findAllprovince();
        return allprovince;
    }
}

mapper层实现

映射省下面所有的市

/**
 * @Author 爱吃豆的土豆、
 * @Date 2023/3/10 10:33
 */
@Mapper
public interface ProvincesMapper extends BaseMapper<MedProvinces> {
    @Select("select * from med_provinces")
    @Results({
            @Result(property = "id",column = "id"),
            @Result(property = "provinceid",column = "provinceid"),
            @Result(property = "province",column = "province"),
            @Result(property = "children",column = "provinceid",many = @Many(select = "com.czxy.medical.mapper.CitiesMapper.findAllCity"))
    })
    public List<MedProvinces> findAllprovince();

}

映射市下面所有的县

/**
 * @Author 爱吃豆的土豆、
 * @Date 2023/3/10 10:35
 */
@Mapper
public interface CitiesMapper extends BaseMapper<MedCities> {
    @Select("SELECT * FROM med_cities WHERE med_cities.provinceid = #{provinceid}")
    @Results({
            @Result(property = "id",column = "id"),
            @Result(property = "cityid",column = "cityid"),
            @Result(property = "city",column = "city"),
            @Result(property = "provinceid",column = "provinceid"),
            @Result(property = "children",column = "cityid",many = @Many(select = "com.czxy.medical.mapper.AreasMapper.findAllArea"))
    })
    public List<MedCities> findAllCity(@Param("provinceid") Integer provinceid);


 }

查询所有的区县

/**
 * @Author 爱吃豆的土豆、
 * @Date 2023/3/10 10:33
 */
@Mapper
public interface AreasMapper extends BaseMapper<MedAreas> {
    @Select("SELECT * FROM med_areas WHERE cityid = #{cityid}")
    public List<MedAreas> findAllArea(@Param("cityid") Integer cityid);

}

对应的省JavaBean

@Data
@TableName(value = "med_provinces")
public class MedProvinces {
  @TableId(type = IdType.AUTO,value = "id")
  private Integer id;

  @JsonProperty("value")
  @TableField(value = "provinceid")
  private Integer provinceid;

  @JsonProperty("label")
  @TableField(value = "province")
  private String province;

  @TableField(exist = false)
  private List<MedCities> children = new ArrayList<>();
}

对应市JavaBean

@Data
@TableName(value = "med_cities")
public class MedCities {
  @TableId(type = IdType.AUTO,value = "id")
  private Integer id;

  @JsonProperty("value")
  @TableField(value = "cityid")
  private Integer cityid;

  @JsonProperty("label")
  @TableField(value = "city")
  private String city;

  @JsonProperty("pid")
  @TableField(value = "provinceid")
  private Integer provinceid;

  @TableField(exist = false)
  private List<MedAreas> children = new ArrayList<>();
}

对应的县区JavaBean

@Data
@TableName(value = "med_areas")
public class MedAreas {
  @TableId(value = "id", type = IdType.AUTO)
  private Integer id;

  @JsonProperty("value")
  @TableField(value = "areaid")
  private String areaid;

  @JsonProperty("label")
  @TableField(value = "area")
  private String area;

  @TableField(value = "cityid")
  private Integer cityid;


}

3:Cascader 级联选择器,进行回显操作

级联选择器

              <el-cascader
                    v-model="value"
                    :options="placeList"
                    size="medium"
                    :props="{
                      expandTrigger: 'hover',
                    }"
                    @change="handleChange">
                  </el-cascader>
data() {
    return {
      value: [],
      placeList: []
    };
  },

方法:

methods: {
    handleChange(value) {
      console.log(value);
    },
    async findAllplaceFn() {
      let {data: baseResult} = await this.$request.findAllplace()
      this.placeList = baseResult.data
    }
  },

注意:级联选择器需要保持和后端映射保持一致回显数据

element-ui官网级联选择器示例:文章来源地址https://www.toymoban.com/news/detail-516153.html

elementui三级联动,java,数据库,开发语言,Powered by 金山文档
elementui三级联动,java,数据库,开发语言,Powered by 金山文档

到了这里,关于Element-ui(Cascader 级联选择器)实现三级联动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • element-ui el-cascader级联选择器设置指定层级不能选中(示例代码)

    本文为转载原地址:https://www.136.la/shida/show-396330.html 有时候用element-ui el-cascader级联选择器添加分类时会遇到最多添加几级的限定.看了文档,只要给需要禁止选择的选项添加disabled属性就可以.但是使用一层一层循环遍历数据感觉很麻烦,自己写了个遍历的方法,纪录下,方便以后使

    2024年02月11日
    浏览(40)
  • element ui 中 Cascader 级联选择器实现 动态加载 动态禁用 入门

    实现效果 当点击的 根选项 有 子选项 时,会向后台发送请求,并且接收数据实现动态加载。 点击特殊选项时,可以禁用其他选项。 相关代码 props prop handleClassOrStudentChange

    2024年02月11日
    浏览(29)
  • Vue+element-ui的el-cascader实现动态添加删除级联地点输入框

    实现省市区三级地点级联选择,可联想; 包括始发地点、途径地点、终止地点,始发地点、终止地点均为一个,途径地点可以没有也可以是多个; 用户可以动态添加/删除途径地点。 使用级联选择器Cascader需要的树形数据,前端请求到后端获取省市区数据并处理为elementui官网

    2024年02月04日
    浏览(35)
  • element ui cascader级联选择器 动态加载以及回显

    当数据比较多的时候,一次性获取全部数据速度太慢,而且体验不太好,所有需要用到懒加载,一级一级的选择数据就能很好避免速度慢的问题。 以及我们使用el-cascader加载默认值的时候,cascader的输入框和联级选择框都会遇到的回显问题。看代码!!! 参数说明: value / v-model 选中

    2024年02月15日
    浏览(47)
  • vue element UI el-cascader 级联选择器 获取当前选择值的整个对象

    要使用到cascader组件选中的数据的所有部分,并没有类似于select组件中的value可以指定,查看官方文档提供了新的方法,官方地址https://element.eleme.cn/#/zh-CN/component/cascader html部分 可以正常获取到该节点的全部数据,如下图所示: 如有问题请联系我~ 欢迎加入QQ群:

    2024年02月15日
    浏览(35)
  • Element UI 自定义省市区三级联动选择组件

    https://blog.csdn.net/qq_42690194/article/details/125669141

    2024年02月11日
    浏览(52)
  • 利用级联选择器实现省市区三级联动【vue + elementUI Plus | uViewUI】

    行政区划代码数据下载 github 链接 首先获得省市区三级联动数据 pca-code.json 放置在项目文件夹内 数据格式如图: elementUI 级联选择器 props elementui 级联选择器api提供 props 将value,label,children指定为当前数据的自定义属性值 通过 :props=“cityProps” 2. getCheckedNodes 绑定值变化时触

    2024年02月09日
    浏览(48)
  • 前端小记--2.element-ui中级联选择器cascader如何默认展开下拉框

    最近做项目时,遇到一个需求:在一个排班表中,展示人员的值班情况,点击单元格,弹出下拉框,修改人员排班信息。 由于下拉框选择内容是树状结构,这里使用了element-ui中级联组件cascader,设置单选模式即可。但是在官方的文档中没找到默认展开下拉框的api,折腾了一番

    2024年02月01日
    浏览(35)
  • vue中使用element-ui ,设置级联选择器高度问题

    我本来以为设置elemnt-ui组件样式需要用到深度选择器,然后找了好多关于深度选择器的,比如 /deep/ ::v-deep 后来才明白是权重不够,解决方法如下 1、在全局css中设置 缺点:所有级联选择器的高度都是固定的 结论:只有在所有页面级联选择器都一致的情况下或者只有一个级联

    2024年02月12日
    浏览(35)
  • vue.js3 setup风格 element-ui 级联选择器clearCheckedNodes使用方法

    Cascader 级联选择器 | Element Plus 官方文档里提到可以清空选中节点,使用 clearCheckedNodes()方法:   具体用法: 1 先了解vue3 setup中怎么获取ref 获取方法非常简单,在需要获取的组件里写ref,在setup里定义同名空ref,就会自动获取了 定义ref: 在setup里定义同名空ref: 然后操作mu

    2024年02月12日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包