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. dayjs取 本周、上周、本月、上月、本季度、上季度时间段

    let dateTimes = [ { id: 1, name: '本周', start_time: dayjs().startOf('week').add(1, 'day').format('YYY ...

  2. Linux网络第五章:yum仓库的灵活部署及NFS共享服务

    目录 一.yum仓库的灵活部署 1.yum基础知识及命令 2.本地yum仓库搭建 3.通过httpd服务建立yum仓库 4.建立国内yum源 二.NFS共享服务 1.NFS基础知识 2.搭建NFS服务 ...

  3. CompletableFuture使用方法的详细说明

    异步执行一个任务时,我们一般是使用自定义的线程池Executor去创建执行的.如果不需要有返回值, 任务实现Runnable接口:如果需要有返回值,任务实现Callable接口,调用Executor的 ...

  4. [746] Interlude Update 3

    [746] Interlude Update 3 Client 00 SendProtocolVersion 01 MoveBackwardToLocation 02 Say 03 RequestEn ...

  5. 「SOL」网络流flow (模拟赛)

    题面 给定一张分层有向图,有 \(n\) 层,每层有 \(m\) 个点.只有从第 \(i\) 层的点连向第 \(i + 1\) 层的点的连边. 记 \(A(i,j)\) 表示从第 \(i\) 层的某些 ...

  6. .Net core 基础 创建及Nlog

    一..Net Core 依赖注入 .net core3.1 之前的版本需要手动配置swagger.当前项目.net core5.0版本自动配置完成 跨域配置 1.下载依赖包 2.           ...

  7. 宝塔部署 vue + thinkphp

    部署https://blog.csdn.net/xinxinsky/article/details/105441164?spm=1001.2101.3001.6650.2&utm_medium ...

  8. Linux命令 日记

    命令 作用 备注 pwd 查看当前所在位置 Windows和虚拟机共享文件夹路径: cd / 打开根目录 cd /mnt/hgfs/ 共享文件夹位置路径

  9. 如何为 Debian 11 安装图形用户界面 (GUI)

    如何为 Debian 11 安装图形用户界面 (GUI) allway2 于 2021-12-26 17:30:14 发布 11767 收藏 23文章标签: debian 服务器 linux版权 华为 ...

  10. Delphi针对双字节字段处理

    针对有些特殊的中文字如"错畸形安氏I类"中""字,属于特殊字符,在Oracle数据库中必须以双字节方式存储,字段定义为nVarchar2(100). 在Delp ...