vue 集成行政区域选择插件region和数据回显

故事:最近,项目需要进行行政区域围栏的绘制,由于老旧项目是利用js保存全国行政区域地址和编码,在选择器select进行匹配显示,但此方法复杂,因此选择集成区域插件region

步骤一:用命令安装region插件(安装2.2.2版本)

npm i -S v-region@2.2.2 --force

步骤二:在项目全局文件 main.js或manage.js或其全局配置文件

import Vue from 'vue'

import Region from 'v-region'

Vue.use(Region)

步骤三:在页面/模块中使用行政区域选择插件

html 复制代码
          <el-row>
            <el-col :span="24">
                <!-- <v-region :town="true" type="group" v-model="region" @values="regionChange"></v-region> -->
               <div class="postion">
                <v-region  v-model="region" @values="regionChange"></v-region>
               </div>
            </el-col>
          </el-row>
  
methods:{
// 切换地区
    regionChange(values) {
        let self=this;
       //回显
       let temp=values;
       values={};
       self.obj=temp;
       temp={};

    },
}

步骤四:数据保存和回显(亲身经历需要细化保存和回显步骤才正确保存和回显)注意,次数方法内data为步骤三保存的region对象this.obj

html 复制代码
    <el-row>
            <el-col :span="24" style="margin-left: -17.5%">
              <el-form-item label="选行政区域" :prop="'region'">
                <!-- <v-region :town="true" type="group" v-model="region"       @values="regionChange"></v-region> -->
                <v-region  v-model="dataForm.region" @values="regionChange"></v-region>
              </el-form-item>
            </el-col>
          </el-row>

 methods: {

 openDialog(data) {
       //data为数组,保存了已经选择的行政区域信息
      let self = this;     
      self.dataForm.region={province:'',city:'',area:'',town:''};
      self.dataForm.regionTemp=data;
      if(data.province!=null&&data.city==null&&data.area==null){
        self.dataForm.region.province = data.province&&data.province.key;
      }
      if(data.province!=null&&data.city!=null&&data.area==null){
        self.dataForm.region.province = data.province&&data.province.key;
        self.dataForm.region.city = data.city&&data.city.key;        }
      if(data.province!=null&&data.city!=null&&data.area!=null){
        self.dataForm.region.province = data.province&&data.province.key;
        self.dataForm.region.city = data.city&&data.city.key;
        self.dataForm.region.area =data.area&&data.area.key;        }
    
    },


}

步骤五:步骤四回显行政区域后再次选择更新行政区域信息二次保存

html 复制代码
methods:{
 // 切换地区
      regionChange(values) {
          let self=this;
//临时对象
          self.dataForm.regionTemp=values;
      },

ok() {
            let self = this;

            self.$refs["dataForm"].validate((valid) => {
               if(valid){
                let regionTemp=data.regionTemp;
                    if(regionTemp.province==null){
                        self.$message({
                            type: 'warning',
                            message: '请选择行政区域',
                        })
                        return;
                    }
                    if(regionTemp.province!=null&&regionTemp.city==null&&regionTemp.area==null){
                      data.params=regionTemp.province.value+'|'+regionTemp.province.key;
                    }
                    if(regionTemp.province!=null&&regionTemp.city!=null&&regionTemp.area==null){
                      data.params=regionTemp.province.value+regionTemp.city.value+'|'+regionTemp.province.key+','+regionTemp.city.key;
                    }
                    if(regionTemp.province!=null&&regionTemp.city!=null&&regionTemp.area!=null){
                      data.params=regionTemp.province.value+regionTemp.city.value+regionTemp.area.value+'|'+regionTemp.province.key+','+regionTemp.city.key+','+regionTemp.area.key;
                    }
              
                self.$emit('fecne-modal-ok', data,self.administrationFenceModal.current.overlay)
               }
            })
        },
}

上面步骤五保存操作数据格式(例如:广东省广州市天河区|编码,编码,编码)是方便后台,具体保存数据样式更具自己实际情况。

具体更详细区域选择参考:Vue Components

相关推荐
滕州市燕猫虎计算机科技工作室个体工商户18 分钟前
Java,Java NIO,Java NIO2,Java AIO,AsynchronousServerSocketChannel
java·开发语言·nio·aio·nio2
古城小栈24 分钟前
Rust 学习路线,供初学者参考
开发语言·rust
喵了几个咪28 分钟前
GoWind CMS 拆解:给 NL2SQL 上四把锁——智能问数的安全边界
开发语言·后端·安全·微服务·golang·gowind
多弗朗皮卡丘31 分钟前
C++的类型转换
开发语言·c++
FLJwu1 小时前
运动相机图像传感器选型实战|第二篇:参数看着一模一样,为什么骑行录像疯狂果冻、拖影翻车?
android·c语言·开发语言·数码相机·运动相机·oem 量产
驭渊的小故事1 小时前
从 JVM 底层看泛型:泛型擦除、Signature 属性与 Super Type Token 模式
java·开发语言·jvm
Escalating_xu1 小时前
【C语言项目实战】贪吃蛇(下):移动、碰撞与计分,完成一局可玩的游戏
c语言·开发语言·游戏
qq_401700412 小时前
Qt Modbus 源码剖析:从 QModbusClient 到工业级通信框架
开发语言·qt·系统架构
星夜离尘562 小时前
MATLAB 角度解缠遇到丢样:先分段,再说明圈数为什么不可恢复
开发语言·matlab
我命由我123452 小时前
6-2.Python 异常处理 - 异常捕获(捕获指定异常、常见异常类型、异常信息)
java·运维·开发语言·python·http·https·java-ee