From db576fb680d48a7552b94cc84745461efe9831cd Mon Sep 17 00:00:00 2001 From: DU Date: Thu, 15 Jan 2026 22:04:56 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9C=81=E4=BB=BD=E7=BA=A7=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pageStore/mapStore/index.scss | 49 +++ src/pageStore/mapStore/index.tsx | 255 +++++++++++--- src/utils/cityData.ts | 565 ++++++++++++++++++++++++++++++ 3 files changed, 820 insertions(+), 49 deletions(-) create mode 100644 src/utils/cityData.ts diff --git a/src/pageStore/mapStore/index.scss b/src/pageStore/mapStore/index.scss index b2fb8d0..999b38f 100644 --- a/src/pageStore/mapStore/index.scss +++ b/src/pageStore/mapStore/index.scss @@ -218,4 +218,53 @@ } } } + + // 城市选择弹窗 + .city-picker { + padding: 0; + + .picker-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 30px; + border-bottom: 1px solid #EEEEEE; + + .picker-cancel, + .picker-confirm { + font-size: 28px; + color: #666666; + } + + .picker-title { + font-size: 32px; + font-weight: 500; + color: #333333; + } + } + + .city-tabs { + height: 600px; + + .city-scroll-view { + height: 540px; + } + + .city-item { + padding: 30px; + font-size: 28px; + color: #333333; + border-bottom: 1px solid #F5F5F5; + + &.active { + color: #FF9900; + background: #FFF7E6; + } + + .city-item-text { + display: block; + } + } + } + } } diff --git a/src/pageStore/mapStore/index.tsx b/src/pageStore/mapStore/index.tsx index 92ae062..22e5311 100644 --- a/src/pageStore/mapStore/index.tsx +++ b/src/pageStore/mapStore/index.tsx @@ -5,7 +5,10 @@ import { View, Text, Map, ScrollView, Image, Input } from '@tarojs/components' import Taro, { useLoad } from '@tarojs/taro' import { observer } from 'mobx-react' import { useState, useRef, useEffect } from 'react' +import { Popup, Tabs, Toast } from '@taroify/core' +import { useCascader } from '@taroify/hooks' import { Search, Arrow, Location } from '@taroify/icons' +import { chinaCityData } from '../../utils/cityData' import './index.scss' // 模拟门店数据(带经纬度) @@ -122,9 +125,19 @@ const MapStorePage = observer(() => { const [activeStoreId, setActiveStoreId] = useState(null) const [searchValue, setSearchValue] = useState('') const [selectedCity, setSelectedCity] = useState('选城市') + const [cityPopupOpen, setCityPopupOpen] = useState(false) + const [cityValue, setCityValue] = useState([]) + const [tabIndex, setTabIndex] = useState(0) const mapContext = useRef(null) + // 使用 useCascader hook + const { columns } = useCascader({ + value: cityValue, + depth: 2, + options: chinaCityData, + }) + useLoad(() => { // 页面加载时获取用户位置 requestLocationPermission() @@ -302,23 +315,16 @@ const MapStorePage = observer(() => { } } - // 点击列表项 + // 点击列表项 - 打开导航 const handleStoreItemClick = (store: Store) => { - setActiveStoreId(store.id) - - // 移动地图到对应位置 - setMapCenter({ + // 打开微信地图导航 + Taro.openLocation({ latitude: store.latitude, - longitude: store.longitude + longitude: store.longitude, + name: store.name, + address: store.address, + scale: 18 }) - - // 使用 moveToLocation 移动地图(需要 mapContext) - if (mapContext.current) { - mapContext.current.moveToLocation({ - latitude: store.latitude, - longitude: store.longitude - }) - } } // 重新定位 @@ -326,48 +332,154 @@ const MapStorePage = observer(() => { requestLocationPermission() } - // 导航到门店 - const handleNavigate = (store: Store, e: any) => { - e.stopPropagation() - - Taro.openLocation({ - latitude: store.latitude, - longitude: store.longitude, - name: store.name, - address: store.address, - scale: 18 - }) + // 打开城市选择 + const handleOpenCityPicker = () => { + setCityPopupOpen(true) + } + + // 关闭城市选择 + const handleCloseCityPicker = () => { + setCityPopupOpen(false) + setTabIndex(0) + } + + // 选择城市选项 + const handleSelectOption = (option: any, columnIndex: number) => { + const newValue = [...cityValue] + newValue[columnIndex] = option.value + // 清除后面的选中值 + newValue.splice(columnIndex + 1) + setCityValue(newValue) + + // 如果选择了最后一级(城市),关闭弹窗并调用接口 + if (columnIndex === 1 || !option.children || option.children.length === 0) { + setSelectedCity(option.label) + setCityPopupOpen(false) + setTabIndex(0) + + // 调用后端接口获取该城市的门店数据 + fetchStoresByCity(option.label, option.value) + } else { + // 切换到下一个 tab + setTabIndex(columnIndex + 1) + } + } + + // 根据城市获取门店数据 + const fetchStoresByCity = async (cityLabel: string, cityValue: string) => { + try { + Toast.loading({ + message: '加载中...', + duration: 0, + }) + + // TODO: 替换为真实接口 + const res = await Taro.request({ + url: 'https://your-api.com/api/stores/city', + method: 'GET', + data: { + city: cityValue, + latitude: userLocation.latitude, + longitude: userLocation.longitude, + } + }) + + // 暂时使用模拟数据 + // if (res.statusCode === 200 && res.data.code === 200) { + // const stores = res.data.data.list + // setStoreList(stores) + // generateMarkers(stores) + // if (stores.length > 0) { + // setMapCenter({ latitude: stores[0].latitude, longitude: stores[0].longitude }) + // } + // } + + // 模拟网络延迟 + await new Promise(resolve => setTimeout(resolve, 500)) + + // 使用模拟数据 + setStoreList(mockStoreData) + generateMarkers(mockStoreData) + + Toast.close() + Toast.success(`已切换到${cityLabel}`) + } catch (error) { + Toast.close() + console.error('获取城市门店失败:', error) + Toast.open({ + message: '获取门店数据失败', + icon: 'fail' + }) + } } // 搜索门店 - const handleSearch = () => { + const handleSearch = async () => { if (!searchValue.trim()) { - Taro.showToast({ - title: '请输入门店名称或地址', - icon: 'none' - }) + Toast.open('请输入门店名称或地址') return } - // TODO: 调用搜索接口 - const filtered = mockStoreData.filter( - store => - store.name.includes(searchValue) || store.address.includes(searchValue) - ) - - if (filtered.length > 0) { - setStoreList(filtered) - generateMarkers(filtered) - - // 移动到第一个搜索结果 - setMapCenter({ - latitude: filtered[0].latitude, - longitude: filtered[0].longitude + try { + Toast.loading({ + message: '搜索中...', + duration: 0, }) - } else { - Taro.showToast({ - title: '未找到相关门店', - icon: 'none' + + // TODO: 替换为真实搜索接口 + const res = await Taro.request({ + url: 'https://your-api.com/api/stores/search', + method: 'GET', + data: { + keyword: searchValue, + city: cityValue[1] || '', + latitude: userLocation.latitude, + longitude: userLocation.longitude, + } + }) + + // 暂时使用模拟数据 + // if (res.statusCode === 200 && res.data.code === 200) { + // const stores = res.data.data.list + // setStoreList(stores) + // generateMarkers(stores) + // if (stores.length > 0) { + // setMapCenter({ latitude: stores[0].latitude, longitude: stores[0].longitude }) + // } + // Toast.close() + // } + + // 模拟网络延迟 + await new Promise(resolve => setTimeout(resolve, 500)) + + // 模拟搜索 + const filtered = mockStoreData.filter( + store => + store.name.includes(searchValue) || store.address.includes(searchValue) + ) + + Toast.close() + + if (filtered.length > 0) { + setStoreList(filtered) + generateMarkers(filtered) + + // 移动到第一个搜索结果 + setMapCenter({ + latitude: filtered[0].latitude, + longitude: filtered[0].longitude + }) + + Toast.success(`找到 ${filtered.length} 家门店`) + } else { + Toast.open('未找到相关门店') + } + } catch (error) { + Toast.close() + console.error('搜索门店失败:', error) + Toast.open({ + message: '搜索失败', + icon: 'fail' }) } } @@ -401,7 +513,7 @@ const MapStorePage = observer(() => { {/* 城市选择 */} - + {selectedCity} @@ -471,6 +583,51 @@ const MapStorePage = observer(() => { )} + + {/* 城市选择弹窗 - 使用 useCascader */} + + + {/* 头部 */} + + 取消 + 城市选择 + 确定 + + + {/* Tabs 切换 */} + + {columns.map((column, columnIndex) => ( + opt.value === cityValue[columnIndex])?.label || '请选择' + : '请选择' + } + > + + {column.map((option) => ( + handleSelectOption(option, columnIndex)} + > + {option.label} + + ))} + + + ))} + + + + + {/* Toast 组件 */} + ) }) diff --git a/src/utils/cityData.ts b/src/utils/cityData.ts new file mode 100644 index 0000000..d9e8c23 --- /dev/null +++ b/src/utils/cityData.ts @@ -0,0 +1,565 @@ +/** + * 中国城市级联数据 + * 格式:省份 -> 城市 + */ + +export interface CityOption { + label: string + value: string + children?: CityOption[] +} + +export const chinaCityData: CityOption[] = [ + { + label: '北京市', + value: 'beijing', + children: [ + { label: '北京市', value: 'beijing_city' } + ] + }, + { + label: '天津市', + value: 'tianjin', + children: [ + { label: '天津市', value: 'tianjin_city' } + ] + }, + { + label: '河北省', + value: 'hebei', + children: [ + { label: '石家庄市', value: 'shijiazhuang' }, + { label: '唐山市', value: 'tangshan' }, + { label: '秦皇岛市', value: 'qinhuangdao' }, + { label: '邯郸市', value: 'handan' }, + { label: '邢台市', value: 'xingtai' }, + { label: '保定市', value: 'baoding' }, + { label: '张家口市', value: 'zhangjiakou' }, + { label: '承德市', value: 'chengde' }, + { label: '沧州市', value: 'cangzhou' }, + { label: '廊坊市', value: 'langfang' }, + { label: '衡水市', value: 'hengshui' } + ] + }, + { + label: '山西省', + value: 'shanxi', + children: [ + { label: '太原市', value: 'taiyuan' }, + { label: '大同市', value: 'datong' }, + { label: '阳泉市', value: 'yangquan' }, + { label: '长治市', value: 'changzhi' }, + { label: '晋城市', value: 'jincheng' }, + { label: '朔州市', value: 'shuozhou' }, + { label: '晋中市', value: 'jinzhong' }, + { label: '运城市', value: 'yuncheng' }, + { label: '忻州市', value: 'xinzhou' }, + { label: '临汾市', value: 'linfen' }, + { label: '吕梁市', value: 'lvliang' } + ] + }, + { + label: '内蒙古自治区', + value: 'neimenggu', + children: [ + { label: '呼和浩特市', value: 'huhehaote' }, + { label: '包头市', value: 'baotou' }, + { label: '乌海市', value: 'wuhai' }, + { label: '赤峰市', value: 'chifeng' }, + { label: '通辽市', value: 'tongliao' }, + { label: '鄂尔多斯市', value: 'eerduosi' }, + { label: '呼伦贝尔市', value: 'hulunbeier' }, + { label: '巴彦淖尔市', value: 'bayannaoer' }, + { label: '乌兰察布市', value: 'wulanchabu' }, + { label: '兴安盟', value: 'xingan' }, + { label: '锡林郭勒盟', value: 'xilingol' }, + { label: '阿拉善盟', value: 'alashan' } + ] + }, + { + label: '辽宁省', + value: 'liaoning', + children: [ + { label: '沈阳市', value: 'shenyang' }, + { label: '大连市', value: 'dalian' }, + { label: '鞍山市', value: 'anshan' }, + { label: '抚顺市', value: 'fushun' }, + { label: '本溪市', value: 'benxi' }, + { label: '丹东市', value: 'dandong' }, + { label: '锦州市', value: 'jinzhou' }, + { label: '营口市', value: 'yingkou' }, + { label: '阜新市', value: 'fuxin' }, + { label: '辽阳市', value: 'liaoyang' }, + { label: '盘锦市', value: 'panjin' }, + { label: '铁岭市', value: 'tieling' }, + { label: '朝阳市', value: 'chaoyang' }, + { label: '葫芦岛市', value: 'huludao' } + ] + }, + { + label: '吉林省', + value: 'jilin', + children: [ + { label: '长春市', value: 'changchun' }, + { label: '吉林市', value: 'jilin_city' }, + { label: '四平市', value: 'siping' }, + { label: '辽源市', value: 'liaoyuan' }, + { label: '通化市', value: 'tonghua' }, + { label: '白山市', value: 'baishan' }, + { label: '松原市', value: 'songyuan' }, + { label: '白城市', value: 'baicheng' }, + { label: '延边朝鲜族自治州', value: 'yanbian' } + ] + }, + { + label: '黑龙江省', + value: 'heilongjiang', + children: [ + { label: '哈尔滨市', value: 'haerbin' }, + { label: '齐齐哈尔市', value: 'qiqihaer' }, + { label: '鸡西市', value: 'jixi' }, + { label: '鹤岗市', value: 'hegang' }, + { label: '双鸭山市', value: 'shuangyashan' }, + { label: '大庆市', value: 'daqing' }, + { label: '伊春市', value: 'yichun_hlj' }, + { label: '佳木斯市', value: 'jiamusi' }, + { label: '七台河市', value: 'qitaihe' }, + { label: '牡丹江市', value: 'mudanjiang' }, + { label: '黑河市', value: 'heihe' }, + { label: '绥化市', value: 'suihua' }, + { label: '大兴安岭地区', value: 'daxinganling' } + ] + }, + { + label: '上海市', + value: 'shanghai', + children: [ + { label: '上海市', value: 'shanghai_city' } + ] + }, + { + label: '江苏省', + value: 'jiangsu', + children: [ + { label: '南京市', value: 'nanjing' }, + { label: '无锡市', value: 'wuxi' }, + { label: '徐州市', value: 'xuzhou' }, + { label: '常州市', value: 'changzhou' }, + { label: '苏州市', value: 'suzhou' }, + { label: '南通市', value: 'nantong' }, + { label: '连云港市', value: 'lianyungang' }, + { label: '淮安市', value: 'huaian' }, + { label: '盐城市', value: 'yancheng' }, + { label: '扬州市', value: 'yangzhou' }, + { label: '镇江市', value: 'zhenjiang' }, + { label: '泰州市', value: 'taizhou_js' }, + { label: '宿迁市', value: 'suqian' } + ] + }, + { + label: '浙江省', + value: 'zhejiang', + children: [ + { label: '杭州市', value: 'hangzhou' }, + { label: '宁波市', value: 'ningbo' }, + { label: '温州市', value: 'wenzhou' }, + { label: '嘉兴市', value: 'jiaxing' }, + { label: '湖州市', value: 'huzhou' }, + { label: '绍兴市', value: 'shaoxing' }, + { label: '金华市', value: 'jinhua' }, + { label: '衢州市', value: 'quzhou' }, + { label: '舟山市', value: 'zhoushan' }, + { label: '台州市', value: 'taizhou_zj' }, + { label: '丽水市', value: 'lishui' } + ] + }, + { + label: '安徽省', + value: 'anhui', + children: [ + { label: '合肥市', value: 'hefei' }, + { label: '芜湖市', value: 'wuhu' }, + { label: '蚌埠市', value: 'bengbu' }, + { label: '淮南市', value: 'huainan' }, + { label: '马鞍山市', value: 'maanshan' }, + { label: '淮北市', value: 'huaibei' }, + { label: '铜陵市', value: 'tongling' }, + { label: '安庆市', value: 'anqing' }, + { label: '黄山市', value: 'huangshan' }, + { label: '滁州市', value: 'chuzhou' }, + { label: '阜阳市', value: 'fuyang' }, + { label: '宿州市', value: 'suzhou_ah' }, + { label: '六安市', value: 'luan' }, + { label: '亳州市', value: 'bozhou' }, + { label: '池州市', value: 'chizhou' }, + { label: '宣城市', value: 'xuancheng' } + ] + }, + { + label: '福建省', + value: 'fujian', + children: [ + { label: '福州市', value: 'fuzhou' }, + { label: '厦门市', value: 'xiamen' }, + { label: '莆田市', value: 'putian' }, + { label: '三明市', value: 'sanming' }, + { label: '泉州市', value: 'quanzhou' }, + { label: '漳州市', value: 'zhangzhou' }, + { label: '南平市', value: 'nanping' }, + { label: '龙岩市', value: 'longyan' }, + { label: '宁德市', value: 'ningde' } + ] + }, + { + label: '江西省', + value: 'jiangxi', + children: [ + { label: '南昌市', value: 'nanchang' }, + { label: '景德镇市', value: 'jingdezhen' }, + { label: '萍乡市', value: 'pingxiang' }, + { label: '九江市', value: 'jiujiang' }, + { label: '新余市', value: 'xinyu' }, + { label: '鹰潭市', value: 'yingtan' }, + { label: '赣州市', value: 'ganzhou' }, + { label: '吉安市', value: 'jian' }, + { label: '宜春市', value: 'yichun_jx' }, + { label: '抚州市', value: 'fuzhou_jx' }, + { label: '上饶市', value: 'shangrao' } + ] + }, + { + label: '山东省', + value: 'shandong', + children: [ + { label: '济南市', value: 'jinan' }, + { label: '青岛市', value: 'qingdao' }, + { label: '淄博市', value: 'zibo' }, + { label: '枣庄市', value: 'zaozhuang' }, + { label: '东营市', value: 'dongying' }, + { label: '烟台市', value: 'yantai' }, + { label: '潍坊市', value: 'weifang' }, + { label: '济宁市', value: 'jining' }, + { label: '泰安市', value: 'taian' }, + { label: '威海市', value: 'weihai' }, + { label: '日照市', value: 'rizhao' }, + { label: '临沂市', value: 'linyi' }, + { label: '德州市', value: 'dezhou' }, + { label: '聊城市', value: 'liaocheng' }, + { label: '滨州市', value: 'binzhou' }, + { label: '菏泽市', value: 'heze' } + ] + }, + { + label: '河南省', + value: 'henan', + children: [ + { label: '郑州市', value: 'zhengzhou' }, + { label: '开封市', value: 'kaifeng' }, + { label: '洛阳市', value: 'luoyang' }, + { label: '平顶山市', value: 'pingdingshan' }, + { label: '安阳市', value: 'anyang' }, + { label: '鹤壁市', value: 'hebi' }, + { label: '新乡市', value: 'xinxiang' }, + { label: '焦作市', value: 'jiaozuo' }, + { label: '濮阳市', value: 'puyang' }, + { label: '许昌市', value: 'xuchang' }, + { label: '漯河市', value: 'luohe' }, + { label: '三门峡市', value: 'sanmenxia' }, + { label: '南阳市', value: 'nanyang' }, + { label: '商丘市', value: 'shangqiu' }, + { label: '信阳市', value: 'xinyang' }, + { label: '周口市', value: 'zhoukou' }, + { label: '驻马店市', value: 'zhumadian' } + ] + }, + { + label: '湖北省', + value: 'hubei', + children: [ + { label: '武汉市', value: 'wuhan' }, + { label: '黄石市', value: 'huangshi' }, + { label: '十堰市', value: 'shiyan' }, + { label: '宜昌市', value: 'yichang' }, + { label: '襄阳市', value: 'xiangyang' }, + { label: '鄂州市', value: 'ezhou' }, + { label: '荆门市', value: 'jingmen' }, + { label: '孝感市', value: 'xiaogan' }, + { label: '荆州市', value: 'jingzhou' }, + { label: '黄冈市', value: 'huanggang' }, + { label: '咸宁市', value: 'xianning' }, + { label: '随州市', value: 'suizhou' }, + { label: '恩施土家族苗族自治州', value: 'enshi' } + ] + }, + { + label: '湖南省', + value: 'hunan', + children: [ + { label: '长沙市', value: 'changsha' }, + { label: '株洲市', value: 'zhuzhou' }, + { label: '湘潭市', value: 'xiangtan' }, + { label: '衡阳市', value: 'hengyang' }, + { label: '邵阳市', value: 'shaoyang' }, + { label: '岳阳市', value: 'yueyang' }, + { label: '常德市', value: 'changde' }, + { label: '张家界市', value: 'zhangjiajie' }, + { label: '益阳市', value: 'yiyang' }, + { label: '郴州市', value: 'chenzhou' }, + { label: '永州市', value: 'yongzhou' }, + { label: '怀化市', value: 'huaihua' }, + { label: '娄底市', value: 'loudi' }, + { label: '湘西土家族苗族自治州', value: 'xiangxi' } + ] + }, + { + label: '广东省', + value: 'guangdong', + children: [ + { label: '广州市', value: 'guangzhou' }, + { label: '韶关市', value: 'shaoguan' }, + { label: '深圳市', value: 'shenzhen' }, + { label: '珠海市', value: 'zhuhai' }, + { label: '汕头市', value: 'shantou' }, + { label: '佛山市', value: 'foshan' }, + { label: '江门市', value: 'jiangmen' }, + { label: '湛江市', value: 'zhanjiang' }, + { label: '茂名市', value: 'maoming' }, + { label: '肇庆市', value: 'zhaoqing' }, + { label: '惠州市', value: 'huizhou' }, + { label: '梅州市', value: 'meizhou' }, + { label: '汕尾市', value: 'shanwei' }, + { label: '河源市', value: 'heyuan' }, + { label: '阳江市', value: 'yangjiang' }, + { label: '清远市', value: 'qingyuan' }, + { label: '东莞市', value: 'dongguan' }, + { label: '中山市', value: 'zhongshan' }, + { label: '潮州市', value: 'chaozhou' }, + { label: '揭阳市', value: 'jieyang' }, + { label: '云浮市', value: 'yunfu' } + ] + }, + { + label: '广西壮族自治区', + value: 'guangxi', + children: [ + { label: '南宁市', value: 'nanning' }, + { label: '柳州市', value: 'liuzhou' }, + { label: '桂林市', value: 'guilin' }, + { label: '梧州市', value: 'wuzhou' }, + { label: '北海市', value: 'beihai' }, + { label: '防城港市', value: 'fangchenggang' }, + { label: '钦州市', value: 'qinzhou' }, + { label: '贵港市', value: 'guigang' }, + { label: '玉林市', value: 'yulin_gx' }, + { label: '百色市', value: 'baise' }, + { label: '贺州市', value: 'hezhou' }, + { label: '河池市', value: 'hechi' }, + { label: '来宾市', value: 'laibin' }, + { label: '崇左市', value: 'chongzuo' } + ] + }, + { + label: '海南省', + value: 'hainan', + children: [ + { label: '海口市', value: 'haikou' }, + { label: '三亚市', value: 'sanya' }, + { label: '三沙市', value: 'sansha' }, + { label: '儋州市', value: 'danzhou' } + ] + }, + { + label: '重庆市', + value: 'chongqing', + children: [ + { label: '重庆市', value: 'chongqing_city' } + ] + }, + { + label: '四川省', + value: 'sichuan', + children: [ + { label: '成都市', value: 'chengdu' }, + { label: '自贡市', value: 'zigong' }, + { label: '攀枝花市', value: 'panzhihua' }, + { label: '泸州市', value: 'luzhou' }, + { label: '德阳市', value: 'deyang' }, + { label: '绵阳市', value: 'mianyang' }, + { label: '广元市', value: 'guangyuan' }, + { label: '遂宁市', value: 'suining' }, + { label: '内江市', value: 'neijiang' }, + { label: '乐山市', value: 'leshan' }, + { label: '南充市', value: 'nanchong' }, + { label: '眉山市', value: 'meishan' }, + { label: '宜宾市', value: 'yibin' }, + { label: '广安市', value: 'guangan' }, + { label: '达州市', value: 'dazhou' }, + { label: '雅安市', value: 'yaan' }, + { label: '巴中市', value: 'bazhong' }, + { label: '资阳市', value: 'ziyang' }, + { label: '阿坝藏族羌族自治州', value: 'aba' }, + { label: '甘孜藏族自治州', value: 'ganzi' }, + { label: '凉山彝族自治州', value: 'liangshan' } + ] + }, + { + label: '贵州省', + value: 'guizhou', + children: [ + { label: '贵阳市', value: 'guiyang' }, + { label: '六盘水市', value: 'liupanshui' }, + { label: '遵义市', value: 'zunyi' }, + { label: '安顺市', value: 'anshun' }, + { label: '毕节市', value: 'bijie' }, + { label: '铜仁市', value: 'tongren' }, + { label: '黔西南布依族苗族自治州', value: 'qianxinan' }, + { label: '黔东南苗族侗族自治州', value: 'qiandongnan' }, + { label: '黔南布依族苗族自治州', value: 'qiannan' } + ] + }, + { + label: '云南省', + value: 'yunnan', + children: [ + { label: '昆明市', value: 'kunming' }, + { label: '曲靖市', value: 'qujing' }, + { label: '玉溪市', value: 'yuxi' }, + { label: '保山市', value: 'baoshan' }, + { label: '昭通市', value: 'zhaotong' }, + { label: '丽江市', value: 'lijiang' }, + { label: '普洱市', value: 'puer' }, + { label: '临沧市', value: 'lincang' }, + { label: '楚雄彝族自治州', value: 'chuxiong' }, + { label: '红河哈尼族彝族自治州', value: 'honghe' }, + { label: '文山壮族苗族自治州', value: 'wenshan' }, + { label: '西双版纳傣族自治州', value: 'xishuangbanna' }, + { label: '大理白族自治州', value: 'dali' }, + { label: '德宏傣族景颇族自治州', value: 'dehong' }, + { label: '怒江傈僳族自治州', value: 'nujiang' }, + { label: '迪庆藏族自治州', value: 'diqing' } + ] + }, + { + label: '西藏自治区', + value: 'xizang', + children: [ + { label: '拉萨市', value: 'lasa' }, + { label: '日喀则市', value: 'rikaze' }, + { label: '昌都市', value: 'changdu' }, + { label: '林芝市', value: 'linzhi' }, + { label: '山南市', value: 'shannan' }, + { label: '那曲市', value: 'naqu' }, + { label: '阿里地区', value: 'ali' } + ] + }, + { + label: '陕西省', + value: 'shaanxi', + children: [ + { label: '西安市', value: 'xian' }, + { label: '铜川市', value: 'tongchuan' }, + { label: '宝鸡市', value: 'baoji' }, + { label: '咸阳市', value: 'xianyang' }, + { label: '渭南市', value: 'weinan' }, + { label: '延安市', value: 'yanan' }, + { label: '汉中市', value: 'hanzhong' }, + { label: '榆林市', value: 'yulin_sx' }, + { label: '安康市', value: 'ankang' }, + { label: '商洛市', value: 'shangluo' } + ] + }, + { + label: '甘肃省', + value: 'gansu', + children: [ + { label: '兰州市', value: 'lanzhou' }, + { label: '嘉峪关市', value: 'jiayuguan' }, + { label: '金昌市', value: 'jinchang' }, + { label: '白银市', value: 'baiyin' }, + { label: '天水市', value: 'tianshui' }, + { label: '武威市', value: 'wuwei' }, + { label: '张掖市', value: 'zhangye' }, + { label: '平凉市', value: 'pingliang' }, + { label: '酒泉市', value: 'jiuquan' }, + { label: '庆阳市', value: 'qingyang' }, + { label: '定西市', value: 'dingxi' }, + { label: '陇南市', value: 'longnan' }, + { label: '临夏回族自治州', value: 'linxia' }, + { label: '甘南藏族自治州', value: 'gannan' } + ] + }, + { + label: '青海省', + value: 'qinghai', + children: [ + { label: '西宁市', value: 'xining' }, + { label: '海东市', value: 'haidong' }, + { label: '海北藏族自治州', value: 'haibei' }, + { label: '黄南藏族自治州', value: 'huangnan' }, + { label: '海南藏族自治州', value: 'hainan_qh' }, + { label: '果洛藏族自治州', value: 'guoluo' }, + { label: '玉树藏族自治州', value: 'yushu' }, + { label: '海西蒙古族藏族自治州', value: 'haixi' } + ] + }, + { + label: '宁夏回族自治区', + value: 'ningxia', + children: [ + { label: '银川市', value: 'yinchuan' }, + { label: '石嘴山市', value: 'shizuishan' }, + { label: '吴忠市', value: 'wuzhong' }, + { label: '固原市', value: 'guyuan' }, + { label: '中卫市', value: 'zhongwei' } + ] + }, + { + label: '新疆维吾尔自治区', + value: 'xinjiang', + children: [ + { label: '乌鲁木齐市', value: 'wulumuqi' }, + { label: '克拉玛依市', value: 'kelamayi' }, + { label: '吐鲁番市', value: 'tulufan' }, + { label: '哈密市', value: 'hami' }, + { label: '昌吉回族自治州', value: 'changji' }, + { label: '博尔塔拉蒙古自治州', value: 'boertala' }, + { label: '巴音郭楞蒙古自治州', value: 'bayinguoleng' }, + { label: '阿克苏地区', value: 'akesu' }, + { label: '克孜勒苏柯尔克孜自治州', value: 'kizilesu' }, + { label: '喀什地区', value: 'kashi' }, + { label: '和田地区', value: 'hetian' }, + { label: '伊犁哈萨克自治州', value: 'yili' }, + { label: '塔城地区', value: 'tacheng' }, + { label: '阿勒泰地区', value: 'aletai' } + ] + }, + { + label: '香港特别行政区', + value: 'hongkong', + children: [ + { label: '香港', value: 'hongkong_city' } + ] + }, + { + label: '澳门特别行政区', + value: 'macao', + children: [ + { label: '澳门', value: 'macao_city' } + ] + }, + { + label: '台湾省', + value: 'taiwan', + children: [ + { label: '台北市', value: 'taibei' }, + { label: '新北市', value: 'xinbei' }, + { label: '桃园市', value: 'taoyuan' }, + { label: '台中市', value: 'taizhong' }, + { label: '台南市', value: 'tainan' }, + { label: '高雄市', value: 'gaoxiong' }, + { label: '基隆市', value: 'jilong' }, + { label: '新竹市', value: 'xinzhu' }, + { label: '嘉义市', value: 'jiayi' } + ] + } +]