• vue全国省市选择vue组件


    没用懂checkbox,干脆自己定义布尔值,方便数据页面响应。

    可以再原始省市数据 下载address.js文件

    1.初始化数据格式:

     2页面样式:

     3.对应输出的数据格式:

     4.源码:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>省市任意选组件vue</title>
    <style>
    /* 数据多的时候v-cloak的妙用,一定要将样式加载在高级 */
    [v-cloak]{
        display: none!important; 
    }
    </style>
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    </head>
    <body>
        <div id="app" v-cloak>
            <div class="tableArea">
                <div class="pro" v-for='(item,index) in areasList' :key='index' 
                @mouseover="mouseover(index,item)"
                @mouseleave="mouseleave(index,item)">
                    <label class="provinces"  @click='clicks(item)'>
                        <span :class='{selected:item.IsCheckeds}'></span>{{item.province}}({{item.citys.length}})
                    </label>
                    <div class="citys" v-show='item.show'>
                        <p>{{item.province}}</p>
                        <label class="city" v-for='(i,s) in item.citys' :key='s' @click='click(item,s)'>
                            <span :class='{selected:i.IsChecked}'></span>{{i.city}}
                        </label>
                    </div>
                </div>
                <div class="clear"></div>
            </div>
        </div>
    </body>
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <script src="./address.js"></script>
    <script>
    new Vue({
        el: '#app',
        data(){
            return{
                show:false,
                areasList:{},
                data:[]
            }
        },
        created:function(){
            let areasList = []
            for(item in areas){
                let citys = []
                let objs = {
                    province:item,
                    citys:item.indexOf("") != -1?'':citys,
                    show:false,
                    IsCheckeds:false
                }
                for(i in areas[item]){
                    let obj = {
                        city:areas[item][i],
                        IsChecked:false
                    }
                    citys.push(obj)
                }
                areasList.push(objs)
            }
            this.areasList = areasList
            console.log(areasList)               //处理省市数据类型
        },
        methods:{
            // 当前默认直辖市无下级选择,无弹窗
            mouseover(index,item){
                if(item.citys.length>0){
                    item.show = true
                }
            },
            mouseleave(index,item){
                if(item.citys.length>0){
                    item.show = false
                }
            },
            // 点击省级按钮时,对应所以子市级状态响应
            clicks(item){
                item.IsCheckeds = !item.IsCheckeds
                if(item.citys){
                    item.citys.forEach(element => {
                        element.IsChecked = item.IsCheckeds
                    });
                }
                this.Statistics()
            },
            //点击市级按钮时,改变数量时,对应的省的状态与其响应
            click(item,s){
                let citys = item.citys[s]
                citys.IsChecked = !citys.IsChecked
                let arr_filter = item.citys.filter(function(element,index,self){
                    return element.IsChecked==true;           // 返回市级已选的数组
                })
                if(arr_filter.length==0){
                    item.IsCheckeds = false
                }else{
                    item.IsCheckeds = true
                }
                this.Statistics()
            },
            // 每次状态的额改变触发方法统计当前已选状态
            Statistics(){
                let areasList = this.areasList 
                let arrData = []
                areasList.forEach(element => {
                    if(element.IsCheckeds){
                        if(element.citys){
                            let citys = element.citys
                            citys.forEach( e => {
                                if(e.IsChecked){
                                    let obj = {                                //每一条市级数据都作为一个单独的对象
                                        province:element.province,   
                                        city:e.city,
                                    }
                                    arrData.push(obj)
                                }
                            });
                        }else{
                            let obj = {                                //直辖市级数据也作为一个单独的对象
                                province:element.province,   
                                city:element.province,
                            }
                            arrData.push(obj)
                        }
                    }
                });
                console.log(arrData)      //当前已选
            }
        }
    })
    </script>
    </html>
    <style>
    .clear{
        clear:both
    }
    .tableArea{
        width: 800px;
        font-size: 15px;
        color: #606266;
    }
    .tableArea .pro, .tableArea .city{
        float: left;
        margin: 6px 16px;
    }
    label{
        line-height: 32px;
    }
    label span{
        width: 10px;
        height: 10px;
        background: #ececec;
        display: inline-block;
        border-radius: 3px;
        border:1px solid #c1bfbf
    }
    .selected{
        background: #409EFF;
    }
    .tableArea .pro{
        position: relative;
    }
    .citys{
        overflow: hidden;
        border: 1px solid #ececec;
        position: absolute;
        left: 0;
        width: 600px;
        z-index: 1;
        border-radius: 4px;
        color: #606266;
        background: #ffffff;
        border: 1px solid #EBEEF5;
        box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
    }
    .citys p{
        text-indent: 15px;
        color: black;
    }
    </style>
  • 相关阅读:
    【Python爬虫】第五课(b站弹幕)
    【Python爬虫】第四课(查询照片拍摄地址)
    一些tips
    【Python爬虫】第三课(提取数据)
    【Python爬虫】第二课(请求头设置)
    【Python爬虫】第一课
    【数据分析】如何进行数据分析
    【数据分析】派单排序策略优化验证(附sql查询代码)
    python基础01
    消息
  • 原文地址:https://www.cnblogs.com/wd163/p/13524861.html
Copyright © 2020-2023  润新知