vue2实现省市区级联选择插件( 优化版),鼠标移入弹出移出隐藏

113.png

<style scoped>
.showChose{
width:100%;
display: none;
position:absolute;
z-index:1200;
border:1px solid rgba(221,221,221,0.8);
background-color: #fff;
/background:rgba(77,82,113,0.8);/
}
.city:hover .showChose{
display: block;
}
.title h4{
display:inline-block;
font-size: 16px;
line-height:0.88rem;
font-weight:normal;
color:#fff;
}
.area{
display:inline-block;
/font-size:0.24rem;/
font-size: 16px;
padding: 12px;
line-height:0.88rem;
margin-left:0.42rem;
color:#333;
/color:#fff;/
}
.addList{
width:100%;
padding-left:0.32rem;
/font-size:0.34rem;/
font-size: 14px;
line-height:0.88rem;
color:#333;
}
/* 修改的格式 /
.address ul{
width:100%;
height:100%;
padding:10px;
/
margin:10px;/
/
max-height: 4.4rem;/
overflow:auto;
}
.address ul li{
/
margin-left:5%;/
padding: 5px;
/
加上好可横向显示/
display: inline;
/
高度距离/
line-height: 40px;
/
float:left;
list-style: none*/
}
.address .title .active{
color:#0071B8;
border-bottom:0.02rem solid #0071B8;
}
.address ul .active{
color:#0071B8;
}
</style>
<template>
<div class="">

<div class="city">
<Button style="background:#b7aeda;color:#fff;font-size:16px" class="buttondiv" @click="showChose = true">{{Province?Province:info[province-1].name}} {{City ? City:''}} {{District ? District:''}}<Icon type="chevron-down" style="margin-left:3px"></Icon></Button>
<section class="showChose" style="width:360px;">
<section class="address">
<section class="title" style="background:#b7aeda;padding:20px;text-align: center;">
<h4>选择省或城市或(县,区)</h4>
</section>
<section class="title" style="background:#f2f2f2">
<div class="area" @click="provinceSelected()">{{Province?Province:info[province-1].name}}</div>
<div class="area" @click="citySelected()" :class="City?'':'active'">{{City?City:'请选择'}}</div>
<div class="area" @click="districtSelected()" :class="District?'':'active'" v-show="City">{{District?District:'请选择'}}</div>
</section>
<ul>
<li class="addList" v-for="(v,k) in info" @click="getProvinceId(v.id, v.name, k)" v-show="showProvince" :class="v.selected ? 'active' : ''">{{v.name}}</li>
<li class="addList" v-for="(v,k) in showCityList" @click="getCityId(v.id, v.name, k)" v-show="showCity" :class="v.selected ? 'active' : ''">{{v.name}}</li>
<li class="addList" v-for="(v,k) in showDistrictList" @click="getDistrictId(v.id, v.name, k)" v-show="showDistrict" :class="v.selected ? 'active' : ''">{{v.name}}</li>
</ul>
</section>
</section>
</div>
</div>
</template>

<script>
import Cityjs from '../data/city.js'
//城市数据也可以直接写在data的info:[]中,但数据太大不建议,直接用js文件引入,
//文件太大如有需要的请加QQ群629907983下载
export default {
name: 'myAddress',
data () {
return {
showChose: false,
showProvince: true,
showCity: false,
showDistrict: false,
showCityList: false,
showDistrictList: false,
province: 1,//默认1为北京
city: 3,
district: 57,
GetProvinceId: 2,
District: false,
Province: false,
City: false,
selected: false,
infocity:[],
info: [],
}
},
created() {
this.info = Cityjs;
},
methods: {
choseAdd: function() {
this.showChose = true;
},
closeAdd: function() {
this.showChose = false;
},
_filter(add,name,code) {
let result = [];
for(let i=0;i<add.length;i++) {
if(code == add[i].id){
result = add[i][name];
}
}
return result;
},
getProvinceId: function(code,input,index) {
this.province = code;
this.Province = input;
this.showProvince=false;
this.showCity=true;
this.showDistrict = false;
this.showCityList = this._filter(this.info,'city',this.province);
// 点击选择当前
this.info.map( a => a.selected = false );
this.info[index].selected = true;
},
provinceSelected: function() {
// 清除市级和区级列表
this.showCityList = false;
this.showDistrictList = false;
// 清除市级和区级选项
this.City = false;
this.District = false;
// 选项页面的切换
this.showProvince = true;
this.showCity = false;
this.showDistrict = false;
},
getCityId: function(code, input, index) {
this.city = code;
this.City = input;
this.showProvince=false;
this.showCity=false;
this.showDistrict = true;
this.showDistrictList = this._filter(this.showCityList,'district',this.city);
// 选择当前添加active
this.showCityList.map( a => a.selected = false );
this.showCityList[index].selected = true;
},
citySelected: function() {
this.showProvince=false;
this.showCity=true;
this.showDistrict = false;
},
getDistrictId: function(code, input, index) {
this.district = code;
this.District = input;
// 选择当前添加active
this.showDistrictList.map( a => a.selected = false );
this.showDistrictList[index].selected = true;
// 选取市区选项之后关闭弹层
this.showChose = false;
},
districtSelected: function() {
this.showProvince=false;
this.showCity=false;
this.showDistrict = true;
}
}
}
</script>

//城市数据也可以直接写在data的info:[]中,但数据太大不建议,直接用js文件引入,
//文件太大如有需要的请加QQ群629907983下载

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 210,978评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,954评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,623评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,324评论 1 282
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,390评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,741评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,892评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,655评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,104评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,451评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,569评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,254评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,834评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,725评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,950评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,260评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,446评论 2 348

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,628评论 18 139
  • 小荻老师12天的沟通训练营结束了,在这个过程中我学习到了在沟通前先要去确定自己的对象,了解他是一个什么样性格的人,...
    包包胡老师阅读 661评论 0 50
  • 坐在手术室门口等待 总想给你写点什么 陪伴你的三天三夜 —壹— 凌晨2017年10月26日12:36,...
    半山女子阅读 776评论 0 0
  • 文|兮兮娅叮噹 临近月末,要做总结给自己评分的时候,如果评分比较高,通常是对自己满意的,来源就是各个在做的事都在计...
    Cynthia雯霏阅读 226评论 0 1