├── static
└── .gitkeep
├── .eslintignore
├── config
├── prod.env.js
├── dev.env.js
└── index.js
├── .babelrc
├── .editorconfig
├── .gitignore
├── .postcssrc.js
├── index.html
├── src
├── main.js
├── utils
│ ├── area-producer.js
│ └── area-source.json
├── components
│ └── area
│ │ ├── area-producer.js
│ │ ├── area.vue
│ │ └── area-source.json
└── App.vue
├── README.md
├── .eslintrc.js
└── package.json
/static/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | /build/
2 | /config/
3 | /dist/
4 | /*.js
5 |
--------------------------------------------------------------------------------
/config/prod.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | module.exports = {
3 | NODE_ENV: '"production"'
4 | }
5 |
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", {
4 | "modules": false
5 | }],
6 | "stage-2"
7 | ],
8 | "plugins": ["transform-runtime"]
9 | }
10 |
--------------------------------------------------------------------------------
/config/dev.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const merge = require('webpack-merge')
3 | const prodEnv = require('./prod.env')
4 |
5 | module.exports = merge(prodEnv, {
6 | NODE_ENV: '"development"'
7 | })
8 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | /dist/
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Editor directories and files
9 | .idea
10 | .vscode
11 | *.suo
12 | *.ntvs*
13 | *.njsproj
14 | *.sln
15 |
--------------------------------------------------------------------------------
/.postcssrc.js:
--------------------------------------------------------------------------------
1 | // https://github.com/michael-ciniawsky/postcss-load-config
2 |
3 | module.exports = {
4 | "plugins": {
5 | // to edit target browsers: use "browserslist" field in package.json
6 | "postcss-import": {},
7 | "autoprefixer": {}
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | area-multi-selection
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | // The Vue build version to load with the `import` command
2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
3 | import Vue from 'vue'
4 | import App from './App'
5 | import iView from 'iview'
6 | import 'iview/dist/styles/iview.css'
7 |
8 | Vue.config.productionTip = false
9 | Vue.use(iView)
10 |
11 | /* eslint-disable no-new */
12 | new Vue({
13 | el: '#app',
14 | render: h => h(App)
15 | })
16 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # area-multi-selection
2 |
3 | > A Vue.js project
4 |
5 | ## Build Setup
6 |
7 | ``` bash
8 | # install dependencies
9 | npm install
10 |
11 | # serve with hot reload at localhost:8080
12 | npm run dev
13 |
14 | # build for production with minification
15 | npm run build
16 |
17 | # build for production and view the bundle analyzer report
18 | npm run build --report
19 | ```
20 |
21 | For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
22 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | // https://eslint.org/docs/user-guide/configuring
2 |
3 | module.exports = {
4 | root: true,
5 | parser: 'babel-eslint',
6 | parserOptions: {
7 | sourceType: 'module'
8 | },
9 | env: {
10 | browser: true,
11 | },
12 | // https://github.com/standard/standard/blob/master/docs/RULES-en.md
13 | extends: 'standard',
14 | // required to lint *.vue files
15 | plugins: [
16 | 'html'
17 | ],
18 | // add your custom rules here
19 | rules: {
20 | // allow async-await
21 | 'generator-star-spacing': 'off',
22 | // allow debugger during development
23 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
24 | 'semi': 0,
25 | 'space-before-function-paren': 0,
26 | 'indent': 0
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/utils/area-producer.js:
--------------------------------------------------------------------------------
1 | import areaData from './area-source.json';
2 |
3 | class AreaProducer {
4 | constructor() {
5 | this.arr = [];
6 | }
7 |
8 | get2LevelArea() {
9 | let parent = areaData['1'];
10 | let parentArr = [];
11 | let pObj = {};
12 | let cObj = {};
13 | let tmpObj = {};
14 | let tmpArr = [];
15 |
16 | for (let i in parent) {
17 | pObj.value = i;
18 | pObj.label = parent[i];
19 | pObj.checkAll = true;
20 |
21 | pObj.children = areaData[i];
22 | tmpObj = areaData[i];
23 |
24 | for (let j in tmpObj) {
25 | cObj.value = j;
26 | cObj.label = tmpObj[j];
27 | cObj.isCheck = true;
28 | tmpArr.push(cObj);
29 | cObj = {};
30 | }
31 |
32 | pObj.children = tmpArr;
33 | pObj.childrenCount = tmpArr.length;
34 | pObj.isCheckChildrenCount = tmpArr.length;
35 |
36 | parentArr.push(pObj);
37 | pObj = {};
38 | cObj = {};
39 | tmpObj = {};
40 | tmpArr = [];
41 | }
42 | return parentArr;
43 | }
44 | }
45 |
46 | export default new AreaProducer()
47 |
--------------------------------------------------------------------------------
/src/components/area/area-producer.js:
--------------------------------------------------------------------------------
1 | import areaData from './area-source.json';
2 |
3 | class AreaProducer {
4 | constructor() {
5 | this.arr = [];
6 | }
7 |
8 | get2LevelArea() {
9 | let parent = areaData['1'];
10 | let parentArr = [];
11 | let pObj = {};
12 | let cObj = {};
13 | let tmpObj = {};
14 | let tmpArr = [];
15 |
16 | for (let i in parent) {
17 | pObj.value = i;
18 | pObj.label = parent[i];
19 | pObj.checkAll = true;
20 |
21 | pObj.children = areaData[i];
22 | tmpObj = areaData[i];
23 |
24 | for (let j in tmpObj) {
25 | cObj.value = j;
26 | cObj.label = tmpObj[j];
27 | cObj.isCheck = true;
28 | tmpArr.push(cObj);
29 | cObj = {};
30 | }
31 |
32 | pObj.children = tmpArr;
33 | pObj.childrenCount = tmpArr.length;
34 | pObj.isCheckChildrenCount = tmpArr.length;
35 |
36 | parentArr.push(pObj);
37 | pObj = {};
38 | cObj = {};
39 | tmpObj = {};
40 | tmpArr = [];
41 | }
42 | return parentArr;
43 | }
44 | }
45 |
46 | export default new AreaProducer()
47 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
10 |
选择结果
11 |
12 |
下标结果:
13 |
{{areaIndexArr}}
14 |
15 |
16 |
名称结果:
17 |
{{areaNameArr}}
18 |
19 |
20 |
21 |
22 |
23 |
45 |
46 |
71 |
72 |
73 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "area-multi-selection",
3 | "version": "1.0.0",
4 | "description": "A Vue.js project",
5 | "author": "chokingwin <2205405321@qq.com>",
6 | "private": true,
7 | "scripts": {
8 | "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
9 | "start": "npm run dev",
10 | "lint": "eslint --ext .js,.vue src",
11 | "build": "node build/build.js"
12 | },
13 | "dependencies": {
14 | "iview": "^2.2.0",
15 | "vue": "^2.5.2"
16 | },
17 | "devDependencies": {
18 | "autoprefixer": "^7.1.2",
19 | "babel-core": "^6.22.1",
20 | "babel-eslint": "^7.1.1",
21 | "babel-loader": "^7.1.1",
22 | "babel-plugin-transform-runtime": "^6.22.0",
23 | "babel-preset-env": "^1.3.2",
24 | "babel-preset-stage-2": "^6.22.0",
25 | "chalk": "^2.0.1",
26 | "copy-webpack-plugin": "^4.0.1",
27 | "css-loader": "^0.28.0",
28 | "eslint": "^3.19.0",
29 | "eslint-config-standard": "^10.2.1",
30 | "eslint-friendly-formatter": "^3.0.0",
31 | "eslint-loader": "^1.7.1",
32 | "eslint-plugin-html": "^3.0.0",
33 | "eslint-plugin-import": "^2.7.0",
34 | "eslint-plugin-node": "^5.2.0",
35 | "eslint-plugin-promise": "^3.4.0",
36 | "eslint-plugin-standard": "^3.0.1",
37 | "eventsource-polyfill": "^0.9.6",
38 | "extract-text-webpack-plugin": "^3.0.0",
39 | "file-loader": "^1.1.4",
40 | "friendly-errors-webpack-plugin": "^1.6.1",
41 | "html-webpack-plugin": "^2.30.1",
42 | "node-notifier": "^5.1.2",
43 | "optimize-css-assets-webpack-plugin": "^3.2.0",
44 | "ora": "^1.2.0",
45 | "portfinder": "^1.0.13",
46 | "postcss-import": "^11.0.0",
47 | "postcss-loader": "^2.0.8",
48 | "rimraf": "^2.6.0",
49 | "semver": "^5.3.0",
50 | "shelljs": "^0.7.6",
51 | "uglifyjs-webpack-plugin": "^1.1.1",
52 | "url-loader": "^0.5.8",
53 | "vue-loader": "^13.3.0",
54 | "vue-style-loader": "^3.0.1",
55 | "vue-template-compiler": "^2.5.2",
56 | "webpack": "^3.6.0",
57 | "webpack-bundle-analyzer": "^2.9.0",
58 | "webpack-dev-server": "^2.9.1",
59 | "webpack-merge": "^4.1.0",
60 | "stylus": "^0.54.5",
61 | "stylus-loader": "^2.1.1"
62 | },
63 | "engines": {
64 | "node": ">= 4.0.0",
65 | "npm": ">= 3.0.0"
66 | },
67 | "browserslist": [
68 | "> 1%",
69 | "last 2 versions",
70 | "not ie <= 8"
71 | ]
72 | }
73 |
--------------------------------------------------------------------------------
/config/index.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | // Template version: 1.2.5
3 | // see http://vuejs-templates.github.io/webpack for documentation.
4 |
5 | const path = require('path')
6 |
7 | module.exports = {
8 | dev: {
9 |
10 | // Paths
11 | assetsSubDirectory: 'static',
12 | assetsPublicPath: '/',
13 | proxyTable: {},
14 |
15 | // Various Dev Server settings
16 | host: 'localhost', // can be overwritten by process.env.HOST
17 | port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
18 | autoOpenBrowser: false,
19 | errorOverlay: true,
20 | notifyOnErrors: true,
21 | poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
22 |
23 | // Use Eslint Loader?
24 | // If true, your code will be linted during bundling and
25 | // linting errors and warnings will be shown in the console.
26 | useEslint: true,
27 | // If true, eslint errors and warnings will also be shown in the error overlay
28 | // in the browser.
29 | showEslintErrorsInOverlay: false,
30 |
31 | /**
32 | * Source Maps
33 | */
34 |
35 | // https://webpack.js.org/configuration/devtool/#development
36 | devtool: 'eval-source-map',
37 |
38 | // If you have problems debugging vue-files in devtools,
39 | // set this to false - it *may* help
40 | // https://vue-loader.vuejs.org/en/options.html#cachebusting
41 | cacheBusting: true,
42 |
43 | // CSS Sourcemaps off by default because relative paths are "buggy"
44 | // with this option, according to the CSS-Loader README
45 | // (https://github.com/webpack/css-loader#sourcemaps)
46 | // In our experience, they generally work as expected,
47 | // just be aware of this issue when enabling this option.
48 | cssSourceMap: false,
49 | },
50 |
51 | build: {
52 | // Template for index.html
53 | index: path.resolve(__dirname, '../dist/index.html'),
54 |
55 | // Paths
56 | assetsRoot: path.resolve(__dirname, '../dist'),
57 | assetsSubDirectory: 'static',
58 | assetsPublicPath: '/',
59 |
60 | /**
61 | * Source Maps
62 | */
63 |
64 | productionSourceMap: true,
65 | // https://webpack.js.org/configuration/devtool/#production
66 | devtool: '#source-map',
67 |
68 | // Gzip off by default as many popular static hosts such as
69 | // Surge or Netlify already gzip all static assets for you.
70 | // Before setting to `true`, make sure to:
71 | // npm install --save-dev compression-webpack-plugin
72 | productionGzip: false,
73 | productionGzipExtensions: ['js', 'css'],
74 |
75 | // Run the build command with an extra argument to
76 | // View the bundle analyzer report after build finishes:
77 | // `npm run build --report`
78 | // Set to `true` or `false` to always turn it on or off
79 | bundleAnalyzerReport: process.env.npm_config_report
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/src/components/area/area.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {{province.label}}
7 |
8 |
9 | {{city.label}}
10 |
11 |
12 |
{{province.isCheckChildrenCount}} / {{province.childrenCount}}
13 |
14 |
15 |
16 |
108 |
138 |
--------------------------------------------------------------------------------
/src/utils/area-source.json:
--------------------------------------------------------------------------------
1 | {
2 | "0": {
3 | "1": "中国"
4 | },
5 | "1": {
6 | "2": "北京",
7 | "3": "安徽",
8 | "4": "福建",
9 | "5": "甘肃",
10 | "6": "广东",
11 | "7": "广西",
12 | "8": "贵州",
13 | "9": "海南",
14 | "10": "河北",
15 | "11": "河南",
16 | "12": "黑龙江",
17 | "13": "湖北",
18 | "14": "湖南",
19 | "15": "吉林",
20 | "16": "江苏",
21 | "17": "江西",
22 | "18": "辽宁",
23 | "19": "内蒙古",
24 | "20": "宁夏",
25 | "21": "青海",
26 | "22": "山东",
27 | "23": "山西",
28 | "24": "陕西",
29 | "25": "上海",
30 | "26": "四川",
31 | "27": "天津",
32 | "28": "西藏",
33 | "29": "新疆",
34 | "30": "云南",
35 | "31": "浙江",
36 | "32": "重庆",
37 | "33": "香港",
38 | "34": "澳门",
39 | "35": "台湾"
40 | },
41 | "2": {
42 | "52": "北京"
43 | },
44 | "3": {
45 | "36": "安庆",
46 | "37": "蚌埠",
47 | "38": "巢湖",
48 | "39": "池州",
49 | "40": "滁州",
50 | "41": "阜阳",
51 | "42": "淮北",
52 | "43": "淮南",
53 | "44": "黄山",
54 | "45": "六安",
55 | "46": "马鞍山",
56 | "47": "宿州",
57 | "48": "铜陵",
58 | "49": "芜湖",
59 | "50": "宣城",
60 | "51": "亳州",
61 | "3401": "合肥"
62 | },
63 | "4": {
64 | "53": "福州",
65 | "54": "龙岩",
66 | "55": "南平",
67 | "56": "宁德",
68 | "57": "莆田",
69 | "58": "泉州",
70 | "59": "三明",
71 | "60": "厦门",
72 | "61": "漳州"
73 | },
74 | "5": {
75 | "62": "兰州",
76 | "63": "白银",
77 | "64": "定西",
78 | "65": "甘南",
79 | "66": "嘉峪关",
80 | "67": "金昌",
81 | "68": "酒泉",
82 | "69": "临夏",
83 | "70": "陇南",
84 | "71": "平凉",
85 | "72": "庆阳",
86 | "73": "天水",
87 | "74": "武威",
88 | "75": "张掖"
89 | },
90 | "6": {
91 | "76": "广州",
92 | "77": "深圳",
93 | "78": "潮州",
94 | "79": "东莞",
95 | "80": "佛山",
96 | "81": "河源",
97 | "82": "惠州",
98 | "83": "江门",
99 | "84": "揭阳",
100 | "85": "茂名",
101 | "86": "梅州",
102 | "87": "清远",
103 | "88": "汕头",
104 | "89": "汕尾",
105 | "90": "韶关",
106 | "91": "阳江",
107 | "92": "云浮",
108 | "93": "湛江",
109 | "94": "肇庆",
110 | "95": "中山",
111 | "96": "珠海"
112 | },
113 | "7": {
114 | "97": "南宁",
115 | "98": "桂林",
116 | "99": "百色",
117 | "100": "北海",
118 | "101": "崇左",
119 | "102": "防城港",
120 | "103": "贵港",
121 | "104": "河池",
122 | "105": "贺州",
123 | "106": "来宾",
124 | "107": "柳州",
125 | "108": "钦州",
126 | "109": "梧州",
127 | "110": "玉林"
128 | },
129 | "8": {
130 | "111": "贵阳",
131 | "112": "安顺",
132 | "113": "毕节",
133 | "114": "六盘水",
134 | "115": "黔东南",
135 | "116": "黔南",
136 | "117": "黔西南",
137 | "118": "铜仁",
138 | "119": "遵义"
139 | },
140 | "9": {
141 | "120": "海口",
142 | "121": "三亚",
143 | "122": "白沙",
144 | "123": "保亭",
145 | "124": "昌江",
146 | "125": "澄迈县",
147 | "126": "定安县",
148 | "127": "东方",
149 | "128": "乐东",
150 | "129": "临高县",
151 | "130": "陵水",
152 | "131": "琼海",
153 | "132": "琼中",
154 | "133": "屯昌县",
155 | "134": "万宁",
156 | "135": "文昌",
157 | "136": "五指山",
158 | "137": "儋州"
159 | },
160 | "10": {
161 | "138": "石家庄",
162 | "139": "保定",
163 | "140": "沧州",
164 | "141": "承德",
165 | "142": "邯郸",
166 | "143": "衡水",
167 | "144": "廊坊",
168 | "145": "秦皇岛",
169 | "146": "唐山",
170 | "147": "邢台",
171 | "148": "张家口"
172 | },
173 | "11": {
174 | "149": "郑州",
175 | "150": "洛阳",
176 | "151": "开封",
177 | "152": "安阳",
178 | "153": "鹤壁",
179 | "154": "济源",
180 | "155": "焦作",
181 | "156": "南阳",
182 | "157": "平顶山",
183 | "158": "三门峡",
184 | "159": "商丘",
185 | "160": "新乡",
186 | "161": "信阳",
187 | "162": "许昌",
188 | "163": "周口",
189 | "164": "驻马店",
190 | "165": "漯河",
191 | "166": "濮阳"
192 | },
193 | "12": {
194 | "167": "哈尔滨",
195 | "168": "大庆",
196 | "169": "大兴安岭",
197 | "170": "鹤岗",
198 | "171": "黑河",
199 | "172": "鸡西",
200 | "173": "佳木斯",
201 | "174": "牡丹江",
202 | "175": "七台河",
203 | "176": "齐齐哈尔",
204 | "177": "双鸭山",
205 | "178": "绥化",
206 | "179": "伊春"
207 | },
208 | "13": {
209 | "180": "武汉",
210 | "181": "仙桃",
211 | "182": "鄂州",
212 | "183": "黄冈",
213 | "184": "黄石",
214 | "185": "荆门",
215 | "186": "荆州",
216 | "187": "潜江",
217 | "188": "神农架林区",
218 | "189": "十堰",
219 | "190": "随州",
220 | "191": "天门",
221 | "192": "咸宁",
222 | "193": "襄樊",
223 | "194": "孝感",
224 | "195": "宜昌",
225 | "196": "恩施"
226 | },
227 | "14": {
228 | "197": "长沙",
229 | "198": "张家界",
230 | "199": "常德",
231 | "200": "郴州",
232 | "201": "衡阳",
233 | "202": "怀化",
234 | "203": "娄底",
235 | "204": "邵阳",
236 | "205": "湘潭",
237 | "206": "湘西",
238 | "207": "益阳",
239 | "208": "永州",
240 | "209": "岳阳",
241 | "210": "株洲"
242 | },
243 | "15": {
244 | "211": "长春",
245 | "212": "吉林",
246 | "213": "白城",
247 | "214": "白山",
248 | "215": "辽源",
249 | "216": "四平",
250 | "217": "松原",
251 | "218": "通化",
252 | "219": "延边"
253 | },
254 | "16": {
255 | "220": "南京",
256 | "221": "苏州",
257 | "222": "无锡",
258 | "223": "常州",
259 | "224": "淮安",
260 | "225": "连云港",
261 | "226": "南通",
262 | "227": "宿迁",
263 | "228": "泰州",
264 | "229": "徐州",
265 | "230": "盐城",
266 | "231": "扬州",
267 | "232": "镇江"
268 | },
269 | "17": {
270 | "233": "南昌",
271 | "234": "抚州",
272 | "235": "赣州",
273 | "236": "吉安",
274 | "237": "景德镇",
275 | "238": "九江",
276 | "239": "萍乡",
277 | "240": "上饶",
278 | "241": "新余",
279 | "242": "宜春",
280 | "243": "鹰潭"
281 | },
282 | "18": {
283 | "244": "沈阳",
284 | "245": "大连",
285 | "246": "鞍山",
286 | "247": "本溪",
287 | "248": "朝阳",
288 | "249": "丹东",
289 | "250": "抚顺",
290 | "251": "阜新",
291 | "252": "葫芦岛",
292 | "253": "锦州",
293 | "254": "辽阳",
294 | "255": "盘锦",
295 | "256": "铁岭",
296 | "257": "营口"
297 | },
298 | "19": {
299 | "258": "呼和浩特",
300 | "259": "阿拉善盟",
301 | "260": "巴彦淖尔盟",
302 | "261": "包头",
303 | "262": "赤峰",
304 | "263": "鄂尔多斯",
305 | "264": "呼伦贝尔",
306 | "265": "通辽",
307 | "266": "乌海",
308 | "267": "乌兰察布市",
309 | "268": "锡林郭勒盟",
310 | "269": "兴安盟"
311 | },
312 | "20": {
313 | "270": "银川",
314 | "271": "固原",
315 | "272": "石嘴山",
316 | "273": "吴忠",
317 | "274": "中卫"
318 | },
319 | "21": {
320 | "275": "西宁",
321 | "276": "果洛",
322 | "277": "海北",
323 | "278": "海东",
324 | "279": "海南",
325 | "280": "海西",
326 | "281": "黄南",
327 | "282": "玉树"
328 | },
329 | "22": {
330 | "283": "济南",
331 | "284": "青岛",
332 | "285": "滨州",
333 | "286": "德州",
334 | "287": "东营",
335 | "288": "菏泽",
336 | "289": "济宁",
337 | "290": "莱芜",
338 | "291": "聊城",
339 | "292": "临沂",
340 | "293": "日照",
341 | "294": "泰安",
342 | "295": "威海",
343 | "296": "潍坊",
344 | "297": "烟台",
345 | "298": "枣庄",
346 | "299": "淄博"
347 | },
348 | "23": {
349 | "300": "太原",
350 | "301": "长治",
351 | "302": "大同",
352 | "303": "晋城",
353 | "304": "晋中",
354 | "305": "临汾",
355 | "306": "吕梁",
356 | "307": "朔州",
357 | "308": "忻州",
358 | "309": "阳泉",
359 | "310": "运城"
360 | },
361 | "24": {
362 | "311": "西安",
363 | "312": "安康",
364 | "313": "宝鸡",
365 | "314": "汉中",
366 | "315": "商洛",
367 | "316": "铜川",
368 | "317": "渭南",
369 | "318": "咸阳",
370 | "319": "延安",
371 | "320": "榆林"
372 | },
373 | "25": {
374 | "321": "上海"
375 | },
376 | "26": {
377 | "322": "成都",
378 | "323": "绵阳",
379 | "324": "阿坝",
380 | "325": "巴中",
381 | "326": "达州",
382 | "327": "德阳",
383 | "328": "甘孜",
384 | "329": "广安",
385 | "330": "广元",
386 | "331": "乐山",
387 | "332": "凉山",
388 | "333": "眉山",
389 | "334": "南充",
390 | "335": "内江",
391 | "336": "攀枝花",
392 | "337": "遂宁",
393 | "338": "雅安",
394 | "339": "宜宾",
395 | "340": "资阳",
396 | "341": "自贡",
397 | "342": "泸州"
398 | },
399 | "27": {
400 | "343": "天津"
401 | },
402 | "28": {
403 | "344": "拉萨",
404 | "345": "阿里",
405 | "346": "昌都",
406 | "347": "林芝",
407 | "348": "那曲",
408 | "349": "日喀则",
409 | "350": "山南"
410 | },
411 | "29": {
412 | "351": "乌鲁木齐",
413 | "352": "阿克苏",
414 | "353": "阿拉尔",
415 | "354": "巴音郭楞",
416 | "355": "博尔塔拉",
417 | "356": "昌吉",
418 | "357": "哈密",
419 | "358": "和田",
420 | "359": "喀什",
421 | "360": "克拉玛依",
422 | "361": "克孜勒苏",
423 | "362": "石河子",
424 | "363": "图木舒克",
425 | "364": "吐鲁番",
426 | "365": "五家渠",
427 | "366": "伊犁"
428 | },
429 | "30": {
430 | "367": "昆明",
431 | "368": "怒江",
432 | "369": "普洱",
433 | "370": "丽江",
434 | "371": "保山",
435 | "372": "楚雄",
436 | "373": "大理",
437 | "374": "德宏",
438 | "375": "迪庆",
439 | "376": "红河",
440 | "377": "临沧",
441 | "378": "曲靖",
442 | "379": "文山",
443 | "380": "西双版纳",
444 | "381": "玉溪",
445 | "382": "昭通"
446 | },
447 | "31": {
448 | "383": "杭州",
449 | "384": "湖州",
450 | "385": "嘉兴",
451 | "386": "金华",
452 | "387": "丽水",
453 | "388": "宁波",
454 | "389": "绍兴",
455 | "390": "台州",
456 | "391": "温州",
457 | "392": "舟山",
458 | "393": "衢州"
459 | },
460 | "32": {
461 | "394": "重庆"
462 | },
463 | "33": {
464 | "395": "香港"
465 | },
466 | "34": {
467 | "396": "澳门"
468 | },
469 | "35": {
470 | "397": "台湾"
471 | }
472 | }
--------------------------------------------------------------------------------
/src/components/area/area-source.json:
--------------------------------------------------------------------------------
1 | {
2 | "0": {
3 | "1": "中国"
4 | },
5 | "1": {
6 | "2": "北京",
7 | "3": "安徽",
8 | "4": "福建",
9 | "5": "甘肃",
10 | "6": "广东",
11 | "7": "广西",
12 | "8": "贵州",
13 | "9": "海南",
14 | "10": "河北",
15 | "11": "河南",
16 | "12": "黑龙江",
17 | "13": "湖北",
18 | "14": "湖南",
19 | "15": "吉林",
20 | "16": "江苏",
21 | "17": "江西",
22 | "18": "辽宁",
23 | "19": "内蒙古",
24 | "20": "宁夏",
25 | "21": "青海",
26 | "22": "山东",
27 | "23": "山西",
28 | "24": "陕西",
29 | "25": "上海",
30 | "26": "四川",
31 | "27": "天津",
32 | "28": "西藏",
33 | "29": "新疆",
34 | "30": "云南",
35 | "31": "浙江",
36 | "32": "重庆",
37 | "33": "香港",
38 | "34": "澳门",
39 | "35": "台湾"
40 | },
41 | "2": {
42 | "52": "北京"
43 | },
44 | "3": {
45 | "36": "安庆",
46 | "37": "蚌埠",
47 | "38": "巢湖",
48 | "39": "池州",
49 | "40": "滁州",
50 | "41": "阜阳",
51 | "42": "淮北",
52 | "43": "淮南",
53 | "44": "黄山",
54 | "45": "六安",
55 | "46": "马鞍山",
56 | "47": "宿州",
57 | "48": "铜陵",
58 | "49": "芜湖",
59 | "50": "宣城",
60 | "51": "亳州",
61 | "3401": "合肥"
62 | },
63 | "4": {
64 | "53": "福州",
65 | "54": "龙岩",
66 | "55": "南平",
67 | "56": "宁德",
68 | "57": "莆田",
69 | "58": "泉州",
70 | "59": "三明",
71 | "60": "厦门",
72 | "61": "漳州"
73 | },
74 | "5": {
75 | "62": "兰州",
76 | "63": "白银",
77 | "64": "定西",
78 | "65": "甘南",
79 | "66": "嘉峪关",
80 | "67": "金昌",
81 | "68": "酒泉",
82 | "69": "临夏",
83 | "70": "陇南",
84 | "71": "平凉",
85 | "72": "庆阳",
86 | "73": "天水",
87 | "74": "武威",
88 | "75": "张掖"
89 | },
90 | "6": {
91 | "76": "广州",
92 | "77": "深圳",
93 | "78": "潮州",
94 | "79": "东莞",
95 | "80": "佛山",
96 | "81": "河源",
97 | "82": "惠州",
98 | "83": "江门",
99 | "84": "揭阳",
100 | "85": "茂名",
101 | "86": "梅州",
102 | "87": "清远",
103 | "88": "汕头",
104 | "89": "汕尾",
105 | "90": "韶关",
106 | "91": "阳江",
107 | "92": "云浮",
108 | "93": "湛江",
109 | "94": "肇庆",
110 | "95": "中山",
111 | "96": "珠海"
112 | },
113 | "7": {
114 | "97": "南宁",
115 | "98": "桂林",
116 | "99": "百色",
117 | "100": "北海",
118 | "101": "崇左",
119 | "102": "防城港",
120 | "103": "贵港",
121 | "104": "河池",
122 | "105": "贺州",
123 | "106": "来宾",
124 | "107": "柳州",
125 | "108": "钦州",
126 | "109": "梧州",
127 | "110": "玉林"
128 | },
129 | "8": {
130 | "111": "贵阳",
131 | "112": "安顺",
132 | "113": "毕节",
133 | "114": "六盘水",
134 | "115": "黔东南",
135 | "116": "黔南",
136 | "117": "黔西南",
137 | "118": "铜仁",
138 | "119": "遵义"
139 | },
140 | "9": {
141 | "120": "海口",
142 | "121": "三亚",
143 | "122": "白沙",
144 | "123": "保亭",
145 | "124": "昌江",
146 | "125": "澄迈县",
147 | "126": "定安县",
148 | "127": "东方",
149 | "128": "乐东",
150 | "129": "临高县",
151 | "130": "陵水",
152 | "131": "琼海",
153 | "132": "琼中",
154 | "133": "屯昌县",
155 | "134": "万宁",
156 | "135": "文昌",
157 | "136": "五指山",
158 | "137": "儋州"
159 | },
160 | "10": {
161 | "138": "石家庄",
162 | "139": "保定",
163 | "140": "沧州",
164 | "141": "承德",
165 | "142": "邯郸",
166 | "143": "衡水",
167 | "144": "廊坊",
168 | "145": "秦皇岛",
169 | "146": "唐山",
170 | "147": "邢台",
171 | "148": "张家口"
172 | },
173 | "11": {
174 | "149": "郑州",
175 | "150": "洛阳",
176 | "151": "开封",
177 | "152": "安阳",
178 | "153": "鹤壁",
179 | "154": "济源",
180 | "155": "焦作",
181 | "156": "南阳",
182 | "157": "平顶山",
183 | "158": "三门峡",
184 | "159": "商丘",
185 | "160": "新乡",
186 | "161": "信阳",
187 | "162": "许昌",
188 | "163": "周口",
189 | "164": "驻马店",
190 | "165": "漯河",
191 | "166": "濮阳"
192 | },
193 | "12": {
194 | "167": "哈尔滨",
195 | "168": "大庆",
196 | "169": "大兴安岭",
197 | "170": "鹤岗",
198 | "171": "黑河",
199 | "172": "鸡西",
200 | "173": "佳木斯",
201 | "174": "牡丹江",
202 | "175": "七台河",
203 | "176": "齐齐哈尔",
204 | "177": "双鸭山",
205 | "178": "绥化",
206 | "179": "伊春"
207 | },
208 | "13": {
209 | "180": "武汉",
210 | "181": "仙桃",
211 | "182": "鄂州",
212 | "183": "黄冈",
213 | "184": "黄石",
214 | "185": "荆门",
215 | "186": "荆州",
216 | "187": "潜江",
217 | "188": "神农架林区",
218 | "189": "十堰",
219 | "190": "随州",
220 | "191": "天门",
221 | "192": "咸宁",
222 | "193": "襄樊",
223 | "194": "孝感",
224 | "195": "宜昌",
225 | "196": "恩施"
226 | },
227 | "14": {
228 | "197": "长沙",
229 | "198": "张家界",
230 | "199": "常德",
231 | "200": "郴州",
232 | "201": "衡阳",
233 | "202": "怀化",
234 | "203": "娄底",
235 | "204": "邵阳",
236 | "205": "湘潭",
237 | "206": "湘西",
238 | "207": "益阳",
239 | "208": "永州",
240 | "209": "岳阳",
241 | "210": "株洲"
242 | },
243 | "15": {
244 | "211": "长春",
245 | "212": "吉林",
246 | "213": "白城",
247 | "214": "白山",
248 | "215": "辽源",
249 | "216": "四平",
250 | "217": "松原",
251 | "218": "通化",
252 | "219": "延边"
253 | },
254 | "16": {
255 | "220": "南京",
256 | "221": "苏州",
257 | "222": "无锡",
258 | "223": "常州",
259 | "224": "淮安",
260 | "225": "连云港",
261 | "226": "南通",
262 | "227": "宿迁",
263 | "228": "泰州",
264 | "229": "徐州",
265 | "230": "盐城",
266 | "231": "扬州",
267 | "232": "镇江"
268 | },
269 | "17": {
270 | "233": "南昌",
271 | "234": "抚州",
272 | "235": "赣州",
273 | "236": "吉安",
274 | "237": "景德镇",
275 | "238": "九江",
276 | "239": "萍乡",
277 | "240": "上饶",
278 | "241": "新余",
279 | "242": "宜春",
280 | "243": "鹰潭"
281 | },
282 | "18": {
283 | "244": "沈阳",
284 | "245": "大连",
285 | "246": "鞍山",
286 | "247": "本溪",
287 | "248": "朝阳",
288 | "249": "丹东",
289 | "250": "抚顺",
290 | "251": "阜新",
291 | "252": "葫芦岛",
292 | "253": "锦州",
293 | "254": "辽阳",
294 | "255": "盘锦",
295 | "256": "铁岭",
296 | "257": "营口"
297 | },
298 | "19": {
299 | "258": "呼和浩特",
300 | "259": "阿拉善盟",
301 | "260": "巴彦淖尔盟",
302 | "261": "包头",
303 | "262": "赤峰",
304 | "263": "鄂尔多斯",
305 | "264": "呼伦贝尔",
306 | "265": "通辽",
307 | "266": "乌海",
308 | "267": "乌兰察布市",
309 | "268": "锡林郭勒盟",
310 | "269": "兴安盟"
311 | },
312 | "20": {
313 | "270": "银川",
314 | "271": "固原",
315 | "272": "石嘴山",
316 | "273": "吴忠",
317 | "274": "中卫"
318 | },
319 | "21": {
320 | "275": "西宁",
321 | "276": "果洛",
322 | "277": "海北",
323 | "278": "海东",
324 | "279": "海南",
325 | "280": "海西",
326 | "281": "黄南",
327 | "282": "玉树"
328 | },
329 | "22": {
330 | "283": "济南",
331 | "284": "青岛",
332 | "285": "滨州",
333 | "286": "德州",
334 | "287": "东营",
335 | "288": "菏泽",
336 | "289": "济宁",
337 | "290": "莱芜",
338 | "291": "聊城",
339 | "292": "临沂",
340 | "293": "日照",
341 | "294": "泰安",
342 | "295": "威海",
343 | "296": "潍坊",
344 | "297": "烟台",
345 | "298": "枣庄",
346 | "299": "淄博"
347 | },
348 | "23": {
349 | "300": "太原",
350 | "301": "长治",
351 | "302": "大同",
352 | "303": "晋城",
353 | "304": "晋中",
354 | "305": "临汾",
355 | "306": "吕梁",
356 | "307": "朔州",
357 | "308": "忻州",
358 | "309": "阳泉",
359 | "310": "运城"
360 | },
361 | "24": {
362 | "311": "西安",
363 | "312": "安康",
364 | "313": "宝鸡",
365 | "314": "汉中",
366 | "315": "商洛",
367 | "316": "铜川",
368 | "317": "渭南",
369 | "318": "咸阳",
370 | "319": "延安",
371 | "320": "榆林"
372 | },
373 | "25": {
374 | "321": "上海"
375 | },
376 | "26": {
377 | "322": "成都",
378 | "323": "绵阳",
379 | "324": "阿坝",
380 | "325": "巴中",
381 | "326": "达州",
382 | "327": "德阳",
383 | "328": "甘孜",
384 | "329": "广安",
385 | "330": "广元",
386 | "331": "乐山",
387 | "332": "凉山",
388 | "333": "眉山",
389 | "334": "南充",
390 | "335": "内江",
391 | "336": "攀枝花",
392 | "337": "遂宁",
393 | "338": "雅安",
394 | "339": "宜宾",
395 | "340": "资阳",
396 | "341": "自贡",
397 | "342": "泸州"
398 | },
399 | "27": {
400 | "343": "天津"
401 | },
402 | "28": {
403 | "344": "拉萨",
404 | "345": "阿里",
405 | "346": "昌都",
406 | "347": "林芝",
407 | "348": "那曲",
408 | "349": "日喀则",
409 | "350": "山南"
410 | },
411 | "29": {
412 | "351": "乌鲁木齐",
413 | "352": "阿克苏",
414 | "353": "阿拉尔",
415 | "354": "巴音郭楞",
416 | "355": "博尔塔拉",
417 | "356": "昌吉",
418 | "357": "哈密",
419 | "358": "和田",
420 | "359": "喀什",
421 | "360": "克拉玛依",
422 | "361": "克孜勒苏",
423 | "362": "石河子",
424 | "363": "图木舒克",
425 | "364": "吐鲁番",
426 | "365": "五家渠",
427 | "366": "伊犁"
428 | },
429 | "30": {
430 | "367": "昆明",
431 | "368": "怒江",
432 | "369": "普洱",
433 | "370": "丽江",
434 | "371": "保山",
435 | "372": "楚雄",
436 | "373": "大理",
437 | "374": "德宏",
438 | "375": "迪庆",
439 | "376": "红河",
440 | "377": "临沧",
441 | "378": "曲靖",
442 | "379": "文山",
443 | "380": "西双版纳",
444 | "381": "玉溪",
445 | "382": "昭通"
446 | },
447 | "31": {
448 | "383": "杭州",
449 | "384": "湖州",
450 | "385": "嘉兴",
451 | "386": "金华",
452 | "387": "丽水",
453 | "388": "宁波",
454 | "389": "绍兴",
455 | "390": "台州",
456 | "391": "温州",
457 | "392": "舟山",
458 | "393": "衢州"
459 | },
460 | "32": {
461 | "394": "重庆"
462 | },
463 | "33": {
464 | "395": "香港"
465 | },
466 | "34": {
467 | "396": "澳门"
468 | },
469 | "35": {
470 | "397": "台湾"
471 | }
472 | }
--------------------------------------------------------------------------------