# 地址选择 AddressSelect

在表单中收集中国的省市区地址选择组件

# 基础用法

基本用法

包括如何选择、如何触发事件

<title>基本用法</title>
<describe>包括如何选择、如何触发事件</describe>
<template>
  <hc-address-select
    v-model="value"
    :text="text"
    :display-type="displayType"
    clearable
    :fetch-country-data="fetchCountryData"
    :fetch-region-data="fetchRegionData"
    @change="handleChange"
    @clear="handleClear"
  />
</template>
<script>
export default {
  data: function () {
    return {
      value: {
        country: '86',
        street: '天安门大街Q-22332号',
        province: '140000',
        city: '140100'
      },
      text: {
        country: '中国',
        province: '山西省',
        city: '太原市',
        county: undefined,
        street: 'afwefw'
      },
      displayType: 2
    }
  },
  computed: {
    treeData: function () {
      return [{"parent":"00","text":"中国","value":"86","children":[{"value":"110000","text":"北京市","parent":"86","children":[{"value":"110100","text":"市辖区","parent":"110000","children":[{"value":"110101","text":"东城区","parent":"110100"},{"value":"110102","text":"西城区","parent":"110100"},{"value":"110105","text":"朝阳区","parent":"110100"},{"value":"110106","text":"丰台区","parent":"110100"},{"value":"110107","text":"石景山区","parent":"110100"},{"value":"110108","text":"海淀区","parent":"110100"},{"value":"110109","text":"门头沟区","parent":"110100"},{"value":"110111","text":"房山区","parent":"110100"},{"value":"110112","text":"通州区","parent":"110100"},{"value":"110113","text":"顺义区","parent":"110100"},{"value":"110114","text":"昌平区","parent":"110100"},{"value":"110115","text":"大兴区","parent":"110100"},{"value":"110116","text":"怀柔区","parent":"110100"},{"value":"110117","text":"平谷区","parent":"110100"},{"value":"110118","text":"密云区","parent":"110100"},{"value":"110119","text":"延庆区","parent":"110100"}]},{"value":"140000","text":"山西省","parent":"86","children":[{"value":"140100","text":"太原市","parent":"140000","children":[{"value":"140105","text":"小店区","parent":"140100"},{"value":"140106","text":"迎泽区","parent":"140100"},{"value":"140107","text":"杏花岭区","parent":"140100"},{"value":"140108","text":"尖草坪区","parent":"140100"},{"value":"140109","text":"万柏林区","parent":"140100"},{"value":"140110","text":"晋源区","parent":"140100"},{"value":"140121","text":"清徐县","parent":"140100"},{"value":"140122","text":"阳曲县","parent":"140100"},{"value":"140123","text":"娄烦县","parent":"140100"},{"value":"140181","text":"古交市","parent":"140100"}]},{"value":"140200","text":"大同市","parent":"140000","children":[{"value":"140202","text":"城区","parent":"140200"},{"value":"140203","text":"矿区","parent":"140200"},{"value":"140211","text":"南郊区","parent":"140200"},{"value":"140212","text":"新荣区","parent":"140200"},{"value":"140221","text":"阳高县","parent":"140200"},{"value":"140222","text":"天镇县","parent":"140200"},{"value":"140223","text":"广灵县","parent":"140200"},{"value":"140224","text":"灵丘县","parent":"140200"},{"value":"140225","text":"浑源县","parent":"140200"},{"value":"140226","text":"左云县","parent":"140200"},{"value":"140227","text":"大同县","parent":"140200"}]},{"value":"140300","text":"阳泉市","parent":"140000","children":[{"value":"140302","text":"城区","parent":"140300"},{"value":"140303","text":"矿区","parent":"140300"},{"value":"140311","text":"郊区","parent":"140300"},{"value":"140321","text":"平定县","parent":"140300"},{"value":"140322","text":"盂县","parent":"140300"}]},{"value":"140400","text":"长治市","parent":"140000","children":[{"value":"140402","text":"城区","parent":"140400"},{"value":"140411","text":"郊区","parent":"140400"},{"value":"140421","text":"长治县","parent":"140400"},{"value":"140423","text":"襄垣县","parent":"140400"},{"value":"140424","text":"屯留县","parent":"140400"},{"value":"140425","text":"平顺县","parent":"140400"},{"value":"140426","text":"黎城县","parent":"140400"},{"value":"140427","text":"壶关县","parent":"140400"},{"value":"140428","text":"长子县","parent":"140400"},{"value":"140429","text":"武乡县","parent":"140400"},{"value":"140430","text":"沁县","parent":"140400"},{"value":"140431","text":"沁源县","parent":"140400"},{"value":"140481","text":"潞城市","parent":"140400"}]},{"value":"140500","text":"晋城市","parent":"140000","children":[{"value":"140502","text":"城区","parent":"140500"},{"value":"140521","text":"沁水县","parent":"140500"},{"value":"140522","text":"阳城县","parent":"140500"},{"value":"140524","text":"陵川县","parent":"140500"},{"value":"140525","text":"泽州县","parent":"140500"},{"value":"140581","text":"高平市","parent":"140500"}]},{"value":"140600","text":"朔州市","parent":"140000","children":[{"value":"140602","text":"朔城区","parent":"140600"},{"value":"140603","text":"平鲁区","parent":"140600"},{"value":"140621","text":"山阴县","parent":"140600"},{"value":"140622","text":"应县","parent":"140600"},{"value":"140623","text":"右玉县","parent":"140600"},{"value":"140624","text":"怀仁县","parent":"140600"}]},{"value":"140700","text":"晋中市","parent":"140000","children":[{"value":"140702","text":"榆次区","parent":"140700"},{"value":"140721","text":"榆社县","parent":"140700"},{"value":"140722","text":"左权县","parent":"140700"},{"value":"140723","text":"和顺县","parent":"140700"},{"value":"140724","text":"昔阳县","parent":"140700"},{"value":"140725","text":"寿阳县","parent":"140700"},{"value":"140726","text":"太谷县","parent":"140700"},{"value":"140727","text":"祁县","parent":"140700"},{"value":"140728","text":"平遥县","parent":"140700"},{"value":"140729","text":"灵石县","parent":"140700"},{"value":"140781","text":"介休市","parent":"140700"}]},{"value":"140800","text":"运城市","parent":"140000","children":[{"value":"140802","text":"盐湖区","parent":"140800"},{"value":"140821","text":"临猗县","parent":"140800"},{"value":"140822","text":"万荣县","parent":"140800"},{"value":"140823","text":"闻喜县","parent":"140800"},{"value":"140824","text":"稷山县","parent":"140800"},{"value":"140825","text":"新绛县","parent":"140800"},{"value":"140826","text":"绛县","parent":"140800"},{"value":"140827","text":"垣曲县","parent":"140800"},{"value":"140828","text":"夏县","parent":"140800"},{"value":"140829","text":"平陆县","parent":"140800"},{"value":"140830","text":"芮城县","parent":"140800"},{"value":"140881","text":"永济市","parent":"140800"},{"value":"140882","text":"河津市","parent":"140800"}]},{"value":"140900","text":"忻州市","parent":"140000","children":[{"value":"140902","text":"忻府区","parent":"140900"},{"value":"140921","text":"定襄县","parent":"140900"},{"value":"140922","text":"五台县","parent":"140900"},{"value":"140923","text":"代县","parent":"140900"},{"value":"140924","text":"繁峙县","parent":"140900"},{"value":"140925","text":"宁武县","parent":"140900"},{"value":"140926","text":"静乐县","parent":"140900"},{"value":"140927","text":"神池县","parent":"140900"},{"value":"140928","text":"五寨县","parent":"140900"},{"value":"140929","text":"岢岚县","parent":"140900"},{"value":"140930","text":"河曲县","parent":"140900"},{"value":"140931","text":"保德县","parent":"140900"},{"value":"140932","text":"偏关县","parent":"140900"},{"value":"140981","text":"原平市","parent":"140900"}]},{"value":"141000","text":"临汾市","parent":"140000","children":[{"value":"141002","text":"尧都区","parent":"141000"},{"value":"141021","text":"曲沃县","parent":"141000"},{"value":"141022","text":"翼城县","parent":"141000"},{"value":"141023","text":"襄汾县","parent":"141000"},{"value":"141024","text":"洪洞县","parent":"141000"},{"value":"141025","text":"古县","parent":"141000"},{"value":"141026","text":"安泽县","parent":"141000"},{"value":"141027","text":"浮山县","parent":"141000"},{"value":"141028","text":"吉县","parent":"141000"},{"value":"141029","text":"乡宁县","parent":"141000"},{"value":"141030","text":"大宁县","parent":"141000"},{"value":"141031","text":"隰县","parent":"141000"},{"value":"141032","text":"永和县","parent":"141000"},{"value":"141033","text":"蒲县","parent":"141000"},{"value":"141034","text":"汾西县","parent":"141000"},{"value":"141081","text":"侯马市","parent":"141000"},{"value":"141082","text":"霍州市","parent":"141000"}]},{"value":"141100","text":"吕梁市","parent":"140000","children":[{"value":"141102","text":"离石区","parent":"141100"},{"value":"141121","text":"文水县","parent":"141100"},{"value":"141122","text":"交城县","parent":"141100"},{"value":"141123","text":"兴县","parent":"141100"},{"value":"141124","text":"临县","parent":"141100"},{"value":"141125","text":"柳林县","parent":"141100"},{"value":"141126","text":"石楼县","parent":"141100"},{"value":"141127","text":"岚县","parent":"141100"},{"value":"141128","text":"方山县","parent":"141100"},{"value":"141129","text":"中阳县","parent":"141100"},{"value":"141130","text":"交口县","parent":"141100"},{"value":"141181","text":"孝义市","parent":"141100"},{"value":"141182","text":"汾阳市","parent":"141100"}]}]}]}]}]
    }
  },
  methods: {
    fetchCountryData: function() {
      // 在线编码使用$util.deffer代替promise和$_.delay代替setTimeout
      return new Promise(function (resolve, reject) {
        return resolve([
          {
            text: '中国',
            value: '86'
          }
        ])
      })
    },
    fetchRegionData: function ({ country }) {
      var me = this
      // 在线编码使用$util.deffer代替promise和$_.delay代替setTimeout
      return new Promise(function (resolve, reject) {
        var data = []
        me.treeData.some(function (v) {
          if (v.value === country) {
            data = v.children
            return true
          }
        })
        console.log(data)
        resolve(data)
      })
    },
    handleChange: function (e) {
      this.text = e.text
      this.value = e.value
    },
    handleClear: function (type) {
      switch (type) {
        case "region":
          this.text.city = "";
          this.text.province = "";
          break;
        case "country":
          this.text.country = "";
          break;
        case "street":
          this.text.street = "";
          this.value.street = "";
          break;
      }
    }
  }
}
</script>

