最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue實現(xiàn)省市區(qū)三級聯(lián)動el-select組件的示例代碼

 更新時間:2023年02月20日 09:59:42   作者:chengqiuming  
這篇文章主要為大家詳細(xì)介紹了Vue實現(xiàn)省市區(qū)三級聯(lián)動el-select組件的方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的的可以參考一下

一 自定義組件

1 位置

2 代碼

<template>
  <div class="areaSelect flex">
    <!-- 省選擇框 -->
    <el-select
      filterable
      :disabled="disabled"
      v-model="province"
      :size="size"
      placeholder="省"
      @change="changeCode($event,0)">
      <el-option
        v-for="item in provinceList"
        :key="item.value"
        :label="item.label"
        :value="item.value">
      </el-option>
    </el-select>
    <!-- 市選擇框 -->
    <el-select
      filterable
      :disabled="disabled"
      class="center_select"
      v-model="city"
      placeholder="市"
      @change="changeCode($event,1)">
      <el-option
        v-for="item in cityList"
        :key="item.value"
        :label="item.label"
        :value="item.value">
      </el-option>
    </el-select>
    <!-- 區(qū)選擇框 -->
    <el-select
      filterable
      :disabled="disabled"
      v-model="area"
      placeholder="區(qū)"
      @change="changeCode($event,2)">
      <el-option
        v-for="item in areaList"
        :key="item.value"
        :label="item.label"
        :value="item.value">
      </el-option>
    </el-select>
  </div>
</template>
<script>
  export default {
    name: 'regionSelect',
    props: {
      size: '',
      disabled: {
        size: String,
        type: Boolean,
        default: false
      },
      code: {
        type: Object,
        default: () => {
          return {
            areaCode: '',
            areaName: '',
            cityCode: '',
            cityName: '',
            provinceCode: '',
            provinceName: ''
          }
        }
      }
    },
    data () {
      return {
        province: '',
        city: '',
        area: '',
        provinceList: [],
        cityList: [],
        areaList: []
      }
    },
    watch: {
      code (val) {
        if (val.areaName && val.areaName !== '') {
          this.province = val.provinceCode
          this.city = val.cityCode
          this.area = val.areaCode
          this.provinceCity(val.provinceCode)
          this.cityArea(val.cityCode)
        } else {
          this.cityList = []
          this.areaList = []
        }
      }
    },
    mounted () {
      if (this.code.areaName && this.code.areaName !== '') {
        this.province = this.code.provinceCode
        this.city = this.code.cityCode
        this.area = this.code.areaCode
        this.provinceCity(this.code.provinceCode)
        this.cityArea(this.code.cityCode)
      }
      this.getProvince()
    },
    methods: {
      resetArea () {
        this.province = ''
        this.city = ''
        this.area = ''
      },
      // 當(dāng) type == 0 ,data 表示省編碼
      // 當(dāng) type == 1 ,data 表示市編碼
      changeCode (data, type) {
        if (type === 0) {
          this.city = ''
          this.area = ''
          this.provinceCity(data)
        }
        if (type === 1) {
          this.area = ''
          this.cityArea(data)
        }
        if (this.province !== '' && this.city !== '' && this.area !== '') {
          this.$emit(
            'code', [{
              code: this.province,
              name: this.provinceList.find(
                (val) => val.value === this.province
              ).label
            }, {
              code: this.city,
              name: this.cityList.find(
                (val) => val.value === this.city
              ).label
            }, {
              code: this.area,
              name: this.areaList.find(
                (val) => val.value === this.area
              ).label
            }]
          )
        }
      },
      // 從后臺獲得省數(shù)據(jù)列表
      async getProvince () {
        let result = []
        let url = '/base/division/provinceList'
        let data = await this.$http.get(url)
        data.data.data.map((item) => {
          result.push({
            label: item.name,
            value: item.code
          })
        })
        this.provinceList = result
      },
      // 依據(jù)省編碼獲得市數(shù)據(jù)列表
      async provinceCity (code) {
        let result = []
        let url = '/base/division/cityList'
        let data = await this.$http({
          url: url,
          method: 'get',
          params: {
            provinceCode: code
          }
        })
 
 
        data.data.data.map((item) => {
          result.push({
            label: item.name,
            value: item.code
          })
        })
        this.cityList = result
      },
      // 依據(jù)市編碼獲得區(qū)數(shù)據(jù)列表
      async cityArea (code) {
        let url = '/base/division/districtList'
        let data = await this.$http({
          url: url,
          method: 'get',
          params: {
            cityCode: code
          }
        })
        let result = []
        data.data.data.map((item) => {
          result.push({
            label: item.name,
            value: item.code
          })
        })
        this.areaList = result
      }
    }
  }
</script>
<style>
  .center_select {
    margin: 0 10px;
  }
 
 
  .global_form .areaSelect {
    width: 70%;
  }
 
 
  .global_form .areaSelect .el-select {
    width: 33.33%;
  }
</style>

二 main.js 配置

// 行政區(qū)劃三級選擇
import RegionSelect from './components/regionSelect'
// 行政區(qū)劃三級選擇
Vue.use(RegionSelect)
// 行政區(qū)劃三級選擇
Vue.component('regionSelect', RegionSelect)

三 使用方法

1 結(jié)構(gòu)部分

