├── .babelrc
├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .gitattributes
├── .gitignore
├── .postcssrc.js
├── README.md
├── build
├── build.js
├── check-versions.js
├── logo.png
├── utils.js
├── vue-loader.conf.js
├── webpack.base.conf.js
├── webpack.dev.conf.js
└── webpack.prod.conf.js
├── config
├── dev.env.js
├── index.js
└── prod.env.js
├── index.html
├── package-lock.json
├── package.json
├── src
├── App.vue
├── assets
│ └── styles
│ │ ├── border.css
│ │ ├── iconfont.css
│ │ ├── iconfont
│ │ ├── iconfont.eot
│ │ ├── iconfont.svg
│ │ ├── iconfont.ttf
│ │ └── iconfont.woff
│ │ ├── mixins.styl
│ │ ├── reset.css
│ │ └── varibles.styl
├── common
│ ├── fade
│ │ └── FadeAnimation.vue
│ └── gallary
│ │ └── Gallary.vue
├── main.js
├── pages
│ ├── city
│ │ ├── City.vue
│ │ └── components
│ │ │ ├── alphabet.vue
│ │ │ ├── header.vue
│ │ │ ├── list.vue
│ │ │ └── search.vue
│ ├── detail
│ │ ├── Detail.vue
│ │ └── components
│ │ │ ├── Banner.vue
│ │ │ ├── Header.vue
│ │ │ └── List.vue
│ └── home
│ │ ├── Home.vue
│ │ └── components
│ │ ├── Header.vue
│ │ ├── Icons.vue
│ │ ├── Recommend.vue
│ │ ├── Swiper.vue
│ │ └── Weekend.vue
├── router
│ └── index.js
└── store
│ ├── index.js
│ ├── mutations.js
│ └── state.js
└── static
├── .gitkeep
└── mock
├── city.json
├── detail.json
└── index.json
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", {
4 | "modules": false,
5 | "targets": {
6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
7 | }
8 | }],
9 | "stage-2"
10 | ],
11 | "plugins": ["transform-vue-jsx", "transform-runtime"]
12 | }
13 |
--------------------------------------------------------------------------------
/.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 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | /build/
2 | /config/
3 | /dist/
4 | /*.js
5 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | // https://eslint.org/docs/user-guide/configuring
2 |
3 | module.exports = {
4 | root: true,
5 | parserOptions: {
6 | parser: 'babel-eslint'
7 | },
8 | env: {
9 | browser: true,
10 | },
11 | extends: [
12 | // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention
13 | // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules.
14 | 'plugin:vue/essential',
15 | // https://github.com/standard/standard/blob/master/docs/RULES-en.md
16 | 'standard'
17 | ],
18 | // required to lint *.vue files
19 | plugins: [
20 | 'vue'
21 | ],
22 | // add your custom rules here
23 | rules: {
24 | // allow async-await
25 | 'generator-star-spacing': 'off',
26 | // allow debugger during development
27 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | /dist/
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | static/mock
8 |
9 | # Editor directories and files
10 | .idea
11 | .vscode
12 | *.suo
13 | *.ntvs*
14 | *.njsproj
15 | *.sln
16 |
--------------------------------------------------------------------------------
/.postcssrc.js:
--------------------------------------------------------------------------------
1 | // https://github.com/michael-ciniawsky/postcss-load-config
2 |
3 | module.exports = {
4 | "plugins": {
5 | "postcss-import": {},
6 | "postcss-url": {},
7 | // to edit target browsers: use "browserslist" field in package.json
8 | "autoprefixer": {}
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | > [掘金专栏](https://juejin.im/post/5be54e04f265da611c267b19)
2 |
3 | > [segmentfault](https://segmentfault.com/a/1190000017003057#articleHeader0)
4 |
5 | ## [成果预览](http://www.ptuyxr.cn/travel/#/)
6 |
7 | - [用Vue开发仿旅游站webapp项目总结 (上)](https://juejin.im/post/5be54e04f265da611c267b19)
8 | - [用Vue开发仿旅游站webapp项目总结 (下)](https://juejin.im/post/5bec0eeef265da61193b65cd)
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/build/build.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | require('./check-versions')()
3 |
4 | process.env.NODE_ENV = 'production'
5 |
6 | const ora = require('ora')
7 | const rm = require('rimraf')
8 | const path = require('path')
9 | const chalk = require('chalk')
10 | const webpack = require('webpack')
11 | const config = require('../config')
12 | const webpackConfig = require('./webpack.prod.conf')
13 |
14 | const spinner = ora('building for production...')
15 | spinner.start()
16 |
17 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
18 | if (err) throw err
19 | webpack(webpackConfig, (err, stats) => {
20 | spinner.stop()
21 | if (err) throw err
22 | process.stdout.write(stats.toString({
23 | colors: true,
24 | modules: false,
25 | children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build.
26 | chunks: false,
27 | chunkModules: false
28 | }) + '\n\n')
29 |
30 | if (stats.hasErrors()) {
31 | console.log(chalk.red(' Build failed with errors.\n'))
32 | process.exit(1)
33 | }
34 |
35 | console.log(chalk.cyan(' Build complete.\n'))
36 | console.log(chalk.yellow(
37 | ' Tip: built files are meant to be served over an HTTP server.\n' +
38 | ' Opening index.html over file:// won\'t work.\n'
39 | ))
40 | })
41 | })
42 |
--------------------------------------------------------------------------------
/build/check-versions.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const chalk = require('chalk')
3 | const semver = require('semver')
4 | const packageConfig = require('../package.json')
5 | const shell = require('shelljs')
6 |
7 | function exec (cmd) {
8 | return require('child_process').execSync(cmd).toString().trim()
9 | }
10 |
11 | const versionRequirements = [
12 | {
13 | name: 'node',
14 | currentVersion: semver.clean(process.version),
15 | versionRequirement: packageConfig.engines.node
16 | }
17 | ]
18 |
19 | if (shell.which('npm')) {
20 | versionRequirements.push({
21 | name: 'npm',
22 | currentVersion: exec('npm --version'),
23 | versionRequirement: packageConfig.engines.npm
24 | })
25 | }
26 |
27 | module.exports = function () {
28 | const warnings = []
29 |
30 | for (let i = 0; i < versionRequirements.length; i++) {
31 | const mod = versionRequirements[i]
32 |
33 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
34 | warnings.push(mod.name + ': ' +
35 | chalk.red(mod.currentVersion) + ' should be ' +
36 | chalk.green(mod.versionRequirement)
37 | )
38 | }
39 | }
40 |
41 | if (warnings.length) {
42 | console.log('')
43 | console.log(chalk.yellow('To use this template, you must update following to modules:'))
44 | console.log()
45 |
46 | for (let i = 0; i < warnings.length; i++) {
47 | const warning = warnings[i]
48 | console.log(' ' + warning)
49 | }
50 |
51 | console.log()
52 | process.exit(1)
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/build/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FE-Sadhu/vue-travel/1dd2dc604b506774ee49908b0176bdd67ce1747e/build/logo.png
--------------------------------------------------------------------------------
/build/utils.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const path = require('path')
3 | const config = require('../config')
4 | const ExtractTextPlugin = require('extract-text-webpack-plugin')
5 | const packageConfig = require('../package.json')
6 |
7 | exports.assetsPath = function (_path) {
8 | const assetsSubDirectory = process.env.NODE_ENV === 'production'
9 | ? config.build.assetsSubDirectory
10 | : config.dev.assetsSubDirectory
11 |
12 | return path.posix.join(assetsSubDirectory, _path)
13 | }
14 |
15 | exports.cssLoaders = function (options) {
16 | options = options || {}
17 |
18 | const cssLoader = {
19 | loader: 'css-loader',
20 | options: {
21 | sourceMap: options.sourceMap
22 | }
23 | }
24 |
25 | const postcssLoader = {
26 | loader: 'postcss-loader',
27 | options: {
28 | sourceMap: options.sourceMap
29 | }
30 | }
31 |
32 | // generate loader string to be used with extract text plugin
33 | function generateLoaders (loader, loaderOptions) {
34 | const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
35 |
36 | if (loader) {
37 | loaders.push({
38 | loader: loader + '-loader',
39 | options: Object.assign({}, loaderOptions, {
40 | sourceMap: options.sourceMap
41 | })
42 | })
43 | }
44 |
45 | // Extract CSS when that option is specified
46 | // (which is the case during production build)
47 | if (options.extract) {
48 | return ExtractTextPlugin.extract({
49 | use: loaders,
50 | fallback: 'vue-style-loader'
51 | })
52 | } else {
53 | return ['vue-style-loader'].concat(loaders)
54 | }
55 | }
56 |
57 | // https://vue-loader.vuejs.org/en/configurations/extract-css.html
58 | return {
59 | css: generateLoaders(),
60 | postcss: generateLoaders(),
61 | less: generateLoaders('less'),
62 | sass: generateLoaders('sass', { indentedSyntax: true }),
63 | scss: generateLoaders('sass'),
64 | stylus: generateLoaders('stylus'),
65 | styl: generateLoaders('stylus')
66 | }
67 | }
68 |
69 | // Generate loaders for standalone style files (outside of .vue)
70 | exports.styleLoaders = function (options) {
71 | const output = []
72 | const loaders = exports.cssLoaders(options)
73 |
74 | for (const extension in loaders) {
75 | const loader = loaders[extension]
76 | output.push({
77 | test: new RegExp('\\.' + extension + '$'),
78 | use: loader
79 | })
80 | }
81 |
82 | return output
83 | }
84 |
85 | exports.createNotifierCallback = () => {
86 | const notifier = require('node-notifier')
87 |
88 | return (severity, errors) => {
89 | if (severity !== 'error') return
90 |
91 | const error = errors[0]
92 | const filename = error.file && error.file.split('!').pop()
93 |
94 | notifier.notify({
95 | title: packageConfig.name,
96 | message: severity + ': ' + error.name,
97 | subtitle: filename || '',
98 | icon: path.join(__dirname, 'logo.png')
99 | })
100 | }
101 | }
102 |
--------------------------------------------------------------------------------
/build/vue-loader.conf.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const utils = require('./utils')
3 | const config = require('../config')
4 | const isProduction = process.env.NODE_ENV === 'production'
5 | const sourceMapEnabled = isProduction
6 | ? config.build.productionSourceMap
7 | : config.dev.cssSourceMap
8 |
9 | module.exports = {
10 | loaders: utils.cssLoaders({
11 | sourceMap: sourceMapEnabled,
12 | extract: isProduction
13 | }),
14 | cssSourceMap: sourceMapEnabled,
15 | cacheBusting: config.dev.cacheBusting,
16 | transformToRequire: {
17 | video: ['src', 'poster'],
18 | source: 'src',
19 | img: 'src',
20 | image: 'xlink:href'
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/build/webpack.base.conf.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const path = require('path')
3 | const utils = require('./utils')
4 | const config = require('../config')
5 | const vueLoaderConfig = require('./vue-loader.conf')
6 |
7 | function resolve (dir) {
8 | return path.join(__dirname, '..', dir)
9 | }
10 |
11 | const createLintingRule = () => ({
12 | test: /\.(js|vue)$/,
13 | loader: 'eslint-loader',
14 | enforce: 'pre',
15 | include: [resolve('src'), resolve('test')],
16 | options: {
17 | formatter: require('eslint-friendly-formatter'),
18 | emitWarning: !config.dev.showEslintErrorsInOverlay
19 | }
20 | })
21 |
22 | module.exports = {
23 | context: path.resolve(__dirname, '../'),
24 | entry: {
25 | app: './src/main.js'
26 | },
27 | output: {
28 | path: config.build.assetsRoot,
29 | filename: '[name].js',
30 | publicPath: process.env.NODE_ENV === 'production'
31 | ? config.build.assetsPublicPath
32 | : config.dev.assetsPublicPath
33 | },
34 | resolve: {
35 | extensions: ['.js', '.vue', '.json'],
36 | alias: {
37 | 'vue$': 'vue/dist/vue.esm.js',
38 | '@': resolve('src'),
39 | 'styles': resolve('src/assets/styles'),
40 | 'common': resolve('src/common')
41 | }
42 | },
43 | module: {
44 | rules: [
45 | ...(config.dev.useEslint ? [createLintingRule()] : []),
46 | {
47 | test: /\.vue$/,
48 | loader: 'vue-loader',
49 | options: vueLoaderConfig
50 | },
51 | {
52 | test: /\.js$/,
53 | loader: 'babel-loader',
54 | include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
55 | },
56 | {
57 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
58 | loader: 'url-loader',
59 | options: {
60 | limit: 10000,
61 | name: utils.assetsPath('img/[name].[hash:7].[ext]')
62 | }
63 | },
64 | {
65 | test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
66 | loader: 'url-loader',
67 | options: {
68 | limit: 10000,
69 | name: utils.assetsPath('media/[name].[hash:7].[ext]')
70 | }
71 | },
72 | {
73 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
74 | loader: 'url-loader',
75 | options: {
76 | limit: 10000,
77 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
78 | }
79 | }
80 | ]
81 | },
82 | node: {
83 | // prevent webpack from injecting useless setImmediate polyfill because Vue
84 | // source contains it (although only uses it if it's native).
85 | setImmediate: false,
86 | // prevent webpack from injecting mocks to Node native modules
87 | // that does not make sense for the client
88 | dgram: 'empty',
89 | fs: 'empty',
90 | net: 'empty',
91 | tls: 'empty',
92 | child_process: 'empty'
93 | }
94 | }
95 |
--------------------------------------------------------------------------------
/build/webpack.dev.conf.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const utils = require('./utils')
3 | const webpack = require('webpack')
4 | const config = require('../config')
5 | const merge = require('webpack-merge')
6 | const path = require('path')
7 | const baseWebpackConfig = require('./webpack.base.conf')
8 | const CopyWebpackPlugin = require('copy-webpack-plugin')
9 | const HtmlWebpackPlugin = require('html-webpack-plugin')
10 | const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
11 | const portfinder = require('portfinder')
12 |
13 | const HOST = process.env.HOST
14 | const PORT = process.env.PORT && Number(process.env.PORT)
15 |
16 | const devWebpackConfig = merge(baseWebpackConfig, {
17 | module: {
18 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })
19 | },
20 | // cheap-module-eval-source-map is faster for development
21 | devtool: config.dev.devtool,
22 |
23 | // these devServer options should be customized in /config/index.js
24 | devServer: {
25 | clientLogLevel: 'warning',
26 | historyApiFallback: {
27 | rewrites: [
28 | { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },
29 | ],
30 | },
31 | hot: true,
32 | contentBase: false, // since we use CopyWebpackPlugin.
33 | compress: true,
34 | host: HOST || config.dev.host,
35 | port: PORT || config.dev.port,
36 | open: config.dev.autoOpenBrowser,
37 | overlay: config.dev.errorOverlay
38 | ? { warnings: false, errors: true }
39 | : false,
40 | publicPath: config.dev.assetsPublicPath,
41 | proxy: config.dev.proxyTable,
42 | quiet: true, // necessary for FriendlyErrorsPlugin
43 | watchOptions: {
44 | poll: config.dev.poll,
45 | }
46 | },
47 | plugins: [
48 | new webpack.DefinePlugin({
49 | 'process.env': require('../config/dev.env')
50 | }),
51 | new webpack.HotModuleReplacementPlugin(),
52 | new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
53 | new webpack.NoEmitOnErrorsPlugin(),
54 | // https://github.com/ampedandwired/html-webpack-plugin
55 | new HtmlWebpackPlugin({
56 | filename: 'index.html',
57 | template: 'index.html',
58 | inject: true
59 | }),
60 | // copy custom static assets
61 | new CopyWebpackPlugin([
62 | {
63 | from: path.resolve(__dirname, '../static'),
64 | to: config.dev.assetsSubDirectory,
65 | ignore: ['.*']
66 | }
67 | ])
68 | ]
69 | })
70 |
71 | module.exports = new Promise((resolve, reject) => {
72 | portfinder.basePort = process.env.PORT || config.dev.port
73 | portfinder.getPort((err, port) => {
74 | if (err) {
75 | reject(err)
76 | } else {
77 | // publish the new Port, necessary for e2e tests
78 | process.env.PORT = port
79 | // add port to devServer config
80 | devWebpackConfig.devServer.port = port
81 |
82 | // Add FriendlyErrorsPlugin
83 | devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({
84 | compilationSuccessInfo: {
85 | messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`],
86 | },
87 | onErrors: config.dev.notifyOnErrors
88 | ? utils.createNotifierCallback()
89 | : undefined
90 | }))
91 |
92 | resolve(devWebpackConfig)
93 | }
94 | })
95 | })
96 |
--------------------------------------------------------------------------------
/build/webpack.prod.conf.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const path = require('path')
3 | const utils = require('./utils')
4 | const webpack = require('webpack')
5 | const config = require('../config')
6 | const merge = require('webpack-merge')
7 | const baseWebpackConfig = require('./webpack.base.conf')
8 | const CopyWebpackPlugin = require('copy-webpack-plugin')
9 | const HtmlWebpackPlugin = require('html-webpack-plugin')
10 | const ExtractTextPlugin = require('extract-text-webpack-plugin')
11 | const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
12 | const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
13 |
14 | const env = require('../config/prod.env')
15 |
16 | const webpackConfig = merge(baseWebpackConfig, {
17 | module: {
18 | rules: utils.styleLoaders({
19 | sourceMap: config.build.productionSourceMap,
20 | extract: true,
21 | usePostCSS: true
22 | })
23 | },
24 | devtool: config.build.productionSourceMap ? config.build.devtool : false,
25 | output: {
26 | path: config.build.assetsRoot,
27 | filename: utils.assetsPath('js/[name].[chunkhash].js'),
28 | chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
29 | },
30 | plugins: [
31 | // http://vuejs.github.io/vue-loader/en/workflow/production.html
32 | new webpack.DefinePlugin({
33 | 'process.env': env
34 | }),
35 | new UglifyJsPlugin({
36 | uglifyOptions: {
37 | compress: {
38 | warnings: false
39 | }
40 | },
41 | sourceMap: config.build.productionSourceMap,
42 | parallel: true
43 | }),
44 | // extract css into its own file
45 | new ExtractTextPlugin({
46 | filename: utils.assetsPath('css/[name].[contenthash].css'),
47 | // Setting the following option to `false` will not extract CSS from codesplit chunks.
48 | // Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack.
49 | // It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`,
50 | // increasing file size: https://github.com/vuejs-templates/webpack/issues/1110
51 | allChunks: true,
52 | }),
53 | // Compress extracted CSS. We are using this plugin so that possible
54 | // duplicated CSS from different components can be deduped.
55 | new OptimizeCSSPlugin({
56 | cssProcessorOptions: config.build.productionSourceMap
57 | ? { safe: true, map: { inline: false } }
58 | : { safe: true }
59 | }),
60 | // generate dist index.html with correct asset hash for caching.
61 | // you can customize output by editing /index.html
62 | // see https://github.com/ampedandwired/html-webpack-plugin
63 | new HtmlWebpackPlugin({
64 | filename: config.build.index,
65 | template: 'index.html',
66 | inject: true,
67 | minify: {
68 | removeComments: true,
69 | collapseWhitespace: true,
70 | removeAttributeQuotes: true
71 | // more options:
72 | // https://github.com/kangax/html-minifier#options-quick-reference
73 | },
74 | // necessary to consistently work with multiple chunks via CommonsChunkPlugin
75 | chunksSortMode: 'dependency'
76 | }),
77 | // keep module.id stable when vendor modules does not change
78 | new webpack.HashedModuleIdsPlugin(),
79 | // enable scope hoisting
80 | new webpack.optimize.ModuleConcatenationPlugin(),
81 | // split vendor js into its own file
82 | new webpack.optimize.CommonsChunkPlugin({
83 | name: 'vendor',
84 | minChunks (module) {
85 | // any required modules inside node_modules are extracted to vendor
86 | return (
87 | module.resource &&
88 | /\.js$/.test(module.resource) &&
89 | module.resource.indexOf(
90 | path.join(__dirname, '../node_modules')
91 | ) === 0
92 | )
93 | }
94 | }),
95 | // extract webpack runtime and module manifest to its own file in order to
96 | // prevent vendor hash from being updated whenever app bundle is updated
97 | new webpack.optimize.CommonsChunkPlugin({
98 | name: 'manifest',
99 | minChunks: Infinity
100 | }),
101 | // This instance extracts shared chunks from code splitted chunks and bundles them
102 | // in a separate chunk, similar to the vendor chunk
103 | // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk
104 | new webpack.optimize.CommonsChunkPlugin({
105 | name: 'app',
106 | async: 'vendor-async',
107 | children: true,
108 | minChunks: 3
109 | }),
110 |
111 | // copy custom static assets
112 | new CopyWebpackPlugin([
113 | {
114 | from: path.resolve(__dirname, '../static'),
115 | to: config.build.assetsSubDirectory,
116 | ignore: ['.*']
117 | }
118 | ])
119 | ]
120 | })
121 |
122 | if (config.build.productionGzip) {
123 | const CompressionWebpackPlugin = require('compression-webpack-plugin')
124 |
125 | webpackConfig.plugins.push(
126 | new CompressionWebpackPlugin({
127 | asset: '[path].gz[query]',
128 | algorithm: 'gzip',
129 | test: new RegExp(
130 | '\\.(' +
131 | config.build.productionGzipExtensions.join('|') +
132 | ')$'
133 | ),
134 | threshold: 10240,
135 | minRatio: 0.8
136 | })
137 | )
138 | }
139 |
140 | if (config.build.bundleAnalyzerReport) {
141 | const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
142 | webpackConfig.plugins.push(new BundleAnalyzerPlugin())
143 | }
144 |
145 | module.exports = webpackConfig
146 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/config/index.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | // Template version: 1.3.1
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 | '/api': {
15 | target: 'http://localhost:8080',
16 | pathRewrite: {
17 | '^/api': '/static/mock'
18 | }
19 | }
20 | },
21 |
22 | // Various Dev Server settings
23 | host: 'localhost', // can be overwritten by process.env.HOST
24 | port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
25 | autoOpenBrowser: false,
26 | errorOverlay: true,
27 | notifyOnErrors: true,
28 | poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
29 |
30 | // Use Eslint Loader?
31 | // If true, your code will be linted during bundling and
32 | // linting errors and warnings will be shown in the console.
33 | useEslint: true,
34 | // If true, eslint errors and warnings will also be shown in the error overlay
35 | // in the browser.
36 | showEslintErrorsInOverlay: false,
37 |
38 | /**
39 | * Source Maps
40 | */
41 |
42 | // https://webpack.js.org/configuration/devtool/#development
43 | devtool: 'cheap-module-eval-source-map',
44 |
45 | // If you have problems debugging vue-files in devtools,
46 | // set this to false - it *may* help
47 | // https://vue-loader.vuejs.org/en/options.html#cachebusting
48 | cacheBusting: true,
49 |
50 | cssSourceMap: true
51 | },
52 |
53 | build: {
54 | // Template for index.html
55 | index: path.resolve(__dirname, '../dist/index.html'),
56 |
57 | // Paths
58 | assetsRoot: path.resolve(__dirname, '../dist'),
59 | assetsSubDirectory: 'static',
60 | assetsPublicPath: '/',
61 |
62 | /**
63 | * Source Maps
64 | */
65 |
66 | productionSourceMap: true,
67 | // https://webpack.js.org/configuration/devtool/#production
68 | devtool: '#source-map',
69 |
70 | // Gzip off by default as many popular static hosts such as
71 | // Surge or Netlify already gzip all static assets for you.
72 | // Before setting to `true`, make sure to:
73 | // npm install --save-dev compression-webpack-plugin
74 | productionGzip: false,
75 | productionGzipExtensions: ['js', 'css'],
76 |
77 | // Run the build command with an extra argument to
78 | // View the bundle analyzer report after build finishes:
79 | // `npm run build --report`
80 | // Set to `true` or `false` to always turn it on or off
81 | bundleAnalyzerReport: process.env.npm_config_report
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/config/prod.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | module.exports = {
3 | NODE_ENV: '"production"'
4 | }
5 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
8 | travel
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "travel",
3 | "version": "1.0.0",
4 | "description": "A Vue.js project",
5 | "author": "'Sadhu' <'1714222385@qq.com'>",
6 | "private": true,
7 | "scripts": {
8 | "dev": "webpack-dev-server --host 0.0.0.0 --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 | "axios": "^0.21.1",
15 | "babel-polyfill": "^6.26.0",
16 | "better-scroll": "^1.13.2",
17 | "fastclick": "^1.0.6",
18 | "stylus": "^0.54.5",
19 | "stylus-loader": "^3.0.2",
20 | "vue": "^2.5.2",
21 | "vue-awesome-swiper": "^2.6.7",
22 | "vue-router": "^3.0.1",
23 | "vuex": "^3.0.1"
24 | },
25 | "devDependencies": {
26 | "autoprefixer": "^7.1.2",
27 | "babel-core": "^6.22.1",
28 | "babel-eslint": "^8.2.1",
29 | "babel-helper-vue-jsx-merge-props": "^2.0.3",
30 | "babel-loader": "^7.1.1",
31 | "babel-plugin-syntax-jsx": "^6.18.0",
32 | "babel-plugin-transform-runtime": "^6.22.0",
33 | "babel-plugin-transform-vue-jsx": "^3.5.0",
34 | "babel-preset-env": "^1.3.2",
35 | "babel-preset-stage-2": "^6.22.0",
36 | "chalk": "^2.0.1",
37 | "copy-webpack-plugin": "^4.0.1",
38 | "css-loader": "^0.28.0",
39 | "eslint": "^4.15.0",
40 | "eslint-config-standard": "^10.2.1",
41 | "eslint-friendly-formatter": "^3.0.0",
42 | "eslint-loader": "^1.7.1",
43 | "eslint-plugin-import": "^2.7.0",
44 | "eslint-plugin-node": "^5.2.0",
45 | "eslint-plugin-promise": "^3.4.0",
46 | "eslint-plugin-standard": "^3.0.1",
47 | "eslint-plugin-vue": "^4.0.0",
48 | "extract-text-webpack-plugin": "^3.0.0",
49 | "file-loader": "^1.1.4",
50 | "friendly-errors-webpack-plugin": "^1.6.1",
51 | "html-webpack-plugin": "^2.30.1",
52 | "node-notifier": "^8.0.1",
53 | "optimize-css-assets-webpack-plugin": "^3.2.0",
54 | "ora": "^1.2.0",
55 | "portfinder": "^1.0.13",
56 | "postcss-import": "^11.0.0",
57 | "postcss-loader": "^2.0.8",
58 | "postcss-url": "^7.2.1",
59 | "rimraf": "^2.6.0",
60 | "semver": "^5.3.0",
61 | "shelljs": "^0.7.6",
62 | "uglifyjs-webpack-plugin": "^1.1.1",
63 | "url-loader": "^1.1.2",
64 | "vue-loader": "^13.3.0",
65 | "vue-style-loader": "^3.0.1",
66 | "vue-template-compiler": "^2.5.2",
67 | "webpack": "^3.6.0",
68 | "webpack-bundle-analyzer": "^2.9.0",
69 | "webpack-dev-server": "^2.9.1",
70 | "webpack-merge": "^4.1.0"
71 | },
72 | "engines": {
73 | "node": ">= 6.0.0",
74 | "npm": ">= 3.0.0"
75 | },
76 | "browserslist": [
77 | "> 1%",
78 | "last 2 versions",
79 | "not ie <= 8"
80 | ]
81 | }
82 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
16 |
17 |
19 |
--------------------------------------------------------------------------------
/src/assets/styles/border.css:
--------------------------------------------------------------------------------
1 | @charset "utf-8";
2 |
3 | .border,
4 | .border-top,
5 | .border-right,
6 | .border-bottom,
7 | .border-left,
8 | .border-topbottom,
9 | .border-rightleft,
10 | .border-topleft,
11 | .border-rightbottom,
12 | .border-topright,
13 | .border-bottomleft {
14 | position: relative;
15 | }
16 |
17 | .border::before,
18 | .border-top::before,
19 | .border-right::before,
20 | .border-bottom::before,
21 | .border-left::before,
22 | .border-topbottom::before,
23 | .border-topbottom::after,
24 | .border-rightleft::before,
25 | .border-rightleft::after,
26 | .border-topleft::before,
27 | .border-topleft::after,
28 | .border-rightbottom::before,
29 | .border-rightbottom::after,
30 | .border-topright::before,
31 | .border-topright::after,
32 | .border-bottomleft::before,
33 | .border-bottomleft::after {
34 | content: "\0020";
35 | overflow: hidden;
36 | position: absolute;
37 | }
38 |
39 | /* border
40 | * 因,边框是由伪元素区域遮盖在父级
41 | * 故,子级若有交互,需要对子级设置
42 | * 定位 及 z轴
43 | */
44 | .border::before {
45 | box-sizing: border-box;
46 | top: 0;
47 | left: 0;
48 | height: 100%;
49 | width: 100%;
50 | border: 1px solid #eaeaea;
51 | transform-origin: 0 0;
52 | }
53 |
54 | .border-top::before,
55 | .border-bottom::before,
56 | .border-topbottom::before,
57 | .border-topbottom::after,
58 | .border-topleft::before,
59 | .border-rightbottom::after,
60 | .border-topright::before,
61 | .border-bottomleft::before {
62 | left: 0;
63 | width: 100%;
64 | height: 1px;
65 | }
66 |
67 | .border-right::before,
68 | .border-left::before,
69 | .border-rightleft::before,
70 | .border-rightleft::after,
71 | .border-topleft::after,
72 | .border-rightbottom::before,
73 | .border-topright::after,
74 | .border-bottomleft::after {
75 | top: 0;
76 | width: 1px;
77 | height: 100%;
78 | }
79 |
80 | .border-top::before,
81 | .border-topbottom::before,
82 | .border-topleft::before,
83 | .border-topright::before {
84 | border-top: 1px solid #eaeaea;
85 | transform-origin: 0 0;
86 | }
87 |
88 | .border-right::before,
89 | .border-rightbottom::before,
90 | .border-rightleft::before,
91 | .border-topright::after {
92 | border-right: 1px solid #eaeaea;
93 | transform-origin: 100% 0;
94 | }
95 |
96 | .border-bottom::before,
97 | .border-topbottom::after,
98 | .border-rightbottom::after,
99 | .border-bottomleft::before {
100 | border-bottom: 1px solid #eaeaea;
101 | transform-origin: 0 100%;
102 | }
103 |
104 | .border-left::before,
105 | .border-topleft::after,
106 | .border-rightleft::after,
107 | .border-bottomleft::after {
108 | border-left: 1px solid #eaeaea;
109 | transform-origin: 0 0;
110 | }
111 |
112 | .border-top::before,
113 | .border-topbottom::before,
114 | .border-topleft::before,
115 | .border-topright::before {
116 | top: 0;
117 | }
118 |
119 | .border-right::before,
120 | .border-rightleft::after,
121 | .border-rightbottom::before,
122 | .border-topright::after {
123 | right: 0;
124 | }
125 |
126 | .border-bottom::before,
127 | .border-topbottom::after,
128 | .border-rightbottom::after,
129 | .border-bottomleft::after {
130 | bottom: 0;
131 | }
132 |
133 | .border-left::before,
134 | .border-rightleft::before,
135 | .border-topleft::after,
136 | .border-bottomleft::before {
137 | left: 0;
138 | }
139 |
140 | @media (max--moz-device-pixel-ratio: 1.49),
141 | (-webkit-max-device-pixel-ratio: 1.49),
142 | (max-device-pixel-ratio: 1.49),
143 | (max-resolution: 143dpi),
144 | (max-resolution: 1.49dppx) {
145 | /* 默认值,无需重置 */
146 | }
147 |
148 | @media (min--moz-device-pixel-ratio: 1.5) and (max--moz-device-pixel-ratio: 2.49),
149 | (-webkit-min-device-pixel-ratio: 1.5) and (-webkit-max-device-pixel-ratio: 2.49),
150 | (min-device-pixel-ratio: 1.5) and (max-device-pixel-ratio: 2.49),
151 | (min-resolution: 144dpi) and (max-resolution: 239dpi),
152 | (min-resolution: 1.5dppx) and (max-resolution: 2.49dppx) {
153 | .border::before {
154 | width: 200%;
155 | height: 200%;
156 | transform: scale(.5);
157 | }
158 |
159 | .border-top::before,
160 | .border-bottom::before,
161 | .border-topbottom::before,
162 | .border-topbottom::after,
163 | .border-topleft::before,
164 | .border-rightbottom::after,
165 | .border-topright::before,
166 | .border-bottomleft::before {
167 | transform: scaleY(.5);
168 | }
169 |
170 | .border-right::before,
171 | .border-left::before,
172 | .border-rightleft::before,
173 | .border-rightleft::after,
174 | .border-topleft::after,
175 | .border-rightbottom::before,
176 | .border-topright::after,
177 | .border-bottomleft::after {
178 | transform: scaleX(.5);
179 | }
180 | }
181 |
182 | @media (min--moz-device-pixel-ratio: 2.5),
183 | (-webkit-min-device-pixel-ratio: 2.5),
184 | (min-device-pixel-ratio: 2.5),
185 | (min-resolution: 240dpi),
186 | (min-resolution: 2.5dppx) {
187 | .border::before {
188 | width: 300%;
189 | height: 300%;
190 | transform: scale(.33333);
191 | }
192 |
193 | .border-top::before,
194 | .border-bottom::before,
195 | .border-topbottom::before,
196 | .border-topbottom::after,
197 | .border-topleft::before,
198 | .border-rightbottom::after,
199 | .border-topright::before,
200 | .border-bottomleft::before {
201 | transform: scaleY(.33333);
202 | }
203 |
204 | .border-right::before,
205 | .border-left::before,
206 | .border-rightleft::before,
207 | .border-rightleft::after,
208 | .border-topleft::after,
209 | .border-rightbottom::before,
210 | .border-topright::after,
211 | .border-bottomleft::after {
212 | transform: scaleX(.33333);
213 | }
214 | }
215 |
--------------------------------------------------------------------------------
/src/assets/styles/iconfont.css:
--------------------------------------------------------------------------------
1 |
2 | @font-face {font-family: "iconfont";
3 | src: url('./iconfont/iconfont.eot?t=1540387083019'); /* IE9*/
4 | src: url('./iconfont/iconfont.eot?t=1540387083019#iefix') format('embedded-opentype'), /* IE6-IE8 */
5 | url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAVgAAsAAAAAB/QAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFY8mkmLY21hcAAAAYAAAABrAAABstB8nhJnbHlmAAAB7AAAAWcAAAGQYyJtomhlYWQAAANUAAAALwAAADYTJYv4aGhlYQAAA4QAAAAcAAAAJAfeA4ZobXR4AAADoAAAAA4AAAAUFAAAAGxvY2EAAAOwAAAADAAAAAwAuAEYbWF4cAAAA7wAAAAfAAAAIAESADBuYW1lAAAD3AAAAUUAAAJtPlT+fXBvc3QAAAUkAAAAOgAAAEyWygySeJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2BkYWCcwMDKwMHUyXSGgYGhH0IzvmYwYuRgYGBiYGVmwAoC0lxTGByeqTyfxtzwv4EhhrmZoQEozAiSAwDrcAyheJztkb0NgEAIRt/9aMzFMSytnOBqZ7FymBsRx1A4LBzCjzwCXwgFAAOQlFXJEE4CpkPd0P1E6X6mal+YiERZZJP9avcN3/pV0DkPdNo22e6RX3PP9e2yXc/ROyGbYx+R3bEvXM0hPwdvGe8AeJw1Tz1Lw1AUffelSV9biU3TvpfQj5gWE11SrG1SREptBMFFdzcH/4G4OAjaUWgnBXFybke1g0oRXJ26uLj2JwjSp6+BXriHezmXc85FGImShniEMkhHSLdrlClxUMF1XHD8wGcbN/jTWgPI8Hu9aSZkfqsRI0vx83qpqHPHIBmFwLfZ1JdBSIn+u8A/0qXQQwlQsgxoza8LrXoAvgf4g+8yA14JTRPeIXF4SRFLOuPbZtvke0TLERgRmoD3lBWPogm9N+lUaqMUYqiC0KoHbguCEjA1GsSqQrwEstMCagFVQQT/GkxjselgOMdhfxyLjfu9OcJ1UsoVyU6ES4Jb3LUXF73+eCtVSEPyIMK5vwjRx08ojUy0Ih50KnZZyWlZumnX/IZWl/0azSplpw52I2ABk871wuyk4LoFfJd3Z8csrFZDD+/PHrvhZIAfdDfP5TkNv/kjQ1BeyK8Ou53JQDj9A6LAV1cAeJxjYGRgYABi/l+35eL5bb4ycLMwgMANZuU/CPp/AwsDczOQy8HABBIFABrRCboAeJxjYGRgYG7438AQw8IAAkCSkQEVsAIARwsCbnicY2FgYGBBwwABBAAVAAAAAAAAACgAUACQAMh4nGNgZGBgYGVQYWBmAAEmIOYCQgaG/2A+AwAMmgFDAHicZY9NTsMwEIVf+gekEqqoYIfkBWIBKP0Rq25YVGr3XXTfpk6bKokjx63UA3AejsAJOALcgDvwSCebNpbH37x5Y08A3OAHHo7fLfeRPVwyO3INF7gXrlN/EG6QX4SbaONVuEX9TdjHM6bCbXRheYPXuGL2hHdhDx18CNdwjU/hOvUv4Qb5W7iJO/wKt9Dx6sI+5l5XuI1HL/bHVi+cXqnlQcWhySKTOb+CmV7vkoWt0uqca1vEJlODoF9JU51pW91T7NdD5yIVWZOqCas6SYzKrdnq0AUb5/JRrxeJHoQm5Vhj/rbGAo5xBYUlDowxQhhkiMro6DtVZvSvsUPCXntWPc3ndFsU1P9zhQEC9M9cU7qy0nk6T4E9XxtSdXQrbsuelDSRXs1JErJCXta2VELqATZlV44RelzRiT8oZ0j/AAlabsgAAAB4nGNgYoAALgbsgJWRiZGZkYWRlZGNgT0rMzGvJL+ULS0xL6M0k604v7S4NJ+tpLQAKM7AAAC6Bwr4AAA=') format('woff'),
6 | url('./iconfont/iconfont.ttf?t=1540387083019') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
7 | url('./iconfont/iconfont.svg?t=1540387083019#iconfont') format('svg'); /* iOS 4.1- */
8 | }
9 |
10 | .iconfont {
11 | font-family:"iconfont" !important;
12 | font-size:16px;
13 | font-style:normal;
14 | -webkit-font-smoothing: antialiased;
15 | -moz-osx-font-smoothing: grayscale;
16 | }
17 |
18 | /* .icon-jiantou:before { content: "\e64a"; }
19 |
20 | .icon-fanhui:before { content: "\e624"; }
21 |
22 | .icon-sousuo:before { content: "\e632"; } */
23 |
24 |
--------------------------------------------------------------------------------
/src/assets/styles/iconfont/iconfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FE-Sadhu/vue-travel/1dd2dc604b506774ee49908b0176bdd67ce1747e/src/assets/styles/iconfont/iconfont.eot
--------------------------------------------------------------------------------
/src/assets/styles/iconfont/iconfont.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
39 |
--------------------------------------------------------------------------------
/src/assets/styles/iconfont/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FE-Sadhu/vue-travel/1dd2dc604b506774ee49908b0176bdd67ce1747e/src/assets/styles/iconfont/iconfont.ttf
--------------------------------------------------------------------------------
/src/assets/styles/iconfont/iconfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FE-Sadhu/vue-travel/1dd2dc604b506774ee49908b0176bdd67ce1747e/src/assets/styles/iconfont/iconfont.woff
--------------------------------------------------------------------------------
/src/assets/styles/mixins.styl:
--------------------------------------------------------------------------------
1 | ellipsis()
2 | overflow hidden
3 | white-space nowrap
4 | text-overflow ellipsis
--------------------------------------------------------------------------------
/src/assets/styles/reset.css:
--------------------------------------------------------------------------------
1 | @charset "utf-8";
2 |
3 | html {
4 | background-color: #fff;
5 | color: #000;
6 | font-size: 12px
7 | }
8 |
9 | body,
10 | ul,
11 | ol,
12 | dl,
13 | dd,
14 | h1,
15 | h2,
16 | h3,
17 | h4,
18 | h5,
19 | h6,
20 | figure,
21 | form,
22 | fieldset,
23 | legend,
24 | input,
25 | textarea,
26 | button,
27 | p,
28 | blockquote,
29 | th,
30 | td,
31 | pre,
32 | xmp {
33 | margin: 0;
34 | padding: 0
35 | }
36 |
37 | body,
38 | input,
39 | textarea,
40 | button,
41 | select,
42 | pre,
43 | xmp,
44 | tt,
45 | code,
46 | kbd,
47 | samp {
48 | line-height: 1.5;
49 | font-family: tahoma, arial, "Hiragino Sans GB", simsun, sans-serif
50 | }
51 |
52 | h1,
53 | h2,
54 | h3,
55 | h4,
56 | h5,
57 | h6,
58 | small,
59 | big,
60 | input,
61 | textarea,
62 | button,
63 | select {
64 | font-size: 100%
65 | }
66 |
67 | h1,
68 | h2,
69 | h3,
70 | h4,
71 | h5,
72 | h6 {
73 | font-family: tahoma, arial, "Hiragino Sans GB", "微软雅黑", simsun, sans-serif
74 | }
75 |
76 | h1,
77 | h2,
78 | h3,
79 | h4,
80 | h5,
81 | h6,
82 | b,
83 | strong {
84 | font-weight: normal
85 | }
86 |
87 | address,
88 | cite,
89 | dfn,
90 | em,
91 | i,
92 | optgroup,
93 | var {
94 | font-style: normal
95 | }
96 |
97 | table {
98 | border-collapse: collapse;
99 | border-spacing: 0;
100 | text-align: left
101 | }
102 |
103 | caption,
104 | th {
105 | text-align: inherit
106 | }
107 |
108 | ul,
109 | ol,
110 | menu {
111 | list-style: none
112 | }
113 |
114 | fieldset,
115 | img {
116 | border: 0
117 | }
118 |
119 | img,
120 | object,
121 | input,
122 | textarea,
123 | button,
124 | select {
125 | vertical-align: middle
126 | }
127 |
128 | article,
129 | aside,
130 | footer,
131 | header,
132 | section,
133 | nav,
134 | figure,
135 | figcaption,
136 | hgroup,
137 | details,
138 | menu {
139 | display: block
140 | }
141 |
142 | audio,
143 | canvas,
144 | video {
145 | display: inline-block;
146 | *display: inline;
147 | *zoom: 1
148 | }
149 |
150 | blockquote:before,
151 | blockquote:after,
152 | q:before,
153 | q:after {
154 | content: "\0020"
155 | }
156 |
157 | textarea {
158 | overflow: auto;
159 | resize: vertical
160 | }
161 |
162 | input,
163 | textarea,
164 | button,
165 | select,
166 | a {
167 | outline: 0 none;
168 | border: none;
169 | }
170 |
171 | button::-moz-focus-inner,
172 | input::-moz-focus-inner {
173 | padding: 0;
174 | border: 0
175 | }
176 |
177 | mark {
178 | background-color: transparent
179 | }
180 |
181 | a,
182 | ins,
183 | s,
184 | u,
185 | del {
186 | text-decoration: none
187 | }
188 |
189 | sup,
190 | sub {
191 | vertical-align: baseline
192 | }
193 |
194 | html {
195 | overflow-x: hidden;
196 | height: 100%;
197 | font-size: 50px;
198 | -webkit-tap-highlight-color: transparent;
199 | }
200 |
201 | body {
202 | font-family: Arial, "Microsoft Yahei", "Helvetica Neue", Helvetica, sans-serif;
203 | color: #333;
204 | font-size: .28em;
205 | line-height: 1;
206 | -webkit-text-size-adjust: none;
207 | }
208 |
209 | hr {
210 | height: .02rem;
211 | margin: .1rem 0;
212 | border: medium none;
213 | border-top: .02rem solid #cacaca;
214 | }
215 |
216 | a {
217 | color: #25a4bb;
218 | text-decoration: none;
219 | }
220 |
--------------------------------------------------------------------------------
/src/assets/styles/varibles.styl:
--------------------------------------------------------------------------------
1 | $bgColor = #00bcd4
2 | $darkTextColor = #333
3 | $headerHeight = .86rem
4 |
--------------------------------------------------------------------------------
/src/common/fade/FadeAnimation.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
19 |
--------------------------------------------------------------------------------
/src/common/gallary/Gallary.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
10 |
11 |
12 |
17 |
18 |
19 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
55 |
56 |
81 |
--------------------------------------------------------------------------------
/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 router from './router'
6 | import fastClick from 'fastclick'
7 | import VueAwesomeSwiper from 'vue-awesome-swiper'
8 | import store from './store'
9 | import 'babel-polyfill'
10 | import 'styles/reset.css'
11 | import 'styles/border.css'
12 | import 'styles/iconfont.css'
13 | import 'swiper/dist/css/swiper.css'
14 |
15 | Vue.config.productionTip = false
16 | fastClick.attach(document.body)
17 | Vue.use(VueAwesomeSwiper)
18 |
19 | /* eslint-disable no-new */
20 | new Vue({
21 | el: '#app',
22 | router,
23 | store,
24 | components: {
25 | App
26 | },
27 | template: ''
28 | })
29 |
--------------------------------------------------------------------------------
/src/pages/city/City.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
14 |
15 |
16 |
17 |
62 |
63 |
66 |
--------------------------------------------------------------------------------
/src/pages/city/components/alphabet.vue:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 |
15 |
85 |
86 |
102 |
--------------------------------------------------------------------------------
/src/pages/city/components/header.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
15 |
16 |
36 |
--------------------------------------------------------------------------------
/src/pages/city/components/list.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
24 |
30 |
{{key}}
31 |
32 | - {{innerItem.name}}
37 |
38 |
39 |
40 |
41 |
42 |
43 |
80 |
81 |
124 |
--------------------------------------------------------------------------------
/src/pages/city/components/search.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
16 |
17 | - {{item.name}}
24 | -
28 | 没有找到匹配数据
29 |
30 |
31 |
32 |
33 |
34 |
35 |
92 |
93 |
123 |
--------------------------------------------------------------------------------
/src/pages/detail/Detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
70 |
71 |
77 |
--------------------------------------------------------------------------------
/src/pages/detail/components/Banner.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
![]()
5 |
6 |
{{this.sightName}}
7 |
8 |
9 | {{this.bannerImgs.length}}
10 |
11 |
12 |
13 |
14 |
19 |
20 |
21 |
22 |
23 |
53 |
54 |
86 |
--------------------------------------------------------------------------------
/src/pages/detail/components/Header.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
21 |
22 |
23 |
24 |
59 |
60 |
96 |
--------------------------------------------------------------------------------
/src/pages/detail/components/List.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 | {{item.title}}
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
27 |
28 |
48 |
--------------------------------------------------------------------------------
/src/pages/home/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
90 |
91 |
94 |
--------------------------------------------------------------------------------
/src/pages/home/components/Header.vue:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
17 |
27 |
28 |
64 |
--------------------------------------------------------------------------------
/src/pages/home/components/Icons.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
![]()
8 |
9 |
{{item.desc}}
10 |
11 |
12 |
20 |
21 |
22 |
23 |
24 |
52 |
53 |
92 |
--------------------------------------------------------------------------------
/src/pages/home/components/Recommend.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
热销推荐
4 |
5 |
12 |
13 |
14 |
{{item.title}}
15 |
{{item.desc}}
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
31 |
32 |
68 |
--------------------------------------------------------------------------------
/src/pages/home/components/Swiper.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
13 |
14 |
15 |
17 |
18 |
19 |
20 |
21 |
22 |
44 |
45 |
55 |
--------------------------------------------------------------------------------
/src/pages/home/components/Weekend.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
周末去哪儿
4 |
5 | -
6 |
7 |
![]()
8 |
9 |
10 |
{{item.title}}
11 |
{{item.desc}}
12 |
13 |
14 |
15 |
16 |
17 |
18 |
26 |
27 |
55 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Router from 'vue-router'
3 | import Home from '@/pages/home/Home'
4 | import City from '@/pages/city/City'
5 | import Detail from '@/pages/detail/Detail'
6 |
7 | Vue.use(Router)
8 |
9 | export default new Router({
10 | routes: [{
11 | path: '/',
12 | name: 'Home',
13 | component: Home
14 | }, {
15 | path: '/city',
16 | name: 'City',
17 | component: City
18 | }, {
19 | path: '/detail/:id',
20 | name: 'Detail',
21 | component: Detail
22 | }],
23 | scrollBehavior (to, from, savedPosition) {
24 | return { x: 0, y: 0 }
25 | }
26 | })
27 |
--------------------------------------------------------------------------------
/src/store/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 | import state from './state'
4 | import mutations from './mutations'
5 |
6 | Vue.use(Vuex)
7 |
8 | export default new Vuex.Store({
9 | state,
10 | // actions: {
11 | // changeCity (ctx, city) {
12 | // ctx.commit('changeC2', city)
13 | // }
14 | // }, 可省略
15 | mutations
16 | })
17 |
--------------------------------------------------------------------------------
/src/store/mutations.js:
--------------------------------------------------------------------------------
1 | export default {
2 | changeC2 (state, city) {
3 | state.city = city
4 | try {
5 | localStorage.city = city
6 | } catch (e) {}
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/store/state.js:
--------------------------------------------------------------------------------
1 | let defaultCity = '上海'
2 | try {
3 | if (localStorage.city) {
4 | defaultCity = localStorage.city
5 | }
6 | } catch (e) {}
7 |
8 | export default {
9 | city: defaultCity // localStorage.city || '上海'
10 | }
11 |
--------------------------------------------------------------------------------
/static/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FE-Sadhu/vue-travel/1dd2dc604b506774ee49908b0176bdd67ce1747e/static/.gitkeep
--------------------------------------------------------------------------------
/static/mock/city.json:
--------------------------------------------------------------------------------
1 | {
2 | "ret": true,
3 | "data": {
4 | "hotCities": [
5 | {
6 | "id": 1,
7 | "spell": "beijing",
8 | "name": "北京"
9 | },
10 | {
11 | "id": 3,
12 | "spell": "shanghai",
13 | "name": "上海"
14 | },
15 | {
16 | "id": 47,
17 | "spell": "xian",
18 | "name": "西安"
19 | },
20 | {
21 | "id": 239,
22 | "spell": "sanya",
23 | "name": "三亚"
24 | },
25 | {
26 | "id": 188,
27 | "spell": "lijiang",
28 | "name": "丽江"
29 | },
30 | {
31 | "id": 125,
32 | "spell": "guilin",
33 | "name": "桂林"
34 | }
35 | ],
36 | "cities": {
37 | "A": [
38 | {
39 | "id": 56,
40 | "spell": "aba",
41 | "name": "阿坝"
42 | },
43 | {
44 | "id": 57,
45 | "spell": "akesu",
46 | "name": "阿克苏"
47 | },
48 | {
49 | "id": 58,
50 | "spell": "alashanmeng",
51 | "name": "阿拉善盟"
52 | },
53 | {
54 | "id": 59,
55 | "spell": "aletai",
56 | "name": "阿勒泰"
57 | },
58 | {
59 | "id": 60,
60 | "spell": "ali",
61 | "name": "阿里"
62 | },
63 | {
64 | "id": 61,
65 | "spell": "ankang",
66 | "name": "安康"
67 | },
68 | {
69 | "id": 62,
70 | "spell": "anqing",
71 | "name": "安庆"
72 | },
73 | {
74 | "id": 63,
75 | "spell": "anshan",
76 | "name": "鞍山"
77 | },
78 | {
79 | "id": 64,
80 | "spell": "anshun",
81 | "name": "安顺"
82 | },
83 | {
84 | "id": 65,
85 | "spell": "anyang",
86 | "name": "安阳"
87 | },
88 | {
89 | "id": 338,
90 | "spell": "acheng",
91 | "name": "阿城"
92 | },
93 | {
94 | "id": 339,
95 | "spell": "anfu",
96 | "name": "安福"
97 | },
98 | {
99 | "id": 340,
100 | "spell": "anji",
101 | "name": "安吉"
102 | },
103 | {
104 | "id": 341,
105 | "spell": "anning",
106 | "name": "安宁"
107 | },
108 | {
109 | "id": 342,
110 | "spell": "anqiu",
111 | "name": "安丘"
112 | },
113 | {
114 | "id": 343,
115 | "spell": "anxi",
116 | "name": "安溪"
117 | },
118 | {
119 | "id": 344,
120 | "spell": "anyi",
121 | "name": "安义"
122 | },
123 | {
124 | "id": 345,
125 | "spell": "anyuan",
126 | "name": "安远"
127 | }
128 | ],
129 | "B": [
130 | {
131 | "id": 1,
132 | "spell": "beijing",
133 | "name": "北京"
134 | },
135 | {
136 | "id": 66,
137 | "spell": "baicheng",
138 | "name": "白城"
139 | },
140 | {
141 | "id": 67,
142 | "spell": "baise",
143 | "name": "百色"
144 | },
145 | {
146 | "id": 68,
147 | "spell": "baishan",
148 | "name": "白山"
149 | },
150 | {
151 | "id": 69,
152 | "spell": "baiyin",
153 | "name": "白银"
154 | },
155 | {
156 | "id": 70,
157 | "spell": "bangbu",
158 | "name": "蚌埠"
159 | },
160 | {
161 | "id": 71,
162 | "spell": "baoding",
163 | "name": "保定"
164 | },
165 | {
166 | "id": 72,
167 | "spell": "baoji",
168 | "name": "宝鸡"
169 | },
170 | {
171 | "id": 73,
172 | "spell": "baoshan",
173 | "name": "保山"
174 | },
175 | {
176 | "id": 74,
177 | "spell": "baotou",
178 | "name": "包头"
179 | },
180 | {
181 | "id": 75,
182 | "spell": "bayannaoer",
183 | "name": "巴彦淖尔"
184 | },
185 | {
186 | "id": 76,
187 | "spell": "bayinguoleng",
188 | "name": "巴音郭楞"
189 | },
190 | {
191 | "id": 77,
192 | "spell": "bazhong",
193 | "name": "巴中"
194 | },
195 | {
196 | "id": 78,
197 | "spell": "beihai",
198 | "name": "北海"
199 | },
200 | {
201 | "id": 79,
202 | "spell": "benxi",
203 | "name": "本溪"
204 | },
205 | {
206 | "id": 80,
207 | "spell": "bijie",
208 | "name": "毕节"
209 | },
210 | {
211 | "id": 81,
212 | "spell": "binzhou",
213 | "name": "滨州"
214 | },
215 | {
216 | "id": 82,
217 | "spell": "boertala",
218 | "name": "博尔塔拉"
219 | },
220 | {
221 | "id": 83,
222 | "spell": "bozhou",
223 | "name": "亳州"
224 | },
225 | {
226 | "id": 346,
227 | "spell": "baoying",
228 | "name": "宝应"
229 | },
230 | {
231 | "id": 347,
232 | "spell": "bayan",
233 | "name": "巴彦"
234 | },
235 | {
236 | "id": 348,
237 | "spell": "binhai",
238 | "name": "滨海"
239 | },
240 | {
241 | "id": 349,
242 | "spell": "binxian",
243 | "name": "宾县"
244 | },
245 | {
246 | "id": 350,
247 | "spell": "binyang",
248 | "name": "宾阳"
249 | },
250 | {
251 | "id": 351,
252 | "spell": "bishan",
253 | "name": "璧山"
254 | },
255 | {
256 | "id": 352,
257 | "spell": "boai",
258 | "name": "博爱"
259 | },
260 | {
261 | "id": 353,
262 | "spell": "boluo",
263 | "name": "博罗"
264 | },
265 | {
266 | "id": 354,
267 | "spell": "boxing",
268 | "name": "博兴"
269 | }
270 | ],
271 | "C": [
272 | {
273 | "id": 2,
274 | "spell": "chongqing",
275 | "name": "重庆"
276 | },
277 | {
278 | "id": 5,
279 | "spell": "changchun",
280 | "name": "长春"
281 | },
282 | {
283 | "id": 6,
284 | "spell": "changsha",
285 | "name": "长沙"
286 | },
287 | {
288 | "id": 7,
289 | "spell": "changzhou",
290 | "name": "常州"
291 | },
292 | {
293 | "id": 8,
294 | "spell": "chengdu",
295 | "name": "成都"
296 | },
297 | {
298 | "id": 84,
299 | "spell": "cangzhou",
300 | "name": "沧州"
301 | },
302 | {
303 | "id": 85,
304 | "spell": "changde",
305 | "name": "常德"
306 | },
307 | {
308 | "id": 86,
309 | "spell": "changdu",
310 | "name": "昌都"
311 | },
312 | {
313 | "id": 87,
314 | "spell": "changji",
315 | "name": "昌吉"
316 | },
317 | {
318 | "id": 88,
319 | "spell": "changzhi",
320 | "name": "长治"
321 | },
322 | {
323 | "id": 89,
324 | "spell": "chaohu",
325 | "name": "巢湖"
326 | },
327 | {
328 | "id": 90,
329 | "spell": "chaoyang",
330 | "name": "朝阳"
331 | },
332 | {
333 | "id": 91,
334 | "spell": "chaozhou",
335 | "name": "潮州"
336 | },
337 | {
338 | "id": 92,
339 | "spell": "chengde",
340 | "name": "承德"
341 | },
342 | {
343 | "id": 93,
344 | "spell": "chenzhou",
345 | "name": "郴州"
346 | },
347 | {
348 | "id": 94,
349 | "spell": "chifeng",
350 | "name": "赤峰"
351 | },
352 | {
353 | "id": 95,
354 | "spell": "chizhou",
355 | "name": "池州"
356 | },
357 | {
358 | "id": 96,
359 | "spell": "chongzuo",
360 | "name": "崇左"
361 | },
362 | {
363 | "id": 97,
364 | "spell": "chuxiong",
365 | "name": "楚雄"
366 | },
367 | {
368 | "id": 98,
369 | "spell": "chuzhou",
370 | "name": "滁州"
371 | },
372 | {
373 | "id": 355,
374 | "spell": "cangnan",
375 | "name": "苍南"
376 | },
377 | {
378 | "id": 356,
379 | "spell": "cangshan",
380 | "name": "苍山"
381 | },
382 | {
383 | "id": 357,
384 | "spell": "caoxian",
385 | "name": "曹县"
386 | },
387 | {
388 | "id": 358,
389 | "spell": "changdao",
390 | "name": "长岛"
391 | },
392 | {
393 | "id": 359,
394 | "spell": "changfeng",
395 | "name": "长丰"
396 | },
397 | {
398 | "id": 360,
399 | "spell": "changhai",
400 | "name": "长海"
401 | },
402 | {
403 | "id": 361,
404 | "spell": "changle",
405 | "name": "长乐"
406 | },
407 | {
408 | "id": 362,
409 | "spell": "changle",
410 | "name": "昌乐"
411 | },
412 | {
413 | "id": 363,
414 | "spell": "changshan",
415 | "name": "常山"
416 | },
417 | {
418 | "id": 364,
419 | "spell": "changshu",
420 | "name": "常熟"
421 | },
422 | {
423 | "id": 365,
424 | "spell": "changtai",
425 | "name": "长泰"
426 | },
427 | {
428 | "id": 366,
429 | "spell": "changting",
430 | "name": "长汀"
431 | },
432 | {
433 | "id": 367,
434 | "spell": "changxing",
435 | "name": "长兴"
436 | },
437 | {
438 | "id": 368,
439 | "spell": "changyi",
440 | "name": "昌邑"
441 | },
442 | {
443 | "id": 369,
444 | "spell": "chaoan",
445 | "name": "潮安"
446 | },
447 | {
448 | "id": 370,
449 | "spell": "chenggong",
450 | "name": "呈贡"
451 | },
452 | {
453 | "id": 371,
454 | "spell": "chengkou",
455 | "name": "城口"
456 | },
457 | {
458 | "id": 372,
459 | "spell": "chengwu",
460 | "name": "成武"
461 | },
462 | {
463 | "id": 373,
464 | "spell": "chiping",
465 | "name": "茌平"
466 | },
467 | {
468 | "id": 374,
469 | "spell": "chongren",
470 | "name": "崇仁"
471 | },
472 | {
473 | "id": 375,
474 | "spell": "chongyi",
475 | "name": "崇义"
476 | },
477 | {
478 | "id": 376,
479 | "spell": "chongzhou",
480 | "name": "崇州"
481 | },
482 | {
483 | "id": 377,
484 | "spell": "chunan",
485 | "name": "淳安"
486 | },
487 | {
488 | "id": 378,
489 | "spell": "cixi",
490 | "name": "慈溪"
491 | },
492 | {
493 | "id": 379,
494 | "spell": "conghua",
495 | "name": "从化"
496 | },
497 | {
498 | "id": 380,
499 | "spell": "congyang",
500 | "name": "枞阳"
501 | }
502 | ],
503 | "D": [
504 | {
505 | "id": 9,
506 | "spell": "dalian",
507 | "name": "大连"
508 | },
509 | {
510 | "id": 10,
511 | "spell": "dongguan",
512 | "name": "东莞"
513 | },
514 | {
515 | "id": 99,
516 | "spell": "dali",
517 | "name": "大理"
518 | },
519 | {
520 | "id": 100,
521 | "spell": "dandong",
522 | "name": "丹东"
523 | },
524 | {
525 | "id": 101,
526 | "spell": "daqing",
527 | "name": "大庆"
528 | },
529 | {
530 | "id": 102,
531 | "spell": "datong",
532 | "name": "大同"
533 | },
534 | {
535 | "id": 103,
536 | "spell": "daxinganling",
537 | "name": "大兴安岭"
538 | },
539 | {
540 | "id": 104,
541 | "spell": "dazhou",
542 | "name": "达州"
543 | },
544 | {
545 | "id": 105,
546 | "spell": "dehong",
547 | "name": "德宏"
548 | },
549 | {
550 | "id": 106,
551 | "spell": "deyang",
552 | "name": "德阳"
553 | },
554 | {
555 | "id": 107,
556 | "spell": "dezhou",
557 | "name": "德州"
558 | },
559 | {
560 | "id": 108,
561 | "spell": "dingxi",
562 | "name": "定西"
563 | },
564 | {
565 | "id": 109,
566 | "spell": "diqing",
567 | "name": "迪庆"
568 | },
569 | {
570 | "id": 110,
571 | "spell": "dongying",
572 | "name": "东营"
573 | },
574 | {
575 | "id": 381,
576 | "spell": "dafeng",
577 | "name": "大丰"
578 | },
579 | {
580 | "id": 382,
581 | "spell": "daishan",
582 | "name": "岱山"
583 | },
584 | {
585 | "id": 383,
586 | "spell": "dangshan",
587 | "name": "砀山"
588 | },
589 | {
590 | "id": 384,
591 | "spell": "dangtu",
592 | "name": "当涂"
593 | },
594 | {
595 | "id": 385,
596 | "spell": "danxian",
597 | "name": "单县"
598 | },
599 | {
600 | "id": 386,
601 | "spell": "danyang",
602 | "name": "丹阳"
603 | },
604 | {
605 | "id": 387,
606 | "spell": "dapu",
607 | "name": "大埔"
608 | },
609 | {
610 | "id": 388,
611 | "spell": "datian",
612 | "name": "大田"
613 | },
614 | {
615 | "id": 389,
616 | "spell": "dayi",
617 | "name": "大邑"
618 | },
619 | {
620 | "id": 390,
621 | "spell": "dayu",
622 | "name": "大余"
623 | },
624 | {
625 | "id": 391,
626 | "spell": "dazu",
627 | "name": "大足"
628 | },
629 | {
630 | "id": 392,
631 | "spell": "dean",
632 | "name": "德安"
633 | },
634 | {
635 | "id": 393,
636 | "spell": "dehua",
637 | "name": "德化"
638 | },
639 | {
640 | "id": 394,
641 | "spell": "dehui",
642 | "name": "德惠"
643 | },
644 | {
645 | "id": 395,
646 | "spell": "dengfeng",
647 | "name": "登封"
648 | },
649 | {
650 | "id": 396,
651 | "spell": "deqing",
652 | "name": "德清"
653 | },
654 | {
655 | "id": 397,
656 | "spell": "deqing",
657 | "name": "德庆"
658 | },
659 | {
660 | "id": 398,
661 | "spell": "dexing",
662 | "name": "德兴"
663 | },
664 | {
665 | "id": 399,
666 | "spell": "dianbai",
667 | "name": "电白"
668 | },
669 | {
670 | "id": 400,
671 | "spell": "dianjiang",
672 | "name": "垫江"
673 | },
674 | {
675 | "id": 401,
676 | "spell": "dingnan",
677 | "name": "定南"
678 | },
679 | {
680 | "id": 402,
681 | "spell": "dingtao",
682 | "name": "定陶"
683 | },
684 | {
685 | "id": 403,
686 | "spell": "dingyuan",
687 | "name": "定远"
688 | },
689 | {
690 | "id": 404,
691 | "spell": "donga",
692 | "name": "东阿"
693 | },
694 | {
695 | "id": 405,
696 | "spell": "donghai",
697 | "name": "东海"
698 | },
699 | {
700 | "id": 406,
701 | "spell": "dongming",
702 | "name": "东明"
703 | },
704 | {
705 | "id": 407,
706 | "spell": "dongping",
707 | "name": "东平"
708 | },
709 | {
710 | "id": 408,
711 | "spell": "dongshan",
712 | "name": "东山"
713 | },
714 | {
715 | "id": 409,
716 | "spell": "dongtai",
717 | "name": "东台"
718 | },
719 | {
720 | "id": 410,
721 | "spell": "dongtou",
722 | "name": "洞头"
723 | },
724 | {
725 | "id": 411,
726 | "spell": "dongxiang",
727 | "name": "东乡"
728 | },
729 | {
730 | "id": 412,
731 | "spell": "dongyang",
732 | "name": "东阳"
733 | },
734 | {
735 | "id": 413,
736 | "spell": "dongyuan",
737 | "name": "东源"
738 | },
739 | {
740 | "id": 414,
741 | "spell": "dongzhi",
742 | "name": "东至"
743 | },
744 | {
745 | "id": 415,
746 | "spell": "duchang",
747 | "name": "都昌"
748 | },
749 | {
750 | "id": 416,
751 | "spell": "dujiangyan",
752 | "name": "都江堰"
753 | }
754 | ],
755 | "E": [
756 | {
757 | "id": 111,
758 | "spell": "eerduosi",
759 | "name": "鄂尔多斯"
760 | },
761 | {
762 | "id": 112,
763 | "spell": "enshi",
764 | "name": "恩施"
765 | },
766 | {
767 | "id": 113,
768 | "spell": "ezhou",
769 | "name": "鄂州"
770 | },
771 | {
772 | "id": 417,
773 | "spell": "enping",
774 | "name": "恩平"
775 | }
776 | ],
777 | "F": [
778 | {
779 | "id": 11,
780 | "spell": "foshan",
781 | "name": "佛山"
782 | },
783 | {
784 | "id": 12,
785 | "spell": "fuzhou",
786 | "name": "福州"
787 | },
788 | {
789 | "id": 114,
790 | "spell": "fangchenggang",
791 | "name": "防城港"
792 | },
793 | {
794 | "id": 115,
795 | "spell": "fushun",
796 | "name": "抚顺"
797 | },
798 | {
799 | "id": 116,
800 | "spell": "fuxin",
801 | "name": "阜新"
802 | },
803 | {
804 | "id": 117,
805 | "spell": "fuyang",
806 | "name": "阜阳"
807 | },
808 | {
809 | "id": 118,
810 | "spell": "fuzhou",
811 | "name": "抚州"
812 | },
813 | {
814 | "id": 418,
815 | "spell": "faku",
816 | "name": "法库"
817 | },
818 | {
819 | "id": 419,
820 | "spell": "fanchang",
821 | "name": "繁昌"
822 | },
823 | {
824 | "id": 420,
825 | "spell": "fangzheng",
826 | "name": "方正"
827 | },
828 | {
829 | "id": 421,
830 | "spell": "feicheng",
831 | "name": "肥城"
832 | },
833 | {
834 | "id": 422,
835 | "spell": "feidong",
836 | "name": "肥东"
837 | },
838 | {
839 | "id": 423,
840 | "spell": "feixi",
841 | "name": "肥西"
842 | },
843 | {
844 | "id": 424,
845 | "spell": "feixian",
846 | "name": "费县"
847 | },
848 | {
849 | "id": 425,
850 | "spell": "fengcheng",
851 | "name": "丰城"
852 | },
853 | {
854 | "id": 426,
855 | "spell": "fengdu",
856 | "name": "丰都"
857 | },
858 | {
859 | "id": 427,
860 | "spell": "fenghua",
861 | "name": "奉化"
862 | },
863 | {
864 | "id": 428,
865 | "spell": "fengjie",
866 | "name": "奉节"
867 | },
868 | {
869 | "id": 429,
870 | "spell": "fengkai",
871 | "name": "封开"
872 | },
873 | {
874 | "id": 430,
875 | "spell": "fengshun",
876 | "name": "丰顺"
877 | },
878 | {
879 | "id": 431,
880 | "spell": "fengtai",
881 | "name": "凤台"
882 | },
883 | {
884 | "id": 432,
885 | "spell": "fengxian",
886 | "name": "丰县"
887 | },
888 | {
889 | "id": 433,
890 | "spell": "fengxin",
891 | "name": "奉新"
892 | },
893 | {
894 | "id": 434,
895 | "spell": "fengyang",
896 | "name": "凤阳"
897 | },
898 | {
899 | "id": 435,
900 | "spell": "fenyi",
901 | "name": "分宜"
902 | },
903 | {
904 | "id": 436,
905 | "spell": "fogang",
906 | "name": "佛冈"
907 | },
908 | {
909 | "id": 437,
910 | "spell": "fuan",
911 | "name": "福安"
912 | },
913 | {
914 | "id": 438,
915 | "spell": "fuding",
916 | "name": "福鼎"
917 | },
918 | {
919 | "id": 439,
920 | "spell": "fuliang",
921 | "name": "浮梁"
922 | },
923 | {
924 | "id": 440,
925 | "spell": "fumin",
926 | "name": "富民"
927 | },
928 | {
929 | "id": 441,
930 | "spell": "funan",
931 | "name": "阜南"
932 | },
933 | {
934 | "id": 442,
935 | "spell": "funing",
936 | "name": "阜宁"
937 | },
938 | {
939 | "id": 443,
940 | "spell": "fuqing",
941 | "name": "福清"
942 | },
943 | {
944 | "id": 444,
945 | "spell": "fuyang",
946 | "name": "富阳"
947 | }
948 | ],
949 | "G": [
950 | {
951 | "id": 13,
952 | "spell": "guangzhou",
953 | "name": "广州"
954 | },
955 | {
956 | "id": 14,
957 | "spell": "guiyang",
958 | "name": "贵阳"
959 | },
960 | {
961 | "id": 119,
962 | "spell": "gannan",
963 | "name": "甘南"
964 | },
965 | {
966 | "id": 120,
967 | "spell": "ganzhou",
968 | "name": "赣州"
969 | },
970 | {
971 | "id": 121,
972 | "spell": "ganzi",
973 | "name": "甘孜"
974 | },
975 | {
976 | "id": 122,
977 | "spell": "guangan",
978 | "name": "广安"
979 | },
980 | {
981 | "id": 123,
982 | "spell": "guangyuan",
983 | "name": "广元"
984 | },
985 | {
986 | "id": 124,
987 | "spell": "guigang",
988 | "name": "贵港"
989 | },
990 | {
991 | "id": 125,
992 | "spell": "guilin",
993 | "name": "桂林"
994 | },
995 | {
996 | "id": 126,
997 | "spell": "guoluo",
998 | "name": "果洛"
999 | },
1000 | {
1001 | "id": 127,
1002 | "spell": "guyuan",
1003 | "name": "固原"
1004 | },
1005 | {
1006 | "id": 445,
1007 | "spell": "ganxian",
1008 | "name": "赣县"
1009 | },
1010 | {
1011 | "id": 446,
1012 | "spell": "ganyu",
1013 | "name": "赣榆"
1014 | },
1015 | {
1016 | "id": 447,
1017 | "spell": "gaoan",
1018 | "name": "高安"
1019 | },
1020 | {
1021 | "id": 448,
1022 | "spell": "gaocheng",
1023 | "name": "藁城"
1024 | },
1025 | {
1026 | "id": 449,
1027 | "spell": "gaochun",
1028 | "name": "高淳"
1029 | },
1030 | {
1031 | "id": 450,
1032 | "spell": "gaolan",
1033 | "name": "皋兰"
1034 | },
1035 | {
1036 | "id": 451,
1037 | "spell": "gaoling",
1038 | "name": "高陵"
1039 | },
1040 | {
1041 | "id": 452,
1042 | "spell": "gaomi",
1043 | "name": "高密"
1044 | },
1045 | {
1046 | "id": 453,
1047 | "spell": "gaoqing",
1048 | "name": "高青"
1049 | },
1050 | {
1051 | "id": 454,
1052 | "spell": "gaotang",
1053 | "name": "高唐"
1054 | },
1055 | {
1056 | "id": 455,
1057 | "spell": "gaoyao",
1058 | "name": "高要"
1059 | },
1060 | {
1061 | "id": 456,
1062 | "spell": "gaoyi",
1063 | "name": "高邑"
1064 | },
1065 | {
1066 | "id": 457,
1067 | "spell": "gaoyou",
1068 | "name": "高邮"
1069 | },
1070 | {
1071 | "id": 458,
1072 | "spell": "gaozhou",
1073 | "name": "高州"
1074 | },
1075 | {
1076 | "id": 459,
1077 | "spell": "gongyi",
1078 | "name": "巩义"
1079 | },
1080 | {
1081 | "id": 460,
1082 | "spell": "guangchang",
1083 | "name": "广昌"
1084 | },
1085 | {
1086 | "id": 461,
1087 | "spell": "guangde",
1088 | "name": "广德"
1089 | },
1090 | {
1091 | "id": 462,
1092 | "spell": "guangfeng",
1093 | "name": "广丰"
1094 | },
1095 | {
1096 | "id": 463,
1097 | "spell": "guangning",
1098 | "name": "广宁"
1099 | },
1100 | {
1101 | "id": 464,
1102 | "spell": "guangrao",
1103 | "name": "广饶"
1104 | },
1105 | {
1106 | "id": 465,
1107 | "spell": "guangze",
1108 | "name": "光泽"
1109 | },
1110 | {
1111 | "id": 466,
1112 | "spell": "guannan",
1113 | "name": "灌南"
1114 | },
1115 | {
1116 | "id": 467,
1117 | "spell": "guanxian",
1118 | "name": "冠县"
1119 | },
1120 | {
1121 | "id": 468,
1122 | "spell": "guanyun",
1123 | "name": "灌云"
1124 | },
1125 | {
1126 | "id": 469,
1127 | "spell": "guixi",
1128 | "name": "贵溪"
1129 | },
1130 | {
1131 | "id": 470,
1132 | "spell": "gutian",
1133 | "name": "古田"
1134 | },
1135 | {
1136 | "id": 471,
1137 | "spell": "guzhen",
1138 | "name": "固镇"
1139 | }
1140 | ],
1141 | "H": [
1142 | {
1143 | "id": 15,
1144 | "spell": "haerbin",
1145 | "name": "哈尔滨"
1146 | },
1147 | {
1148 | "id": 16,
1149 | "spell": "haikou",
1150 | "name": "海口"
1151 | },
1152 | {
1153 | "id": 17,
1154 | "spell": "handan",
1155 | "name": "邯郸"
1156 | },
1157 | {
1158 | "id": 18,
1159 | "spell": "hangzhou",
1160 | "name": "杭州"
1161 | },
1162 | {
1163 | "id": 19,
1164 | "spell": "hefei",
1165 | "name": "合肥"
1166 | },
1167 | {
1168 | "id": 20,
1169 | "spell": "huizhou",
1170 | "name": "惠州"
1171 | },
1172 | {
1173 | "id": 128,
1174 | "spell": "haibei",
1175 | "name": "海北"
1176 | },
1177 | {
1178 | "id": 129,
1179 | "spell": "haidong",
1180 | "name": "海东"
1181 | },
1182 | {
1183 | "id": 130,
1184 | "spell": "hainan",
1185 | "name": "海南"
1186 | },
1187 | {
1188 | "id": 131,
1189 | "spell": "haixi",
1190 | "name": "海西"
1191 | },
1192 | {
1193 | "id": 132,
1194 | "spell": "hami",
1195 | "name": "哈密"
1196 | },
1197 | {
1198 | "id": 133,
1199 | "spell": "hanzhong",
1200 | "name": "汉中"
1201 | },
1202 | {
1203 | "id": 134,
1204 | "spell": "hebi",
1205 | "name": "鹤壁"
1206 | },
1207 | {
1208 | "id": 135,
1209 | "spell": "hechi",
1210 | "name": "河池"
1211 | },
1212 | {
1213 | "id": 136,
1214 | "spell": "hegang",
1215 | "name": "鹤岗"
1216 | },
1217 | {
1218 | "id": 137,
1219 | "spell": "heihe",
1220 | "name": "黑河"
1221 | },
1222 | {
1223 | "id": 138,
1224 | "spell": "hengshui",
1225 | "name": "衡水"
1226 | },
1227 | {
1228 | "id": 139,
1229 | "spell": "hengyang",
1230 | "name": "衡阳"
1231 | },
1232 | {
1233 | "id": 140,
1234 | "spell": "hetiandi",
1235 | "name": "和田地"
1236 | },
1237 | {
1238 | "id": 141,
1239 | "spell": "heyuan",
1240 | "name": "河源"
1241 | },
1242 | {
1243 | "id": 142,
1244 | "spell": "heze",
1245 | "name": "菏泽"
1246 | },
1247 | {
1248 | "id": 143,
1249 | "spell": "hezhou",
1250 | "name": "贺州"
1251 | },
1252 | {
1253 | "id": 144,
1254 | "spell": "honghe",
1255 | "name": "红河"
1256 | },
1257 | {
1258 | "id": 145,
1259 | "spell": "huaian",
1260 | "name": "淮安"
1261 | },
1262 | {
1263 | "id": 146,
1264 | "spell": "huaibei",
1265 | "name": "淮北"
1266 | },
1267 | {
1268 | "id": 147,
1269 | "spell": "huaihua",
1270 | "name": "怀化"
1271 | },
1272 | {
1273 | "id": 148,
1274 | "spell": "huainan",
1275 | "name": "淮南"
1276 | },
1277 | {
1278 | "id": 149,
1279 | "spell": "huanggang",
1280 | "name": "黄冈"
1281 | },
1282 | {
1283 | "id": 150,
1284 | "spell": "huangnan",
1285 | "name": "黄南"
1286 | },
1287 | {
1288 | "id": 151,
1289 | "spell": "huangshan",
1290 | "name": "黄山"
1291 | },
1292 | {
1293 | "id": 152,
1294 | "spell": "huangshi",
1295 | "name": "黄石"
1296 | },
1297 | {
1298 | "id": 153,
1299 | "spell": "huhehaote",
1300 | "name": "呼和浩特"
1301 | },
1302 | {
1303 | "id": 154,
1304 | "spell": "huludao",
1305 | "name": "葫芦岛"
1306 | },
1307 | {
1308 | "id": 155,
1309 | "spell": "hulunbeier",
1310 | "name": "呼伦贝尔"
1311 | },
1312 | {
1313 | "id": 156,
1314 | "spell": "huzhou",
1315 | "name": "湖州"
1316 | },
1317 | {
1318 | "id": 472,
1319 | "spell": "haian",
1320 | "name": "海安"
1321 | },
1322 | {
1323 | "id": 473,
1324 | "spell": "haifeng",
1325 | "name": "海丰"
1326 | },
1327 | {
1328 | "id": 474,
1329 | "spell": "haimen",
1330 | "name": "海门"
1331 | },
1332 | {
1333 | "id": 475,
1334 | "spell": "haining",
1335 | "name": "海宁"
1336 | },
1337 | {
1338 | "id": 476,
1339 | "spell": "haiyan",
1340 | "name": "海盐"
1341 | },
1342 | {
1343 | "id": 477,
1344 | "spell": "haiyang",
1345 | "name": "海阳"
1346 | },
1347 | {
1348 | "id": 478,
1349 | "spell": "hanshan",
1350 | "name": "含山"
1351 | },
1352 | {
1353 | "id": 479,
1354 | "spell": "hechuan",
1355 | "name": "合川"
1356 | },
1357 | {
1358 | "id": 480,
1359 | "spell": "hengfeng",
1360 | "name": "横峰"
1361 | },
1362 | {
1363 | "id": 481,
1364 | "spell": "hengxian",
1365 | "name": "横县"
1366 | },
1367 | {
1368 | "id": 482,
1369 | "spell": "heping",
1370 | "name": "和平"
1371 | },
1372 | {
1373 | "id": 483,
1374 | "spell": "heshan",
1375 | "name": "鹤山"
1376 | },
1377 | {
1378 | "id": 484,
1379 | "spell": "hexian",
1380 | "name": "和县"
1381 | },
1382 | {
1383 | "id": 485,
1384 | "spell": "hongze",
1385 | "name": "洪泽"
1386 | },
1387 | {
1388 | "id": 486,
1389 | "spell": "huaan",
1390 | "name": "华安"
1391 | },
1392 | {
1393 | "id": 487,
1394 | "spell": "huadian",
1395 | "name": "桦甸"
1396 | },
1397 | {
1398 | "id": 488,
1399 | "spell": "huaiji",
1400 | "name": "怀集"
1401 | },
1402 | {
1403 | "id": 489,
1404 | "spell": "huaining",
1405 | "name": "怀宁"
1406 | },
1407 | {
1408 | "id": 490,
1409 | "spell": "huaiyuan",
1410 | "name": "怀远"
1411 | },
1412 | {
1413 | "id": 491,
1414 | "spell": "huantai",
1415 | "name": "桓台"
1416 | },
1417 | {
1418 | "id": 492,
1419 | "spell": "huazhou",
1420 | "name": "化州"
1421 | },
1422 | {
1423 | "id": 493,
1424 | "spell": "huian",
1425 | "name": "惠安"
1426 | },
1427 | {
1428 | "id": 494,
1429 | "spell": "huichang",
1430 | "name": "会昌"
1431 | },
1432 | {
1433 | "id": 495,
1434 | "spell": "huidong",
1435 | "name": "惠东"
1436 | },
1437 | {
1438 | "id": 496,
1439 | "spell": "huilai",
1440 | "name": "惠来"
1441 | },
1442 | {
1443 | "id": 497,
1444 | "spell": "huimin",
1445 | "name": "惠民"
1446 | },
1447 | {
1448 | "id": 498,
1449 | "spell": "hukou",
1450 | "name": "湖口"
1451 | },
1452 | {
1453 | "id": 499,
1454 | "spell": "hulan",
1455 | "name": "呼兰"
1456 | },
1457 | {
1458 | "id": 500,
1459 | "spell": "huoqiu",
1460 | "name": "霍邱"
1461 | },
1462 | {
1463 | "id": 501,
1464 | "spell": "huoshan",
1465 | "name": "霍山"
1466 | },
1467 | {
1468 | "id": 502,
1469 | "spell": "huxian",
1470 | "name": "户县"
1471 | }
1472 | ],
1473 | "J": [
1474 | {
1475 | "id": 21,
1476 | "spell": "jiaozuo",
1477 | "name": "焦作"
1478 | },
1479 | {
1480 | "id": 22,
1481 | "spell": "jiaxing",
1482 | "name": "嘉兴"
1483 | },
1484 | {
1485 | "id": 23,
1486 | "spell": "jilin",
1487 | "name": "吉林"
1488 | },
1489 | {
1490 | "id": 24,
1491 | "spell": "jinan",
1492 | "name": "济南"
1493 | },
1494 | {
1495 | "id": 157,
1496 | "spell": "jiamusi",
1497 | "name": "佳木斯"
1498 | },
1499 | {
1500 | "id": 158,
1501 | "spell": "jiangmen",
1502 | "name": "江门"
1503 | },
1504 | {
1505 | "id": 159,
1506 | "spell": "jian",
1507 | "name": "吉安"
1508 | },
1509 | {
1510 | "id": 160,
1511 | "spell": "jiayuguan",
1512 | "name": "嘉峪关"
1513 | },
1514 | {
1515 | "id": 161,
1516 | "spell": "jieyang",
1517 | "name": "揭阳"
1518 | },
1519 | {
1520 | "id": 162,
1521 | "spell": "jinchang",
1522 | "name": "金昌"
1523 | },
1524 | {
1525 | "id": 163,
1526 | "spell": "jincheng",
1527 | "name": "晋城"
1528 | },
1529 | {
1530 | "id": 164,
1531 | "spell": "jingdezhen",
1532 | "name": "景德镇"
1533 | },
1534 | {
1535 | "id": 165,
1536 | "spell": "jingmen",
1537 | "name": "荆门"
1538 | },
1539 | {
1540 | "id": 166,
1541 | "spell": "jingzhou",
1542 | "name": "荆州"
1543 | },
1544 | {
1545 | "id": 167,
1546 | "spell": "jinhua",
1547 | "name": "金华"
1548 | },
1549 | {
1550 | "id": 168,
1551 | "spell": "jining",
1552 | "name": "济宁"
1553 | },
1554 | {
1555 | "id": 169,
1556 | "spell": "jinzhong",
1557 | "name": "晋中"
1558 | },
1559 | {
1560 | "id": 170,
1561 | "spell": "jinzhou",
1562 | "name": "锦州"
1563 | },
1564 | {
1565 | "id": 171,
1566 | "spell": "jiujiang",
1567 | "name": "九江"
1568 | },
1569 | {
1570 | "id": 172,
1571 | "spell": "jiuquan",
1572 | "name": "酒泉"
1573 | },
1574 | {
1575 | "id": 173,
1576 | "spell": "jixi",
1577 | "name": "鸡西"
1578 | },
1579 | {
1580 | "id": 503,
1581 | "spell": "jiande",
1582 | "name": "建德"
1583 | },
1584 | {
1585 | "id": 504,
1586 | "spell": "jiangdu",
1587 | "name": "江都"
1588 | },
1589 | {
1590 | "id": 505,
1591 | "spell": "jiangjin",
1592 | "name": "江津"
1593 | },
1594 | {
1595 | "id": 506,
1596 | "spell": "jiangle",
1597 | "name": "将乐"
1598 | },
1599 | {
1600 | "id": 507,
1601 | "spell": "jiangshan",
1602 | "name": "江山"
1603 | },
1604 | {
1605 | "id": 508,
1606 | "spell": "jiangyan",
1607 | "name": "姜堰"
1608 | },
1609 | {
1610 | "id": 509,
1611 | "spell": "jiangyin",
1612 | "name": "江阴"
1613 | },
1614 | {
1615 | "id": 510,
1616 | "spell": "jianhu",
1617 | "name": "建湖"
1618 | },
1619 | {
1620 | "id": 511,
1621 | "spell": "jianning",
1622 | "name": "建宁"
1623 | },
1624 | {
1625 | "id": 512,
1626 | "spell": "jianou",
1627 | "name": "建瓯"
1628 | },
1629 | {
1630 | "id": 513,
1631 | "spell": "jianyang",
1632 | "name": "建阳"
1633 | },
1634 | {
1635 | "id": 514,
1636 | "spell": "jian",
1637 | "name": "吉安"
1638 | },
1639 | {
1640 | "id": 515,
1641 | "spell": "jiaohe",
1642 | "name": "蛟河"
1643 | },
1644 | {
1645 | "id": 516,
1646 | "spell": "jiaoling",
1647 | "name": "蕉岭"
1648 | },
1649 | {
1650 | "id": 517,
1651 | "spell": "jiaonan",
1652 | "name": "胶南"
1653 | },
1654 | {
1655 | "id": 518,
1656 | "spell": "jiaozhou",
1657 | "name": "胶州"
1658 | },
1659 | {
1660 | "id": 519,
1661 | "spell": "jiashan",
1662 | "name": "嘉善"
1663 | },
1664 | {
1665 | "id": 520,
1666 | "spell": "jiaxiang",
1667 | "name": "嘉祥"
1668 | },
1669 | {
1670 | "id": 521,
1671 | "spell": "jiedong",
1672 | "name": "揭东"
1673 | },
1674 | {
1675 | "id": 522,
1676 | "spell": "jieshou",
1677 | "name": "界首"
1678 | },
1679 | {
1680 | "id": 523,
1681 | "spell": "jiexi",
1682 | "name": "揭西"
1683 | },
1684 | {
1685 | "id": 524,
1686 | "spell": "jimo",
1687 | "name": "即墨"
1688 | },
1689 | {
1690 | "id": 525,
1691 | "spell": "jingan",
1692 | "name": "靖安"
1693 | },
1694 | {
1695 | "id": 526,
1696 | "spell": "jingde",
1697 | "name": "旌德"
1698 | },
1699 | {
1700 | "id": 527,
1701 | "spell": "jinggangshan",
1702 | "name": "井冈山"
1703 | },
1704 | {
1705 | "id": 528,
1706 | "spell": "jingjiang",
1707 | "name": "靖江"
1708 | },
1709 | {
1710 | "id": 529,
1711 | "spell": "jingning",
1712 | "name": "景宁"
1713 | },
1714 | {
1715 | "id": 530,
1716 | "spell": "jingxian",
1717 | "name": "泾县"
1718 | },
1719 | {
1720 | "id": 531,
1721 | "spell": "jingxing",
1722 | "name": "井陉"
1723 | },
1724 | {
1725 | "id": 532,
1726 | "spell": "jinhu",
1727 | "name": "金湖"
1728 | },
1729 | {
1730 | "id": 533,
1731 | "spell": "jinjiang",
1732 | "name": "晋江"
1733 | },
1734 | {
1735 | "id": 534,
1736 | "spell": "jinmen",
1737 | "name": "金门"
1738 | },
1739 | {
1740 | "id": 535,
1741 | "spell": "jinning",
1742 | "name": "晋宁"
1743 | },
1744 | {
1745 | "id": 536,
1746 | "spell": "jintan",
1747 | "name": "金坛"
1748 | },
1749 | {
1750 | "id": 537,
1751 | "spell": "jintang",
1752 | "name": "金堂"
1753 | },
1754 | {
1755 | "id": 538,
1756 | "spell": "jinxian",
1757 | "name": "进贤"
1758 | },
1759 | {
1760 | "id": 539,
1761 | "spell": "jinxi",
1762 | "name": "金溪"
1763 | },
1764 | {
1765 | "id": 540,
1766 | "spell": "jinxiang",
1767 | "name": "金乡"
1768 | },
1769 | {
1770 | "id": 541,
1771 | "spell": "jinyun",
1772 | "name": "缙云"
1773 | },
1774 | {
1775 | "id": 542,
1776 | "spell": "jinzhai",
1777 | "name": "金寨"
1778 | },
1779 | {
1780 | "id": 543,
1781 | "spell": "jinzhou",
1782 | "name": "晋州"
1783 | },
1784 | {
1785 | "id": 544,
1786 | "spell": "jishui",
1787 | "name": "吉水"
1788 | },
1789 | {
1790 | "id": 545,
1791 | "spell": "jiujiang",
1792 | "name": "九江"
1793 | },
1794 | {
1795 | "id": 546,
1796 | "spell": "jiutai",
1797 | "name": "九台"
1798 | },
1799 | {
1800 | "id": 547,
1801 | "spell": "jixi",
1802 | "name": "绩溪"
1803 | },
1804 | {
1805 | "id": 548,
1806 | "spell": "jiyang",
1807 | "name": "济阳"
1808 | },
1809 | {
1810 | "id": 549,
1811 | "spell": "jiyuan",
1812 | "name": "济源"
1813 | },
1814 | {
1815 | "id": 550,
1816 | "spell": "juancheng",
1817 | "name": "鄄城"
1818 | },
1819 | {
1820 | "id": 551,
1821 | "spell": "junan",
1822 | "name": "莒南"
1823 | },
1824 | {
1825 | "id": 552,
1826 | "spell": "jurong",
1827 | "name": "句容"
1828 | },
1829 | {
1830 | "id": 553,
1831 | "spell": "juxian",
1832 | "name": "莒县"
1833 | },
1834 | {
1835 | "id": 554,
1836 | "spell": "juye",
1837 | "name": "巨野"
1838 | }
1839 | ],
1840 | "K": [
1841 | {
1842 | "id": 25,
1843 | "spell": "kunming",
1844 | "name": "昆明"
1845 | },
1846 | {
1847 | "id": 174,
1848 | "spell": "kaifeng",
1849 | "name": "开封"
1850 | },
1851 | {
1852 | "id": 175,
1853 | "spell": "kashidi",
1854 | "name": "喀什地"
1855 | },
1856 | {
1857 | "id": 176,
1858 | "spell": "kelamayi",
1859 | "name": "克拉玛依"
1860 | },
1861 | {
1862 | "id": 177,
1863 | "spell": "kezile",
1864 | "name": "克孜勒"
1865 | },
1866 | {
1867 | "id": 555,
1868 | "spell": "kaihua",
1869 | "name": "开化"
1870 | },
1871 | {
1872 | "id": 556,
1873 | "spell": "kaiping",
1874 | "name": "开平"
1875 | },
1876 | {
1877 | "id": 557,
1878 | "spell": "kaixian",
1879 | "name": "开县"
1880 | },
1881 | {
1882 | "id": 558,
1883 | "spell": "kaiyang",
1884 | "name": "开阳"
1885 | },
1886 | {
1887 | "id": 559,
1888 | "spell": "kangping",
1889 | "name": "康平"
1890 | },
1891 | {
1892 | "id": 560,
1893 | "spell": "kenli",
1894 | "name": "垦利"
1895 | },
1896 | {
1897 | "id": 561,
1898 | "spell": "kunshan",
1899 | "name": "昆山"
1900 | }
1901 | ],
1902 | "L": [
1903 | {
1904 | "id": 26,
1905 | "spell": "lanzhou",
1906 | "name": "兰州"
1907 | },
1908 | {
1909 | "id": 27,
1910 | "spell": "liuzhou",
1911 | "name": "柳州"
1912 | },
1913 | {
1914 | "id": 28,
1915 | "spell": "luoyang",
1916 | "name": "洛阳"
1917 | },
1918 | {
1919 | "id": 178,
1920 | "spell": "laibin",
1921 | "name": "来宾"
1922 | },
1923 | {
1924 | "id": 179,
1925 | "spell": "laiwu",
1926 | "name": "莱芜"
1927 | },
1928 | {
1929 | "id": 180,
1930 | "spell": "langfang",
1931 | "name": "廊坊"
1932 | },
1933 | {
1934 | "id": 181,
1935 | "spell": "lasa",
1936 | "name": "拉萨"
1937 | },
1938 | {
1939 | "id": 182,
1940 | "spell": "leshan",
1941 | "name": "乐山"
1942 | },
1943 | {
1944 | "id": 183,
1945 | "spell": "liangshan",
1946 | "name": "凉山"
1947 | },
1948 | {
1949 | "id": 184,
1950 | "spell": "lianyungang",
1951 | "name": "连云港"
1952 | },
1953 | {
1954 | "id": 185,
1955 | "spell": "liaocheng",
1956 | "name": "聊城"
1957 | },
1958 | {
1959 | "id": 186,
1960 | "spell": "liaoyang",
1961 | "name": "辽阳"
1962 | },
1963 | {
1964 | "id": 187,
1965 | "spell": "liaoyuan",
1966 | "name": "辽源"
1967 | },
1968 | {
1969 | "id": 188,
1970 | "spell": "lijiang",
1971 | "name": "丽江"
1972 | },
1973 | {
1974 | "id": 189,
1975 | "spell": "lincang",
1976 | "name": "临沧"
1977 | },
1978 | {
1979 | "id": 190,
1980 | "spell": "linfen",
1981 | "name": "临汾"
1982 | },
1983 | {
1984 | "id": 191,
1985 | "spell": "linxia",
1986 | "name": "临夏"
1987 | },
1988 | {
1989 | "id": 192,
1990 | "spell": "linyi",
1991 | "name": "临沂"
1992 | },
1993 | {
1994 | "id": 193,
1995 | "spell": "linzhi",
1996 | "name": "林芝"
1997 | },
1998 | {
1999 | "id": 194,
2000 | "spell": "lishui",
2001 | "name": "丽水"
2002 | },
2003 | {
2004 | "id": 195,
2005 | "spell": "liuan",
2006 | "name": "六安"
2007 | },
2008 | {
2009 | "id": 196,
2010 | "spell": "liupanshui",
2011 | "name": "六盘水"
2012 | },
2013 | {
2014 | "id": 197,
2015 | "spell": "longnan",
2016 | "name": "陇南"
2017 | },
2018 | {
2019 | "id": 198,
2020 | "spell": "longyan",
2021 | "name": "龙岩"
2022 | },
2023 | {
2024 | "id": 199,
2025 | "spell": "loudi",
2026 | "name": "娄底"
2027 | },
2028 | {
2029 | "id": 200,
2030 | "spell": "luohe",
2031 | "name": "漯河"
2032 | },
2033 | {
2034 | "id": 201,
2035 | "spell": "luzhou",
2036 | "name": "泸州"
2037 | },
2038 | {
2039 | "id": 202,
2040 | "spell": "lvliang",
2041 | "name": "吕梁"
2042 | },
2043 | {
2044 | "id": 562,
2045 | "spell": "laian",
2046 | "name": "来安"
2047 | },
2048 | {
2049 | "id": 563,
2050 | "spell": "laixi",
2051 | "name": "莱西"
2052 | },
2053 | {
2054 | "id": 564,
2055 | "spell": "laiyang",
2056 | "name": "莱阳"
2057 | },
2058 | {
2059 | "id": 565,
2060 | "spell": "laizhou",
2061 | "name": "莱州"
2062 | },
2063 | {
2064 | "id": 566,
2065 | "spell": "langxi",
2066 | "name": "郎溪"
2067 | },
2068 | {
2069 | "id": 567,
2070 | "spell": "lantian",
2071 | "name": "蓝田"
2072 | },
2073 | {
2074 | "id": 568,
2075 | "spell": "lanxi",
2076 | "name": "兰溪"
2077 | },
2078 | {
2079 | "id": 569,
2080 | "spell": "lean",
2081 | "name": "乐安"
2082 | },
2083 | {
2084 | "id": 570,
2085 | "spell": "lechang",
2086 | "name": "乐昌"
2087 | },
2088 | {
2089 | "id": 571,
2090 | "spell": "leizhou",
2091 | "name": "雷州"
2092 | },
2093 | {
2094 | "id": 572,
2095 | "spell": "leling",
2096 | "name": "乐陵"
2097 | },
2098 | {
2099 | "id": 573,
2100 | "spell": "leping",
2101 | "name": "乐平"
2102 | },
2103 | {
2104 | "id": 574,
2105 | "spell": "leqing",
2106 | "name": "乐清"
2107 | },
2108 | {
2109 | "id": 575,
2110 | "spell": "leting",
2111 | "name": "乐亭"
2112 | },
2113 | {
2114 | "id": 576,
2115 | "spell": "liancheng",
2116 | "name": "连城"
2117 | },
2118 | {
2119 | "id": 577,
2120 | "spell": "liangping",
2121 | "name": "梁平"
2122 | },
2123 | {
2124 | "id": 578,
2125 | "spell": "liangshan",
2126 | "name": "梁山"
2127 | },
2128 | {
2129 | "id": 579,
2130 | "spell": "lianhua",
2131 | "name": "莲花"
2132 | },
2133 | {
2134 | "id": 580,
2135 | "spell": "lianjiang",
2136 | "name": "连江"
2137 | },
2138 | {
2139 | "id": 581,
2140 | "spell": "lianjiang",
2141 | "name": "廉江"
2142 | },
2143 | {
2144 | "id": 582,
2145 | "spell": "liannan",
2146 | "name": "连南"
2147 | },
2148 | {
2149 | "id": 583,
2150 | "spell": "lianping",
2151 | "name": "连平"
2152 | },
2153 | {
2154 | "id": 584,
2155 | "spell": "lianshan",
2156 | "name": "连山"
2157 | },
2158 | {
2159 | "id": 585,
2160 | "spell": "lianshui",
2161 | "name": "涟水"
2162 | },
2163 | {
2164 | "id": 586,
2165 | "spell": "lianzhou",
2166 | "name": "连州"
2167 | },
2168 | {
2169 | "id": 587,
2170 | "spell": "liaozhong",
2171 | "name": "辽中"
2172 | },
2173 | {
2174 | "id": 588,
2175 | "spell": "lichuan",
2176 | "name": "黎川"
2177 | },
2178 | {
2179 | "id": 589,
2180 | "spell": "lijin",
2181 | "name": "利津"
2182 | },
2183 | {
2184 | "id": 590,
2185 | "spell": "linan",
2186 | "name": "临安"
2187 | },
2188 | {
2189 | "id": 591,
2190 | "spell": "lingbi",
2191 | "name": "灵璧"
2192 | },
2193 | {
2194 | "id": 592,
2195 | "spell": "lingshou",
2196 | "name": "灵寿"
2197 | },
2198 | {
2199 | "id": 593,
2200 | "spell": "lingxian",
2201 | "name": "陵县"
2202 | },
2203 | {
2204 | "id": 594,
2205 | "spell": "linhai",
2206 | "name": "临海"
2207 | },
2208 | {
2209 | "id": 595,
2210 | "spell": "linqing",
2211 | "name": "临清"
2212 | },
2213 | {
2214 | "id": 596,
2215 | "spell": "linquan",
2216 | "name": "临泉"
2217 | },
2218 | {
2219 | "id": 597,
2220 | "spell": "linqu",
2221 | "name": "临朐"
2222 | },
2223 | {
2224 | "id": 598,
2225 | "spell": "linshu",
2226 | "name": "临沭"
2227 | },
2228 | {
2229 | "id": 599,
2230 | "spell": "linyi",
2231 | "name": "临邑"
2232 | },
2233 | {
2234 | "id": 600,
2235 | "spell": "lishui",
2236 | "name": "溧水"
2237 | },
2238 | {
2239 | "id": 601,
2240 | "spell": "liucheng",
2241 | "name": "柳城"
2242 | },
2243 | {
2244 | "id": 602,
2245 | "spell": "liujiang",
2246 | "name": "柳江"
2247 | },
2248 | {
2249 | "id": 603,
2250 | "spell": "liuyang",
2251 | "name": "浏阳"
2252 | },
2253 | {
2254 | "id": 604,
2255 | "spell": "lixin",
2256 | "name": "利辛"
2257 | },
2258 | {
2259 | "id": 605,
2260 | "spell": "liyang",
2261 | "name": "溧阳"
2262 | },
2263 | {
2264 | "id": 606,
2265 | "spell": "longan",
2266 | "name": "隆安"
2267 | },
2268 | {
2269 | "id": 607,
2270 | "spell": "longchuan",
2271 | "name": "龙川"
2272 | },
2273 | {
2274 | "id": 608,
2275 | "spell": "longhai",
2276 | "name": "龙海"
2277 | },
2278 | {
2279 | "id": 609,
2280 | "spell": "longkou",
2281 | "name": "龙口"
2282 | },
2283 | {
2284 | "id": 610,
2285 | "spell": "longmen",
2286 | "name": "龙门"
2287 | },
2288 | {
2289 | "id": 611,
2290 | "spell": "longnan",
2291 | "name": "龙南"
2292 | },
2293 | {
2294 | "id": 612,
2295 | "spell": "longquan",
2296 | "name": "龙泉"
2297 | },
2298 | {
2299 | "id": 613,
2300 | "spell": "longyou",
2301 | "name": "龙游"
2302 | },
2303 | {
2304 | "id": 614,
2305 | "spell": "luancheng",
2306 | "name": "栾城"
2307 | },
2308 | {
2309 | "id": 615,
2310 | "spell": "luanchuan",
2311 | "name": "栾川"
2312 | },
2313 | {
2314 | "id": 616,
2315 | "spell": "luannan",
2316 | "name": "滦南"
2317 | },
2318 | {
2319 | "id": 617,
2320 | "spell": "luanxian",
2321 | "name": "滦县"
2322 | },
2323 | {
2324 | "id": 618,
2325 | "spell": "lufeng",
2326 | "name": "陆丰"
2327 | },
2328 | {
2329 | "id": 619,
2330 | "spell": "luhe",
2331 | "name": "陆河"
2332 | },
2333 | {
2334 | "id": 620,
2335 | "spell": "lujiang",
2336 | "name": "庐江"
2337 | },
2338 | {
2339 | "id": 621,
2340 | "spell": "luoding",
2341 | "name": "罗定"
2342 | },
2343 | {
2344 | "id": 622,
2345 | "spell": "luoning",
2346 | "name": "洛宁"
2347 | },
2348 | {
2349 | "id": 623,
2350 | "spell": "luoyuan",
2351 | "name": "罗源"
2352 | },
2353 | {
2354 | "id": 624,
2355 | "spell": "luquan",
2356 | "name": "鹿泉"
2357 | },
2358 | {
2359 | "id": 625,
2360 | "spell": "luquan",
2361 | "name": "禄劝"
2362 | },
2363 | {
2364 | "id": 626,
2365 | "spell": "luxi",
2366 | "name": "芦溪"
2367 | },
2368 | {
2369 | "id": 627,
2370 | "spell": "luzhai",
2371 | "name": "鹿寨"
2372 | }
2373 | ],
2374 | "M": [
2375 | {
2376 | "id": 203,
2377 | "spell": "maanshan",
2378 | "name": "马鞍山"
2379 | },
2380 | {
2381 | "id": 204,
2382 | "spell": "maoming",
2383 | "name": "茂名"
2384 | },
2385 | {
2386 | "id": 205,
2387 | "spell": "meishan",
2388 | "name": "眉山"
2389 | },
2390 | {
2391 | "id": 206,
2392 | "spell": "meizhou",
2393 | "name": "梅州"
2394 | },
2395 | {
2396 | "id": 207,
2397 | "spell": "mianyang",
2398 | "name": "绵阳"
2399 | },
2400 | {
2401 | "id": 208,
2402 | "spell": "mudanjiang",
2403 | "name": "牡丹江"
2404 | },
2405 | {
2406 | "id": 628,
2407 | "spell": "mashan",
2408 | "name": "马山"
2409 | },
2410 | {
2411 | "id": 629,
2412 | "spell": "meixian",
2413 | "name": "梅县"
2414 | },
2415 | {
2416 | "id": 630,
2417 | "spell": "mengcheng",
2418 | "name": "蒙城"
2419 | },
2420 | {
2421 | "id": 631,
2422 | "spell": "mengjin",
2423 | "name": "孟津"
2424 | },
2425 | {
2426 | "id": 632,
2427 | "spell": "mengyin",
2428 | "name": "蒙阴"
2429 | },
2430 | {
2431 | "id": 633,
2432 | "spell": "mengzhou",
2433 | "name": "孟州"
2434 | },
2435 | {
2436 | "id": 634,
2437 | "spell": "mingguang",
2438 | "name": "明光"
2439 | },
2440 | {
2441 | "id": 635,
2442 | "spell": "mingxi",
2443 | "name": "明溪"
2444 | },
2445 | {
2446 | "id": 636,
2447 | "spell": "minhou",
2448 | "name": "闽侯"
2449 | },
2450 | {
2451 | "id": 637,
2452 | "spell": "minqing",
2453 | "name": "闽清"
2454 | },
2455 | {
2456 | "id": 638,
2457 | "spell": "mulan",
2458 | "name": "木兰"
2459 | }
2460 | ],
2461 | "N": [
2462 | {
2463 | "id": 29,
2464 | "spell": "nanchang",
2465 | "name": "南昌"
2466 | },
2467 | {
2468 | "id": 30,
2469 | "spell": "nanjing",
2470 | "name": "南京"
2471 | },
2472 | {
2473 | "id": 31,
2474 | "spell": "nanning",
2475 | "name": "南宁"
2476 | },
2477 | {
2478 | "id": 32,
2479 | "spell": "nantong",
2480 | "name": "南通"
2481 | },
2482 | {
2483 | "id": 33,
2484 | "spell": "ningbo",
2485 | "name": "宁波"
2486 | },
2487 | {
2488 | "id": 209,
2489 | "spell": "nanchong",
2490 | "name": "南充"
2491 | },
2492 | {
2493 | "id": 210,
2494 | "spell": "nanping",
2495 | "name": "南平"
2496 | },
2497 | {
2498 | "id": 211,
2499 | "spell": "nanyang",
2500 | "name": "南阳"
2501 | },
2502 | {
2503 | "id": 212,
2504 | "spell": "naqu",
2505 | "name": "那曲"
2506 | },
2507 | {
2508 | "id": 213,
2509 | "spell": "neijiang",
2510 | "name": "内江"
2511 | },
2512 | {
2513 | "id": 214,
2514 | "spell": "ningde",
2515 | "name": "宁德"
2516 | },
2517 | {
2518 | "id": 215,
2519 | "spell": "nujiang",
2520 | "name": "怒江"
2521 | },
2522 | {
2523 | "id": 639,
2524 | "spell": "nanan",
2525 | "name": "南安"
2526 | },
2527 | {
2528 | "id": 640,
2529 | "spell": "nanao",
2530 | "name": "南澳"
2531 | },
2532 | {
2533 | "id": 641,
2534 | "spell": "nancheng",
2535 | "name": "南城"
2536 | },
2537 | {
2538 | "id": 642,
2539 | "spell": "nanchuan",
2540 | "name": "南川"
2541 | },
2542 | {
2543 | "id": 643,
2544 | "spell": "nanfeng",
2545 | "name": "南丰"
2546 | },
2547 | {
2548 | "id": 644,
2549 | "spell": "nanjing",
2550 | "name": "南靖"
2551 | },
2552 | {
2553 | "id": 645,
2554 | "spell": "nankang",
2555 | "name": "南康"
2556 | },
2557 | {
2558 | "id": 646,
2559 | "spell": "nanling",
2560 | "name": "南陵"
2561 | },
2562 | {
2563 | "id": 647,
2564 | "spell": "nanxiong",
2565 | "name": "南雄"
2566 | },
2567 | {
2568 | "id": 648,
2569 | "spell": "ningdu",
2570 | "name": "宁都"
2571 | },
2572 | {
2573 | "id": 649,
2574 | "spell": "ningguo",
2575 | "name": "宁国"
2576 | },
2577 | {
2578 | "id": 650,
2579 | "spell": "ninghai",
2580 | "name": "宁海"
2581 | },
2582 | {
2583 | "id": 651,
2584 | "spell": "ninghua",
2585 | "name": "宁化"
2586 | },
2587 | {
2588 | "id": 652,
2589 | "spell": "ningjin",
2590 | "name": "宁津"
2591 | },
2592 | {
2593 | "id": 653,
2594 | "spell": "ningxiang",
2595 | "name": "宁乡"
2596 | },
2597 | {
2598 | "id": 654,
2599 | "spell": "ningyang",
2600 | "name": "宁阳"
2601 | },
2602 | {
2603 | "id": 655,
2604 | "spell": "nongan",
2605 | "name": "农安"
2606 | }
2607 | ],
2608 | "P": [
2609 | {
2610 | "id": 216,
2611 | "spell": "panjin",
2612 | "name": "盘锦"
2613 | },
2614 | {
2615 | "id": 217,
2616 | "spell": "panzhihua",
2617 | "name": "攀枝花"
2618 | },
2619 | {
2620 | "id": 218,
2621 | "spell": "pingdingshan",
2622 | "name": "平顶山"
2623 | },
2624 | {
2625 | "id": 219,
2626 | "spell": "pingliang",
2627 | "name": "平凉"
2628 | },
2629 | {
2630 | "id": 220,
2631 | "spell": "pingxiang",
2632 | "name": "萍乡"
2633 | },
2634 | {
2635 | "id": 221,
2636 | "spell": "puer",
2637 | "name": "普洱"
2638 | },
2639 | {
2640 | "id": 222,
2641 | "spell": "putian",
2642 | "name": "莆田"
2643 | },
2644 | {
2645 | "id": 223,
2646 | "spell": "puyang",
2647 | "name": "濮阳"
2648 | },
2649 | {
2650 | "id": 656,
2651 | "spell": "panan",
2652 | "name": "磐安"
2653 | },
2654 | {
2655 | "id": 657,
2656 | "spell": "panshi",
2657 | "name": "磐石"
2658 | },
2659 | {
2660 | "id": 658,
2661 | "spell": "peixian",
2662 | "name": "沛县"
2663 | },
2664 | {
2665 | "id": 659,
2666 | "spell": "penglai",
2667 | "name": "蓬莱"
2668 | },
2669 | {
2670 | "id": 660,
2671 | "spell": "pengshui",
2672 | "name": "彭水"
2673 | },
2674 | {
2675 | "id": 661,
2676 | "spell": "pengze",
2677 | "name": "彭泽"
2678 | },
2679 | {
2680 | "id": 662,
2681 | "spell": "pengzhou",
2682 | "name": "彭州"
2683 | },
2684 | {
2685 | "id": 663,
2686 | "spell": "pingdu",
2687 | "name": "平度"
2688 | },
2689 | {
2690 | "id": 664,
2691 | "spell": "pinghe",
2692 | "name": "平和"
2693 | },
2694 | {
2695 | "id": 665,
2696 | "spell": "pinghu",
2697 | "name": "平湖"
2698 | },
2699 | {
2700 | "id": 666,
2701 | "spell": "pingnan",
2702 | "name": "屏南"
2703 | },
2704 | {
2705 | "id": 667,
2706 | "spell": "pingshan",
2707 | "name": "平山"
2708 | },
2709 | {
2710 | "id": 668,
2711 | "spell": "pingtan",
2712 | "name": "平潭"
2713 | },
2714 | {
2715 | "id": 669,
2716 | "spell": "pingyang",
2717 | "name": "平阳"
2718 | },
2719 | {
2720 | "id": 670,
2721 | "spell": "pingyin",
2722 | "name": "平阴"
2723 | },
2724 | {
2725 | "id": 671,
2726 | "spell": "pingyi",
2727 | "name": "平邑"
2728 | },
2729 | {
2730 | "id": 672,
2731 | "spell": "pingyuan",
2732 | "name": "平原"
2733 | },
2734 | {
2735 | "id": 673,
2736 | "spell": "pingyuan",
2737 | "name": "平远"
2738 | },
2739 | {
2740 | "id": 674,
2741 | "spell": "pixian",
2742 | "name": "郫县"
2743 | },
2744 | {
2745 | "id": 675,
2746 | "spell": "pizhou",
2747 | "name": "邳州"
2748 | },
2749 | {
2750 | "id": 676,
2751 | "spell": "poyang",
2752 | "name": "鄱阳"
2753 | },
2754 | {
2755 | "id": 677,
2756 | "spell": "pucheng",
2757 | "name": "浦城"
2758 | },
2759 | {
2760 | "id": 678,
2761 | "spell": "pujiang",
2762 | "name": "浦江"
2763 | },
2764 | {
2765 | "id": 679,
2766 | "spell": "pujiang",
2767 | "name": "蒲江"
2768 | },
2769 | {
2770 | "id": 680,
2771 | "spell": "pulandian",
2772 | "name": "普兰店"
2773 | },
2774 | {
2775 | "id": 681,
2776 | "spell": "puning",
2777 | "name": "普宁"
2778 | }
2779 | ],
2780 | "Q": [
2781 | {
2782 | "id": 34,
2783 | "spell": "qingdao",
2784 | "name": "青岛"
2785 | },
2786 | {
2787 | "id": 35,
2788 | "spell": "quanzhou",
2789 | "name": "泉州"
2790 | },
2791 | {
2792 | "id": 224,
2793 | "spell": "qiandong",
2794 | "name": "黔东"
2795 | },
2796 | {
2797 | "id": 225,
2798 | "spell": "qiannan",
2799 | "name": "黔南"
2800 | },
2801 | {
2802 | "id": 226,
2803 | "spell": "qianxinan",
2804 | "name": "黔西南"
2805 | },
2806 | {
2807 | "id": 227,
2808 | "spell": "qingyang",
2809 | "name": "庆阳"
2810 | },
2811 | {
2812 | "id": 228,
2813 | "spell": "qingyuan",
2814 | "name": "清远"
2815 | },
2816 | {
2817 | "id": 229,
2818 | "spell": "qinhuangdao",
2819 | "name": "秦皇岛"
2820 | },
2821 | {
2822 | "id": 230,
2823 | "spell": "qinzhou",
2824 | "name": "钦州"
2825 | },
2826 | {
2827 | "id": 231,
2828 | "spell": "qiqihaer",
2829 | "name": "齐齐哈尔"
2830 | },
2831 | {
2832 | "id": 232,
2833 | "spell": "qitaihe",
2834 | "name": "七台河"
2835 | },
2836 | {
2837 | "id": 233,
2838 | "spell": "qujing",
2839 | "name": "曲靖"
2840 | },
2841 | {
2842 | "id": 234,
2843 | "spell": "quzhou",
2844 | "name": "衢州"
2845 | },
2846 | {
2847 | "id": 682,
2848 | "spell": "qianan",
2849 | "name": "迁安"
2850 | },
2851 | {
2852 | "id": 683,
2853 | "spell": "qianshan",
2854 | "name": "潜山"
2855 | },
2856 | {
2857 | "id": 684,
2858 | "spell": "qianshan",
2859 | "name": "铅山"
2860 | },
2861 | {
2862 | "id": 685,
2863 | "spell": "qianxi",
2864 | "name": "迁西"
2865 | },
2866 | {
2867 | "id": 686,
2868 | "spell": "qidong",
2869 | "name": "启东"
2870 | },
2871 | {
2872 | "id": 687,
2873 | "spell": "qihe",
2874 | "name": "齐河"
2875 | },
2876 | {
2877 | "id": 688,
2878 | "spell": "qijiang",
2879 | "name": "綦江"
2880 | },
2881 | {
2882 | "id": 689,
2883 | "spell": "qimen",
2884 | "name": "祁门"
2885 | },
2886 | {
2887 | "id": 690,
2888 | "spell": "qingliu",
2889 | "name": "清流"
2890 | },
2891 | {
2892 | "id": 691,
2893 | "spell": "qingtian",
2894 | "name": "青田"
2895 | },
2896 | {
2897 | "id": 692,
2898 | "spell": "qingxin",
2899 | "name": "清新"
2900 | },
2901 | {
2902 | "id": 693,
2903 | "spell": "qingyang",
2904 | "name": "青阳"
2905 | },
2906 | {
2907 | "id": 694,
2908 | "spell": "qingyuan",
2909 | "name": "庆元"
2910 | },
2911 | {
2912 | "id": 695,
2913 | "spell": "qingyun",
2914 | "name": "庆云"
2915 | },
2916 | {
2917 | "id": 696,
2918 | "spell": "qingzhen",
2919 | "name": "清镇"
2920 | },
2921 | {
2922 | "id": 697,
2923 | "spell": "qingzhou",
2924 | "name": "青州"
2925 | },
2926 | {
2927 | "id": 698,
2928 | "spell": "qinyang",
2929 | "name": "沁阳"
2930 | },
2931 | {
2932 | "id": 699,
2933 | "spell": "qionglai",
2934 | "name": "邛崃"
2935 | },
2936 | {
2937 | "id": 700,
2938 | "spell": "qixia",
2939 | "name": "栖霞"
2940 | },
2941 | {
2942 | "id": 701,
2943 | "spell": "quanjiao",
2944 | "name": "全椒"
2945 | },
2946 | {
2947 | "id": 702,
2948 | "spell": "quannan",
2949 | "name": "全南"
2950 | },
2951 | {
2952 | "id": 703,
2953 | "spell": "qufu",
2954 | "name": "曲阜"
2955 | },
2956 | {
2957 | "id": 704,
2958 | "spell": "qujiang",
2959 | "name": "曲江"
2960 | }
2961 | ],
2962 | "R": [
2963 | {
2964 | "id": 235,
2965 | "spell": "rikaze",
2966 | "name": "日喀则"
2967 | },
2968 | {
2969 | "id": 236,
2970 | "spell": "rizhao",
2971 | "name": "日照"
2972 | },
2973 | {
2974 | "id": 705,
2975 | "spell": "raoping",
2976 | "name": "饶平"
2977 | },
2978 | {
2979 | "id": 706,
2980 | "spell": "renhua",
2981 | "name": "仁化"
2982 | },
2983 | {
2984 | "id": 707,
2985 | "spell": "rongan",
2986 | "name": "融安"
2987 | },
2988 | {
2989 | "id": 708,
2990 | "spell": "rongchang",
2991 | "name": "荣昌"
2992 | },
2993 | {
2994 | "id": 709,
2995 | "spell": "rongcheng",
2996 | "name": "荣成"
2997 | },
2998 | {
2999 | "id": 710,
3000 | "spell": "rongshui",
3001 | "name": "融水"
3002 | },
3003 | {
3004 | "id": 711,
3005 | "spell": "rudong",
3006 | "name": "如东"
3007 | },
3008 | {
3009 | "id": 712,
3010 | "spell": "rugao",
3011 | "name": "如皋"
3012 | },
3013 | {
3014 | "id": 713,
3015 | "spell": "ruian",
3016 | "name": "瑞安"
3017 | },
3018 | {
3019 | "id": 714,
3020 | "spell": "ruichang",
3021 | "name": "瑞昌"
3022 | },
3023 | {
3024 | "id": 715,
3025 | "spell": "ruijin",
3026 | "name": "瑞金"
3027 | },
3028 | {
3029 | "id": 716,
3030 | "spell": "rushan",
3031 | "name": "乳山"
3032 | },
3033 | {
3034 | "id": 717,
3035 | "spell": "ruyang",
3036 | "name": "汝阳"
3037 | },
3038 | {
3039 | "id": 718,
3040 | "spell": "ruyuan",
3041 | "name": "乳源"
3042 | }
3043 | ],
3044 | "S": [
3045 | {
3046 | "id": 3,
3047 | "spell": "shanghai",
3048 | "name": "上海"
3049 | },
3050 | {
3051 | "id": 36,
3052 | "spell": "shenyang",
3053 | "name": "沈阳"
3054 | },
3055 | {
3056 | "id": 37,
3057 | "spell": "shenzhen",
3058 | "name": "深圳"
3059 | },
3060 | {
3061 | "id": 38,
3062 | "spell": "shijiazhuang",
3063 | "name": "石家庄"
3064 | },
3065 | {
3066 | "id": 39,
3067 | "spell": "suzhou",
3068 | "name": "苏州"
3069 | },
3070 | {
3071 | "id": 237,
3072 | "spell": "sanmenxia",
3073 | "name": "三门峡"
3074 | },
3075 | {
3076 | "id": 238,
3077 | "spell": "sanming",
3078 | "name": "三明"
3079 | },
3080 | {
3081 | "id": 239,
3082 | "spell": "sanya",
3083 | "name": "三亚"
3084 | },
3085 | {
3086 | "id": 240,
3087 | "spell": "shangluo",
3088 | "name": "商洛"
3089 | },
3090 | {
3091 | "id": 241,
3092 | "spell": "shangqiu",
3093 | "name": "商丘"
3094 | },
3095 | {
3096 | "id": 242,
3097 | "spell": "shangrao",
3098 | "name": "上饶"
3099 | },
3100 | {
3101 | "id": 243,
3102 | "spell": "shannan",
3103 | "name": "山南"
3104 | },
3105 | {
3106 | "id": 244,
3107 | "spell": "shantou",
3108 | "name": "汕头"
3109 | },
3110 | {
3111 | "id": 245,
3112 | "spell": "shanwei",
3113 | "name": "汕尾"
3114 | },
3115 | {
3116 | "id": 246,
3117 | "spell": "shaoguan",
3118 | "name": "韶关"
3119 | },
3120 | {
3121 | "id": 247,
3122 | "spell": "shaoxing",
3123 | "name": "绍兴"
3124 | },
3125 | {
3126 | "id": 248,
3127 | "spell": "shaoyang",
3128 | "name": "邵阳"
3129 | },
3130 | {
3131 | "id": 249,
3132 | "spell": "shiyan",
3133 | "name": "十堰"
3134 | },
3135 | {
3136 | "id": 250,
3137 | "spell": "shizuishan",
3138 | "name": "石嘴山"
3139 | },
3140 | {
3141 | "id": 251,
3142 | "spell": "shuangyashan",
3143 | "name": "双鸭山"
3144 | },
3145 | {
3146 | "id": 252,
3147 | "spell": "shuozhou",
3148 | "name": "朔州"
3149 | },
3150 | {
3151 | "id": 253,
3152 | "spell": "siping",
3153 | "name": "四平"
3154 | },
3155 | {
3156 | "id": 254,
3157 | "spell": "songyuan",
3158 | "name": "松原"
3159 | },
3160 | {
3161 | "id": 255,
3162 | "spell": "suihua",
3163 | "name": "绥化"
3164 | },
3165 | {
3166 | "id": 256,
3167 | "spell": "suining",
3168 | "name": "遂宁"
3169 | },
3170 | {
3171 | "id": 257,
3172 | "spell": "suizhou",
3173 | "name": "随州"
3174 | },
3175 | {
3176 | "id": 258,
3177 | "spell": "suqian",
3178 | "name": "宿迁"
3179 | },
3180 | {
3181 | "id": 259,
3182 | "spell": "suzhou",
3183 | "name": "宿州"
3184 | },
3185 | {
3186 | "id": 719,
3187 | "spell": "sanjiang",
3188 | "name": "三江"
3189 | },
3190 | {
3191 | "id": 720,
3192 | "spell": "sanmen",
3193 | "name": "三门"
3194 | },
3195 | {
3196 | "id": 721,
3197 | "spell": "saoan",
3198 | "name": "诏安"
3199 | },
3200 | {
3201 | "id": 722,
3202 | "spell": "shanggao",
3203 | "name": "上高"
3204 | },
3205 | {
3206 | "id": 723,
3207 | "spell": "shanghang",
3208 | "name": "上杭"
3209 | },
3210 | {
3211 | "id": 724,
3212 | "spell": "shanghe",
3213 | "name": "商河"
3214 | },
3215 | {
3216 | "id": 725,
3217 | "spell": "shangli",
3218 | "name": "上栗"
3219 | },
3220 | {
3221 | "id": 726,
3222 | "spell": "shanglin",
3223 | "name": "上林"
3224 | },
3225 | {
3226 | "id": 727,
3227 | "spell": "shangrao",
3228 | "name": "上饶"
3229 | },
3230 | {
3231 | "id": 728,
3232 | "spell": "shangyou",
3233 | "name": "上犹"
3234 | },
3235 | {
3236 | "id": 729,
3237 | "spell": "shangyu",
3238 | "name": "上虞"
3239 | },
3240 | {
3241 | "id": 730,
3242 | "spell": "shangzhi",
3243 | "name": "尚志"
3244 | },
3245 | {
3246 | "id": 731,
3247 | "spell": "shaowu",
3248 | "name": "邵武"
3249 | },
3250 | {
3251 | "id": 732,
3252 | "spell": "shaoxing",
3253 | "name": "绍兴"
3254 | },
3255 | {
3256 | "id": 733,
3257 | "spell": "shaxian",
3258 | "name": "沙县"
3259 | },
3260 | {
3261 | "id": 734,
3262 | "spell": "shengsi",
3263 | "name": "嵊泗"
3264 | },
3265 | {
3266 | "id": 735,
3267 | "spell": "shengzhou",
3268 | "name": "嵊州"
3269 | },
3270 | {
3271 | "id": 736,
3272 | "spell": "shenxian",
3273 | "name": "莘县"
3274 | },
3275 | {
3276 | "id": 737,
3277 | "spell": "shenze",
3278 | "name": "深泽"
3279 | },
3280 | {
3281 | "id": 738,
3282 | "spell": "shexian",
3283 | "name": "歙县"
3284 | },
3285 | {
3286 | "id": 739,
3287 | "spell": "sheyang",
3288 | "name": "射阳"
3289 | },
3290 | {
3291 | "id": 740,
3292 | "spell": "shicheng",
3293 | "name": "石城"
3294 | },
3295 | {
3296 | "id": 741,
3297 | "spell": "shilin",
3298 | "name": "石林"
3299 | },
3300 | {
3301 | "id": 742,
3302 | "spell": "shishi",
3303 | "name": "石狮"
3304 | },
3305 | {
3306 | "id": 743,
3307 | "spell": "shitai",
3308 | "name": "石台"
3309 | },
3310 | {
3311 | "id": 744,
3312 | "spell": "shixing",
3313 | "name": "始兴"
3314 | },
3315 | {
3316 | "id": 745,
3317 | "spell": "shizhu",
3318 | "name": "石柱"
3319 | },
3320 | {
3321 | "id": 746,
3322 | "spell": "shouguang",
3323 | "name": "寿光"
3324 | },
3325 | {
3326 | "id": 747,
3327 | "spell": "shouning",
3328 | "name": "寿宁"
3329 | },
3330 | {
3331 | "id": 748,
3332 | "spell": "shouxian",
3333 | "name": "寿县"
3334 | },
3335 | {
3336 | "id": 749,
3337 | "spell": "shuangcheng",
3338 | "name": "双城"
3339 | },
3340 | {
3341 | "id": 750,
3342 | "spell": "shuangliu",
3343 | "name": "双流"
3344 | },
3345 | {
3346 | "id": 751,
3347 | "spell": "shucheng",
3348 | "name": "舒城"
3349 | },
3350 | {
3351 | "id": 752,
3352 | "spell": "shulan",
3353 | "name": "舒兰"
3354 | },
3355 | {
3356 | "id": 753,
3357 | "spell": "shunchang",
3358 | "name": "顺昌"
3359 | },
3360 | {
3361 | "id": 754,
3362 | "spell": "shuyang",
3363 | "name": "沭阳"
3364 | },
3365 | {
3366 | "id": 755,
3367 | "spell": "sihong",
3368 | "name": "泗洪"
3369 | },
3370 | {
3371 | "id": 756,
3372 | "spell": "sihui",
3373 | "name": "四会"
3374 | },
3375 | {
3376 | "id": 757,
3377 | "spell": "sishui",
3378 | "name": "泗水"
3379 | },
3380 | {
3381 | "id": 758,
3382 | "spell": "sixian",
3383 | "name": "泗县"
3384 | },
3385 | {
3386 | "id": 759,
3387 | "spell": "siyang",
3388 | "name": "泗阳"
3389 | },
3390 | {
3391 | "id": 760,
3392 | "spell": "songming",
3393 | "name": "嵩明"
3394 | },
3395 | {
3396 | "id": 761,
3397 | "spell": "songxi",
3398 | "name": "松溪"
3399 | },
3400 | {
3401 | "id": 762,
3402 | "spell": "songxian",
3403 | "name": "嵩县"
3404 | },
3405 | {
3406 | "id": 763,
3407 | "spell": "songyang",
3408 | "name": "松阳"
3409 | },
3410 | {
3411 | "id": 764,
3412 | "spell": "suichang",
3413 | "name": "遂昌"
3414 | },
3415 | {
3416 | "id": 765,
3417 | "spell": "suichuan",
3418 | "name": "遂川"
3419 | },
3420 | {
3421 | "id": 766,
3422 | "spell": "suining",
3423 | "name": "睢宁"
3424 | },
3425 | {
3426 | "id": 767,
3427 | "spell": "suixi",
3428 | "name": "濉溪"
3429 | },
3430 | {
3431 | "id": 768,
3432 | "spell": "suixi",
3433 | "name": "遂溪"
3434 | },
3435 | {
3436 | "id": 769,
3437 | "spell": "susong",
3438 | "name": "宿松"
3439 | },
3440 | {
3441 | "id": 770,
3442 | "spell": "suyu",
3443 | "name": "宿豫"
3444 | }
3445 | ],
3446 | "T": [
3447 | {
3448 | "id": 4,
3449 | "spell": "tianjin",
3450 | "name": "天津"
3451 | },
3452 | {
3453 | "id": 40,
3454 | "spell": "taizhou",
3455 | "name": "台州"
3456 | },
3457 | {
3458 | "id": 41,
3459 | "spell": "tangshan",
3460 | "name": "唐山"
3461 | },
3462 | {
3463 | "id": 260,
3464 | "spell": "tachengdi",
3465 | "name": "塔城地"
3466 | },
3467 | {
3468 | "id": 261,
3469 | "spell": "taian",
3470 | "name": "泰安"
3471 | },
3472 | {
3473 | "id": 262,
3474 | "spell": "taiyuan",
3475 | "name": "太原"
3476 | },
3477 | {
3478 | "id": 263,
3479 | "spell": "taizhou",
3480 | "name": "泰州"
3481 | },
3482 | {
3483 | "id": 264,
3484 | "spell": "tianshui",
3485 | "name": "天水"
3486 | },
3487 | {
3488 | "id": 265,
3489 | "spell": "tieling",
3490 | "name": "铁岭"
3491 | },
3492 | {
3493 | "id": 266,
3494 | "spell": "tongchuan",
3495 | "name": "铜川"
3496 | },
3497 | {
3498 | "id": 267,
3499 | "spell": "tonghua",
3500 | "name": "通化"
3501 | },
3502 | {
3503 | "id": 268,
3504 | "spell": "tongliao",
3505 | "name": "通辽"
3506 | },
3507 | {
3508 | "id": 269,
3509 | "spell": "tongling",
3510 | "name": "铜陵"
3511 | },
3512 | {
3513 | "id": 270,
3514 | "spell": "tongren",
3515 | "name": "铜仁"
3516 | },
3517 | {
3518 | "id": 271,
3519 | "spell": "tulufan",
3520 | "name": "吐鲁番"
3521 | },
3522 | {
3523 | "id": 771,
3524 | "spell": "taicang",
3525 | "name": "太仓"
3526 | },
3527 | {
3528 | "id": 772,
3529 | "spell": "taihe",
3530 | "name": "太和"
3531 | },
3532 | {
3533 | "id": 773,
3534 | "spell": "taihe",
3535 | "name": "泰和"
3536 | },
3537 | {
3538 | "id": 774,
3539 | "spell": "taihu",
3540 | "name": "太湖"
3541 | },
3542 | {
3543 | "id": 775,
3544 | "spell": "taining",
3545 | "name": "泰宁"
3546 | },
3547 | {
3548 | "id": 776,
3549 | "spell": "taishan",
3550 | "name": "台山"
3551 | },
3552 | {
3553 | "id": 777,
3554 | "spell": "taishun",
3555 | "name": "泰顺"
3556 | },
3557 | {
3558 | "id": 778,
3559 | "spell": "taixing",
3560 | "name": "泰兴"
3561 | },
3562 | {
3563 | "id": 779,
3564 | "spell": "tancheng",
3565 | "name": "郯城"
3566 | },
3567 | {
3568 | "id": 780,
3569 | "spell": "tanghai",
3570 | "name": "唐海"
3571 | },
3572 | {
3573 | "id": 781,
3574 | "spell": "tengzhou",
3575 | "name": "滕州"
3576 | },
3577 | {
3578 | "id": 782,
3579 | "spell": "tianchang",
3580 | "name": "天长"
3581 | },
3582 | {
3583 | "id": 783,
3584 | "spell": "tiantai",
3585 | "name": "天台"
3586 | },
3587 | {
3588 | "id": 784,
3589 | "spell": "tongcheng",
3590 | "name": "桐城"
3591 | },
3592 | {
3593 | "id": 785,
3594 | "spell": "tonggu",
3595 | "name": "铜鼓"
3596 | },
3597 | {
3598 | "id": 786,
3599 | "spell": "tonghe",
3600 | "name": "通河"
3601 | },
3602 | {
3603 | "id": 787,
3604 | "spell": "tongliang",
3605 | "name": "铜梁"
3606 | },
3607 | {
3608 | "id": 788,
3609 | "spell": "tongling",
3610 | "name": "铜陵"
3611 | },
3612 | {
3613 | "id": 789,
3614 | "spell": "tonglu",
3615 | "name": "桐庐"
3616 | },
3617 | {
3618 | "id": 790,
3619 | "spell": "tongnan",
3620 | "name": "潼南"
3621 | },
3622 | {
3623 | "id": 791,
3624 | "spell": "tongshan",
3625 | "name": "铜山"
3626 | },
3627 | {
3628 | "id": 792,
3629 | "spell": "tongxiang",
3630 | "name": "桐乡"
3631 | },
3632 | {
3633 | "id": 793,
3634 | "spell": "tongzhou",
3635 | "name": "通州"
3636 | }
3637 | ],
3638 | "W": [
3639 | {
3640 | "id": 42,
3641 | "spell": "weifang",
3642 | "name": "潍坊"
3643 | },
3644 | {
3645 | "id": 43,
3646 | "spell": "weihai",
3647 | "name": "威海"
3648 | },
3649 | {
3650 | "id": 44,
3651 | "spell": "wuhan",
3652 | "name": "武汉"
3653 | },
3654 | {
3655 | "id": 45,
3656 | "spell": "wuxi",
3657 | "name": "无锡"
3658 | },
3659 | {
3660 | "id": 272,
3661 | "spell": "weinan",
3662 | "name": "渭南"
3663 | },
3664 | {
3665 | "id": 273,
3666 | "spell": "wenshan",
3667 | "name": "文山"
3668 | },
3669 | {
3670 | "id": 274,
3671 | "spell": "wenzhou",
3672 | "name": "温州"
3673 | },
3674 | {
3675 | "id": 275,
3676 | "spell": "wuhai",
3677 | "name": "乌海"
3678 | },
3679 | {
3680 | "id": 276,
3681 | "spell": "wuhu",
3682 | "name": "芜湖"
3683 | },
3684 | {
3685 | "id": 277,
3686 | "spell": "wulanchabu",
3687 | "name": "乌兰察布"
3688 | },
3689 | {
3690 | "id": 278,
3691 | "spell": "wulumuqi",
3692 | "name": "乌鲁木齐"
3693 | },
3694 | {
3695 | "id": 279,
3696 | "spell": "wuwei",
3697 | "name": "武威"
3698 | },
3699 | {
3700 | "id": 280,
3701 | "spell": "wuzhong",
3702 | "name": "吴忠"
3703 | },
3704 | {
3705 | "id": 281,
3706 | "spell": "wuzhou",
3707 | "name": "梧州"
3708 | },
3709 | {
3710 | "id": 794,
3711 | "spell": "wafangdian",
3712 | "name": "瓦房店"
3713 | },
3714 | {
3715 | "id": 795,
3716 | "spell": "wanan",
3717 | "name": "万安"
3718 | },
3719 | {
3720 | "id": 796,
3721 | "spell": "wangcheng",
3722 | "name": "望城"
3723 | },
3724 | {
3725 | "id": 797,
3726 | "spell": "wangjiang",
3727 | "name": "望江"
3728 | },
3729 | {
3730 | "id": 798,
3731 | "spell": "wannian",
3732 | "name": "万年"
3733 | },
3734 | {
3735 | "id": 799,
3736 | "spell": "wanzai",
3737 | "name": "万载"
3738 | },
3739 | {
3740 | "id": 800,
3741 | "spell": "weishan",
3742 | "name": "微山"
3743 | },
3744 | {
3745 | "id": 801,
3746 | "spell": "wencheng",
3747 | "name": "文成"
3748 | },
3749 | {
3750 | "id": 802,
3751 | "spell": "wendeng",
3752 | "name": "文登"
3753 | },
3754 | {
3755 | "id": 803,
3756 | "spell": "wengyuan",
3757 | "name": "翁源"
3758 | },
3759 | {
3760 | "id": 804,
3761 | "spell": "wenling",
3762 | "name": "温岭"
3763 | },
3764 | {
3765 | "id": 805,
3766 | "spell": "wenshang",
3767 | "name": "汶上"
3768 | },
3769 | {
3770 | "id": 806,
3771 | "spell": "wenxian",
3772 | "name": "温县"
3773 | },
3774 | {
3775 | "id": 807,
3776 | "spell": "woyang",
3777 | "name": "涡阳"
3778 | },
3779 | {
3780 | "id": 808,
3781 | "spell": "wuchang",
3782 | "name": "五常"
3783 | },
3784 | {
3785 | "id": 809,
3786 | "spell": "wucheng",
3787 | "name": "武城"
3788 | },
3789 | {
3790 | "id": 810,
3791 | "spell": "wuchuan",
3792 | "name": "吴川"
3793 | },
3794 | {
3795 | "id": 811,
3796 | "spell": "wudi",
3797 | "name": "无棣"
3798 | },
3799 | {
3800 | "id": 812,
3801 | "spell": "wuhe",
3802 | "name": "五河"
3803 | },
3804 | {
3805 | "id": 813,
3806 | "spell": "wuhu",
3807 | "name": "芜湖"
3808 | },
3809 | {
3810 | "id": 814,
3811 | "spell": "wuhua",
3812 | "name": "五华"
3813 | },
3814 | {
3815 | "id": 815,
3816 | "spell": "wuji",
3817 | "name": "无极"
3818 | },
3819 | {
3820 | "id": 816,
3821 | "spell": "wujiang",
3822 | "name": "吴江"
3823 | },
3824 | {
3825 | "id": 817,
3826 | "spell": "wulian",
3827 | "name": "五莲"
3828 | },
3829 | {
3830 | "id": 818,
3831 | "spell": "wulong",
3832 | "name": "武隆"
3833 | },
3834 | {
3835 | "id": 819,
3836 | "spell": "wuming",
3837 | "name": "武鸣"
3838 | },
3839 | {
3840 | "id": 820,
3841 | "spell": "wuning",
3842 | "name": "武宁"
3843 | },
3844 | {
3845 | "id": 821,
3846 | "spell": "wuping",
3847 | "name": "武平"
3848 | },
3849 | {
3850 | "id": 822,
3851 | "spell": "wushan",
3852 | "name": "巫山"
3853 | },
3854 | {
3855 | "id": 823,
3856 | "spell": "wuwei",
3857 | "name": "无为"
3858 | },
3859 | {
3860 | "id": 824,
3861 | "spell": "wuxi",
3862 | "name": "巫溪"
3863 | },
3864 | {
3865 | "id": 825,
3866 | "spell": "wuyi",
3867 | "name": "武义"
3868 | },
3869 | {
3870 | "id": 826,
3871 | "spell": "wuyishan",
3872 | "name": "武夷山"
3873 | },
3874 | {
3875 | "id": 827,
3876 | "spell": "wuyuan",
3877 | "name": "婺源"
3878 | },
3879 | {
3880 | "id": 828,
3881 | "spell": "wuzhi",
3882 | "name": "武陟"
3883 | }
3884 | ],
3885 | "X": [
3886 | {
3887 | "id": 46,
3888 | "spell": "xiamen",
3889 | "name": "厦门"
3890 | },
3891 | {
3892 | "id": 47,
3893 | "spell": "xian",
3894 | "name": "西安"
3895 | },
3896 | {
3897 | "id": 48,
3898 | "spell": "xuchang",
3899 | "name": "许昌"
3900 | },
3901 | {
3902 | "id": 49,
3903 | "spell": "xuzhou",
3904 | "name": "徐州"
3905 | },
3906 | {
3907 | "id": 282,
3908 | "spell": "xiangfan",
3909 | "name": "襄樊"
3910 | },
3911 | {
3912 | "id": 283,
3913 | "spell": "xiangtan",
3914 | "name": "湘潭"
3915 | },
3916 | {
3917 | "id": 284,
3918 | "spell": "xiangxi",
3919 | "name": "湘西"
3920 | },
3921 | {
3922 | "id": 285,
3923 | "spell": "xianning",
3924 | "name": "咸宁"
3925 | },
3926 | {
3927 | "id": 286,
3928 | "spell": "xianyang",
3929 | "name": "咸阳"
3930 | },
3931 | {
3932 | "id": 287,
3933 | "spell": "xiaogan",
3934 | "name": "孝感"
3935 | },
3936 | {
3937 | "id": 288,
3938 | "spell": "xilinguolemeng",
3939 | "name": "锡林郭勒盟"
3940 | },
3941 | {
3942 | "id": 289,
3943 | "spell": "xinganmeng",
3944 | "name": "兴安盟"
3945 | },
3946 | {
3947 | "id": 290,
3948 | "spell": "xingtai",
3949 | "name": "邢台"
3950 | },
3951 | {
3952 | "id": 291,
3953 | "spell": "xining",
3954 | "name": "西宁"
3955 | },
3956 | {
3957 | "id": 292,
3958 | "spell": "xinxiang",
3959 | "name": "新乡"
3960 | },
3961 | {
3962 | "id": 293,
3963 | "spell": "xinyang",
3964 | "name": "信阳"
3965 | },
3966 | {
3967 | "id": 294,
3968 | "spell": "xinyu",
3969 | "name": "新余"
3970 | },
3971 | {
3972 | "id": 295,
3973 | "spell": "xinzhou",
3974 | "name": "忻州"
3975 | },
3976 | {
3977 | "id": 296,
3978 | "spell": "xishuangbanna",
3979 | "name": "西双版纳"
3980 | },
3981 | {
3982 | "id": 297,
3983 | "spell": "xuancheng",
3984 | "name": "宣城"
3985 | },
3986 | {
3987 | "id": 829,
3988 | "spell": "xiajiang",
3989 | "name": "峡江"
3990 | },
3991 | {
3992 | "id": 830,
3993 | "spell": "xiajin",
3994 | "name": "夏津"
3995 | },
3996 | {
3997 | "id": 831,
3998 | "spell": "xiangshan",
3999 | "name": "象山"
4000 | },
4001 | {
4002 | "id": 832,
4003 | "spell": "xiangshui",
4004 | "name": "响水"
4005 | },
4006 | {
4007 | "id": 833,
4008 | "spell": "xianju",
4009 | "name": "仙居"
4010 | },
4011 | {
4012 | "id": 834,
4013 | "spell": "xianyou",
4014 | "name": "仙游"
4015 | },
4016 | {
4017 | "id": 835,
4018 | "spell": "xiaoxian",
4019 | "name": "萧县"
4020 | },
4021 | {
4022 | "id": 836,
4023 | "spell": "xiapu",
4024 | "name": "霞浦"
4025 | },
4026 | {
4027 | "id": 837,
4028 | "spell": "xifeng",
4029 | "name": "息烽"
4030 | },
4031 | {
4032 | "id": 838,
4033 | "spell": "xinan",
4034 | "name": "新安"
4035 | },
4036 | {
4037 | "id": 839,
4038 | "spell": "xinchang",
4039 | "name": "新昌"
4040 | },
4041 | {
4042 | "id": 840,
4043 | "spell": "xinfeng",
4044 | "name": "信丰"
4045 | },
4046 | {
4047 | "id": 841,
4048 | "spell": "xinfeng",
4049 | "name": "新丰"
4050 | },
4051 | {
4052 | "id": 842,
4053 | "spell": "xingan",
4054 | "name": "新干"
4055 | },
4056 | {
4057 | "id": 843,
4058 | "spell": "xingguo",
4059 | "name": "兴国"
4060 | },
4061 | {
4062 | "id": 844,
4063 | "spell": "xinghua",
4064 | "name": "兴化"
4065 | },
4066 | {
4067 | "id": 845,
4068 | "spell": "xingning",
4069 | "name": "兴宁"
4070 | },
4071 | {
4072 | "id": 846,
4073 | "spell": "xingtang",
4074 | "name": "行唐"
4075 | },
4076 | {
4077 | "id": 847,
4078 | "spell": "xingyang",
4079 | "name": "荥阳"
4080 | },
4081 | {
4082 | "id": 848,
4083 | "spell": "xingzi",
4084 | "name": "星子"
4085 | },
4086 | {
4087 | "id": 849,
4088 | "spell": "xinji",
4089 | "name": "辛集"
4090 | },
4091 | {
4092 | "id": 850,
4093 | "spell": "xinjian",
4094 | "name": "新建"
4095 | },
4096 | {
4097 | "id": 851,
4098 | "spell": "xinjin",
4099 | "name": "新津"
4100 | },
4101 | {
4102 | "id": 852,
4103 | "spell": "xinle",
4104 | "name": "新乐"
4105 | },
4106 | {
4107 | "id": 853,
4108 | "spell": "xinmin",
4109 | "name": "新民"
4110 | },
4111 | {
4112 | "id": 854,
4113 | "spell": "xinmi",
4114 | "name": "新密"
4115 | },
4116 | {
4117 | "id": 855,
4118 | "spell": "xintai",
4119 | "name": "新泰"
4120 | },
4121 | {
4122 | "id": 856,
4123 | "spell": "xinxing",
4124 | "name": "新兴"
4125 | },
4126 | {
4127 | "id": 857,
4128 | "spell": "xinyi",
4129 | "name": "新沂"
4130 | },
4131 | {
4132 | "id": 858,
4133 | "spell": "xinyi",
4134 | "name": "信宜"
4135 | },
4136 | {
4137 | "id": 859,
4138 | "spell": "xinzheng",
4139 | "name": "新郑"
4140 | },
4141 | {
4142 | "id": 860,
4143 | "spell": "xiuning",
4144 | "name": "休宁"
4145 | },
4146 | {
4147 | "id": 861,
4148 | "spell": "xiushan",
4149 | "name": "秀山"
4150 | },
4151 | {
4152 | "id": 862,
4153 | "spell": "xiushui",
4154 | "name": "修水"
4155 | },
4156 | {
4157 | "id": 863,
4158 | "spell": "xiuwen",
4159 | "name": "修文"
4160 | },
4161 | {
4162 | "id": 864,
4163 | "spell": "xiuwu",
4164 | "name": "修武"
4165 | },
4166 | {
4167 | "id": 865,
4168 | "spell": "xundian",
4169 | "name": "寻甸"
4170 | },
4171 | {
4172 | "id": 866,
4173 | "spell": "xunwu",
4174 | "name": "寻乌"
4175 | },
4176 | {
4177 | "id": 867,
4178 | "spell": "xuwen",
4179 | "name": "徐闻"
4180 | },
4181 | {
4182 | "id": 868,
4183 | "spell": "xuyi",
4184 | "name": "盱眙"
4185 | }
4186 | ],
4187 | "Y": [
4188 | {
4189 | "id": 50,
4190 | "spell": "yangzhou",
4191 | "name": "扬州"
4192 | },
4193 | {
4194 | "id": 51,
4195 | "spell": "yantai",
4196 | "name": "烟台"
4197 | },
4198 | {
4199 | "id": 298,
4200 | "spell": "yaan",
4201 | "name": "雅安"
4202 | },
4203 | {
4204 | "id": 299,
4205 | "spell": "yanan",
4206 | "name": "延安"
4207 | },
4208 | {
4209 | "id": 300,
4210 | "spell": "yanbian",
4211 | "name": "延边"
4212 | },
4213 | {
4214 | "id": 301,
4215 | "spell": "yancheng",
4216 | "name": "盐城"
4217 | },
4218 | {
4219 | "id": 302,
4220 | "spell": "yangjiang",
4221 | "name": "阳江"
4222 | },
4223 | {
4224 | "id": 303,
4225 | "spell": "yangquan",
4226 | "name": "阳泉"
4227 | },
4228 | {
4229 | "id": 304,
4230 | "spell": "yibin",
4231 | "name": "宜宾"
4232 | },
4233 | {
4234 | "id": 305,
4235 | "spell": "yichang",
4236 | "name": "宜昌"
4237 | },
4238 | {
4239 | "id": 306,
4240 | "spell": "yichun",
4241 | "name": "伊春"
4242 | },
4243 | {
4244 | "id": 307,
4245 | "spell": "yichun",
4246 | "name": "宜春"
4247 | },
4248 | {
4249 | "id": 308,
4250 | "spell": "yilihasake",
4251 | "name": "伊犁哈萨克"
4252 | },
4253 | {
4254 | "id": 309,
4255 | "spell": "yinchuan",
4256 | "name": "银川"
4257 | },
4258 | {
4259 | "id": 310,
4260 | "spell": "yingkou",
4261 | "name": "营口"
4262 | },
4263 | {
4264 | "id": 311,
4265 | "spell": "yingtan",
4266 | "name": "鹰潭"
4267 | },
4268 | {
4269 | "id": 312,
4270 | "spell": "yiyang",
4271 | "name": "益阳"
4272 | },
4273 | {
4274 | "id": 313,
4275 | "spell": "yongzhou",
4276 | "name": "永州"
4277 | },
4278 | {
4279 | "id": 314,
4280 | "spell": "yueyang",
4281 | "name": "岳阳"
4282 | },
4283 | {
4284 | "id": 315,
4285 | "spell": "yulin",
4286 | "name": "玉林"
4287 | },
4288 | {
4289 | "id": 316,
4290 | "spell": "yulin",
4291 | "name": "榆林"
4292 | },
4293 | {
4294 | "id": 317,
4295 | "spell": "yuncheng",
4296 | "name": "运城"
4297 | },
4298 | {
4299 | "id": 318,
4300 | "spell": "yunfu",
4301 | "name": "云浮"
4302 | },
4303 | {
4304 | "id": 319,
4305 | "spell": "yushu",
4306 | "name": "玉树"
4307 | },
4308 | {
4309 | "id": 320,
4310 | "spell": "yuxi",
4311 | "name": "玉溪"
4312 | },
4313 | {
4314 | "id": 869,
4315 | "spell": "yangchun",
4316 | "name": "阳春"
4317 | },
4318 | {
4319 | "id": 870,
4320 | "spell": "yangdong",
4321 | "name": "阳东"
4322 | },
4323 | {
4324 | "id": 871,
4325 | "spell": "yanggu",
4326 | "name": "阳谷"
4327 | },
4328 | {
4329 | "id": 872,
4330 | "spell": "yangshan",
4331 | "name": "阳山"
4332 | },
4333 | {
4334 | "id": 873,
4335 | "spell": "yangxin",
4336 | "name": "阳信"
4337 | },
4338 | {
4339 | "id": 874,
4340 | "spell": "yangxi",
4341 | "name": "阳西"
4342 | },
4343 | {
4344 | "id": 875,
4345 | "spell": "yangzhong",
4346 | "name": "扬中"
4347 | },
4348 | {
4349 | "id": 876,
4350 | "spell": "yanshi",
4351 | "name": "偃师"
4352 | },
4353 | {
4354 | "id": 877,
4355 | "spell": "yanshou",
4356 | "name": "延寿"
4357 | },
4358 | {
4359 | "id": 878,
4360 | "spell": "yanzhou",
4361 | "name": "兖州"
4362 | },
4363 | {
4364 | "id": 879,
4365 | "spell": "yichuan",
4366 | "name": "伊川"
4367 | },
4368 | {
4369 | "id": 880,
4370 | "spell": "yifeng",
4371 | "name": "宜丰"
4372 | },
4373 | {
4374 | "id": 881,
4375 | "spell": "yihuang",
4376 | "name": "宜黄"
4377 | },
4378 | {
4379 | "id": 882,
4380 | "spell": "yilan",
4381 | "name": "依兰"
4382 | },
4383 | {
4384 | "id": 883,
4385 | "spell": "yiliang",
4386 | "name": "宜良"
4387 | },
4388 | {
4389 | "id": 884,
4390 | "spell": "yinan",
4391 | "name": "沂南"
4392 | },
4393 | {
4394 | "id": 885,
4395 | "spell": "yingde",
4396 | "name": "英德"
4397 | },
4398 | {
4399 | "id": 886,
4400 | "spell": "yingshang",
4401 | "name": "颍上"
4402 | },
4403 | {
4404 | "id": 887,
4405 | "spell": "yishui",
4406 | "name": "沂水"
4407 | },
4408 | {
4409 | "id": 888,
4410 | "spell": "yiwu",
4411 | "name": "义乌"
4412 | },
4413 | {
4414 | "id": 889,
4415 | "spell": "yixian",
4416 | "name": "黟县"
4417 | },
4418 | {
4419 | "id": 890,
4420 | "spell": "yixing",
4421 | "name": "宜兴"
4422 | },
4423 | {
4424 | "id": 891,
4425 | "spell": "yiyang",
4426 | "name": "弋阳"
4427 | },
4428 | {
4429 | "id": 892,
4430 | "spell": "yiyang",
4431 | "name": "宜阳"
4432 | },
4433 | {
4434 | "id": 893,
4435 | "spell": "yiyuan",
4436 | "name": "沂源"
4437 | },
4438 | {
4439 | "id": 894,
4440 | "spell": "yizheng",
4441 | "name": "仪征"
4442 | },
4443 | {
4444 | "id": 895,
4445 | "spell": "yongan",
4446 | "name": "永安"
4447 | },
4448 | {
4449 | "id": 896,
4450 | "spell": "yongchuan",
4451 | "name": "永川"
4452 | },
4453 | {
4454 | "id": 897,
4455 | "spell": "yongchun",
4456 | "name": "永春"
4457 | },
4458 | {
4459 | "id": 898,
4460 | "spell": "yongdeng",
4461 | "name": "永登"
4462 | },
4463 | {
4464 | "id": 899,
4465 | "spell": "yongding",
4466 | "name": "永定"
4467 | },
4468 | {
4469 | "id": 900,
4470 | "spell": "yongfeng",
4471 | "name": "永丰"
4472 | },
4473 | {
4474 | "id": 901,
4475 | "spell": "yongji",
4476 | "name": "永吉"
4477 | },
4478 | {
4479 | "id": 902,
4480 | "spell": "yongjia",
4481 | "name": "永嘉"
4482 | },
4483 | {
4484 | "id": 903,
4485 | "spell": "yongkang",
4486 | "name": "永康"
4487 | },
4488 | {
4489 | "id": 904,
4490 | "spell": "yongning",
4491 | "name": "邕宁"
4492 | },
4493 | {
4494 | "id": 905,
4495 | "spell": "yongtai",
4496 | "name": "永泰"
4497 | },
4498 | {
4499 | "id": 906,
4500 | "spell": "yongxin",
4501 | "name": "永新"
4502 | },
4503 | {
4504 | "id": 907,
4505 | "spell": "yongxiu",
4506 | "name": "永修"
4507 | },
4508 | {
4509 | "id": 908,
4510 | "spell": "youxi",
4511 | "name": "尤溪"
4512 | },
4513 | {
4514 | "id": 909,
4515 | "spell": "youyang",
4516 | "name": "酉阳"
4517 | },
4518 | {
4519 | "id": 910,
4520 | "spell": "yuanshi",
4521 | "name": "元氏"
4522 | },
4523 | {
4524 | "id": 911,
4525 | "spell": "yucheng",
4526 | "name": "禹城"
4527 | },
4528 | {
4529 | "id": 912,
4530 | "spell": "yudu",
4531 | "name": "于都"
4532 | },
4533 | {
4534 | "id": 913,
4535 | "spell": "yuexi",
4536 | "name": "岳西"
4537 | },
4538 | {
4539 | "id": 914,
4540 | "spell": "yugan",
4541 | "name": "余干"
4542 | },
4543 | {
4544 | "id": 915,
4545 | "spell": "yuhuan",
4546 | "name": "玉环"
4547 | },
4548 | {
4549 | "id": 916,
4550 | "spell": "yujiang",
4551 | "name": "余江"
4552 | },
4553 | {
4554 | "id": 917,
4555 | "spell": "yunan",
4556 | "name": "郁南"
4557 | },
4558 | {
4559 | "id": 918,
4560 | "spell": "yunan",
4561 | "name": "云安"
4562 | },
4563 | {
4564 | "id": 919,
4565 | "spell": "yuncheng",
4566 | "name": "郓城"
4567 | },
4568 | {
4569 | "id": 920,
4570 | "spell": "yunhe",
4571 | "name": "云和"
4572 | },
4573 | {
4574 | "id": 921,
4575 | "spell": "yunxiao",
4576 | "name": "云霄"
4577 | },
4578 | {
4579 | "id": 922,
4580 | "spell": "yunyang",
4581 | "name": "云阳"
4582 | },
4583 | {
4584 | "id": 923,
4585 | "spell": "yushan",
4586 | "name": "玉山"
4587 | },
4588 | {
4589 | "id": 924,
4590 | "spell": "yushu",
4591 | "name": "榆树"
4592 | },
4593 | {
4594 | "id": 925,
4595 | "spell": "yutai",
4596 | "name": "鱼台"
4597 | },
4598 | {
4599 | "id": 926,
4600 | "spell": "yutian",
4601 | "name": "玉田"
4602 | },
4603 | {
4604 | "id": 927,
4605 | "spell": "yuyao",
4606 | "name": "余姚"
4607 | },
4608 | {
4609 | "id": 928,
4610 | "spell": "yuzhong",
4611 | "name": "榆中"
4612 | }
4613 | ],
4614 | "Z": [
4615 | {
4616 | "id": 52,
4617 | "spell": "zhangzhou",
4618 | "name": "漳州"
4619 | },
4620 | {
4621 | "id": 53,
4622 | "spell": "zhengzhou",
4623 | "name": "郑州"
4624 | },
4625 | {
4626 | "id": 54,
4627 | "spell": "zhongshan",
4628 | "name": "中山"
4629 | },
4630 | {
4631 | "id": 55,
4632 | "spell": "zhuhai",
4633 | "name": "珠海"
4634 | },
4635 | {
4636 | "id": 321,
4637 | "spell": "zaozhuang",
4638 | "name": "枣庄"
4639 | },
4640 | {
4641 | "id": 322,
4642 | "spell": "zhangjiajie",
4643 | "name": "张家界"
4644 | },
4645 | {
4646 | "id": 323,
4647 | "spell": "zhangjiakou",
4648 | "name": "张家口"
4649 | },
4650 | {
4651 | "id": 324,
4652 | "spell": "zhangye",
4653 | "name": "张掖"
4654 | },
4655 | {
4656 | "id": 325,
4657 | "spell": "zhanjiang",
4658 | "name": "湛江"
4659 | },
4660 | {
4661 | "id": 326,
4662 | "spell": "zhaoqing",
4663 | "name": "肇庆"
4664 | },
4665 | {
4666 | "id": 327,
4667 | "spell": "zhaotong",
4668 | "name": "昭通"
4669 | },
4670 | {
4671 | "id": 328,
4672 | "spell": "zhenjiang",
4673 | "name": "镇江"
4674 | },
4675 | {
4676 | "id": 329,
4677 | "spell": "zhongwei",
4678 | "name": "中卫"
4679 | },
4680 | {
4681 | "id": 330,
4682 | "spell": "zhoukou",
4683 | "name": "周口"
4684 | },
4685 | {
4686 | "id": 331,
4687 | "spell": "zhoushan",
4688 | "name": "舟山"
4689 | },
4690 | {
4691 | "id": 332,
4692 | "spell": "zhumadian",
4693 | "name": "驻马店"
4694 | },
4695 | {
4696 | "id": 333,
4697 | "spell": "zhuzhou",
4698 | "name": "株洲"
4699 | },
4700 | {
4701 | "id": 334,
4702 | "spell": "zibo",
4703 | "name": "淄博"
4704 | },
4705 | {
4706 | "id": 335,
4707 | "spell": "zigong",
4708 | "name": "自贡"
4709 | },
4710 | {
4711 | "id": 336,
4712 | "spell": "ziyang",
4713 | "name": "资阳"
4714 | },
4715 | {
4716 | "id": 337,
4717 | "spell": "zunyi",
4718 | "name": "遵义"
4719 | },
4720 | {
4721 | "id": 929,
4722 | "spell": "zanhuang",
4723 | "name": "赞皇"
4724 | },
4725 | {
4726 | "id": 930,
4727 | "spell": "zengcheng",
4728 | "name": "增城"
4729 | },
4730 | {
4731 | "id": 931,
4732 | "spell": "zhangjiagang",
4733 | "name": "张家港"
4734 | },
4735 | {
4736 | "id": 932,
4737 | "spell": "zhangping",
4738 | "name": "漳平"
4739 | },
4740 | {
4741 | "id": 933,
4742 | "spell": "zhangpu",
4743 | "name": "漳浦"
4744 | },
4745 | {
4746 | "id": 934,
4747 | "spell": "zhangqiu",
4748 | "name": "章丘"
4749 | },
4750 | {
4751 | "id": 935,
4752 | "spell": "zhangshu",
4753 | "name": "樟树"
4754 | },
4755 | {
4756 | "id": 936,
4757 | "spell": "zhanhua",
4758 | "name": "沾化"
4759 | },
4760 | {
4761 | "id": 937,
4762 | "spell": "zhaoxian",
4763 | "name": "赵县"
4764 | },
4765 | {
4766 | "id": 938,
4767 | "spell": "zhaoyuan",
4768 | "name": "招远"
4769 | },
4770 | {
4771 | "id": 939,
4772 | "spell": "zhengding",
4773 | "name": "正定"
4774 | },
4775 | {
4776 | "id": 940,
4777 | "spell": "zhenghe",
4778 | "name": "政和"
4779 | },
4780 | {
4781 | "id": 941,
4782 | "spell": "zherong",
4783 | "name": "柘荣"
4784 | },
4785 | {
4786 | "id": 942,
4787 | "spell": "zhongmou",
4788 | "name": "中牟"
4789 | },
4790 | {
4791 | "id": 943,
4792 | "spell": "zhongxian",
4793 | "name": "忠县"
4794 | },
4795 | {
4796 | "id": 944,
4797 | "spell": "zhouning",
4798 | "name": "周宁"
4799 | },
4800 | {
4801 | "id": 945,
4802 | "spell": "zhouzhi",
4803 | "name": "周至"
4804 | },
4805 | {
4806 | "id": 946,
4807 | "spell": "zhuanghe",
4808 | "name": "庄河"
4809 | },
4810 | {
4811 | "id": 947,
4812 | "spell": "zhucheng",
4813 | "name": "诸城"
4814 | },
4815 | {
4816 | "id": 948,
4817 | "spell": "zhuji",
4818 | "name": "诸暨"
4819 | },
4820 | {
4821 | "id": 949,
4822 | "spell": "zijin",
4823 | "name": "紫金"
4824 | },
4825 | {
4826 | "id": 950,
4827 | "spell": "zixi",
4828 | "name": "资溪"
4829 | },
4830 | {
4831 | "id": 951,
4832 | "spell": "zoucheng",
4833 | "name": "邹城"
4834 | },
4835 | {
4836 | "id": 952,
4837 | "spell": "zouping",
4838 | "name": "邹平"
4839 | },
4840 | {
4841 | "id": 953,
4842 | "spell": "zunhua",
4843 | "name": "遵化"
4844 | }
4845 | ]
4846 | }
4847 | }
4848 | }
4849 |
--------------------------------------------------------------------------------
/static/mock/detail.json:
--------------------------------------------------------------------------------
1 | {
2 | "ret": true,
3 | "data": {
4 | "sightName": "大连圣亚海洋世界(AAAA景区)",
5 | "bannerImg": "http://img1.qunarzz.com/sight/p0/201404/23/04b92c99462687fa1ba45c1b5ba4ad77.jpg_600x330_bf9c4904.jpg",
6 | "commentsNum": 27,
7 | "gallaryImgs": [
8 | "http://img1.qunarzz.com/sight/p0/201404/23/04b92c99462687fa1ba45c1b5ba4ad77.jpg_800x800_70debc93.jpg",
9 | "http://img1.qunarzz.com/sight/p0/1709/76/7691528bc7d7ad3ca3.img.png_800x800_9ef05ee7.png"
10 | ],
11 | "categoryList": [
12 | {
13 | "title": "成人票",
14 | "children": [
15 | {
16 | "title": "成人三馆联票",
17 | "children": [
18 | {
19 | "title": "成人三馆联票 - 某一连锁店销售"
20 | }
21 | ]
22 | },
23 | {
24 | "title": "成人五馆联票"
25 | }
26 | ]
27 | },
28 | {
29 | "title": "学生票"
30 | },
31 | {
32 | "title": "儿童票"
33 | },
34 | {
35 | "title": "特惠票"
36 | }
37 | ]
38 | }
39 | }
--------------------------------------------------------------------------------
/static/mock/index.json:
--------------------------------------------------------------------------------
1 | {
2 | "ret": true,
3 | "data": {
4 | "city": "北京",
5 | "swiperList": [{
6 | "id": "0001",
7 | "src": "http://img1.qunarzz.com/piao/fusion/1810/5d/b63d846958a4702.jpg_750x200_8129cfc3.jpg"
8 | }, {
9 | "id": "0002",
10 | "src": "http://img1.qunarzz.com/piao/fusion/1810/eb/5cacf42b59e91e02.jpg_750x200_9c0a77b0.jpg"
11 | }, {
12 | "id": "0003",
13 | "src": "http://img1.qunarzz.com/piao/fusion/1810/29/45722c73b5b66902.jpg_750x200_231ae61f.jpg"
14 | }, {
15 | "id": "0004",
16 | "src": "http://img1.qunarzz.com/piao/fusion/1809/c6/2467595fffc3b302.jpg_750x200_cca13d51.jpg"
17 | }],
18 | "iconList": [{
19 | "id": "0001",
20 | "iconSrc": "http://img1.qunarzz.com/piao/fusion/1803/95/f3dd6c383aeb3b02.png",
21 | "desc":" 热门景点有很多"
22 | }, {
23 | "id": "0002",
24 | "iconSrc": "http://img1.qunarzz.com/piao/fusion/1803/50/26ffa31b56646402.png",
25 | "desc": "海洋馆"
26 | }, {
27 | "id": "0003",
28 | "iconSrc": "http://img1.qunarzz.com/piao/fusion/1803/95/8246f27355943202.png",
29 | "desc": "游乐场"
30 | }, {
31 | "id": "0004",
32 | "iconSrc": "http://img1.qunarzz.com/piao/fusion/1803/ab/6f7d6e44963c9302.png",
33 | "desc": "泡温泉"
34 | }, {
35 | "id": "0005",
36 | "iconSrc": "http://img1.qunarzz.com/piao/fusion/1804/5a/13ceb38dcf262f02.png",
37 | "desc": "一日游"
38 | }, {
39 | "id": "0006",
40 | "iconSrc": "http://img1.qunarzz.com/piao/fusion/1804/ff/fdf170ee89594b02.png",
41 | "desc": "福州必游"
42 | }, {
43 | "id": "0007",
44 | "iconSrc": "http://img1.qunarzz.com/piao/fusion/1803/96/c70f1e85ae4a4f02.png",
45 | "desc": "武夷山"
46 | }, {
47 | "id": "0008",
48 | "iconSrc": "https://img1.qunarzz.com/piao/fusion/1803/20/831d62d2e1c7be02.png",
49 | "desc": "打卡圣地"
50 | }, {
51 | "id": "0009",
52 | "iconSrc": "https://img1.qunarzz.com/piao/fusion/1803/20/831d62d2e1c7be02.png",
53 | "desc": "打卡圣地"
54 | }],
55 | "recommendList": [{
56 | "id": "0001",
57 | "imgSrc": "http://img1.qunarzz.com/sight/p0/1809/cc/cc238b335afb8479a3.water.jpg_250x250_12bc1f4a.jpg",
58 | "title": "福州动物园世界",
59 | "desc": "浪漫福州首站,浪漫主题的动物园世界"
60 | }, {
61 | "id": "0002",
62 | "imgSrc": "http://img1.qunarzz.com/sight/p0/1506/f6/f6b727f036fe5d6d.water.jpg_250x250_d22ecf6b.jpg",
63 | "title": "鼓浪屿",
64 | "desc": "浪漫福州首站,浪漫主题的动物园世界"
65 | }, {
66 | "id": "0003",
67 | "imgSrc": "http://img1.qunarzz.com/sight/p0/1711/4f/4fba5e793fe8ef5ca3.img.jpg_250x250_856d43db.jpg",
68 | "title": "厦门园林植物园",
69 | "desc": "浪漫福州首站,浪漫主题的动物园世界"
70 | }, {
71 | "id": "0004",
72 | "imgSrc": "http://img1.qunarzz.com/sight/p0/1505/63/63ce24958e5e92e2.water.jpg_250x250_0a659250.jpg",
73 | "title": "三坊七巷",
74 | "desc": "浪漫福州首站,浪漫主题的动物园世界"
75 | }],
76 | "weekendList": [{
77 | "id": "0001",
78 | "imgSrc": "http://img1.qunarzz.com/sight/source/1509/b5/07bc81fc254ed6.jpg_r_640x214_8879c815.jpg",
79 | "title": "土楼不能说的秘密",
80 | "desc": "一座座神秘的建筑,一段段传奇的历史"
81 | }, {
82 | "id": "0002",
83 | "imgSrc": "http://img1.qunarzz.com/sight/source/1509/69/3f535648c26681.jpg_r_640x214_146b5b8e.jpg",
84 | "title": "秋意浓,来厦门",
85 | "desc": "这里的秋,多了一点柔情"
86 | }, {
87 | "id": "0003",
88 | "imgSrc": "http://img1.qunarzz.com/sight/source/1711/15/1cdd5ee885686b.jpg_r_640x214_46768064.jpg",
89 | "title": "厦门必游TOP10",
90 | "desc": "来厦门感受一把小资情调"
91 | }, {
92 | "id": "0004",
93 | "imgSrc": "http://img1.qunarzz.com/sight/source/1509/b3/197875fd646330.jpg_r_640x214_d089dccc.jpg",
94 | "title": "秋高气爽登高去",
95 | "desc": "来厦门感受一把小资情调"
96 | }, {
97 | "id": "0005",
98 | "imgSrc": "http://img1.qunarzz.com/sight/source/1505/fc/c9ac09bb08e382.jpg_r_640x214_6b9eb488.jpg",
99 | "title": "不一样的福州",
100 | "desc": "来厦门感受一把小资情调"
101 | }]
102 | }
103 | }
--------------------------------------------------------------------------------