Commit 8cd1f1ecc5d1098dc08acc3b2c65fbf7ded0f507

Authored by loveumiko
1 parent ba9e653b

fix: 修复3D地图选择其他省份在选回中国 点击地图会报错 并且之前选择的省份会保留数据

... ... @@ -49,11 +49,18 @@ onMounted(async () => {
49 49 })
50 50
51 51
52   -const disabledCity = ref<boolean>(false)//直辖市禁用
  52 +const disabledCity = ref<boolean>(false)//直辖市禁用下面省份选择
53 53 const onHandleSelectProvince = async (value: number | string, options: Recordable) => {
54 54 selectValues.cityValue = null
55 55 selectValues.countyValue = null
56   - if (value === 'china') return (selectValues.levelStr = areaEnum.COUNTRY)
  56 + if (value === 'china') {
  57 + disabledCity.value = false
  58 + selectValues.provinceValue = 'china'
  59 + selectOptions.cityOptions = []
  60 + selectValues.areaName = ''
  61 + selectValues.levelStr= areaEnum.COUNTRY
  62 + return
  63 + }
57 64 const cityOptions = await getAreaLists(areaEnum.CITY, value as number)
58 65 selectOptions.cityOptions = cityOptions
59 66 selectValues.levelStr = areaEnum.PROVINCE
... ...
... ... @@ -205,7 +205,7 @@ const SelectCityRef = ref<InstanceType<typeof SelectCity>>()
205 205 const getAreaLists = async (level = areaEnum.PROVINCE, parentId = 1) => {
206 206 const resp = await getAreaList({
207 207 level,
208   - parentId
  208 + parentId:(parentId as any)=='china'?1:parentId
209 209 })
210 210 if (!resp) return []
211 211 return resp.map((item: Recordable) => ({ label: item.name, value: item.name, adcode: item.code }))
... ... @@ -267,12 +267,12 @@ const onHandleSelectValues = async (values: regionInfo) => {
267 267 ? 'china'
268 268 : provinceValue
269 269 props.optionData.mapRegion = mapRegionCache.value
270   - if (mapRegionCache.value.adcode !== 'china') {
  270 + // if (mapRegionCache.value.adcode !== 'china') {
271 271 //清空区块配置和柱状配置
272 272 props.optionData.dataset.map3D = [cloneDeep(STATIC_SCATTER_CONFIG)]
273 273 props.optionData.dataset.bar3D = [cloneDeep(STATIC_SCATTER_CONFIG)]
274 274 setDatasetArea()
275   - }
  275 + // }
276 276 }
277 277
278 278
... ... @@ -296,10 +296,14 @@ const setDatasetArea = async () => {
296 296 const { adcode, areaName,saveSelect } = unref(mapRegionCache) || {}
297 297 const {levelStr} = saveSelect || {}
298 298 const cityOptions = await getAreaLists(levelStr===areaEnum.CITY?areaEnum.COUNTY:areaEnum.CITY, adcode)
  299 + let provinceOptions:any = []
  300 + if(adcode==='china'){
  301 + provinceOptions = await getAreaLists()
  302 + }
299 303 mdutcgValues.value = cityOptions
300 304 if(adcode==110000 || adcode==120000 || adcode==500000 || adcode==310000 || adcode==810000 || adcode==820000){//直辖市
301 305 const values = await allFetch(cityOptions) || []
302   - mdutcgValues.value = values.flatMap((obj:any) => Object.values(obj))
  306 + mdutcgValues.value = values.flatMap((obj:any) => Object.values(obj))//讲获取到的多维转换成单一纬度
303 307 }
304 308 // 循环 push 城市数据
305 309 datasetMap3DList.value.forEach((item: any) => {
... ... @@ -307,10 +311,10 @@ const setDatasetArea = async () => {
307 311 item.city_name = null
308 312 item.adcode = null,
309 313 item.value = null
  314 + item.provinceOptions=provinceOptions
310 315 item.cityOptions = unref(mdutcgValues) && unref(mdutcgValues).length ? unref(mdutcgValues) : [{ adcode, label: areaName, value: areaName }]
311 316 })
312 317 }
313   -
314 318 const handleChangeDrillingIn = () => {
315 319 SelectCityRef.value?.resetValue()
316 320 props.optionData.mapRegion.adcode = 'china'
... ...