├── AwesomePOS
├── 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
│ └── logo.png
│ ├── components
│ ├── common
│ │ └── leftNav.vue
│ └── page
│ │ ├── HelloWorld.vue
│ │ └── Pos.vue
│ ├── main.js
│ └── router
│ └── index.js
├── README.md
└── Travel
├── LICENSE
├── 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
└── mock
├── city.json
├── detail.json
└── index.json
/AwesomePOS/README.md:
--------------------------------------------------------------------------------
1 | #awesomepos
2 | vue-cli 收银员项目
3 |
4 | > A Vue.js project
5 |
6 | ## Build Setup
7 |
8 | ``` bash
9 | # install dependencies
10 | npm install
11 |
12 | # serve with hot reload at localhost:8080
13 | npm run dev
14 |
15 | # build for production with minification
16 | npm run build
17 |
18 | # build for production and view the bundle analyzer report
19 | npm run build --report
20 | ```
21 |
22 | For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
23 |
--------------------------------------------------------------------------------
/AwesomePOS/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 |
--------------------------------------------------------------------------------
/AwesomePOS/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 |
--------------------------------------------------------------------------------
/AwesomePOS/build/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DWL716/vue/50e1bd1ef36c6e8a49872dc9a6a357f7202c1998/AwesomePOS/build/logo.png
--------------------------------------------------------------------------------
/AwesomePOS/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 |
--------------------------------------------------------------------------------
/AwesomePOS/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 |
--------------------------------------------------------------------------------
/AwesomePOS/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 | }
40 | },
41 | module: {
42 | rules: [
43 | ...(config.dev.useEslint ? [createLintingRule()] : []),
44 | {
45 | test: /\.vue$/,
46 | loader: 'vue-loader',
47 | options: vueLoaderConfig
48 | },
49 | {
50 | test: /\.js$/,
51 | loader: 'babel-loader',
52 | include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
53 | },
54 | {
55 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
56 | loader: 'url-loader',
57 | options: {
58 | limit: 10000,
59 | name: utils.assetsPath('img/[name].[hash:7].[ext]')
60 | }
61 | },
62 | {
63 | test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
64 | loader: 'url-loader',
65 | options: {
66 | limit: 10000,
67 | name: utils.assetsPath('media/[name].[hash:7].[ext]')
68 | }
69 | },
70 | {
71 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
72 | loader: 'url-loader',
73 | options: {
74 | limit: 10000,
75 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
76 | }
77 | }
78 | ]
79 | },
80 | node: {
81 | // prevent webpack from injecting useless setImmediate polyfill because Vue
82 | // source contains it (although only uses it if it's native).
83 | setImmediate: false,
84 | // prevent webpack from injecting mocks to Node native modules
85 | // that does not make sense for the client
86 | dgram: 'empty',
87 | fs: 'empty',
88 | net: 'empty',
89 | tls: 'empty',
90 | child_process: 'empty'
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/AwesomePOS/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 |
--------------------------------------------------------------------------------
/AwesomePOS/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 |
--------------------------------------------------------------------------------
/AwesomePOS/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 |
--------------------------------------------------------------------------------
/AwesomePOS/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 |
15 | // Various Dev Server settings
16 | host: 'localhost', // can be overwritten by process.env.HOST
17 | port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
18 | autoOpenBrowser: false,
19 | errorOverlay: true,
20 | notifyOnErrors: true,
21 | poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
22 |
23 | // Use Eslint Loader?
24 | // If true, your code will be linted during bundling and
25 | // linting errors and warnings will be shown in the console.
26 | useEslint: true,
27 | // If true, eslint errors and warnings will also be shown in the error overlay
28 | // in the browser.
29 | showEslintErrorsInOverlay: false,
30 |
31 | /**
32 | * Source Maps
33 | */
34 |
35 | // https://webpack.js.org/configuration/devtool/#development
36 | devtool: 'cheap-module-eval-source-map',
37 |
38 | // If you have problems debugging vue-files in devtools,
39 | // set this to false - it *may* help
40 | // https://vue-loader.vuejs.org/en/options.html#cachebusting
41 | cacheBusting: true,
42 |
43 | cssSourceMap: true
44 | },
45 |
46 | build: {
47 | // Template for index.html
48 | index: path.resolve(__dirname, '../dist/index.html'),
49 |
50 | // Paths
51 | assetsRoot: path.resolve(__dirname, '../dist'),
52 | assetsSubDirectory: 'static',
53 | assetsPublicPath: './',
54 |
55 | /**
56 | * Source Maps
57 | */
58 |
59 | productionSourceMap: true,
60 | // https://webpack.js.org/configuration/devtool/#production
61 | devtool: '#source-map',
62 |
63 | // Gzip off by default as many popular static hosts such as
64 | // Surge or Netlify already gzip all static assets for you.
65 | // Before setting to `true`, make sure to:
66 | // npm install --save-dev compression-webpack-plugin
67 | productionGzip: false,
68 | productionGzipExtensions: ['js', 'css'],
69 |
70 | // Run the build command with an extra argument to
71 | // View the bundle analyzer report after build finishes:
72 | // `npm run build --report`
73 | // Set to `true` or `false` to always turn it on or off
74 | bundleAnalyzerReport: process.env.npm_config_report
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/AwesomePOS/config/prod.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | module.exports = {
3 | NODE_ENV: '"production"'
4 | }
5 |
--------------------------------------------------------------------------------
/AwesomePOS/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | AwesomePOS-快餐收银系统
7 |
8 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/AwesomePOS/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "awesomepos",
3 | "version": "1.0.0",
4 | "description": "A Vue.js project",
5 | "author": "DWL716 <1239787435@qq.com>",
6 | "private": true,
7 | "scripts": {
8 | "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
9 | "start": "npm run dev",
10 | "lint": "eslint --ext .js,.vue src",
11 | "build": "node build/build.js"
12 | },
13 | "dependencies": {
14 | "axios": "^0.18.0",
15 | "element-ui": "^2.6.1",
16 | "vue": "^2.5.2",
17 | "vue-router": "^3.0.1"
18 | },
19 | "devDependencies": {
20 | "autoprefixer": "^7.1.2",
21 | "babel-core": "^6.22.1",
22 | "babel-eslint": "^8.2.1",
23 | "babel-helper-vue-jsx-merge-props": "^2.0.3",
24 | "babel-loader": "^7.1.1",
25 | "babel-plugin-syntax-jsx": "^6.18.0",
26 | "babel-plugin-transform-runtime": "^6.22.0",
27 | "babel-plugin-transform-vue-jsx": "^3.5.0",
28 | "babel-preset-env": "^1.3.2",
29 | "babel-preset-stage-2": "^6.22.0",
30 | "chalk": "^2.0.1",
31 | "copy-webpack-plugin": "^4.0.1",
32 | "css-loader": "^0.28.0",
33 | "eslint": "^4.15.0",
34 | "eslint-config-standard": "^10.2.1",
35 | "eslint-friendly-formatter": "^3.0.0",
36 | "eslint-loader": "^1.7.1",
37 | "eslint-plugin-import": "^2.7.0",
38 | "eslint-plugin-node": "^5.2.0",
39 | "eslint-plugin-promise": "^3.4.0",
40 | "eslint-plugin-standard": "^3.0.1",
41 | "eslint-plugin-vue": "^4.0.0",
42 | "extract-text-webpack-plugin": "^3.0.0",
43 | "file-loader": "^1.1.4",
44 | "friendly-errors-webpack-plugin": "^1.6.1",
45 | "html-webpack-plugin": "^2.30.1",
46 | "node-notifier": "^5.1.2",
47 | "optimize-css-assets-webpack-plugin": "^3.2.0",
48 | "ora": "^1.2.0",
49 | "portfinder": "^1.0.13",
50 | "postcss-import": "^11.0.0",
51 | "postcss-loader": "^2.0.8",
52 | "postcss-url": "^7.2.1",
53 | "rimraf": "^2.6.0",
54 | "semver": "^5.3.0",
55 | "shelljs": "^0.7.6",
56 | "uglifyjs-webpack-plugin": "^1.1.1",
57 | "url-loader": "^0.5.8",
58 | "vue-loader": "^13.3.0",
59 | "vue-style-loader": "^3.0.1",
60 | "vue-template-compiler": "^2.5.2",
61 | "webpack": "^3.6.0",
62 | "webpack-bundle-analyzer": "^2.9.0",
63 | "webpack-dev-server": "^2.9.1",
64 | "webpack-merge": "^4.1.0"
65 | },
66 | "engines": {
67 | "node": ">= 6.0.0",
68 | "npm": ">= 3.0.0"
69 | },
70 | "browserslist": [
71 | "> 1%",
72 | "last 2 versions",
73 | "not ie <= 8"
74 | ]
75 | }
76 |
--------------------------------------------------------------------------------
/AwesomePOS/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
19 |
20 |
38 |
--------------------------------------------------------------------------------
/AwesomePOS/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DWL716/vue/50e1bd1ef36c6e8a49872dc9a6a357f7202c1998/AwesomePOS/src/assets/logo.png
--------------------------------------------------------------------------------
/AwesomePOS/src/components/common/leftNav.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
收银
7 |
8 | -
9 |
10 |
店铺
11 |
12 | -
13 |
14 |
商品
15 |
16 | -
17 |
18 |
分类
19 |
20 | -
21 |
22 |
会员
23 |
24 | -
25 |
26 |
设置
27 |
28 |
29 |
30 |
31 |
32 |
37 |
38 |
63 |
64 |
--------------------------------------------------------------------------------
/AwesomePOS/src/components/page/HelloWorld.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{ msg }}
4 |
Essential Links
5 |
48 |
Ecosystem
49 |
83 |
84 |
85 |
86 |
96 |
97 |
98 |
114 |
--------------------------------------------------------------------------------
/AwesomePOS/src/components/page/Pos.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | 删除
14 | 增加
15 |
16 |
17 |
18 | 数量:{{totalCount}} 金额:{{totalMoney}}
19 |
20 | 挂单
21 | 删除
22 | 结账
23 |
24 |
25 | 挂单
26 | 外卖
27 |
28 |
29 |
30 |
31 |
常用商品
32 |
33 |
34 | -
35 | {{goods.goodsName}}
36 | ¥{{goods.price}}元
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 | -
48 |
49 |
50 |
51 | {{type0.goodsName}}
52 | ¥{{type0.price}}元
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 | -
61 |
62 |
63 |
64 | {{type0.goodsName}}
65 | ¥{{type0.price}}元
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 | -
74 |
75 |
76 |
77 | {{type0.goodsName}}
78 | ¥{{type0.price}}元
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 | -
87 |
88 |
89 |
90 | {{type0.goodsName}}
91 | ¥{{type0.price}}元
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
236 |
237 |
314 |
--------------------------------------------------------------------------------
/AwesomePOS/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 ElementUI from 'element-ui'
7 | import 'element-ui/lib/theme-chalk/index.css'
8 |
9 | Vue.config.productionTip = false
10 | Vue.use(ElementUI)
11 | /* eslint-disable no-new */
12 | new Vue({
13 | el: '#app',
14 | router,
15 | components: { App },
16 | template: ''
17 |
18 | })
19 |
--------------------------------------------------------------------------------
/AwesomePOS/src/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Router from 'vue-router'
3 | import HelloWorld from '@/components/page/HelloWorld'
4 | import Pos from '@/components/page/Pos'
5 |
6 | Vue.use(Router)
7 |
8 | export default new Router({
9 | routes: [
10 | {
11 | path: '/pos',
12 | name: 'HelloWorld',
13 | component: HelloWorld
14 | },
15 | {
16 | path:'/',
17 | name:'pos',
18 | component:Pos
19 | }
20 | ]
21 | })
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vue
2 | vue项目
3 |
--------------------------------------------------------------------------------
/Travel/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2018 Dell-Lee
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 | the Software, and to permit persons to whom the Software is furnished to do so,
10 | subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/Travel/README.md:
--------------------------------------------------------------------------------
1 | # travel
2 |
3 | > A Vue.js project
4 |
5 | ## Build Setup
6 |
7 | ``` bash
8 | # install dependencies
9 | npm install
10 |
11 | # serve with hot reload at localhost:8080
12 | npm run dev
13 |
14 | # build for production with minification
15 | npm run build
16 |
17 | # build for production and view the bundle analyzer report
18 | npm run build --report
19 | ```
20 |
21 | For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
22 |
--------------------------------------------------------------------------------
/Travel/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 |
--------------------------------------------------------------------------------
/Travel/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 |
--------------------------------------------------------------------------------
/Travel/build/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DWL716/vue/50e1bd1ef36c6e8a49872dc9a6a357f7202c1998/Travel/build/logo.png
--------------------------------------------------------------------------------
/Travel/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 |
--------------------------------------------------------------------------------
/Travel/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 |
--------------------------------------------------------------------------------
/Travel/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 |
--------------------------------------------------------------------------------
/Travel/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 |
--------------------------------------------------------------------------------
/Travel/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 |
--------------------------------------------------------------------------------
/Travel/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 |
--------------------------------------------------------------------------------
/Travel/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 fiddler charles
11 | assetsSubDirectory: 'static',
12 | assetsPublicPath: '/project',
13 | proxyTable: {
14 | '/api': {
15 | target: 'http://localhost:80'
16 | }
17 | },
18 |
19 | // Various Dev Server settings
20 | host: 'localhost', // can be overwritten by process.env.HOST
21 | port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
22 | autoOpenBrowser: false,
23 | errorOverlay: true,
24 | notifyOnErrors: true,
25 | poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
26 |
27 | // Use Eslint Loader?
28 | // If true, your code will be linted during bundling and
29 | // linting errors and warnings will be shown in the console.
30 | useEslint: true,
31 | // If true, eslint errors and warnings will also be shown in the error overlay
32 | // in the browser.
33 | showEslintErrorsInOverlay: false,
34 |
35 | /**
36 | * Source Maps
37 | */
38 |
39 | // https://webpack.js.org/configuration/devtool/#development
40 | devtool: 'cheap-module-eval-source-map',
41 |
42 | // If you have problems debugging vue-files in devtools,
43 | // set this to false - it *may* help
44 | // https://vue-loader.vuejs.org/en/options.html#cachebusting
45 | cacheBusting: true,
46 |
47 | cssSourceMap: true
48 | },
49 |
50 | build: {
51 | // Template for index.html
52 | index: path.resolve(__dirname, '../dist/index.html'),
53 |
54 | // Paths
55 | assetsRoot: path.resolve(__dirname, '../dist'),
56 | assetsSubDirectory: 'static',
57 | assetsPublicPath: '/',
58 |
59 | /**
60 | * Source Maps
61 | */
62 |
63 | productionSourceMap: true,
64 | // https://webpack.js.org/configuration/devtool/#production
65 | devtool: '#source-map',
66 |
67 | // Gzip off by default as many popular static hosts such as
68 | // Surge or Netlify already gzip all static assets for you.
69 | // Before setting to `true`, make sure to:
70 | // npm install --save-dev compression-webpack-plugin
71 | productionGzip: false,
72 | productionGzipExtensions: ['js', 'css'],
73 |
74 | // Run the build command with an extra argument to
75 | // View the bundle analyzer report after build finishes:
76 | // `npm run build --report`
77 | // Set to `true` or `false` to always turn it on or off
78 | bundleAnalyzerReport: process.env.npm_config_report
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/Travel/config/prod.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | module.exports = {
3 | NODE_ENV: '"production"'
4 | }
5 |
--------------------------------------------------------------------------------
/Travel/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | travel
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Travel/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "travel",
3 | "version": "1.0.0",
4 | "description": "A Vue.js project",
5 | "author": "dell.lee",
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.17.1",
15 | "babel-polyfill": "^6.26.0",
16 | "better-scroll": "^1.8.1",
17 | "fastclick": "^1.0.6",
18 | "stylus": "^0.54.5",
19 | "stylus-loader": "^3.0.1",
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": "^5.1.2",
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": "^0.5.8",
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 |
--------------------------------------------------------------------------------
/Travel/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/Travel/src/assets/styles/border.css:
--------------------------------------------------------------------------------
1 | @charset "utf-8";
2 | .border,
3 | .border-top,
4 | .border-right,
5 | .border-bottom,
6 | .border-left,
7 | .border-topbottom,
8 | .border-rightleft,
9 | .border-topleft,
10 | .border-rightbottom,
11 | .border-topright,
12 | .border-bottomleft {
13 | position: relative;
14 | }
15 | .border::before,
16 | .border-top::before,
17 | .border-right::before,
18 | .border-bottom::before,
19 | .border-left::before,
20 | .border-topbottom::before,
21 | .border-topbottom::after,
22 | .border-rightleft::before,
23 | .border-rightleft::after,
24 | .border-topleft::before,
25 | .border-topleft::after,
26 | .border-rightbottom::before,
27 | .border-rightbottom::after,
28 | .border-topright::before,
29 | .border-topright::after,
30 | .border-bottomleft::before,
31 | .border-bottomleft::after {
32 | content: "\0020";
33 | overflow: hidden;
34 | position: absolute;
35 | }
36 | /* border
37 | * 因,边框是由伪元素区域遮盖在父级
38 | * 故,子级若有交互,需要对子级设置
39 | * 定位 及 z轴
40 | */
41 | .border::before {
42 | box-sizing: border-box;
43 | top: 0;
44 | left: 0;
45 | height: 100%;
46 | width: 100%;
47 | border: 1px solid #eaeaea;
48 | transform-origin: 0 0;
49 | }
50 | .border-top::before,
51 | .border-bottom::before,
52 | .border-topbottom::before,
53 | .border-topbottom::after,
54 | .border-topleft::before,
55 | .border-rightbottom::after,
56 | .border-topright::before,
57 | .border-bottomleft::before {
58 | left: 0;
59 | width: 100%;
60 | height: 1px;
61 | }
62 | .border-right::before,
63 | .border-left::before,
64 | .border-rightleft::before,
65 | .border-rightleft::after,
66 | .border-topleft::after,
67 | .border-rightbottom::before,
68 | .border-topright::after,
69 | .border-bottomleft::after {
70 | top: 0;
71 | width: 1px;
72 | height: 100%;
73 | }
74 | .border-top::before,
75 | .border-topbottom::before,
76 | .border-topleft::before,
77 | .border-topright::before {
78 | border-top: 1px solid #eaeaea;
79 | transform-origin: 0 0;
80 | }
81 | .border-right::before,
82 | .border-rightbottom::before,
83 | .border-rightleft::before,
84 | .border-topright::after {
85 | border-right: 1px solid #eaeaea;
86 | transform-origin: 100% 0;
87 | }
88 | .border-bottom::before,
89 | .border-topbottom::after,
90 | .border-rightbottom::after,
91 | .border-bottomleft::before {
92 | border-bottom: 1px solid #eaeaea;
93 | transform-origin: 0 100%;
94 | }
95 | .border-left::before,
96 | .border-topleft::after,
97 | .border-rightleft::after,
98 | .border-bottomleft::after {
99 | border-left: 1px solid #eaeaea;
100 | transform-origin: 0 0;
101 | }
102 | .border-top::before,
103 | .border-topbottom::before,
104 | .border-topleft::before,
105 | .border-topright::before {
106 | top: 0;
107 | }
108 | .border-right::before,
109 | .border-rightleft::after,
110 | .border-rightbottom::before,
111 | .border-topright::after {
112 | right: 0;
113 | }
114 | .border-bottom::before,
115 | .border-topbottom::after,
116 | .border-rightbottom::after,
117 | .border-bottomleft::after {
118 | bottom: 0;
119 | }
120 | .border-left::before,
121 | .border-rightleft::before,
122 | .border-topleft::after,
123 | .border-bottomleft::before {
124 | left: 0;
125 | }
126 | @media (max--moz-device-pixel-ratio: 1.49), (-webkit-max-device-pixel-ratio: 1.49), (max-device-pixel-ratio: 1.49), (max-resolution: 143dpi), (max-resolution: 1.49dppx) {
127 | /* 默认值,无需重置 */
128 | }
129 | @media (min--moz-device-pixel-ratio: 1.5) and (max--moz-device-pixel-ratio: 2.49), (-webkit-min-device-pixel-ratio: 1.5) and (-webkit-max-device-pixel-ratio: 2.49), (min-device-pixel-ratio: 1.5) and (max-device-pixel-ratio: 2.49), (min-resolution: 144dpi) and (max-resolution: 239dpi), (min-resolution: 1.5dppx) and (max-resolution: 2.49dppx) {
130 | .border::before {
131 | width: 200%;
132 | height: 200%;
133 | transform: scale(.5);
134 | }
135 | .border-top::before,
136 | .border-bottom::before,
137 | .border-topbottom::before,
138 | .border-topbottom::after,
139 | .border-topleft::before,
140 | .border-rightbottom::after,
141 | .border-topright::before,
142 | .border-bottomleft::before {
143 | transform: scaleY(.5);
144 | }
145 | .border-right::before,
146 | .border-left::before,
147 | .border-rightleft::before,
148 | .border-rightleft::after,
149 | .border-topleft::after,
150 | .border-rightbottom::before,
151 | .border-topright::after,
152 | .border-bottomleft::after {
153 | transform: scaleX(.5);
154 | }
155 | }
156 | @media (min--moz-device-pixel-ratio: 2.5), (-webkit-min-device-pixel-ratio: 2.5), (min-device-pixel-ratio: 2.5), (min-resolution: 240dpi), (min-resolution: 2.5dppx) {
157 | .border::before {
158 | width: 300%;
159 | height: 300%;
160 | transform: scale(.33333);
161 | }
162 | .border-top::before,
163 | .border-bottom::before,
164 | .border-topbottom::before,
165 | .border-topbottom::after,
166 | .border-topleft::before,
167 | .border-rightbottom::after,
168 | .border-topright::before,
169 | .border-bottomleft::before {
170 | transform: scaleY(.33333);
171 | }
172 | .border-right::before,
173 | .border-left::before,
174 | .border-rightleft::before,
175 | .border-rightleft::after,
176 | .border-topleft::after,
177 | .border-rightbottom::before,
178 | .border-topright::after,
179 | .border-bottomleft::after {
180 | transform: scaleX(.33333);
181 | }
182 | }
183 |
--------------------------------------------------------------------------------
/Travel/src/assets/styles/iconfont.css:
--------------------------------------------------------------------------------
1 | @font-face {font-family: "iconfont";
2 | src: url('./iconfont/iconfont.eot?t=1518407379870'); /* IE9*/
3 | src: url('./iconfont/iconfont.eot?t=1518407379870#iefix') format('embedded-opentype'), /* IE6-IE8 */
4 | url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAZkAAsAAAAACSwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFZW7kiDY21hcAAAAYAAAAB5AAAByJwL0bBnbHlmAAAB/AAAAk0AAAKoGB5WbGhlYWQAAARMAAAALwAAADYQerPqaGhlYQAABHwAAAAcAAAAJAfeA4dobXR4AAAEmAAAABMAAAAYF+kAAGxvY2EAAASsAAAADgAAAA4CkAGkbWF4cAAABLwAAAAfAAAAIAEVAF1uYW1lAAAE3AAAAUUAAAJtPlT+fXBvc3QAAAYkAAAAPgAAAFAP0gyTeJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2Bk/sM4gYGVgYOpk+kMAwNDP4RmfM1gxMjBwMDEwMrMgBUEpLmmMDgwVDybxNzwv4EhhrmZoQEozAiSAwAvnw0FeJzFkcENhDAMBMcETghRBk9elBFdPYgHVVCk24B1Ag8qYKOJsitHjmKgA5KYRQu2Y4RWpVbyxFDyliw/0tPovPnki2c/zlPp2z0yVT8rXNK9Jjraj89k37V+ayz7/3Yxh+1GT/SpErPxpRLz8VzRP+JHhe4CQWscEwAAAHicNZHPaxNBFMfnzWR3J8lmttnd7I8kk+1m252G1pWucVP8kVYpFkVQ8CT04sWbogepBw8FESootCdF8CKiB2mvWqlKETx48e5FpB76H9iD3TqJdnjzeTPM4zvfN4MUhA5+ki3iIQtNoGk0jy4jBOoktBnmEIpugiehFio112ZERCLUonZCToPbVm0nzbqxq2qqAQxacCxMM5FgAce7fXwSUocD+I36FXO8aZJVKHmi9SC/gF9ALYiaRv9Ifn5q1k5HLbqkm6Zvmo+oqigU44LB4IbrFJViSc1fKka9thV0cAC6L+oXr1ZGG+a1le5NPu4WAZaXwWqMstez1XpVxr26Y5m+NlKhXr0Sjdmw9KvsWTqPd5AceACygTeRKbtFVpg60r30LmIBcdbL3Okn+FswAWDmz60Zv6jkT6vUsx38rtPiVh571FQp/PBnLAOklJwHy3iP3Jd6qAiq7cLgSaRWtwdZAvhLPu968JE6IzQ/SzX4UKYBWcpP+XN+vkCrNQqb1CnC53KgDa1JvU/kDplDZeSiCKHxBEQfei1w2XAhtwy0FihxH5wAHAbS+Pf13UJhd31jwI217UJhe211QHhcIjVOzwypy7PDurnDitW17RPl5giULg05uB+hAsJ7yEANdFQ2GLZVrfrvZ3vVBLS0BTaDqB13MytMYBayVNpI/2eVbP1Z4TFAzMndYX7LXCbD4fzc/qJvGe/1sfIrfUxf1CP9NrPwb8H3n3EhOL7OxRvmNbwKn2rmC9Cxdxj7WqncYuyh3UHoLws4e6EAAAB4nGNgZGBgAOKHvzwz4vltvjJwszCAwLW1278i6P8NLAzMzUAuBwMTSBQAby0MrgB4nGNgZGBgbvjfwBDDwgACQJKRARWwAQBHDAJveJxjYWBgYH7JwMDCgIoBEp8BAQAAAAAAAHYAngDGAQYBVAAAeJxjYGRgYGBjCGRgZQABJiDmAkIGhv9gPgMAEUgBcwB4nGWPTU7DMBCFX/oHpBKqqGCH5AViASj9EatuWFRq911036ZOmyqJI8et1ANwHo7ACTgC3IA78EgnmzaWx9+8eWNPANzgBx6O3y33kT1cMjtyDRe4F65TfxBukF+Em2jjVbhF/U3YxzOmwm10YXmD17hi9oR3YQ8dfAjXcI1P4Tr1L+EG+Vu4iTv8CrfQ8erCPuZeV7iNRy/2x1YvnF6p5UHFockikzm/gple75KFrdLqnGtbxCZTg6BfSVOdaVvdU+zXQ+ciFVmTqgmrOkmMyq3Z6tAFG+fyUa8XiR6EJuVYY/62xgKOcQWFJQ6MMUIYZIjK6Og7VWb0r7FDwl57Vj3N53RbFNT/c4UBAvTPXFO6stJ5Ok+BPV8bUnV0K27LnpQ0kV7NSRKyQl7WtlRC6gE2ZVeOEXpc0Yk/KGdI/wAJWm7IAAAAeJxjYGKAAC4G7ICNkYmRmZGFkZWRjZGdgbGCPSszMa8kv5QtLTEvozSTrTi/tLg0n62ktAAozsAAAMscC3oAAA==') format('woff'),
5 | url('./iconfont/iconfont.ttf?t=1518407379870') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/
6 | url('./iconfont/iconfont.svg?t=1518407379870#iconfont') format('svg'); /* iOS 4.1- */
7 | }
8 |
9 | .iconfont {
10 | font-family:"iconfont" !important;
11 | font-size:16px;
12 | font-style:normal;
13 | -webkit-font-smoothing: antialiased;
14 | -moz-osx-font-smoothing: grayscale;
15 | }
16 |
--------------------------------------------------------------------------------
/Travel/src/assets/styles/iconfont/iconfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DWL716/vue/50e1bd1ef36c6e8a49872dc9a6a357f7202c1998/Travel/src/assets/styles/iconfont/iconfont.eot
--------------------------------------------------------------------------------
/Travel/src/assets/styles/iconfont/iconfont.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
46 |
--------------------------------------------------------------------------------
/Travel/src/assets/styles/iconfont/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DWL716/vue/50e1bd1ef36c6e8a49872dc9a6a357f7202c1998/Travel/src/assets/styles/iconfont/iconfont.ttf
--------------------------------------------------------------------------------
/Travel/src/assets/styles/iconfont/iconfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DWL716/vue/50e1bd1ef36c6e8a49872dc9a6a357f7202c1998/Travel/src/assets/styles/iconfont/iconfont.woff
--------------------------------------------------------------------------------
/Travel/src/assets/styles/mixins.styl:
--------------------------------------------------------------------------------
1 | ellipsis()
2 | overflow: hidden
3 | white-space: nowrap
4 | text-overflow: ellipsis
5 |
--------------------------------------------------------------------------------
/Travel/src/assets/styles/reset.css:
--------------------------------------------------------------------------------
1 | @charset "utf-8";html{background-color:#fff;color:#000;font-size:12px}
2 | body,ul,ol,dl,dd,h1,h2,h3,h4,h5,h6,figure,form,fieldset,legend,input,textarea,button,p,blockquote,th,td,pre,xmp{margin:0;padding:0}
3 | body,input,textarea,button,select,pre,xmp,tt,code,kbd,samp{line-height:1.5;font-family:tahoma,arial,"Hiragino Sans GB",simsun,sans-serif}
4 | h1,h2,h3,h4,h5,h6,small,big,input,textarea,button,select{font-size:100%}
5 | h1,h2,h3,h4,h5,h6{font-family:tahoma,arial,"Hiragino Sans GB","微软雅黑",simsun,sans-serif}
6 | h1,h2,h3,h4,h5,h6,b,strong{font-weight:normal}
7 | address,cite,dfn,em,i,optgroup,var{font-style:normal}
8 | table{border-collapse:collapse;border-spacing:0;text-align:left}
9 | caption,th{text-align:inherit}
10 | ul,ol,menu{list-style:none}
11 | fieldset,img{border:0}
12 | img,object,input,textarea,button,select{vertical-align:middle}
13 | article,aside,footer,header,section,nav,figure,figcaption,hgroup,details,menu{display:block}
14 | audio,canvas,video{display:inline-block;*display:inline;*zoom:1}
15 | blockquote:before,blockquote:after,q:before,q:after{content:"\0020"}
16 | textarea{overflow:auto;resize:vertical}
17 | input,textarea,button,select,a{outline:0 none;border: none;}
18 | button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}
19 | mark{background-color:transparent}
20 | a,ins,s,u,del{text-decoration:none}
21 | sup,sub{vertical-align:baseline}
22 | html {overflow-x: hidden;height: 100%;font-size: 50px;-webkit-tap-highlight-color: transparent;}
23 | body {font-family: Arial, "Microsoft Yahei", "Helvetica Neue", Helvetica, sans-serif;color: #333;font-size: .28em;line-height: 1;-webkit-text-size-adjust: none;}
24 | hr {height: .02rem;margin: .1rem 0;border: medium none;border-top: .02rem solid #cacaca;}
25 | a {color: #25a4bb;text-decoration: none;}
26 |
--------------------------------------------------------------------------------
/Travel/src/assets/styles/varibles.styl:
--------------------------------------------------------------------------------
1 | $bgColor = #00bcd4
2 | $darkTextColor = #333
3 | $headerHeight = .86rem
4 |
--------------------------------------------------------------------------------
/Travel/src/common/fade/FadeAnimation.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
19 |
--------------------------------------------------------------------------------
/Travel/src/common/gallary/Gallary.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
45 |
46 |
70 |
--------------------------------------------------------------------------------
/Travel/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 'babel-polyfill'
9 | import store from './store'
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: { App },
25 | template: ''
26 | })
27 |
--------------------------------------------------------------------------------
/Travel/src/pages/city/City.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
14 |
15 |
16 |
17 |
60 |
61 |
64 |
--------------------------------------------------------------------------------
/Travel/src/pages/city/components/Alphabet.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
13 | {{item}}
14 |
15 |
16 |
17 |
18 |
70 |
71 |
87 |
--------------------------------------------------------------------------------
/Travel/src/pages/city/components/Header.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
15 |
16 |
36 |
--------------------------------------------------------------------------------
/Travel/src/pages/city/components/List.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
25 |
31 |
{{key}}
32 |
33 |
39 | {{innerItem.name}}
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
82 |
83 |
123 |
--------------------------------------------------------------------------------
/Travel/src/pages/city/components/Search.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
11 |
12 | -
18 | {{item.name}}
19 |
20 | -
21 | 没有找到匹配数据
22 |
23 |
24 |
25 |
26 |
27 |
28 |
82 |
83 |
113 |
--------------------------------------------------------------------------------
/Travel/src/pages/detail/Detail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
59 |
60 |
64 |
--------------------------------------------------------------------------------
/Travel/src/pages/detail/components/Banner.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
![]()
5 |
6 |
7 | {{this.sightName}}
8 |
9 |
10 |
11 | {{this.bannerImgs.length}}
12 |
13 |
14 |
15 |
16 |
21 |
22 |
23 |
24 |
25 |
54 |
55 |
87 |
--------------------------------------------------------------------------------
/Travel/src/pages/detail/components/Header.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
20 |
21 |
22 |
23 |
55 |
56 |
92 |
--------------------------------------------------------------------------------
/Travel/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 |
46 |
--------------------------------------------------------------------------------
/Travel/src/pages/home/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
68 |
69 |
72 |
--------------------------------------------------------------------------------
/Travel/src/pages/home/components/Header.vue:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
28 |
29 |
62 |
--------------------------------------------------------------------------------
/Travel/src/pages/home/components/Icons.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
![]()
12 |
13 |
{{item.desc}}
14 |
15 |
16 |
17 |
18 |
19 |
20 |
48 |
49 |
87 |
--------------------------------------------------------------------------------
/Travel/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 |
67 |
--------------------------------------------------------------------------------
/Travel/src/pages/home/components/Swiper.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
33 |
34 |
46 |
--------------------------------------------------------------------------------
/Travel/src/pages/home/components/Weekend.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
周末去哪儿
4 |
5 | -
10 |
11 |
![]()
12 |
13 |
14 |
{{item.title}}
15 |
{{item.desc}}
16 |
17 |
18 |
19 |
20 |
21 |
22 |
30 |
31 |
54 |
--------------------------------------------------------------------------------
/Travel/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 |
--------------------------------------------------------------------------------
/Travel/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 | mutations
11 | })
12 |
--------------------------------------------------------------------------------
/Travel/src/store/mutations.js:
--------------------------------------------------------------------------------
1 | export default {
2 | changeCity (state, city) {
3 | state.city = city
4 | try {
5 | localStorage.city = city
6 | } catch (e) {}
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Travel/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
10 | }
11 |
--------------------------------------------------------------------------------
/Travel/static/mock/city.json:
--------------------------------------------------------------------------------
1 | {
2 | "ret": true,
3 | "data":{
4 | "hotCities": [{
5 | "id": 1,
6 | "spell": "beijing",
7 | "name": "北京"
8 | }, {
9 | "id": 3,
10 | "spell": "shanghai",
11 | "name": "上海"
12 | }, {
13 | "id": 47,
14 | "spell": "xian",
15 | "name": "西安"
16 | }, {
17 | "id": 239,
18 | "spell": "sanya",
19 | "name": "三亚"
20 | }, {
21 | "id": 188,
22 | "spell": "lijiang",
23 | "name": "丽江"
24 | }, {
25 | "id": 125,
26 | "spell": "guilin",
27 | "name": "桂林"
28 | }],
29 | "cities": {
30 | "A": [{
31 | "id": 56,
32 | "spell": "aba",
33 | "name": "阿坝"
34 | }, {
35 | "id": 57,
36 | "spell": "akesu",
37 | "name": "阿克苏"
38 | }, {
39 | "id": 58,
40 | "spell": "alashanmeng",
41 | "name": "阿拉善盟"
42 | }, {
43 | "id": 59,
44 | "spell": "aletai",
45 | "name": "阿勒泰"
46 | }, {
47 | "id": 60,
48 | "spell": "ali",
49 | "name": "阿里"
50 | }, {
51 | "id": 61,
52 | "spell": "ankang",
53 | "name": "安康"
54 | }, {
55 | "id": 62,
56 | "spell": "anqing",
57 | "name": "安庆"
58 | }, {
59 | "id": 63,
60 | "spell": "anshan",
61 | "name": "鞍山"
62 | }, {
63 | "id": 64,
64 | "spell": "anshun",
65 | "name": "安顺"
66 | }, {
67 | "id": 65,
68 | "spell": "anyang",
69 | "name": "安阳"
70 | }, {
71 | "id": 338,
72 | "spell": "acheng",
73 | "name": "阿城"
74 | }, {
75 | "id": 339,
76 | "spell": "anfu",
77 | "name": "安福"
78 | }, {
79 | "id": 340,
80 | "spell": "anji",
81 | "name": "安吉"
82 | }, {
83 | "id": 341,
84 | "spell": "anning",
85 | "name": "安宁"
86 | }, {
87 | "id": 342,
88 | "spell": "anqiu",
89 | "name": "安丘"
90 | }, {
91 | "id": 343,
92 | "spell": "anxi",
93 | "name": "安溪"
94 | }, {
95 | "id": 344,
96 | "spell": "anyi",
97 | "name": "安义"
98 | }, {
99 | "id": 345,
100 | "spell": "anyuan",
101 | "name": "安远"
102 | }],
103 | "B": [{
104 | "id": 1,
105 | "spell": "beijing",
106 | "name": "北京"
107 | }, {
108 | "id": 66,
109 | "spell": "baicheng",
110 | "name": "白城"
111 | }, {
112 | "id": 67,
113 | "spell": "baise",
114 | "name": "百色"
115 | }, {
116 | "id": 68,
117 | "spell": "baishan",
118 | "name": "白山"
119 | }, {
120 | "id": 69,
121 | "spell": "baiyin",
122 | "name": "白银"
123 | }, {
124 | "id": 70,
125 | "spell": "bangbu",
126 | "name": "蚌埠"
127 | }, {
128 | "id": 71,
129 | "spell": "baoding",
130 | "name": "保定"
131 | }, {
132 | "id": 72,
133 | "spell": "baoji",
134 | "name": "宝鸡"
135 | }, {
136 | "id": 73,
137 | "spell": "baoshan",
138 | "name": "保山"
139 | }, {
140 | "id": 74,
141 | "spell": "baotou",
142 | "name": "包头"
143 | }, {
144 | "id": 75,
145 | "spell": "bayannaoer",
146 | "name": "巴彦淖尔"
147 | }, {
148 | "id": 76,
149 | "spell": "bayinguoleng",
150 | "name": "巴音郭楞"
151 | }, {
152 | "id": 77,
153 | "spell": "bazhong",
154 | "name": "巴中"
155 | }, {
156 | "id": 78,
157 | "spell": "beihai",
158 | "name": "北海"
159 | }, {
160 | "id": 79,
161 | "spell": "benxi",
162 | "name": "本溪"
163 | }, {
164 | "id": 80,
165 | "spell": "bijie",
166 | "name": "毕节"
167 | }, {
168 | "id": 81,
169 | "spell": "binzhou",
170 | "name": "滨州"
171 | }, {
172 | "id": 82,
173 | "spell": "boertala",
174 | "name": "博尔塔拉"
175 | }, {
176 | "id": 83,
177 | "spell": "bozhou",
178 | "name": "亳州"
179 | }, {
180 | "id": 346,
181 | "spell": "baoying",
182 | "name": "宝应"
183 | }, {
184 | "id": 347,
185 | "spell": "bayan",
186 | "name": "巴彦"
187 | }, {
188 | "id": 348,
189 | "spell": "binhai",
190 | "name": "滨海"
191 | }, {
192 | "id": 349,
193 | "spell": "binxian",
194 | "name": "宾县"
195 | }, {
196 | "id": 350,
197 | "spell": "binyang",
198 | "name": "宾阳"
199 | }, {
200 | "id": 351,
201 | "spell": "bishan",
202 | "name": "璧山"
203 | }, {
204 | "id": 352,
205 | "spell": "boai",
206 | "name": "博爱"
207 | }, {
208 | "id": 353,
209 | "spell": "boluo",
210 | "name": "博罗"
211 | }, {
212 | "id": 354,
213 | "spell": "boxing",
214 | "name": "博兴"
215 | }],
216 | "C": [{
217 | "id": 2,
218 | "spell": "chongqing",
219 | "name": "重庆"
220 | }, {
221 | "id": 5,
222 | "spell": "changchun",
223 | "name": "长春"
224 | }, {
225 | "id": 6,
226 | "spell": "changsha",
227 | "name": "长沙"
228 | }, {
229 | "id": 7,
230 | "spell": "changzhou",
231 | "name": "常州"
232 | }, {
233 | "id": 8,
234 | "spell": "chengdu",
235 | "name": "成都"
236 | }, {
237 | "id": 84,
238 | "spell": "cangzhou",
239 | "name": "沧州"
240 | }, {
241 | "id": 85,
242 | "spell": "changde",
243 | "name": "常德"
244 | }, {
245 | "id": 86,
246 | "spell": "changdu",
247 | "name": "昌都"
248 | }, {
249 | "id": 87,
250 | "spell": "changji",
251 | "name": "昌吉"
252 | }, {
253 | "id": 88,
254 | "spell": "changzhi",
255 | "name": "长治"
256 | }, {
257 | "id": 89,
258 | "spell": "chaohu",
259 | "name": "巢湖"
260 | }, {
261 | "id": 90,
262 | "spell": "chaoyang",
263 | "name": "朝阳"
264 | }, {
265 | "id": 91,
266 | "spell": "chaozhou",
267 | "name": "潮州"
268 | }, {
269 | "id": 92,
270 | "spell": "chengde",
271 | "name": "承德"
272 | }, {
273 | "id": 93,
274 | "spell": "chenzhou",
275 | "name": "郴州"
276 | }, {
277 | "id": 94,
278 | "spell": "chifeng",
279 | "name": "赤峰"
280 | }, {
281 | "id": 95,
282 | "spell": "chizhou",
283 | "name": "池州"
284 | }, {
285 | "id": 96,
286 | "spell": "chongzuo",
287 | "name": "崇左"
288 | }, {
289 | "id": 97,
290 | "spell": "chuxiong",
291 | "name": "楚雄"
292 | }, {
293 | "id": 98,
294 | "spell": "chuzhou",
295 | "name": "滁州"
296 | }, {
297 | "id": 355,
298 | "spell": "cangnan",
299 | "name": "苍南"
300 | }, {
301 | "id": 356,
302 | "spell": "cangshan",
303 | "name": "苍山"
304 | }, {
305 | "id": 357,
306 | "spell": "caoxian",
307 | "name": "曹县"
308 | }, {
309 | "id": 358,
310 | "spell": "changdao",
311 | "name": "长岛"
312 | }, {
313 | "id": 359,
314 | "spell": "changfeng",
315 | "name": "长丰"
316 | }, {
317 | "id": 360,
318 | "spell": "changhai",
319 | "name": "长海"
320 | }, {
321 | "id": 361,
322 | "spell": "changle",
323 | "name": "长乐"
324 | }, {
325 | "id": 362,
326 | "spell": "changle",
327 | "name": "昌乐"
328 | }, {
329 | "id": 363,
330 | "spell": "changshan",
331 | "name": "常山"
332 | }, {
333 | "id": 364,
334 | "spell": "changshu",
335 | "name": "常熟"
336 | }, {
337 | "id": 365,
338 | "spell": "changtai",
339 | "name": "长泰"
340 | }, {
341 | "id": 366,
342 | "spell": "changting",
343 | "name": "长汀"
344 | }, {
345 | "id": 367,
346 | "spell": "changxing",
347 | "name": "长兴"
348 | }, {
349 | "id": 368,
350 | "spell": "changyi",
351 | "name": "昌邑"
352 | }, {
353 | "id": 369,
354 | "spell": "chaoan",
355 | "name": "潮安"
356 | }, {
357 | "id": 370,
358 | "spell": "chenggong",
359 | "name": "呈贡"
360 | }, {
361 | "id": 371,
362 | "spell": "chengkou",
363 | "name": "城口"
364 | }, {
365 | "id": 372,
366 | "spell": "chengwu",
367 | "name": "成武"
368 | }, {
369 | "id": 373,
370 | "spell": "chiping",
371 | "name": "茌平"
372 | }, {
373 | "id": 374,
374 | "spell": "chongren",
375 | "name": "崇仁"
376 | }, {
377 | "id": 375,
378 | "spell": "chongyi",
379 | "name": "崇义"
380 | }, {
381 | "id": 376,
382 | "spell": "chongzhou",
383 | "name": "崇州"
384 | }, {
385 | "id": 377,
386 | "spell": "chunan",
387 | "name": "淳安"
388 | }, {
389 | "id": 378,
390 | "spell": "cixi",
391 | "name": "慈溪"
392 | }, {
393 | "id": 379,
394 | "spell": "conghua",
395 | "name": "从化"
396 | }, {
397 | "id": 380,
398 | "spell": "congyang",
399 | "name": "枞阳"
400 | }],
401 | "D": [{
402 | "id": 9,
403 | "spell": "dalian",
404 | "name": "大连"
405 | }, {
406 | "id": 10,
407 | "spell": "dongguan",
408 | "name": "东莞"
409 | }, {
410 | "id": 99,
411 | "spell": "dali",
412 | "name": "大理"
413 | }, {
414 | "id": 100,
415 | "spell": "dandong",
416 | "name": "丹东"
417 | }, {
418 | "id": 101,
419 | "spell": "daqing",
420 | "name": "大庆"
421 | }, {
422 | "id": 102,
423 | "spell": "datong",
424 | "name": "大同"
425 | }, {
426 | "id": 103,
427 | "spell": "daxinganling",
428 | "name": "大兴安岭"
429 | }, {
430 | "id": 104,
431 | "spell": "dazhou",
432 | "name": "达州"
433 | }, {
434 | "id": 105,
435 | "spell": "dehong",
436 | "name": "德宏"
437 | }, {
438 | "id": 106,
439 | "spell": "deyang",
440 | "name": "德阳"
441 | }, {
442 | "id": 107,
443 | "spell": "dezhou",
444 | "name": "德州"
445 | }, {
446 | "id": 108,
447 | "spell": "dingxi",
448 | "name": "定西"
449 | }, {
450 | "id": 109,
451 | "spell": "diqing",
452 | "name": "迪庆"
453 | }, {
454 | "id": 110,
455 | "spell": "dongying",
456 | "name": "东营"
457 | }, {
458 | "id": 381,
459 | "spell": "dafeng",
460 | "name": "大丰"
461 | }, {
462 | "id": 382,
463 | "spell": "daishan",
464 | "name": "岱山"
465 | }, {
466 | "id": 383,
467 | "spell": "dangshan",
468 | "name": "砀山"
469 | }, {
470 | "id": 384,
471 | "spell": "dangtu",
472 | "name": "当涂"
473 | }, {
474 | "id": 385,
475 | "spell": "danxian",
476 | "name": "单县"
477 | }, {
478 | "id": 386,
479 | "spell": "danyang",
480 | "name": "丹阳"
481 | }, {
482 | "id": 387,
483 | "spell": "dapu",
484 | "name": "大埔"
485 | }, {
486 | "id": 388,
487 | "spell": "datian",
488 | "name": "大田"
489 | }, {
490 | "id": 389,
491 | "spell": "dayi",
492 | "name": "大邑"
493 | }, {
494 | "id": 390,
495 | "spell": "dayu",
496 | "name": "大余"
497 | }, {
498 | "id": 391,
499 | "spell": "dazu",
500 | "name": "大足"
501 | }, {
502 | "id": 392,
503 | "spell": "dean",
504 | "name": "德安"
505 | }, {
506 | "id": 393,
507 | "spell": "dehua",
508 | "name": "德化"
509 | }, {
510 | "id": 394,
511 | "spell": "dehui",
512 | "name": "德惠"
513 | }, {
514 | "id": 395,
515 | "spell": "dengfeng",
516 | "name": "登封"
517 | }, {
518 | "id": 396,
519 | "spell": "deqing",
520 | "name": "德清"
521 | }, {
522 | "id": 397,
523 | "spell": "deqing",
524 | "name": "德庆"
525 | }, {
526 | "id": 398,
527 | "spell": "dexing",
528 | "name": "德兴"
529 | }, {
530 | "id": 399,
531 | "spell": "dianbai",
532 | "name": "电白"
533 | }, {
534 | "id": 400,
535 | "spell": "dianjiang",
536 | "name": "垫江"
537 | }, {
538 | "id": 401,
539 | "spell": "dingnan",
540 | "name": "定南"
541 | }, {
542 | "id": 402,
543 | "spell": "dingtao",
544 | "name": "定陶"
545 | }, {
546 | "id": 403,
547 | "spell": "dingyuan",
548 | "name": "定远"
549 | }, {
550 | "id": 404,
551 | "spell": "donga",
552 | "name": "东阿"
553 | }, {
554 | "id": 405,
555 | "spell": "donghai",
556 | "name": "东海"
557 | }, {
558 | "id": 406,
559 | "spell": "dongming",
560 | "name": "东明"
561 | }, {
562 | "id": 407,
563 | "spell": "dongping",
564 | "name": "东平"
565 | }, {
566 | "id": 408,
567 | "spell": "dongshan",
568 | "name": "东山"
569 | }, {
570 | "id": 409,
571 | "spell": "dongtai",
572 | "name": "东台"
573 | }, {
574 | "id": 410,
575 | "spell": "dongtou",
576 | "name": "洞头"
577 | }, {
578 | "id": 411,
579 | "spell": "dongxiang",
580 | "name": "东乡"
581 | }, {
582 | "id": 412,
583 | "spell": "dongyang",
584 | "name": "东阳"
585 | }, {
586 | "id": 413,
587 | "spell": "dongyuan",
588 | "name": "东源"
589 | }, {
590 | "id": 414,
591 | "spell": "dongzhi",
592 | "name": "东至"
593 | }, {
594 | "id": 415,
595 | "spell": "duchang",
596 | "name": "都昌"
597 | }, {
598 | "id": 416,
599 | "spell": "dujiangyan",
600 | "name": "都江堰"
601 | }],
602 | "E": [{
603 | "id": 111,
604 | "spell": "eerduosi",
605 | "name": "鄂尔多斯"
606 | }, {
607 | "id": 112,
608 | "spell": "enshi",
609 | "name": "恩施"
610 | }, {
611 | "id": 113,
612 | "spell": "ezhou",
613 | "name": "鄂州"
614 | }, {
615 | "id": 417,
616 | "spell": "enping",
617 | "name": "恩平"
618 | }],
619 | "F": [{
620 | "id": 11,
621 | "spell": "foshan",
622 | "name": "佛山"
623 | }, {
624 | "id": 12,
625 | "spell": "fuzhou",
626 | "name": "福州"
627 | }, {
628 | "id": 114,
629 | "spell": "fangchenggang",
630 | "name": "防城港"
631 | }, {
632 | "id": 115,
633 | "spell": "fushun",
634 | "name": "抚顺"
635 | }, {
636 | "id": 116,
637 | "spell": "fuxin",
638 | "name": "阜新"
639 | }, {
640 | "id": 117,
641 | "spell": "fuyang",
642 | "name": "阜阳"
643 | }, {
644 | "id": 118,
645 | "spell": "fuzhou",
646 | "name": "抚州"
647 | }, {
648 | "id": 418,
649 | "spell": "faku",
650 | "name": "法库"
651 | }, {
652 | "id": 419,
653 | "spell": "fanchang",
654 | "name": "繁昌"
655 | }, {
656 | "id": 420,
657 | "spell": "fangzheng",
658 | "name": "方正"
659 | }, {
660 | "id": 421,
661 | "spell": "feicheng",
662 | "name": "肥城"
663 | }, {
664 | "id": 422,
665 | "spell": "feidong",
666 | "name": "肥东"
667 | }, {
668 | "id": 423,
669 | "spell": "feixi",
670 | "name": "肥西"
671 | }, {
672 | "id": 424,
673 | "spell": "feixian",
674 | "name": "费县"
675 | }, {
676 | "id": 425,
677 | "spell": "fengcheng",
678 | "name": "丰城"
679 | }, {
680 | "id": 426,
681 | "spell": "fengdu",
682 | "name": "丰都"
683 | }, {
684 | "id": 427,
685 | "spell": "fenghua",
686 | "name": "奉化"
687 | }, {
688 | "id": 428,
689 | "spell": "fengjie",
690 | "name": "奉节"
691 | }, {
692 | "id": 429,
693 | "spell": "fengkai",
694 | "name": "封开"
695 | }, {
696 | "id": 430,
697 | "spell": "fengshun",
698 | "name": "丰顺"
699 | }, {
700 | "id": 431,
701 | "spell": "fengtai",
702 | "name": "凤台"
703 | }, {
704 | "id": 432,
705 | "spell": "fengxian",
706 | "name": "丰县"
707 | }, {
708 | "id": 433,
709 | "spell": "fengxin",
710 | "name": "奉新"
711 | }, {
712 | "id": 434,
713 | "spell": "fengyang",
714 | "name": "凤阳"
715 | }, {
716 | "id": 435,
717 | "spell": "fenyi",
718 | "name": "分宜"
719 | }, {
720 | "id": 436,
721 | "spell": "fogang",
722 | "name": "佛冈"
723 | }, {
724 | "id": 437,
725 | "spell": "fuan",
726 | "name": "福安"
727 | }, {
728 | "id": 438,
729 | "spell": "fuding",
730 | "name": "福鼎"
731 | }, {
732 | "id": 439,
733 | "spell": "fuliang",
734 | "name": "浮梁"
735 | }, {
736 | "id": 440,
737 | "spell": "fumin",
738 | "name": "富民"
739 | }, {
740 | "id": 441,
741 | "spell": "funan",
742 | "name": "阜南"
743 | }, {
744 | "id": 442,
745 | "spell": "funing",
746 | "name": "阜宁"
747 | }, {
748 | "id": 443,
749 | "spell": "fuqing",
750 | "name": "福清"
751 | }, {
752 | "id": 444,
753 | "spell": "fuyang",
754 | "name": "富阳"
755 | }],
756 | "G": [{
757 | "id": 13,
758 | "spell": "guangzhou",
759 | "name": "广州"
760 | }, {
761 | "id": 14,
762 | "spell": "guiyang",
763 | "name": "贵阳"
764 | }, {
765 | "id": 119,
766 | "spell": "gannan",
767 | "name": "甘南"
768 | }, {
769 | "id": 120,
770 | "spell": "ganzhou",
771 | "name": "赣州"
772 | }, {
773 | "id": 121,
774 | "spell": "ganzi",
775 | "name": "甘孜"
776 | }, {
777 | "id": 122,
778 | "spell": "guangan",
779 | "name": "广安"
780 | }, {
781 | "id": 123,
782 | "spell": "guangyuan",
783 | "name": "广元"
784 | }, {
785 | "id": 124,
786 | "spell": "guigang",
787 | "name": "贵港"
788 | }, {
789 | "id": 125,
790 | "spell": "guilin",
791 | "name": "桂林"
792 | }, {
793 | "id": 126,
794 | "spell": "guoluo",
795 | "name": "果洛"
796 | }, {
797 | "id": 127,
798 | "spell": "guyuan",
799 | "name": "固原"
800 | }, {
801 | "id": 445,
802 | "spell": "ganxian",
803 | "name": "赣县"
804 | }, {
805 | "id": 446,
806 | "spell": "ganyu",
807 | "name": "赣榆"
808 | }, {
809 | "id": 447,
810 | "spell": "gaoan",
811 | "name": "高安"
812 | }, {
813 | "id": 448,
814 | "spell": "gaocheng",
815 | "name": "藁城"
816 | }, {
817 | "id": 449,
818 | "spell": "gaochun",
819 | "name": "高淳"
820 | }, {
821 | "id": 450,
822 | "spell": "gaolan",
823 | "name": "皋兰"
824 | }, {
825 | "id": 451,
826 | "spell": "gaoling",
827 | "name": "高陵"
828 | }, {
829 | "id": 452,
830 | "spell": "gaomi",
831 | "name": "高密"
832 | }, {
833 | "id": 453,
834 | "spell": "gaoqing",
835 | "name": "高青"
836 | }, {
837 | "id": 454,
838 | "spell": "gaotang",
839 | "name": "高唐"
840 | }, {
841 | "id": 455,
842 | "spell": "gaoyao",
843 | "name": "高要"
844 | }, {
845 | "id": 456,
846 | "spell": "gaoyi",
847 | "name": "高邑"
848 | }, {
849 | "id": 457,
850 | "spell": "gaoyou",
851 | "name": "高邮"
852 | }, {
853 | "id": 458,
854 | "spell": "gaozhou",
855 | "name": "高州"
856 | }, {
857 | "id": 459,
858 | "spell": "gongyi",
859 | "name": "巩义"
860 | }, {
861 | "id": 460,
862 | "spell": "guangchang",
863 | "name": "广昌"
864 | }, {
865 | "id": 461,
866 | "spell": "guangde",
867 | "name": "广德"
868 | }, {
869 | "id": 462,
870 | "spell": "guangfeng",
871 | "name": "广丰"
872 | }, {
873 | "id": 463,
874 | "spell": "guangning",
875 | "name": "广宁"
876 | }, {
877 | "id": 464,
878 | "spell": "guangrao",
879 | "name": "广饶"
880 | }, {
881 | "id": 465,
882 | "spell": "guangze",
883 | "name": "光泽"
884 | }, {
885 | "id": 466,
886 | "spell": "guannan",
887 | "name": "灌南"
888 | }, {
889 | "id": 467,
890 | "spell": "guanxian",
891 | "name": "冠县"
892 | }, {
893 | "id": 468,
894 | "spell": "guanyun",
895 | "name": "灌云"
896 | }, {
897 | "id": 469,
898 | "spell": "guixi",
899 | "name": "贵溪"
900 | }, {
901 | "id": 470,
902 | "spell": "gutian",
903 | "name": "古田"
904 | }, {
905 | "id": 471,
906 | "spell": "guzhen",
907 | "name": "固镇"
908 | }],
909 | "H": [{
910 | "id": 15,
911 | "spell": "haerbin",
912 | "name": "哈尔滨"
913 | }, {
914 | "id": 16,
915 | "spell": "haikou",
916 | "name": "海口"
917 | }, {
918 | "id": 17,
919 | "spell": "handan",
920 | "name": "邯郸"
921 | }, {
922 | "id": 18,
923 | "spell": "hangzhou",
924 | "name": "杭州"
925 | }, {
926 | "id": 19,
927 | "spell": "hefei",
928 | "name": "合肥"
929 | }, {
930 | "id": 20,
931 | "spell": "huizhou",
932 | "name": "惠州"
933 | }, {
934 | "id": 128,
935 | "spell": "haibei",
936 | "name": "海北"
937 | }, {
938 | "id": 129,
939 | "spell": "haidong",
940 | "name": "海东"
941 | }, {
942 | "id": 130,
943 | "spell": "hainan",
944 | "name": "海南"
945 | }, {
946 | "id": 131,
947 | "spell": "haixi",
948 | "name": "海西"
949 | }, {
950 | "id": 132,
951 | "spell": "hami",
952 | "name": "哈密"
953 | }, {
954 | "id": 133,
955 | "spell": "hanzhong",
956 | "name": "汉中"
957 | }, {
958 | "id": 134,
959 | "spell": "hebi",
960 | "name": "鹤壁"
961 | }, {
962 | "id": 135,
963 | "spell": "hechi",
964 | "name": "河池"
965 | }, {
966 | "id": 136,
967 | "spell": "hegang",
968 | "name": "鹤岗"
969 | }, {
970 | "id": 137,
971 | "spell": "heihe",
972 | "name": "黑河"
973 | }, {
974 | "id": 138,
975 | "spell": "hengshui",
976 | "name": "衡水"
977 | }, {
978 | "id": 139,
979 | "spell": "hengyang",
980 | "name": "衡阳"
981 | }, {
982 | "id": 140,
983 | "spell": "hetiandi",
984 | "name": "和田地"
985 | }, {
986 | "id": 141,
987 | "spell": "heyuan",
988 | "name": "河源"
989 | }, {
990 | "id": 142,
991 | "spell": "heze",
992 | "name": "菏泽"
993 | }, {
994 | "id": 143,
995 | "spell": "hezhou",
996 | "name": "贺州"
997 | }, {
998 | "id": 144,
999 | "spell": "honghe",
1000 | "name": "红河"
1001 | }, {
1002 | "id": 145,
1003 | "spell": "huaian",
1004 | "name": "淮安"
1005 | }, {
1006 | "id": 146,
1007 | "spell": "huaibei",
1008 | "name": "淮北"
1009 | }, {
1010 | "id": 147,
1011 | "spell": "huaihua",
1012 | "name": "怀化"
1013 | }, {
1014 | "id": 148,
1015 | "spell": "huainan",
1016 | "name": "淮南"
1017 | }, {
1018 | "id": 149,
1019 | "spell": "huanggang",
1020 | "name": "黄冈"
1021 | }, {
1022 | "id": 150,
1023 | "spell": "huangnan",
1024 | "name": "黄南"
1025 | }, {
1026 | "id": 151,
1027 | "spell": "huangshan",
1028 | "name": "黄山"
1029 | }, {
1030 | "id": 152,
1031 | "spell": "huangshi",
1032 | "name": "黄石"
1033 | }, {
1034 | "id": 153,
1035 | "spell": "huhehaote",
1036 | "name": "呼和浩特"
1037 | }, {
1038 | "id": 154,
1039 | "spell": "huludao",
1040 | "name": "葫芦岛"
1041 | }, {
1042 | "id": 155,
1043 | "spell": "hulunbeier",
1044 | "name": "呼伦贝尔"
1045 | }, {
1046 | "id": 156,
1047 | "spell": "huzhou",
1048 | "name": "湖州"
1049 | }, {
1050 | "id": 472,
1051 | "spell": "haian",
1052 | "name": "海安"
1053 | }, {
1054 | "id": 473,
1055 | "spell": "haifeng",
1056 | "name": "海丰"
1057 | }, {
1058 | "id": 474,
1059 | "spell": "haimen",
1060 | "name": "海门"
1061 | }, {
1062 | "id": 475,
1063 | "spell": "haining",
1064 | "name": "海宁"
1065 | }, {
1066 | "id": 476,
1067 | "spell": "haiyan",
1068 | "name": "海盐"
1069 | }, {
1070 | "id": 477,
1071 | "spell": "haiyang",
1072 | "name": "海阳"
1073 | }, {
1074 | "id": 478,
1075 | "spell": "hanshan",
1076 | "name": "含山"
1077 | }, {
1078 | "id": 479,
1079 | "spell": "hechuan",
1080 | "name": "合川"
1081 | }, {
1082 | "id": 480,
1083 | "spell": "hengfeng",
1084 | "name": "横峰"
1085 | }, {
1086 | "id": 481,
1087 | "spell": "hengxian",
1088 | "name": "横县"
1089 | }, {
1090 | "id": 482,
1091 | "spell": "heping",
1092 | "name": "和平"
1093 | }, {
1094 | "id": 483,
1095 | "spell": "heshan",
1096 | "name": "鹤山"
1097 | }, {
1098 | "id": 484,
1099 | "spell": "hexian",
1100 | "name": "和县"
1101 | }, {
1102 | "id": 485,
1103 | "spell": "hongze",
1104 | "name": "洪泽"
1105 | }, {
1106 | "id": 486,
1107 | "spell": "huaan",
1108 | "name": "华安"
1109 | }, {
1110 | "id": 487,
1111 | "spell": "huadian",
1112 | "name": "桦甸"
1113 | }, {
1114 | "id": 488,
1115 | "spell": "huaiji",
1116 | "name": "怀集"
1117 | }, {
1118 | "id": 489,
1119 | "spell": "huaining",
1120 | "name": "怀宁"
1121 | }, {
1122 | "id": 490,
1123 | "spell": "huaiyuan",
1124 | "name": "怀远"
1125 | }, {
1126 | "id": 491,
1127 | "spell": "huantai",
1128 | "name": "桓台"
1129 | }, {
1130 | "id": 492,
1131 | "spell": "huazhou",
1132 | "name": "化州"
1133 | }, {
1134 | "id": 493,
1135 | "spell": "huian",
1136 | "name": "惠安"
1137 | }, {
1138 | "id": 494,
1139 | "spell": "huichang",
1140 | "name": "会昌"
1141 | }, {
1142 | "id": 495,
1143 | "spell": "huidong",
1144 | "name": "惠东"
1145 | }, {
1146 | "id": 496,
1147 | "spell": "huilai",
1148 | "name": "惠来"
1149 | }, {
1150 | "id": 497,
1151 | "spell": "huimin",
1152 | "name": "惠民"
1153 | }, {
1154 | "id": 498,
1155 | "spell": "hukou",
1156 | "name": "湖口"
1157 | }, {
1158 | "id": 499,
1159 | "spell": "hulan",
1160 | "name": "呼兰"
1161 | }, {
1162 | "id": 500,
1163 | "spell": "huoqiu",
1164 | "name": "霍邱"
1165 | }, {
1166 | "id": 501,
1167 | "spell": "huoshan",
1168 | "name": "霍山"
1169 | }, {
1170 | "id": 502,
1171 | "spell": "huxian",
1172 | "name": "户县"
1173 | }],
1174 | "J": [{
1175 | "id": 21,
1176 | "spell": "jiaozuo",
1177 | "name": "焦作"
1178 | }, {
1179 | "id": 22,
1180 | "spell": "jiaxing",
1181 | "name": "嘉兴"
1182 | }, {
1183 | "id": 23,
1184 | "spell": "jilin",
1185 | "name": "吉林"
1186 | }, {
1187 | "id": 24,
1188 | "spell": "jinan",
1189 | "name": "济南"
1190 | }, {
1191 | "id": 157,
1192 | "spell": "jiamusi",
1193 | "name": "佳木斯"
1194 | }, {
1195 | "id": 158,
1196 | "spell": "jiangmen",
1197 | "name": "江门"
1198 | }, {
1199 | "id": 159,
1200 | "spell": "jian",
1201 | "name": "吉安"
1202 | }, {
1203 | "id": 160,
1204 | "spell": "jiayuguan",
1205 | "name": "嘉峪关"
1206 | }, {
1207 | "id": 161,
1208 | "spell": "jieyang",
1209 | "name": "揭阳"
1210 | }, {
1211 | "id": 162,
1212 | "spell": "jinchang",
1213 | "name": "金昌"
1214 | }, {
1215 | "id": 163,
1216 | "spell": "jincheng",
1217 | "name": "晋城"
1218 | }, {
1219 | "id": 164,
1220 | "spell": "jingdezhen",
1221 | "name": "景德镇"
1222 | }, {
1223 | "id": 165,
1224 | "spell": "jingmen",
1225 | "name": "荆门"
1226 | }, {
1227 | "id": 166,
1228 | "spell": "jingzhou",
1229 | "name": "荆州"
1230 | }, {
1231 | "id": 167,
1232 | "spell": "jinhua",
1233 | "name": "金华"
1234 | }, {
1235 | "id": 168,
1236 | "spell": "jining",
1237 | "name": "济宁"
1238 | }, {
1239 | "id": 169,
1240 | "spell": "jinzhong",
1241 | "name": "晋中"
1242 | }, {
1243 | "id": 170,
1244 | "spell": "jinzhou",
1245 | "name": "锦州"
1246 | }, {
1247 | "id": 171,
1248 | "spell": "jiujiang",
1249 | "name": "九江"
1250 | }, {
1251 | "id": 172,
1252 | "spell": "jiuquan",
1253 | "name": "酒泉"
1254 | }, {
1255 | "id": 173,
1256 | "spell": "jixi",
1257 | "name": "鸡西"
1258 | }, {
1259 | "id": 503,
1260 | "spell": "jiande",
1261 | "name": "建德"
1262 | }, {
1263 | "id": 504,
1264 | "spell": "jiangdu",
1265 | "name": "江都"
1266 | }, {
1267 | "id": 505,
1268 | "spell": "jiangjin",
1269 | "name": "江津"
1270 | }, {
1271 | "id": 506,
1272 | "spell": "jiangle",
1273 | "name": "将乐"
1274 | }, {
1275 | "id": 507,
1276 | "spell": "jiangshan",
1277 | "name": "江山"
1278 | }, {
1279 | "id": 508,
1280 | "spell": "jiangyan",
1281 | "name": "姜堰"
1282 | }, {
1283 | "id": 509,
1284 | "spell": "jiangyin",
1285 | "name": "江阴"
1286 | }, {
1287 | "id": 510,
1288 | "spell": "jianhu",
1289 | "name": "建湖"
1290 | }, {
1291 | "id": 511,
1292 | "spell": "jianning",
1293 | "name": "建宁"
1294 | }, {
1295 | "id": 512,
1296 | "spell": "jianou",
1297 | "name": "建瓯"
1298 | }, {
1299 | "id": 513,
1300 | "spell": "jianyang",
1301 | "name": "建阳"
1302 | }, {
1303 | "id": 514,
1304 | "spell": "jian",
1305 | "name": "吉安"
1306 | }, {
1307 | "id": 515,
1308 | "spell": "jiaohe",
1309 | "name": "蛟河"
1310 | }, {
1311 | "id": 516,
1312 | "spell": "jiaoling",
1313 | "name": "蕉岭"
1314 | }, {
1315 | "id": 517,
1316 | "spell": "jiaonan",
1317 | "name": "胶南"
1318 | }, {
1319 | "id": 518,
1320 | "spell": "jiaozhou",
1321 | "name": "胶州"
1322 | }, {
1323 | "id": 519,
1324 | "spell": "jiashan",
1325 | "name": "嘉善"
1326 | }, {
1327 | "id": 520,
1328 | "spell": "jiaxiang",
1329 | "name": "嘉祥"
1330 | }, {
1331 | "id": 521,
1332 | "spell": "jiedong",
1333 | "name": "揭东"
1334 | }, {
1335 | "id": 522,
1336 | "spell": "jieshou",
1337 | "name": "界首"
1338 | }, {
1339 | "id": 523,
1340 | "spell": "jiexi",
1341 | "name": "揭西"
1342 | }, {
1343 | "id": 524,
1344 | "spell": "jimo",
1345 | "name": "即墨"
1346 | }, {
1347 | "id": 525,
1348 | "spell": "jingan",
1349 | "name": "靖安"
1350 | }, {
1351 | "id": 526,
1352 | "spell": "jingde",
1353 | "name": "旌德"
1354 | }, {
1355 | "id": 527,
1356 | "spell": "jinggangshan",
1357 | "name": "井冈山"
1358 | }, {
1359 | "id": 528,
1360 | "spell": "jingjiang",
1361 | "name": "靖江"
1362 | }, {
1363 | "id": 529,
1364 | "spell": "jingning",
1365 | "name": "景宁"
1366 | }, {
1367 | "id": 530,
1368 | "spell": "jingxian",
1369 | "name": "泾县"
1370 | }, {
1371 | "id": 531,
1372 | "spell": "jingxing",
1373 | "name": "井陉"
1374 | }, {
1375 | "id": 532,
1376 | "spell": "jinhu",
1377 | "name": "金湖"
1378 | }, {
1379 | "id": 533,
1380 | "spell": "jinjiang",
1381 | "name": "晋江"
1382 | }, {
1383 | "id": 534,
1384 | "spell": "jinmen",
1385 | "name": "金门"
1386 | }, {
1387 | "id": 535,
1388 | "spell": "jinning",
1389 | "name": "晋宁"
1390 | }, {
1391 | "id": 536,
1392 | "spell": "jintan",
1393 | "name": "金坛"
1394 | }, {
1395 | "id": 537,
1396 | "spell": "jintang",
1397 | "name": "金堂"
1398 | }, {
1399 | "id": 538,
1400 | "spell": "jinxian",
1401 | "name": "进贤"
1402 | }, {
1403 | "id": 539,
1404 | "spell": "jinxi",
1405 | "name": "金溪"
1406 | }, {
1407 | "id": 540,
1408 | "spell": "jinxiang",
1409 | "name": "金乡"
1410 | }, {
1411 | "id": 541,
1412 | "spell": "jinyun",
1413 | "name": "缙云"
1414 | }, {
1415 | "id": 542,
1416 | "spell": "jinzhai",
1417 | "name": "金寨"
1418 | }, {
1419 | "id": 543,
1420 | "spell": "jinzhou",
1421 | "name": "晋州"
1422 | }, {
1423 | "id": 544,
1424 | "spell": "jishui",
1425 | "name": "吉水"
1426 | }, {
1427 | "id": 545,
1428 | "spell": "jiujiang",
1429 | "name": "九江"
1430 | }, {
1431 | "id": 546,
1432 | "spell": "jiutai",
1433 | "name": "九台"
1434 | }, {
1435 | "id": 547,
1436 | "spell": "jixi",
1437 | "name": "绩溪"
1438 | }, {
1439 | "id": 548,
1440 | "spell": "jiyang",
1441 | "name": "济阳"
1442 | }, {
1443 | "id": 549,
1444 | "spell": "jiyuan",
1445 | "name": "济源"
1446 | }, {
1447 | "id": 550,
1448 | "spell": "juancheng",
1449 | "name": "鄄城"
1450 | }, {
1451 | "id": 551,
1452 | "spell": "junan",
1453 | "name": "莒南"
1454 | }, {
1455 | "id": 552,
1456 | "spell": "jurong",
1457 | "name": "句容"
1458 | }, {
1459 | "id": 553,
1460 | "spell": "juxian",
1461 | "name": "莒县"
1462 | }, {
1463 | "id": 554,
1464 | "spell": "juye",
1465 | "name": "巨野"
1466 | }],
1467 | "K": [{
1468 | "id": 25,
1469 | "spell": "kunming",
1470 | "name": "昆明"
1471 | }, {
1472 | "id": 174,
1473 | "spell": "kaifeng",
1474 | "name": "开封"
1475 | }, {
1476 | "id": 175,
1477 | "spell": "kashidi",
1478 | "name": "喀什地"
1479 | }, {
1480 | "id": 176,
1481 | "spell": "kelamayi",
1482 | "name": "克拉玛依"
1483 | }, {
1484 | "id": 177,
1485 | "spell": "kezile",
1486 | "name": "克孜勒"
1487 | }, {
1488 | "id": 555,
1489 | "spell": "kaihua",
1490 | "name": "开化"
1491 | }, {
1492 | "id": 556,
1493 | "spell": "kaiping",
1494 | "name": "开平"
1495 | }, {
1496 | "id": 557,
1497 | "spell": "kaixian",
1498 | "name": "开县"
1499 | }, {
1500 | "id": 558,
1501 | "spell": "kaiyang",
1502 | "name": "开阳"
1503 | }, {
1504 | "id": 559,
1505 | "spell": "kangping",
1506 | "name": "康平"
1507 | }, {
1508 | "id": 560,
1509 | "spell": "kenli",
1510 | "name": "垦利"
1511 | }, {
1512 | "id": 561,
1513 | "spell": "kunshan",
1514 | "name": "昆山"
1515 | }],
1516 | "L": [{
1517 | "id": 26,
1518 | "spell": "lanzhou",
1519 | "name": "兰州"
1520 | }, {
1521 | "id": 27,
1522 | "spell": "liuzhou",
1523 | "name": "柳州"
1524 | }, {
1525 | "id": 28,
1526 | "spell": "luoyang",
1527 | "name": "洛阳"
1528 | }, {
1529 | "id": 178,
1530 | "spell": "laibin",
1531 | "name": "来宾"
1532 | }, {
1533 | "id": 179,
1534 | "spell": "laiwu",
1535 | "name": "莱芜"
1536 | }, {
1537 | "id": 180,
1538 | "spell": "langfang",
1539 | "name": "廊坊"
1540 | }, {
1541 | "id": 181,
1542 | "spell": "lasa",
1543 | "name": "拉萨"
1544 | }, {
1545 | "id": 182,
1546 | "spell": "leshan",
1547 | "name": "乐山"
1548 | }, {
1549 | "id": 183,
1550 | "spell": "liangshan",
1551 | "name": "凉山"
1552 | }, {
1553 | "id": 184,
1554 | "spell": "lianyungang",
1555 | "name": "连云港"
1556 | }, {
1557 | "id": 185,
1558 | "spell": "liaocheng",
1559 | "name": "聊城"
1560 | }, {
1561 | "id": 186,
1562 | "spell": "liaoyang",
1563 | "name": "辽阳"
1564 | }, {
1565 | "id": 187,
1566 | "spell": "liaoyuan",
1567 | "name": "辽源"
1568 | }, {
1569 | "id": 188,
1570 | "spell": "lijiang",
1571 | "name": "丽江"
1572 | }, {
1573 | "id": 189,
1574 | "spell": "lincang",
1575 | "name": "临沧"
1576 | }, {
1577 | "id": 190,
1578 | "spell": "linfen",
1579 | "name": "临汾"
1580 | }, {
1581 | "id": 191,
1582 | "spell": "linxia",
1583 | "name": "临夏"
1584 | }, {
1585 | "id": 192,
1586 | "spell": "linyi",
1587 | "name": "临沂"
1588 | }, {
1589 | "id": 193,
1590 | "spell": "linzhi",
1591 | "name": "林芝"
1592 | }, {
1593 | "id": 194,
1594 | "spell": "lishui",
1595 | "name": "丽水"
1596 | }, {
1597 | "id": 195,
1598 | "spell": "liuan",
1599 | "name": "六安"
1600 | }, {
1601 | "id": 196,
1602 | "spell": "liupanshui",
1603 | "name": "六盘水"
1604 | }, {
1605 | "id": 197,
1606 | "spell": "longnan",
1607 | "name": "陇南"
1608 | }, {
1609 | "id": 198,
1610 | "spell": "longyan",
1611 | "name": "龙岩"
1612 | }, {
1613 | "id": 199,
1614 | "spell": "loudi",
1615 | "name": "娄底"
1616 | }, {
1617 | "id": 200,
1618 | "spell": "luohe",
1619 | "name": "漯河"
1620 | }, {
1621 | "id": 201,
1622 | "spell": "luzhou",
1623 | "name": "泸州"
1624 | }, {
1625 | "id": 202,
1626 | "spell": "lvliang",
1627 | "name": "吕梁"
1628 | }, {
1629 | "id": 562,
1630 | "spell": "laian",
1631 | "name": "来安"
1632 | }, {
1633 | "id": 563,
1634 | "spell": "laixi",
1635 | "name": "莱西"
1636 | }, {
1637 | "id": 564,
1638 | "spell": "laiyang",
1639 | "name": "莱阳"
1640 | }, {
1641 | "id": 565,
1642 | "spell": "laizhou",
1643 | "name": "莱州"
1644 | }, {
1645 | "id": 566,
1646 | "spell": "langxi",
1647 | "name": "郎溪"
1648 | }, {
1649 | "id": 567,
1650 | "spell": "lantian",
1651 | "name": "蓝田"
1652 | }, {
1653 | "id": 568,
1654 | "spell": "lanxi",
1655 | "name": "兰溪"
1656 | }, {
1657 | "id": 569,
1658 | "spell": "lean",
1659 | "name": "乐安"
1660 | }, {
1661 | "id": 570,
1662 | "spell": "lechang",
1663 | "name": "乐昌"
1664 | }, {
1665 | "id": 571,
1666 | "spell": "leizhou",
1667 | "name": "雷州"
1668 | }, {
1669 | "id": 572,
1670 | "spell": "leling",
1671 | "name": "乐陵"
1672 | }, {
1673 | "id": 573,
1674 | "spell": "leping",
1675 | "name": "乐平"
1676 | }, {
1677 | "id": 574,
1678 | "spell": "leqing",
1679 | "name": "乐清"
1680 | }, {
1681 | "id": 575,
1682 | "spell": "leting",
1683 | "name": "乐亭"
1684 | }, {
1685 | "id": 576,
1686 | "spell": "liancheng",
1687 | "name": "连城"
1688 | }, {
1689 | "id": 577,
1690 | "spell": "liangping",
1691 | "name": "梁平"
1692 | }, {
1693 | "id": 578,
1694 | "spell": "liangshan",
1695 | "name": "梁山"
1696 | }, {
1697 | "id": 579,
1698 | "spell": "lianhua",
1699 | "name": "莲花"
1700 | }, {
1701 | "id": 580,
1702 | "spell": "lianjiang",
1703 | "name": "连江"
1704 | }, {
1705 | "id": 581,
1706 | "spell": "lianjiang",
1707 | "name": "廉江"
1708 | }, {
1709 | "id": 582,
1710 | "spell": "liannan",
1711 | "name": "连南"
1712 | }, {
1713 | "id": 583,
1714 | "spell": "lianping",
1715 | "name": "连平"
1716 | }, {
1717 | "id": 584,
1718 | "spell": "lianshan",
1719 | "name": "连山"
1720 | }, {
1721 | "id": 585,
1722 | "spell": "lianshui",
1723 | "name": "涟水"
1724 | }, {
1725 | "id": 586,
1726 | "spell": "lianzhou",
1727 | "name": "连州"
1728 | }, {
1729 | "id": 587,
1730 | "spell": "liaozhong",
1731 | "name": "辽中"
1732 | }, {
1733 | "id": 588,
1734 | "spell": "lichuan",
1735 | "name": "黎川"
1736 | }, {
1737 | "id": 589,
1738 | "spell": "lijin",
1739 | "name": "利津"
1740 | }, {
1741 | "id": 590,
1742 | "spell": "linan",
1743 | "name": "临安"
1744 | }, {
1745 | "id": 591,
1746 | "spell": "lingbi",
1747 | "name": "灵璧"
1748 | }, {
1749 | "id": 592,
1750 | "spell": "lingshou",
1751 | "name": "灵寿"
1752 | }, {
1753 | "id": 593,
1754 | "spell": "lingxian",
1755 | "name": "陵县"
1756 | }, {
1757 | "id": 594,
1758 | "spell": "linhai",
1759 | "name": "临海"
1760 | }, {
1761 | "id": 595,
1762 | "spell": "linqing",
1763 | "name": "临清"
1764 | }, {
1765 | "id": 596,
1766 | "spell": "linquan",
1767 | "name": "临泉"
1768 | }, {
1769 | "id": 597,
1770 | "spell": "linqu",
1771 | "name": "临朐"
1772 | }, {
1773 | "id": 598,
1774 | "spell": "linshu",
1775 | "name": "临沭"
1776 | }, {
1777 | "id": 599,
1778 | "spell": "linyi",
1779 | "name": "临邑"
1780 | }, {
1781 | "id": 600,
1782 | "spell": "lishui",
1783 | "name": "溧水"
1784 | }, {
1785 | "id": 601,
1786 | "spell": "liucheng",
1787 | "name": "柳城"
1788 | }, {
1789 | "id": 602,
1790 | "spell": "liujiang",
1791 | "name": "柳江"
1792 | }, {
1793 | "id": 603,
1794 | "spell": "liuyang",
1795 | "name": "浏阳"
1796 | }, {
1797 | "id": 604,
1798 | "spell": "lixin",
1799 | "name": "利辛"
1800 | }, {
1801 | "id": 605,
1802 | "spell": "liyang",
1803 | "name": "溧阳"
1804 | }, {
1805 | "id": 606,
1806 | "spell": "longan",
1807 | "name": "隆安"
1808 | }, {
1809 | "id": 607,
1810 | "spell": "longchuan",
1811 | "name": "龙川"
1812 | }, {
1813 | "id": 608,
1814 | "spell": "longhai",
1815 | "name": "龙海"
1816 | }, {
1817 | "id": 609,
1818 | "spell": "longkou",
1819 | "name": "龙口"
1820 | }, {
1821 | "id": 610,
1822 | "spell": "longmen",
1823 | "name": "龙门"
1824 | }, {
1825 | "id": 611,
1826 | "spell": "longnan",
1827 | "name": "龙南"
1828 | }, {
1829 | "id": 612,
1830 | "spell": "longquan",
1831 | "name": "龙泉"
1832 | }, {
1833 | "id": 613,
1834 | "spell": "longyou",
1835 | "name": "龙游"
1836 | }, {
1837 | "id": 614,
1838 | "spell": "luancheng",
1839 | "name": "栾城"
1840 | }, {
1841 | "id": 615,
1842 | "spell": "luanchuan",
1843 | "name": "栾川"
1844 | }, {
1845 | "id": 616,
1846 | "spell": "luannan",
1847 | "name": "滦南"
1848 | }, {
1849 | "id": 617,
1850 | "spell": "luanxian",
1851 | "name": "滦县"
1852 | }, {
1853 | "id": 618,
1854 | "spell": "lufeng",
1855 | "name": "陆丰"
1856 | }, {
1857 | "id": 619,
1858 | "spell": "luhe",
1859 | "name": "陆河"
1860 | }, {
1861 | "id": 620,
1862 | "spell": "lujiang",
1863 | "name": "庐江"
1864 | }, {
1865 | "id": 621,
1866 | "spell": "luoding",
1867 | "name": "罗定"
1868 | }, {
1869 | "id": 622,
1870 | "spell": "luoning",
1871 | "name": "洛宁"
1872 | }, {
1873 | "id": 623,
1874 | "spell": "luoyuan",
1875 | "name": "罗源"
1876 | }, {
1877 | "id": 624,
1878 | "spell": "luquan",
1879 | "name": "鹿泉"
1880 | }, {
1881 | "id": 625,
1882 | "spell": "luquan",
1883 | "name": "禄劝"
1884 | }, {
1885 | "id": 626,
1886 | "spell": "luxi",
1887 | "name": "芦溪"
1888 | }, {
1889 | "id": 627,
1890 | "spell": "luzhai",
1891 | "name": "鹿寨"
1892 | }],
1893 | "M": [{
1894 | "id": 203,
1895 | "spell": "maanshan",
1896 | "name": "马鞍山"
1897 | }, {
1898 | "id": 204,
1899 | "spell": "maoming",
1900 | "name": "茂名"
1901 | }, {
1902 | "id": 205,
1903 | "spell": "meishan",
1904 | "name": "眉山"
1905 | }, {
1906 | "id": 206,
1907 | "spell": "meizhou",
1908 | "name": "梅州"
1909 | }, {
1910 | "id": 207,
1911 | "spell": "mianyang",
1912 | "name": "绵阳"
1913 | }, {
1914 | "id": 208,
1915 | "spell": "mudanjiang",
1916 | "name": "牡丹江"
1917 | }, {
1918 | "id": 628,
1919 | "spell": "mashan",
1920 | "name": "马山"
1921 | }, {
1922 | "id": 629,
1923 | "spell": "meixian",
1924 | "name": "梅县"
1925 | }, {
1926 | "id": 630,
1927 | "spell": "mengcheng",
1928 | "name": "蒙城"
1929 | }, {
1930 | "id": 631,
1931 | "spell": "mengjin",
1932 | "name": "孟津"
1933 | }, {
1934 | "id": 632,
1935 | "spell": "mengyin",
1936 | "name": "蒙阴"
1937 | }, {
1938 | "id": 633,
1939 | "spell": "mengzhou",
1940 | "name": "孟州"
1941 | }, {
1942 | "id": 634,
1943 | "spell": "mingguang",
1944 | "name": "明光"
1945 | }, {
1946 | "id": 635,
1947 | "spell": "mingxi",
1948 | "name": "明溪"
1949 | }, {
1950 | "id": 636,
1951 | "spell": "minhou",
1952 | "name": "闽侯"
1953 | }, {
1954 | "id": 637,
1955 | "spell": "minqing",
1956 | "name": "闽清"
1957 | }, {
1958 | "id": 638,
1959 | "spell": "mulan",
1960 | "name": "木兰"
1961 | }],
1962 | "N": [{
1963 | "id": 29,
1964 | "spell": "nanchang",
1965 | "name": "南昌"
1966 | }, {
1967 | "id": 30,
1968 | "spell": "nanjing",
1969 | "name": "南京"
1970 | }, {
1971 | "id": 31,
1972 | "spell": "nanning",
1973 | "name": "南宁"
1974 | }, {
1975 | "id": 32,
1976 | "spell": "nantong",
1977 | "name": "南通"
1978 | }, {
1979 | "id": 33,
1980 | "spell": "ningbo",
1981 | "name": "宁波"
1982 | }, {
1983 | "id": 209,
1984 | "spell": "nanchong",
1985 | "name": "南充"
1986 | }, {
1987 | "id": 210,
1988 | "spell": "nanping",
1989 | "name": "南平"
1990 | }, {
1991 | "id": 211,
1992 | "spell": "nanyang",
1993 | "name": "南阳"
1994 | }, {
1995 | "id": 212,
1996 | "spell": "naqu",
1997 | "name": "那曲"
1998 | }, {
1999 | "id": 213,
2000 | "spell": "neijiang",
2001 | "name": "内江"
2002 | }, {
2003 | "id": 214,
2004 | "spell": "ningde",
2005 | "name": "宁德"
2006 | }, {
2007 | "id": 215,
2008 | "spell": "nujiang",
2009 | "name": "怒江"
2010 | }, {
2011 | "id": 639,
2012 | "spell": "nanan",
2013 | "name": "南安"
2014 | }, {
2015 | "id": 640,
2016 | "spell": "nanao",
2017 | "name": "南澳"
2018 | }, {
2019 | "id": 641,
2020 | "spell": "nancheng",
2021 | "name": "南城"
2022 | }, {
2023 | "id": 642,
2024 | "spell": "nanchuan",
2025 | "name": "南川"
2026 | }, {
2027 | "id": 643,
2028 | "spell": "nanfeng",
2029 | "name": "南丰"
2030 | }, {
2031 | "id": 644,
2032 | "spell": "nanjing",
2033 | "name": "南靖"
2034 | }, {
2035 | "id": 645,
2036 | "spell": "nankang",
2037 | "name": "南康"
2038 | }, {
2039 | "id": 646,
2040 | "spell": "nanling",
2041 | "name": "南陵"
2042 | }, {
2043 | "id": 647,
2044 | "spell": "nanxiong",
2045 | "name": "南雄"
2046 | }, {
2047 | "id": 648,
2048 | "spell": "ningdu",
2049 | "name": "宁都"
2050 | }, {
2051 | "id": 649,
2052 | "spell": "ningguo",
2053 | "name": "宁国"
2054 | }, {
2055 | "id": 650,
2056 | "spell": "ninghai",
2057 | "name": "宁海"
2058 | }, {
2059 | "id": 651,
2060 | "spell": "ninghua",
2061 | "name": "宁化"
2062 | }, {
2063 | "id": 652,
2064 | "spell": "ningjin",
2065 | "name": "宁津"
2066 | }, {
2067 | "id": 653,
2068 | "spell": "ningxiang",
2069 | "name": "宁乡"
2070 | }, {
2071 | "id": 654,
2072 | "spell": "ningyang",
2073 | "name": "宁阳"
2074 | }, {
2075 | "id": 655,
2076 | "spell": "nongan",
2077 | "name": "农安"
2078 | }],
2079 | "P": [{
2080 | "id": 216,
2081 | "spell": "panjin",
2082 | "name": "盘锦"
2083 | }, {
2084 | "id": 217,
2085 | "spell": "panzhihua",
2086 | "name": "攀枝花"
2087 | }, {
2088 | "id": 218,
2089 | "spell": "pingdingshan",
2090 | "name": "平顶山"
2091 | }, {
2092 | "id": 219,
2093 | "spell": "pingliang",
2094 | "name": "平凉"
2095 | }, {
2096 | "id": 220,
2097 | "spell": "pingxiang",
2098 | "name": "萍乡"
2099 | }, {
2100 | "id": 221,
2101 | "spell": "puer",
2102 | "name": "普洱"
2103 | }, {
2104 | "id": 222,
2105 | "spell": "putian",
2106 | "name": "莆田"
2107 | }, {
2108 | "id": 223,
2109 | "spell": "puyang",
2110 | "name": "濮阳"
2111 | }, {
2112 | "id": 656,
2113 | "spell": "panan",
2114 | "name": "磐安"
2115 | }, {
2116 | "id": 657,
2117 | "spell": "panshi",
2118 | "name": "磐石"
2119 | }, {
2120 | "id": 658,
2121 | "spell": "peixian",
2122 | "name": "沛县"
2123 | }, {
2124 | "id": 659,
2125 | "spell": "penglai",
2126 | "name": "蓬莱"
2127 | }, {
2128 | "id": 660,
2129 | "spell": "pengshui",
2130 | "name": "彭水"
2131 | }, {
2132 | "id": 661,
2133 | "spell": "pengze",
2134 | "name": "彭泽"
2135 | }, {
2136 | "id": 662,
2137 | "spell": "pengzhou",
2138 | "name": "彭州"
2139 | }, {
2140 | "id": 663,
2141 | "spell": "pingdu",
2142 | "name": "平度"
2143 | }, {
2144 | "id": 664,
2145 | "spell": "pinghe",
2146 | "name": "平和"
2147 | }, {
2148 | "id": 665,
2149 | "spell": "pinghu",
2150 | "name": "平湖"
2151 | }, {
2152 | "id": 666,
2153 | "spell": "pingnan",
2154 | "name": "屏南"
2155 | }, {
2156 | "id": 667,
2157 | "spell": "pingshan",
2158 | "name": "平山"
2159 | }, {
2160 | "id": 668,
2161 | "spell": "pingtan",
2162 | "name": "平潭"
2163 | }, {
2164 | "id": 669,
2165 | "spell": "pingyang",
2166 | "name": "平阳"
2167 | }, {
2168 | "id": 670,
2169 | "spell": "pingyin",
2170 | "name": "平阴"
2171 | }, {
2172 | "id": 671,
2173 | "spell": "pingyi",
2174 | "name": "平邑"
2175 | }, {
2176 | "id": 672,
2177 | "spell": "pingyuan",
2178 | "name": "平原"
2179 | }, {
2180 | "id": 673,
2181 | "spell": "pingyuan",
2182 | "name": "平远"
2183 | }, {
2184 | "id": 674,
2185 | "spell": "pixian",
2186 | "name": "郫县"
2187 | }, {
2188 | "id": 675,
2189 | "spell": "pizhou",
2190 | "name": "邳州"
2191 | }, {
2192 | "id": 676,
2193 | "spell": "poyang",
2194 | "name": "鄱阳"
2195 | }, {
2196 | "id": 677,
2197 | "spell": "pucheng",
2198 | "name": "浦城"
2199 | }, {
2200 | "id": 678,
2201 | "spell": "pujiang",
2202 | "name": "浦江"
2203 | }, {
2204 | "id": 679,
2205 | "spell": "pujiang",
2206 | "name": "蒲江"
2207 | }, {
2208 | "id": 680,
2209 | "spell": "pulandian",
2210 | "name": "普兰店"
2211 | }, {
2212 | "id": 681,
2213 | "spell": "puning",
2214 | "name": "普宁"
2215 | }],
2216 | "Q": [{
2217 | "id": 34,
2218 | "spell": "qingdao",
2219 | "name": "青岛"
2220 | }, {
2221 | "id": 35,
2222 | "spell": "quanzhou",
2223 | "name": "泉州"
2224 | }, {
2225 | "id": 224,
2226 | "spell": "qiandong",
2227 | "name": "黔东"
2228 | }, {
2229 | "id": 225,
2230 | "spell": "qiannan",
2231 | "name": "黔南"
2232 | }, {
2233 | "id": 226,
2234 | "spell": "qianxinan",
2235 | "name": "黔西南"
2236 | }, {
2237 | "id": 227,
2238 | "spell": "qingyang",
2239 | "name": "庆阳"
2240 | }, {
2241 | "id": 228,
2242 | "spell": "qingyuan",
2243 | "name": "清远"
2244 | }, {
2245 | "id": 229,
2246 | "spell": "qinhuangdao",
2247 | "name": "秦皇岛"
2248 | }, {
2249 | "id": 230,
2250 | "spell": "qinzhou",
2251 | "name": "钦州"
2252 | }, {
2253 | "id": 231,
2254 | "spell": "qiqihaer",
2255 | "name": "齐齐哈尔"
2256 | }, {
2257 | "id": 232,
2258 | "spell": "qitaihe",
2259 | "name": "七台河"
2260 | }, {
2261 | "id": 233,
2262 | "spell": "qujing",
2263 | "name": "曲靖"
2264 | }, {
2265 | "id": 234,
2266 | "spell": "quzhou",
2267 | "name": "衢州"
2268 | }, {
2269 | "id": 682,
2270 | "spell": "qianan",
2271 | "name": "迁安"
2272 | }, {
2273 | "id": 683,
2274 | "spell": "qianshan",
2275 | "name": "潜山"
2276 | }, {
2277 | "id": 684,
2278 | "spell": "qianshan",
2279 | "name": "铅山"
2280 | }, {
2281 | "id": 685,
2282 | "spell": "qianxi",
2283 | "name": "迁西"
2284 | }, {
2285 | "id": 686,
2286 | "spell": "qidong",
2287 | "name": "启东"
2288 | }, {
2289 | "id": 687,
2290 | "spell": "qihe",
2291 | "name": "齐河"
2292 | }, {
2293 | "id": 688,
2294 | "spell": "qijiang",
2295 | "name": "綦江"
2296 | }, {
2297 | "id": 689,
2298 | "spell": "qimen",
2299 | "name": "祁门"
2300 | }, {
2301 | "id": 690,
2302 | "spell": "qingliu",
2303 | "name": "清流"
2304 | }, {
2305 | "id": 691,
2306 | "spell": "qingtian",
2307 | "name": "青田"
2308 | }, {
2309 | "id": 692,
2310 | "spell": "qingxin",
2311 | "name": "清新"
2312 | }, {
2313 | "id": 693,
2314 | "spell": "qingyang",
2315 | "name": "青阳"
2316 | }, {
2317 | "id": 694,
2318 | "spell": "qingyuan",
2319 | "name": "庆元"
2320 | }, {
2321 | "id": 695,
2322 | "spell": "qingyun",
2323 | "name": "庆云"
2324 | }, {
2325 | "id": 696,
2326 | "spell": "qingzhen",
2327 | "name": "清镇"
2328 | }, {
2329 | "id": 697,
2330 | "spell": "qingzhou",
2331 | "name": "青州"
2332 | }, {
2333 | "id": 698,
2334 | "spell": "qinyang",
2335 | "name": "沁阳"
2336 | }, {
2337 | "id": 699,
2338 | "spell": "qionglai",
2339 | "name": "邛崃"
2340 | }, {
2341 | "id": 700,
2342 | "spell": "qixia",
2343 | "name": "栖霞"
2344 | }, {
2345 | "id": 701,
2346 | "spell": "quanjiao",
2347 | "name": "全椒"
2348 | }, {
2349 | "id": 702,
2350 | "spell": "quannan",
2351 | "name": "全南"
2352 | }, {
2353 | "id": 703,
2354 | "spell": "qufu",
2355 | "name": "曲阜"
2356 | }, {
2357 | "id": 704,
2358 | "spell": "qujiang",
2359 | "name": "曲江"
2360 | }],
2361 | "R": [{
2362 | "id": 235,
2363 | "spell": "rikaze",
2364 | "name": "日喀则"
2365 | }, {
2366 | "id": 236,
2367 | "spell": "rizhao",
2368 | "name": "日照"
2369 | }, {
2370 | "id": 705,
2371 | "spell": "raoping",
2372 | "name": "饶平"
2373 | }, {
2374 | "id": 706,
2375 | "spell": "renhua",
2376 | "name": "仁化"
2377 | }, {
2378 | "id": 707,
2379 | "spell": "rongan",
2380 | "name": "融安"
2381 | }, {
2382 | "id": 708,
2383 | "spell": "rongchang",
2384 | "name": "荣昌"
2385 | }, {
2386 | "id": 709,
2387 | "spell": "rongcheng",
2388 | "name": "荣成"
2389 | }, {
2390 | "id": 710,
2391 | "spell": "rongshui",
2392 | "name": "融水"
2393 | }, {
2394 | "id": 711,
2395 | "spell": "rudong",
2396 | "name": "如东"
2397 | }, {
2398 | "id": 712,
2399 | "spell": "rugao",
2400 | "name": "如皋"
2401 | }, {
2402 | "id": 713,
2403 | "spell": "ruian",
2404 | "name": "瑞安"
2405 | }, {
2406 | "id": 714,
2407 | "spell": "ruichang",
2408 | "name": "瑞昌"
2409 | }, {
2410 | "id": 715,
2411 | "spell": "ruijin",
2412 | "name": "瑞金"
2413 | }, {
2414 | "id": 716,
2415 | "spell": "rushan",
2416 | "name": "乳山"
2417 | }, {
2418 | "id": 717,
2419 | "spell": "ruyang",
2420 | "name": "汝阳"
2421 | }, {
2422 | "id": 718,
2423 | "spell": "ruyuan",
2424 | "name": "乳源"
2425 | }],
2426 | "S": [{
2427 | "id": 3,
2428 | "spell": "shanghai",
2429 | "name": "上海"
2430 | }, {
2431 | "id": 36,
2432 | "spell": "shenyang",
2433 | "name": "沈阳"
2434 | }, {
2435 | "id": 37,
2436 | "spell": "shenzhen",
2437 | "name": "深圳"
2438 | }, {
2439 | "id": 38,
2440 | "spell": "shijiazhuang",
2441 | "name": "石家庄"
2442 | }, {
2443 | "id": 39,
2444 | "spell": "suzhou",
2445 | "name": "苏州"
2446 | }, {
2447 | "id": 237,
2448 | "spell": "sanmenxia",
2449 | "name": "三门峡"
2450 | }, {
2451 | "id": 238,
2452 | "spell": "sanming",
2453 | "name": "三明"
2454 | }, {
2455 | "id": 239,
2456 | "spell": "sanya",
2457 | "name": "三亚"
2458 | }, {
2459 | "id": 240,
2460 | "spell": "shangluo",
2461 | "name": "商洛"
2462 | }, {
2463 | "id": 241,
2464 | "spell": "shangqiu",
2465 | "name": "商丘"
2466 | }, {
2467 | "id": 242,
2468 | "spell": "shangrao",
2469 | "name": "上饶"
2470 | }, {
2471 | "id": 243,
2472 | "spell": "shannan",
2473 | "name": "山南"
2474 | }, {
2475 | "id": 244,
2476 | "spell": "shantou",
2477 | "name": "汕头"
2478 | }, {
2479 | "id": 245,
2480 | "spell": "shanwei",
2481 | "name": "汕尾"
2482 | }, {
2483 | "id": 246,
2484 | "spell": "shaoguan",
2485 | "name": "韶关"
2486 | }, {
2487 | "id": 247,
2488 | "spell": "shaoxing",
2489 | "name": "绍兴"
2490 | }, {
2491 | "id": 248,
2492 | "spell": "shaoyang",
2493 | "name": "邵阳"
2494 | }, {
2495 | "id": 249,
2496 | "spell": "shiyan",
2497 | "name": "十堰"
2498 | }, {
2499 | "id": 250,
2500 | "spell": "shizuishan",
2501 | "name": "石嘴山"
2502 | }, {
2503 | "id": 251,
2504 | "spell": "shuangyashan",
2505 | "name": "双鸭山"
2506 | }, {
2507 | "id": 252,
2508 | "spell": "shuozhou",
2509 | "name": "朔州"
2510 | }, {
2511 | "id": 253,
2512 | "spell": "siping",
2513 | "name": "四平"
2514 | }, {
2515 | "id": 254,
2516 | "spell": "songyuan",
2517 | "name": "松原"
2518 | }, {
2519 | "id": 255,
2520 | "spell": "suihua",
2521 | "name": "绥化"
2522 | }, {
2523 | "id": 256,
2524 | "spell": "suining",
2525 | "name": "遂宁"
2526 | }, {
2527 | "id": 257,
2528 | "spell": "suizhou",
2529 | "name": "随州"
2530 | }, {
2531 | "id": 258,
2532 | "spell": "suqian",
2533 | "name": "宿迁"
2534 | }, {
2535 | "id": 259,
2536 | "spell": "suzhou",
2537 | "name": "宿州"
2538 | }, {
2539 | "id": 719,
2540 | "spell": "sanjiang",
2541 | "name": "三江"
2542 | }, {
2543 | "id": 720,
2544 | "spell": "sanmen",
2545 | "name": "三门"
2546 | }, {
2547 | "id": 721,
2548 | "spell": "saoan",
2549 | "name": "诏安"
2550 | }, {
2551 | "id": 722,
2552 | "spell": "shanggao",
2553 | "name": "上高"
2554 | }, {
2555 | "id": 723,
2556 | "spell": "shanghang",
2557 | "name": "上杭"
2558 | }, {
2559 | "id": 724,
2560 | "spell": "shanghe",
2561 | "name": "商河"
2562 | }, {
2563 | "id": 725,
2564 | "spell": "shangli",
2565 | "name": "上栗"
2566 | }, {
2567 | "id": 726,
2568 | "spell": "shanglin",
2569 | "name": "上林"
2570 | }, {
2571 | "id": 727,
2572 | "spell": "shangrao",
2573 | "name": "上饶"
2574 | }, {
2575 | "id": 728,
2576 | "spell": "shangyou",
2577 | "name": "上犹"
2578 | }, {
2579 | "id": 729,
2580 | "spell": "shangyu",
2581 | "name": "上虞"
2582 | }, {
2583 | "id": 730,
2584 | "spell": "shangzhi",
2585 | "name": "尚志"
2586 | }, {
2587 | "id": 731,
2588 | "spell": "shaowu",
2589 | "name": "邵武"
2590 | }, {
2591 | "id": 732,
2592 | "spell": "shaoxing",
2593 | "name": "绍兴"
2594 | }, {
2595 | "id": 733,
2596 | "spell": "shaxian",
2597 | "name": "沙县"
2598 | }, {
2599 | "id": 734,
2600 | "spell": "shengsi",
2601 | "name": "嵊泗"
2602 | }, {
2603 | "id": 735,
2604 | "spell": "shengzhou",
2605 | "name": "嵊州"
2606 | }, {
2607 | "id": 736,
2608 | "spell": "shenxian",
2609 | "name": "莘县"
2610 | }, {
2611 | "id": 737,
2612 | "spell": "shenze",
2613 | "name": "深泽"
2614 | }, {
2615 | "id": 738,
2616 | "spell": "shexian",
2617 | "name": "歙县"
2618 | }, {
2619 | "id": 739,
2620 | "spell": "sheyang",
2621 | "name": "射阳"
2622 | }, {
2623 | "id": 740,
2624 | "spell": "shicheng",
2625 | "name": "石城"
2626 | }, {
2627 | "id": 741,
2628 | "spell": "shilin",
2629 | "name": "石林"
2630 | }, {
2631 | "id": 742,
2632 | "spell": "shishi",
2633 | "name": "石狮"
2634 | }, {
2635 | "id": 743,
2636 | "spell": "shitai",
2637 | "name": "石台"
2638 | }, {
2639 | "id": 744,
2640 | "spell": "shixing",
2641 | "name": "始兴"
2642 | }, {
2643 | "id": 745,
2644 | "spell": "shizhu",
2645 | "name": "石柱"
2646 | }, {
2647 | "id": 746,
2648 | "spell": "shouguang",
2649 | "name": "寿光"
2650 | }, {
2651 | "id": 747,
2652 | "spell": "shouning",
2653 | "name": "寿宁"
2654 | }, {
2655 | "id": 748,
2656 | "spell": "shouxian",
2657 | "name": "寿县"
2658 | }, {
2659 | "id": 749,
2660 | "spell": "shuangcheng",
2661 | "name": "双城"
2662 | }, {
2663 | "id": 750,
2664 | "spell": "shuangliu",
2665 | "name": "双流"
2666 | }, {
2667 | "id": 751,
2668 | "spell": "shucheng",
2669 | "name": "舒城"
2670 | }, {
2671 | "id": 752,
2672 | "spell": "shulan",
2673 | "name": "舒兰"
2674 | }, {
2675 | "id": 753,
2676 | "spell": "shunchang",
2677 | "name": "顺昌"
2678 | }, {
2679 | "id": 754,
2680 | "spell": "shuyang",
2681 | "name": "沭阳"
2682 | }, {
2683 | "id": 755,
2684 | "spell": "sihong",
2685 | "name": "泗洪"
2686 | }, {
2687 | "id": 756,
2688 | "spell": "sihui",
2689 | "name": "四会"
2690 | }, {
2691 | "id": 757,
2692 | "spell": "sishui",
2693 | "name": "泗水"
2694 | }, {
2695 | "id": 758,
2696 | "spell": "sixian",
2697 | "name": "泗县"
2698 | }, {
2699 | "id": 759,
2700 | "spell": "siyang",
2701 | "name": "泗阳"
2702 | }, {
2703 | "id": 760,
2704 | "spell": "songming",
2705 | "name": "嵩明"
2706 | }, {
2707 | "id": 761,
2708 | "spell": "songxi",
2709 | "name": "松溪"
2710 | }, {
2711 | "id": 762,
2712 | "spell": "songxian",
2713 | "name": "嵩县"
2714 | }, {
2715 | "id": 763,
2716 | "spell": "songyang",
2717 | "name": "松阳"
2718 | }, {
2719 | "id": 764,
2720 | "spell": "suichang",
2721 | "name": "遂昌"
2722 | }, {
2723 | "id": 765,
2724 | "spell": "suichuan",
2725 | "name": "遂川"
2726 | }, {
2727 | "id": 766,
2728 | "spell": "suining",
2729 | "name": "睢宁"
2730 | }, {
2731 | "id": 767,
2732 | "spell": "suixi",
2733 | "name": "濉溪"
2734 | }, {
2735 | "id": 768,
2736 | "spell": "suixi",
2737 | "name": "遂溪"
2738 | }, {
2739 | "id": 769,
2740 | "spell": "susong",
2741 | "name": "宿松"
2742 | }, {
2743 | "id": 770,
2744 | "spell": "suyu",
2745 | "name": "宿豫"
2746 | }],
2747 | "T": [{
2748 | "id": 4,
2749 | "spell": "tianjin",
2750 | "name": "天津"
2751 | }, {
2752 | "id": 40,
2753 | "spell": "taizhou",
2754 | "name": "台州"
2755 | }, {
2756 | "id": 41,
2757 | "spell": "tangshan",
2758 | "name": "唐山"
2759 | }, {
2760 | "id": 260,
2761 | "spell": "tachengdi",
2762 | "name": "塔城地"
2763 | }, {
2764 | "id": 261,
2765 | "spell": "taian",
2766 | "name": "泰安"
2767 | }, {
2768 | "id": 262,
2769 | "spell": "taiyuan",
2770 | "name": "太原"
2771 | }, {
2772 | "id": 263,
2773 | "spell": "taizhou",
2774 | "name": "泰州"
2775 | }, {
2776 | "id": 264,
2777 | "spell": "tianshui",
2778 | "name": "天水"
2779 | }, {
2780 | "id": 265,
2781 | "spell": "tieling",
2782 | "name": "铁岭"
2783 | }, {
2784 | "id": 266,
2785 | "spell": "tongchuan",
2786 | "name": "铜川"
2787 | }, {
2788 | "id": 267,
2789 | "spell": "tonghua",
2790 | "name": "通化"
2791 | }, {
2792 | "id": 268,
2793 | "spell": "tongliao",
2794 | "name": "通辽"
2795 | }, {
2796 | "id": 269,
2797 | "spell": "tongling",
2798 | "name": "铜陵"
2799 | }, {
2800 | "id": 270,
2801 | "spell": "tongren",
2802 | "name": "铜仁"
2803 | }, {
2804 | "id": 271,
2805 | "spell": "tulufan",
2806 | "name": "吐鲁番"
2807 | }, {
2808 | "id": 771,
2809 | "spell": "taicang",
2810 | "name": "太仓"
2811 | }, {
2812 | "id": 772,
2813 | "spell": "taihe",
2814 | "name": "太和"
2815 | }, {
2816 | "id": 773,
2817 | "spell": "taihe",
2818 | "name": "泰和"
2819 | }, {
2820 | "id": 774,
2821 | "spell": "taihu",
2822 | "name": "太湖"
2823 | }, {
2824 | "id": 775,
2825 | "spell": "taining",
2826 | "name": "泰宁"
2827 | }, {
2828 | "id": 776,
2829 | "spell": "taishan",
2830 | "name": "台山"
2831 | }, {
2832 | "id": 777,
2833 | "spell": "taishun",
2834 | "name": "泰顺"
2835 | }, {
2836 | "id": 778,
2837 | "spell": "taixing",
2838 | "name": "泰兴"
2839 | }, {
2840 | "id": 779,
2841 | "spell": "tancheng",
2842 | "name": "郯城"
2843 | }, {
2844 | "id": 780,
2845 | "spell": "tanghai",
2846 | "name": "唐海"
2847 | }, {
2848 | "id": 781,
2849 | "spell": "tengzhou",
2850 | "name": "滕州"
2851 | }, {
2852 | "id": 782,
2853 | "spell": "tianchang",
2854 | "name": "天长"
2855 | }, {
2856 | "id": 783,
2857 | "spell": "tiantai",
2858 | "name": "天台"
2859 | }, {
2860 | "id": 784,
2861 | "spell": "tongcheng",
2862 | "name": "桐城"
2863 | }, {
2864 | "id": 785,
2865 | "spell": "tonggu",
2866 | "name": "铜鼓"
2867 | }, {
2868 | "id": 786,
2869 | "spell": "tonghe",
2870 | "name": "通河"
2871 | }, {
2872 | "id": 787,
2873 | "spell": "tongliang",
2874 | "name": "铜梁"
2875 | }, {
2876 | "id": 788,
2877 | "spell": "tongling",
2878 | "name": "铜陵"
2879 | }, {
2880 | "id": 789,
2881 | "spell": "tonglu",
2882 | "name": "桐庐"
2883 | }, {
2884 | "id": 790,
2885 | "spell": "tongnan",
2886 | "name": "潼南"
2887 | }, {
2888 | "id": 791,
2889 | "spell": "tongshan",
2890 | "name": "铜山"
2891 | }, {
2892 | "id": 792,
2893 | "spell": "tongxiang",
2894 | "name": "桐乡"
2895 | }, {
2896 | "id": 793,
2897 | "spell": "tongzhou",
2898 | "name": "通州"
2899 | }],
2900 | "W": [{
2901 | "id": 42,
2902 | "spell": "weifang",
2903 | "name": "潍坊"
2904 | }, {
2905 | "id": 43,
2906 | "spell": "weihai",
2907 | "name": "威海"
2908 | }, {
2909 | "id": 44,
2910 | "spell": "wuhan",
2911 | "name": "武汉"
2912 | }, {
2913 | "id": 45,
2914 | "spell": "wuxi",
2915 | "name": "无锡"
2916 | }, {
2917 | "id": 272,
2918 | "spell": "weinan",
2919 | "name": "渭南"
2920 | }, {
2921 | "id": 273,
2922 | "spell": "wenshan",
2923 | "name": "文山"
2924 | }, {
2925 | "id": 274,
2926 | "spell": "wenzhou",
2927 | "name": "温州"
2928 | }, {
2929 | "id": 275,
2930 | "spell": "wuhai",
2931 | "name": "乌海"
2932 | }, {
2933 | "id": 276,
2934 | "spell": "wuhu",
2935 | "name": "芜湖"
2936 | }, {
2937 | "id": 277,
2938 | "spell": "wulanchabu",
2939 | "name": "乌兰察布"
2940 | }, {
2941 | "id": 278,
2942 | "spell": "wulumuqi",
2943 | "name": "乌鲁木齐"
2944 | }, {
2945 | "id": 279,
2946 | "spell": "wuwei",
2947 | "name": "武威"
2948 | }, {
2949 | "id": 280,
2950 | "spell": "wuzhong",
2951 | "name": "吴忠"
2952 | }, {
2953 | "id": 281,
2954 | "spell": "wuzhou",
2955 | "name": "梧州"
2956 | }, {
2957 | "id": 794,
2958 | "spell": "wafangdian",
2959 | "name": "瓦房店"
2960 | }, {
2961 | "id": 795,
2962 | "spell": "wanan",
2963 | "name": "万安"
2964 | }, {
2965 | "id": 796,
2966 | "spell": "wangcheng",
2967 | "name": "望城"
2968 | }, {
2969 | "id": 797,
2970 | "spell": "wangjiang",
2971 | "name": "望江"
2972 | }, {
2973 | "id": 798,
2974 | "spell": "wannian",
2975 | "name": "万年"
2976 | }, {
2977 | "id": 799,
2978 | "spell": "wanzai",
2979 | "name": "万载"
2980 | }, {
2981 | "id": 800,
2982 | "spell": "weishan",
2983 | "name": "微山"
2984 | }, {
2985 | "id": 801,
2986 | "spell": "wencheng",
2987 | "name": "文成"
2988 | }, {
2989 | "id": 802,
2990 | "spell": "wendeng",
2991 | "name": "文登"
2992 | }, {
2993 | "id": 803,
2994 | "spell": "wengyuan",
2995 | "name": "翁源"
2996 | }, {
2997 | "id": 804,
2998 | "spell": "wenling",
2999 | "name": "温岭"
3000 | }, {
3001 | "id": 805,
3002 | "spell": "wenshang",
3003 | "name": "汶上"
3004 | }, {
3005 | "id": 806,
3006 | "spell": "wenxian",
3007 | "name": "温县"
3008 | }, {
3009 | "id": 807,
3010 | "spell": "woyang",
3011 | "name": "涡阳"
3012 | }, {
3013 | "id": 808,
3014 | "spell": "wuchang",
3015 | "name": "五常"
3016 | }, {
3017 | "id": 809,
3018 | "spell": "wucheng",
3019 | "name": "武城"
3020 | }, {
3021 | "id": 810,
3022 | "spell": "wuchuan",
3023 | "name": "吴川"
3024 | }, {
3025 | "id": 811,
3026 | "spell": "wudi",
3027 | "name": "无棣"
3028 | }, {
3029 | "id": 812,
3030 | "spell": "wuhe",
3031 | "name": "五河"
3032 | }, {
3033 | "id": 813,
3034 | "spell": "wuhu",
3035 | "name": "芜湖"
3036 | }, {
3037 | "id": 814,
3038 | "spell": "wuhua",
3039 | "name": "五华"
3040 | }, {
3041 | "id": 815,
3042 | "spell": "wuji",
3043 | "name": "无极"
3044 | }, {
3045 | "id": 816,
3046 | "spell": "wujiang",
3047 | "name": "吴江"
3048 | }, {
3049 | "id": 817,
3050 | "spell": "wulian",
3051 | "name": "五莲"
3052 | }, {
3053 | "id": 818,
3054 | "spell": "wulong",
3055 | "name": "武隆"
3056 | }, {
3057 | "id": 819,
3058 | "spell": "wuming",
3059 | "name": "武鸣"
3060 | }, {
3061 | "id": 820,
3062 | "spell": "wuning",
3063 | "name": "武宁"
3064 | }, {
3065 | "id": 821,
3066 | "spell": "wuping",
3067 | "name": "武平"
3068 | }, {
3069 | "id": 822,
3070 | "spell": "wushan",
3071 | "name": "巫山"
3072 | }, {
3073 | "id": 823,
3074 | "spell": "wuwei",
3075 | "name": "无为"
3076 | }, {
3077 | "id": 824,
3078 | "spell": "wuxi",
3079 | "name": "巫溪"
3080 | }, {
3081 | "id": 825,
3082 | "spell": "wuyi",
3083 | "name": "武义"
3084 | }, {
3085 | "id": 826,
3086 | "spell": "wuyishan",
3087 | "name": "武夷山"
3088 | }, {
3089 | "id": 827,
3090 | "spell": "wuyuan",
3091 | "name": "婺源"
3092 | }, {
3093 | "id": 828,
3094 | "spell": "wuzhi",
3095 | "name": "武陟"
3096 | }],
3097 | "X": [{
3098 | "id": 46,
3099 | "spell": "xiamen",
3100 | "name": "厦门"
3101 | }, {
3102 | "id": 47,
3103 | "spell": "xian",
3104 | "name": "西安"
3105 | }, {
3106 | "id": 48,
3107 | "spell": "xuchang",
3108 | "name": "许昌"
3109 | }, {
3110 | "id": 49,
3111 | "spell": "xuzhou",
3112 | "name": "徐州"
3113 | }, {
3114 | "id": 282,
3115 | "spell": "xiangfan",
3116 | "name": "襄樊"
3117 | }, {
3118 | "id": 283,
3119 | "spell": "xiangtan",
3120 | "name": "湘潭"
3121 | }, {
3122 | "id": 284,
3123 | "spell": "xiangxi",
3124 | "name": "湘西"
3125 | }, {
3126 | "id": 285,
3127 | "spell": "xianning",
3128 | "name": "咸宁"
3129 | }, {
3130 | "id": 286,
3131 | "spell": "xianyang",
3132 | "name": "咸阳"
3133 | }, {
3134 | "id": 287,
3135 | "spell": "xiaogan",
3136 | "name": "孝感"
3137 | }, {
3138 | "id": 288,
3139 | "spell": "xilinguolemeng",
3140 | "name": "锡林郭勒盟"
3141 | }, {
3142 | "id": 289,
3143 | "spell": "xinganmeng",
3144 | "name": "兴安盟"
3145 | }, {
3146 | "id": 290,
3147 | "spell": "xingtai",
3148 | "name": "邢台"
3149 | }, {
3150 | "id": 291,
3151 | "spell": "xining",
3152 | "name": "西宁"
3153 | }, {
3154 | "id": 292,
3155 | "spell": "xinxiang",
3156 | "name": "新乡"
3157 | }, {
3158 | "id": 293,
3159 | "spell": "xinyang",
3160 | "name": "信阳"
3161 | }, {
3162 | "id": 294,
3163 | "spell": "xinyu",
3164 | "name": "新余"
3165 | }, {
3166 | "id": 295,
3167 | "spell": "xinzhou",
3168 | "name": "忻州"
3169 | }, {
3170 | "id": 296,
3171 | "spell": "xishuangbanna",
3172 | "name": "西双版纳"
3173 | }, {
3174 | "id": 297,
3175 | "spell": "xuancheng",
3176 | "name": "宣城"
3177 | }, {
3178 | "id": 829,
3179 | "spell": "xiajiang",
3180 | "name": "峡江"
3181 | }, {
3182 | "id": 830,
3183 | "spell": "xiajin",
3184 | "name": "夏津"
3185 | }, {
3186 | "id": 831,
3187 | "spell": "xiangshan",
3188 | "name": "象山"
3189 | }, {
3190 | "id": 832,
3191 | "spell": "xiangshui",
3192 | "name": "响水"
3193 | }, {
3194 | "id": 833,
3195 | "spell": "xianju",
3196 | "name": "仙居"
3197 | }, {
3198 | "id": 834,
3199 | "spell": "xianyou",
3200 | "name": "仙游"
3201 | }, {
3202 | "id": 835,
3203 | "spell": "xiaoxian",
3204 | "name": "萧县"
3205 | }, {
3206 | "id": 836,
3207 | "spell": "xiapu",
3208 | "name": "霞浦"
3209 | }, {
3210 | "id": 837,
3211 | "spell": "xifeng",
3212 | "name": "息烽"
3213 | }, {
3214 | "id": 838,
3215 | "spell": "xinan",
3216 | "name": "新安"
3217 | }, {
3218 | "id": 839,
3219 | "spell": "xinchang",
3220 | "name": "新昌"
3221 | }, {
3222 | "id": 840,
3223 | "spell": "xinfeng",
3224 | "name": "信丰"
3225 | }, {
3226 | "id": 841,
3227 | "spell": "xinfeng",
3228 | "name": "新丰"
3229 | }, {
3230 | "id": 842,
3231 | "spell": "xingan",
3232 | "name": "新干"
3233 | }, {
3234 | "id": 843,
3235 | "spell": "xingguo",
3236 | "name": "兴国"
3237 | }, {
3238 | "id": 844,
3239 | "spell": "xinghua",
3240 | "name": "兴化"
3241 | }, {
3242 | "id": 845,
3243 | "spell": "xingning",
3244 | "name": "兴宁"
3245 | }, {
3246 | "id": 846,
3247 | "spell": "xingtang",
3248 | "name": "行唐"
3249 | }, {
3250 | "id": 847,
3251 | "spell": "xingyang",
3252 | "name": "荥阳"
3253 | }, {
3254 | "id": 848,
3255 | "spell": "xingzi",
3256 | "name": "星子"
3257 | }, {
3258 | "id": 849,
3259 | "spell": "xinji",
3260 | "name": "辛集"
3261 | }, {
3262 | "id": 850,
3263 | "spell": "xinjian",
3264 | "name": "新建"
3265 | }, {
3266 | "id": 851,
3267 | "spell": "xinjin",
3268 | "name": "新津"
3269 | }, {
3270 | "id": 852,
3271 | "spell": "xinle",
3272 | "name": "新乐"
3273 | }, {
3274 | "id": 853,
3275 | "spell": "xinmin",
3276 | "name": "新民"
3277 | }, {
3278 | "id": 854,
3279 | "spell": "xinmi",
3280 | "name": "新密"
3281 | }, {
3282 | "id": 855,
3283 | "spell": "xintai",
3284 | "name": "新泰"
3285 | }, {
3286 | "id": 856,
3287 | "spell": "xinxing",
3288 | "name": "新兴"
3289 | }, {
3290 | "id": 857,
3291 | "spell": "xinyi",
3292 | "name": "新沂"
3293 | }, {
3294 | "id": 858,
3295 | "spell": "xinyi",
3296 | "name": "信宜"
3297 | }, {
3298 | "id": 859,
3299 | "spell": "xinzheng",
3300 | "name": "新郑"
3301 | }, {
3302 | "id": 860,
3303 | "spell": "xiuning",
3304 | "name": "休宁"
3305 | }, {
3306 | "id": 861,
3307 | "spell": "xiushan",
3308 | "name": "秀山"
3309 | }, {
3310 | "id": 862,
3311 | "spell": "xiushui",
3312 | "name": "修水"
3313 | }, {
3314 | "id": 863,
3315 | "spell": "xiuwen",
3316 | "name": "修文"
3317 | }, {
3318 | "id": 864,
3319 | "spell": "xiuwu",
3320 | "name": "修武"
3321 | }, {
3322 | "id": 865,
3323 | "spell": "xundian",
3324 | "name": "寻甸"
3325 | }, {
3326 | "id": 866,
3327 | "spell": "xunwu",
3328 | "name": "寻乌"
3329 | }, {
3330 | "id": 867,
3331 | "spell": "xuwen",
3332 | "name": "徐闻"
3333 | }, {
3334 | "id": 868,
3335 | "spell": "xuyi",
3336 | "name": "盱眙"
3337 | }],
3338 | "Y": [{
3339 | "id": 50,
3340 | "spell": "yangzhou",
3341 | "name": "扬州"
3342 | }, {
3343 | "id": 51,
3344 | "spell": "yantai",
3345 | "name": "烟台"
3346 | }, {
3347 | "id": 298,
3348 | "spell": "yaan",
3349 | "name": "雅安"
3350 | }, {
3351 | "id": 299,
3352 | "spell": "yanan",
3353 | "name": "延安"
3354 | }, {
3355 | "id": 300,
3356 | "spell": "yanbian",
3357 | "name": "延边"
3358 | }, {
3359 | "id": 301,
3360 | "spell": "yancheng",
3361 | "name": "盐城"
3362 | }, {
3363 | "id": 302,
3364 | "spell": "yangjiang",
3365 | "name": "阳江"
3366 | }, {
3367 | "id": 303,
3368 | "spell": "yangquan",
3369 | "name": "阳泉"
3370 | }, {
3371 | "id": 304,
3372 | "spell": "yibin",
3373 | "name": "宜宾"
3374 | }, {
3375 | "id": 305,
3376 | "spell": "yichang",
3377 | "name": "宜昌"
3378 | }, {
3379 | "id": 306,
3380 | "spell": "yichun",
3381 | "name": "伊春"
3382 | }, {
3383 | "id": 307,
3384 | "spell": "yichun",
3385 | "name": "宜春"
3386 | }, {
3387 | "id": 308,
3388 | "spell": "yilihasake",
3389 | "name": "伊犁哈萨克"
3390 | }, {
3391 | "id": 309,
3392 | "spell": "yinchuan",
3393 | "name": "银川"
3394 | }, {
3395 | "id": 310,
3396 | "spell": "yingkou",
3397 | "name": "营口"
3398 | }, {
3399 | "id": 311,
3400 | "spell": "yingtan",
3401 | "name": "鹰潭"
3402 | }, {
3403 | "id": 312,
3404 | "spell": "yiyang",
3405 | "name": "益阳"
3406 | }, {
3407 | "id": 313,
3408 | "spell": "yongzhou",
3409 | "name": "永州"
3410 | }, {
3411 | "id": 314,
3412 | "spell": "yueyang",
3413 | "name": "岳阳"
3414 | }, {
3415 | "id": 315,
3416 | "spell": "yulin",
3417 | "name": "玉林"
3418 | }, {
3419 | "id": 316,
3420 | "spell": "yulin",
3421 | "name": "榆林"
3422 | }, {
3423 | "id": 317,
3424 | "spell": "yuncheng",
3425 | "name": "运城"
3426 | }, {
3427 | "id": 318,
3428 | "spell": "yunfu",
3429 | "name": "云浮"
3430 | }, {
3431 | "id": 319,
3432 | "spell": "yushu",
3433 | "name": "玉树"
3434 | }, {
3435 | "id": 320,
3436 | "spell": "yuxi",
3437 | "name": "玉溪"
3438 | }, {
3439 | "id": 869,
3440 | "spell": "yangchun",
3441 | "name": "阳春"
3442 | }, {
3443 | "id": 870,
3444 | "spell": "yangdong",
3445 | "name": "阳东"
3446 | }, {
3447 | "id": 871,
3448 | "spell": "yanggu",
3449 | "name": "阳谷"
3450 | }, {
3451 | "id": 872,
3452 | "spell": "yangshan",
3453 | "name": "阳山"
3454 | }, {
3455 | "id": 873,
3456 | "spell": "yangxin",
3457 | "name": "阳信"
3458 | }, {
3459 | "id": 874,
3460 | "spell": "yangxi",
3461 | "name": "阳西"
3462 | }, {
3463 | "id": 875,
3464 | "spell": "yangzhong",
3465 | "name": "扬中"
3466 | }, {
3467 | "id": 876,
3468 | "spell": "yanshi",
3469 | "name": "偃师"
3470 | }, {
3471 | "id": 877,
3472 | "spell": "yanshou",
3473 | "name": "延寿"
3474 | }, {
3475 | "id": 878,
3476 | "spell": "yanzhou",
3477 | "name": "兖州"
3478 | }, {
3479 | "id": 879,
3480 | "spell": "yichuan",
3481 | "name": "伊川"
3482 | }, {
3483 | "id": 880,
3484 | "spell": "yifeng",
3485 | "name": "宜丰"
3486 | }, {
3487 | "id": 881,
3488 | "spell": "yihuang",
3489 | "name": "宜黄"
3490 | }, {
3491 | "id": 882,
3492 | "spell": "yilan",
3493 | "name": "依兰"
3494 | }, {
3495 | "id": 883,
3496 | "spell": "yiliang",
3497 | "name": "宜良"
3498 | }, {
3499 | "id": 884,
3500 | "spell": "yinan",
3501 | "name": "沂南"
3502 | }, {
3503 | "id": 885,
3504 | "spell": "yingde",
3505 | "name": "英德"
3506 | }, {
3507 | "id": 886,
3508 | "spell": "yingshang",
3509 | "name": "颍上"
3510 | }, {
3511 | "id": 887,
3512 | "spell": "yishui",
3513 | "name": "沂水"
3514 | }, {
3515 | "id": 888,
3516 | "spell": "yiwu",
3517 | "name": "义乌"
3518 | }, {
3519 | "id": 889,
3520 | "spell": "yixian",
3521 | "name": "黟县"
3522 | }, {
3523 | "id": 890,
3524 | "spell": "yixing",
3525 | "name": "宜兴"
3526 | }, {
3527 | "id": 891,
3528 | "spell": "yiyang",
3529 | "name": "弋阳"
3530 | }, {
3531 | "id": 892,
3532 | "spell": "yiyang",
3533 | "name": "宜阳"
3534 | }, {
3535 | "id": 893,
3536 | "spell": "yiyuan",
3537 | "name": "沂源"
3538 | }, {
3539 | "id": 894,
3540 | "spell": "yizheng",
3541 | "name": "仪征"
3542 | }, {
3543 | "id": 895,
3544 | "spell": "yongan",
3545 | "name": "永安"
3546 | }, {
3547 | "id": 896,
3548 | "spell": "yongchuan",
3549 | "name": "永川"
3550 | }, {
3551 | "id": 897,
3552 | "spell": "yongchun",
3553 | "name": "永春"
3554 | }, {
3555 | "id": 898,
3556 | "spell": "yongdeng",
3557 | "name": "永登"
3558 | }, {
3559 | "id": 899,
3560 | "spell": "yongding",
3561 | "name": "永定"
3562 | }, {
3563 | "id": 900,
3564 | "spell": "yongfeng",
3565 | "name": "永丰"
3566 | }, {
3567 | "id": 901,
3568 | "spell": "yongji",
3569 | "name": "永吉"
3570 | }, {
3571 | "id": 902,
3572 | "spell": "yongjia",
3573 | "name": "永嘉"
3574 | }, {
3575 | "id": 903,
3576 | "spell": "yongkang",
3577 | "name": "永康"
3578 | }, {
3579 | "id": 904,
3580 | "spell": "yongning",
3581 | "name": "邕宁"
3582 | }, {
3583 | "id": 905,
3584 | "spell": "yongtai",
3585 | "name": "永泰"
3586 | }, {
3587 | "id": 906,
3588 | "spell": "yongxin",
3589 | "name": "永新"
3590 | }, {
3591 | "id": 907,
3592 | "spell": "yongxiu",
3593 | "name": "永修"
3594 | }, {
3595 | "id": 908,
3596 | "spell": "youxi",
3597 | "name": "尤溪"
3598 | }, {
3599 | "id": 909,
3600 | "spell": "youyang",
3601 | "name": "酉阳"
3602 | }, {
3603 | "id": 910,
3604 | "spell": "yuanshi",
3605 | "name": "元氏"
3606 | }, {
3607 | "id": 911,
3608 | "spell": "yucheng",
3609 | "name": "禹城"
3610 | }, {
3611 | "id": 912,
3612 | "spell": "yudu",
3613 | "name": "于都"
3614 | }, {
3615 | "id": 913,
3616 | "spell": "yuexi",
3617 | "name": "岳西"
3618 | }, {
3619 | "id": 914,
3620 | "spell": "yugan",
3621 | "name": "余干"
3622 | }, {
3623 | "id": 915,
3624 | "spell": "yuhuan",
3625 | "name": "玉环"
3626 | }, {
3627 | "id": 916,
3628 | "spell": "yujiang",
3629 | "name": "余江"
3630 | }, {
3631 | "id": 917,
3632 | "spell": "yunan",
3633 | "name": "郁南"
3634 | }, {
3635 | "id": 918,
3636 | "spell": "yunan",
3637 | "name": "云安"
3638 | }, {
3639 | "id": 919,
3640 | "spell": "yuncheng",
3641 | "name": "郓城"
3642 | }, {
3643 | "id": 920,
3644 | "spell": "yunhe",
3645 | "name": "云和"
3646 | }, {
3647 | "id": 921,
3648 | "spell": "yunxiao",
3649 | "name": "云霄"
3650 | }, {
3651 | "id": 922,
3652 | "spell": "yunyang",
3653 | "name": "云阳"
3654 | }, {
3655 | "id": 923,
3656 | "spell": "yushan",
3657 | "name": "玉山"
3658 | }, {
3659 | "id": 924,
3660 | "spell": "yushu",
3661 | "name": "榆树"
3662 | }, {
3663 | "id": 925,
3664 | "spell": "yutai",
3665 | "name": "鱼台"
3666 | }, {
3667 | "id": 926,
3668 | "spell": "yutian",
3669 | "name": "玉田"
3670 | }, {
3671 | "id": 927,
3672 | "spell": "yuyao",
3673 | "name": "余姚"
3674 | }, {
3675 | "id": 928,
3676 | "spell": "yuzhong",
3677 | "name": "榆中"
3678 | }],
3679 | "Z": [{
3680 | "id": 52,
3681 | "spell": "zhangzhou",
3682 | "name": "漳州"
3683 | }, {
3684 | "id": 53,
3685 | "spell": "zhengzhou",
3686 | "name": "郑州"
3687 | }, {
3688 | "id": 54,
3689 | "spell": "zhongshan",
3690 | "name": "中山"
3691 | }, {
3692 | "id": 55,
3693 | "spell": "zhuhai",
3694 | "name": "珠海"
3695 | }, {
3696 | "id": 321,
3697 | "spell": "zaozhuang",
3698 | "name": "枣庄"
3699 | }, {
3700 | "id": 322,
3701 | "spell": "zhangjiajie",
3702 | "name": "张家界"
3703 | }, {
3704 | "id": 323,
3705 | "spell": "zhangjiakou",
3706 | "name": "张家口"
3707 | }, {
3708 | "id": 324,
3709 | "spell": "zhangye",
3710 | "name": "张掖"
3711 | }, {
3712 | "id": 325,
3713 | "spell": "zhanjiang",
3714 | "name": "湛江"
3715 | }, {
3716 | "id": 326,
3717 | "spell": "zhaoqing",
3718 | "name": "肇庆"
3719 | }, {
3720 | "id": 327,
3721 | "spell": "zhaotong",
3722 | "name": "昭通"
3723 | }, {
3724 | "id": 328,
3725 | "spell": "zhenjiang",
3726 | "name": "镇江"
3727 | }, {
3728 | "id": 329,
3729 | "spell": "zhongwei",
3730 | "name": "中卫"
3731 | }, {
3732 | "id": 330,
3733 | "spell": "zhoukou",
3734 | "name": "周口"
3735 | }, {
3736 | "id": 331,
3737 | "spell": "zhoushan",
3738 | "name": "舟山"
3739 | }, {
3740 | "id": 332,
3741 | "spell": "zhumadian",
3742 | "name": "驻马店"
3743 | }, {
3744 | "id": 333,
3745 | "spell": "zhuzhou",
3746 | "name": "株洲"
3747 | }, {
3748 | "id": 334,
3749 | "spell": "zibo",
3750 | "name": "淄博"
3751 | }, {
3752 | "id": 335,
3753 | "spell": "zigong",
3754 | "name": "自贡"
3755 | }, {
3756 | "id": 336,
3757 | "spell": "ziyang",
3758 | "name": "资阳"
3759 | }, {
3760 | "id": 337,
3761 | "spell": "zunyi",
3762 | "name": "遵义"
3763 | }, {
3764 | "id": 929,
3765 | "spell": "zanhuang",
3766 | "name": "赞皇"
3767 | }, {
3768 | "id": 930,
3769 | "spell": "zengcheng",
3770 | "name": "增城"
3771 | }, {
3772 | "id": 931,
3773 | "spell": "zhangjiagang",
3774 | "name": "张家港"
3775 | }, {
3776 | "id": 932,
3777 | "spell": "zhangping",
3778 | "name": "漳平"
3779 | }, {
3780 | "id": 933,
3781 | "spell": "zhangpu",
3782 | "name": "漳浦"
3783 | }, {
3784 | "id": 934,
3785 | "spell": "zhangqiu",
3786 | "name": "章丘"
3787 | }, {
3788 | "id": 935,
3789 | "spell": "zhangshu",
3790 | "name": "樟树"
3791 | }, {
3792 | "id": 936,
3793 | "spell": "zhanhua",
3794 | "name": "沾化"
3795 | }, {
3796 | "id": 937,
3797 | "spell": "zhaoxian",
3798 | "name": "赵县"
3799 | }, {
3800 | "id": 938,
3801 | "spell": "zhaoyuan",
3802 | "name": "招远"
3803 | }, {
3804 | "id": 939,
3805 | "spell": "zhengding",
3806 | "name": "正定"
3807 | }, {
3808 | "id": 940,
3809 | "spell": "zhenghe",
3810 | "name": "政和"
3811 | }, {
3812 | "id": 941,
3813 | "spell": "zherong",
3814 | "name": "柘荣"
3815 | }, {
3816 | "id": 942,
3817 | "spell": "zhongmou",
3818 | "name": "中牟"
3819 | }, {
3820 | "id": 943,
3821 | "spell": "zhongxian",
3822 | "name": "忠县"
3823 | }, {
3824 | "id": 944,
3825 | "spell": "zhouning",
3826 | "name": "周宁"
3827 | }, {
3828 | "id": 945,
3829 | "spell": "zhouzhi",
3830 | "name": "周至"
3831 | }, {
3832 | "id": 946,
3833 | "spell": "zhuanghe",
3834 | "name": "庄河"
3835 | }, {
3836 | "id": 947,
3837 | "spell": "zhucheng",
3838 | "name": "诸城"
3839 | }, {
3840 | "id": 948,
3841 | "spell": "zhuji",
3842 | "name": "诸暨"
3843 | }, {
3844 | "id": 949,
3845 | "spell": "zijin",
3846 | "name": "紫金"
3847 | }, {
3848 | "id": 950,
3849 | "spell": "zixi",
3850 | "name": "资溪"
3851 | }, {
3852 | "id": 951,
3853 | "spell": "zoucheng",
3854 | "name": "邹城"
3855 | }, {
3856 | "id": 952,
3857 | "spell": "zouping",
3858 | "name": "邹平"
3859 | }, {
3860 | "id": 953,
3861 | "spell": "zunhua",
3862 | "name": "遵化"
3863 | }]
3864 | }
3865 | }
3866 | }
3867 |
--------------------------------------------------------------------------------
/Travel/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 | "gallaryImgs": ["http://img1.qunarzz.com/sight/p0/201404/23/04b92c99462687fa1ba45c1b5ba4ad77.jpg_800x800_70debc93.jpg", "http://img1.qunarzz.com/sight/p0/1709/76/7691528bc7d7ad3ca3.img.png_800x800_9ef05ee7.png"],
7 | "categoryList": [{
8 | "title": "成人票",
9 | "children": [{
10 | "title": "成人三馆联票",
11 | "children": [{
12 | "title": "成人三馆联票 - 某一连锁店销售"
13 | }]
14 | },{
15 | "title": "成人五馆联票"
16 | }]
17 | }, {
18 | "title": "学生票"
19 | }, {
20 | "title": "儿童票"
21 | }, {
22 | "title": "特惠票"
23 | }]
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Travel/static/mock/index.json:
--------------------------------------------------------------------------------
1 | {
2 | "ret": true,
3 | "data": {
4 | "swiperList": [{
5 | "id": "0001",
6 | "imgUrl": "http://img1.qunarzz.com/piao/fusion/1801/1a/94428c6dea109402.jpg_640x200_2cf590d8.jpg"
7 | },{
8 | "id": "0002",
9 | "imgUrl": "http://img1.qunarzz.com/piao/fusion/1802/42/7c92b9a381e46402.jpg_640x200_1cdce2a4.jpg"
10 | },{
11 | "id": "0003",
12 | "imgUrl": "http://img1.qunarzz.com/piao/fusion/1802/51/e78f936a5b404102.jpg_640x200_c14f0b3a.jpg"
13 | },{
14 | "id": "0004",
15 | "imgUrl": "http://img1.qunarzz.com/piao/fusion/1712/91/a275569091681d02.jpg_640x200_0519ccb9.jpg"
16 | }],
17 | "iconList": [{
18 | "id": "0001",
19 | "imgUrl": "http://img1.qunarzz.com/piao/fusion/1611/54/ace00878a52d9702.png",
20 | "desc": "景点门票"
21 | }, {
22 | "id": "0002",
23 | "imgUrl": "http://img1.qunarzz.com/piao/fusion/1711/df/86cbcfc533330d02.png",
24 | "desc": "滑雪季"
25 | }, {
26 | "id": "0003",
27 | "imgUrl": "http://img1.qunarzz.com/piao/fusion/1710/a6/83f636bd75ae6302.png",
28 | "desc": "泡温泉"
29 | }, {
30 | "id": "0004",
31 | "imgUrl": "http://img1.qunarzz.com/piao/fusion/1611/35/2640cab202c41b02.png",
32 | "desc": "动植园"
33 | }, {
34 | "id": "0005",
35 | "imgUrl": "http://img1.qunarzz.com/piao/fusion/1611/d0/e09575e66f4aa402.png",
36 | "desc": "游乐园"
37 | }, {
38 | "id": "0006",
39 | "imgUrl": "http://img1.qunarzz.com/piao/fusion/1611/59/569d3c096e542502.png",
40 | "desc": "必游榜单"
41 | }, {
42 | "id": "0007",
43 | "imgUrl": "http://img1.qunarzz.com/piao/fusion/1611/17/4bd370f3eb1acd02.png",
44 | "desc": "演出"
45 | }, {
46 | "id": "0008",
47 | "imgUrl": "http://img1.qunarzz.com/piao/fusion/1611/7f/b1ea3c8c7fb6db02.png",
48 | "desc": "城市观光"
49 | }, {
50 | "id": "0009",
51 | "imgUrl": "http://img1.qunarzz.com/piao/fusion/1611/a9/ffc620dbda9b9c02.png",
52 | "desc": "一日游"
53 | }],
54 | "recommendList": [{
55 | "id": "0001",
56 | "imgUrl": "http://img1.qunarzz.com/sight/p0/1409/19/adca619faaab0898245dc4ec482b5722.jpg_140x140_80f63803.jpg",
57 | "title": "故宫",
58 | "desc": "东方宫殿建筑代表,世界宫殿建筑典范"
59 | }, {
60 | "id": "0002",
61 | "imgUrl": "http://img1.qunarzz.com/sight/p0/1511/d2/d2aec2dfc5aa771290.water.jpg_140x140_abb362a7.jpg",
62 | "title": "南山滑雪场",
63 | "desc": "北京专业级滑雪圣地"
64 | }, {
65 | "id": "0003",
66 | "imgUrl": "http://img1.qunarzz.com/sight/p0/1501/f4/f467729126949c3a.water.jpg_140x140_ef235b1c.jpg",
67 | "title": "天安门广场",
68 | "desc": "我爱北京天安门,天安门上太阳升"
69 | }, {
70 | "id": "0004",
71 | "imgUrl": "http://img1.qunarzz.com/sight/p0/1501/40/40b2b6c951b28fdd.water.jpg_140x140_1c863e5c.jpg",
72 | "title": "水立方",
73 | "desc": "中国的荣耀,阳光下的晶莹水滴"
74 | }, {
75 | "id": "0005",
76 | "imgUrl": "http://img1.qunarzz.com/sight/p0/201308/23/b283071686e64dfec8d65eac.jpg_140x140_8c5a7c49.jpg",
77 | "title": "温都水城养生馆",
78 | "desc": "各种亚热带植物掩映其间仿佛置身热带雨林"
79 | }],
80 | "weekendList": [{
81 | "id": "0001",
82 | "imgUrl": "http://img1.qunarzz.com/sight/source/1510/6e/1ea71e2f04e.jpg_r_640x214_aa6f091d.jpg",
83 | "title": "北京温泉排行榜",
84 | "desc": "细数北京温泉,温暖你的冬天"
85 | }, {
86 | "id": "0002",
87 | "imgUrl": "http://img1.qunarzz.com/sight/source/1505/aa/7baaf8a851d221.jpg_r_640x214_1431200f.jpg",
88 | "title": "北京必游TOP10",
89 | "desc": "来北京必去的景点非这些地方莫属"
90 | }, {
91 | "id": "0003",
92 | "imgUrl": "http://img1.qunarzz.com/sight/source/1505/9e/21df651e19af5d.jpg_r_640x214_3ea5bb38.jpg",
93 | "title": "寻找北京的皇城范儿",
94 | "desc": "数百年的宫廷庙宇,至今依旧威严霸气"
95 | }, {
96 | "id": "0004",
97 | "imgUrl": "http://img1.qunarzz.com/sight/source/1505/ce/bc89bc2f0e33ea.jpg_r_640x214_3e408453.jpg",
98 | "title": "学生最爱的博物馆",
99 | "desc": "周末干嘛?北京很多博物馆已经免费开放啦"
100 | }, {
101 | "id": "0005",
102 | "imgUrl": "http://img1.qunarzz.com/sight/source/1505/b2/fde1bfcd057a52.jpg_r_640x214_bbf3fa44.jpg",
103 | "title": "儿童剧场,孩子的乐园",
104 | "desc": "带宝贝观看演出,近距离体验艺术的无穷魅力"
105 | }]
106 | }
107 | }
--------------------------------------------------------------------------------