# 显示方式

显示方式

通过配置`displayType`属性,可以指定组件的显示方式

<title>显示方式</title>
<describe>通过配置`displayType`属性,可以指定组件的显示方式</describe>
<template>
  <select
    v-model="displayType"
    style="margin-bottom: 12px"
  >
    <option :value="0">国家</option>
    <option :value="1">国家/省/市</option>
    <option :value="2">国家/省/市/街道地址</option>
    <option :value="3">省/市</option>
    <option :value="4">省/市/区县</option>
    <option :value="5">省/市/区县/街道地址</option>
  </select>
  <hc-address-select
    v-model="value"
    :text="text"
    :display-type="displayType"
    :fetch-country-data="fetchCountryData"
    :fetch-region-data="fetchRegionData"
    @change="handleChange"
  />
</template>
<script>
export default {

  data: function () {
    return {
      value: {},
      text: {},
      displayType: 2
    }
  },
  computed: {
    treeData: function () {
      return [{"parent":"00","text":"中国","value":"86","children":[{"value":"110000","text":"北京市","parent":"86","children":[{"value":"110100","text":"市辖区","parent":"110000","children":[{"value":"110101","text":"东城区","parent":"110100"},{"value":"110102","text":"西城区","parent":"110100"},{"value":"110105","text":"朝阳区","parent":"110100"},{"value":"110106","text":"丰台区","parent":"110100"},{"value":"110107","text":"石景山区","parent":"110100"},{"value":"110108","text":"海淀区","parent":"110100"},{"value":"110109","text":"门头沟区","parent":"110100"},{"value":"110111","text":"房山区","parent":"110100"},{"value":"110112","text":"通州区","parent":"110100"},{"value":"110113","text":"顺义区","parent":"110100"},{"value":"110114","text":"昌平区","parent":"110100"},{"value":"110115","text":"大兴区","parent":"110100"},{"value":"110116","text":"怀柔区","parent":"110100"},{"value":"110117","text":"平谷区","parent":"110100"},{"value":"110118","text":"密云区","parent":"110100"},{"value":"110119","text":"延庆区","parent":"110100"}]},{"value":"140000","text":"山西省","parent":"86","children":[{"value":"140100","text":"太原市","parent":"140000","children":[{"value":"140105","text":"小店区","parent":"140100"},{"value":"140106","text":"迎泽区","parent":"140100"},{"value":"140107","text":"杏花岭区","parent":"140100"},{"value":"140108","text":"尖草坪区","parent":"140100"},{"value":"140109","text":"万柏林区","parent":"140100"},{"value":"140110","text":"晋源区","parent":"140100"},{"value":"140121","text":"清徐县","parent":"140100"},{"value":"140122","text":"阳曲县","parent":"140100"},{"value":"140123","text":"娄烦县","parent":"140100"},{"value":"140181","text":"古交市","parent":"140100"}]},{"value":"140200","text":"大同市","parent":"140000","children":[{"value":"140202","text":"城区","parent":"140200"},{"value":"140203","text":"矿区","parent":"140200"},{"value":"140211","text":"南郊区","parent":"140200"},{"value":"140212","text":"新荣区","parent":"140200"},{"value":"140221","text":"阳高县","parent":"140200"},{"value":"140222","text":"天镇县","parent":"140200"},{"value":"140223","text":"广灵县","parent":"140200"},{"value":"140224","text":"灵丘县","parent":"140200"},{"value":"140225","text":"浑源县","parent":"140200"},{"value":"140226","text":"左云县","parent":"140200"},{"value":"140227","text":"大同县","parent":"140200"}]},{"value":"140300","text":"阳泉市","parent":"140000","children":[{"value":"140302","text":"城区","parent":"140300"},{"value":"140303","text":"矿区","parent":"140300"},{"value":"140311","text":"郊区","parent":"140300"},{"value":"140321","text":"平定县","parent":"140300"},{"value":"140322","text":"盂县","parent":"140300"}]},{"value":"140400","text":"长治市","parent":"140000","children":[{"value":"140402","text":"城区","parent":"140400"},{"value":"140411","text":"郊区","parent":"140400"},{"value":"140421","text":"长治县","parent":"140400"},{"value":"140423","text":"襄垣县","parent":"140400"},{"value":"140424","text":"屯留县","parent":"140400"},{"value":"140425","text":"平顺县","parent":"140400"},{"value":"140426","text":"黎城县","parent":"140400"},{"value":"140427","text":"壶关县","parent":"140400"},{"value":"140428","text":"长子县","parent":"140400"},{"value":"140429","text":"武乡县","parent":"140400"},{"value":"140430","text":"沁县","parent":"140400"},{"value":"140431","text":"沁源县","parent":"140400"},{"value":"140481","text":"潞城市","parent":"140400"}]},{"value":"140500","text":"晋城市","parent":"140000","children":[{"value":"140502","text":"城区","parent":"140500"},{"value":"140521","text":"沁水县","parent":"140500"},{"value":"140522","text":"阳城县","parent":"140500"},{"value":"140524","text":"陵川县","parent":"140500"},{"value":"140525","text":"泽州县","parent":"140500"},{"value":"140581","text":"高平市","parent":"140500"}]},{"value":"140600","text":"朔州市","parent":"140000","children":[{"value":"140602","text":"朔城区","parent":"140600"},{"value":"140603","text":"平鲁区","parent":"140600"},{"value":"140621","text":"山阴县","parent":"140600"},{"value":"140622","text":"应县","parent":"140600"},{"value":"140623","text":"右玉县","parent":"140600"},{"value":"140624","text":"怀仁县","parent":"140600"}]},{"value":"140700","text":"晋中市","parent":"140000","children":[{"value":"140702","text":"榆次区","parent":"140700"},{"value":"140721","text":"榆社县","parent":"140700"},{"value":"140722","text":"左权县","parent":"140700"},{"value":"140723","text":"和顺县","parent":"140700"},{"value":"140724","text":"昔阳县","parent":"140700"},{"value":"140725","text":"寿阳县","parent":"140700"},{"value":"140726","text":"太谷县","parent":"140700"},{"value":"140727","text":"祁县","parent":"140700"},{"value":"140728","text":"平遥县","parent":"140700"},{"value":"140729","text":"灵石县","parent":"140700"},{"value":"140781","text":"介休市","parent":"140700"}]},{"value":"140800","text":"运城市","parent":"140000","children":[{"value":"140802","text":"盐湖区","parent":"140800"},{"value":"140821","text":"临猗县","parent":"140800"},{"value":"140822","text":"万荣县","parent":"140800"},{"value":"140823","text":"闻喜县","parent":"140800"},{"value":"140824","text":"稷山县","parent":"140800"},{"value":"140825","text":"新绛县","parent":"140800"},{"value":"140826","text":"绛县","parent":"140800"},{"value":"140827","text":"垣曲县","parent":"140800"},{"value":"140828","text":"夏县","parent":"140800"},{"value":"140829","text":"平陆县","parent":"140800"},{"value":"140830","text":"芮城县","parent":"140800"},{"value":"140881","text":"永济市","parent":"140800"},{"value":"140882","text":"河津市","parent":"140800"}]},{"value":"140900","text":"忻州市","parent":"140000","children":[{"value":"140902","text":"忻府区","parent":"140900"},{"value":"140921","text":"定襄县","parent":"140900"},{"value":"140922","text":"五台县","parent":"140900"},{"value":"140923","text":"代县","parent":"140900"},{"value":"140924","text":"繁峙县","parent":"140900"},{"value":"140925","text":"宁武县","parent":"140900"},{"value":"140926","text":"静乐县","parent":"140900"},{"value":"140927","text":"神池县","parent":"140900"},{"value":"140928","text":"五寨县","parent":"140900"},{"value":"140929","text":"岢岚县","parent":"140900"},{"value":"140930","text":"河曲县","parent":"140900"},{"value":"140931","text":"保德县","parent":"140900"},{"value":"140932","text":"偏关县","parent":"140900"},{"value":"140981","text":"原平市","parent":"140900"}]},{"value":"141000","text":"临汾市","parent":"140000","children":[{"value":"141002","text":"尧都区","parent":"141000"},{"value":"141021","text":"曲沃县","parent":"141000"},{"value":"141022","text":"翼城县","parent":"141000"},{"value":"141023","text":"襄汾县","parent":"141000"},{"value":"141024","text":"洪洞县","parent":"141000"},{"value":"141025","text":"古县","parent":"141000"},{"value":"141026","text":"安泽县","parent":"141000"},{"value":"141027","text":"浮山县","parent":"141000"},{"value":"141028","text":"吉县","parent":"141000"},{"value":"141029","text":"乡宁县","parent":"141000"},{"value":"141030","text":"大宁县","parent":"141000"},{"value":"141031","text":"隰县","parent":"141000"},{"value":"141032","text":"永和县","parent":"141000"},{"value":"141033","text":"蒲县","parent":"141000"},{"value":"141034","text":"汾西县","parent":"141000"},{"value":"141081","text":"侯马市","parent":"141000"},{"value":"141082","text":"霍州市","parent":"141000"}]},{"value":"141100","text":"吕梁市","parent":"140000","children":[{"value":"141102","text":"离石区","parent":"141100"},{"value":"141121","text":"文水县","parent":"141100"},{"value":"141122","text":"交城县","parent":"141100"},{"value":"141123","text":"兴县","parent":"141100"},{"value":"141124","text":"临县","parent":"141100"},{"value":"141125","text":"柳林县","parent":"141100"},{"value":"141126","text":"石楼县","parent":"141100"},{"value":"141127","text":"岚县","parent":"141100"},{"value":"141128","text":"方山县","parent":"141100"},{"value":"141129","text":"中阳县","parent":"141100"},{"value":"141130","text":"交口县","parent":"141100"},{"value":"141181","text":"孝义市","parent":"141100"},{"value":"141182","text":"汾阳市","parent":"141100"}]}]}]}]}]
    }
  },
  methods: {
    fetchCountryData: function() {
      // 在线编码使用$util.deffer代替promise和$_.delay代替setTimeout
      return new Promise(function (resolve, reject) {
        return resolve([
          {
            text: '中国',
            value: '86'
          }
        ])
      })
    },
    fetchRegionData: function ({ country }) {
      var me = this
      // 在线编码使用$util.deffer代替promise和$_.delay代替setTimeout
      return new Promise(function (resolve, reject) {
        var data = []
        me.treeData.some(function (v) {
          if (v.value === country) {
            data = v.children
            return true
          }
        })
        resolve(data)
      })
    },
    handleChange: function (e) {
      this.text = e.text
      this.value = e.value
    }
  }
}
</script>

# 属性及事件

# HcAddress 属性

名称 说明 类型 可选值 默认值
value 当前值,支持v-model object -- --
display-type 显示方式 number 0:国家,1:国家省市,
2:国家省市地址,3:省市,
4:省市区,5:省市区地址
--
viewable 是否查看模式 boolean -- false
disabled 是否禁用 boolean -- false
text 当前显示文本 object -- --
clearable 是否显示清除 boolean -- --

# HcAddress-value 属性

名称 说明 类型 可选值 默认值
country 国家GUID string -- --
province 省份Guid string -- --
city 城市Guid string -- --
county 区县Guid string -- --
street 街道地址文本 string -- --

# HcAddress-text 属性

名称 说明 类型 可选值 默认值
country 国家字符串 string -- --
province 省份字符串 string -- --
city 城市字符串 string -- --
county 区县字符串 string -- --

# HcAddress 事件

事件名 说明 参数
change 值改变时触发 event.value: 当前选中的值集合
event.text: 当前选中的文本集合
clear 值清除时触发 string