【无标题】vue2 /Hbuilder 中 纯写 地址四级联动(简单易懂)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

这几天 小白项目需求  将  全国地址三级联动更改为 四级联动 。然后在 网上一直是搜 四级联动,

比如 淘宝京东 四级联动。   根据高德api  四级联动  都有很多不完整  而且大多是三级联动 。

于是自己整合了一套 完全的  四级联动   粘贴 即可用  


提示:以下是本篇文章正文内容,下面案例可供参考

一、json文件  并引用

示例:这个可以网上自己取

二、使然后就是 完整代码啦

1.页面代码

代码如下(示例):

<template>
<view class="cu-form-group">
                    <view class="flex_s index_center_tops">
                        <view class="flex index_center-center">
                            <!-- <view class="icon_left" /> -->
                            <view class="index_left">
                                地址:
                            </view>
                        </view>
                        <view class="flex">
                            <picker mode="multiSelector" :value="multiIndex" :range="multiArray" @change="multiChange"
                                @columnchange="columnChange" range-key="name" >
                                <view class="picker">
                                    <!-- {{ multiArray }}, -->
                                    {{ multiArray[0][multiIndex[0]].name }}
                                    {{ multiArray[0][multiIndex[0]].children[multiIndex[1]].name }}
                                    {{ multiArray[0][multiIndex[0]].children[multiIndex[1]].children[multiIndex[2]].name}}
                                    {{ multiArray[0][multiIndex[0]].children[multiIndex[1]].children[multiIndex[2]].children[multiIndex[3]].name}}
                                </view>
                                
                            </picker>
                            <view class="icon_right" />
                        </view>
                    </view>
<view class="cu-form-group">
                    <view class="title">详细地址:</view>
                    <input type="text" placeholder="详细地址" v-model="myFormData.address">
                    <u-icon name="edit-pen" color="#2979ff" size="28"></u-icon></input>
                </view>
</template>

2.script部分

代码如下(示例):

<script>
    export default {
        name: "editForm",
        data() {
            return {
              
                multiData: require("../../common/address.json"),
                multiIndex: ["0", "0", "0", "0"],
                multiArray: [],
                //text1: ""
            };
        },
  
        mounted() {
            var _this = this;
            console.log(_this.multiData);
            var multiData = _this.multiData;
            var multiIndex = _this.multiIndex;
            console.log();
            console.log(283, multiData);
            // 初始化多列数据
            this.multiArray = [
                multiData,
                multiData[0].children,
                multiData[0].children[0].children,
                multiData[0].children[0].children[0].children
            ];
        },
        methods: {
            // 获取多列的索引
            multiChange: function(e) {
                var multiIndex = e.detail.value;
                //   console.log(multiIndex);
                this.multiIndex = multiIndex;
                this.myFormData.address =
                    this.multiArray[0][multiIndex[0]].name +
                    this.multiArray[0][multiIndex[0]].children[multiIndex[1]].name +
                    this.multiArray[0][multiIndex[0]].children[multiIndex[1]].children[multiIndex[2]].name +
                    this.multiArray[0][multiIndex[0]].children[multiIndex[1]].children[multiIndex[2]].children[multiIndex[3]].name
                console.log("地址",this.myFormData.address1);
                this.myFormData.provinceId = this.multiArray[0][multiIndex[0]].code;
                this.myFormData.cityId = this.multiArray[0][multiIndex[0]].children[multiIndex[1]].code+'00000000';
                this.myFormData.countyId = this.multiArray[0][multiIndex[0]].children[multiIndex[1]].children[multiIndex[2]].code+'000000';
                this.myFormData.streetId = this.multiArray[0][multiIndex[0]].children[multiIndex[1]].children[multiIndex[2]].children[multiIndex[3]].code+'000';
                console.log("1",this.myFormData.provinceId );
                console.log("2",this.myFormData.cityId);
                console.log("3",this.myFormData.countyId );
                console.log("4",this.myFormData.streetId );
            },

            // 选择列
            columnChange: function(e) {
                // console.log(e);
                var _this = this;
                var multiData = _this.multiData;
                var multiIndex = _this.multiIndex;
                var columnIndex = e.detail.column;
                var columnValue = e.detail.value;

                multiIndex[columnIndex] = columnValue;

                this.multiArray = [
                    multiData,
                    multiData[multiIndex[0]].children,
                    multiData[multiIndex[0]].children[multiIndex[1]].children,
                    multiData[multiIndex[0]].children[multiIndex[1]].children[multiIndex[2]].children
                ];
            },
            components: {},
            computed: {},
            
            // 取消选择
            cancel() {
                this.show = 0

            },

        },
    }
</script>

就这样  完结   效果图

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值