1.产品拿来淘宝后台页面,希望我们的快递发货也用这一套

  长这样:

2.后端说提供的数据是树形结构,大区id不要传,传省的id,勾选哪个传哪个

3.element  ui的树形插件和级联选择器在数据上是可以实现的,但是ui应该不行,最后决定用checkbox 多选框自己写一个

4.el-checkbox 主要是indeterminate属性(控制中间状态)和 v-mode显示是否被显示

5.数据来源:最初是后端返回的树形结构数据,后面发现太旧。改用vant的省市区数据

npm i @vant/area-data 

引入,再转为原来的树形结构:

// 省市区转树形结构
import { areaList } from '@vant/area-data'
console.log(areaList); export const location = () => {
let areaData:any= {
province:[],
city:[],
area:[]
}
for (let key in areaList.province_list) {
areaData.province.push({
name:areaList.province_list[key],
code:key
})
}
for (let key in areaList.city_list) {
areaData.city.push({
name:areaList.city_list[key],
code:key
})
}
for (let key in areaList.county_list) {
areaData.area.push({
name:areaList.county_list[key],
code:key
})
}
return areaData
}
export const locations = () => {
let datas: any = []
let data: any = [
{
areaName: '华北',
childrenList: [],
coding: 1000000,
id: 1,
level: 0,
parentId: 0
},
{
areaName: '东北',
childrenList: [],
coding: 2000000,
id: 2,
level: 0,
parentId: 0
},
{
areaName: '华东',
childrenList: [],
coding: 3000000,
id: 3,
level: 0,
parentId: 0
},
{
areaName: '华南',
childrenList: [],
coding: 4000000,
id: 4,
level: 0,
parentId: 0
},
{
areaName: '华中',
childrenList: [],
coding: 8000000,
id: 8,
level: 0,
parentId: 0
},
{
areaName: '西南',
childrenList: [],
coding: 5000000,
id: 5,
level: 0,
parentId: 0
},
{
areaName: '西北',
childrenList: [],
coding: 6000000,
id: 6,
level: 0,
parentId: 0
},
{
areaName: '港澳台',
childrenList: [],
coding: 7000000,
id: 7,
level: 0,
parentId: 0
}
] for (let key in areaList.province_list) {
datas.push({
areaName: areaList.province_list[key],
childrenList: [],
coding: Number(key),
id: Number(key.slice(0, 2)),
level: 1,
parentId: (key == '410000' || key == '420000' || key == '430000') ? 8000000 : (key == '810000' || key == '820000') ? 7000000 : Number(key.slice(0, 1)+'000000')
}) }
datas.map((item: any) => {
for (let key in areaList.city_list) {
if (key.slice(0, 2) == item.id) {
item.childrenList.push({
areaName: areaList.city_list[key],
childrenList: [],
coding: Number(key),
id: Number(key.slice(0, 4)),
level: 2,
parentId: item.coding
})
} }
})
datas.map((item: any) => {
item.childrenList && item.childrenList.length > 0 && item.childrenList.map((child: any) => {
for (let key in areaList.county_list) {
if (child.id == key.slice(0, 4)) {
child.childrenList.push({
areaName: areaList.county_list[key],
childrenList: [],
coding: Number(key),
id: Number(key),
level: 3,
parentId: child.coding
})
}
}
})
}) data.map((item: any) => {
datas.map((child: any) => {
if (item.coding == child.parentId) {
item.childrenList.push(child)
}
})
})
let result =[data,datas] return result
}
export const areaData = locations()[0]
export const areaRegion = locations()[1]
export const areaListData = location()

  在组件页面引入,最终效果:

代码地址:https://gitee.com/yuexiayunsheng/vue3learn.git

