element ui 下拉菜单组件 结合springboot 实现省市区简易三级联动 动态查询 并修改地点的省市区

目录

前言:

一.数据库表结构:

 二.下拉菜单组件

2.1 效果展示

2.2下拉菜单的组件代码:


前言:

本篇博客,通过官网的学习,实现下拉菜单动态数据的传递与点击事件,如果只是按部就班的按照官网来,官网下拉菜单模板所提供的事件只能传死数据,很多博主都是照虎画猫,传递死数据,含金量不够。但是这一篇,不一样。如果感觉被骗,请在评论区直接开骂

一.数据库表结构:

 

 通过自连接查询市,区,懂得都懂,发个sql语句

查询市:

select a2.*
from sys_area a1
         join sys_area a2 on a2.parentId = a1.code
where a1.code = #{code}

查询区:

select a3.*
from sys_area a1
         join sys_area a2 on a2.parentId = a1.code
         join sys_area a3 on a3.parentId = a2.code
where a2.code =#{code}

 二.下拉菜单组件

2.1 效果展示

 页面不够美观,但是功能没有问题,另外,湖南的朋友,包括各地的朋友可以看看查询的效果对不对,是否有自己的家乡

2.2下拉菜单的组件代码:

        <!--        省份下拉框-->
        <el-dropdown @click="selectCityByProvince" trigger="click" split-button="true" placement="top-start">
  <span class="el-dropdown-link">省
    <i class="el-icon-arrow-down el-icon--right"></i>
  </span>
          <el-dropdown-menu slot="dropdown">
            <el-dropdown-item v-for="province in provinces"
                              @click.native="selectCityByProvince(province.name,province.code)">{{ province.name }}
            </el-dropdown-item>
          </el-dropdown-menu>
        </el-dropdown>

        <!--        城市下拉框-->
        <el-dropdown @click="selectDistrictByCity" trigger="click" split-button="true" placement="top-start">
  <span class="el-dropdown-link">市
    <i class="el-icon-arrow-down el-icon--right"></i>
  </span>
          <el-dropdown-menu slot="dropdown">
            <el-dropdown-item v-for="city in cities" @click.native="selectDistrictByCity(city.name,city.code)">
              {{ city.name }}
            </el-dropdown-item>
          </el-dropdown-menu>
        </el-dropdown>

        <!--        区域下拉框-->
        <el-dropdown @click="saveCommunityForUpdate" trigger="click" split-button="true" placement="top-start">
  <span class="el-dropdown-link">市
    <i class="el-icon-arrow-down el-icon--right"></i>
  </span>
          <el-dropdown-menu slot="dropdown">
            <el-dropdown-item v-for="dis in districts" @click.native="saveCommunityForUpdate(dis.name,dis.code)">
              {{ dis.name }}
            </el-dropdown-item>
          </el-dropdown-menu>
        </el-dropdown>

看过官网的朋友,看懂结构应该不成问题,但还是把重点讲解一下

1.

<el-dropdown @click="saveCommunityForUpdate" trigger="click" split-button="true" placement="top-start">

官网绑定的是command只能传递死数据,替换成click,trigger是用来实现下拉菜单的展示是通过点击展开,还是通过hover展开

2.

<el-dropdown-item v-for="dis in districts" @click.native="saveCommunityForUpdate(dis.name,dis.code)">
  {{ dis.name }}
</el-dropdown-item>

遍历,同时绑定点击事件,点击选项框,即可触发点击事件。官网的页面如下

触发事件后传递的数据是死的。另外,经过我的研究,command内不能传递动态数据,如果可以的话在评论区教教我 

2.3查询方法:

selectCityByProvince(name, code) {
      console.log(name)
      console.log(code)
      this.provinceName = name
      //发送请求查询省下面的市
      this.axios.get("http://localhost:8080/selectCity?code=" + code)
          .then(result => {
            if (result.data.status == "OK") {
              console.log("查询省下面的市" + result);
              //将查询结果存入cities
              this.cities = result.data.data
              //将省的编号给对象
              this.community.communityProvenceCode = code
            }
          })
    },
    //通过市查询区的方法
    selectDistrictByCity(name, code) {
      this.axios.get("http://localhost:8080/selectDistrict?code=" + code)
          .then(result => {
            if (result.data.status == "OK") {
              console.log("查询到的区" + result)
              this.districts = result.data.data;
              //将修改的市的编号给对象
              this.community.communityCityCode = code
            }
          })
    },

    saveCommunityForUpdate(name, code) {
      console.log("查询到的区" + name)
      this.community.communityTownCode = code
      console.log(this.community.communityTownCode)

    },

 思路:

1.进入该页面的时候,查询所有省份的数据,传给省份的下拉菜单。

2.点击选中的省份触发点击事件,发送请求给后端,返回该省份所拥有的城市的信息,通过自连接实现。

3.点击选中的市,查询出该市拥有的区。

4.将选中的省市区的编号传给绑定的对象,发送给后台,实现省市区查询

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值