vue+element ui 省市县三级联动插入+修改回显

vue element-china-area-data使用详解

城市选择器插件参考:https://www.npmjs.com/package/element-china-area-data

使用前提vue相关配置已准备好

安装

npm install element-china-area-data -S

使用时在scrip中先进行引用在使用,前面代表不同的格式

import { provinceAndCityData, regionData, provinceAndCityDataPlus, regionDataPlus, CodeToText, TextToCode } from 'element-china-area-data'

我使用的

    import {  regionData,CodeToText,TextToCode } from 'element-china-area-data'

provinceAndCityData是省市二级联动数据(不带“全部”选项)
regionData是省市区三级联动数据(不带“全部”选项)regionData是省市区三级联动数据(不带“全部”选项)
provinceAndCityDataPlus是省市区三级联动数据(带“全部”选项)
regionDataPlus是省市区三级联动数据(带“全部”选项)
“全部"选项绑定的value是空字符串”"
CodeToText是个大对象,属性是区域码,属性值是汉字 用法例如:CodeToText[‘110000’]输出北京市
TextToCode是个大对象,属性是汉字,属性值是区域码 用法例如:TextToCode[‘北京市’].code输出110000,TextToCode[‘北京市’][‘市辖区’].code输出110100,TextToCode[‘北京市’][‘市辖区’][‘朝阳区’].code输出110105

在return里

return {
                form:{
                    provinces:"",
                    city:"",
                    area:""
                },
                options: regionData,
                selectedOptions: [],
                }

在form表单里

<el-form-item label="维修厂地址" prop="address">
                    <el-cascader
                            size="large"
                            :options="options"
                            v-model="selectedOptions"
                            @change="handleChange">
                    </el-cascader>
                </el-form-item>

方法method里

//省市区三级联动事件
            handleChange (value) {
            // this.edit();
                console.log(value)
                if (value[1] != null && value[2] != null) {
                    var dz = CodeToText[value[0]] + '/' + CodeToText[value[1]] + '/' + CodeToText[value[2]]

                } else {
                    if (value[1] != null) {
                        dz = CodeToText[value[0]] + '/' + CodeToText[value[1]]
                    } else {
                        dz = CodeToText[value[0]]
                    }
                }
                this.mtShopForm.address = dz

                this.form.provinces= CodeToText[this.selectedOptions[0]]
                this.form.city= CodeToText[this.selectedOptions[1]]
                this.form.area= CodeToText[this.selectedOptions[2]]
            },

在修改回显里

//修改回显
            selectById(id){

                this.editMtShopDialog=true;
                var that=this;
                this.$http.get(`/maintain/shop/selById/${id}`).then(function (resp) {
                    that.mtShopForm=resp.data.result.MtShop;
                    let strings=resp.data.result.MtShop.address.split("/")

                    that.form.provinces=strings[0];
                    that.form.city=strings[1];
                    that.form.area=strings[2];
                    that.selectedOptions=[
                        TextToCode[that.form.provinces].code,
                        TextToCode[that.form.provinces][that.form.city].code,
                        TextToCode[that.form.provinces][that.form.city][that.form.area].code]
                })

            },

效果
在这里插入图片描述
回显
在这里插入图片描述

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Vue+TypeScript和Element Plus的三级联动数据回显,可以按照以下步骤进行实现: 1. 首先,在Vue组件中定义省市区的数据源,可以使用数组或者对象的形式存储。例如: ```typescript data() { return { provinceList: [], // 省份数据源 cityList: [], // 城市数据源 districtList: [], // 区数据源 selectedProvince: '', // 选中的省份 selectedCity: '', // 选中的城市 selectedDistrict: '', // 选中的区 // 其他数据... }; }, ``` 2. 在组件的`mounted`生命周期钩子函数中初始化省份数据源,并根据选中的省份获取对应的城市和区数据。例如: ```typescript mounted() { // 初始化省份数据源 this.provinceList = [ { id: 1, name: '北京' }, { id: 2, name: '上海' }, { id: 3, name: '广东' }, // 其他省份... ]; // 根据选中的省份获取城市和区数据 this.fetchCityList(this.selectedProvince); this.fetchDistrictList(this.selectedCity); }, ``` 3. 实现方法`fetchCityList`和`fetchDistrictList`,用于根据选中的省份和城市获取对应的城市和区数据。可以使用ajax、axios或者其他方式获取数据。例如: ```typescript methods: { fetchCityList(provinceId: number) { // 根据省份ID获取城市数据,此处假设省份ID与城市数据对应 this.cityList = [ { id: 11, name: '北京市' }, { id: 12, name: '天津市' }, { id: 13, name: '石家庄市' }, // 其他城市... ]; // 清空选中的城市和区 this.selectedCity = ''; this.selectedDistrict = ''; }, fetchDistrictList(cityId: number) { // 根据城市ID获取区数据,此处假设城市ID与区数据对应 this.districtList = [ { id: 111, name: '东城区' }, { id: 112, name: '西城区' }, { id: 113, name: '朝阳区' }, // 其他区... ]; // 清空选中的区 this.selectedDistrict = ''; }, }, ``` 4. 在模板中使用`<el-select>`组件实现三级联动选择框,并绑定选中的值和数据源。例如: ```html <el-select v-model="selectedProvince" placeholder="请选择省份" @change="fetchCityList(selectedProvince)"> <el-option v-for="province in provinceList" :key="province.id" :value="province.id" :label="province.name"></el-option> </el-select> <el-select v-model="selectedCity" placeholder="请选择城市" @change="fetchDistrictList(selectedCity)"> <el-option v-for="city in cityList" :key="city.id" :value="city.id" :label="city.name"></el-option> </el-select> <el-select v-model="selectedDistrict" placeholder="请选择区"> <el-option v-for="district in districtList" :key="district.id" :value="district.id" :label="district.name"></el-option> </el-select> ``` 通过以上步骤,就可以实现省市三级联动数据回显的功能了。当选择省份时,会根据选中的省份动态获取对应的城市数据;当选择城市时,会根据选中的城市动态获取对应的区数据。同时,选中的值会与`selectedProvince`、`selectedCity`和`selectedDistrict`进行双向绑定,以便在提交表单或其他操作时使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值