<regionSelect
  :code="item.value"
  :disabled="item.disabled"
  :size="layout.size"
  @code="changeCode($event,item.prop)"
  v-if="item.type==='region'"
  ref="selectArea"
></regionSelect>

2 代碼部分

searchForm: {
  province: '', // 省
  city: '', // 市
  district: '' // 區(qū)
},
item: { // 省市區(qū) select 自定義組件傳參部分
  value: '',
  type: 'region',
  disabled: false
},
layout: { // 選擇框樣式,用于傳參
  size: ''
},

3 樣式部分

// 省市區(qū)選擇框改變時,傳遞出來已選擇的值
changeCode (data, prop) {
  this.searchForm.province = data[0].name
  this.searchForm.city = data[1].name
  this.searchForm.district = data[2].name
},
// 重置選擇框
resetForm () {
  this.$refs.selectArea[0].resetArea()  // 清除省市區(qū)
}

四 測試

1 級聯(lián)選擇

2 觀察數(shù)據(jù)

到此這篇關(guān)于Vue實現(xiàn)省市區(qū)三級聯(lián)動el-select組件的示例代碼的文章就介紹到這了,更多相關(guān)Vue省市區(qū)三級聯(lián)動組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 手把手教你如何在vue項目中使用rem布局

    手把手教你如何在vue項目中使用rem布局

    公司內(nèi)部一直有大屏的需求,也一直再做,中途也踩了一些坑,但是沒有認(rèn)真的來總結(jié)下,下面這篇文章主要給大家介紹了關(guān)于如何在vue項目中使用rem布局的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • Vue3實現(xiàn)下拉選擇框多選功能的方法詳解

    Vue3實現(xiàn)下拉選擇框多選功能的方法詳解

    在vue的實際開發(fā)過程中,我們?nèi)绾螌⒁赃x中的值直接渲染到頁面中,下面這篇文章主要給大家介紹了關(guān)于Vue3實現(xiàn)下拉選擇框多選功能的相關(guān)資料,需要的朋友可以參考下
    2023-09-09
  • Vue2?響應(yīng)式系統(tǒng)之?dāng)?shù)組

    Vue2?響應(yīng)式系統(tǒng)之?dāng)?shù)組

    這篇文章主要介紹了Vue2?響應(yīng)式系統(tǒng)之?dāng)?shù)組,本文接著上幾篇文章Vue2響應(yīng)式系統(tǒng)?、Vue2?響應(yīng)式系統(tǒng)之分支切換,響應(yīng)式系統(tǒng)之嵌套、響應(yīng)式系統(tǒng)之深度響應(yīng)?展開相關(guān)內(nèi)容,需要的朋友可以參考一下
    2022-04-04
  • vue項目初始化過程中錯誤總結(jié)

    vue項目初始化過程中錯誤總結(jié)

    在Vue.js項目初始化和構(gòu)建過程中,可能會遇到多種問題,首先,npm?install過程中報錯,如提示“No?such?file?or?directory”,建議刪除package-lock.json文件后重新安裝,在build或run時,若出現(xiàn)core-js相關(guān)錯誤
    2024-09-09
  • 使用Vue實現(xiàn)移動端左滑刪除效果附源碼

    使用Vue實現(xiàn)移動端左滑刪除效果附源碼

    這篇文章主要介紹了使用Vue實現(xiàn)移動端左滑刪除效果,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • 使用vue-cli4.0快速搭建一個項目的方法步驟

    使用vue-cli4.0快速搭建一個項目的方法步驟

    這篇文章主要介紹了使用vue-cli4.0快速搭建一個項目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 詳解vue中v-model和v-bind綁定數(shù)據(jù)的異同

    詳解vue中v-model和v-bind綁定數(shù)據(jù)的異同

    這篇文章主要介紹了vue中v-model和v-bind綁定數(shù)據(jù)的異同,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • 淺析vue-router原理

    淺析vue-router原理

    這篇文章主要圍繞Vue的SPA單頁面設(shè)計展開。SPA(single page application):單一頁面應(yīng)用程序,有且只有一個完整的頁面,對vue router原理感興趣的朋友跟隨小編一起看看吧
    2018-10-10
  • vue router 跳轉(zhuǎn)時打開新頁面的示例方法

    vue router 跳轉(zhuǎn)時打開新頁面的示例方法

    這篇文章主要介紹了vue router 跳轉(zhuǎn)時打開新頁面的示例方法,本文通過示例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • 淺析vue中的組件傳值

    淺析vue中的組件傳值

    這篇文章主要介紹了淺析vue中的組件傳值,文章基于vue的相關(guān)資料展開對主題的詳細(xì)介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-04-04

最新評論

丘北县| 贵德县| 微山县| 柳林县| 烟台市| 都匀市| 乌审旗| 历史| 福鼎市| 沂水县| 南陵县| 双鸭山市| 天柱县| 襄城县| 伊金霍洛旗| 青神县| 全椒县| 宁蒗| 阜平县| 英德市| 明溪县| 西盟| 绥江县| 茂名市| 深州市| 左贡县| 盘锦市| 久治县| 漠河县| 东乡县| 久治县| 镶黄旗| 东阿县| 垫江县| 祥云县| 乌鲁木齐县| 博爱县| 中江县| 富宁县| 安塞县| 平定县|