flying-monkey/components/city/city-new.vue

154 lines
4.5 KiB
Vue
Raw Normal View History

2022-06-17 07:48:17 +00:00
<template>
<!--地址picker-->
<view :status="checkStatus" v-if="lotusAddressData.visible" class="lotus-address-mask">
<view :class="lotusAddressData.visible?'lotus-address-box':'lotus-address-box lotus-address-box-out'">
<view class="lotus-address-action">
<text @tap="cancelPicker" class="lotus-address-action-cancel">取消</text>
<text @tap="chosedVal" class="lotus-address-action-affirm">确认</text>
</view>
<view class="lotus-address-picker-box">
<!---->
<scroll-view scroll-y :scroll-into-view="'pid'+pChoseIndex" class="lotus-address-picker-box-item">
<view @tap="clickPicker(1,pIndex);" :id="'pid'+pIndex" :class="pIndex === pChoseIndex?'lotus-address-picker lotus-address-picker2':'lotus-address-picker'" v-for="(pItem,pIndex) in province" :key="pIndex">{{pItem.value}}</view>
</scroll-view>
<!---->
<scroll-view scroll-y :scroll-into-view="'cid'+cChoseIndex" class="lotus-address-picker-box-item" v-if="isShow">
<view @tap="clickPicker(2,cIndex);" :id="'cid'+cIndex" :class="cIndex === cChoseIndex?'lotus-address-picker lotus-address-picker2':'lotus-address-picker'" v-for="(cItem,cIndex) in city" :key="cIndex">{{cItem.value}}</view>
</scroll-view>
<!---->
<scroll-view scroll-y :scroll-into-view="'tid'+tChoseIndex" class="lotus-address-picker-box-item">
<view @tap="clickPicker(3,tIndex);" :id="'tid'+tIndex" :class="tIndex === tChoseIndex?'lotus-address-picker lotus-address-picker2':'lotus-address-picker'" v-for="(tItem,tIndex) in town" :key="tIndex">{{tItem.value}}</view>
</scroll-view>
</view>
</view>
</view>
<!--地址picker END-->
</template>
<script>
export default {
props:['lotusAddressData'],
data() {
return {
visible: false,
province:[],
city:[],
town:[],
provinceName:'',
cityName:'',
townName:'',
type:0,//0新增 1编辑
pChoseIndex:-1,
cChoseIndex:-1,
tChoseIndex:-1,
pidkey:'pid',
pid:0,
getType:'', //0省1市2区
isShow: true
};
},
onReady() {
this.getProvince(1);
},
methods:{
//取消
cancelPicker(){
this.$emit("choseVal",{
visible:false
});
},
//确认传值
chosedVal(){
//已选省市区 isChose = 1
if((this.provinceName&&this.cityName)||(this.provinceName&&this.cityName&&this.townName)){
this.$emit("choseVal",{
province:this.provinceName,
city:this.cityName,
town:this.townName,
area_id:this.pid,
isChose:1,
visible:false
});
}else{
this.$toolAll.tools.showToast('您还未选择城市')
}
},
// 查询省市区数据
getProvince(getType) {
let params = {
pidkey:this.pidkey,
pid:this.pid,
}
this.$requst.get('/universal/api.other/city',params).then(res=>{
if(res.code) {
if(getType == 1){
console.log(res.data,'省数据')
this.province = res.data;
}
if(getType == 2){
console.log(res.data,'市数据')
this.city = res.data;
}
if(getType == 3){
console.log(res.data,'区数据')
this.town = res.data;
}
} else {
this.$toolAll.tools.showToast(res.msg);
}
})
},
// 选择省市区交互
clickPicker(type,index){
if(type == 1){
this.pChoseIndex = index;
this.pid = this.province[index].pid;
this.provinceCode = this.province[index].pid;
this.provinceName = this.province[index].value;
this.cChoseIndex = -1;
this.tChoseIndex = -1;
this.city = [];
this.town = [];
if(this.provinceName == '北京市' || this.provinceName == '天津市' || this.provinceName == '上海市' || this.provinceName == '重庆市'){
this.isShow = false;
this.getProvince(2);
setTimeout(()=>{
this.cChoseIndex = 0;
this.pid = this.city[0].pid
this.cityCode = this.city[0].pid;
this.cityName = this.city[0].value;
this.tChoseIndex = -1;
this.town = [];
this.getProvince(3);
},200)
}else{
this.isShow = true;
this.getProvince(2);
}
}
if(type == 2){
this.cChoseIndex = index;
this.pid = this.city[index].pid
this.cityCode = this.city[index].pid;
this.cityName = this.city[index].value;
this.tChoseIndex = -1;
this.town = [];
this.getProvince(3);
}
if(type == 3){
this.tChoseIndex = index;
this.pid = this.town[index].pid
this.townCode = this.town[index].pid;
this.townName = this.town[index].value;
}
}
}
}
</script>
<style lang="less">
@import "./city.css";
</style>