mint结合Android实现四级联动

6 篇文章 0 订阅

template:

            <div :class="{borBm: activeCol == 5,region:true}">
                <span>收货地址:</span>
                <div @click="regionShow()" v-if="villageName =='[请选择]'">请选择<i class="mintui mintui-back"></i></div>
                <div @click="regionShow()" v-if="villageName !='[请选择]'">{{provinceName}}-{{cityName}}-{{countyName}}-{{villageName}}</div>
            </div>

        <mt-popup v-model="regionVisible" position="bottom" style="width: 100%">
            <div class="popupTop">
                <span @click="HiddenVisible()">确认</span>
            </div>
            <div class="region" style="display: flex">
                <mt-picker :slots="myAddressSlots1" valueKey="name" @change="addressChange1" :itemHeight="40" style="width: 25%"></mt-picker>
                <mt-picker :slots="myAddressSlots2" valueKey="name" @change="addressChange2" :itemHeight="40" style="width: 25%"></mt-picker>
                <mt-picker :slots="myAddressSlots3" valueKey="name" @change="addressChange3" :itemHeight="40" style="width: 25%"></mt-picker>
                <mt-picker :slots="myAddressSlots4" valueKey="name" @change="addressChange4" :itemHeight="40" style="width: 25%"></mt-picker>
            </div>
        </mt-popup>

data:

            regionVisible: false, //弹出框是否可见
            //省
            myAddressSlots1: [{
                flex: 1,
                values: [{
                    name: "北京市",
                    id: "1"
                }], //省份数组
                textAlign: 'center'
            }],
            //市
            myAddressSlots2: [{
                flex: 1,
                values: [{
                    name: "[请选择]",
                    id: -1
                }, ],
                textAlign: 'center'
            }],
            //县
            myAddressSlots3: [{
                flex: 1,
                values: [{
                    name: "[请选择]",
                    id: -1
                }],
                textAlign: 'center'
            }],
            // 乡
            myAddressSlots4: [{
                flex: 1,
                values: [{
                    name: "[请选择]",
                    id: -1
                }],
                textAlign: 'center'
            }],
            provinceName: '',
            cityName: '',
            countyName: '',
            villageName: '',
            provinceId: null,
            cityId: null,
            countyId: null,
            villageId: null,

created:

            this.$store.dispatch("newTitle", "新增收货地址")
            this.getRegion()

methods

            HiddenVisible() {
                this.regionVisible = false
            },
            getRegion() {
                // 进入页面时的处理
                let Slots1 = $App.getProvinceList(); //省
                this.myAddressSlots1[0].values = JSON.parse(Slots1)
            },
            addressChange1(msg, value) {
                this.provinceId = value[0].id;
                this.provinceName = value[0].name;
                let Slots2 = $App.getCityList(this.provinceId); // 市
                this.myAddressSlots2[0].values = JSON.parse(Slots2)
                this.myAddressSlots2[0].values.unshift({
                    name: "[请选择]",
                    id: -1
                })
            },
            addressChange2(msg, value) {
                this.cityId = value[0].id;
                this.cityName = value[0].name;
                let Slots3 = $App.getCountryList(this.cityId); // 区县
                this.myAddressSlots3[0].values = JSON.parse(Slots3)
                this.myAddressSlots3[0].values.unshift({
                    name: "[请选择]",
                    id: -1
                })
            },
            addressChange3(msg, value) {
                this.countyId = value[0].id;
                this.countyName = value[0].name;
                let Slots4 = $App.getTownsList(this.countyId); // 乡镇
                this.myAddressSlots4[0].values = JSON.parse(Slots4)
                this.myAddressSlots4[0].values.unshift({
                    name: "[请选择]",
                    id: -1
                })
                if (!Slots4) {
                    this.villageId = -1
                    this.villageName = "[请选择]"
                }
            },
            addressChange4(msg, value) {
                this.villageId = value[0].id;
                this.villageName = value[0].name;
            },
            // 弹窗显示
            regionShow() {
                this.regionVisible = true
            },

css:

.popupTop {
            display: flex;
            justify-content: flex-end;
            align-items: center;
            padding: 10px 15px;
            span {
                height: 80%; // background: #39c;
                color: #fff;
                color: #39c;
                padding: 4px 20px;
                /* prettier-ignore */
                border: 1PX solid #39c;
                border-radius: 3px;
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue的三级联动省市区可以使用mint-ui的Picker组件来实现。在Vue实例中,你可以定义一个data对象来存储当前选择的省市区的值,如引用所示。通过设置初始值和监听变化,可以实现当省市的选项改变时,自动更新市区的选项。同时,你可以使用v-for指令来循环遍历省市区的选项,并绑定相应的value和label属性。这样,当用户选择省市区时,Vue会自动更新data对象中的值。你还可以根据具体需求,使用computed属性或watch来监听data对象的变化,并在变化时执行相应的逻辑。通过这种方式,你可以实现Vue的三级联动省市区功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [vue省市区三级联动-封装集成](https://blog.csdn.net/weixin_38633659/article/details/83625778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [Vue------实现省市区三级联动](https://blog.csdn.net/weixin_52953038/article/details/126555237)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值