├── client
├── .browserslistrc
├── vue.config.js
├── .env.development
├── public
│ ├── favicon.ico
│ ├── static
│ │ ├── img
│ │ │ ├── logo1.png
│ │ │ ├── logo2.png
│ │ │ ├── logo_dark.png
│ │ │ ├── logo_light2.png
│ │ │ ├── qiehuan_dark.png
│ │ │ ├── qiehuan_light.png
│ │ │ ├── header_border_dark.png
│ │ │ └── header_border_light.png
│ │ └── map
│ │ │ ├── province
│ │ │ ├── aomen.json
│ │ │ ├── taiwan.json
│ │ │ ├── tianjin.json
│ │ │ ├── shanghai.json
│ │ │ ├── xianggang.json
│ │ │ └── ningxia.json
│ │ │ └── china-contour.json
│ └── index.html
├── babel.config.js
├── .env.production
├── src
│ ├── assets
│ │ ├── font
│ │ │ ├── iconfont.eot
│ │ │ ├── iconfont.ttf
│ │ │ ├── iconfont.woff
│ │ │ ├── iconfont.woff2
│ │ │ ├── iconfont.json
│ │ │ ├── iconfont.css
│ │ │ ├── demo.css
│ │ │ └── iconfont.svg
│ │ └── styles
│ │ │ └── global.less
│ ├── api
│ │ ├── rank.js
│ │ ├── seller.js
│ │ ├── stock.js
│ │ ├── trend.js
│ │ ├── hot.js
│ │ └── map.js
│ ├── utils
│ │ ├── request.js
│ │ ├── theme_utils.js
│ │ ├── map_utils.js
│ │ └── socket_service.js
│ ├── App.vue
│ ├── views
│ │ ├── HotPage.vue
│ │ ├── MapPage.vue
│ │ ├── RankPage.vue
│ │ ├── StockPage.vue
│ │ ├── TrendPage.vue
│ │ ├── SellerPage.vue
│ │ └── ScreenPage.vue
│ ├── store
│ │ └── index.js
│ ├── main.js
│ ├── router
│ │ └── index.js
│ └── components
│ │ ├── Map.vue
│ │ ├── Rank.vue
│ │ ├── Hot.vue
│ │ ├── Stock.vue
│ │ ├── Seller.vue
│ │ └── Trend.vue
├── .editorconfig
├── README.md
├── .gitignore
├── .eslintrc.js
└── package.json
├── assets
├── effect1.png
└── effect2.png
├── echarts-demo
├── assets
│ ├── bar.png
│ ├── map.png
│ ├── pie.png
│ ├── gauge.png
│ ├── line.png
│ ├── radar.png
│ ├── scatter.png
│ └── introduction.png
├── map.html
├── map1.html
├── line.html
├── pie.html
├── animation.html
├── palette.html
├── radar.html
├── gauge.html
├── scatter.html
├── map2.html
├── index.html
├── palette2.html
├── map3.html
└── theme.html
├── server
├── README.md
├── middleware
│ ├── koa_response_duration.js
│ ├── koa_response_header.js
│ └── koa_response_data.js
├── utils
│ └── file_utils.js
├── package.json
├── app.js
├── data
│ ├── budget.json
│ ├── seller.json
│ ├── stock.json
│ ├── map.json
│ ├── rank.json
│ ├── trend.json
│ └── hotproduct.json
└── service
│ └── websocket_service.js
├── README.md
├── LICENSE
└── .gitignore
/client/.browserslistrc:
--------------------------------------------------------------------------------
1 | > 1%
2 | last 2 versions
3 | not dead
4 |
--------------------------------------------------------------------------------
/client/vue.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | publicPath: './'
3 | }
4 |
--------------------------------------------------------------------------------
/assets/effect1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/assets/effect1.png
--------------------------------------------------------------------------------
/assets/effect2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/assets/effect2.png
--------------------------------------------------------------------------------
/client/.env.development:
--------------------------------------------------------------------------------
1 | VUE_APP_BASEURL=http://localhost:9997/api
2 | VUE_APP_SOCKETURL=ws://localhost:9998
--------------------------------------------------------------------------------
/client/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/client/public/favicon.ico
--------------------------------------------------------------------------------
/echarts-demo/assets/bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/echarts-demo/assets/bar.png
--------------------------------------------------------------------------------
/echarts-demo/assets/map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/echarts-demo/assets/map.png
--------------------------------------------------------------------------------
/echarts-demo/assets/pie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/echarts-demo/assets/pie.png
--------------------------------------------------------------------------------
/echarts-demo/assets/gauge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/echarts-demo/assets/gauge.png
--------------------------------------------------------------------------------
/echarts-demo/assets/line.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/echarts-demo/assets/line.png
--------------------------------------------------------------------------------
/echarts-demo/assets/radar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/echarts-demo/assets/radar.png
--------------------------------------------------------------------------------
/client/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/echarts-demo/assets/scatter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/echarts-demo/assets/scatter.png
--------------------------------------------------------------------------------
/client/.env.production:
--------------------------------------------------------------------------------
1 | VUE_APP_BASEURL=http://huangjiangjun.top:9997/api
2 | VUE_APP_SOCKETURL=ws://huangjiangjun.top:9998
--------------------------------------------------------------------------------
/client/public/static/img/logo1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/client/public/static/img/logo1.png
--------------------------------------------------------------------------------
/client/public/static/img/logo2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/client/public/static/img/logo2.png
--------------------------------------------------------------------------------
/client/src/assets/font/iconfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/client/src/assets/font/iconfont.eot
--------------------------------------------------------------------------------
/client/src/assets/font/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/client/src/assets/font/iconfont.ttf
--------------------------------------------------------------------------------
/client/src/assets/font/iconfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/client/src/assets/font/iconfont.woff
--------------------------------------------------------------------------------
/client/src/assets/font/iconfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/client/src/assets/font/iconfont.woff2
--------------------------------------------------------------------------------
/echarts-demo/assets/introduction.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/echarts-demo/assets/introduction.png
--------------------------------------------------------------------------------
/client/public/static/img/logo_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/client/public/static/img/logo_dark.png
--------------------------------------------------------------------------------
/client/public/static/img/logo_light2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/client/public/static/img/logo_light2.png
--------------------------------------------------------------------------------
/client/public/static/img/qiehuan_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/client/public/static/img/qiehuan_dark.png
--------------------------------------------------------------------------------
/client/public/static/img/qiehuan_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/client/public/static/img/qiehuan_light.png
--------------------------------------------------------------------------------
/client/public/static/img/header_border_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/client/public/static/img/header_border_dark.png
--------------------------------------------------------------------------------
/client/public/static/img/header_border_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Duanzihuang/vision/HEAD/client/public/static/img/header_border_light.png
--------------------------------------------------------------------------------
/client/.editorconfig:
--------------------------------------------------------------------------------
1 | [*.{js,jsx,ts,tsx,vue}]
2 | indent_style = space
3 | indent_size = 2
4 | trim_trailing_whitespace = true
5 | insert_final_newline = true
6 |
--------------------------------------------------------------------------------
/client/src/api/rank.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export const getRankData = () => {
4 | return request({
5 | url: '/rank'
6 | })
7 | }
8 |
--------------------------------------------------------------------------------
/client/src/api/seller.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export const getSellerData = () => {
4 | return request({
5 | url: '/seller'
6 | })
7 | }
8 |
--------------------------------------------------------------------------------
/client/src/api/stock.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export const getStockData = () => {
4 | return request({
5 | url: '/stock'
6 | })
7 | }
8 |
--------------------------------------------------------------------------------
/client/src/api/trend.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | export const getTrendData = () => {
4 | return request({
5 | url: '/trend'
6 | })
7 | }
8 |
--------------------------------------------------------------------------------
/client/src/utils/request.js:
--------------------------------------------------------------------------------
1 | import axios from 'axios'
2 |
3 | const instance = axios.create({
4 | baseURL: process.env.VUE_APP_BASEURL
5 | })
6 |
7 | export default instance
8 |
--------------------------------------------------------------------------------
/client/src/api/hot.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 获取热销商品占比数据
4 | export const getHotData = () => {
5 | return request({
6 | url: '/hotproduct'
7 | })
8 | }
9 |
--------------------------------------------------------------------------------
/client/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
11 |
--------------------------------------------------------------------------------
/server/README.md:
--------------------------------------------------------------------------------
1 | # vision服务端
2 | ## 技术栈
3 |
4 | koa2
5 |
6 | ## API接口
7 |
8 | 1. 商家销售 /api/seller
9 | 2. 预算开销 /api/budget
10 | 3. 库存信息 /api/stock
11 | 4. 销售趋势 /api/trend
12 | 5. 销售排行 /api/rank
13 | 6. 商家分布 /api/map
14 | 7. 热销商品 /api/hotproduct
15 |
16 |
--------------------------------------------------------------------------------
/client/src/views/HotPage.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
15 |
--------------------------------------------------------------------------------
/client/src/views/MapPage.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
15 |
--------------------------------------------------------------------------------
/client/src/views/RankPage.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
15 |
--------------------------------------------------------------------------------
/client/src/views/StockPage.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
15 |
--------------------------------------------------------------------------------
/client/src/views/TrendPage.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
15 |
--------------------------------------------------------------------------------
/client/README.md:
--------------------------------------------------------------------------------
1 | # vision客户端
2 |
3 | ## 技术栈
4 |
5 | - vue
6 | - vue-router
7 | - vuex
8 | - axios
9 | - echarts
10 | - websocket
11 |
12 | ## 功能模块
13 |
14 | - 商家销售统计(横向柱状图)
15 | - 销售趋势图表(折线图)
16 | - 商家分布模块(地图+散点图)
17 | - 销售排行模块(柱状图)
18 | - 热销商品占比模块(饼图)
19 | - 库存与销售模块(圆环饼图)
20 |
21 |
--------------------------------------------------------------------------------
/server/middleware/koa_response_duration.js:
--------------------------------------------------------------------------------
1 | module.exports = async (cxt, next) => {
2 | const start = Date.now()
3 | await next()
4 | const end = Date.now()
5 |
6 | const duration = end - start
7 |
8 | // 通过响应头返回耗时时长
9 | cxt.set('X-Response-Time', `${duration} ms`)
10 | }
11 |
--------------------------------------------------------------------------------
/server/utils/file_utils.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs')
2 | module.exports = async filePath => {
3 | return new Promise((resolve, reject) => {
4 | fs.readFile(filePath, (err, data) => {
5 | if (err) {
6 | reject(err)
7 | } else {
8 | resolve(data)
9 | }
10 | })
11 | })
12 | }
13 |
--------------------------------------------------------------------------------
/client/src/views/SellerPage.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
18 |
--------------------------------------------------------------------------------
/client/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 |
6 | # local env files
7 | .env.local
8 | .env.*.local
9 |
10 | # Log files
11 | npm-debug.log*
12 | yarn-debug.log*
13 | yarn-error.log*
14 | pnpm-debug.log*
15 |
16 | # Editor directories and files
17 | .idea
18 | .vscode
19 | *.suo
20 | *.ntvs*
21 | *.njsproj
22 | *.sln
23 | *.sw?
24 |
--------------------------------------------------------------------------------
/server/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "server",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "app.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1",
8 | "start": "nodemon app.js"
9 | },
10 | "keywords": [],
11 | "author": "",
12 | "license": "ISC",
13 | "dependencies": {
14 | "koa": "^2.13.0",
15 | "ws": "^7.3.1"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/client/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: {
4 | node: true
5 | },
6 | extends: [
7 | 'plugin:vue/essential',
8 | '@vue/standard'
9 | ],
10 | parserOptions: {
11 | parser: 'babel-eslint'
12 | },
13 | rules: {
14 | 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
15 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/server/middleware/koa_response_header.js:
--------------------------------------------------------------------------------
1 | module.exports = async (ctx, next) => {
2 | await next()
3 |
4 | ctx.set('Content-Type', 'application/json;charset=utf-8')
5 | // 允许跨域
6 | ctx.set('Access-Control-Allow-Origin', '*')
7 | ctx.set(
8 | 'Access-Control-Allow-Headers',
9 | 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With'
10 | )
11 | ctx.set('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS')
12 | }
13 |
--------------------------------------------------------------------------------
/server/app.js:
--------------------------------------------------------------------------------
1 | // 引入Koa
2 | const Koa = require('koa')
3 |
4 | // 创建app
5 | const app = new Koa()
6 |
7 | // 应用中间件
8 | // 耗时中间件
9 | app.use(require('./middleware/koa_response_duration'))
10 | // 响应头中间件
11 | app.use(require('./middleware/koa_response_header'))
12 | // 逻辑处理中间件
13 | app.use(require('./middleware/koa_response_data'))
14 |
15 | // 监听端口
16 | app.listen(9997)
17 |
18 | const webSocketService = require('./service/websocket_service')
19 | // 开启服务端的WebSocket监听
20 | webSocketService.listen()
21 |
--------------------------------------------------------------------------------
/client/src/assets/styles/global.less:
--------------------------------------------------------------------------------
1 | html,
2 | body,
3 | #app {
4 | width: 100%;
5 | height: 100%;
6 | padding: 0;
7 | margin: 0;
8 | overflow: hidden;
9 | }
10 |
11 | .com-page {
12 | width: 100%;
13 | height: 100%;
14 | overflow: hidden;
15 | }
16 |
17 | .com-container {
18 | width: 100%;
19 | height: 100%;
20 | overflow: hidden;
21 | }
22 |
23 | .com-chart {
24 | width: 100%;
25 | height: 100%;
26 | overflow: hidden;
27 | }
28 |
29 | canvas {
30 | border-radius: 20px;
31 | }
32 |
--------------------------------------------------------------------------------
/client/src/store/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 |
4 | Vue.use(Vuex)
5 |
6 | export default new Vuex.Store({
7 | state: {
8 | theme: 'chalk'
9 | },
10 | getters: {
11 | getTheme (state) {
12 | return state.theme
13 | }
14 | },
15 | mutations: {
16 | changeTheme (state) {
17 | if (state.theme === 'chalk') {
18 | state.theme = 'vintage'
19 | } else {
20 | state.theme = 'chalk'
21 | }
22 | }
23 | },
24 | actions: {},
25 | modules: {}
26 | })
27 |
--------------------------------------------------------------------------------
/client/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import App from './App.vue'
3 | import router from './router'
4 | import store from './store'
5 | import SocketService from '@/utils/socket_service'
6 |
7 | // import echarts from 'echarts'
8 | Vue.prototype.$echarts = window.echarts
9 | Vue.config.productionTip = false
10 |
11 | // 连接到后台WebSocket服务器
12 | SocketService.Instacne.connect()
13 | // 把SocketService实例挂载到Vue原型上
14 | Vue.prototype.$socket = SocketService.Instacne
15 |
16 | new Vue({
17 | router,
18 | store,
19 | render: h => h(App)
20 | }).$mount('#app')
21 |
--------------------------------------------------------------------------------
/server/middleware/koa_response_data.js:
--------------------------------------------------------------------------------
1 | const path = require('path')
2 | const getFileData = require('../utils/file_utils')
3 |
4 | module.exports = async (ctx, next) => {
5 | let filePath = ctx.request.url.replace('/api', '')
6 | filePath = path.join(__dirname, `../data/${filePath}.json`)
7 | try {
8 | const res = await getFileData(filePath)
9 | ctx.response.body = res
10 | } catch (err) {
11 | const errObj = {
12 | message: '未获取到数据,请检查URL',
13 | status: 404
14 | }
15 |
16 | ctx.response.body = errObj
17 | }
18 |
19 | await next()
20 | }
21 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ---
2 |
3 | ---
4 |
5 | # vision
6 | 使用Vue全家桶+ECharts+Koa2+WebSocket搭建的可视化电商平台实时监控系统
7 |
8 | ## 技术栈
9 |
10 | 1. echarts
11 | 2. vue全家桶
12 | 3. koa2
13 | 4. websocket
14 |
15 | ## 效果图
16 |
17 | 
18 |
19 | 
20 |
21 | ## 线上访问地址
22 |
23 | http://huangjiangjun.top/vision
24 |
25 | ## Echarts Demo
26 |
27 | https://github.com/Duanzihuang/vision/tree/master/echarts-demo
28 |
29 | ## 服务端
30 |
31 | https://github.com/Duanzihuang/vision/tree/master/server
32 |
33 | ## 客户端
34 |
35 | https://github.com/Duanzihuang/vision/tree/master/client
--------------------------------------------------------------------------------
/client/src/api/map.js:
--------------------------------------------------------------------------------
1 | import request from '@/utils/request'
2 |
3 | // 获取全国地图
4 | export const getChinaMapData = () => {
5 | // 开发环境
6 | // return request({ url: 'http://localhost:8080/static/map/china.json' })
7 | // 生产环境
8 | return request({
9 | url: 'http://huangjiangjun.top/vision/static/map/china.json'
10 | })
11 | }
12 |
13 | // 获取闪烁点数据
14 | export const getMapData = () => {
15 | return request({
16 | url: '/map'
17 | })
18 | }
19 |
20 | // 获取省份数据
21 | export const getProvinceMapData = url => {
22 | // 开发环境
23 | // return request({ url: `http://localhost:8080/${url}` })
24 | // 生产环境
25 | return request({
26 | url: `http://huangjiangjun.top/vision/${url}`
27 | })
28 | }
29 |
--------------------------------------------------------------------------------
/server/data/budget.json:
--------------------------------------------------------------------------------
1 | [{
2 | "dimName": "sales",
3 | "dimZhName": "销售",
4 | "max": 80000,
5 | "budget": 75000,
6 | "expense": 68340
7 | }, {
8 | "dimName": "Administration",
9 | "dimZhName": "管理",
10 | "max": 40000,
11 | "budget": 32100,
12 | "expense": 34500
13 | }, {
14 | "dimName": "Development",
15 | "dimZhName": "研发",
16 | "max": 1200000,
17 | "budget": 1000000,
18 | "expense": 874820
19 | }, {
20 | "dimName": "Support",
21 | "dimZhName": "客服",
22 | "max": 21000,
23 | "budget": 17640,
24 | "expense": 12500
25 | }, {
26 | "dimName": "Marketing",
27 | "dimZhName": "市场",
28 | "max": 25000,
29 | "budget": 19000,
30 | "expense": 21000
31 | }]
--------------------------------------------------------------------------------
/client/src/utils/theme_utils.js:
--------------------------------------------------------------------------------
1 | const theme = {
2 | chalk: {
3 | // 背景颜色
4 | backgroundColor: '#161522',
5 | // 标题的文字颜色
6 | titleColor: '#ffffff',
7 | // 左上角logo的图标路径
8 | logoSrc: 'logo_dark.png',
9 | // 切换主题按钮的图片路径
10 | themeSrc: 'qiehuan_dark.png',
11 | // 页面顶部的边框图片
12 | headerBorderSrc: 'header_border_dark.png'
13 | },
14 | vintage: {
15 | // 背景颜色
16 | backgroundColor: '#eeeeee',
17 | // 标题的文字颜色
18 | titleColor: '#000000',
19 | // 左上角logo的图标路径
20 | logoSrc: 'logo_light2.png',
21 | // 切换主题按钮的图片路径
22 | themeSrc: 'qiehuan_light.png',
23 | // 页面顶部的边框图片
24 | headerBorderSrc: 'header_border_light.png'
25 | }
26 | }
27 |
28 | export function getTheme (themeName) {
29 | return theme[themeName]
30 | }
31 |
--------------------------------------------------------------------------------
/server/data/seller.json:
--------------------------------------------------------------------------------
1 | [{
2 | "name": "商家1",
3 | "value": 99
4 | }, {
5 | "name": "商家2",
6 | "value": 102
7 | }, {
8 | "name": "商家3",
9 | "value": 83
10 | }, {
11 | "name": "商家4",
12 | "value": 49
13 | }, {
14 | "name": "商家5",
15 | "value": 200
16 | }, {
17 | "name": "商家6",
18 | "value": 152
19 | }, {
20 | "name": "商家7",
21 | "value": 76
22 | }, {
23 | "name": "商家8",
24 | "value": 23
25 | }, {
26 | "name": "商家9",
27 | "value": 87
28 | }, {
29 | "name": "商家10",
30 | "value": 223
31 | }, {
32 | "name": "商家11",
33 | "value": 145
34 | }, {
35 | "name": "商家12",
36 | "value": 187
37 | },{
38 | "name": "商家13",
39 | "value": 127
40 | },{
41 | "name": "商家14",
42 | "value": 57
43 | },{
44 | "name": "商家15",
45 | "value": 99
46 | }]
--------------------------------------------------------------------------------
/server/data/stock.json:
--------------------------------------------------------------------------------
1 | [{
2 | "name": "IPhone 11",
3 | "stock": 2310,
4 | "sales": 2103
5 | }, {
6 | "name": "长筒靴系带",
7 | "stock": 34312,
8 | "sales": 23509
9 | }, {
10 | "name": "打底毛衣宽松",
11 | "stock": 22140,
12 | "sales": 12830
13 | }, {
14 | "name": "厚款羽绒服",
15 | "stock": 10842,
16 | "sales": 5492
17 | }, {
18 | "name": "牛仔裤",
19 | "stock": 68102,
20 | "sales": 44043
21 | }, {
22 | "name": "加厚卫衣",
23 | "stock": 12032,
24 | "sales": 8603
25 | }, {
26 | "name": "衬衫",
27 | "stock": 9890,
28 | "sales": 8960
29 | }, {
30 | "name": "HUAWEI P30",
31 | "stock": 20130,
32 | "sales": 12302
33 | }, {
34 | "name": "手机壳",
35 | "stock": 89342,
36 | "sales": 42948
37 | }, {
38 | "name": "打底裤",
39 | "stock": 5034,
40 | "sales": 1220
41 | }]
--------------------------------------------------------------------------------
/client/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | 电商平台实时监控系统
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/client/src/utils/map_utils.js:
--------------------------------------------------------------------------------
1 | const name2pinyin = {
2 | 安徽: 'anhui',
3 | 陕西: 'shanxi1',
4 | 澳门: 'aomen',
5 | 北京: 'beijing',
6 | 重庆: 'chongqing',
7 | 福建: 'fujian',
8 | 甘肃: 'gansu',
9 | 广东: 'guangdong',
10 | 广西: 'guangxi',
11 | 贵州: 'guizhou',
12 | 海南: 'hainan',
13 | 河北: 'hebei',
14 | 黑龙江: 'heilongjiang',
15 | 河南: 'henan',
16 | 湖北: 'hubei',
17 | 湖南: 'hunan',
18 | 江苏: 'jiangsu',
19 | 江西: 'jiangxi',
20 | 吉林: 'jilin',
21 | 辽宁: 'liaoning',
22 | 内蒙古: 'neimenggu',
23 | 宁夏: 'ningxia',
24 | 青海: 'qinghai',
25 | 山东: 'shandong',
26 | 上海: 'shanghai',
27 | 山西: 'shanxi',
28 | 四川: 'sichuan',
29 | 台湾: 'taiwan',
30 | 天津: 'tianjin',
31 | 香港: 'xianggang',
32 | 新疆: 'xinjiang',
33 | 西藏: 'xizang',
34 | 云南: 'yunnan',
35 | 浙江: 'zhejiang'
36 | }
37 |
38 | export function getProvinceMapInfo (arg) {
39 | const path = `/static/map/province/${name2pinyin[arg]}.json`
40 | return {
41 | key: name2pinyin[arg],
42 | path: path
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/server/data/map.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "黄金用户",
4 | "children": [
5 | {
6 | "name": "武汉",
7 | "value": [114.31, 30.52]
8 | }, {
9 | "name": "丹东",
10 | "value": [124.37, 40.13]
11 | }, {
12 | "name": "张家口",
13 | "value": [114.87, 40.82]
14 | }, {
15 | "name": "深圳",
16 | "value": [114.07, 22.62]
17 | }
18 | ]
19 | },
20 | {
21 | "name": "白金用户",
22 | "children": [
23 | {
24 | "name": "金华",
25 | "value": [119.64, 29.12]
26 | }, {
27 | "name": "西安",
28 | "value": [108.95, 34.27]
29 | }
30 | ]
31 | },
32 | {
33 | "name": "砖石用户",
34 | "children": [
35 | {
36 | "name": "成都",
37 | "value": [104.06, 30.67]
38 | }
39 | ]
40 | }
41 | ]
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 段子黄
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, 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,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/client/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "client",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve --open",
7 | "build": "vue-cli-service build",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "dependencies": {
11 | "axios": "^0.19.2",
12 | "core-js": "^3.6.5",
13 | "echarts": "^4.8.0",
14 | "vue": "^2.6.11",
15 | "vue-router": "^3.2.0",
16 | "vuex": "^3.5.1"
17 | },
18 | "devDependencies": {
19 | "@vue/cli-plugin-babel": "~4.5.0",
20 | "@vue/cli-plugin-eslint": "~4.5.0",
21 | "@vue/cli-plugin-router": "~4.5.0",
22 | "@vue/cli-plugin-vuex": "~4.5.0",
23 | "@vue/cli-service": "~4.5.0",
24 | "@vue/eslint-config-standard": "^5.1.2",
25 | "babel-eslint": "^10.1.0",
26 | "eslint": "^6.7.2",
27 | "eslint-plugin-import": "^2.20.2",
28 | "eslint-plugin-node": "^11.1.0",
29 | "eslint-plugin-promise": "^4.2.1",
30 | "eslint-plugin-standard": "^4.0.0",
31 | "eslint-plugin-vue": "^6.2.2",
32 | "less": "^3.0.4",
33 | "less-loader": "^5.0.0",
34 | "vue-template-compiler": "^2.6.11"
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/server/data/rank.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "广东",
4 | "value": 230
5 | },
6 | {
7 | "name": "福建",
8 | "value": 214
9 | },
10 | {
11 | "name": "浙江",
12 | "value": 203
13 | },
14 | {
15 | "name": "上海",
16 | "value": 310
17 | },
18 | {
19 | "name": "北京",
20 | "value": 289
21 | },
22 | {
23 | "name": "江苏",
24 | "value": 207
25 | },
26 | {
27 | "name": "四川",
28 | "value": 189
29 | },
30 | {
31 | "name": "重庆",
32 | "value": 195
33 | },
34 | {
35 | "name": "陕西",
36 | "value": 160
37 | },
38 | {
39 | "name": "湖南",
40 | "value": 140
41 | },
42 | {
43 | "name": "河北",
44 | "value": 170
45 | },
46 | {
47 | "name": "辽宁",
48 | "value": 106
49 | },
50 | {
51 | "name": "湖北",
52 | "value": 120
53 | },
54 | {
55 | "name": "江西",
56 | "value": 99
57 | },
58 | {
59 | "name": "天津",
60 | "value": 107
61 | },
62 | {
63 | "name": "吉林",
64 | "value": 143
65 | },
66 | {
67 | "name": "青海",
68 | "value": 65
69 | },
70 | {
71 | "name": "山东",
72 | "value": 166
73 | },
74 | {
75 | "name": "山西",
76 | "value": 134
77 | },
78 | {
79 | "name": "云南",
80 | "value": 87
81 | },
82 | {
83 | "name": "安徽",
84 | "value": 79
85 | }
86 | ]
--------------------------------------------------------------------------------
/echarts-demo/map.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 地图
7 |
8 |
9 |
10 |
11 |
12 |
13 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/server/service/websocket_service.js:
--------------------------------------------------------------------------------
1 | const path = require('path')
2 | const WebSocket = require('ws')
3 | const fileUtil = require('../utils/file_utils')
4 | // 创建WebSocket服务端的对象,绑定的端口号是9998
5 | const wss = new WebSocket.Server({
6 | port: 9998
7 | })
8 |
9 | module.exports.listen = () => {
10 | // 对客户端连接事件进行监听
11 | // client:代表的是客户端的连接socket对象
12 | wss.on('connection', client => {
13 | // 对客户端的连接对象进行message事件的监听
14 | // msg: 由客户端发给服务端的数据
15 | client.on('message', async msg => {
16 | try {
17 | const msgObj = JSON.parse(msg)
18 | const action = msgObj.action
19 | if (action === 'getData') {
20 | let filePath = '../data/' + msgObj.chartName + '.json'
21 | filePath = path.join(__dirname, filePath)
22 |
23 | const data = await fileUtil(filePath)
24 |
25 | msgObj.data = data.toString()
26 |
27 | // 由服务端往客户端发送数据
28 | client.send(JSON.stringify(msgObj))
29 | } else {
30 | // 全屏 & 主题切换
31 | // 由服务端往每个客户端发送数据
32 | wss.clients.forEach(client => {
33 | client.send(msg)
34 | })
35 | }
36 | } catch (error) {
37 | console.log(error)
38 | }
39 | })
40 | })
41 | }
42 |
--------------------------------------------------------------------------------
/echarts-demo/map1.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 地图
7 |
8 |
9 |
10 |
11 |
12 |
13 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/client/src/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VueRouter from 'vue-router'
3 |
4 | Vue.use(VueRouter)
5 | const routes = [
6 | {
7 | path: '/',
8 | redirect: '/screen'
9 | },
10 | {
11 | path: '/seller',
12 | name: 'SellerPage',
13 | // route level code-splitting
14 | // this generates a separate chunk (about.[hash].js) for this route
15 | // which is lazy-loaded when the route is visited.
16 | component: () =>
17 | import(/* webpackChunkName: "about" */ '../views/SellerPage.vue')
18 | },
19 | {
20 | path: '/trend',
21 | name: 'TrendPage',
22 | component: () =>
23 | import(/* webpackChunkName: "about" */ '../views/TrendPage.vue')
24 | },
25 | {
26 | path: '/map',
27 | name: 'MapPage',
28 | component: () =>
29 | import(/* webpackChunkName: "about" */ '../views/MapPage.vue')
30 | },
31 | {
32 | path: '/rank',
33 | name: 'RankPage',
34 | component: () =>
35 | import(/* webpackChunkName: "about" */ '../views/RankPage.vue')
36 | },
37 | {
38 | path: '/hot',
39 | name: 'HotPage',
40 | component: () =>
41 | import(/* webpackChunkName: "about" */ '../views/HotPage.vue')
42 | },
43 | {
44 | path: '/stock',
45 | name: 'StockPage',
46 | component: () =>
47 | import(/* webpackChunkName: "about" */ '../views/StockPage.vue')
48 | },
49 | {
50 | path: '/screen',
51 | name: 'ScreenPage',
52 | component: () =>
53 | import(/* webpackChunkName: "about" */ '../views/ScreenPage.vue')
54 | }
55 | ]
56 |
57 | const router = new VueRouter({
58 | routes
59 | })
60 |
61 | export default router
62 |
--------------------------------------------------------------------------------
/echarts-demo/line.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 折线图
7 |
8 |
9 |
10 |
11 |
12 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/client/public/static/map/province/aomen.json:
--------------------------------------------------------------------------------
1 | {"type":"FeatureCollection","features":[{"id":"820001","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@LADC^umZ@DONWE@DALBBF@H@DFBBTC"],["@@P@LC@AGM@OECMBABBTCD@DDH"]],"encodeOffsets":[[[116285,22746]],[[116303,22746]]]},"properties":{"cp":[113.552965,22.207882],"name":"花地玛堂区","childNum":2}},{"id":"820002","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@MK@CA@AAGDEB@NVFJG"],"encodeOffsets":[[116281,22734]]},"properties":{"cp":[113.549052,22.199175],"name":"花王堂区","childNum":1}},{"id":"820003","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@EGOB@DNLHE@C"],"encodeOffsets":[[116285,22729]]},"properties":{"cp":[113.550252,22.193791],"name":"望德堂区","childNum":1}},{"id":"820004","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@YMVAN@BFCBBDAFHDBBFDHIJJEFDPCHHlYJQ"],"encodeOffsets":[[116313,22707]]},"properties":{"cp":[113.55374,22.188119],"name":"大堂区","childNum":1}},{"id":"820005","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@JICGAECACGEBAAEDBFNXB@"],"encodeOffsets":[[116266,22728]]},"properties":{"cp":[113.54167,22.187778],"name":"风顺堂区","childNum":1}},{"id":"820006","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@ ZNWRquZCBCC@AEA@@ADCDCAACEAGBQ@INEL"],"encodeOffsets":[[116265,22694]]},"properties":{"cp":[113.558783,22.154124],"name":"嘉模堂区","childNum":1}},{"id":"820007","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@MOIAIEI@@GE@AAUCBdCFIFR@HAFBBDDBDCBC@@FB@BDDDA\\M"],"encodeOffsets":[[116316,22676]]},"properties":{"cp":[113.56925,22.136546],"name":"路凼填海区","childNum":1}},{"id":"820008","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@DKMMa_GC_COD@dVDBBF@@HJ@JFJBNPZK"],"encodeOffsets":[[116329,22670]]},"properties":{"cp":[113.559954,22.124049],"name":"圣方济各堂区","childNum":1}}],"UTF8Encoding":true}
--------------------------------------------------------------------------------
/echarts-demo/pie.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 饼图
7 |
8 |
9 |
10 |
11 |
12 |
68 |
69 |
70 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 |
9 | # Diagnostic reports (https://nodejs.org/api/report.html)
10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11 |
12 | # Runtime data
13 | pids
14 | *.pid
15 | *.seed
16 | *.pid.lock
17 |
18 | # Directory for instrumented libs generated by jscoverage/JSCover
19 | lib-cov
20 |
21 | # Coverage directory used by tools like istanbul
22 | coverage
23 | *.lcov
24 |
25 | # nyc test coverage
26 | .nyc_output
27 |
28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
29 | .grunt
30 |
31 | # Bower dependency directory (https://bower.io/)
32 | bower_components
33 |
34 | # node-waf configuration
35 | .lock-wscript
36 |
37 | # Compiled binary addons (https://nodejs.org/api/addons.html)
38 | build/Release
39 |
40 | # Dependency directories
41 | node_modules/
42 | jspm_packages/
43 |
44 | # TypeScript v1 declaration files
45 | typings/
46 |
47 | # TypeScript cache
48 | *.tsbuildinfo
49 |
50 | # Optional npm cache directory
51 | .npm
52 |
53 | # Optional eslint cache
54 | .eslintcache
55 |
56 | # Microbundle cache
57 | .rpt2_cache/
58 | .rts2_cache_cjs/
59 | .rts2_cache_es/
60 | .rts2_cache_umd/
61 |
62 | # Optional REPL history
63 | .node_repl_history
64 |
65 | # Output of 'npm pack'
66 | *.tgz
67 |
68 | # Yarn Integrity file
69 | .yarn-integrity
70 |
71 | # dotenv environment variables file
72 | .env
73 | .env.test
74 |
75 | # parcel-bundler cache (https://parceljs.org/)
76 | .cache
77 |
78 | # Next.js build output
79 | .next
80 |
81 | # Nuxt.js build / generate output
82 | .nuxt
83 | dist
84 |
85 | # Gatsby files
86 | .cache/
87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js
88 | # https://nextjs.org/blog/next-9-1#public-directory-support
89 | # public
90 |
91 | # vuepress build output
92 | .vuepress/dist
93 |
94 | # Serverless directories
95 | .serverless/
96 |
97 | # FuseBox cache
98 | .fusebox/
99 |
100 | # DynamoDB Local files
101 | .dynamodb/
102 |
103 | # TernJS port file
104 | .tern-port
105 |
--------------------------------------------------------------------------------
/echarts-demo/animation.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 增量动画
7 |
8 |
9 |
10 |
11 |
12 |
15 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/echarts-demo/palette.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 饼图
7 |
8 |
9 |
10 |
11 |
12 |
13 |
71 |
72 |
73 |
--------------------------------------------------------------------------------
/client/src/utils/socket_service.js:
--------------------------------------------------------------------------------
1 | export default class SocketService {
2 | static instance = null
3 | static get Instacne () {
4 | if (!this.instance) {
5 | this.instance = new SocketService()
6 | }
7 |
8 | return this.instance
9 | }
10 |
11 | ws = null
12 | connected = false
13 | // 发送失败之后尝试的次数
14 | sendTryCount = 0
15 | // 连接失败之后尝试的次数
16 | connectTryCount = 0
17 | // 回调函数
18 | callBackMapping = {}
19 |
20 | registerCallBack = (type, callBackFunc) => {
21 | this.callBackMapping[type] = callBackFunc
22 | }
23 |
24 | unRegisterCallBack = type => {
25 | delete this.callBackMapping[type]
26 | }
27 |
28 | connect () {
29 | if (!window.WebSocket) {
30 | alert('您的浏览器不支持WebSocket')
31 | return
32 | }
33 |
34 | // this.ws = new WebSocket('ws://127.0.0.1:9998')
35 | this.ws = new WebSocket(process.env.VUE_APP_SOCKETURL)
36 |
37 | this.ws.onopen = () => {
38 | this.connected = true
39 | this.connectTryCount = 0
40 | }
41 |
42 | this.ws.onclose = () => {
43 | console.log('连接失败,请重试...')
44 | this.connectTryCount++
45 | this.connected = false
46 |
47 | // 失败之后尝试连接
48 | setTimeout(() => {
49 | this.connect()
50 | }, this.connectTryCount * 500)
51 | }
52 |
53 | this.ws.onmessage = msg => {
54 | const msgObj = JSON.parse(msg.data)
55 | if (msgObj.action === 'getData') {
56 | if (msgObj.socketType) {
57 | this.callBackMapping[msgObj.socketType].call(
58 | this,
59 | JSON.parse(msgObj.data)
60 | )
61 | }
62 | } else if (msgObj.action === 'fullScreen') {
63 | this.callBackMapping[msgObj.socketType].call(this, msgObj)
64 | } else if (msgObj.action === 'changeTheme') {
65 | this.callBackMapping[msgObj.socketType].call(this, msgObj)
66 | }
67 | }
68 | }
69 |
70 | // 发送数据给服务器
71 | send = data => {
72 | if (this.connected) {
73 | this.ws.send(JSON.stringify(data))
74 | } else {
75 | this.sendTryCount++
76 |
77 | // 尝试再次发送数据
78 | setTimeout(() => {
79 | this.send(data)
80 | }, this.sendTryCount * 500)
81 | }
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/client/src/assets/font/iconfont.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "1525688",
3 | "name": "icon",
4 | "font_family": "iconfont",
5 | "css_prefix_text": "icon-",
6 | "description": "",
7 | "glyphs": [
8 | {
9 | "icon_id": "6151288",
10 | "name": "compress-alt",
11 | "font_class": "compress-alt",
12 | "unicode": "e825",
13 | "unicode_decimal": 59429
14 | },
15 | {
16 | "icon_id": "6151289",
17 | "name": "expand-alt",
18 | "font_class": "expand-alt",
19 | "unicode": "e826",
20 | "unicode_decimal": 59430
21 | },
22 | {
23 | "icon_id": "6151312",
24 | "name": "sort-line",
25 | "font_class": "sort-line",
26 | "unicode": "e836",
27 | "unicode_decimal": 59446
28 | },
29 | {
30 | "icon_id": "6151314",
31 | "name": "switch",
32 | "font_class": "switch",
33 | "unicode": "e837",
34 | "unicode_decimal": 59447
35 | },
36 | {
37 | "icon_id": "11474197",
38 | "name": "arrow-down",
39 | "font_class": "arrow-down",
40 | "unicode": "e6eb",
41 | "unicode_decimal": 59115
42 | },
43 | {
44 | "icon_id": "11474198",
45 | "name": "arrow-right",
46 | "font_class": "arrow-right",
47 | "unicode": "e6ed",
48 | "unicode_decimal": 59117
49 | },
50 | {
51 | "icon_id": "11474210",
52 | "name": "arrow-up",
53 | "font_class": "arrow-up",
54 | "unicode": "e6ee",
55 | "unicode_decimal": 59118
56 | },
57 | {
58 | "icon_id": "11474211",
59 | "name": "arrow-lift",
60 | "font_class": "arrow-lift",
61 | "unicode": "e6ef",
62 | "unicode_decimal": 59119
63 | },
64 | {
65 | "icon_id": "11474294",
66 | "name": "move",
67 | "font_class": "move",
68 | "unicode": "e6fc",
69 | "unicode_decimal": 59132
70 | },
71 | {
72 | "icon_id": "11474361",
73 | "name": "sorting",
74 | "font_class": "sorting",
75 | "unicode": "e708",
76 | "unicode_decimal": 59144
77 | },
78 | {
79 | "icon_id": "11481231",
80 | "name": "exchange rate",
81 | "font_class": "exchangerate",
82 | "unicode": "e715",
83 | "unicode_decimal": 59157
84 | }
85 | ]
86 | }
87 |
--------------------------------------------------------------------------------
/echarts-demo/radar.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 雷达图
7 |
8 |
9 |
10 |
11 |
12 |
81 |
82 |
83 |
--------------------------------------------------------------------------------
/echarts-demo/gauge.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 调色盘
7 |
8 |
9 |
10 |
11 |
12 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/echarts-demo/scatter.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 散点图
7 |
8 |
9 |
10 |
11 |
12 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/echarts-demo/map2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 地图
7 |
8 |
9 |
10 |
11 |
12 |
13 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/server/data/trend.json:
--------------------------------------------------------------------------------
1 | {
2 | "map": {
3 | "title": "地区销量趋势",
4 | "base": 310,
5 | "unit": "万",
6 | "data": [{
7 | "name": "上海",
8 | "data": ["155.13","154.65","171.46","164.38","237.23","300.65","240.29","232.07","193.31","136.70","48.64","90.20"]
9 | }, {
10 | "name": "北京",
11 | "data": ["86.25","33.80","145.58","21.79","176.09","132.41","291.05","191.89","151.54","94.25","141.75","157.14"]
12 | }, {
13 | "name": "深圳",
14 | "data": ["143.94","186.29","183.64","251.48","195.48","152.16","52.47","184.12","203.79","39.16","56.37","161.64"]
15 | }, {
16 | "name": "广州",
17 | "data": ["57.60","77.61","307.24","165.05","175.41","276.88","269.04","296.11","105.31","283.39","134.08","265.38"]
18 | }, {
19 | "name": "重庆",
20 | "data": ["200.82","215.56","249.80","222.67","216.98","60.12","309.68","273.35","150.99","251.97","26.15","186.99"]
21 | }]
22 | },
23 | "seller": {
24 | "title": "商家销量趋势",
25 | "base": 120,
26 | "unit": "万",
27 | "data": [{
28 | "name": "商家1",
29 | "data": ["33.00","86.07","28.77","34.29","102.45","0.30","50.50","21.70","25.41","25.71","66.90","63.29"]
30 | }, {
31 | "name": "商家2",
32 | "data": ["12.83","102.42","37.37","95.55","45.45","112.72","113.53","106.41","75.67","113.91", "37.32", "28.04"]
33 | }, {
34 | "name": "商家3",
35 | "data": ["73.54","40.92","89.81","113.41","76.34","107.15","55.61","0.33","106.29","78.30","98.05","38.67"]
36 | }, {
37 | "name": "商家4",
38 | "data": ["47.19","73.57","44.60","84.03","62.82","15.65","64.72","88.98","29.25","5.41","79.11","118.46"]
39 | }, {
40 | "name": "商家5",
41 | "data": ["74.84","116.45","107.69","11.03","17.31","42.22","97.60","108.64","43.87","110.65","5.96","38.41"]
42 | }]
43 | },
44 | "commodity": {
45 | "title": "商品销量趋势",
46 | "base": 50,
47 | "unit": "万",
48 | "data": [{
49 | "name": "女装",
50 | "data": ["47.71","13.34","19.30","7.93","41.93","23.01","22.63","26.91","0.62","39.23","48.74","29.48"]
51 | }, {
52 | "name": "手机数码",
53 | "data": ["46.66","46.52","23.65","1.73","44.26","47.07","17.86","40.20","3.78","31.46","28.01","8.63"]
54 | }, {
55 | "name": "男装",
56 | "data": ["26.98","30.71","42.59","29.50","26.86","17.65","30.15","15.85","9.28","30.20","32.35","34.46"]
57 | }, {
58 | "name": "大家电",
59 | "data": ["20.26","46.23","43.84","46.75","28.29","32.36","45.30","16.73","40.40","45.07","29.86","41.92"]
60 | }, {
61 | "name": "美妆护肤",
62 | "data": ["7.58","23.66","39.78","30.20","25.72","36.20","47.55","35.39","27.85","37.56","16.91", "3.91"]
63 | }]
64 | },
65 | "common": {
66 | "month": ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
67 | },
68 | "type": [{
69 | "key": "map",
70 | "text": "地区销量趋势"
71 | }, {
72 | "key": "seller",
73 | "text": "商家销量趋势"
74 | }, {
75 | "key": "commodity",
76 | "text": "商品销量趋势"
77 | }]
78 | }
--------------------------------------------------------------------------------
/echarts-demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Echarts入门demo
7 |
8 |
9 |
10 |
11 |
12 |
128 |
129 |
--------------------------------------------------------------------------------
/echarts-demo/palette2.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Echarts入门demo
7 |
8 |
9 |
10 |
11 |
12 |
128 |
129 |
--------------------------------------------------------------------------------
/client/src/assets/font/iconfont.css:
--------------------------------------------------------------------------------
1 | @font-face {font-family: "iconfont";
2 | src: url('iconfont.eot?t=1574821180289'); /* IE9 */
3 | src: url('iconfont.eot?t=1574821180289#iefix') format('embedded-opentype'), /* IE6-IE8 */
4 | url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAYgAAsAAAAADDAAAAXQAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCELAqJSIgCATYCJAMwCxoABCAFhG0HgSsbhwrIHgVuTPbukUVWc5xbENE79Wcl2VFObtCJW1aB2CUOKgVyHRlCzrNVYOcBEH85LtAjzCfC9PoF/p9jqRdpZUf57duZHdH9q8hVYjTQ3nhAo3H1RerW4KONZsOJ+nSIc7kp0Kmx3qU7BFD0ZgQyf+HyOkwM6DwBpCUZj2BmAhgNCwUTwV9xq4FciA9TO0t7F7gg+H45xDgxQcOnQz1VxRY0Es4dyk/Ws/9nWa9nyW4vBozuAh0YARggV1YmLkaPGiPQUYvpBjGghDvRIXcodyz3T6fZWZEflJ/8//8F7hHJwPyklXCIlSsIR+Ve/83zU4BJIQoLQUPHAPFDjgC4l9qtK2s0CB/kjiD8kDuKKIDcMYQJuX8ISTpNIBR0ViAsyA9ECOQHITTIT0LokJ9selaNx3R2V2A0SAvIB33uepfGXJlmoNGrgBimsMDPLNRaZK3QGVq3ujZX0wxD395QX1cf0NfXOQ1OF22379xR0kTUZ/kVsYaUoQqkwa3b7rhTlZSIW1+HS4uJOzPc+KyMM9ttnBWvk3dwZ2yf1ejOdjLUzqxzZldLtL5uVq0Sq2bLzCoLVT3DidfPqEFJ1axmI3jppUHT7OWVzux6X6R+hmMoX8c1d9yWCoaUpRxhKGgTrx4crKYHA1lo+nA1s4eECF0R6l9zTQ+5vrd1HZ9+Wqc+/3yrdsv4P6u3tw6GbUDKJiPaip7slpC9SEKqIGpwMNGHVCAteVODseC8YINisiAdgfZWtQaEJlhwTDkEW/CQpw6REaHglT3lFrK91PXS0eeLLxrO+WzFngOfOx11SASt0BZiltqw+KvBIntXnjjOiRNVW7+vz5GjVVVHjpzcUVvFhH5NlXvHlK4ZvtuCHzd1INnTEg3OsBs2dwShec/GVRu5fur19zkNidOykO2z97p7N67cuPsSDnfwS78PvFdZQVPeo2p/Ph8TdJD/8tD5d+dUVL5LNlFsIZ/HDp7R9729u7K7nrNPDxzaFTXzjXZ6+Iyy+0Z8W3ZG+HTtm13ZZnfpe6/vunn7OR5/4VSfMXBB9LaXvjh44LtHHpnctTCX+zb4PFPCWfXg4PGM3UJY02WzhEsu0jZzkj2HP+XVvnNLvJLb910jTun90olI2f6UsWGmb29RaeEb8+4epV/+xjuX+4oWsG9CSW34w6fDuxi9cPWZ1ofik1KRsYKO5tfkBLyPHyrIGJsqYTP650h1CRG0CrBF7hY+F866jcdK18+S1RUiugg6UGX/JL8xfFOPVJfnTu648sqznEq2y4ZjNb5BXUe9Oe/qEQMj3fe/eOPpsnD3GCtxEE1NCU9NKLNIdM1vXKiN0U1NQ3ofXwXyKLD/OMD/9Bf1MPw/4GO99EPQA1oXAO1e7Yos9+REUjsA6Xbt5fBO/c/0O1Sv73xhU/GMX03LAOBr/b8ZKPzPYPtjJhqojX8do3KbsTRTMGDMN8ecgQABvqXX9+YIUCjgj5Mp4/t9uCrU80EwqUhAo4BeoGMygGlwR4APiwngx2Q2KIaz6G6LctLoiFEIDOM0B4QSHgCNIl4AnRLeYxrc78BHJUfAT4nooHCkvEmLQZJU89JuxHMb7S077WQ01RaTsKfChTVufGtLJJ02B3LHTWeSZXvsqDH5iUVum5vexhWZbfFxnhezY+lUq73Q6c1taUnZ7elUkxv1RiU8r33a6NGxqicaFU21ophHGpcIHi6N2GxhJzZJoqRoI+bt76EKX1+DS5yttBAh3bDqQtPBJU2G5OFtxjKKMQrmIkebatVjWZ5hG3HG4fVqMWxio/kpWrFZ2Iu5tHAjhU179UlNuETxGEXCotbONEb3dotpHaP272p9xA8ACholIJroYohP/FIgphSKEksC0oXARby2Pe1mMiMjLZ5yd7RH2hrj5gszqbQ3siXZ5voz25NeNKEi6XRq+8hGE2yzMCedjCc8cxja2t50TEsy5hmtqW1uQeeTkm3xgLsjmoi0xW+yHwAAAAA=') format('woff2'),
5 | url('iconfont.woff?t=1574821180289') format('woff'),
6 | url('iconfont.ttf?t=1574821180289') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
7 | url('iconfont.svg?t=1574821180289#iconfont') format('svg'); /* iOS 4.1- */
8 | }
9 |
10 | .iconfont {
11 | font-family: "iconfont" !important;
12 | font-size: 16px;
13 | font-style: normal;
14 | -webkit-font-smoothing: antialiased;
15 | -moz-osx-font-smoothing: grayscale;
16 | transform: rotate(90deg)
17 | }
18 |
19 | .icon-compress-alt:before {
20 | content: "\e825";
21 | }
22 |
23 | .icon-expand-alt:before {
24 | content: "\e826";
25 | }
26 |
27 | .icon-sort-line:before {
28 | content: "\e836";
29 | }
30 |
31 | .icon-switch:before {
32 | content: "\e837";
33 | }
34 |
35 | .icon-arrow-down:before {
36 | content: "\e6eb";
37 | }
38 |
39 | .icon-arrow-right:before {
40 | content: "\e6ed";
41 | }
42 |
43 | .icon-arrow-up:before {
44 | content: "\e6ee";
45 | }
46 |
47 | .icon-arrow-lift:before {
48 | content: "\e6ef";
49 | }
50 |
51 | .icon-move:before {
52 | content: "\e6fc";
53 | }
54 |
55 | .icon-sorting:before {
56 | content: "\e708";
57 | }
58 |
59 | .icon-exchangerate:before {
60 | content: "\e715";
61 | }
62 |
63 |
--------------------------------------------------------------------------------
/echarts-demo/map3.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 地图
7 |
8 |
9 |
10 |
11 |
12 |
13 |
107 |
108 |
109 |
--------------------------------------------------------------------------------
/echarts-demo/theme.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Echarts入门demo
7 |
8 |
9 |
10 |
11 |
12 |
13 |
135 |
136 |
--------------------------------------------------------------------------------
/client/src/components/Map.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
160 |
--------------------------------------------------------------------------------
/client/public/static/map/china-contour.json:
--------------------------------------------------------------------------------
1 | {"type":"FeatureCollection","features":[{"id":"100000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@¦ŜiÀºƦƞòïè§ŞCêɕrŧůÇąĻõ·ĉ³œ̅ó@ċȧŧĥĽʉƅſȓÒ˦ŝE}ºƑ[ÍĜȋ AɞÏĤ¨êƺ\\Ɔ¸ĠĎvʄȀоjNðĒĞȠzÐŘΰH¨ȔBĠ "],["@@ƛĴÕƊÉɼģºðʀI̠ÔĚäθؾNJŨxĚĮǂƺòƌĪŐĮXŦţƸZûÐƕƑʳÛDžƝɉlÝƯֹÅŃ^Ó·śŃNjƏďíåɛGɉ¿@ăƑ¥ĘWǬÏĶŁâ"],["@@Óɖ± dƊ½ǒÂň×äı§ĤƩ¶hlçxĬŸĄŞkâÌwøàIJaĞfƠ¥Ŕd®UɎÖ¢aƆúŪtŠųƠjdƺƺÅìnŢ¯äɝĦ]èpĄ¦´LƞĬ´ƤǬ˼Ēɸ¤rºǼìĴPðŀbþ¹ļD¢¹\\ĜÑ̔ùўÊȮǪűÀêZǚŐ¤qȂ\\`ºłĤ\\ºs|zºÿŐãѦvĪĺĺĈłÈ͚FÞºĠUƢ¾ªì°`öøu®Ì¼ãÐUÞ˶¬æɒlʐߨvWʚÖÕÁÜÅŵ_«EÍɪëÏ÷ÅyXo͂ĝĂÛÎf`Þ
¹ÂÿÐGĮÕĞXŪōŸMźÈƺQèĽôe|¿ƸJR¤ĘETėº¯ɀáMĺŝOéÈ¿ÖğǤǷŔ²å]Ĥĝœ¦EP}ûƥé¿İƷTėƫœŕƅƱB»Đ±řü]µȺrĦáŖuÒª«IJπdƺÏɌ]͚ĐǂZɔ¹ÚZצʥĪï|ÇĦMŔ»İĝLjì¥Βba¯¥Ǖǚk˦ӷxūД̵nơԆ|DŽࡰţાíϲäʮW¬®ҌeרūȠkɬɻ̼ãɜRצɩςåȈHϚÎKdzͲOðÏȆƘ¼CϚǚ࢚˼ФÔ¤ƌĞ̪Qʤ´ԜÃƲÀɠmǐnȺĸƠ´ǠNˠŜ¶ƌĆĘźʆȬμƒĞGȖƴƀj`ĢçĶȅŚēĢĖćYÀŎüôQÐÂŎŞdžŞêƖoˆDƞŧǘÛۨĝȘIJªǬ¾äʀƪ¼ÐĔǎ¨Ȕ»͠^ˮÊ˰ȎŜHĦðDÄ|ø˂˜ƮЬҌqjĔ²Äw°dždĞéĸdîàŎjɒĚŌŜWÈ|Ŗ¶îÎFCĊZĀēƄNĤ¶łKĊOjĚj´ĜYp{¦SĚÍ\\TתV÷Šų¬K°ȧļ¨ǵÂcḷ̌ĚǣȄɧ\\ĵŇȣFέ̿ʏƶɷØ̫»ƽū¹Ʊő̝Ȩ§ȞʘĖiɜɶʦ}¨֪ࠜ̀ƇǬ¹ǨE˦ĥªÔDzl¶øZh¤Ɛ E ĈDJì¸̚¸ƎGú´P¬WÄìHsIJ¾wLVnƽCw`h`¥V¦U¤¸}¾Ô[~âxh¢ªHÆÂriĐɘǜhÀoRzNyÀDs~bcfÌ`L¾n|¾T°c¨È¢aÈÄ[|òDȎŸÖdHƮÀì~Æâ¦^¢ķ¶eÐÚEêɡČÅyġLûŇV®ÄÐź~ϰƂŤǒȦÒŬÂezÂvǴZ{ĘFĒĴAΜĐȄEÔ¤ØQĄĄ»ΈZǺ¨ìSŊÄƸwn¼c]ܬì¯DŽ]ȘŏńzƺŷɄeeOĨSfm Ɋ̎ēz©þÐÙÊmgÇsJ¥ƔŊśÎÔsÁtÃßGoÀ xňË_½ä@êíuáĠ[ġ¥gɊ×ûÏWXáǠDZÌsNͽƎÁ§čŐAēeL³àydl¦ĘVçŁpśdžĽĺſÊQíÜçÛġÔsĕ¬Dz¡SíċġHµ ¡EŃļrĉŘóƢFƺ«øxÊkƈdƬÌr|©ÛńRŀøďŊŀàŀU²ŕƀBQ£Ď}L¹Îk@©ĈuǰųǨÚ§ƈnTËÇéƟÊcfčŤ^gēĊĕƯǏx³ǔķÐċJāwİ_ĸȀ^ôWr°oú¬Ɏ~ȰCĐ´Ƕ£fNÎèâ_ÐŮeʆNJǘuȔ\\¤ÒĨA¢Ê͠æÔ ŬGƠƦYêŊàƆXvkmͥœ@čŅĻA¶çÎqC½Ĉ»NăëKďÍQɅřęgßÔÇOÝáWáħ£˯ā¡ÑķĎÛ寰WKɱ_d_}}vyõu¬ïÏҽ@gÏ¿rý±
Cdµ°MFYxw¿CG£ǧ«»ó¡Ɵ¿BÇƻğëܭNJĭôµ}čÓpg±ǫŋRwŕnéÑƕfSŋ®ÍD Ûǖ֍]gr¡µŷzįm³~S«þeo³l{iē¥yZ÷īĹõġMRÇģZmÃ|¡ģTɟijÂÂ`ÀçmFK¥ÚíÁbX³ÌQÒHof{]ept·GŋĜTNJŋB
h¬ƩDo±enq©G`wGçǑKFuNĝwőXtW·Ýďæßa}xVXRãQ`©GM»ďÏd©ÑW_ÏǷr¡
é\\ɹ~ɍuØ©Bš¤ÝĤ½¢Å_Á¿LŅñuT\\rÅIs®y}ywdSDZtCmûvaʋJrƯ⦳PrbbÍzwBGĭTÁk»lYċ²zÇ£^§»d¯íŻ£ćGŵDžƍÓ]íM^o£Ã]ªUóo½~Å|ŋÝ¥ċh¹·CÉDřlgȵë[}ģS}xƃği©ĝɝǡF꼵áƣ©HĕoƫŇqr³Ãg[šÃSő_±ÅFC¥Pq{ñg¿įX
ƝıĉNjûěʼn³F¦oĵhÕP{¯~TÍl¸ÓßYÏàs{ÃVUeĎwk±ʼnVÓ½ŽJūĉ»Jm°fĎdF~ĀeĖO² ĈżĀiÂd^~ăÔH¦\\§|ĄVez¤NP ǹÓRÆƇP[¦´Âghwm}ÐШźhI|VV|p[¦À¶èNä¶ÒCÀ¢^hPfvƾĪ×òúNZÞÒKxpw|ÊEZÂI¨®œİFÜçmĩWĪñtÞʼnËÝ^³uL±|Əlĉ¥čn§ßÅcB× CNǟ_ñŧı¯Y]ăÙĽѷť³ÃARZRlʑýSëÍDěïÿȧ¢ÙġěŗŷęUªhJƁƅn³gF³HàŋÅÃƉÀKť`ċŮÁõYėé÷`Ù_ÏǵR§òoEÅąLœŐœƜVµąłíļĐ·ũ̈«ªdÎÉnb²ĦhņBĖįĦåXćì@L¯´ywƕCéõė ƿäćú y±¨Mf~C¿`à_ÿƌfQnð³ƬŲŎ¥ĠʦĘĒØ¼Â±ŴPè¸ŔLƔÜƺ_TüÃĤBBċÈöA´faM¨{«MúīôÖ°ʊkŲÆM|²@¤u¤Û´ä«̰\\}ēÅM¼Ã]NągoõľHyGă{{çrnÓEƕZGª¹Fj¢ïW
uøC̍ƃhÛÅ\\bÅxì²ƝýNīCȽĿǃŖÕy\\¹kxãČ×G¿Ï¤ÁçFQ¡KtŵΥëÚź«ėn½ĉŀÁ¼zK¶GY§Ë@´śÇµƕñxZ¯u
Ïï{éƵP_K«pÍÁwƏčaEU£uŻāɌŁFŴu»¹İ×ȖħŴw̌ŵ²ǹǠ͛hĭłƕrçü±hǥ®jű¢KOķÅ}`åÂK_Юƫ²ʯÊ^H{ǸÃĆēĤȍzȥݵċF͓ŸI©Õ͈ǫȌȥ¦ŋEÓıŪěřÀåżȟLƏŽąđGǛģLjƧĎOłčȶʋÀBŖÕªÁŐTőŕåqûõi¨hÜ·ñt»¹ýv_[«²K{L¯SªGõ¸gÑpY´«ęƘʑcoċ\\gěŧ«Āý¶ŧ·ÅKsËÉc¢Ù\\ĭƛëbf¹ģSĜkáƉÔĈZ~ïµfzʼnfåÂȝǷÕĕÊĉ{ğč±uƁí]Í»ęX\\Ip¡éĥZEãoP
þy¸k³¡ƽ¿å³BRضWlâþäą`]aģc ĹGµ¶HåÕ¾xĨôȉðX«½đCIŇOK³ÁÄţ¬OAwã»aLʼnËĥW[ÂGIÂNrį~IÐêĘÎG§Ė¥ÝF{ WK}ùaHāÖ{OouHEÅÇqĬuë±KEò£UplÀ÷tMāe£bYÂý¡a±Öcp©®^ö±q
ÇGjųªKy¬ŏ®¤ÉEĀåA¬V{XģĐpě
¼³Ăp·¤īyÚ¡ŅLĻŧqlÀh¬µ»åÇGnùčÙmÆßėuĕeûÒiÁŧSW¥Qûŗ½ùěYÓ±]ÓđīkWó«íěCŇͱčvĭõĉę÷N¹³ĉoTĵËçŁYÙǝŕ¹tȏģ·Ĕĭ|đėÊK½Rē ó]ĀęAxNk©|ām¡diď×YïYWªʼnOeÚtĐ«zđ¹T
āúEáÎÁąÏHcòßÎſ¿Çdğ·ùT×Çūʄ¡XgWÀLJƟĻOj YÇ÷Sğ³kzőȝğ§õ¡VÙæÅöM̳¹pÁaËýý©D©ÜJŹƕģGą¤{Ùū
ÇO²«BƱéAÒƇ׫BhlmtÃPµyÓɉUīí}GBȅŹãĻFŷŽǩoo¿ē±ß}wƋtƺCőØEîǻīƓʑãÍƍDĈ±ÌÜÓĨ£LóɢVȞĆĖMĸĤfÜǗjđĆ»ýͥãğ¶ĞØO¤Ǜn³ő}¦
·zYwašőűMę§ZĨíÛ]éÛUćİȹ¯
dy¹TcÂĕ½A´µê÷wĻþÙ`K¦
¢ÍeĥR¡ã
Ĉu¼dltU¶¶ď\\z}ưŬ{ÚfK¶Ð_ÂÒ¿C©ÖTmu¼ãlŇÕVåĤĵfÝYYįkÒīØſNQĠ³r³øÓrÖͳgÍſGįÅ_±he¡ÅM²Ɠï¥ßīZgmkǭƁć¦UĔť×ëǟ
e˭ʔħǛāĘPªij¶Ņăw§nď£S»şÍļɉŀ}ÛÞ»å£_ıęÏZ÷`
[ùx½}ÑRHYėĺďsÍné½Ya¤Ïm¬ĝgĂsAØÅwďõ¤q}«Dx¿}Uũlê@HÅF¨ÇoJ´Ónȯ×âpÒÅØ Têa²ËXcÌlLìģËŁkŻƑŷÉăP¹æƧÝ¡¦}veèÆ´UvÅ~§½Ġ²Ŵwæč\\D}O÷£[ăá[įŷvRsdĒƄwŎĒo~t¾ÍŶÒtD¦Úiôöz«Ųƭ¸Û±¯ÿm·zR¦Ɵ`ªŊÃh¢rOÔ´£Ym¼èêf¯ŪĽnAĦw\\ưĆ ¦gʉË£¢ιǫßKÙIįóVesbaĕ ǠƺpªqÂďE®tôřkȌwêżĔÂenËÂQƞ´¼ŲƝÎô¶RäQ^Øu¬°_Èôc´¹ò¨P΢hlϦ´Ħ¬oêÇŲÚr^¯°^º{ªBH²Ö¤ɦ§Țvqĸ viļndĜĆfŒxÝgyÞqóSᝳX_ĞçêtrmÚ§z¦c¦¥jnŞi¯´ÓH@ÂċĂį·Ì_þ·¹_wzË£Z¹|ÅWM|O¥ÃWTÕùÔQ¥¥Rã»GeeƃīQ}J[ÒK
¬Ə|oėjġĠÑN¡ð¯EBčnkòəėª²œm˽ŏġǝʅįĭạ̃ūȹ]ΓͧŹəăЕ·ƭęgſ¶ҍć`ĘąŌJÞä¤rÅň¥ÖƝ^ęuůÞiĊÄÀ\\Æs¦ÓRäřÌkÄŷ¶½÷ùCMÝÛĥ°G¬ĩ`£Øąğ¯ß§aëbéüÑOčk£ÍI ïCċÀÕÕĻSŧʼnïŽŗãWÑăû··Qòı}¯ãIéÕÂZ¨īès¶ZÈsæĔƦÚ@îá¾ó@ÙwU±ÉT廣TđWxĉWùׯcĩvėŧ³BM|¹kªħ¥TzNYnÝßpęrñĠĉRÑÈěVVµõ«¯ůĉ¥áºaeõ|uĐh`ܳç@ƋĿa©|z²Ý¼Ĵč²ŸIûI āóK¥}rÝ_Á´éMaňæêSĈ½½KÙóĿeƃÆB·¬ƃV×ĴƳlŒµ`bÔ¨ÐÓ@s¬ƿûws¡åQÑßÁ`ŋĴ{ĪTÚÅTSÄį¤Ç[ǾµMW¢ĭiÕØ¿@Â
pÕ]jéò¿OƇĆƇpêĉâlØwěsǩĵ¸c
bU¹ř¨^±ze
ė·¥Ó@~¯éīB\\āƚǗÀƷŘóQīÈáPǥ@ŗĸIæÅhnszÁCËìñÏ·ąĚÝUm®óZ±đ[Âÿiñ¬Òj°ŁŤ_uµ^°ìÇÊĶĒ¡ÆMğźİĨƥôRāð©[wâ䥩Ô\\°ÝĄ̄ƢăknéǀůĆKĒĬ¶èâz¨u¦¥L~ƄýÎIƖßµĔƱĐċņbÎÕĄæ_ƞZRÖíJ²öLĸÒcºƖÎ\\ñºÛqYѨ`x¥ù^}ÌđYªƅAйn~ź¯f¤áÀzgÇDIÔ´Aňńňĕuĩt[{ù°ŁÏ|Soċxţ[õÔĥkŋÞŭZ˺óYËüċrw ÞkrťË¿XGǣ@Dü·Ē÷Aê[ÄäI®BÕĐÞ_¢āĠpÛÄȉĖġDKÕKÄNôfƫVó¼dzHQµâFùœ³¦{Y¢ĚÜO {Ö¦ÞͨJÜÄƨlU˧ªÍE˨¡ĐĬĬùÎRƠHÕŔ_ƪàÒKäȇĬə²ȕnáûl÷eǛòĞ\\ªÑòÜìc\\üqÕ[ēdžċªbØø|¶ȴZdÆÂońéGŠǚnìÈƲŪȖưòTxÊǪMīĞÖŲÃɎO̚ǰRěò¿ġ~åŊú¬ô¸qĘ[Ĕ¶ÂćnÒPĒÜvúĀÊbÖ{Äî¸~Ŕünp¤ŀ¤ĄYÒ©ÊfºmÔȈ¡DŽ~¤s²ʘÚžȂVƼîèW²æIJXŔþɔÖĚêϜêĮŢɨJ¯ÎrDDĤ`Q¾§~wâJÂñÈOú¤p¨ŪŊMǎÀW|ų ¿¾ɄĦƖAiƒ÷fØĶK¢ȝ˔"]],"encodeOffsets":[[[112750,20508]],[[123335,22980]],[[82455,44869]]]},"properties":{"cp":[116.3683244,39.915085],"name":"中华人民共和国","childNum":3}}],"UTF8Encoding":true}
--------------------------------------------------------------------------------
/client/src/components/Rank.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
195 |
--------------------------------------------------------------------------------
/client/src/components/Hot.vue:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 |
190 |
191 |
215 |
--------------------------------------------------------------------------------
/client/src/components/Stock.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
207 |
--------------------------------------------------------------------------------
/client/src/components/Seller.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
221 |
--------------------------------------------------------------------------------
/client/src/components/Trend.vue:
--------------------------------------------------------------------------------
1 |
2 |
24 |
25 |
26 |
223 |
224 |
240 |
--------------------------------------------------------------------------------
/server/data/hotproduct.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "女装",
4 | "children": [
5 | {
6 | "name": "裙装",
7 | "value": 56202,
8 | "children": [
9 | {
10 | "name": "套装裙",
11 | "value": 10281
12 | },
13 | {
14 | "name": "A字裙",
15 | "value": 22331
16 | },
17 | {
18 | "name": "复古连衣裙",
19 | "value": 23590
20 | }
21 | ]
22 | },
23 | {
24 | "name": "女士上衣",
25 | "value": 42013,
26 | "children": [
27 | {
28 | "name": "格子衬衫",
29 | "value": 7896
30 | },
31 | {
32 | "name": "雪纺衫",
33 | "value": 10422
34 | },
35 | {
36 | "name": "polo衫",
37 | "value": 23695
38 | }
39 | ]
40 | },
41 | {
42 | "name": "外套",
43 | "value": 210282,
44 | "children": [
45 | {
46 | "name": "牛仔外套",
47 | "value": 87330
48 | },
49 | {
50 | "name": "针织外套",
51 | "value": 65770
52 | },
53 | {
54 | "name": "风衣外套",
55 | "value": 57182
56 | }
57 | ]
58 | },
59 | {
60 | "name": "裤装",
61 | "value": 168203,
62 | "children": [
63 | {
64 | "name": "工装裤",
65 | "value": 68203
66 | },
67 | {
68 | "name": "阔腿裤",
69 | "value": 50000
70 | },
71 | {
72 | "name": "牛仔裤",
73 | "value": 50000
74 | }
75 | ]
76 | },
77 | {
78 | "name": "特色类目",
79 | "value": 40292,
80 | "children": [
81 | {
82 | "name": "大码女装",
83 | "value": 292
84 | },
85 | {
86 | "name": "旗袍",
87 | "value": 10000
88 | },
89 | {
90 | "name": "礼服",
91 | "value": 10000
92 | }
93 | ]
94 | },
95 | {
96 | "name": "童装",
97 | "value": 20313,
98 | "children": [
99 | {
100 | "name": "童衣",
101 | "value": 5000
102 | },
103 | {
104 | "name": "童裤子",
105 | "value": 15313
106 | }
107 | ]
108 | }
109 | ]
110 | },
111 | {
112 | "name": "手机数码",
113 | "children": [
114 | {
115 | "name": "手机",
116 | "value": 201023,
117 | "children": [
118 | {
119 | "name": "拍照手机",
120 | "value": 1023
121 | },
122 | {
123 | "name": "游戏手机",
124 | "value": 40000
125 | },
126 | {
127 | "name": "全面屏手机",
128 | "value": 160000
129 | }
130 | ]
131 | },
132 | {
133 | "name": "手机配件",
134 | "value": 103735,
135 | "children": [
136 | {
137 | "name": "手机壳",
138 | "value": 3735
139 | },
140 | {
141 | "name": "手机贴膜",
142 | "value": 70000
143 | },
144 | {
145 | "name": "创意配件",
146 | "value": 30000
147 | }
148 | ]
149 | },
150 | {
151 | "name": "摄影摄像",
152 | "value": 83834,
153 | "children": [
154 | {
155 | "name": "单反相机",
156 | "value": 3834
157 | },
158 | {
159 | "name": "微单",
160 | "value": 50000
161 | },
162 | {
163 | "name": "镜头",
164 | "value": 30000
165 | }
166 | ]
167 | },
168 | {
169 | "name": "影音娱乐",
170 | "value": 68384,
171 | "children": [
172 | {
173 | "name": "耳机/耳麦",
174 | "value": 30000
175 | },
176 | {
177 | "name": "音箱/音响",
178 | "value": 8384
179 | },
180 | {
181 | "name": "麦克风",
182 | "value": 30000
183 | }
184 | ]
185 | },
186 | {
187 | "name": "数码配件",
188 | "value": 45038,
189 | "children": [
190 | {
191 | "name": "存储卡",
192 | "value": 10000
193 | },
194 | {
195 | "name": "三脚架/云台",
196 | "value": 5038
197 | },
198 | {
199 | "name": "机身附件",
200 | "value": 30000
201 | }
202 | ]
203 | },
204 | {
205 | "name": "智能设备",
206 | "value": 90382,
207 | "children": [
208 | {
209 | "name": "智能手环",
210 | "value": 382
211 | },
212 | {
213 | "name": "智能家居",
214 | "value": 60000
215 | },
216 | {
217 | "name": "无人机",
218 | "value": 30000
219 | }
220 | ]
221 | },
222 | {
223 | "name": "其他",
224 | "value": 10201,
225 | "children": [
226 | {
227 | "name": "运营商",
228 | "value": 10000
229 | },
230 | {
231 | "name": "电子教育",
232 | "value": 201
233 | }
234 | ]
235 | }
236 | ]
237 | },
238 | {
239 | "name": "美妆护肤",
240 | "children": [
241 | {
242 | "name": "面部护肤",
243 | "value": 430291,
244 | "children": [
245 | {
246 | "name": "乳液/面霜",
247 | "value": 30291
248 | },
249 | {
250 | "name": "洁面",
251 | "value": 100000
252 | },
253 | {
254 | "name": "面膜",
255 | "value": 300000
256 | }
257 | ]
258 | },
259 | {
260 | "name": "彩妆",
261 | "value": 80284,
262 | "children": [
263 | {
264 | "name": "口红",
265 | "value": 60284
266 | },
267 | {
268 | "name": "粉底液",
269 | "value": 10000
270 | },
271 | {
272 | "name": "眉笔/眉粉",
273 | "value": 10000
274 | }
275 | ]
276 | },
277 | {
278 | "name": "男士护肤",
279 | "value": 40294,
280 | "children": [
281 | {
282 | "name": "洁面",
283 | "value": 10294
284 | },
285 | {
286 | "name": "剃须",
287 | "value": 5000
288 | },
289 | {
290 | "name": "护肤套装",
291 | "value": 25000
292 | }
293 | ]
294 | },
295 | {
296 | "name": "美妆工具",
297 | "value": 50939,
298 | "children": [
299 | {
300 | "name": "化妆棉",
301 | "value": 10939
302 | },
303 | {
304 | "name": "化妆刷",
305 | "value": 10000
306 | },
307 | {
308 | "name": "双眼皮贴",
309 | "value": 30000
310 | }
311 | ]
312 | },
313 | {
314 | "name": "其他",
315 | "value": 10921,
316 | "children": [
317 | {
318 | "name": "香水",
319 | "value": 921
320 | },
321 | {
322 | "name": "当季主推",
323 | "value": 10000
324 | }
325 | ]
326 | }
327 | ]
328 | }
329 | ]
330 |
--------------------------------------------------------------------------------
/client/public/static/map/province/taiwan.json:
--------------------------------------------------------------------------------
1 | {"type":"FeatureCollection","features":[{"type":"Feature","id":"710000","properties":{"name":"台湾省","cp":[121.509062,25.044332],"childNum":82},"geometry":{"type":"MultiPolygon","coordinates":[["@@@BBB@@B@@@@@@B@@@@B@@A@@@@@@BB@@B@@AB@@@@@BA@@@@@@BA@@@@BA@@@@@A@@B@@@@@@@@A@@@@@@B@@@@@@@@@@@@@@@@@@@@@@A@@@@@@@@@@@@@A@@@@@@AA@@@@@@@@@@@@@@@@A@@@@@@@@@@A@@@@@@A@@@@@@@@@A@@A@@@BA@@@AA@@@@A@AB@@A@@@A@@@@B@@A@@BA@@B@@A@@@@@@@@B@@@@@@@@@@@B@@@@@BDB"],["@@@@@@@@@@@A@@@@@@@@@@@@@B"],["@@@@@@@@@@@@B@A@@@@@@@@@@@@@"],["@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B@@@@@A@@@@@@@@@B@@@AA@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@@@@@@@B@@@@@@B@@@@@@@"],["@@B@DA@@@@B@@@@@@@@AA@@@A@@@@@A@@@@@@AA@@@A@@@A@@@A@@@@B@@@@@BB@@@@@@@@@BB@@@@B@"],["@@@@B@@@@@@@@@@@@@@@A@@@@@@@@@@@"],["@@@@@@@@@A@@@@@@@@@@@B@@"],["@@DHBDB@DC@KACEA@@ADAF"],["@@BDDBBBDAFE@C@@CAI@@@CF"],["@@@@@B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@@@@@@@@@@@@@@@@@@@@@@@@@B@A@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@@@@@@@@@A@@@@@@@@@@@@@@@@@@@B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"],["@@@@@@@@@@@@@@@@@@@@@@@@@@"],["@@@B@@@@@@@@@@@@B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@@@@@@@@@@@@@@@@@@@@@@@@@A@@@@@@@@@@@@@"],["@@@@@@@@@@B@@@@B@@@A@@@@@B@@@@@@@AB@@@@@@@@@@@@@A@@@@@@@@@@@@@@@@@A@@@@@@@"],["@@@FFD@@BABABCCE@CA@ABCF@@"],["@@B@@@@@@@@@@@@@@@@@@@@@AA@@@@@BA@@@@@@@@@@@@@@@B@@@@@@@@@@@@@@@@@"],["@@BBFDD@@@B@@BB@@@@@B@@@B@B@@@@@D@@@B@B@@AB@@@B@B@BA@@@@@B@@B@@@@@@A@@@@B@@@B@@@@@@@@@@@@@@@@@B@@@BABADABABA@A@@B@AA@@@AA@@@AA@@A@@@A@@@@@A@@@A@@@@@A@A@@@@@A@@@A@@@A@@@A@@@A@@@A@@@@@@@AB@@@@@@A@A@@@@A@@@@A@@A@@@@@@@@@@@@@@@@A@@@@@@@@@@@@@A@@AB@@@A@@A@@@BA@@@A@@@A@AAAAC@CAAAC@@BA@@@A@@@@@A@@@@@@B@@AB@B@B@BBFDDDBDB"],["@@@@@B@@@@@@@@@@@@@@@@@@@@@@@@B@@@@@@AA@@@@@"],["@@@@@@B@@@@@@@@@@@@@@@@@@@A@@@@@@@@@@@"],["@@@@B@@@@@@@@@A@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"],["@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"],["@@@@@@@@@@@@@@@@@@@@A@@@@@@@@@@@B@"],["@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"],["@@@@@@@@@@@@@@@@@A@@@@A@@@@B@@B@"],["@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"],["@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"],["@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"],["@@@@@@@@@@@@B@@@@@A@@@@@@@@@@@@@@@"],["@@@@@@@@@@@@@A@@@@@@@B@@@@"],["@@@B@@B@@@@@@@@A@@@@@@@@A@@@@@@@@@"],["@@B@@AB@@A@@@@@@@@B@@@@@@@B@@@A@@A@@@@@@@@@@@@@@@@@@@@@A@@@@@@A@@@@@@@@@@@@@@@@@B@@A@@@@@@@@A@@@A@@@@AA@@@@@@@@@@@@B@@@@@@@@A@@@@@@@@@@B@@@B@@@@@@@BA@@@@BA@@B@BA@@@@@@@@@@@A@@@@@B@@@@@@@@BB@@@@@B@@@@@@B@@@@@@@BB@@@@@@@@@B@@@@A@@@@@@@@A@@@@@@@@@@@@@B@@A@@A@@@@AB@@@@@@@@@@@@@@@@@@@@@@A"],["@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"],["@@@@@@@@@@@A@@@@@B@@@@@@@@@@@@"],["@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"],["@@@@B@@@@@BA@@@@B@@AB@@@B@@A@@@@@@@@@A@@@@@@@@B@@@@@@@@@@A@@@@@@@@@@@@A@@A@@@@A@C@ABA@A@AB@@@@@@@@@@@@@@@@@@A@@@@@A@@@A@@@@@@@@@@@@@@@@B@@@@@@@@@@@@@@@B@@@@@@@@@@@@@@@@@@@BB@@@B@B@@@DB"],["@@@@@@@@@@@@@@@@@@@@@@@@@@@@"],["@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"],["@@@@@@@@@@@@@@@@@@@@@A@@@@@@@@@@@B"],["@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"],["@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"],["@@@@@@B@@@@@@@@@@@A@@@@@@@"],["@@@@@@@@@@@@@@@@@@@@@@@@@@"],["@@@@@@@@@@@A@@@@@@@@@@@B@@"],["@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"],["@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"],["@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A@@@@@@@B@@@@@"],["@@BB@@D@BA@@ACAA@@CB@D"],["@@@BD@BA@A@@AAABA@@B"],["@@BNHFNHN@@@BGFI@@AAEAECECIEEAGBAH"],["@@@@@BB@BAB@@AAAA@AB@B"],["@@BVFLTZLLHJLPHJJNNPHJFFFB@@BC@AKOW[WaEM@GGIGGGGCGCEAGEEAA@@EF@@"],["@@LTHHFHHHDDDBJADB@@@@@@KMIIIIOQEA@@@@AD"],["@@BD@@F@BCB@ACC@A@ABAB"],["@@@BBBF@@@@@@CAACAAB@B"],["@@@BDBDABC@@CA@@C@AB@B"],["@@nn]Nµoz[¹ňiÚĎUÒGtANCDV±v]ROXEZDhD`J\\N\\NX^°f¼FfHVLRTZVzHDH¦H ALK^[|I`AdFdFpF¸A\\FP^f\\\\XlZhVbLRnXbRhRXHTXHTTBRPdZZ^XVv`ºtzPxV|l~t¸¾|rv\\`b|f`~lVV\\TrVdRhTX\\`fLPJJ^TJFNXHTJFpHZJXLZZlZhZlPZ^`jd\\jLZHjFRFJJFHDPD^BZLfZPJNFhDL@LDjd|bv^xJèRV^PfnVZrdVpV|VhHvDr@bIjShuP]LWHE^KZA\\IJO@aDU|qRKJA`BbAlKbK^WNCt@F\\@LILEBGCMBaBgDSTLMNATBbARGNEHERKHMAMc_oeycgya_sIoC{@oFul¿|D]G§ImUcGWEkOYUMk
w¿ckW[QoCa[giaK[DiL[XiH[CQeg
ƅƙcCiDaAeEIQeYU¹GsEWMYIKKMUWW[M]OkBQCMSq@KHgRsFO@QAIEGGIKKMKMGYKOASICEQyMYycasce[YMSgOgYew{scÇyUaOKMU}AeAUSOSU[{ċmË_µEE«EC{@]@MFMHMDgCE[ISKKOYKSWKIIEYBcFcDaFoKOIGMCWDMH]^j_FQBQMIKWAWFQFSNmW\\_¦@ZJVJVAA¤OMI^M\\_xecvWd_^WPmT^"],["@@LFBBHLBB@DBDB@F@@A@AAA@ABAD@D@DAFEBE@CACCAE@A@@C@CA@EBE@A@CAAECIAC@@AB@B@DCJA@ABC@@B@D@BBD"],["@@BBB@B@BABA@A@@@@B@@@@B@@@@@@B@@AAA@@@@A@@@@@@A@@@AAA@@@@@A@A@@@@B@@A@@@A@@B@@@AAAAA@@@A@@B@@@@@B@@@BB@@D@B@@@B@B@@@@@@ABA@@BA@@B@B"],["@@BBBBF@B@@@BBB@B@BAB@B@BA@@@ACACAAAA@@@E@A@A@@@CB@B@B@@"],["@@@JDHB@BBFHBLDFHBF@HGLIFALAJDDABC@CGKEAKAOACAAAAC@EDKBI@M@IEKAAC@C@A@@CDIBACGAE@A@EBCDEBEACECG@QDEBCBA@A@CAAEE@I@ECICG@IBAB@DBFRHDBDJDBD@FCFCF@FDBDBDF@BDBJ@FCDGFIBABBHDDF@BC@AB@D@BD@HBHDFBBBBABCBEFAD@DDF@D@D"],["@@DDBB@@B@DAD@D@@AB@@C@GACEEE@C@AAA@ADE@@BBB@@GD@D@B@BB@B@BAD@BBBB"],["@@`JPDLFHAFEFAF@BBD@JAHGDIFC@ACCBGFEAGAGA@GBEACC@EBEFAH@DCAECAC@AA@C@EACCCECCB@DCBC@CAEAA@ADDLBDFDBHADKHKPEL@FCBE@GEEICCEAMDIHAFBNFH"],["@@IGEGOGEGECEBECGMAE@AFA@EAECCACBGACACE@MFIBGASCGCGBCF@F@FBFAFEDGBGCCBEFAD@DAD@BC@A@AB@DCBABCAEBAHBLHLDFH@DIBC@IHIBGBC@CD@DFHDHCDABGDAD@BDDFF@JAFAFBBBAF@DBDBDBDADEDK@YEOBIFAH@FBDBBFADAB@BDADABICG@C@AD@BBBDB@B@FADDDDBFBBDCHEH@DBBN@LBFDDHDBDBDADIBGDKDEF@DB@HBDFDFFBHEH@LDFDBVBF@FFLBFCJMFAHBFHDHJBF@FGBGDEF@D@DHF@FCJMLSBW@MHELCFGCKSEOAMDOJMDUAIE"],["@@@F@@BBF@BA@A@AB@B@DA@@DB@BBB@BBBF@FDDBFBDABBBBBBB@JEBA@A@ACAC@EAMICAE@E@EAA@C@CCC@C@CBADBF"],["@@CBAB@DBBBB@BBBBAB@B@@@BBB@BA@C@E@AEAE@"],["@@DBDAB@B@BBAD@BDDD@BAB@@BB@@@D@B@BBDBDADABC@EBA@A@A@@AACBA@C@A@CBCAEACCAC@A@AAAABAB@BC@A@A@AF@D@D"],["@@ADADAB@DDDF@DEBEBAD@@@DDBDD@DABC@C@CAIBEBEBABA@ACC@AD@BBBDBBDABCAIAAE@CAA@@A@C@C@C@CFE@A@@G@EBCBCAE@E@G@AAC@CD@D@FFHFB@FAFAL@LBDDB@DAB@B"],["@@B@@BB@@B@B@B@B@BB@B@DAFCBA@@@@@AB@BBB@BABABA@AA@AAA@@A@@@CAAA@EAC@A@AAA@A@AAA@A@@DCDBDBDBD"],["@@@BB@@B@@@@@B@A@@BA@@BA@@@A@@B@@@@A@@A@A@@@@@@B@@A@@@@A@@@@AB@@@@@@@B@@@@"],["@@@B@BBB@@B@@@BA@A@@@A@A@@B@@A@A@@A@@@A@@@A@A@@@@B@B@B"],["@@`FPBLAFC@AEGAG@K@GCCA@EBC@GCAG@GACA@C@MDIBABADBDDFDFEFCDGHAF@DDDJB"],["@@DBD@B@B@B@BA@@@CAAA@A@@A@@@@@AA@@@@AA@AA@@@@@A@AA@@@ABCA@@@AAAA@AB@B@B@BDBB@BB@D@BBB@B"],["@@CF@B@BBBB@DADBBAB@BEACB@AA@@E@CBA@"],["@@HBHBF@DABA@AAAAA@@@A@AB@@A@AA@A@A@AAA@C@@BA@A@CBAD@@A@@B@B@B@B"],["@@LDH@HABA@CAC@A@AAACAAAAC@C@CAAAC@@AA@BED@DA@CF@BBB@D@BAB@B@D@B@B"],["@@NHBJBJ@FBDJJHBTHHAPKBEAGGIMIMKGEIIICG@GHCFBH"],["@@NIHAzBVDPBL@DADIAGAE@KFKDEBCCAGAC@CE@IBIDGPIXKVGBE@GAIGOMOGAK@]LIXMJODS@MFY\\UNELDXDF@FCHOLCD@JBFJDJ@"],["@@AB@BBBD@JDD@D@@ABA@C@E@CAAAACAC@C@ABAD@DABAB"],["@@RCL@JDFBDADBB@BAF@FAJDL@DA@EBIDE@EACACAEBGCCEACCCE@CDGHG@CAEEAO@EBCDAHGFOFG@GBAD@DBHBHCDAJEDEHAJAHDB"],["@@HED@D@B@BFDHFBD@HAHEBC@EBADAB@BA@CACCCC@A@ADA@E@EAC@G@IDCHCDCBAB@B@B@@B@"],["@@@DBDB@BBDA@ABC@AACAAA@A@CB@D"],["@@HFH@F@BABC@E@EACECCAEBEDCFAFDD"],["@@LFN@JCHI@I@IEGGAMBKBCLCJDL"]],"encodeOffsets":[[[126651,26546]],[[126660,26547]],[[126659,26546]],[[126661,26545]],[[127552,26543]],[[126662,26541]],[[126660,26540]],[[126515,26405]],[[126526,26402]],[[126513,26397]],[[126513,26396]],[[126509,26395]],[[126510,26395]],[[126548,26376]],[[126537,26371]],[[126433,26363]],[[126456,26365]],[[126461,26357]],[[126459,26356]],[[126459,26356]],[[126460,26356]],[[126459,26356]],[[126445,26356]],[[126458,26356]],[[126458,26356]],[[126458,26356]],[[126457,26356]],[[126457,26356]],[[126429,26350]],[[126512,26346]],[[126512,26347]],[[126512,26347]],[[126515,26343]],[[126520,26341]],[[126514,26339]],[[126514,26339]],[[126515,26339]],[[126513,26338]],[[126513,26338]],[[126526,26337]],[[126527,26337]],[[126526,26337]],[[126527,26336]],[[126526,26336]],[[126527,26336]],[[122469,24374]],[[122474,24363]],[[122424,24251]],[[122554,24186]],[[122886,24033]],[[122929,24079]],[[122214,23857]],[[123719,22284]],[[123719,22276]],[[123335,22980]],[[122472,24310]],[[122427,24288]],[[122531,24227]],[[122375,24193]],[[122479,24184]],[[122427,24235]],[[122518,24117]],[[122382,24050]],[[122390,24070]],[[122392,23926]],[[122366,23948]],[[122185,23966]],[[122188,23883]],[[122204,23878]],[[122288,23774]],[[122388,23820]],[[122378,23824]],[[122484,23808]],[[122542,23818]],[[123244,22864]],[[124427,22618]],[[124526,22475]],[[124384,23221]],[[124866,25441]],[[125038,26094]],[[125007,26245]],[[124862,26043]]]}}],"UTF8Encoding":true}
--------------------------------------------------------------------------------
/client/src/views/ScreenPage.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
17 |
18 |
22 |
23 |
24 |
25 |
26 |
33 |
34 |
35 |
39 |
40 |
41 |
42 |
43 |
52 |
53 |
54 |
55 |
56 |
60 |
61 |
62 |
63 |
64 |
71 |
72 |
73 |
77 |
78 |
79 |
80 |
81 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
104 |
105 |
106 |
110 |
111 |
112 |
113 |
114 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
223 |
224 |
348 |
--------------------------------------------------------------------------------
/client/public/static/map/province/tianjin.json:
--------------------------------------------------------------------------------
1 | {"type":"FeatureCollection","features":[{"id":"120101","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@BhB`R@DA@CD@DCFCHBLDF@DABKFIJGQG@COEQM@@OASB"],"encodeOffsets":[[119992,40041]]},"properties":{"cp":[117.195907,39.118327],"name":"和平区","childNum":1}},{"id":"120102","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@XFFIE@BGGA@KVBN_]CCCLgMGE@CD@AGB@AEGMEACB@BA@BFWFACKA@DA@@DA@C@CCCDGIAKMBWLGFERWT]bADCNE@DDIDEFBHTHBD@DLMPJj@ARX@"],"encodeOffsets":[[120075,40099]]},"properties":{"cp":[117.226568,39.122125],"name":"河东区","childNum":1}},{"id":"120103","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@TAPB@@RNPF@DRHPSXSFQHEXKE@CMIFUQA@DC@CCA@CDE@CEE@FOc@@D{@ch]IGFCFE`A\\"],"encodeOffsets":[[119992,40041]]},"properties":{"cp":[117.217536,39.101897],"name":"河西区","childNum":1}},{"id":"120104","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@C@@DCBQ@AcAmBOFaDEHEgKID]ZQTINCJEdkhHDRNCB@FD@BAFDFHB@JIDANFDECCZCBA\\B@Hd@LB@CAU"],"encodeOffsets":[[120007,40074]]},"properties":{"cp":[117.164143,39.120474],"name":"南开区","childNum":1}},{"id":"120105","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@FBBAJBFDJK\\NFEFBLKBBBATP`]QOLB@AHBBEJ@DDDE@QW@BQi@OIKN@CACQECG@CFCJCCCMCGAEDCFBT@DSTQN@BFDBDCJBJAHKAIFDDXDAB"],"encodeOffsets":[[119993,40130]]},"properties":{"cp":[117.201569,39.156632],"name":"河北区","childNum":1}},{"id":"120106","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@JELBBGAIDIACEC@ARMTSKAc@@G[AABYDDDCFMECBIJC@CPHZ@LHNFFNHBCDAZBB@DEJE"],"encodeOffsets":[[119980,40125]]},"properties":{"cp":[117.163301,39.175066],"name":"红桥区","childNum":1}},{"id":"120110","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@CK@QOCEAEK@KAAKAKEoRECIYK{\\Af@BMb@@WAGBC@GV@KYBUkB@@OD@AEUE@IQDAGSJEDFD@CIDAAKDE@KECOKKEABMVMRGBSGE@KDCDADDN@FCHCBGAIGUKUEcB]JULINIZGD[AU@QDMDGFQR_NODiBcDBLHJDCDDF@@CB@@CLBBDXEAEB@@ADAFBHNBFA@BHC@@DHF
NKhDD^DM`UA@LHBAHF@EJWE@RCFCCI@AFGA@BKARP_^ZXZL\\JfHNHEdEAAFBBQCAFPHRGtMBEB@NB^Cb@lECFHDPD@DNBJCFE@CEG@GTCPHBF`@JFBCHJJKRCP@JGTIAQGIDAPAVH@GCEKEEBAAVEBDADPFBBCFBBHE@WHClQPCFBTARE"],"encodeOffsets":[[120391,40118]]},"properties":{"cp":[117.313967,39.087764],"name":"东丽区","childNum":1}},{"id":"120111","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@CGECABC@@EDAQMGClgD]DM^c^YHCF@VrwJBBINBHAFAHBDAN@LDDGCCA@AC@AACBAAEFKA@KDCCJCJDFGF@DCBGDQJERFHGMCLEAAGAFGMMAWE@BHQLKIBAJECCCAAGQW[DAAjS@AIYXKGGT@NBFEBABOJBDMFADGG@BGH@@AACFKGCG@FMWMDABCBAACLCIGCAE@[P¥\\]N¯MNORU^]XKF`_XIIAIkDDZF@@FMDJLmTSDaHgDBJE@@DOBDH[HFJCBCGCBIMKH[L@AAAADUBACECGHWKCHTHBHaJDLF@JNF@FNLAH\\FABPD@EF@@HELCHVF@GXBB@DJBI\\PB@BN@BHK@GBAJ\\F@AACLABBAB@DFHB@FFJCDL@BA@@DF@JEBKHB@CjHBENDH@HSFBDKEAFG\\H@DE@AF@HHBANH@BQ@CBGNFT@`LFABIN@ALDBCFRHFB`D`ANANCG[DM"],"encodeOffsets":[[119940,40092]]},"properties":{"cp":[117.012247,39.139446],"name":"西青区","childNum":1}},{"id":"120112","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@ZAZEVKXSPGVEnDHCJYJMVKNEPCdAZHRJJHHBDADG@ECMBCDCLCF@THHANQPWD@DBXRJ@HAJERSJAJBDCEOCAKYBQCA@GBCDSGAGBIHSNA@KCQMCF]INaCuOSGU{zm_yENH@HDELBD@BG@AHH@CHEBCNIAAPABEFMAS@HHWLJZ@BiTBB\\CRXBHDBDDIFABLJRKAGF@BXNNEHHBBBKFNDGHQEIFCRAHCDE@EHICIDDDLCB@ELBFABBD@BBDB@DDCHKCM@CBGAEBGBMAAJIAMP|@@Cd@EPF@DFF@DCB@DDD@@CRBEVNJ@D"],"encodeOffsets":[[120108,40016]]},"properties":{"cp":[117.382549,38.989577],"name":"津南区","childNum":1}},{"id":"120113","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@PQFFJICABACCDAKGJGLHRMVMMERKHH`WBFFCRFJHHIBOK_MC@QLCDIBAMA@COCGCDEkFa@]DMAA@AFsNQHOGBERDAABEFBFcMGeG[IQGGCmgABAAKLEAEF[MILECKA@BA@CABAWCCCIFEFYACBADICIIGM@KMDgDO@UCWIDECABKM@AJEB_KS@MEAH@DARG@BMGA@GBEF@@C[GEHFBCLEAGTG@MCAFgGA@@DGAALIFE@@CB@@ACKIDIGQJ@DHD@@GAAH@FDPbB@BDEJ@BBAFBNBHDBCDBDHBEJFBBDCFANA@AFTFFARPBNLABARA@DD@BB@HFA@PXBBLDACRKEAJF@GPD@AN@BjHCGZFJUN@BA^F@FIAAFNDCF@B\\LONADtJTAFBDCPBDGPETBADNDFFDFCD@LHBBKJFALIA@DB@@BNFBGHBBEN@@DHD@FFBDAH@AHBBCLDBF@@HFBBGJ@BBAFfLLABCH@ADLFJENAHKLAFBDEH@AHBDJB@DB@B@AADEFCLBNCDMDER@BKGA@ADEZDBELH"],"encodeOffsets":[[120140,40274]]},"properties":{"cp":[117.13482,39.225555],"name":"北辰区","childNum":1}},{"id":"120114","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@DKEC^QZS^QwVMAAB@CCI@@CB@H@JCBCFEDBCFF@D@H@FALIXMBIECM@ADE@OABEPA@CBCD@HEDIGEC@AC@KJ@DCH@@DFADEDAFBFALGBMFABKGAAA@CAALEJOFAFIFEB@JKDEJBDCCAEAFI@IDIDINECABGBQBCFC@AOKIHED@EKG@JDFOH@EIEDEFOC@BCEACAACAEI@AAHUXC@GD@AMDED@BEF@BBHAKADID@BGCIBEIIGCAFOAGAEF@BHBALQ@CFCNMDKAEDCFBBC@@CIAACBGG@CFEAKBGLMBIFKEBCG@ADKBeKBEAAI@AHEA@GE@CADKAABGG@CBEA@EGC@CM@AFGAAHME@AA@@CJBBKIEALGA@KDCCEEEMCBCSAOFCHOACDEASBsIBCPM[K@ADEMCBEJB@E]EABM@IVYEDHiG@ABMC@HOE@BILFDQCBAKWA@OEB@GAAC@@CQBABKBAMQOEBSEBEB@BMDEACEAFIGAACDCCAAGAMBEAAI@CF@AaACO@EBGHB@@GC@CRICE@CBAAAKBBD@B[EBIHAL@AGM@@AOAJ[IA@CAAHWM@AHJ@G^G@AF@DA@@FEBBFcJqAEDECFFABBRCHBFEDDNAHA@@`@@CHG@AT`D@AH@@PBBCJDBFABGB@@BBAB@BIFBBDJ@@FE@DHKD@JA@@FGCCDE@AZFDM\\JBCZCRKA@FGA@JHB@FBBXFBCFB@BB@CRJ@DJ@HCTF@ADB@AHEAIFKACH@CA@CLA@FBAFB@@DH@CFE@ADIEKA@FAABIB@BCG@@CC@BAOMCJGG[C@BABG\\AAAD@FL@@DJBADHB@BA@ABOCCDC@@BC@ADB@ADA@AFL@@A\\D@FFBBEB@CLB@ELB@@BAB@DBB@DEA@DD@AFCACDBHJDALF@AFFBBCPB@DB@ABBBBBD@@DDBFB@DHBCHDBLEJNMF@DKCIFCFQCBAA@@AEBAA@@EA@DOICDGD@BB@ALDA@BYLKA@BBGGA@AMHEABCC@GNLE@NC@@DAAAFEAAJKBBBF@CB@BF@AFH@@BN@ADZF@DD@@DF@DCFBEBF@@JB@EDCPA@@FI@@BF@@DDCCTH@C@TD@BB@G^FAGPECBGG@@BSAEDALG@AJA@AHC@ABC@@FEAAHB@@DB@BDF@AHHFA@DBABD@D@CBBBCBXH@DB@AFH@EHCACFCBCFA@CFDACL@BB@AFB@BCDBBA@BBBBCFBADE@B@@BCBBBD@ABE@ABAA@BLD@BHDBEGA@AD@CABEL@CJHBEHDBEJBBPDFCBEJDDBH@@FADHBMNIHFDEFFD@AJFADBBBAF@D@AHDBRDBD@RCBBJV@@BD@BDPBFEBBCDTHL@DAHBBCDBABTDCJJBGJNBAND@ADFBHE@DED@H@@@FH@X@BCBBBCB@DFZ@DMA@CFA@GMCADGAGBCNMAAIA@KXGCODOJMD@LJJC@C@KC@BCFAFDRDBAD@CD^F@DF@BFFA@FJB@DbEPEbElMTIZGAAFA@CJ@BE@@@FHA@EJA@CHBADBGPA@BG@AFBBVGHFL@BBABD@"],"encodeOffsets":[[119960,40574]]},"properties":{"cp":[117.057959,39.376925],"name":"武清区","childNum":1}},{"id":"120115","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@GBAAE@AFC@CFBNC@@HWDGVBBJ@BFBDDBFBADD@EPCFJF@FPGCE@ILH@FFCJGPL@BEDADARAHDBMFCJCJ@JEJFBDBCDIACFILA@EFEJEBIPKFBB@DBBHBALEBANKHEBEACBCFEB@CG@CDI@@LBDD@HFCJGFC@AD@DOBAFPBF@BCN@FDAJWNKJEBG@C@E@DECAEFADIDG@ADJ@DDA@BBUNx]RYT]RFDCLJBADDBGDBDHBFJJ@TBBHB@@DH@AFKBCB@HE@@BEA@D@@ADBHC@@AA@@DCB@DB@@FJ@@FD@@HH@E\\F@ADB@ARBBBFED@BD@@BCA@HD@AJE@@ACAAHDB@BH@AHCB@EAAADGB@BE@BBK@FLEBDDADA@BDNB@DJCBBIR@DBBDBFALDX@DHL@DJFA@BH@HHKJAB@DC@GFOHED@BCBAZE@ADE@AFGACEEDA@@AGAAVJ@IVB@@DB@@DHGJB@JpFBCFBEPPBBCNFBGHBPC@EHBFFRDRA^GD@JCFDJGHBLGFECCBGHBBCFBDCFB@EFGD@@BF@@DPALEDCECDEDABED@HCHJH@FDDEFDHENCLBDDDA@ERABEN@JEDDBACEJ@AINMRBJGAIDCZEJCLAFRTJHAHJHFD@@AEKBAFBRJGF@BPAFBHEDBFHBAFO@@NFH@BEFGHAD@BFBBJID@BFDBDEB@J@AGDCL@FBNIBBFJD@HKDCNDF@DAFGFCdE@A@AICBCJC@C@AGAEFC@@MIBAABC@CKA@CBANACAGC@ARBJG@GLGHCX@LENBNE@EDAFBHHD@DCDIIMLCBGN@@AIEBANEGKLEJDDAAGIKHKCIBECIECSF@GBKGCIDC@FKAAGCBOC@OB@MKGC@CHCAAEFUB@HDLPJDBCAIFGDARDHGBC@EIKDGB@N@PHJHBLHBNARQXGFG@GIGK@IDEFEAAC@EHILCP@JCDGCEOFCBGABCKCBSEEK@ADIGO@AEOCEDDBqNAAH]MKiIAW@@CA@GA@DIMA@CGAAD_EEH@FIA@HIAAHUEDOHAFIOSKGSEcDAEI@@CBCOEC@CDCFEBKEFIMEGEA@@BIA@ERFBDQCABADQDCCAHMJBDEMEADGAUCCC@CDA@CCCICGO@BDJG@CADGK@CCGFICCBKEEDGBCAAEKDAABGFE@ACABCAAeA@HM@GBYD@BE@@NABGB@CCAW@@ACAEF_BYECII@CG"],"encodeOffsets":[[120145,40295]]},"properties":{"cp":[117.308094,39.716965],"name":"宝坻区","childNum":1}},{"id":"120116","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@@LCFBLCBDJC@CEIFHTCBJRF@FXPC@@lAAVLZU@@HADBH@Xa@ANe@[BL|J\\FBpQLFLBBB@LFLFBPD@RDLpMpGBPNREHE@@dVF@BJB@BD@@DFDLBDGHGDA^c\\@@cFD@@jEBJZFLhrePFBEJGAENE@IVC@@RBLV@DPT@zJLHPFVDNECC@SACjQJBJCACIDMQhQD@tCD]LBHDBH@GLHNB@DQHBAFDHE@@DEBDFFAD@@BF@BBAB@BNFBEHCXDT@JGAGVEBEDCDB@BF@@DRC@BZ@PAP@BCFAJ@@B@BTC@DB@JEAAB@FB@ACAB@@CC@BCHOF@BADAAADCHBH@HECEB@BCHBDBBCFDBAACBAD@BBPGJF@@ABDB@BD@ABBDDAFCBC@CB@CCAKNECG@EF@@EzQBiAC@Ey@BUI@±]GaQaý¥Y_YeK]EaDqPmHcD{DKQBMMaKEUC_BOASY_YAYDXSIaa¹JgCeOQ[@RUbK¶MPGJMA¯CUSQÓgOKMWEa³OqIGFG@EBEACIGCFK]EE@@DFD@B@BG@BHCFC@@EEAIHEACBC@BFCBQCaDFKACEBECADE@SSKMIKHQKHEJ@[UGCoO@d[CFSMIAIE@AH[A@DOA@AQKOEEBARGNI@G@BSgE@AOACJSKMVC@IXF@hJAFmKCHB@PVVFAHHB@JC@CH@BABD@ABMFC@@BSB@BAAAHG@JL@BBBWABHHB@N@BMBMAEEESMA@EA@@CCE@FC@AEQ@@GCAA@AJC@BEK@AAABSGA@@FEA@BCBC@@EC@@DK@LHBD@HCDBFCBABB@F@@FB@@DFJ@HB@BLADK@HBDBCBG@@DH@@F@DCJIB@JK@AJFBCLBHH@DCBJFF@PATBHB@ABDTbB@DaCAAE@@CAACAOF@HADE@@BICAFBHEBhTBPDBJCFCªvEFeVTROJVT`OFH®_\\OF@DBJHKDBDABADCB¶n`|yHVPTvbDM^JDERNLDB@TMJGHAHBCTAD@HDBARLZDBFPCDIAGBUVOFGB"],"encodeOffsets":[[120348,39943]]},"properties":{"cp":[117.654173,39.032846],"name":"滨海新区","childNum":1}},{"id":"120117","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@ABCJKD@RNDL`APGJIGQEEDAE_XGGQLNFUNQNKGIHLHCBDDABDBIJEEORFFAFDJAHC@CJLBDHJ@DJZF`AFEDB@BX@DB@DHABA@MF@@AZCHAN@@GfBBBADDB@BEFAHBBLCBFDBHAFCLFDAJDHEDDL@CHDBH@CI@AHPJDDD@DCB@DDDVDHBBCNFCFIAGNDBCDCRABDBCREAQ@FJB@AB@HFNFEJLFFADEDCD@PFAD@DJ@BFdCTFLHPTEJGBCPVFBGJB@GJB@EFG`FBCHB@DNBCJB@@HDB@@BXjJNLGZ@DBBrMACFANDBFP@JHBCL@FFATLDADHBDAPEAC@EBIFIJGNJJ@JBJJHJHFSZA@BND@@LVB@BJ@AFDBBDEDILjTABlEHHTBvWVAPDHCDFL@LHHB`MFALDNC^M^GJIEKABEGACC@IMA@AOB@EACIGAAEBAECCBDAAAAADAAEFCBDB@ACB@AAAABEBAD@AG@ADFAEB@A@GKSCCgG@AEJA@AFO@ECCQEEEOBGYG@BqGBKXBFKCYJKOIKNEASCeA_ECSBGFENEF@HDZ@FCBE`TEFB@EFHFFEECBCFDFADBDEUWCOGBAIECLG@CEIFA@CF@CGBEGACRA@GMHKG@CAAG^KDCsC@gRNRJCBDIDIAiRBD@TDDMFUCOEKGyIS@COU@AK@QD@JUF@FMHBFIEAfOgqEKIYFA@i@EC@d[@]dCBGHCHKAEC@CC@@AIA@AUE@cF@FGMQAOgFVSBEAODkRGD@XGFAADEAAOEBCACUFBBFALFDF@HUGOBCBHJBRSJIHO@QDILGIADIE_@AEOGSD@HFH@DEFID"],"encodeOffsets":[[120221,40183]]},"properties":{"cp":[117.82828,39.328886],"name":"宁河区","childNum":1}},{"id":"120118","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@AHC@@FCA@DHB@JS@@DA@@H]BCTKfG@BHK@@FEAADJD@RJhNNI@@FQBBDCBQA@BBLMIBNFJADHHEBuK@IA@AKU@UDDHKI@HAGAAC]@CDCA@MSAHPGBOEMEIA@EC@@DA@MBAASB@BCB@TE@@BBBBDAHCBDFABFNGBBFKBBFC@BDB@FPC@BPCPMACEoBE@AAC@@DcB_D@ECB@A@BA@B@@DC@@CA@@IE@AAG@BDK@EBABQA@JE@@HC@ABA@@BB@ADOA@DIAACA@NxQB@FIBHXHABFKBFLIDLPDTF@DNC@CAGB@FA@BJDXmBA[@@D@@NL@BHB@H\\BTD@HRB@JF@FL@FHDNDABJDCDTD@DTA@@LF@BB@XGBADE@@B@B@DJXJ@XEDFHAFHCBBDBDJBBHTCAIGBAAGBEA@EC@BCB@@BBAC@@AB@@CD@@DB@@DJ@DDF@DAF@@CLABBF@@AB@BBJ@@IBBDBB@ACJBJDR@@HD@@GfBAFXBCLH@GTPFjKAGSGDGXLHGFDBDVABCBB@B\\KLGJNDADHDAEI\\GCGPA@CF@AIhCbGTCnSIKNC@EE@CYlCBJJJ`W~W\\M^WV]^_°VIEG_PUSPISQfUFE©uEDIDCAAOgSFAAGBEJD@AF@BC@GPEDBBB@DF@BBbD@CaACSBAA@AGBS@OEEAICDG@AGDKEABIL@@IJADI@C@EG@@CH@DACAGAL@@OA@@GEI@CA@@EE@A@BADAAEDC@GACOKB@BMEB@ESEAABECAWBAECBBCC@CIBCS@@IWD"],"encodeOffsets":[[119909,39513]]},"properties":{"cp":[116.925304,38.935671],"name":"静海区","childNum":1}},{"id":"120119","type":"Feature","geometry":{"type":"Polygon","coordinates":[],"encodeOffsets":[]},"properties":{"cp":[117.407449,40.045342],"name":"蓟州区","childNum":0}}],"UTF8Encoding":true}
--------------------------------------------------------------------------------
/client/src/assets/font/demo.css:
--------------------------------------------------------------------------------
1 | /* Logo 字体 */
2 | @font-face {
3 | font-family: "iconfont logo";
4 | src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
5 | src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
6 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
7 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
8 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
9 | }
10 |
11 | .logo {
12 | font-family: "iconfont logo";
13 | font-size: 160px;
14 | font-style: normal;
15 | -webkit-font-smoothing: antialiased;
16 | -moz-osx-font-smoothing: grayscale;
17 | }
18 |
19 | /* tabs */
20 | .nav-tabs {
21 | position: relative;
22 | }
23 |
24 | .nav-tabs .nav-more {
25 | position: absolute;
26 | right: 0;
27 | bottom: 0;
28 | height: 42px;
29 | line-height: 42px;
30 | color: #666;
31 | }
32 |
33 | #tabs {
34 | border-bottom: 1px solid #eee;
35 | }
36 |
37 | #tabs li {
38 | cursor: pointer;
39 | width: 100px;
40 | height: 40px;
41 | line-height: 40px;
42 | text-align: center;
43 | font-size: 16px;
44 | border-bottom: 2px solid transparent;
45 | position: relative;
46 | z-index: 1;
47 | margin-bottom: -1px;
48 | color: #666;
49 | }
50 |
51 |
52 | #tabs .active {
53 | border-bottom-color: #f00;
54 | color: #222;
55 | }
56 |
57 | .tab-container .content {
58 | display: none;
59 | }
60 |
61 | /* 页面布局 */
62 | .main {
63 | padding: 30px 100px;
64 | width: 960px;
65 | margin: 0 auto;
66 | }
67 |
68 | .main .logo {
69 | color: #333;
70 | text-align: left;
71 | margin-bottom: 30px;
72 | line-height: 1;
73 | height: 110px;
74 | margin-top: -50px;
75 | overflow: hidden;
76 | *zoom: 1;
77 | }
78 |
79 | .main .logo a {
80 | font-size: 160px;
81 | color: #333;
82 | }
83 |
84 | .helps {
85 | margin-top: 40px;
86 | }
87 |
88 | .helps pre {
89 | padding: 20px;
90 | margin: 10px 0;
91 | border: solid 1px #e7e1cd;
92 | background-color: #fffdef;
93 | overflow: auto;
94 | }
95 |
96 | .icon_lists {
97 | width: 100% !important;
98 | overflow: hidden;
99 | *zoom: 1;
100 | }
101 |
102 | .icon_lists li {
103 | width: 100px;
104 | margin-bottom: 10px;
105 | margin-right: 20px;
106 | text-align: center;
107 | list-style: none !important;
108 | cursor: default;
109 | }
110 |
111 | .icon_lists li .code-name {
112 | line-height: 1.2;
113 | }
114 |
115 | .icon_lists .icon {
116 | display: block;
117 | height: 100px;
118 | line-height: 100px;
119 | font-size: 42px;
120 | margin: 10px auto;
121 | color: #333;
122 | -webkit-transition: font-size 0.25s linear, width 0.25s linear;
123 | -moz-transition: font-size 0.25s linear, width 0.25s linear;
124 | transition: font-size 0.25s linear, width 0.25s linear;
125 | }
126 |
127 | .icon_lists .icon:hover {
128 | font-size: 100px;
129 | }
130 |
131 | .icon_lists .svg-icon {
132 | /* 通过设置 font-size 来改变图标大小 */
133 | width: 1em;
134 | /* 图标和文字相邻时,垂直对齐 */
135 | vertical-align: -0.15em;
136 | /* 通过设置 color 来改变 SVG 的颜色/fill */
137 | fill: currentColor;
138 | /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
139 | normalize.css 中也包含这行 */
140 | overflow: hidden;
141 | }
142 |
143 | .icon_lists li .name,
144 | .icon_lists li .code-name {
145 | color: #666;
146 | }
147 |
148 | /* markdown 样式 */
149 | .markdown {
150 | color: #666;
151 | font-size: 14px;
152 | line-height: 1.8;
153 | }
154 |
155 | .highlight {
156 | line-height: 1.5;
157 | }
158 |
159 | .markdown img {
160 | vertical-align: middle;
161 | max-width: 100%;
162 | }
163 |
164 | .markdown h1 {
165 | color: #404040;
166 | font-weight: 500;
167 | line-height: 40px;
168 | margin-bottom: 24px;
169 | }
170 |
171 | .markdown h2,
172 | .markdown h3,
173 | .markdown h4,
174 | .markdown h5,
175 | .markdown h6 {
176 | color: #404040;
177 | margin: 1.6em 0 0.6em 0;
178 | font-weight: 500;
179 | clear: both;
180 | }
181 |
182 | .markdown h1 {
183 | font-size: 28px;
184 | }
185 |
186 | .markdown h2 {
187 | font-size: 22px;
188 | }
189 |
190 | .markdown h3 {
191 | font-size: 16px;
192 | }
193 |
194 | .markdown h4 {
195 | font-size: 14px;
196 | }
197 |
198 | .markdown h5 {
199 | font-size: 12px;
200 | }
201 |
202 | .markdown h6 {
203 | font-size: 12px;
204 | }
205 |
206 | .markdown hr {
207 | height: 1px;
208 | border: 0;
209 | background: #e9e9e9;
210 | margin: 16px 0;
211 | clear: both;
212 | }
213 |
214 | .markdown p {
215 | margin: 1em 0;
216 | }
217 |
218 | .markdown>p,
219 | .markdown>blockquote,
220 | .markdown>.highlight,
221 | .markdown>ol,
222 | .markdown>ul {
223 | width: 80%;
224 | }
225 |
226 | .markdown ul>li {
227 | list-style: circle;
228 | }
229 |
230 | .markdown>ul li,
231 | .markdown blockquote ul>li {
232 | margin-left: 20px;
233 | padding-left: 4px;
234 | }
235 |
236 | .markdown>ul li p,
237 | .markdown>ol li p {
238 | margin: 0.6em 0;
239 | }
240 |
241 | .markdown ol>li {
242 | list-style: decimal;
243 | }
244 |
245 | .markdown>ol li,
246 | .markdown blockquote ol>li {
247 | margin-left: 20px;
248 | padding-left: 4px;
249 | }
250 |
251 | .markdown code {
252 | margin: 0 3px;
253 | padding: 0 5px;
254 | background: #eee;
255 | border-radius: 3px;
256 | }
257 |
258 | .markdown strong,
259 | .markdown b {
260 | font-weight: 600;
261 | }
262 |
263 | .markdown>table {
264 | border-collapse: collapse;
265 | border-spacing: 0px;
266 | empty-cells: show;
267 | border: 1px solid #e9e9e9;
268 | width: 95%;
269 | margin-bottom: 24px;
270 | }
271 |
272 | .markdown>table th {
273 | white-space: nowrap;
274 | color: #333;
275 | font-weight: 600;
276 | }
277 |
278 | .markdown>table th,
279 | .markdown>table td {
280 | border: 1px solid #e9e9e9;
281 | padding: 8px 16px;
282 | text-align: left;
283 | }
284 |
285 | .markdown>table th {
286 | background: #F7F7F7;
287 | }
288 |
289 | .markdown blockquote {
290 | font-size: 90%;
291 | color: #999;
292 | border-left: 4px solid #e9e9e9;
293 | padding-left: 0.8em;
294 | margin: 1em 0;
295 | }
296 |
297 | .markdown blockquote p {
298 | margin: 0;
299 | }
300 |
301 | .markdown .anchor {
302 | opacity: 0;
303 | transition: opacity 0.3s ease;
304 | margin-left: 8px;
305 | }
306 |
307 | .markdown .waiting {
308 | color: #ccc;
309 | }
310 |
311 | .markdown h1:hover .anchor,
312 | .markdown h2:hover .anchor,
313 | .markdown h3:hover .anchor,
314 | .markdown h4:hover .anchor,
315 | .markdown h5:hover .anchor,
316 | .markdown h6:hover .anchor {
317 | opacity: 1;
318 | display: inline-block;
319 | }
320 |
321 | .markdown>br,
322 | .markdown>p>br {
323 | clear: both;
324 | }
325 |
326 |
327 | .hljs {
328 | display: block;
329 | background: white;
330 | padding: 0.5em;
331 | color: #333333;
332 | overflow-x: auto;
333 | }
334 |
335 | .hljs-comment,
336 | .hljs-meta {
337 | color: #969896;
338 | }
339 |
340 | .hljs-string,
341 | .hljs-variable,
342 | .hljs-template-variable,
343 | .hljs-strong,
344 | .hljs-emphasis,
345 | .hljs-quote {
346 | color: #df5000;
347 | }
348 |
349 | .hljs-keyword,
350 | .hljs-selector-tag,
351 | .hljs-type {
352 | color: #a71d5d;
353 | }
354 |
355 | .hljs-literal,
356 | .hljs-symbol,
357 | .hljs-bullet,
358 | .hljs-attribute {
359 | color: #0086b3;
360 | }
361 |
362 | .hljs-section,
363 | .hljs-name {
364 | color: #63a35c;
365 | }
366 |
367 | .hljs-tag {
368 | color: #333333;
369 | }
370 |
371 | .hljs-title,
372 | .hljs-attr,
373 | .hljs-selector-id,
374 | .hljs-selector-class,
375 | .hljs-selector-attr,
376 | .hljs-selector-pseudo {
377 | color: #795da3;
378 | }
379 |
380 | .hljs-addition {
381 | color: #55a532;
382 | background-color: #eaffea;
383 | }
384 |
385 | .hljs-deletion {
386 | color: #bd2c00;
387 | background-color: #ffecec;
388 | }
389 |
390 | .hljs-link {
391 | text-decoration: underline;
392 | }
393 |
394 | /* 代码高亮 */
395 | /* PrismJS 1.15.0
396 | https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
397 | /**
398 | * prism.js default theme for JavaScript, CSS and HTML
399 | * Based on dabblet (http://dabblet.com)
400 | * @author Lea Verou
401 | */
402 | code[class*="language-"],
403 | pre[class*="language-"] {
404 | color: black;
405 | background: none;
406 | text-shadow: 0 1px white;
407 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
408 | text-align: left;
409 | white-space: pre;
410 | word-spacing: normal;
411 | word-break: normal;
412 | word-wrap: normal;
413 | line-height: 1.5;
414 |
415 | -moz-tab-size: 4;
416 | -o-tab-size: 4;
417 | tab-size: 4;
418 |
419 | -webkit-hyphens: none;
420 | -moz-hyphens: none;
421 | -ms-hyphens: none;
422 | hyphens: none;
423 | }
424 |
425 | pre[class*="language-"]::-moz-selection,
426 | pre[class*="language-"] ::-moz-selection,
427 | code[class*="language-"]::-moz-selection,
428 | code[class*="language-"] ::-moz-selection {
429 | text-shadow: none;
430 | background: #b3d4fc;
431 | }
432 |
433 | pre[class*="language-"]::selection,
434 | pre[class*="language-"] ::selection,
435 | code[class*="language-"]::selection,
436 | code[class*="language-"] ::selection {
437 | text-shadow: none;
438 | background: #b3d4fc;
439 | }
440 |
441 | @media print {
442 |
443 | code[class*="language-"],
444 | pre[class*="language-"] {
445 | text-shadow: none;
446 | }
447 | }
448 |
449 | /* Code blocks */
450 | pre[class*="language-"] {
451 | padding: 1em;
452 | margin: .5em 0;
453 | overflow: auto;
454 | }
455 |
456 | :not(pre)>code[class*="language-"],
457 | pre[class*="language-"] {
458 | background: #f5f2f0;
459 | }
460 |
461 | /* Inline code */
462 | :not(pre)>code[class*="language-"] {
463 | padding: .1em;
464 | border-radius: .3em;
465 | white-space: normal;
466 | }
467 |
468 | .token.comment,
469 | .token.prolog,
470 | .token.doctype,
471 | .token.cdata {
472 | color: slategray;
473 | }
474 |
475 | .token.punctuation {
476 | color: #999;
477 | }
478 |
479 | .namespace {
480 | opacity: .7;
481 | }
482 |
483 | .token.property,
484 | .token.tag,
485 | .token.boolean,
486 | .token.number,
487 | .token.constant,
488 | .token.symbol,
489 | .token.deleted {
490 | color: #905;
491 | }
492 |
493 | .token.selector,
494 | .token.attr-name,
495 | .token.string,
496 | .token.char,
497 | .token.builtin,
498 | .token.inserted {
499 | color: #690;
500 | }
501 |
502 | .token.operator,
503 | .token.entity,
504 | .token.url,
505 | .language-css .token.string,
506 | .style .token.string {
507 | color: #9a6e3a;
508 | background: hsla(0, 0%, 100%, .5);
509 | }
510 |
511 | .token.atrule,
512 | .token.attr-value,
513 | .token.keyword {
514 | color: #07a;
515 | }
516 |
517 | .token.function,
518 | .token.class-name {
519 | color: #DD4A68;
520 | }
521 |
522 | .token.regex,
523 | .token.important,
524 | .token.variable {
525 | color: #e90;
526 | }
527 |
528 | .token.important,
529 | .token.bold {
530 | font-weight: bold;
531 | }
532 |
533 | .token.italic {
534 | font-style: italic;
535 | }
536 |
537 | .token.entity {
538 | cursor: help;
539 | }
540 |
--------------------------------------------------------------------------------
/client/public/static/map/province/shanghai.json:
--------------------------------------------------------------------------------
1 | {"type":"FeatureCollection","features":[{"id":"310101","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@AHV@BDCPEPLENFHCJHFBNCAGBGXWFIBGCGMUKKCCcGCDGBALCPIAAPGR"],"encodeOffsets":[[124373,31970]]},"properties":{"cp":[121.490317,31.222771],"name":"黄浦区","childNum":1}},{"id":"310104","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@CEAMMAA@C@AFA@@BC@ABC@@BD@@BH@@BB@EHDDCBECADGEEAEBFNET]CMRELQjOEGRFBAHDBAHH@@B@BDA`H@F@BC@AB@FD@DD@@@CH@DDAFDD^LEPF@DFTDPHHQBOJBDOBKHADCOGCEAE@EFOBMAEUW@GBEHILMBE@KGM"],"encodeOffsets":[[124381,31859]]},"properties":{"cp":[121.43752,31.179973],"name":"徐汇区","childNum":1}},{"id":"310105","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@@AACE@FO]KCCBECCG@@D@@CCmBSAcKG@EBAEGC@DC@QE@CA@@BEBMTNFAFDBA`D@BDA@AA@FFBBLD@@@IBDBABDB@@DBADB@CHA@@DC@C@@@BBABFDH@AHD@ACDA@FD@BCA@@CJCNWJ@BCHAFEF@XCV@DFH@VFBBCFD@HEFFFBB@@IDAJFBABIFK"],"encodeOffsets":[[124354,31964]]},"properties":{"cp":[121.4222,31.218123],"name":"长宁区","childNum":1}},{"id":"310106","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@AB@PCJBNG@ABBDBB@DNBAJJ@@FB@@H@@@DF@ENB@BDD@BAT@BENDFDPB@AF@A]G@BOCKCEBA@G@KBEDCLMVQ@EACDECABCDKECGDMEKFFODOACU@BGOGUCELAJABIECBBNFHJBTLHB@BADDD@FB@@DC@BHOVUJCFIG"],"encodeOffsets":[[124340,32022]]},"properties":{"cp":[121.448224,31.229003],"name":"静安区","childNum":1}},{"id":"310107","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@DB@DHBBCDBB@A@DF@@DFDDHGBDDALZCB@@EBA@ACQ@@DGBEFBB@FD@J@BFMBCCCDID@AODAEIDBDEBABBB@DC@AF@@AFGACBADBB@@NFADD@@BB@B@BAB@@@BBDA@HBB@AJ@@AD@@BB@AFHBDCJFHBGQAAJA@ALCBBF@@AB@@BD@@@JABDABD@@BHBBBNACEJA@ADAAA@B@ADAAAJBIQB@FCBBD@AGJ@@EJA@EHADDAB@BFANNDEVIPUAGD@@CA@@ECCBC@AGASKIAEGACA@EAEEA@EFC@DEAAUEG@CEU@WDE@EFGBADI@MV"],"encodeOffsets":[[124267,31987]]},"properties":{"cp":[121.392499,31.241701],"name":"普陀区","childNum":1}},{"id":"310109","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@@OHWVFBABIKK@MJCJGBKV[C@@I[AOEODCACCCLADDBCFBD@FURQT@J@F@HABDFDLAPH@BTVCLBBE"],"encodeOffsets":[[124402,32064]]},"properties":{"cp":[121.491832,31.26097],"name":"虹口区","childNum":1}},{"id":"310110","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@@JD@U\\ALIHID@NLLAJABUEGX@PVA@ZDDADGFX`ZKDHFAFHpSNGDCDGDM@cBGL[BKAGEGMOcY[GWA"],"encodeOffsets":[[124433,31997]]},"properties":{"cp":[121.522797,31.270755],"name":"杨浦区","childNum":1}},{"id":"310112","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@@EBAD@@A@E_GCB@A@AG@BGCABGEAHQPFRiFKNQ^DFSEMFAFBHFBCFDDACCFGA@@AG@@AC@@AD@BAD@@AB@BED@B@F@B@FBBNDFLCDBCBFB@DFG@CBBABDB@CDBAFCB@DABD@B@DB@BD@@B@BB@B@@FJ@DKLFB@DMDBBABBCFDB@@HB@BBABBDCBGNBDAB@@BPDBAF@@AB@@AB@@CDB@BF@DGB@@CD@FDADF@BADDDCBBDCAAC@BCFEAAB@FECABC@ADBBEB@@EGCABAB@@CAA@CAIABAAA@@ECDGD@BCBBD@BBHBFALABAFBD@@CGA@BC@BCEAA@A@@AEA@@AAA@G@DCG@CCBAAA@ADBDAEAC@ACE@BCC@BG@ACBBAEAAA@B@CECDEAEBAB@BDB@DBD@BBD@FDBGBBFCAABCBDBCEC@UBACA@AAA@ABB@CCCE@AA@ADCD@@BF@@FB@@BDB@CDB@ED@DFB@ABB@HDAADCBE@CCACC@CACIABA@@@BD@@AD@DICABCECFA@AMEO@@CC@ABA@@ABA@GCACBADCDA@@BAAAB@BICADE@@BEAABC@GHC@E@@FD@@BA@CFC@@BC@AASEKG@ACAIZBFGDYCIAKGKAU@OCGAKIMIMCOEeCWOBQHI@C@CBB\\HBPTBHJHABECM@ADBB@J@F@D@B@FBDAD@NBBBN@T@DBBADFCFDDGTDJFAFNB@DB@EFFBADD@@DFDDCDBADERCDAB@DELGAADMCEPHB@AB@@BHF@@GNQV@DEJCDC@ADD@@BCFABADA@@FCB@DCD@DABA@EJEF@BEJCLGJABCHAB@BABCFCB@BED@BA@@BABADGFAAA@@CAAKGCAKAUTC@CDDBADIHDFCF@@CDBDCHDBAHGDBDCDABCAABAFKACBDDABBF@@@BHBBDDBC@BDFFFBBDD@@AH@HB@EFC@ABC@FFCFBB@LCFBBAEGFEDABGJMJCL@XGNFH@PDBB@FHDBAAA@@D@D@@CB@DGA@BCCA@@CABACAJA@@C@AKEA@EBBB@ACC@B_CABEMENSFA@AB@@DRFD@@CHDBFFAH@dLTBjA"],"encodeOffsets":[[124327,31940]]},"properties":{"cp":[121.375972,31.111658],"name":"闵行区","childNum":1}},{"id":"310113","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@@JE@@BOAECMCAFS@ABC@ACA@FME@@C@@@GA@@EI@BIMA@CCA@CBAH@AMDI@OBACEEB@ABACCGB@FIB@FI@BHC@AAEDA@JRIABBCB@B@ABBCB@BIBDFMBAAGA@AC@BAACIB@@C@@AA@@BE@AAKD@BIBBBHRC@ICCCCDGABEA@@AC@@BI@@BAA@GCBAAA@ABBBCDAAEJFDB@P\\J@@FB@@DGA@FD@@DAAADCF@@ABBBCDDB@DF@CLCAEFEB@DG@@HD@DB@BB@@FHD@BADA@CFCFABDB@BED@BCDEFFBABB@ADG@GNCBFHAFA@@DCAIB@DB@@FBBEF^JBAH@AFD@A@@DA@@BFDABD@@JB@@BA@AD@DB@@FCJ@FA@C@ABAAABENDB@BCDCFG@ADDBEDDDABA@ADB@ADF@BD@BEACD@BCBJF@BABA@BBCFE@ABCLABBBAFEB@A@BCDEBADD@CBBBBAADBBD@B@BBADFADDDA@ED@ACB@FF@DFBBCB@@AC@@GF@B@AFD@@DB@@AD@@BD@\\PfK^I|]BAEGBE\\Q`W|i\\UdSXUBD@DFAEG\\UQQQY@QJONIVIEGEBCGYLW_HEBCCC@YUBAFKAUD"],"encodeOffsets":[[124384,32068]]},"properties":{"cp":[121.489934,31.398896],"name":"宝山区","childNum":1}},{"id":"310114","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@A@A@@AC@BCME@@AABCDAHBBE@@BED@@CAABAFAACJCBFPC@BJCDCDDNAAEI@C@@EAAFEHA@CR@BDB@FA@@DAKYCBACGHCCCE@@CEB@A@CAADGA@CCAADGB@DB@ADC@@ECBBDC@BGG@CCIC@EAAOCG@OEUHK@IDINAHCBEFFHABEAKDA@EAED@EAD@BED@FGAG@@BC@@AC@@DA@@CCBEA@DGAKFOB@CG@@BAA@CGCBAEA@CA@@DEA@FCFB@ABAAABAC@AAACFGEBCABCCABCCABCAB@@CC@ADGDEEC@EDCA@BA@BDA@ACEFECABC@@BB@BDC@AJIJCAADC@CGEB@@AB@BDF@JDD@DHBABD@B@@BCHE@@BC@@DCA@DC@@DDBADA@EDFBIPCFIIBCMAE@AJ@B@FAB@DAJDB@DDB@FD@@BCBBBB@@DABAB@DCBBBAHBB@FMCKB@HF@EHIACBE@BFCBBLAH@DD@@CD@D@BFNBCDGBAFTHBEBB@DB@@AJD@ANFABBBD@ABD@@ANDBDCD@BABA@ABLDCFDBF@ABC@ABDB@BFDADJDDCCDBDCDAAABBB@BC@ABA@ABC@@HA@C@@DJ@@DFB@BD@HB@AD@ABBDFA@HA@@CA@BDABOBMFAFB@ADBDAB\\LDAHBBADBHAPFJFAFBFFD@BJHRD@FHFNHDACCLADBH@DDFABHCB@BHJF@AJ@@FAFDB@AEFE@CBIHB@AC@@AA@DEHD@BD@ADB@BDB@AKD@@DBA@@@AD@DBBDBBDBD@@FDDBA@CDAHDBBHDADB@FA@BD@DCD@BFFCJD@DA@FBBDFADC@A@BFABEAABADKBAF@DEAAB@BA@AIEDA@ADCFB@AACE@BCA@BCB@BACCFCCABCH@DEDC@ACAFMBABBBAD@B@@EDI@EA@@CBCB@@AA@@IC@BAEC@AB@@CB@C@BEG@AB]IFEAA@EA@@CJADB@CB@BEEGDAHMH@BCA@BAEAFEDC@AFC@ACABALQGC@ECCE@@GH@@CFAFEDBDKE@@CCADCAABA@@DEBCBB@CC@@EHB@CA@@EI@GMEMICFIBBBABAAA"],"encodeOffsets":[[124249,32046]]},"properties":{"cp":[121.250333,31.383524],"name":"嘉定区","childNum":1}},{"id":"310115","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@bM²WLCļÑNI^_ÈïsJQ¶±`e`Z¡LDCsEWOWs@GBI\\wsYg|QNUBģFqAZHZB@@JHBAJFRA@BB@HABB@@J@HBDBLAJC@@BD@ABA@B@AD@FB@@BA@@BA@G@@FC@AB@DA@ABCAC@@DEA@DD@BDEF@FQJE@CAGJA@ABCAEDBDGHADWR_TYJI@G@SD@AA@@AA@IDGB@A@BQBmAA@CBOAGFELC@AAaDACS@C@@AIAABKA@BEBFDADDBCJC@@BC@@A@@ABJBBD@DDDDB@DAFCDBBGCA@BAA@CEC@@FCA@DCA@AA@@EE@@AC@CD@BBBF@DD@DAA@BBB@BDBAB@VFDADACADBBEDAAAHECC@AAC@CAA@ACA@ABBFCFFD@D@ABBFBABDA@BAHD@ADF@BDD@FBCBCA@BBBABDDH@CDH@B@BB@@FB@BB@B@FBADD@@AHB@DC@EAABKBEBGAAAC@AAADC@CHFD@@BBABJBDBB@DB@@BABAHD@FA@AFCA@BADDBEFA@BBEFADD@BBCDAACDCCABE@BCECC@@DA@CHE@@ACA@DA@@BA@@BE@ABOC@AA@CBMAAHCDAAAB@AGA@@CADEAAABCACNA@KECLC@E@@EA@A@@A@AC@@AAAA@A@C@BA@CDABEAAADCABAAA@DEH@CEADACAKDHN@LAFKNGJAF@D@DBFNLHLANEP@FBFJJJDdHDDLLNVDHAHEJWXAF@FJFHDtDXHhZNPFHBHALK\\AH@dCNCHCDMHoTUJMJIP@RRZRR"],["@@PDNAvOFGBKCeEQGEI@IBMNY\\GJELATBJ"],["@@HRHJNBX@XCRGfEFGBM@eYuGIgCIAK@KDMPIREVCXARBP"]],"encodeOffsets":[[[124438,32149]],[[124808,31991]],[[124870,31965]]]},"properties":{"cp":[121.567706,31.245944],"name":"浦东新区","childNum":3}},{"id":"310116","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@DBBAGCBD"],["@@HADA@AGCKHBBF@"],["@@FACAAD"],["@@DB@EB@@CB@@GEQ@IEKAM@ATE@EHADF@GDCFFPD^BBED@@BD@@DPBB@@CDB@BLC@ADB@BF@@CF@@DB@BDCDA@@DCACBC@AB@HDBRTHGBCHBDB@AF@B@NACQ@@@AC@@CC@CIEE@CFCFHDBHABDN@BED@BDNA@HAF@FCBADDLD@DAAC@AB@@ANC@ANC@TDBL@DGJC^BDBDBJ@^F\\VHGPB@CD@BAF@DKDBBCA@BAC@FK@E@BD@@BNABCF@@AFB@AD@BADB@GA@@AF@BCFBDKB@@BDBB@BEDBBDF@@CFB@HD@@F@@@HA@BBA@BDC@BJADBBLB@AA@@ED@DIHA@BB@BDDBBCBA@@@BF@@CB@ABFBBCFB@BD@FCF@DBBAD@BAD@BABBBAHDJ@ABDDABDBHCBDJIBOFE@IDKJAFCBAJELAAEBCBKAA@GD@AIBEAIDOK@@EDEAABA@A@BB@@@B@B@AAD@@ADA@EJ@@CB@H@BLDBFA@@B@@GEB@EB@@CB@DETAAADA@GH@BHLAPA@ABBD@JU@ABBFCB@£«ugWOCOCgBDaAE`@HCBBFCBAJA@AFDFAFFD@FDFCFBBA@BBAFBDA@CDAAA@STCBWLAAABBBCBAACB@AABBBIFAPCHCFBBCB@HA@CAABGPIBO@ICCEDMGAILADACCBCA@CECEAKCADCBADAAKAEC@HEBCAEDQBACEAAB@BGCYDEJCB@BBFN@B@@JDbHRJL@D@FA@@CCB@DABBDEFACSDA@AAA@DDBLFHAB@BABCAIDADABCEKCABC@CDABBBC@@B@BA@BBcO[@MGDCC@DK_KFMGBCFGADEA@AGCA@@DAD@AFB@BCB@DGOCCLKR]JADEAMMABBCA@CB@BABCAACB@CEAB@CAAGBDFGFHFGBBDFHF@BDB@ABBFDADFF@DHD@DFFADDGDDDADDABDA@DDCDFFBDEBFFDCDBCBDDEBBDB@@@CDCDI@GB@BBFAB]DAHCDDH@DDBHB@DHABDB@@FG@CABJBl@FEFCFBB@LB@J@@GPDA@DD@AD@D@@CCA@BCA@CB@A@@AF@BGFAADDB@ARF"]],"encodeOffsets":[[[124321,31442]],[[124337,31429]],[[124341,31419]],[[123933,31687]]]},"properties":{"cp":[121.330736,30.724697],"name":"金山区","childNum":4}},{"id":"310117","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@@DLB@BFTHAFB@DABHFELFBBAH@DIHB@GB@@CB@BEDAB@LAPB@DFBADD@@BBBN@@DRB@BADALHABlH@@\\ABAFQPOLDBDBDCJBBJFA@FCJC@@DCAABDDBDKHB@CDBDEBCEINHDABFB@DDDD@F@@ABCAA@EB@@CH@B@BCBABD@DLBBCB@R@ADD@BAJ@BBBB@BA@@NG@AFELC@AB@@CBA@KJAAA@CAC@CLD@ABBBGJDBBDCFBBDCFDADBBDCABB@@BA@HHDBABFFDCBBDCB@BABB@AFEBBBED@FEDDBED@BALB@CD@DEHBBGDBBCB@BFB@@LC@@FJA@AJB@@B@@FB@@HH@@BJ@CJDDADDBB@B@BCJD@DB@AB@FC@@FC@@D@FDA@X\\ILF@CAA@ABBJ@DEXFPBI_CM@CF@NFF@BBB@BAADBLFBJABHKB@@L@BHXCAGBAF@@BB@@BCFBDDBD@BB^ENNEFEAEHCC@DBB@BB@AH@BFCD@B@ABDB@@FAF@ABXFnNHKB@BA@CDC@CDA@EB@BCBADE@AC@BCD@DCFI@CRUHM@@GE@AA@@BGAFONDBCHBFK@CBAHODICACDEC@CC@BCEAFEA@@CMABEIESCCHECEDBCAA@WAMAA@MBCAC@E@A@C@E@IAABCN@FDBAIGAGOSGAA[DAD@J@XIJ@PDDI@ODK@UD@BCAAGADSG@CAA@AABAAAA@@BECBC@IFCBC@CIG@A@AGDCABACCBAA@@@G@GCCB@AABC@ABC@ABCAE@EDC@@AEAADEABAA@@DE@@A@@ABADCAACA@@AGBCJC@@FB@@BMCBCAID@ACB@AAB@@G@@@EC@@GEA@DE@ACCAAFA@CA@AA@CLEAADE@@BB@@HCAABC@@BEA@BE@ADMB@AC@@A@FELD@ABB@ADCACLE@ABC@@DOAGH[U]EI@CACA]AIDCHK@CA@SMD@BMD@BA@@BBDCBC@CKBCDA@EBE@GMBACC@AFM@ACGBCAEGED@DFFDJD@@DD@@B@@DRMBA@E@@BCAGAADGHQSCA@GBAD@DADB@CB@DCACA@@CE@@DE@@ACA@BKD@ACA@DA@OA@CC@@AC@AF]AOCEECD@HCEGB@FSF@BBNFL@JFR@HA@@DA@@FCA"],"encodeOffsets":[[123933,31687]]},"properties":{"cp":[121.223543,31.03047],"name":"松江区","childNum":1}},{"id":"310118","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@@GCIBA@@FADHD@BCDBJIBID@ACA@@AD@BAFDFEBDB@ACB@@ADBFCD@FFHCBCD@@DA@DBBADDBADDBAADHFDEBB@BBDBABBBAA@DE@EFB@CB@@DFBABHD@DBB@AH@@DPALEHB@CFBDA@DB@@CD@AAEAEEACD@CAACGA@A@@AEBACCDALBBEBADBBADCACHCBGCADGACDC@@DECEJGBCCADCD@VSLBDBLHBB@DB@BBFCDEBA@AB@@AFC@ADADEBA@ABADGBAHIDKJOmMWEBAE@EB@@CABAA@C@ED@ABGA@@AAA@CDDFGFBFEMM]FAAC@CAACDE@AA@@AE@ABBHWDAGK@@@LAAGIBEAAKBCABA@AAE@MEE@@DDNJ`OAWECFI@AA@BBB@DKE[J@WCB@E@CD@@ED@@EBAA@@CICADA@A@CABCCCDII@@AG@@GA@@EA@@@IA@BIB@ED@@KA@AEA@ADCAAHGACFC@@DKAABC@AFCCEFC@AFAAEF@BAAABA@CDAACDEEBACAGGB@@AA@BACDAABCECCDAADGAACAHIAABAC@@EDEB@HBBBLIB@DA@@BAD@FKBEH@@MB@@AAAAAI@ABC@BCQ@A@ADKA@CACABADA@G@@DA@@FBBAD@BE@C@CC@CEABAGCJMDFFAACDCA@LGACCCBADB@CD@DI@EEBAIIACDCACAPKROBEBA@[G@AkGBBKBC@AQA@CM@AA@AC@BCEA@COAKBA@CBAFA@@DA@@HGACJG@ABEAFKGEBA@CEAGBEUKA@CQE@BCABCEBAHE@@BB@A@@DDB@ADB@DC@C@@BCCB@OC@HM@AHC@AHF@CHBF@BC@@DB@ADBB@BNB@BB@@FDB@DC@A@CRA@CFBBAFGAADDB@HA@@DB@@D@@ADBBEJDBM@ADg@ABFFABGBCNGBC@CACBAADAAEFACK[AAAJK@AC@GBEDG@ACOFOEAD@JQ@@FBdCDEL@FCD@H@JHXBPHABDEJ@BEDCACHCFAHA@@EG@QB@BBDE@@DE@AAE@@CG@ABADA@ABCAABCDBLD@DHNJDD@HDHHHJFdDPCTD\\JnEMPDvBJHADHBBD@BD@@EHBFCBEDB@AD@HREB@FHD@DHBBGD@H@ABDBL@@AB@@AD@@CFA@BAFFD@BBB@CB@@FHDADB@@DEAADJB@DCHEAABBB@BFBAFEFADJDABIAADFB@DAB@B@BDBABCB@BE@@DD@Kz@DD@@HD@@DC@ADA@A@AFFB@HBA@BAB@FC@@AIBDBDABD@NA@BBBBABBRA@@@dFFDDHEBBHDNFFABDBDADCB@@AB@BCFO@ABCHCD@BBC@@@FDPRF@FA@DB@@AHAACFCHA@DFAACD@BBDAAABAD@BBD@@CDALBFB"],"encodeOffsets":[[124062,32028]]},"properties":{"cp":[121.113021,31.151209],"name":"青浦区","childNum":1}},{"id":"310120","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@LBBAJB@BD@T@BDbCBBD@FKHEPBDAB@nBRA@A@BHAJCB@@BB@@BTCH@J@ZI`SXQBCHGACFCDBBAB@HIDBF@NGDA@EFEACC@@CFB@CD@DBBAB@@CBAD@@EH@B@@AB@@AA@@EBCA@B@BAC@@AD@BIAKAC@G@IA@BA@GAAB@EQBIGA@IA@GYBYrĥDEU¡_[g¤A@EDAA@BIVC@AA@BOBKBAGG@@HCBBBSBCFA@@DA@@FFA@HA@@@EBCAAKG@A@@DI@@FCB@BC@BBA@A@@@A@@A@BABBBCF@FL@CPBJAFBJC@@HBBALADBFKBIFABEDIBCL@JEFAPKJHFBFADED@JADFD@AB@BBABBBB@DBH@CTHBBBADC@@VCL@PCJTfD^JNJLJHBPDV@LBLHJBZDHCAEJYDB@BLHTFBBD@@AD@DEB@@AC@@EF@D@HGD@BAFB@AF@BCJD@ABABB@AB@DCBCDADB@HAB@BB@BAD@@DP@NF"],"encodeOffsets":[[124489,31743]]},"properties":{"cp":[121.458472,30.912345],"name":"奉贤区","childNum":1}},{"id":"310151","type":"Feature","geometry":{"type":"Polygon","coordinates":[],"encodeOffsets":[]},"properties":{"cp":[121.397516,31.626946],"name":"崇明区","childNum":0}}],"UTF8Encoding":true}
--------------------------------------------------------------------------------
/client/public/static/map/province/xianggang.json:
--------------------------------------------------------------------------------
1 | {"type":"FeatureCollection","features":[{"id":"810001","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@D@bKBoCWKACBGCI@CJSVGFIBKCM@ABAF@LFHPFJJPFVB"],["@@ABD@@AA@"],["@@AAEAAB@DDBFC"]],"encodeOffsets":[[[116895,22829]],[[116861,22818]],[[116860,22817]]]},"properties":{"cp":[114.154334,22.281931],"name":"中西区","childNum":3}},{"id":"810002","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@BMHBBGD@BAHBD@HKDEF@FHDEDECCGCIAAQWCUBSBDXApREHD"],"encodeOffsets":[[116927,22822]]},"properties":{"cp":[114.18299,22.276345],"name":"湾仔区","childNum":1}},{"id":"810003","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@rWAGBEJKRO@ACCBEAIAEGEACKPA@MDICIDOBKDGAIBIABRNDHFEHADEGE@CFGLC@GAABC@AHECABAN|TTI"],"encodeOffsets":[[116967,22827]]},"properties":{"cp":[114.225965,22.279779],"name":"东区","childNum":1}},{"id":"810004","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@JBJAHBLCPAJCJDPCLOJM@IBAFBBA@CE@AAE@AAFIBQBADAFECCBEA@GFCAYBABIRC@QEGEACBEHMACECQACFE`A@GCK@AFFHADMJBBF@BB@FBHCFI@KLEBCAGWAAQDGCGJQHOPOHS`KLN@LDJAHETUDIJ@HDxCZD"],["@@ACCBFB"],["@@D@@ACCCB@CC@CFBDJA"],["@@BA@AG@@B@BF@"],["@@DABAGCADADBBDA"],["@@BAEBD@"]],"encodeOffsets":[[[116946,22787]],[[116886,22776]],[[116934,22767]],[[117006,22758]],[[116932,22748]],[[116970,22738]]]},"properties":{"cp":[114.160023,22.245811],"name":"南区","childNum":6}},{"id":"810005","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@AIBINQNIHU]IsRC@AvFBHFDCLDV@"],"encodeOffsets":[[116920,22860]]},"properties":{"cp":[114.173347,22.311632],"name":"油尖旺区","childNum":1}},{"id":"810006","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@H[@EEGU@KCCDGEEABQi@AHCF@B^P@BABOFCFBFF@FDNADADHJDjB"],"encodeOffsets":[[116919,22881]]},"properties":{"cp":[114.163349,22.333775],"name":"深水埗区","childNum":1}},{"id":"810007","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@DEBEFC@CJKD@DCHDLDBMEG@CFCLICETSDQSJeMGVKHGJIR@HFJBFG^FDF@"],"encodeOffsets":[[116925,22883]]},"properties":{"cp":[114.193047,22.312373],"name":"九龙城区","childNum":1}},{"id":"810008","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@AC@IH_BAYCEDIAGDICGCCDC@IL@DEDAFCFNDVD@BADBBHCFDJA^D"],"encodeOffsets":[[116970,22892]]},"properties":{"cp":[114.203985,22.336112],"name":"黄大仙区","childNum":1}},{"id":"810009","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@F@HWF@DABD@IHBB@GOAENMBE@AEAGOBCFE@CqXCRSTDFKJED@DFHANFCJBFCZD"],"encodeOffsets":[[116974,22868]]},"properties":{"cp":[114.214083,22.320679],"name":"观塘区","childNum":1}},{"id":"810010","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@AEDQ@WQACIKIGCQCABAHC@]I@ADC@ECICCKEGA@NuASIHyO@IEQW@CÙF~bNJFL@D@FLBBNPJJFIDAHEDBDHBDDBBTCB@AHDB^@@JHHF@DDLFJFDBHCD@PPD@L@RLLBDHVBNAHBBABGhB"],"encodeOffsets":[[116914,22950]]},"properties":{"cp":[114.121234,22.368458],"name":"荃湾区","childNum":1}},{"id":"810011","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@AC@G]@CABGA@SDAACCGAACFCBGJCIEOIAMKAEHGFgFgPS@E@MEGEEGCAO@E@SLUNCH@DDH@H@JEHAJCHQFAB\\`ZHTCFKBAHFFJFJBBZ@FC^CND@AEINGXA@OL@@U@@HN@BEE@@KTA@G"],["@@BAFADAAC@AACDACGEBBHAFGFBDD@"],["@@B@B@@CA@AD"],["@@BAB@CCA@ABDD"],["@@D@CGABAFD@"],["@@@ACICABJFD"],["@@DA@ACCC@ADBFBBBC"],["@@@A@@ABB@"]],"encodeOffsets":[[[116810,22924]],[[116618,22917]],[[116612,22891]],[[116626,22888]],[[116629,22880]],[[116725,22874]],[[116708,22866]],[[116720,22861]]]},"properties":{"cp":[113.976308,22.393896],"name":"屯门区","childNum":8}},{"id":"810012","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@BMDIEK@CDCAMHG@C@MCG@YBAZHZDLIJA[gAGBEHMTO@EAIKAQKK@C@OOC@GDCAIEKECCE@EE@HSB@LF@AFM@@G@@VK@@PWBMHFJ@BMC]DEDY@AAEIEIGEABELSDVHNRJPHJLHXHFBP^ZVBRB@\\CJIDEH@DDAJHDFF@DGL@FFB^CRED@JFDPJHPBHED@HFFF"],"encodeOffsets":[[116828,23059]]},"properties":{"cp":[114.032528,22.44132],"name":"元朗区","childNum":1}},{"id":"810013","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@A@@HIEK@EA@BDH@BBBD@BBBAB@MN@DH@@BEFBDFBDA@C@@VABBDAJ@B@D@D@@CC@ECGB@ACACCA@IFEBAC@CFABEHGF@BACGGB"],["@@DC@CEDAFB@BA"],["@@AABB"],["@@@AC@DB"],["@@AABB"],["@@BAAAEABDDB"],["@@@A@CEDBBD@"],["@@@AABB@"],["@@DA@CIE@JFB"],["@@@@@@@@"],["@@DCD@BNDBDIAE@I@EE@ABABOHAJDDFABC"],["@@@A@B"],["@@B@B@ECAFB@BA"],["@@AA@BB@"],["@@@@A@B@"],["@@A@B@@@"],["@@@A@B"],["@@BCAB@B"],["@@@A@B"],["@@@FBCDBDABBBBBABCB@ABDBBDB@DH@JABBDNEBE@CD@FCKKG@AEC@EBA@ACIEA@EDBB@DB@ED"],["@@A@B@"],["@@D@BCG@ADBBBA"],["@@@@@@"],["@@BAAB"],["@@A@B@"],["@@@@AABB"],["@@QCKMECAKH@FDD@FFDABAFBBHJBPZBDJ@BCD@BBHA@DF@HAAAEEDA@EF@DGF@BC@CGE@GFBLABBADBBDAH@D@@AEIBAFF@ADBDAGGAEA@EIBCLBBA@CDBBCHBBABCTKLFZHRJH@DASMQGGIOEGAGBaNM@eEK@EDKLGBCFEBAAAGGGEEEIIGAEIDU@GBK@IDUAIAEEEGCIEBEAAHM@AABC@EKCWOMEIBKJYCYGAB@ZDH@N@DGHBNCFFNEN@JBFMJBDNDFHFBHEDALDFAFD@KFAFDBFH@FHDBF@DFHAHDLABAFBBDFF@BAAA@@D@DD@@HH@LLDCJFFCJ@BABEFABBJAB@DADDH@BBB@FBDCPBFEJBFC@AFADC@IDA"]],"encodeOffsets":[[[117049,23071]],[[117017,23092]],[[117013,23092]],[[117010,23091]],[[117004,23090]],[[117009,23086]],[[117081,23081]],[[117014,23081]],[[117057,23081]],[[117015,23077]],[[117062,23071]],[[117020,23075]],[[117024,23072]],[[117021,23072]],[[117029,23071]],[[117037,23071]],[[116974,23071]],[[116957,23067]],[[117036,23065]],[[117043,23049]],[[117033,23064]],[[117035,23059]],[[117043,23052]],[[117049,23053]],[[117040,23048]],[[117054,23039]],[[116975,23082]]]},"properties":{"cp":[114.147404,22.496143],"name":"北区","childNum":27}},{"id":"810014","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@HGNA@ACGC@G@OFADCL@FDDJDBA@M"],["@@@EACUMIMGGGCE@@CACIEMCMISGG@CESIGKGEQGG@CBABALQTCDABC@GCK@EBCACAAKBAHABAB@HA@AE@@ENADBDLFBFABACGEEICG@ICQB@B@J@@GBAAEEAODERKMIGMAAUAAAUA@ACAAA[ASAAHABGAMBUAAA@D@FSPIRBJ\\hNFXPLD@FADBBN@BGFBFAHPDFHD\\BJCL@HAV@JCBFJHFJFFHHBHDBHGHALKFCL@fFN@bMLATHHJRHTN"],["@@CIEAEJBBBDBBBBHAFBEG"],["@@@CFABAAGCC@ECCEACB@HAJAB@FEDJJDBHABA@CAC"],["@@BAEBBBBA"],["@@^DLCFBBBBJFJNLH@DHN@NXJFFHPHDABABKDAFDDABGAEBCDBFFALDDBFDBDADIBIFOCCICAAAI@CDG@KJ@HEBBDJCBALDBFBBBDB@HBHHALEDE@IEG@EGA@EDIBYEGAIEEICADMFOLA@KEE@OHKHYDAC@KCECAS@CCAEBGGOK@CACIYCEAGEBLCH@JGJ@FBXCHDL@P"],["@@AEA@ABB@@FB@BA"],["@@@CABBB"],["@@BAAAABBB"],["@@BACDBA"],["@@@A@B"],["@@@DHBAEC@A@"],["@@AA@BB@"],["@@BB@CAA@D"]],"encodeOffsets":[[[117183,23086]],[[117087,23049]],[[117113,23039]],[[117114,23018]],[[117122,23021]],[[116998,22974]],[[117082,23017]],[[117084,23018]],[[117081,23013]],[[117180,23003]],[[117039,23001]],[[116966,22997]],[[117006,22983]],[[116968,22976]]]},"properties":{"cp":[114.171713,22.44573],"name":"大埔区","childNum":14}},{"id":"810015","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@B@@@C@BB@A"],["@@FIJBFCF@JDF@DDBEDBDEHACGDK@EFEFK@EGAI@CDILEBEAIG@C@EECCKBCJEFGFAJGAGDKEGDG@GCCC@CBCFC@AIGAACFEEACC@CEAGB@EC@@AID@KBC@CACCGE@ABALGLBFA@GGEAE@GJAFBFIFCJHN@JOFGFG@@DBHABCFKAAEDCACI@GBGAAFI@GJEBE@ECAEBICCCU@KJI@IGKIBAAHcDEFENAFADE@CDGDET@BCBEJGDKAIKEEEGAACBCF@DA@MHI@CACCAE@AGE@OLEHGBAA@CECCGEAEBITGDANHRGLCDG@QSEG@DEDADHPFB@BEJIJBFHPA@GA@JACCBEBGVE@ABG`@JBDB@ADBFPBPJLLBJRDAJHFFBZDFLN@HPAHBFDDT@DBDF@LBDZCLGPGF@LFB@PKNEBCJDFFBJFHAZCJ@FHB"],["@@A@@@B@"],["@@@@@@"],["@@AABB"],["@@BAC@@DBA"],["@@BAA@ABB@"],["@@@AABB@"],["@@@AABB@"],["@@B@BACEC@@DDD"],["@@A@B@"],["@@@AADBA"],["@@DC@CA@ADA@ADD@"],["@@DBFADBLC@MDEBIA@@GJAHGCCBEAA@CCA@CAEKBEBGACBEDEJAFHHAB@LABBDA@@AA@CBBB@DD@@DCDCB@JBBHA"],["@@@AAAAD@@D@"],["@@@A@B@@"],["@@HE@C@ICAA@AHAHCEEFBF@BD@FA"],["@@BACA@CC@@DFD"],["@@@AA@BB"],["@@BCFE@ACCDQCACB@FCBCLGHFFBHFDB@DE@AEBBE"],["@@@ACAAFFA"],["@@BA@@CBB@"],["@@B@C@BB@A"],["@@@AABB@"],["@@@AA@@DBB@C"],["@@ACABDB"],["@@BAAB"],["@@@@@@"],["@@BACA@BBB"],["@@A@BB@A"],["@@FADIFEAICAACC@ABI@CFBDCD@BCHFFLB"],["@@CEBEBACA@AA@KD@JBHH@@BF@BE"],["@@@@A@B@"],["@@@CE@BFB@BA"],["@@AB@FDC@AAA"],["@@DHFEDAFGACBCMBEJ@D"],["@@BADABAB@BCKBCFDB"],["@@B@B@C@"],["@@A@@BB@@A"],["@@D@C@@@"],["@@BAAB"],["@@@AA@BB"],["@@BAAB@@"],["@@@AADBA"],["@@@@@@"],["@@@A@B"],["@@AA@DBA"],["@@@A@B"],["@@@A@B"],["@@@AABB@"],["@@BAEBBBBA"],["@@@@@@"],["@@A@B@"],["@@BC@AAAEDBDD@"],["@@B@@AAB"],["@@BACKAAC@@JDDBBB@"],["@@AA@B@@B@"],["@@BCA@@D"],["@@@@@@"],["@@@A@B"],["@@@EAABAE@AAA@@JF@@FBBBA@C"],["@@@CCB@BD@"],["@@AA@GAAEAAE@@E@AJFLDDFADFF@@EEC"],["@@AFDBJBAADCDEACFEGA@EEB@FEDAH"],["@@JDB@ACDC@AA@ACB@@ADA@EC@@EAEC@E@AECAABBFIBED@F@DFHFDDAFF"]],"encodeOffsets":[[[117146,22985]],[[117119,22980]],[[117154,22972]],[[117153,22970]],[[117139,22942]],[[117137,22939]],[[117137,22938]],[[117033,22925]],[[117063,22925]],[[117066,22923]],[[117031,22921]],[[117064,22919]],[[117029,22917]],[[117054,22915]],[[117038,22915]],[[117048,22915]],[[117075,22911]],[[117036,22912]],[[117039,22911]],[[117043,22905]],[[117051,22909]],[[117044,22906]],[[117050,22906]],[[117074,22902]],[[117143,22898]],[[117036,22899]],[[117076,22898]],[[117116,22882]],[[117120,22880]],[[117102,22876]],[[117073,22876]],[[117119,22871]],[[117126,22873]],[[117085,22870]],[[117121,22865]],[[117041,22863]],[[117123,22866]],[[117118,22860]],[[117118,22859]],[[117118,22859]],[[117069,22860]],[[117077,22857]],[[117116,22856]],[[117068,22845]],[[117059,22840]],[[117059,22838]],[[117061,22837]],[[117066,22837]],[[117066,22837]],[[117061,22835]],[[117070,22834]],[[117061,22834]],[[117068,22833]],[[117064,22810]],[[117100,22804]],[[117100,22803]],[[117118,22799]],[[117120,22799]],[[117028,22798]],[[117095,22795]],[[117103,22791]],[[117097,22787]],[[117105,22856]],[[117111,22850]],[[117039,22789]]]},"properties":{"cp":[114.264813,22.314203],"name":"西贡区","childNum":65}},{"id":"810016","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@PGJAVDFD@HDBJBPA@OCKDGAYHM@IDGAKBIQCAIKKOIMACEBC_CIBECGDAABC@AUCKCG@ICeAICAAGHAL@FFJCP@FDHADLBFDLJDJRB@XCRBFHBBBDB@BVBBBXBHPNJ"],"encodeOffsets":[[116956,22970]]},"properties":{"cp":[114.195126,22.379715],"name":"沙田区","childNum":1}},{"id":"810017","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@AECBMBECGA@CDEPEBA]QDGBGj@@cUADF@F@DCFIFSJQTQBaASPEBGzTJvB@MHBLFDDDJ@FCD@@ZJHBBIJBBCCI@GDKEI@EBKHG"],"encodeOffsets":[[116892,22877]]},"properties":{"cp":[114.13918,22.363908],"name":"葵青区","childNum":1}},{"id":"810018","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@AIIGQCQ@GE@G@ICCGAAABCBA@GBGCA@ADOAGO@KBMLC@ACAEFARSDEACSGCEACLIL@DEPCBACEAECCE@AACEIECCKCMGI@KJGJEJ@FDLIBSGUAOOSEAABE@ECG_CSBUPAHGBICEOUMGCKBC@GCGGMCABDRGDAF@HBFEHAP@JJJH@BNRFDDBHEBICAH@DPHF@DAFFFNLBRFBHNNBD@HEJJVED@DBDZD@DEPFBAFCBAI[@CFGF@~dÚE"],["@@DC@AKE@ABADDF@BCFCAAIEG@CBAB@DABAFGDBBXF"],["@@BAAAC@ADDBBA"],["@@BCAAIBA@BDBDJB@CAA"],["@@BCCGGCGBABBHFDL@"],["@@J@FC@AAKFGCIC@EDADAD@B@BCBAAEHI@AF@BB@@DT@"],["@@CEMI@ABEHHFBHBHAFDFBF@BCLBDC@AGIK@OMDKJM@CAAC@YP@AHKAGAACBGHEGC@GBMDCD@HBDFDDDBXCFBNAHEBA@@IEAGCK@CNBDLHHD@BEBDFGD@DVJBBBBBCF@BECGACLGBEAADEDADFF@DE@E"],["@@@CEA@DDDBA"],["@@FEFBD@DEC@@CCAACGF@AE@CCBAC@CCCCCBBBG@AHH@DHH@DFADABE@CD@BD@DF@BABBDDBH@DBDB@E@AEAFABAKCAA@EDA"],["@@D@ACAACD@B@BDA"],["@@BAC@BB"],["@@B@BBBA@EACGAEFA@GDBHJJFA@CB@BCAA@C"],["@@D@BCBEAECCGC@BIB@CAA@FA@@PTD"],["@@DE@KG@CBAHBDDABFB@"],["@@BB@CAB"],["@@BHBB@CAEA@"],["@@BADBDABAD@BAAABAAAABABAA@CA@ADAAAB@DABCACCC@BRHCBC"],["@@@A@ACA@DDB"],["@@DAAC@@CD@BB@"],["@@ABBA"],["@@BAC@BB"],["@@AAA@BDBA"],["@@A@B@"],["@@BBBAAAABCAA@FB"],["@@@BD@DDCDBDDBDAB@FCAAE@@EBABEE@CAI@AACAGF@DFDF@DA"],["@@@A@A@D"],["@@BACA@BBB"],["@@B@@AEABBBB"],["@@DFPFBFF@BCFCFICCDEBIQA@DA@EC@ECCEAE@FJIBABD@@DCAABBJDF"]],"encodeOffsets":[[[116799,22849]],[[116787,22826]],[[116803,22822]],[[116823,22817]],[[116799,22797]],[[116780,22791]],[[116882,22747]],[[116881,22757]],[[116774,22741]],[[116575,22748]],[[116686,22746]],[[116733,22725]],[[117001,22721]],[[117036,22720]],[[117038,22719]],[[117053,22714]],[[116651,22714]],[[117053,22714]],[[116664,22710]],[[116665,22706]],[[116984,22706]],[[116645,22704]],[[116647,22703]],[[116640,22702]],[[116646,22692]],[[116656,22693]],[[116663,22685]],[[116998,22691]],[[117001,22702]]]},"properties":{"cp":[113.946059,22.286371],"name":"离岛区","childNum":29}}],"UTF8Encoding":true}
--------------------------------------------------------------------------------
/client/public/static/map/province/ningxia.json:
--------------------------------------------------------------------------------
1 | {"type":"FeatureCollection","features":[{"id":"640100","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@@CFGUKGQCMBSH[¯JSEGmUQBLYgSeHECWBUJgBGV[DAPHHBrDDAG]DG@[FBCV[VPGA[GYMYWu{sUoOWECCE_FgFDMAk¹FÅ`KY}WkMEGCJOTGJSLONW^OJja^[\\EFcTUJaDaZYLS^GJaRg^BLM@CDKAIBSBUH@H@BUJCHGF@DGLBDFB@BIFFFBDI@BFE@@BJTCD@BJBADHBzB\\FD@FCTBBBXVHRID@xIBaBA`EBw@MLADBFJDTV@B]TIP@FABQJUKA@M`GDCD@BH@BDADIB@JEFDD@DQLKFEDKVCPIJMHSFAFCFBD@HHXHHTJFH@LS^CJBHiHABGHSFDPCBKCOBIDMJIDOAEAAAMOGIGBArED]JFF@DAD[FAAEGC@WDADJJADGH@DNDADMD@DNFBDADIAAAWUICCCCKAEWUEAkRMBEHAG@GGOsLEGW}s`HRVj^xBDEJ`aJEFGJGDGLJLXFTHNBDQZ]\\K`GJIHAPIJCLBFFLV^@DGXENBVDNGJBFJHT@PL@DINCPKNCRJJ@NPPAJENBLXPJJBV@TCPIT@PFNBBVFBBDHBHADKHABAJCJOLARELAH@NDHJLNJJFFDBFCNBFFFNJV\\BBAJQ\\@FBDTLHJJDBBDL@JCNCFCDADFRFHBDKJGHAL@HDBVDFFPFLLR@BBAHBDLNDFFHVPNFFHDLTFXRHLDLLHBHN@jKZ@NAFAXUJ@PITIRI\\C^ADCBMDILGFEDANCxAJALEV@BKLCJ@`PPFJIHQBCH@VDFAZMJGLABOH@LBPLZBBAEI@CBGHGJAVBHHXENEfDRFBGKSAKnEAK@iHE^GF@JFNEP@FKMODQBEhNLPZ@NC^OALGLKXEjEr@@[EOKIbChM`GHGAgPKZY[ŅUco]oįÏ@ENOBEZEH@BCVGHCRQ^aRKYv[ZIVAhGPCRIvMfQRAZSVUbQVGKPC"],"encodeOffsets":[[109389,39080]]},"properties":{"cp":[106.278179,38.46637],"name":"银川市","childNum":1}},{"id":"640200","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@J{AQWËIO¥ue_]gkEKCCQWEKWYcq{MUěYZOLBhGH_HgNaDLJFP@\\q@iFWFKLKHB]PMDY@KOgMAFCRNPELO@MFIEE@]HGF@jBLmFBLLTAHQEeCMFWFGGUAIBGHAH@DFJABYAOKKAG@APKBIHYNEBUCG@ADGRIJOE_OI@KDALU@KFIBwBQFQRCFANAD{FQJSJOJI@WVEBMBY@iLM@@@GB[CKLOVCNANHNNLZRFBZRRZNN\\NLBPATLDJ@JJTFFLBHNLNDJBLABGHGFEHFHJH@@IFFN@RJZLNDVJLPLHJL^JNFJLR\\bVP\\FNIHMRORERAHAzENGJALFNHZHPHDDBJLTDLCPKVAR@JDfCLAVGVC`BFHJLHJ@ND\\ANDJA^LfH\\FLAVDNBJBPCV@`CPEbCRGBA\\GjGHBJHBF@LJF@LBDDBALFBDFCFR@NPJBFFPFDDBDHDFFDHLNHDJHJRRXDFJHzSPKJCjEV@LBXRpTVCLBTLNDD@DIDELAV@TALIFIP[@CIO@ELQPO@GIW@SH_COUaCM@IJGFKAICK@MLKXKXQHYHa^uLkJQXUVMlMFCDAFAFBHAF@VGFBHIHABEBIDCPBLKDCLB"],"encodeOffsets":[[109535,39993]]},"properties":{"cp":[106.376173,39.01333],"name":"石嘴山市","childNum":1}},{"id":"640300","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@IHKHCHIFEbI_FIAC]wUiGQt_X~FHtKHP@HBHFGNAlQFBXVBFDLDDJDXVBBJBBCACME@CNCBCMC@CHGBCIIBCXCD@FHBB\\EBC@CEE^IFCBqHAHJNPBBFBPBJCNIJCPALDDACOTEHGBAjGAGDIT]@KEGSIGGGW@GACDEBETENGJIDOLUFCLERK@CCCFE@IJABCACG@@ADCHCN_B@VLRIBA@EJO^S@ASUICAEBCNKx@FAB_bAJA@wJCGQWUAASAEDC@[EyAGABCIA@ADCIS@AF@AEJ@ACEEJE@AEAACHK@CHEDGVI@A@GVGTAJALBDCN@AKh]bQHIT]ZKbYbCVIdSFE\\[b]iPIX]PMTKHIPSDIFHlN~XLZÆ_ºEBlCNEEhF`DDXFpPtV|XvNZHZB\\HUOU\\ADE@\\CHH^CBqCGAOGCBU\\AHIhAVDXGFTfZhKRAnVFHIT°G\\ATDNHRVLEH@DQZIVER@bMQ°Q`CDLFBJALBRGJAN@DDPNDHLHFAJGTGB@FHDBF@HCPDTCJDHDBNDJLLJLDBHAHIhETADBLFD@DCRODGXQ^GFIJOPK`IbEVK`AN@XGXKFEDGPUPKLEDOBC^UPOVaFCLAjENCFCDE@EJEBAo
KYBCNK~ORR`Ff@HELMf]uÜkVMJCLID]SqG]KSggK@KDGNEDEJC@KCGDBLEBGCIG@ABCJELBF@@A@EM@YMg@{GoMIKG]DYCWCMGOMMYQOCI@mII@EBUNIBgCEKJ[zIJAA[CCgHEAomCCQK@CDGGEGCOGeBCCGA[HhsXEtNHIBGEICOCECSESEKIGESIK[UkYGC]IMMCG@SBm@ISESSg@MBCDWAIIOAKFI@GHWL[FKLILEBCJCBEDB@EDC@AFABCAAHEACDEBB@EDABKDAACBEACBA@C@CAAE@SFGBOGUCEC@C@EJGXM^URIFEJB@EFCBCE@FCD@BCBGDA@GFAACDA@EFAACDAACDEBEACDCEABEB@@AGEFCCEBAAABCEADCGCBCAE@EIE@CCCEKECC@AC@CG@BGIMKRIFADCAEFADCFEF@@CBBBABAAGFEACEHEBM@@KACEHAHDD@@AGCBKHGJE@AMFGAKDgNEAIKME@DCFA@@DC@GJCBADGBADC@CDCD@BGFCFGBADKFEFGDORUGK@UCE@KCI@KCCAGCAAEAECGACBQE@COKEACFGDGLE@IFG@IAGCCCC@SHEFGAQPGBCDIQ@ABIDCBGDGAQC@ADGFE@QFICIJQFIGDAHCBGJCCCCAIDM@UFKBODAD@HINWTKDEDGDADKDABM@SJKCAA@GKECA@CZMB@DBNADMDCUA@K@CHCBEAAE@K@CAGEACBGGAIHKLUPWCG@]XGFCCIJEBIJCFEFGDS@UNADCDEBCA@BGDCAE@@@DAEAD@DCFE@AEEC@CL@AEA@CCMEABECC@CJQDE@CKKCGIGGIDENGEIASA@KHGJCJDFCFIBKACFBHACCAMJ@NDJABIAQAKDQGGDGHGNAAKKISECGACFALAHEDCBUESIGTK@GFOFEBCAACDGEFA@GCCCBAHIFM@EJMFQFGDAFMLANQHS@EAEBC@CDEBOFGACBGNI@KHEHCBCKOECQJE@IADE@C@AHIAECEEODKGMBKFKMB[GCDEAEBOBSJCDACGG@K@EDEBMDGGAGCGCGAIDGLCFBBH@FCHDUVBDCBCDGBGFQPGPGFC@ACAIFG@GNOHMFEECAECIBELGFBHIPCDDNALIFINANCHKFEBIECCEFK@CCBIFAABC@CFGHEACDABEHLHBBHNFD@JEDELG@AAAGBECAAFEBCHE@ECAKFDE@AEAGECBAAJE\\K@ACAFGAC@GAE@GGENAJBACBCBCPIBEC@AC@CDCAEE@ECEFA@AABIE@CA@CFC@GAGEE@CEB@EAADACCDCAA@A@CBG@ECC@KCEAGK@AAJOCKD@@GFEDADEJABCBAAAEAKFECA@a^@@ACCAAIKNCHG@IL@FCBG@EKAAEBMDC@@A@EEEDICCG@YJA@AIAAG@EAABCAAIEBIHAC@GIEGEKAEEJK@AD@DCBEBCLWC@KDAC@AGACFA@CDAACBECEB[KAC@GBIHOCOHKDK@CG@@AC_SC]MKBEAEFSDEACBEBKRCBAA@I@ASGACEDI@MISDMBE@ICHG@CACEEO@QCyQ]KUBEBMTCHOBKAOGABCNUJIDCC@C@GMKC@EDQFIB]EEACG@M@UBGC@IJUBYCWOEA]RCVGNLZAJgjYLAZW\\A`y|SlHd[VU\\cXD`E\\qd[CMJOEIF@H\\XILBX_TCTKHI@AJJB@HiZAREBK@CA@I@A]QGAECEBCFEBC@IELQ^[@IIIKEDGIMOQIEKECCBKACCCSCCA@GGE[GECCO@OCOIEEACBCN@NCJKJODKAOEKGM@OAOBGJC@WQECA@ILBBDHGPCNAZ@JDHJBJD@HEXBH\\^ABGLQJOND@HEDBJAHCFETCAHBFLJJDJ@BJDFBBF@HFRJDDJDHHPDLJDD@FDDALBDADDHBBB@NHD@FDF@MNÔ]rED}@MJspIF]H[NOXKbAJFFBH@RCFEB@PADCDmAGAkPWBIA[@IBKHCLMJSDHDT@LBDBBDFB^ARDf`LFLJZZfTJLFDB@HGBCGAAA@ADCBIHCHGHUFK@OGEACAGEGACLEBEDC^WJI@IZBX@LDL@FD`BNDNJADE@CHBDBDFADBDDADKHECCBAFBFADB@DCD@@BABOJDHF@@BEFMHCAGHBDABDDGDBLED@DCB@BCD@HAHQZGH@BjNNBZHLLLBJFDNBBŌUPHPRDJBF@HGHKHKLWLU@aRWDIDoZKHADDFDRDBDBhG^@DBAHSb@BPPNFpJD@LGDCB@FDL@DBFJAZLB@ABEBBDEABDE@FFE@@DEB@DGFABA@BDIECDE@ABC@AFPDJAR@NHHALEH@HFLBLNBLDJBFDBNLNFFRFDF@FCL@FFBDFDVFLADBBBIJGFMTOHYBMHEJDBDAB@@BsrILEN@DDPJHZAHHCNAJBHFH@JALEDSFIJCB_@KDEDEBW@OCM@SHILEDE@@ABK@EAIIOKGGMKMEMAMAAAAkBABFHRN@DKRCLMH@DDDBD@JCDJPFXBb@fVTFFCXABMEUAcHW@QUGD_HGBICQDUBQDG@UKWIM@Y@qHGCUCKCS@OAaIUIEIgEgAFHHX@LrHDNDL@JAREdCNGL@tPTFNJhJNHRHXVN`DPFJFJXXLLDHFTC\\EREJCNAjBNBFXlX\\P`PVBNCHCDMXUXS\\_`YdQpG\\BPAJDPDrFRAHBPLXDH^^LFLDXJZNRNBLTf"],"encodeOffsets":[[108394,39184]]},"properties":{"cp":[106.199409,37.986165],"name":"吴忠市","childNum":1}},{"id":"640400","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@AKGACBBDABD@BDDDDA"],["@@AGBAC@EJBHHG"],["@@@@A@OLBPAHBBB@JKHC@AEIBI"],["@@NABFjVRPVNXNJLDNBDED@BCVCFI@O@CJGLEJIFIAIFAFCLEDGFAHK`WLKNI\\EH@LDTZPJXDXAPADBFHHDJ@TIJOLWYUKEGIDEL@LHHDJ@JCPBPFH@JCFKBMBCJEDBRNVXRHPLJ^LRRVRLCPALBJBJDDr@tEX@JC^Q^MZCR@E^AbMlQ`UlIPBHFHNDDBBHCLBFHH\\C`GHJBJJJ\\@fLFAJEVIDBBHBFJ@DALO^OH@NLLDJB^@bN`HPFZDFDFPFHpffTFBF@\\CJBDFBJNjBBJGFANBJHF@NCHBBBAVBNDNHRPX@BA@KKEAC@@RCXADEB@FBFJDLFPBBBJLDPVADDDJHHLFF@LFH@HA\\IR@PHDDAFNCHELBJFB@RSXUHAJFHGFDDAF@FCBMLMH@BDF@CFBHDHDBPS`GFCBCCIFG@CCGAKGIKCKKAC@CEK@AHAHEDG@GGCCICDE@ALKBAIBKAC@IGGBAHCXFHCLQB@FHFCJABCCEACBELEDEAECAI@MHODCBCCBUACC@CECAB@AA@DEBKEBAAA@HIDANIBKAGDI@CCAINIDCNKPIFCHCCGDAAOCAABKNOLSBGFEH@FIHADGDADIFBDHLBHCLKTGJKDAHLHCD@DBHFFJAFDD@FELBFCHDH@DJEF@PEDBBCHFF@@IDI@AD@DABCDCBEDJF@@DBDCH@JDF@DFFD@B@DGBAB]DEFBBFF@FKD@LGD@HCD@BLDTHHB@HEEAAC@GDMAIDGLCDBBRD@LGHDDHNBBB@AHAADABHDHGFSNQBG@ID@BEDAJB@CDCLGBFDDTINJ@AFIFC@DFAJMRIBABABBDCDB@BD@DED@DCBRBDD@PKBPHBBAJCFGBEDABCHCDABHDDADLDDDDCFB@CJGFXFDLQD[AB@CD@DEDBFC@@ADBDBDF@HADBAC@CJIFIBQFEFCDED@DDDAFE@CJMF@DDJBBA@CHGFKHCFACIEGDECIACFGD@BDDGBAFBCK@CDFDG@JBJDBHLFB@AAMAG@AESHEHDHPHHDAHEIG@GAABMABA@A@AAE@PMP@DU@B@FDC@FDABC@GCGDC@IDAEAGB@@DB@BM@DGAEBBBAAEMCCACC@GACBCFABBJ@CEE@@C@@AK@WECQC@GAEAM@GFCDCRAFENBAGCABOCGGGQEGKAAEDA@AKIEEK@]ACC@EDAF@JDD@FCDEDACEBGCA@BHADA@CCCDABAAHUBKFGFCJCDBTCFPDDFBHAH@FFHKBGDC@CGQGFEACEMGMDCDGDGI@CAAEBBO@IG@IHIDE@MESSA@CDIAEDA@BCECDCDI@EQIE@AA@CFGJCLATCB@BHBBHEDE@EDEAEEDCBCFE@GG@CF@BCJ[@ABBABBJD@DCAOBCTU@CJGDEDATJBADCJSEE@CBARABE@CCCICA@EFCBKAGBEDGAAEDCFBD@BSDAHBBAEABAHBBA@KECHKGB@ABKAEEAMNCAACCOBE@AWBA@DJ@HCDQJE@C@EE@CBGCSB[CKCAGBMJGBMCMBCKCBCJEDK@EAAC@ELQAAEDEEFC@EEKKKIEIBEFALABECCAED@DC@AAA@CHGAAAA@EFIE@B@JCBEAMIC@AFE@AABICWDEKGAADEJDD@DKAEGAIDE@GCAAEFAECBAFA@GDYTiVIJAJA@CCE@ABHH@BEBKCAIEG@AFK@AKF@GEBEGI@CBELCB@IAAI@CBCDOFKPCDADCX@HCBC@EECK@ICAAB@PADE@AHABG@CA@E@EFE@CAAGGC@KDO@EHK@GHCBS@KDKAWDE@AABK@QAACHEVK@IEK@GBSAECBC@AKEDC@ECA[EMCU]EEIMEAE@MG@YBGFG@ACC@CBCLDB@BQFGBETGCIGEAGDELGJIBCAI@OBAFCDCJ]AGDCJEBCA@EAKDMHG@A@IWEQCIACFKCKDABEMEMO@AFMLADCCG@EVIFEBKDGAUJCNDH@LDD@BECSESJAIIAGBGHGR]BOHEBA@ACCKSEUBAFADICG@KJIBECEBAPMAAG@KKIBACCQEGFOAAIGIMECEECCQEK@@CCAQKACEAADE@CAAAKEEKGECKGEC@IHC@GGWCKGULI@ECAEDKLQBKACIEACKIK@CBEFANABGDUAKHGNEDGBADDN@HMJGLIAIBCDAFEDIFGF@FBDBHOTITMBK@EBKLCTGHIHAHDHLHBH@FKHG\\@FANCRS@QFC@CCOAM@KBEDCHEXC@@CCACAAD@PADIDECCOEMQG[[SKK@DGAECEAKEGBCAEC@CDE@ECACHMAEI@CBCHANGN@FFFBDABMD@FFH@FABY@KXDFBHMRDJ@HEJ@F@BGBADD@BAHF@BCDE@GHDJBFCRCNAB@JDDLBHAH@BBH@DJBBLDDB@FADGHCDQBICEGBGCOCCC@ABCVCBAA@EAAE@CBEBCAA@@CYCSCSAEBAD@JKJADBBH@DFATCDG@CACEC@OLGDQBIDC@EBUA]JU@[FQBMFGFCDC@KCM@GCBGAIUBIHGSAOCMCCGCGYIOEAC@KJAdALFJADAD@NANCDSIADFHFF@DG@CJADFJEHAJELMIMCEECBOREHMH@BEF@DB@J@DD@DGFDBABGFODI@GBKJBHCBIACFBDHBJ@DD@HHNADGDCACEAGGEQF@FFPAFEDG@IAEEE@KNABE@CB@BADFPHH@BAHBDDBBD@DEJGDMBIJYEABBP@DAJJHHDJCDBBFHHDNFHJJF@BCAGAAFKBUBEH@LCFBHLLJFJDBBDFPAFEFKCEFC@GEAICAEBMPEBK@CBEHI@EAGGWHAB@PABI@C@AC@KAAC@EBADAJAFABG@@AIAIEEBCEG@CCMAECACG@@CEAOGaEMECC@CBCACSBICMDI@@CFMDG@GCKGCEGC@CFCPNVBJCJILEBWDQKC@KJE@WGKGC@GHE@IACFCBSBGFAFG`ADABGDEAKII@@PDJDXAFSLMCEBIPCtALCBEAIIA@ABANADC@IASQGGO]EEEBABKTBDVX@BKEE@CBBFDF@DEVGNAD^TLMHABBBDBLCLGHKHMHICGBKDMLCEKAQHORKZAHFFFDF@FADBENAZCFQNAFBDDDBFFFF^ANDNCjFFD@AB@BH@@PBDEFBFBBABDDAFDDBHFAFBDANFDAJ@ELCB@DFLJJFABHLJH@DBDCDLDEBD@RBDJ@FFLIDBT\\HFFBLVJ@DABBB@FIBHH@FBBCDABDJHH@DABCFEBBFCDBDABDB@FEDBHABBBDFAPfBB@FENPCBJDLNPCFQLGF@LKFBFENGPBFAF"],["@@AIAAABCHI@EB@F@F@BCBGJAFCBEAGCCEMAAA@EOK@EFI@CMIC@ABBHAFOJAADGAOACQAKCEAACBCKCCACAABELABC@EGO@AC@IA@A@IFQBCCGGE@EAMCCCO@KGCDAD@JELAT@HBJDHJF`DB@FGH@HBNHLJJ@PBFFL@NFHHJBFCRHDDBBF@FBJ@D@NHF@HANDLJFBPCFDFBTBFCBECEIMAMFIEGFI@A"]],"encodeOffsets":[[[109061,36594]],[[108620,36306]],[[108619,36271]],[[108021,37060]],[[108600,36305]]]},"properties":{"cp":[106.285241,36.004561],"name":"固原市","childNum":5}},{"id":"640500","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@BECCOGQ@cLG@KEE@KEGGCICCUBCOKMOAKEICAIHGDW@QD@FBLLB@@AOWGQCMAMBUAAGAMDE@IGMAEBIHAAMiAICEIA[DE@EAeSoeEGEOECYCOE_GaM]@IAKCMKG@]PKPCBI@AEAGCAUJIFEBeK[@IIAIGI_H[DGGAEDKAGCAMCEGAGJOVkR_NkBaF]Q@YD]N]RIDW@sFq@CCAIAIBKDOQKQUKQI]OKQGUWQMCAIFADANELIDG@OEOAIDI@GCKGK@CFHJLFZVKXIPSJI@GCEGCAOBWBWCOISYKCG@[FMJKL_XGLEBCHKFEDEBBJEJIJKFIH@D@PEJUDADC@CFMAKCMIWUMQOiUAEMBGJ@LEAABBJ@FEHEBADIFKDGFEZBHHHHPENGJ@HDDJJL@DDFR@LGNIJOJCFCFAPABQFU@EFMD@PABEBCDADDFG@ADC@EDAFCDBBABEBAF@DELB@X@FD@DFHINWBA@In@LFX@HCBIFGFAFED]G@IAAABIJAFBFLX@JBFCDELBLDFAJCNGPYVIJMHCHQNINC@OEECIKCAC@EDMBGAKECHEAA@CFAFEACBEFA@EAEVQDHNTJF@JHH@DBELDLAFIHGPBBHFAFONUCKXE@@B@V@BO@CBAFE@CDGACBADFFAHFJBTFJEJa`M\\@JAHBDFJFDRdTJJCP@BDAJ@DBB^@^EFB@JHJ@DBBNCP@NCRMH@RBTRHVHBHD@FI^@LCN@JCLIAOHQNKFIJCF@LGDCB@FBBF@BHeTBBBHAL@HADGB]VWVEEC@ADFFIFEEE@OOCDALGEEDUJGCGDAEEAECBEC@BC@AYLFLGBBDHCBHC\\IZTEEF@BDB@HADBJGDBDGDCRBFEHIDCDE^@ZODUAOBS@ODGBMB_LGFOFOBQJOJKEG@MMEKAAK@EDCDaNF^SHYAEHAACGA@YCEAGBUR@~ANEHEDaF]TCFHR@DAFINEDIHMDBBAB@BDBCFDD@HBDGAEH@FGNCHIB@DIHYLAB@LADIHADBfEFBDADOJ_LKLABMBO@IJCACCKCEAAFCBAFGLUJSOOAMEEKICIIMECGWMW@YGKBGEIDI@IAIJA@AAACICUBECGAMBIFCNKHGJGDShAD@PHTLPDHADFDJBHAFF@JKLBHHFPBZQH@H@JLNFBXLJNFH@N@\\VDBPCDDBHFHAXG@UIMBIFSFODIDM\\AHBFHHDFDJBTBDPJBFQH[BGDCDSDGBQEQ@GDE@KNEBqB_FUGKAGCKJGBEDADSDGICAI@EGOGOAMDgEMBQJGVOTC@KCsKIEQEIIUCGIKCiD
KYAUP@N`\\hNJ@PIJ@bLPPNHjA`HFdR~VAFHĤHâHþRîNJBv`X@lLĈNbN¢xjdDDRFJ@VD~\\nLVLNLbPTD^B`JbDbPhNR@L@^F`BZF`APDHBXC\\CfQpEHBhApBh@¨H^@JDLJhBhFFJVJbJPBT@LDVDHDrGZ@N@XJVLH@RCVARCJDHA`GHCRVX@dGVBNFBADWEEUS@eAaEWIODC@IACCC@CNGDKLQ@CQMEGBAlABBBBBNFNLNHNLHJPBJ@FAL@BF@FCJKTGN@PDX@FAFCLC`@DAJITEFCBK@IEGAGBIDMGGYBIGCO@CFMJKtq@AA@CBCAFINGZAPGNSHEJIAACAKBUEECACEEK@EDE@ECEQMEMKCAAECIAKKMKAGEG@KFGBMGQ@IBOCBED@BAF@DCJFACB@BAHE@CFA@CF@EEF@ACFBACFABAA@KBYEICAK@ECA@CDKHC@oIMEOO@ATaBGCA]@gHCACACQCEBCTMhSJCXCbQV@XKDCTOHG@GEOOQOGŋVAACMIEKAKKYGMAiM@AHGRYBG@GDC@ADA@CFCAKHCCCBAACHGDBNGFE@AE@CGPIBA@AC@CDA@BCAEBEDAFDLGBCCCCAEBCEDIF@BCMIMC_AECK@KCW@YA@JIJ]XCDAFKFBDFHBHBDHF@PELGVGHGDAJCD@BBBHBADGHA@ECIKeSYYKIKEe_QC]BEAACCAKAS@GCTCNIDKLGJA\\@JBXAlOHBnBDCBC@OFADE@QAGEEBILaPW\\M^GJEtoNI~@FC^qÓNME@ECC@MGA@AACGBCACBKCC@ECCKIOCGGICCCQIGEE@AACEAII@ICKIAEBGSDEFGDIBCAGFC@PMRIHKBA[]AGFW@GICIACG@IBYDMHOCGAAJKB@FDXRD@HIPAPBN@LHPFLBPCLIDI@MDMDAFBJFDP@PDPFD\\HHF@HDBTDDDBDALDDLFJFPRJNCHLFJJ@J]\\KRJFD@FADEFAFDLBPNJD@B@JDBL@FABQjY@GIABIJ@LGDS`SAWJK[W@GJEPFNI\\DrcF[C_dWV[\\UGcTkz{B_X[BYZKhiBIKYHMDU^QFBXPZDVAJID@AH@V@NDHFB^FJAREFCD@NL@H@DDDJCVIDMBAPHLBPADGNSFAVA^LzRRDP@FFBD@DGHJDF@NATCNJJ@FCBDTH@B@JDBNSFAFABCBO@ECC@EA@@KDEDCL@FEFABCBEHC@CNEM@QEM@@ABAJCHIAECAAIO@EEKFQASFCBADSPWJ@ADCACAGEIDGEGEDIJC@INKFEHC@CBA@BEEA@ETY@QXGNFN@JCJM@EJCJEDICAAEIE@A"],"encodeOffsets":[[108965,37396]]},"properties":{"cp":[105.189568,37.514951],"name":"中卫市","childNum":1}}],"UTF8Encoding":true}
--------------------------------------------------------------------------------
/client/src/assets/font/iconfont.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
60 |
--------------------------------------------------------------------------------