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

相关推荐
覆东流2 小时前
7.Java数组
java·开发语言·后端
码行山野赴时序归途2 小时前
三道经典数组题:从暴力到最优的算法思维
c语言·开发语言·数据结构·算法·leetcode
threerocks3 小时前
AI 原生软件开发生命周期手册 - 如何借助 AI,逐阶段改造软件开发生命周期
前端·javascript·后端
lzhdim3 小时前
提高 SQL 语句执行速度的方法
java·开发语言·数据库·sql·oracle
JavaPub-rodert3 小时前
王仕宇在 Go Context 如何解决协程泄漏与超时控制
开发语言·后端·golang·iphone·javapub·王仕宇
ly76894 小时前
JavaScript 从入门到进阶:核心语法、异步编程与工程化实践
开发语言·javascript·ecmascript
落魄大学生之流水线上谋生计5 小时前
Java锁全面指南:从基础概念到企业级应用
java·开发语言
for_ever_love__5 小时前
python基础语法学习: 闭包
开发语言·python·学习·闭包
ly76895 小时前
Python 全面入门:从核心语法到工程实践
开发语言·python
艾伦_耶格宇6 小时前
【AI】-4 OpenCode Go 接入 Obsidian 完整指南
运维·开发语言·人工智能·agent·opencode