Element UI 自定义省市区三级联动选择组件

一 自定义组件代码

1 文件存放位置

2 代码

<template>
  <div>
    <el-cascader
      ref="cas"
      expand-trigger="hover"
      style="width: 100%;"
      :options="options"
      v-model="value1"
      @change="handleChange"
      filterable
      :props="{value:'label'}"
      placeholder="省/市/区"
    ></el-cascader>
  </div>
</template>

<script>
  export default {
    name: 'regionCascader',
    props: ['value'],
    data () {
      return {
        options: [],
        selectedOptions: []
      }
    },
    computed: {
      value1: {
        set (val) {
          this.$emit('input', val)
        },
        get (val) {
          return this.value
        }
      }
    },
    mounted () {
      let page = this
      page.getNode()
    },
    methods: {
      handleChange (value) {
        this.$emit('provincesValueChang', this.$refs.cas.getCheckedNodes()[0].pathLabels)
      },

      getNode () {
        this.$http({
          url: `/base/division/pcd`,
          method: 'get'
        }).then(({data}) => {
          if (data && data.code === 0) {
            // eslint-disable-next-line no-useless-escape
            this.options = JSON.parse(JSON.stringify(data.options).replace(/\"children"\:\[]/g, '"no":0'))
          }
        })
      }
    }
  }
</script>

二 main.js 代码

import RegionCascader from './components/regionCascader'
Vue.use(RegionCascader)
Vue.component('regionCascader', RegionCascader)

三 使用方法

1 结构部分

<!-- 自定义省/市/区级联选择控件的使用 -->
<el-form-item label="省/市/区">
  <regionCascader
    @provincesValueChang="provincesValueChang"
    :value="region"
    @update:value="region=$event"
    style="width: 100%;"
  ></regionCascader>
</el-form-item>

<!-- 显示选择的省/市/区 -->
<el-form-item label="所在省" prop="province">
  <el-input v-model="dataForm.province" :disabled="disabled" placeholder="所在省"></el-input>
</el-form-item>
<el-form-item label="所在市" prop="city">
  <el-input v-model="dataForm.city" :disabled="disabled" placeholder="所在市"></el-input>
</el-form-item>
<el-form-item label="所在区县" prop="district">
  <el-input v-model="dataForm.district" :disabled="disabled" placeholder="所在区县"></el-input>
</el-form-item>

2 js 数据部分

data () {
  return {
    region: '', // 自定义省/市/区级联选择控件用此数据
    visible: false,
    dataForm: {
      ......
      province: '', // 省
      city: '', // 市
      district: '', // 区
    },
    dataRule: {
      name: [
        {required: true, message: '名称不能为空', trigger: 'blur'}
      ]
    }
  }
},

3 js 方法部分

methods: {
  // 省市区选择处理
  provincesValueChang (value) {
    this.dataForm.province = value[0]
    this.dataForm.city = value[1]
    this.dataForm.district = value[2]
  }
}

四 测试

1 选择省、市、区

2 填充所在省、所在省、所在区,点击确定后,就可把选择的省市区存到后端数据库

五 参考

1 element-ui如何使用el-cascader进行省市区的选择

https://blog.csdn.net/qq_42690194/article/details/125669141

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值