{"version":3,"file":"dep-d30758bd.mjs","sources":["../../src/city-select/index.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nexport default defineComponent({\n  name: 'TlbsCitySelect',\n  \n})\n</script>\n<template>\n  <div\n    class=\"tlbs-cityselect-container\"\n  >\n    <t-cascader\n      v-model=\"selectValue\"\n      :options=\"options\"\n      v-bind=\"$attrs\"\n      @change=\"onChange\"\n    />\n  </div>\n</template>\n\n<script setup lang=\"ts\" name=\"TlbsCitySelect\">\nimport jsonp from 'fetch-jsonp';\nimport { onMounted, watch } from 'vue';\ninterface Props {\n  modelValue: string;\n  nameType?: 'name' | 'fullname'\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  modelValue: '',\n  nameType: 'fullname',\n});\n\ninterface DistrictData{\n  id: string;\n  name: string;\n  fullname: string;\n  pinyin: string[];\n  location: {\n    lat: number;\n    lng: number;\n  }\n}\ninterface Node{\n  label: string;\n  value: string;\n  children: any;\n  id: string;\n}\nconst selectValue = ref(props.modelValue);\nconst options = ref();\nlet webServiceDistrictResult: DistrictData[][];\nconst key = 'ATRBZ-3QEN3-WCP3H-YPUPE-H54U6-C4BCG';\nconst provinceRequestUrl = `https://apis.map.qq.com/ws/district/v1/list?key=${key}&output=jsonp`;\n\nwatch(() => props.modelValue, (newVal) => {\n  onChange(newVal);\n});\n\nonMounted(() => {\n  jsonp(provinceRequestUrl).then(response => response.json())\n    .then((data) => {\n      if (data && data.status === 0) {\n        webServiceDistrictResult = data.result;\n        options.value = getNodeData(webServiceDistrictResult);\n      } else {\n        console.error(`webServiceDistrict请求失败: ${data.status}`);\n      }\n    })\n    .catch((err) => {\n      console.log('json parsing failed', err);\n    });\n});\nconst emit = defineEmits<{\n  (e: 'update:modelValue', value: string): void,\n  (e: 'change', value: DistrictData | null): void\n}>();\nconst onChange = (value: string) => {\n  selectValue.value = value;\n  const [provinceArr, cityArr, districtArr] = webServiceDistrictResult;\n  const allDistrict = [...provinceArr, ...cityArr, ...districtArr];\n  let findedDistrict;\n  if (value) {\n    findedDistrict = allDistrict.find(district => district.id === value);\n  } else {\n    findedDistrict = null;\n  }\n  emit('update:modelValue', value);\n  emit('change', findedDistrict || null);\n};\nconst getNodeData = (sourceData: DistrictData[][]): Node[] => {\n  const res: Node[] = [];\n  const [provinceArr, cityArr, districtArr] = sourceData;\n  provinceArr.forEach((item) => {\n    const currentProvince = formatData(item);\n    const filterCurrentCity = cityArr.filter(city => item.id.slice(0, 2) === city.id.slice(0, 2));\n\n    const currentCityList = filterCurrentCity.map((city) => {\n      const filterDistrictList = districtArr.filter(district => district.id.slice(0, 4) === city.id.slice(0, 4));\n      const currentDistrict = filterDistrictList.map(district => formatData(district));\n      const formatCity = formatData(city);\n      formatCity.children = currentDistrict;\n      return formatCity;\n    });\n    currentProvince.children = currentCityList;\n    res.push(currentProvince);\n  });\n  return res;\n};\n\nconst formatData = (item: DistrictData) => {\n  if (!item) return {};\n  return {\n    label: item[props.nameType],\n    value: item.id,\n    children: [],\n    id: item.id,\n  };\n};\n</script>\n\n<style lang=\"less\">\n.tlbs-cityselect-container {\n  width: 228px;\n}\n</style>\n"],"names":["__default__","defineComponent","name","_defineComponent","_objectSpread","props","modelValue","type","String","required","default","nameType","emits","setup","__props","emit","selectValue","ref","options","webServiceDistrictResult","key","provinceRequestUrl","watch","newVal","onChange","onMounted","jsonp","then","response","json","data","status","result","value","getNodeData","console","error","findedDistrict","sourceData","res","provinceArr","cityArr","districtArr","forEach","item","currentProvince","formatData","filterCurrentCity","filter","city","id","slice","currentCityList","map","filterDistrictList","district","currentDistrict","formatCity","children","push","label","_ctx","_cache","_component_t_cascader","_resolveComponent","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_mergeProps","$event","$attrs"],"mappings":"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"}