在element plus中使用checkbox 多选框实现大区省市区选择回选的更多相关文章

  1. Flutter学习(8)——CheckBox多选框使用及动态更改多选框数据

    原文地址:Flutter学习(8)--CheckBox多选框使用及动态更改多选框数据 | Stars-One的杂货小窝 最近项目需求需要调整页面,记录一下实现过程 这次主要是要实现个评价页面,选择不同 ...

  2. 组合框里添加复选框的方法(使用勾选的假象,用图片代替而已,并非QT原生支持)

    组合框可以看作是列表框和文本框的组合,因其占据的空间少,使用操作方便,常被界面设计人员用于界面开发设计中,在有限个输入的条件下,组合框常用来代替文本框,这样从用户使用角度来看,更趋人性化,所见即所得. ...

  3. springMvc接收ajax数组参数,以及jquery复选框选中、反选、全选、全不选

    一.复选框选中.反选.全选.全不选 html代码: <input type='checkbox' name='menuCheckBox' value='10' >苹果 <input ...

  4. checkebox 全选 ,子复选框单个全部选择后,全选框也会被选择

    <script> //点击全选,子复选框被选中 function demo(){ var allcheck=document.getElementById("allcheck&q ...

  5. JQuery的复选框选中、取消、全选,全不选问题

    一.必须引入JQuery库: 下面是js代码: /*** * 服务管理块>>>复选框事件处理 */ //服务管理复选框被选中.取消$(function(){ $("#Ser ...

  6. php处理表单中的复选框问题以及js实现全选

    做的一个项目中遇到了全选和取消全选的问题,这是一个很普遍的功能,,虽然我们经常用到,但是真正做起来却发现行不通,在网上找了些,大部分都是ie,但是谷歌内核浏览器不能正常实现,所以经过小小的调整,今天就 ...

  7. HTML--使用单选框、复选框,让用户选择

    在使用表单设计调查表时,为了减少用户的操作,使用选择框是一个好主意,html中有两种选择框,即单选框和复选框,两者的区别是单选框中的选项用户只能选择一项,而复选框中用户可以任意选择多项,甚至全选.请看 ...

  8. Selenium3自动化测试【28】单选框、复选框、下拉选择框

    Html页面中的单选按钮.复选框.下拉框均可通过WebDriver实现操做.本节结合案例一起来看看WebDriver如何操做这些控件. 同步视频知识与系列知识内容,可关注:[公众号]:柒哥测试:[WX ...

  9. firefox(火狐)下 js中设置checkbox属性checked="checked"已有,但复选框却不显示勾选的原因

    刚看到问题时以为是浏览器兼容性的原因,ie.google都能正常显示. 网上查询之后发现是jQuery的attr()方法用的不恰当. jQuery1.6之前使用attr()可以修改 ,从jQuery ...

  10. jquery如何判断checkbox(复选框)是否被选中 全选 反选

    好长时间没用jq, 之前用的都是ng. 想着随便参考一下,结果被坑.因为这篇文章是09年的,也和当时jq的版本号有关,但是为什么在百度排名第一,百度果然坑人,以后还是google 给出坑人文章的链接 ...

随机推荐

  1. 【Frida】调试js代码

    方法一attach启动 js代码动态注入app,app需要保持运行状态 # coding: utf-8 import sys import frida app_name = "猿人学APP& ...

  2. lombok.config

    # 声明该配置文件是一个根配置文件,从该配置文件所在的目录开始扫描 config.stopBubbling=true # 全局配置 equalsAndHashCode 的 callSuper 属性为t ...

  3. spring 理念与项目构建

    spring理念: 使现有的技术更容易使用,其本身是一个大杂烩,整合了现有的技术框架. ssh: struct2 spring hibernate ssm :springmvc spring myba ...

  4. PCB走线宽度与电流、温度的关系

    测试PCB的线长为24cm 其他:

  5. C# 三层架构 简单清晰讲解

    https://www.cnblogs.com/smbk/p/5339610.html

  6. hexo博客重新部署

    date: 2020-08-04 updated: 2020-12-31 summary: 博客重新部署到国内Gitee(加速访问速度) hexo博客重新部署(从GitHub到Gitee) (博客迁移 ...

  7. AWT+Swing区别

    AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交互的接口.AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的关 ...

  8. 音视频技术入门课- 05 使用FFmpeg与OBS进行直播推流

    做直播推流的前提是要有直播服务器接收直播流,所以需要我们自己建设一个流媒体服务器. 流媒体服务器SRS SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SR ...

  9. 2022 icpc 沈阳站 记录(非题解)

    赛前 大概是赛前三周才突然知道拥有了比赛机会. 赛前训练和vp频率很高,有一段时间cf上都是绿的.比赛的那一周只有一天没在vp,到了周六热身赛我人都有点麻木.(可能正赛也是类似的状态吧) 比赛的过程b ...

  10. Pyodide读取CSV、EXCEL

    from pyodide.http import pyfetch, open_url pyfetch(url="/your/URL/goes/here", method=" ...