[
  {
    "path": ".browserslistrc",
    "content": "> 1%\nlast 2 versions\nnot ie <= 8\n"
  },
  {
    "path": ".editorconfig",
    "content": "[*.{js,jsx,ts,tsx,vue}]\nindent_style = space\nindent_size = 2\nend_of_line = lf\ntrim_trailing_whitespace = true\ninsert_final_newline = true\nmax_line_length = 100\n"
  },
  {
    "path": ".eslintrc.js",
    "content": "module.exports = {\n  root: true,\n  env: {\n    node: true,\n  },\n  extends: [\n    'plugin:vue/essential',\n    '@vue/airbnb',\n    '@vue/typescript',\n  ],\n  rules: {\n    'max-len': 'off',\n    'new-cap': 'off',\n    'no-continue': 'off',\n    'experimentalDecorators': 'off',\n    'consistent-return': 'off',\n    'no-plusplus': 'off',\n    'guard-for-in': 'off',\n    'prefer-destructuring': 'off',\n    'prefer-promise-reject-errors': 'off',\n    'camelcase': 'off',\n    'eslint-import-resolver-typescript': {\n      'extensions': ['.ts', '.tsx', '.d.ts']\n    },\n    'space-infix-ops': 'off',\n    'import/prefer-default-export': 'off',\n    'no-restricted-syntax': 0,\n    'no-restricted-globals': 'off',\n    'global-require': 'off',\n    'import/no-dynamic-require': 'off',\n    'import/no-unresolved': 'off',\n    'import/newline-after-import': 'off',\n    'import/extensions': 'off',\n    'no-param-reassign': 'off',\n    'class-methods-use-this': 'off',\n    'linebreak-style': 'off',\n    'no-console': 'off',\n    'no-debugger': 'off',\n    'vue/attribute-hyphenation': [\n      'error',\n      'always'\n    ],\n    'vue/html-end-tags': 'error',\n    'vue/html-indent': [\n      'error',\n      2\n    ],\n    'vue/html-self-closing': 'error',\n    'vue/require-default-prop': 'error',\n    'vue/require-prop-types': 'error',\n    'vue/attributes-order': 'error',\n    'vue/order-in-components': 'error',\n    'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',\n    'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',\n  },\n  parserOptions: {\n    parser: '@typescript-eslint/parser',\n  },\n};\n"
  },
  {
    "path": ".gitignore",
    "content": ".DS_Store\nnode_modules\n/dist\n\n/tests/e2e/reports/\nselenium-debug.log\n\n# local env files\n.env.local\n.env.*.local\n\n# Log files\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Editor directories and files\n.idea\n.vscode\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw*\n"
  },
  {
    "path": "README.md",
    "content": "# vue-ts-admin\n\n  > 一个基于`typesciprt` + `vue` + `vue-cli@3.4.1`的中台管理系统\n\n## [演示地址(https://vue-ts-admin.cqmimi.club/)](https://vue-ts-admin.cqmimi.club/)\n\n### 特点\n  1. 基于`typescript`, 代码更加健壮，出bug几率更小\n  2. `tab`缓存页面，可以同时打开多个路由，并随意切换和关闭\n  3. 基于`ant-design-vue`, 美观大方，简洁明亮\n  4. 响应式架构，在移动端可以正常使用\n\n### 持续更新中\n\n### 项目截图\n\n![perview](/perview/vue-ts-admin.gif)\n\n\n![perview](/perview/vue-ts-admin-mobile.gif)\n\n\n\n"
  },
  {
    "path": "babel.config.js",
    "content": "module.exports = {\n  presets: [\n    '@vue/app',\n  ],\n  plugins: [\n    [\n      'import',\n      { libraryName: 'ant-design-vue', libraryDirectory: 'es', style: true },\n    ],\n  ],\n};\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"new-vue-ts-admin\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"serve\": \"vue-cli-service serve\",\n    \"build\": \"vue-cli-service build\",\n    \"lint\": \"vue-cli-service lint\",\n    \"test:e2e\": \"vue-cli-service test:e2e\"\n  },\n  \"theme\": {\n    \"primary-color\": \"#1DA57A\",\n    \"border-radius-base\": \"3px\",\n    \"border-radius-sm\": \"2px\",\n    \"shadow-color\": \"rgba(0,0,0,0.05)\",\n    \"shadow-1-down\": \"4px 4px 40px @shadow-color\",\n    \"border-color-split\": \"#f4f4f4\",\n    \"border-color-base\": \"#e5e5e5\",\n    \"font-size-base\": \"13px\",\n    \"text-color\": \"#666\"\n  },\n  \"dependencies\": {\n    \"ant-design-vue\": \"^1.3.7\",\n    \"axios\": \"^0.18.0\",\n    \"babel-plugin-import\": \"^1.11.0\",\n    \"body-parser\": \"^1.18.3\",\n    \"chart.js\": \"^2.8.0\",\n    \"constants\": \"^0.0.2\",\n    \"cookies\": \"^0.7.3\",\n    \"extract-text-webpack-plugin\": \"^3.0.2\",\n    \"js-cookie\": \"^2.2.0\",\n    \"jsonp\": \"^0.2.1\",\n    \"lodash\": \"^4.17.11\",\n    \"mock\": \"^0.1.1\",\n    \"mockjs\": \"^1.0.1-beta3\",\n    \"moment\": \"^2.24.0\",\n    \"path-to-regexp\": \"^3.0.0\",\n    \"q\": \"^1.5.1\",\n    \"qs\": \"^6.7.0\",\n    \"vue\": \"^2.6.10\",\n    \"vue-amap\": \"^0.5.9\",\n    \"vue-class-component\": \"^7.0.2\",\n    \"vue-property-decorator\": \"^8.1.0\",\n    \"vue-router\": \"^3.0.2\",\n    \"vuex\": \"^3.1.0\"\n  },\n  \"devDependencies\": {\n    \"@types/chart.js\": \"^2.7.50\",\n    \"@types/js-cookie\": \"^2.2.2\",\n    \"@types/jsonp\": \"^0.2.0\",\n    \"@types/lodash\": \"^4.14.123\",\n    \"@types/qs\": \"^6.5.2\",\n    \"@vue/cli-plugin-babel\": \"^3.5.5\",\n    \"@vue/cli-plugin-e2e-nightwatch\": \"^3.5.1\",\n    \"@vue/cli-plugin-eslint\": \"^3.5.1\",\n    \"@vue/cli-plugin-typescript\": \"^3.5.3\",\n    \"@vue/cli-service\": \"^3.5.3\",\n    \"@vue/eslint-config-airbnb\": \"^4.0.0\",\n    \"@vue/eslint-config-typescript\": \"^4.0.0\",\n    \"babel-eslint\": \"^10.0.1\",\n    \"babel-plugin-component\": \"^1.1.1\",\n    \"babel-plugin-jsx-v-model\": \"^2.0.3\",\n    \"babel-plugin-syntax-jsx\": \"^6.18.0\",\n    \"eslint\": \"^5.16.0\",\n    \"eslint-plugin-vue\": \"^5.2.2\",\n    \"less\": \"^3.9.0\",\n    \"less-loader\": \"^4.1.0\",\n    \"typescript\": \"~3.4.1\",\n    \"vue-jsx-hot-loader\": \"^1.4.0\",\n    \"vue-template-compiler\": \"^2.6.10\"\n  }\n}\n"
  },
  {
    "path": "postcss.config.js",
    "content": "module.exports = {\n  plugins: {\n    autoprefixer: {},\n  },\n};\n"
  },
  {
    "path": "public/canvaslayer.js",
    "content": "/**\n * 一直覆盖在当前地图视野的Canvas对象\n *\n * @author nikai (@胖嘟嘟的骨头, nikai@baidu.com)\n *\n * @param\n * {\n *     map 地图实例对象\n * }\n */\n\nfunction CanvasLayer(options) {\n  this.options = options || {};\n  this.paneName = this.options.paneName || 'labelPane';\n  this.zIndex = this.options.zIndex || 0;\n  this._map = options.map;\n  this._lastDrawTime = null;\n  this.show();\n}\n\nCanvasLayer.prototype = new BMap.Overlay();\n\nCanvasLayer.prototype.initialize = function (map) {\n  this._map = map;\n  const canvas = this.canvas = document.createElement('canvas');\n  const ctx = this.ctx = this.canvas.getContext('2d');\n  canvas.style.cssText = `${'position:absolute;'\n      + 'left:0;'\n      + 'top:0;'\n      + 'z-index:'}${this.zIndex};`;\n  this.adjustSize();\n  this.adjustRatio(ctx);\n  map.getPanes()[this.paneName].appendChild(canvas);\n  const that = this;\n  map.addEventListener('resize', () => {\n    that.adjustSize();\n    that._draw();\n  });\n  return this.canvas;\n};\n\nCanvasLayer.prototype.adjustSize = function () {\n  const size = this._map.getSize();\n  const canvas = this.canvas;\n  canvas.width = size.width;\n  canvas.height = size.height;\n  canvas.style.width = `${canvas.width}px`;\n  canvas.style.height = `${canvas.height}px`;\n};\n\nCanvasLayer.prototype.adjustRatio = function (ctx) {\n  const backingStore = ctx.backingStorePixelRatio\n      || ctx.webkitBackingStorePixelRatio\n      || ctx.mozBackingStorePixelRatio\n      || ctx.msBackingStorePixelRatio\n      || ctx.oBackingStorePixelRatio\n      || ctx.backingStorePixelRatio || 1;\n  const pixelRatio = (window.devicePixelRatio || 1) / backingStore;\n  const canvasWidth = ctx.canvas.width;\n  const canvasHeight = ctx.canvas.height;\n  ctx.canvas.width = canvasWidth * pixelRatio;\n  ctx.canvas.height = canvasHeight * pixelRatio;\n  ctx.canvas.style.width = `${canvasWidth}px`;\n  ctx.canvas.style.height = `${canvasHeight}px`;\n  ctx.scale(pixelRatio, pixelRatio);\n};\n\nCanvasLayer.prototype.draw = function () {\n  const self = this;\n  const args = arguments;\n\n  clearTimeout(self.timeoutID);\n  self.timeoutID = setTimeout(() => {\n    self._draw(...args);\n  }, 15);\n};\n\nCanvasLayer.prototype._draw = function () {\n  const map = this._map;\n  this.canvas.style.left = `${-map.offsetX}px`;\n  this.canvas.style.top = `${-map.offsetY}px`;\n  this.dispatchEvent('draw');\n  this.options.update && this.options.update.apply(this, arguments);\n};\n\nCanvasLayer.prototype.getContainer = function () {\n  return this.canvas;\n};\n\nCanvasLayer.prototype.show = function () {\n  if (!this.canvas) {\n    this._map.addOverlay(this);\n  }\n  this.canvas.style.display = 'block';\n};\n\nCanvasLayer.prototype.hide = function () {\n  this.canvas.style.display = 'none';\n  // this._map.removeOverlay(this);\n};\n\nCanvasLayer.prototype.setZIndex = function (zIndex) {\n  this.canvas.style.zIndex = zIndex;\n};\n\nCanvasLayer.prototype.getZIndex = function () {\n  return this.zIndex;\n};\n"
  },
  {
    "path": "public/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n    <meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\" />\n    <link rel=\"icon\" href=\"<%= BASE_URL %>favicon.ico\" />\n    <title>vue-ts-admin</title>\n  </head>\n  <body>\n    <noscript>\n      <strong\n        >We're sorry but new-vue-ts-admin doesn't work properly without\n        JavaScript enabled. Please enable it to continue.</strong\n      >\n    </noscript>\n    <div id=\"app\"></div>\n    <script>\n      window.HOST_TYPE = 1;\n    </script>\n    <!-- built files will be auto injected -->\n  </body>\n</html>\n"
  },
  {
    "path": "src/App.less",
    "content": ".ant-table-thead > tr > th, .ant-table-tbody > tr > td {\n  padding: 12px 8px;\n}\n.ant-table-tbody {\n  background-color: #fff;\n}"
  },
  {
    "path": "src/App.tsx",
    "content": "import {\n  Component, Prop, Emit, Vue, Inject, Provide,\n} from 'vue-property-decorator';\nimport { LocaleProvider } from 'ant-design-vue';\nimport zh_CN from 'ant-design-vue/lib/locale-provider/zh_CN';\nimport 'moment/locale/zh-cn';\nimport AppMain from '@/components/Layout/AppMain';\nimport Loader from '@/components/Loader/index.vue';\nimport './App.less';\n\n@Component({\n  components: {\n    loader: Loader,\n    'a-locale-provider': LocaleProvider,\n  },\n})\nexport default class App extends Vue {\n  created() {\n    this.isMobile();\n    window.onresize = () => {\n      this.isMobile();\n    };\n  }\n\n  // 屏幕width 是否 < 768\n  isMobile() {\n    const { isMobile } = this.$store.state.app;\n    const body = document.querySelector('body');\n    const bodyWidth = body ? body.offsetWidth : 0;\n    if (isMobile && bodyWidth > 768) {\n      this.$store.dispatch('ChangeMobile', false);\n    } else if (!isMobile && bodyWidth <= 768) {\n      this.$store.dispatch('ChangeMobile', true);\n    }\n  }\n\n  render() {\n    const self = this;\n    return (\n      <div id=\"app\">\n        <loader spinning={self.$store.getters.spinning} fullScreen></loader>\n        <a-locale-provider locale={zh_CN}>\n          <AppMain />\n        </a-locale-provider>\n      </div>\n    );\n  }\n}\n"
  },
  {
    "path": "src/api/api.ts",
    "content": "import axios, { AxiosPromise, AxiosInstance } from 'axios';\nimport qs from 'qs';\nimport jsonp from 'jsonp';\nimport lodash from 'lodash';\nimport router from '@/router/index';\nimport { message } from 'ant-design-vue';\n\ninterface ApiList {\n  [key: string]: {\n    url: string; // 请求地址\n    fetchType?: string; // 数据格式，支持json,formData\n    method?: string; // 请求方法\n    headers?: any; // 头部携带信息\n  };\n}\n\ninterface Options {\n  data: any;\n  url: string;\n  fetchType?: string;\n  method?: string;\n  headers?: any;\n}\n\ninterface Apis<T> {\n  [key: string]: (data: object) => Promise<T>;\n}\n\nexport default class Api {\n  service: AxiosInstance;\n\n  // 请求列表，在这里添加相应接口\n  apiList: ApiList = {\n    login: {\n      url: '/user/login',\n      fetchType: 'json',\n      method: 'post',\n    },\n    logout: {\n      url: '/user/logout',\n      fetchType: 'json',\n      method: 'post',\n    },\n    getUserInfo: {\n      url: '/user/getUserInfo',\n      fetchType: 'json',\n      method: 'post',\n    },\n    dashboard: {\n      url: '/dashboard',\n      fetchType: 'json',\n      method: 'post',\n    },\n    baseInfoAdd: {\n      url: '/customers/baseInfo/add',\n      fetchType: 'json',\n      method: 'post',\n    },\n    baseInfoUpdate: {\n      url: '/customers/baseInfo/update',\n      fetchType: 'json',\n      method: 'post',\n    },\n    baseInfoDelete: {\n      url: '/customers/baseInfo/delete',\n      fetchType: 'json',\n      method: 'post',\n    },\n    gpsToAddress: {\n      url: 'https://api.map.baidu.com/geocoder/v2/',\n      method: 'get',\n      fetchType: 'jsonp',\n    },\n  };\n\n  // 对外暴露方法\n  api: Apis<any> = {};\n\n  constructor(options: { baseUrl: string }) {\n    axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n\n    this.service = axios.create({\n      baseURL: options.baseUrl, // api的base_url\n      timeout: 20000, // 请求超时时间\n    });\n\n    for (const i in this.apiList) {\n      this.api[i] = (data: any) => {\n        const { url } = this.apiList[i];\n        if (i === 'gpsToAddress') {\n          data = {\n            callback: 'renderReverse',\n            coordtype: data.coordinateSystem,\n            location: `${data.lat},${data.lng}`,\n            output: 'json',\n            pois: 1,\n            ak: '3oWu5SgExpeyXtRXbuDdRO08CoVMTloM',\n          };\n        }\n        return this.request({\n          method: this.apiList[i].method,\n          data,\n          fetchType: this.apiList[i].fetchType,\n          url,\n          headers: this.apiList[i].headers,\n        });\n      };\n    }\n  }\n\n  request = (options: Options) => this.fetch(options)\n    .then((response: any) => {\n      const { statusText, status } = response;\n      let { data } = response;\n      if (data instanceof Array) {\n        data = {\n          list: data,\n        };\n      }\n      // 登录超时判断\n      if (response.data.result && response.data.result.resultCode === 3) {\n        router.replace({ name: 'login' });\n        return Promise.reject({\n          success: false,\n          message: response.data.result.resultMessage,\n        });\n      }\n      return Promise.resolve({\n        success: true,\n        message: statusText,\n        statusCode: status,\n        data,\n      });\n    })\n    .catch((error: any) => {\n      const { response } = error;\n      let msg;\n      let statusCode;\n      if (response && response instanceof Object) {\n        const { data, statusText } = response;\n        statusCode = response.status;\n        msg = data.message || statusText;\n      } else {\n        statusCode = 600;\n        msg = error.message || 'Network Error';\n      }\n      message.error(msg);\n      return Promise.reject({ success: false, statusCode, message: msg });\n    });\n\n  fetch = (options: Options) => {\n    const {\n      url, data, fetchType, method = 'get',\n    } = options;\n    let cloneData: any = lodash.cloneDeep(data);\n    cloneData = qs.stringify(cloneData);\n    const headers = {\n      token: window.localStorage.getItem('token'),\n      ...options.headers,\n    };\n\n    if (fetchType === 'jsonp') {\n      return new Promise((resolve, reject) => {\n        jsonp(\n          url,\n          {\n            param: `${qs.stringify(data)}&callback`,\n            name: `jsonp_${new Date().getTime()}`,\n            timeout: 4000,\n          },\n          (error, result) => {\n            if (error) {\n              reject(error);\n            }\n            resolve({ statusText: 'OK', status: 200, data: result });\n          },\n        );\n      });\n    }\n    if (fetchType === 'json') {\n      return this.service({\n        url,\n        method: method.toLowerCase(),\n        headers: {\n          'Content-Type': 'application/json',\n          ...headers,\n        },\n        data,\n      });\n    }\n    if (fetchType === 'jsonfile') {\n      return axios.get(url, { headers });\n    }\n    switch (method.toLowerCase()) {\n      case 'get':\n        return this.service.get(`${url}?${cloneData}`, { headers });\n      case 'delete':\n        return this.service.delete(url, {\n          data: cloneData,\n          headers,\n        });\n      case 'post':\n        return this.service.post(url, cloneData, { headers });\n      case 'put':\n        return this.service.put(url, cloneData, { headers });\n      case 'patch':\n        return this.service.patch(url, cloneData, { headers });\n      default:\n        return this.service(options);\n    }\n  };\n}\n"
  },
  {
    "path": "src/assets/json/map.json",
    "content": "{\"110000\":\"北京市\",\"110100\":\"北京市\",\"110101\":\"东城区\",\"110102\":\"西城区\",\"110105\":\"朝阳区\",\"110106\":\"丰台区\",\"110107\":\"石景山区\",\"110108\":\"海淀区\",\"110109\":\"门头沟区\",\"110111\":\"房山区\",\"110112\":\"通州区\",\"110113\":\"顺义区\",\"110114\":\"昌平区\",\"110115\":\"大兴区\",\"110116\":\"怀柔区\",\"110117\":\"平谷区\",\"110118\":\"密云区\",\"110119\":\"延庆区\",\"120000\":\"天津市\",\"120100\":\"天津市\",\"120101\":\"和平区\",\"120102\":\"河东区\",\"120103\":\"河西区\",\"120104\":\"南开区\",\"120105\":\"河北区\",\"120106\":\"红桥区\",\"120110\":\"东丽区\",\"120111\":\"西青区\",\"120112\":\"津南区\",\"120113\":\"北辰区\",\"120114\":\"武清区\",\"120115\":\"宝坻区\",\"120116\":\"滨海新区\",\"120117\":\"宁河区\",\"120118\":\"静海区\",\"120119\":\"蓟州区\",\"130000\":\"河北省\",\"130100\":\"石家庄市\",\"130102\":\"长安区\",\"130104\":\"桥西区\",\"130105\":\"新华区\",\"130107\":\"井陉矿区\",\"130108\":\"裕华区\",\"130109\":\"藁城区\",\"130110\":\"鹿泉区\",\"130111\":\"栾城区\",\"130121\":\"井陉县\",\"130123\":\"正定县\",\"130125\":\"行唐县\",\"130126\":\"灵寿县\",\"130127\":\"高邑县\",\"130128\":\"深泽县\",\"130129\":\"赞皇县\",\"130130\":\"无极县\",\"130131\":\"平山县\",\"130132\":\"元氏县\",\"130133\":\"赵县\",\"130181\":\"辛集市\",\"130183\":\"晋州市\",\"130184\":\"新乐市\",\"130200\":\"唐山市\",\"130202\":\"路南区\",\"130203\":\"路北区\",\"130204\":\"古冶区\",\"130205\":\"开平区\",\"130207\":\"丰南区\",\"130208\":\"丰润区\",\"130209\":\"曹妃甸区\",\"130223\":\"滦县\",\"130224\":\"滦南县\",\"130225\":\"乐亭县\",\"130227\":\"迁西县\",\"130229\":\"玉田县\",\"130281\":\"遵化市\",\"130283\":\"迁安市\",\"130300\":\"秦皇岛市\",\"130302\":\"海港区\",\"130303\":\"山海关区\",\"130304\":\"北戴河区\",\"130306\":\"抚宁区\",\"130321\":\"青龙满族自治县\",\"130322\":\"昌黎县\",\"130324\":\"卢龙县\",\"130400\":\"邯郸市\",\"130402\":\"邯山区\",\"130403\":\"丛台区\",\"130404\":\"复兴区\",\"130406\":\"峰峰矿区\",\"130407\":\"肥乡区\",\"130408\":\"永年区\",\"130423\":\"临漳县\",\"130424\":\"成安县\",\"130425\":\"大名县\",\"130426\":\"涉县\",\"130427\":\"磁县\",\"130430\":\"邱县\",\"130431\":\"鸡泽县\",\"130432\":\"广平县\",\"130433\":\"馆陶县\",\"130434\":\"魏县\",\"130435\":\"曲周县\",\"130481\":\"武安市\",\"130500\":\"邢台市\",\"130502\":\"桥东区\",\"130503\":\"桥西区\",\"130521\":\"邢台县\",\"130522\":\"临城县\",\"130523\":\"内丘县\",\"130524\":\"柏乡县\",\"130525\":\"隆尧县\",\"130526\":\"任县\",\"130527\":\"南和县\",\"130528\":\"宁晋县\",\"130529\":\"巨鹿县\",\"130530\":\"新河县\",\"130531\":\"广宗县\",\"130532\":\"平乡县\",\"130533\":\"威县\",\"130534\":\"清河县\",\"130535\":\"临西县\",\"130581\":\"南宫市\",\"130582\":\"沙河市\",\"130600\":\"保定市\",\"130602\":\"竞秀区\",\"130606\":\"莲池区\",\"130607\":\"满城区\",\"130608\":\"清苑区\",\"130609\":\"徐水区\",\"130623\":\"涞水县\",\"130624\":\"阜平县\",\"130626\":\"定兴县\",\"130627\":\"唐县\",\"130628\":\"高阳县\",\"130629\":\"容城县\",\"130630\":\"涞源县\",\"130631\":\"望都县\",\"130632\":\"安新县\",\"130633\":\"易县\",\"130634\":\"曲阳县\",\"130635\":\"蠡县\",\"130636\":\"顺平县\",\"130637\":\"博野县\",\"130638\":\"雄县\",\"130681\":\"涿州市\",\"130682\":\"定州市\",\"130683\":\"安国市\",\"130684\":\"高碑店市\",\"130700\":\"张家口市\",\"130702\":\"桥东区\",\"130703\":\"桥西区\",\"130705\":\"宣化区\",\"130706\":\"下花园区\",\"130708\":\"万全区\",\"130709\":\"崇礼区\",\"130722\":\"张北县\",\"130723\":\"康保县\",\"130724\":\"沽源县\",\"130725\":\"尚义县\",\"130726\":\"蔚县\",\"130727\":\"阳原县\",\"130728\":\"怀安县\",\"130730\":\"怀来县\",\"130731\":\"涿鹿县\",\"130732\":\"赤城县\",\"130800\":\"承德市\",\"130802\":\"双桥区\",\"130803\":\"双滦区\",\"130804\":\"鹰手营子矿区\",\"130821\":\"承德县\",\"130822\":\"兴隆县\",\"130824\":\"滦平县\",\"130825\":\"隆化县\",\"130826\":\"丰宁满族自治县\",\"130827\":\"宽城满族自治县\",\"130828\":\"围场满族蒙古族自治县\",\"130881\":\"平泉市\",\"130900\":\"沧州市\",\"130902\":\"新华区\",\"130903\":\"运河区\",\"130921\":\"沧县\",\"130922\":\"青县\",\"130923\":\"东光县\",\"130924\":\"海兴县\",\"130925\":\"盐山县\",\"130926\":\"肃宁县\",\"130927\":\"南皮县\",\"130928\":\"吴桥县\",\"130929\":\"献县\",\"130930\":\"孟村回族自治县\",\"130981\":\"泊头市\",\"130982\":\"任丘市\",\"130983\":\"黄骅市\",\"130984\":\"河间市\",\"131000\":\"廊坊市\",\"131002\":\"安次区\",\"131003\":\"广阳区\",\"131022\":\"固安县\",\"131023\":\"永清县\",\"131024\":\"香河县\",\"131025\":\"大城县\",\"131026\":\"文安县\",\"131028\":\"大厂回族自治县\",\"131081\":\"霸州市\",\"131082\":\"三河市\",\"131100\":\"衡水市\",\"131102\":\"桃城区\",\"131103\":\"冀州区\",\"131121\":\"枣强县\",\"131122\":\"武邑县\",\"131123\":\"武强县\",\"131124\":\"饶阳县\",\"131125\":\"安平县\",\"131126\":\"故城县\",\"131127\":\"景县\",\"131128\":\"阜城县\",\"131182\":\"深州市\",\"140000\":\"山西省\",\"140100\":\"太原市\",\"140105\":\"小店区\",\"140106\":\"迎泽区\",\"140107\":\"杏花岭区\",\"140108\":\"尖草坪区\",\"140109\":\"万柏林区\",\"140110\":\"晋源区\",\"140121\":\"清徐县\",\"140122\":\"阳曲县\",\"140123\":\"娄烦县\",\"140181\":\"古交市\",\"140200\":\"大同市\",\"140202\":\"城区\",\"140203\":\"矿区\",\"140211\":\"南郊区\",\"140212\":\"新荣区\",\"140221\":\"阳高县\",\"140222\":\"天镇县\",\"140223\":\"广灵县\",\"140224\":\"灵丘县\",\"140225\":\"浑源县\",\"140226\":\"左云县\",\"140227\":\"大同县\",\"140300\":\"阳泉市\",\"140302\":\"城区\",\"140303\":\"矿区\",\"140311\":\"郊区\",\"140321\":\"平定县\",\"140322\":\"盂县\",\"140400\":\"长治市\",\"140402\":\"城区\",\"140411\":\"郊区\",\"140421\":\"长治县\",\"140423\":\"襄垣县\",\"140424\":\"屯留县\",\"140425\":\"平顺县\",\"140426\":\"黎城县\",\"140427\":\"壶关县\",\"140428\":\"长子县\",\"140429\":\"武乡县\",\"140430\":\"沁县\",\"140431\":\"沁源县\",\"140481\":\"潞城市\",\"140500\":\"晋城市\",\"140502\":\"城区\",\"140521\":\"沁水县\",\"140522\":\"阳城县\",\"140524\":\"陵川县\",\"140525\":\"泽州县\",\"140581\":\"高平市\",\"140600\":\"朔州市\",\"140602\":\"朔城区\",\"140603\":\"平鲁区\",\"140621\":\"山阴县\",\"140622\":\"应县\",\"140623\":\"右玉县\",\"140624\":\"怀仁县\",\"140700\":\"晋中市\",\"140702\":\"榆次区\",\"140721\":\"榆社县\",\"140722\":\"左权县\",\"140723\":\"和顺县\",\"140724\":\"昔阳县\",\"140725\":\"寿阳县\",\"140726\":\"太谷县\",\"140727\":\"祁县\",\"140728\":\"平遥县\",\"140729\":\"灵石县\",\"140781\":\"介休市\",\"140800\":\"运城市\",\"140802\":\"盐湖区\",\"140821\":\"临猗县\",\"140822\":\"万荣县\",\"140823\":\"闻喜县\",\"140824\":\"稷山县\",\"140825\":\"新绛县\",\"140826\":\"绛县\",\"140827\":\"垣曲县\",\"140828\":\"夏县\",\"140829\":\"平陆县\",\"140830\":\"芮城县\",\"140881\":\"永济市\",\"140882\":\"河津市\",\"140900\":\"忻州市\",\"140902\":\"忻府区\",\"140921\":\"定襄县\",\"140922\":\"五台县\",\"140923\":\"代县\",\"140924\":\"繁峙县\",\"140925\":\"宁武县\",\"140926\":\"静乐县\",\"140927\":\"神池县\",\"140928\":\"五寨县\",\"140929\":\"岢岚县\",\"140930\":\"河曲县\",\"140931\":\"保德县\",\"140932\":\"偏关县\",\"140981\":\"原平市\",\"141000\":\"临汾市\",\"141002\":\"尧都区\",\"141021\":\"曲沃县\",\"141022\":\"翼城县\",\"141023\":\"襄汾县\",\"141024\":\"洪洞县\",\"141025\":\"古县\",\"141026\":\"安泽县\",\"141027\":\"浮山县\",\"141028\":\"吉县\",\"141029\":\"乡宁县\",\"141030\":\"大宁县\",\"141031\":\"隰县\",\"141032\":\"永和县\",\"141033\":\"蒲县\",\"141034\":\"汾西县\",\"141081\":\"侯马市\",\"141082\":\"霍州市\",\"141100\":\"吕梁市\",\"141102\":\"离石区\",\"141121\":\"文水县\",\"141122\":\"交城县\",\"141123\":\"兴县\",\"141124\":\"临县\",\"141125\":\"柳林县\",\"141126\":\"石楼县\",\"141127\":\"岚县\",\"141128\":\"方山县\",\"141129\":\"中阳县\",\"141130\":\"交口县\",\"141181\":\"孝义市\",\"141182\":\"汾阳市\",\"150000\":\"内蒙古自治区\",\"150100\":\"呼和浩特市\",\"150102\":\"新城区\",\"150103\":\"回民区\",\"150104\":\"玉泉区\",\"150105\":\"赛罕区\",\"150121\":\"土默特左旗\",\"150122\":\"托克托县\",\"150123\":\"和林格尔县\",\"150124\":\"清水河县\",\"150125\":\"武川县\",\"150200\":\"包头市\",\"150202\":\"东河区\",\"150203\":\"昆都仑区\",\"150204\":\"青山区\",\"150205\":\"石拐区\",\"150206\":\"白云鄂博矿区\",\"150207\":\"九原区\",\"150221\":\"土默特右旗\",\"150222\":\"固阳县\",\"150223\":\"达尔罕茂明安联合旗\",\"150300\":\"乌海市\",\"150302\":\"海勃湾区\",\"150303\":\"海南区\",\"150304\":\"乌达区\",\"150400\":\"赤峰市\",\"150402\":\"红山区\",\"150403\":\"元宝山区\",\"150404\":\"松山区\",\"150421\":\"阿鲁科尔沁旗\",\"150422\":\"巴林左旗\",\"150423\":\"巴林右旗\",\"150424\":\"林西县\",\"150425\":\"克什克腾旗\",\"150426\":\"翁牛特旗\",\"150428\":\"喀喇沁旗\",\"150429\":\"宁城县\",\"150430\":\"敖汉旗\",\"150500\":\"通辽市\",\"150502\":\"科尔沁区\",\"150521\":\"科尔沁左翼中旗\",\"150522\":\"科尔沁左翼后旗\",\"150523\":\"开鲁县\",\"150524\":\"库伦旗\",\"150525\":\"奈曼旗\",\"150526\":\"扎鲁特旗\",\"150581\":\"霍林郭勒市\",\"150600\":\"鄂尔多斯市\",\"150602\":\"东胜区\",\"150603\":\"康巴什区\",\"150621\":\"达拉特旗\",\"150622\":\"准格尔旗\",\"150623\":\"鄂托克前旗\",\"150624\":\"鄂托克旗\",\"150625\":\"杭锦旗\",\"150626\":\"乌审旗\",\"150627\":\"伊金霍洛旗\",\"150700\":\"呼伦贝尔市\",\"150702\":\"海拉尔区\",\"150703\":\"扎赉诺尔区\",\"150721\":\"阿荣旗\",\"150722\":\"莫力达瓦达斡尔族自治旗\",\"150723\":\"鄂伦春自治旗\",\"150724\":\"鄂温克族自治旗\",\"150725\":\"陈巴尔虎旗\",\"150726\":\"新巴尔虎左旗\",\"150727\":\"新巴尔虎右旗\",\"150781\":\"满洲里市\",\"150782\":\"牙克石市\",\"150783\":\"扎兰屯市\",\"150784\":\"额尔古纳市\",\"150785\":\"根河市\",\"150800\":\"巴彦淖尔市\",\"150802\":\"临河区\",\"150821\":\"五原县\",\"150822\":\"磴口县\",\"150823\":\"乌拉特前旗\",\"150824\":\"乌拉特中旗\",\"150825\":\"乌拉特后旗\",\"150826\":\"杭锦后旗\",\"150900\":\"乌兰察布市\",\"150902\":\"集宁区\",\"150921\":\"卓资县\",\"150922\":\"化德县\",\"150923\":\"商都县\",\"150924\":\"兴和县\",\"150925\":\"凉城县\",\"150926\":\"察哈尔右翼前旗\",\"150927\":\"察哈尔右翼中旗\",\"150928\":\"察哈尔右翼后旗\",\"150929\":\"四子王旗\",\"150981\":\"丰镇市\",\"152200\":\"兴安盟\",\"152201\":\"乌兰浩特市\",\"152202\":\"阿尔山市\",\"152221\":\"科尔沁右翼前旗\",\"152222\":\"科尔沁右翼中旗\",\"152223\":\"扎赉特旗\",\"152224\":\"突泉县\",\"152500\":\"锡林郭勒盟\",\"152501\":\"二连浩特市\",\"152502\":\"锡林浩特市\",\"152522\":\"阿巴嘎旗\",\"152523\":\"苏尼特左旗\",\"152524\":\"苏尼特右旗\",\"152525\":\"东乌珠穆沁旗\",\"152526\":\"西乌珠穆沁旗\",\"152527\":\"太仆寺旗\",\"152528\":\"镶黄旗\",\"152529\":\"正镶白旗\",\"152530\":\"正蓝旗\",\"152531\":\"多伦县\",\"152900\":\"阿拉善盟\",\"152921\":\"阿拉善左旗\",\"152922\":\"阿拉善右旗\",\"152923\":\"额济纳旗\",\"210000\":\"辽宁省\",\"210100\":\"沈阳市\",\"210102\":\"和平区\",\"210103\":\"沈河区\",\"210104\":\"大东区\",\"210105\":\"皇姑区\",\"210106\":\"铁西区\",\"210111\":\"苏家屯区\",\"210112\":\"浑南区\",\"210113\":\"沈北新区\",\"210114\":\"于洪区\",\"210115\":\"辽中区\",\"210123\":\"康平县\",\"210124\":\"法库县\",\"210181\":\"新民市\",\"210200\":\"大连市\",\"210202\":\"中山区\",\"210203\":\"西岗区\",\"210204\":\"沙河口区\",\"210211\":\"甘井子区\",\"210212\":\"旅顺口区\",\"210213\":\"金州区\",\"210214\":\"普兰店区\",\"210224\":\"长海县\",\"210281\":\"瓦房店市\",\"210283\":\"庄河市\",\"210300\":\"鞍山市\",\"210302\":\"铁东区\",\"210303\":\"铁西区\",\"210304\":\"立山区\",\"210311\":\"千山区\",\"210321\":\"台安县\",\"210323\":\"岫岩满族自治县\",\"210381\":\"海城市\",\"210400\":\"抚顺市\",\"210402\":\"新抚区\",\"210403\":\"东洲区\",\"210404\":\"望花区\",\"210411\":\"顺城区\",\"210421\":\"抚顺县\",\"210422\":\"新宾满族自治县\",\"210423\":\"清原满族自治县\",\"210500\":\"本溪市\",\"210502\":\"平山区\",\"210503\":\"溪湖区\",\"210504\":\"明山区\",\"210505\":\"南芬区\",\"210521\":\"本溪满族自治县\",\"210522\":\"桓仁满族自治县\",\"210600\":\"丹东市\",\"210602\":\"元宝区\",\"210603\":\"振兴区\",\"210604\":\"振安区\",\"210624\":\"宽甸满族自治县\",\"210681\":\"东港市\",\"210682\":\"凤城市\",\"210700\":\"锦州市\",\"210702\":\"古塔区\",\"210703\":\"凌河区\",\"210711\":\"太和区\",\"210726\":\"黑山县\",\"210727\":\"义县\",\"210781\":\"凌海市\",\"210782\":\"北镇市\",\"210800\":\"营口市\",\"210802\":\"站前区\",\"210803\":\"西市区\",\"210804\":\"鲅鱼圈区\",\"210811\":\"老边区\",\"210881\":\"盖州市\",\"210882\":\"大石桥市\",\"210900\":\"阜新市\",\"210902\":\"海州区\",\"210903\":\"新邱区\",\"210904\":\"太平区\",\"210905\":\"清河门区\",\"210911\":\"细河区\",\"210921\":\"阜新蒙古族自治县\",\"210922\":\"彰武县\",\"211000\":\"辽阳市\",\"211002\":\"白塔区\",\"211003\":\"文圣区\",\"211004\":\"宏伟区\",\"211005\":\"弓长岭区\",\"211011\":\"太子河区\",\"211021\":\"辽阳县\",\"211081\":\"灯塔市\",\"211100\":\"盘锦市\",\"211102\":\"双台子区\",\"211103\":\"兴隆台区\",\"211104\":\"大洼区\",\"211122\":\"盘山县\",\"211200\":\"铁岭市\",\"211202\":\"银州区\",\"211204\":\"清河区\",\"211221\":\"铁岭县\",\"211223\":\"西丰县\",\"211224\":\"昌图县\",\"211281\":\"调兵山市\",\"211282\":\"开原市\",\"211300\":\"朝阳市\",\"211302\":\"双塔区\",\"211303\":\"龙城区\",\"211321\":\"朝阳县\",\"211322\":\"建平县\",\"211324\":\"喀喇沁左翼蒙古族自治县\",\"211381\":\"北票市\",\"211382\":\"凌源市\",\"211400\":\"葫芦岛市\",\"211402\":\"连山区\",\"211403\":\"龙港区\",\"211404\":\"南票区\",\"211421\":\"绥中县\",\"211422\":\"建昌县\",\"211481\":\"兴城市\",\"220000\":\"吉林省\",\"220100\":\"长春市\",\"220102\":\"南关区\",\"220103\":\"宽城区\",\"220104\":\"朝阳区\",\"220105\":\"二道区\",\"220106\":\"绿园区\",\"220112\":\"双阳区\",\"220113\":\"九台区\",\"220122\":\"农安县\",\"220182\":\"榆树市\",\"220183\":\"德惠市\",\"220200\":\"吉林市\",\"220202\":\"昌邑区\",\"220203\":\"龙潭区\",\"220204\":\"船营区\",\"220211\":\"丰满区\",\"220221\":\"永吉县\",\"220281\":\"蛟河市\",\"220282\":\"桦甸市\",\"220283\":\"舒兰市\",\"220284\":\"磐石市\",\"220300\":\"四平市\",\"220302\":\"铁西区\",\"220303\":\"铁东区\",\"220322\":\"梨树县\",\"220323\":\"伊通满族自治县\",\"220381\":\"公主岭市\",\"220382\":\"双辽市\",\"220400\":\"辽源市\",\"220402\":\"龙山区\",\"220403\":\"西安区\",\"220421\":\"东丰县\",\"220422\":\"东辽县\",\"220500\":\"通化市\",\"220502\":\"东昌区\",\"220503\":\"二道江区\",\"220521\":\"通化县\",\"220523\":\"辉南县\",\"220524\":\"柳河县\",\"220581\":\"梅河口市\",\"220582\":\"集安市\",\"220600\":\"白山市\",\"220602\":\"浑江区\",\"220605\":\"江源区\",\"220621\":\"抚松县\",\"220622\":\"靖宇县\",\"220623\":\"长白朝鲜族自治县\",\"220681\":\"临江市\",\"220700\":\"松原市\",\"220702\":\"宁江区\",\"220721\":\"前郭尔罗斯蒙古族自治县\",\"220722\":\"长岭县\",\"220723\":\"乾安县\",\"220781\":\"扶余市\",\"220800\":\"白城市\",\"220802\":\"洮北区\",\"220821\":\"镇赉县\",\"220822\":\"通榆县\",\"220881\":\"洮南市\",\"220882\":\"大安市\",\"222400\":\"延边朝鲜族自治州\",\"222401\":\"延吉市\",\"222402\":\"图们市\",\"222403\":\"敦化市\",\"222404\":\"珲春市\",\"222405\":\"龙井市\",\"222406\":\"和龙市\",\"222424\":\"汪清县\",\"222426\":\"安图县\",\"230000\":\"黑龙江省\",\"230100\":\"哈尔滨市\",\"230102\":\"道里区\",\"230103\":\"南岗区\",\"230104\":\"道外区\",\"230108\":\"平房区\",\"230109\":\"松北区\",\"230110\":\"香坊区\",\"230111\":\"呼兰区\",\"230112\":\"阿城区\",\"230113\":\"双城区\",\"230123\":\"依兰县\",\"230124\":\"方正县\",\"230125\":\"宾县\",\"230126\":\"巴彦县\",\"230127\":\"木兰县\",\"230128\":\"通河县\",\"230129\":\"延寿县\",\"230183\":\"尚志市\",\"230184\":\"五常市\",\"230200\":\"齐齐哈尔市\",\"230202\":\"龙沙区\",\"230203\":\"建华区\",\"230204\":\"铁锋区\",\"230205\":\"昂昂溪区\",\"230206\":\"富拉尔基区\",\"230207\":\"碾子山区\",\"230208\":\"梅里斯达斡尔族区\",\"230221\":\"龙江县\",\"230223\":\"依安县\",\"230224\":\"泰来县\",\"230225\":\"甘南县\",\"230227\":\"富裕县\",\"230229\":\"克山县\",\"230230\":\"克东县\",\"230231\":\"拜泉县\",\"230281\":\"讷河市\",\"230300\":\"鸡西市\",\"230302\":\"鸡冠区\",\"230303\":\"恒山区\",\"230304\":\"滴道区\",\"230305\":\"梨树区\",\"230306\":\"城子河区\",\"230307\":\"麻山区\",\"230321\":\"鸡东县\",\"230381\":\"虎林市\",\"230382\":\"密山市\",\"230400\":\"鹤岗市\",\"230402\":\"向阳区\",\"230403\":\"工农区\",\"230404\":\"南山区\",\"230405\":\"兴安区\",\"230406\":\"东山区\",\"230407\":\"兴山区\",\"230421\":\"萝北县\",\"230422\":\"绥滨县\",\"230500\":\"双鸭山市\",\"230502\":\"尖山区\",\"230503\":\"岭东区\",\"230505\":\"四方台区\",\"230506\":\"宝山区\",\"230521\":\"集贤县\",\"230522\":\"友谊县\",\"230523\":\"宝清县\",\"230524\":\"饶河县\",\"230600\":\"大庆市\",\"230602\":\"萨尔图区\",\"230603\":\"龙凤区\",\"230604\":\"让胡路区\",\"230605\":\"红岗区\",\"230606\":\"大同区\",\"230621\":\"肇州县\",\"230622\":\"肇源县\",\"230623\":\"林甸县\",\"230624\":\"杜尔伯特蒙古族自治县\",\"230700\":\"伊春市\",\"230702\":\"伊春区\",\"230703\":\"南岔区\",\"230704\":\"友好区\",\"230705\":\"西林区\",\"230706\":\"翠峦区\",\"230707\":\"新青区\",\"230708\":\"美溪区\",\"230709\":\"金山屯区\",\"230710\":\"五营区\",\"230711\":\"乌马河区\",\"230712\":\"汤旺河区\",\"230713\":\"带岭区\",\"230714\":\"乌伊岭区\",\"230715\":\"红星区\",\"230716\":\"上甘岭区\",\"230722\":\"嘉荫县\",\"230781\":\"铁力市\",\"230800\":\"佳木斯市\",\"230803\":\"向阳区\",\"230804\":\"前进区\",\"230805\":\"东风区\",\"230811\":\"郊区\",\"230822\":\"桦南县\",\"230826\":\"桦川县\",\"230828\":\"汤原县\",\"230881\":\"同江市\",\"230882\":\"富锦市\",\"230883\":\"抚远市\",\"230900\":\"七台河市\",\"230902\":\"新兴区\",\"230903\":\"桃山区\",\"230904\":\"茄子河区\",\"230921\":\"勃利县\",\"231000\":\"牡丹江市\",\"231002\":\"东安区\",\"231003\":\"阳明区\",\"231004\":\"爱民区\",\"231005\":\"西安区\",\"231025\":\"林口县\",\"231081\":\"绥芬河市\",\"231083\":\"海林市\",\"231084\":\"宁安市\",\"231085\":\"穆棱市\",\"231086\":\"东宁市\",\"231100\":\"黑河市\",\"231102\":\"爱辉区\",\"231121\":\"嫩江县\",\"231123\":\"逊克县\",\"231124\":\"孙吴县\",\"231181\":\"北安市\",\"231182\":\"五大连池市\",\"231200\":\"绥化市\",\"231202\":\"北林区\",\"231221\":\"望奎县\",\"231222\":\"兰西县\",\"231223\":\"青冈县\",\"231224\":\"庆安县\",\"231225\":\"明水县\",\"231226\":\"绥棱县\",\"231281\":\"安达市\",\"231282\":\"肇东市\",\"231283\":\"海伦市\",\"232700\":\"大兴安岭地区\",\"232721\":\"呼玛县\",\"232722\":\"塔河县\",\"232723\":\"漠河县\",\"310000\":\"上海市\",\"310100\":\"上海市\",\"310101\":\"黄浦区\",\"310104\":\"徐汇区\",\"310105\":\"长宁区\",\"310106\":\"静安区\",\"310107\":\"普陀区\",\"310109\":\"虹口区\",\"310110\":\"杨浦区\",\"310112\":\"闵行区\",\"310113\":\"宝山区\",\"310114\":\"嘉定区\",\"310115\":\"浦东新区\",\"310116\":\"金山区\",\"310117\":\"松江区\",\"310118\":\"青浦区\",\"310120\":\"奉贤区\",\"310151\":\"崇明区\",\"320000\":\"江苏省\",\"320100\":\"南京市\",\"320102\":\"玄武区\",\"320104\":\"秦淮区\",\"320105\":\"建邺区\",\"320106\":\"鼓楼区\",\"320111\":\"浦口区\",\"320113\":\"栖霞区\",\"320114\":\"雨花台区\",\"320115\":\"江宁区\",\"320116\":\"六合区\",\"320117\":\"溧水区\",\"320118\":\"高淳区\",\"320200\":\"无锡市\",\"320205\":\"锡山区\",\"320206\":\"惠山区\",\"320211\":\"滨湖区\",\"320213\":\"梁溪区\",\"320214\":\"新吴区\",\"320281\":\"江阴市\",\"320282\":\"宜兴市\",\"320300\":\"徐州市\",\"320302\":\"鼓楼区\",\"320303\":\"云龙区\",\"320305\":\"贾汪区\",\"320311\":\"泉山区\",\"320312\":\"铜山区\",\"320321\":\"丰县\",\"320322\":\"沛县\",\"320324\":\"睢宁县\",\"320381\":\"新沂市\",\"320382\":\"邳州市\",\"320400\":\"常州市\",\"320402\":\"天宁区\",\"320404\":\"钟楼区\",\"320411\":\"新北区\",\"320412\":\"武进区\",\"320413\":\"金坛区\",\"320481\":\"溧阳市\",\"320500\":\"苏州市\",\"320505\":\"虎丘区\",\"320506\":\"吴中区\",\"320507\":\"相城区\",\"320508\":\"姑苏区\",\"320509\":\"吴江区\",\"320581\":\"常熟市\",\"320582\":\"张家港市\",\"320583\":\"昆山市\",\"320585\":\"太仓市\",\"320600\":\"南通市\",\"320602\":\"崇川区\",\"320611\":\"港闸区\",\"320612\":\"通州区\",\"320621\":\"海安县\",\"320623\":\"如东县\",\"320681\":\"启东市\",\"320682\":\"如皋市\",\"320684\":\"海门市\",\"320700\":\"连云港市\",\"320703\":\"连云区\",\"320706\":\"海州区\",\"320707\":\"赣榆区\",\"320722\":\"东海县\",\"320723\":\"灌云县\",\"320724\":\"灌南县\",\"320800\":\"淮安市\",\"320803\":\"淮安区\",\"320804\":\"淮阴区\",\"320812\":\"清江浦区\",\"320813\":\"洪泽区\",\"320826\":\"涟水县\",\"320830\":\"盱眙县\",\"320831\":\"金湖县\",\"320900\":\"盐城市\",\"320902\":\"亭湖区\",\"320903\":\"盐都区\",\"320904\":\"大丰区\",\"320921\":\"响水县\",\"320922\":\"滨海县\",\"320923\":\"阜宁县\",\"320924\":\"射阳县\",\"320925\":\"建湖县\",\"320981\":\"东台市\",\"321000\":\"扬州市\",\"321002\":\"广陵区\",\"321003\":\"邗江区\",\"321012\":\"江都区\",\"321023\":\"宝应县\",\"321081\":\"仪征市\",\"321084\":\"高邮市\",\"321100\":\"镇江市\",\"321102\":\"京口区\",\"321111\":\"润州区\",\"321112\":\"丹徒区\",\"321181\":\"丹阳市\",\"321182\":\"扬中市\",\"321183\":\"句容市\",\"321200\":\"泰州市\",\"321202\":\"海陵区\",\"321203\":\"高港区\",\"321204\":\"姜堰区\",\"321281\":\"兴化市\",\"321282\":\"靖江市\",\"321283\":\"泰兴市\",\"321300\":\"宿迁市\",\"321302\":\"宿城区\",\"321311\":\"宿豫区\",\"321322\":\"沭阳县\",\"321323\":\"泗阳县\",\"321324\":\"泗洪县\",\"330000\":\"浙江省\",\"330100\":\"杭州市\",\"330102\":\"上城区\",\"330103\":\"下城区\",\"330104\":\"江干区\",\"330105\":\"拱墅区\",\"330106\":\"西湖区\",\"330108\":\"滨江区\",\"330109\":\"萧山区\",\"330110\":\"余杭区\",\"330111\":\"富阳区\",\"330112\":\"临安区\",\"330122\":\"桐庐县\",\"330127\":\"淳安县\",\"330182\":\"建德市\",\"330200\":\"宁波市\",\"330203\":\"海曙区\",\"330205\":\"江北区\",\"330206\":\"北仑区\",\"330211\":\"镇海区\",\"330212\":\"鄞州区\",\"330213\":\"奉化区\",\"330225\":\"象山县\",\"330226\":\"宁海县\",\"330281\":\"余姚市\",\"330282\":\"慈溪市\",\"330300\":\"温州市\",\"330302\":\"鹿城区\",\"330303\":\"龙湾区\",\"330304\":\"瓯海区\",\"330305\":\"洞头区\",\"330324\":\"永嘉县\",\"330326\":\"平阳县\",\"330327\":\"苍南县\",\"330328\":\"文成县\",\"330329\":\"泰顺县\",\"330381\":\"瑞安市\",\"330382\":\"乐清市\",\"330400\":\"嘉兴市\",\"330402\":\"南湖区\",\"330411\":\"秀洲区\",\"330421\":\"嘉善县\",\"330424\":\"海盐县\",\"330481\":\"海宁市\",\"330482\":\"平湖市\",\"330483\":\"桐乡市\",\"330500\":\"湖州市\",\"330502\":\"吴兴区\",\"330503\":\"南浔区\",\"330521\":\"德清县\",\"330522\":\"长兴县\",\"330523\":\"安吉县\",\"330600\":\"绍兴市\",\"330602\":\"越城区\",\"330603\":\"柯桥区\",\"330604\":\"上虞区\",\"330624\":\"新昌县\",\"330681\":\"诸暨市\",\"330683\":\"嵊州市\",\"330700\":\"金华市\",\"330702\":\"婺城区\",\"330703\":\"金东区\",\"330723\":\"武义县\",\"330726\":\"浦江县\",\"330727\":\"磐安县\",\"330781\":\"兰溪市\",\"330782\":\"义乌市\",\"330783\":\"东阳市\",\"330784\":\"永康市\",\"330800\":\"衢州市\",\"330802\":\"柯城区\",\"330803\":\"衢江区\",\"330822\":\"常山县\",\"330824\":\"开化县\",\"330825\":\"龙游县\",\"330881\":\"江山市\",\"330900\":\"舟山市\",\"330902\":\"定海区\",\"330903\":\"普陀区\",\"330921\":\"岱山县\",\"330922\":\"嵊泗县\",\"331000\":\"台州市\",\"331002\":\"椒江区\",\"331003\":\"黄岩区\",\"331004\":\"路桥区\",\"331022\":\"三门县\",\"331023\":\"天台县\",\"331024\":\"仙居县\",\"331081\":\"温岭市\",\"331082\":\"临海市\",\"331083\":\"玉环市\",\"331100\":\"丽水市\",\"331102\":\"莲都区\",\"331121\":\"青田县\",\"331122\":\"缙云县\",\"331123\":\"遂昌县\",\"331124\":\"松阳县\",\"331125\":\"云和县\",\"331126\":\"庆元县\",\"331127\":\"景宁畲族自治县\",\"331181\":\"龙泉市\",\"340000\":\"安徽省\",\"340100\":\"合肥市\",\"340102\":\"瑶海区\",\"340103\":\"庐阳区\",\"340104\":\"蜀山区\",\"340111\":\"包河区\",\"340121\":\"长丰县\",\"340122\":\"肥东县\",\"340123\":\"肥西县\",\"340124\":\"庐江县\",\"340181\":\"巢湖市\",\"340200\":\"芜湖市\",\"340202\":\"镜湖区\",\"340203\":\"弋江区\",\"340207\":\"鸠江区\",\"340208\":\"三山区\",\"340221\":\"芜湖县\",\"340222\":\"繁昌县\",\"340223\":\"南陵县\",\"340225\":\"无为县\",\"340300\":\"蚌埠市\",\"340302\":\"龙子湖区\",\"340303\":\"蚌山区\",\"340304\":\"禹会区\",\"340311\":\"淮上区\",\"340321\":\"怀远县\",\"340322\":\"五河县\",\"340323\":\"固镇县\",\"340400\":\"淮南市\",\"340402\":\"大通区\",\"340403\":\"田家庵区\",\"340404\":\"谢家集区\",\"340405\":\"八公山区\",\"340406\":\"潘集区\",\"340421\":\"凤台县\",\"340422\":\"寿县\",\"340500\":\"马鞍山市\",\"340503\":\"花山区\",\"340504\":\"雨山区\",\"340506\":\"博望区\",\"340521\":\"当涂县\",\"340522\":\"含山县\",\"340523\":\"和县\",\"340600\":\"淮北市\",\"340602\":\"杜集区\",\"340603\":\"相山区\",\"340604\":\"烈山区\",\"340621\":\"濉溪县\",\"340700\":\"铜陵市\",\"340705\":\"铜官区\",\"340706\":\"义安区\",\"340711\":\"郊区\",\"340722\":\"枞阳县\",\"340800\":\"安庆市\",\"340802\":\"迎江区\",\"340803\":\"大观区\",\"340811\":\"宜秀区\",\"340822\":\"怀宁县\",\"340824\":\"潜山县\",\"340825\":\"太湖县\",\"340826\":\"宿松县\",\"340827\":\"望江县\",\"340828\":\"岳西县\",\"340881\":\"桐城市\",\"341000\":\"黄山市\",\"341002\":\"屯溪区\",\"341003\":\"黄山区\",\"341004\":\"徽州区\",\"341021\":\"歙县\",\"341022\":\"休宁县\",\"341023\":\"黟县\",\"341024\":\"祁门县\",\"341100\":\"滁州市\",\"341102\":\"琅琊区\",\"341103\":\"南谯区\",\"341122\":\"来安县\",\"341124\":\"全椒县\",\"341125\":\"定远县\",\"341126\":\"凤阳县\",\"341181\":\"天长市\",\"341182\":\"明光市\",\"341200\":\"阜阳市\",\"341202\":\"颍州区\",\"341203\":\"颍东区\",\"341204\":\"颍泉区\",\"341221\":\"临泉县\",\"341222\":\"太和县\",\"341225\":\"阜南县\",\"341226\":\"颍上县\",\"341282\":\"界首市\",\"341300\":\"宿州市\",\"341302\":\"埇桥区\",\"341321\":\"砀山县\",\"341322\":\"萧县\",\"341323\":\"灵璧县\",\"341324\":\"泗县\",\"341500\":\"六安市\",\"341502\":\"金安区\",\"341503\":\"裕安区\",\"341504\":\"叶集区\",\"341522\":\"霍邱县\",\"341523\":\"舒城县\",\"341524\":\"金寨县\",\"341525\":\"霍山县\",\"341600\":\"亳州市\",\"341602\":\"谯城区\",\"341621\":\"涡阳县\",\"341622\":\"蒙城县\",\"341623\":\"利辛县\",\"341700\":\"池州市\",\"341702\":\"贵池区\",\"341721\":\"东至县\",\"341722\":\"石台县\",\"341723\":\"青阳县\",\"341800\":\"宣城市\",\"341802\":\"宣州区\",\"341821\":\"郎溪县\",\"341822\":\"广德县\",\"341823\":\"泾县\",\"341824\":\"绩溪县\",\"341825\":\"旌德县\",\"341881\":\"宁国市\",\"350000\":\"福建省\",\"350100\":\"福州市\",\"350102\":\"鼓楼区\",\"350103\":\"台江区\",\"350104\":\"仓山区\",\"350105\":\"马尾区\",\"350111\":\"晋安区\",\"350121\":\"闽侯县\",\"350122\":\"连江县\",\"350123\":\"罗源县\",\"350124\":\"闽清县\",\"350125\":\"永泰县\",\"350128\":\"平潭县\",\"350181\":\"福清市\",\"350182\":\"长乐区\",\"350200\":\"厦门市\",\"350203\":\"思明区\",\"350205\":\"海沧区\",\"350206\":\"湖里区\",\"350211\":\"集美区\",\"350212\":\"同安区\",\"350213\":\"翔安区\",\"350300\":\"莆田市\",\"350302\":\"城厢区\",\"350303\":\"涵江区\",\"350304\":\"荔城区\",\"350305\":\"秀屿区\",\"350322\":\"仙游县\",\"350400\":\"三明市\",\"350402\":\"梅列区\",\"350403\":\"三元区\",\"350421\":\"明溪县\",\"350423\":\"清流县\",\"350424\":\"宁化县\",\"350425\":\"大田县\",\"350426\":\"尤溪县\",\"350427\":\"沙县\",\"350428\":\"将乐县\",\"350429\":\"泰宁县\",\"350430\":\"建宁县\",\"350481\":\"永安市\",\"350500\":\"泉州市\",\"350502\":\"鲤城区\",\"350503\":\"丰泽区\",\"350504\":\"洛江区\",\"350505\":\"泉港区\",\"350521\":\"惠安县\",\"350524\":\"安溪县\",\"350525\":\"永春县\",\"350526\":\"德化县\",\"350527\":\"金门县\",\"350581\":\"石狮市\",\"350582\":\"晋江市\",\"350583\":\"南安市\",\"350600\":\"漳州市\",\"350602\":\"芗城区\",\"350603\":\"龙文区\",\"350622\":\"云霄县\",\"350623\":\"漳浦县\",\"350624\":\"诏安县\",\"350625\":\"长泰县\",\"350626\":\"东山县\",\"350627\":\"南靖县\",\"350628\":\"平和县\",\"350629\":\"华安县\",\"350681\":\"龙海市\",\"350700\":\"南平市\",\"350702\":\"延平区\",\"350703\":\"建阳区\",\"350721\":\"顺昌县\",\"350722\":\"浦城县\",\"350723\":\"光泽县\",\"350724\":\"松溪县\",\"350725\":\"政和县\",\"350781\":\"邵武市\",\"350782\":\"武夷山市\",\"350783\":\"建瓯市\",\"350800\":\"龙岩市\",\"350802\":\"新罗区\",\"350803\":\"永定区\",\"350821\":\"长汀县\",\"350823\":\"上杭县\",\"350824\":\"武平县\",\"350825\":\"连城县\",\"350881\":\"漳平市\",\"350900\":\"宁德市\",\"350902\":\"蕉城区\",\"350921\":\"霞浦县\",\"350922\":\"古田县\",\"350923\":\"屏南县\",\"350924\":\"寿宁县\",\"350925\":\"周宁县\",\"350926\":\"柘荣县\",\"350981\":\"福安市\",\"350982\":\"福鼎市\",\"360000\":\"江西省\",\"360100\":\"南昌市\",\"360102\":\"东湖区\",\"360103\":\"西湖区\",\"360104\":\"青云谱区\",\"360105\":\"湾里区\",\"360111\":\"青山湖区\",\"360112\":\"新建区\",\"360121\":\"南昌县\",\"360123\":\"安义县\",\"360124\":\"进贤县\",\"360200\":\"景德镇市\",\"360202\":\"昌江区\",\"360203\":\"珠山区\",\"360222\":\"浮梁县\",\"360281\":\"乐平市\",\"360300\":\"萍乡市\",\"360302\":\"安源区\",\"360313\":\"湘东区\",\"360321\":\"莲花县\",\"360322\":\"上栗县\",\"360323\":\"芦溪县\",\"360400\":\"九江市\",\"360402\":\"濂溪区\",\"360403\":\"浔阳区\",\"360421\":\"柴桑区\",\"360423\":\"武宁县\",\"360424\":\"修水县\",\"360425\":\"永修县\",\"360426\":\"德安县\",\"360428\":\"都昌县\",\"360429\":\"湖口县\",\"360430\":\"彭泽县\",\"360481\":\"瑞昌市\",\"360482\":\"共青城市\",\"360483\":\"庐山市\",\"360500\":\"新余市\",\"360502\":\"渝水区\",\"360521\":\"分宜县\",\"360600\":\"鹰潭市\",\"360602\":\"月湖区\",\"360622\":\"余江县\",\"360681\":\"贵溪市\",\"360700\":\"赣州市\",\"360702\":\"章贡区\",\"360703\":\"南康区\",\"360704\":\"赣县区\",\"360722\":\"信丰县\",\"360723\":\"大余县\",\"360724\":\"上犹县\",\"360725\":\"崇义县\",\"360726\":\"安远县\",\"360727\":\"龙南县\",\"360728\":\"定南县\",\"360729\":\"全南县\",\"360730\":\"宁都县\",\"360731\":\"于都县\",\"360732\":\"兴国县\",\"360733\":\"会昌县\",\"360734\":\"寻乌县\",\"360735\":\"石城县\",\"360781\":\"瑞金市\",\"360800\":\"吉安市\",\"360802\":\"吉州区\",\"360803\":\"青原区\",\"360821\":\"吉安县\",\"360822\":\"吉水县\",\"360823\":\"峡江县\",\"360824\":\"新干县\",\"360825\":\"永丰县\",\"360826\":\"泰和县\",\"360827\":\"遂川县\",\"360828\":\"万安县\",\"360829\":\"安福县\",\"360830\":\"永新县\",\"360881\":\"井冈山市\",\"360900\":\"宜春市\",\"360902\":\"袁州区\",\"360921\":\"奉新县\",\"360922\":\"万载县\",\"360923\":\"上高县\",\"360924\":\"宜丰县\",\"360925\":\"靖安县\",\"360926\":\"铜鼓县\",\"360981\":\"丰城市\",\"360982\":\"樟树市\",\"360983\":\"高安市\",\"361000\":\"抚州市\",\"361002\":\"临川区\",\"361003\":\"东乡区\",\"361021\":\"南城县\",\"361022\":\"黎川县\",\"361023\":\"南丰县\",\"361024\":\"崇仁县\",\"361025\":\"乐安县\",\"361026\":\"宜黄县\",\"361027\":\"金溪县\",\"361028\":\"资溪县\",\"361030\":\"广昌县\",\"361100\":\"上饶市\",\"361102\":\"信州区\",\"361103\":\"广丰区\",\"361121\":\"上饶县\",\"361123\":\"玉山县\",\"361124\":\"铅山县\",\"361125\":\"横峰县\",\"361126\":\"弋阳县\",\"361127\":\"余干县\",\"361128\":\"鄱阳县\",\"361129\":\"万年县\",\"361130\":\"婺源县\",\"361181\":\"德兴市\",\"370000\":\"山东省\",\"370100\":\"济南市\",\"370102\":\"历下区\",\"370103\":\"市中区\",\"370104\":\"槐荫区\",\"370105\":\"天桥区\",\"370112\":\"历城区\",\"370113\":\"长清区\",\"370114\":\"章丘区\",\"370124\":\"平阴县\",\"370125\":\"济阳县\",\"370126\":\"商河县\",\"370200\":\"青岛市\",\"370202\":\"市南区\",\"370203\":\"市北区\",\"370211\":\"黄岛区\",\"370212\":\"崂山区\",\"370213\":\"李沧区\",\"370214\":\"城阳区\",\"370281\":\"胶州市\",\"370282\":\"即墨区\",\"370283\":\"平度市\",\"370285\":\"莱西市\",\"370300\":\"淄博市\",\"370302\":\"淄川区\",\"370303\":\"张店区\",\"370304\":\"博山区\",\"370305\":\"临淄区\",\"370306\":\"周村区\",\"370321\":\"桓台县\",\"370322\":\"高青县\",\"370323\":\"沂源县\",\"370400\":\"枣庄市\",\"370402\":\"市中区\",\"370403\":\"薛城区\",\"370404\":\"峄城区\",\"370405\":\"台儿庄区\",\"370406\":\"山亭区\",\"370481\":\"滕州市\",\"370500\":\"东营市\",\"370502\":\"东营区\",\"370503\":\"河口区\",\"370505\":\"垦利区\",\"370522\":\"利津县\",\"370523\":\"广饶县\",\"370600\":\"烟台市\",\"370602\":\"芝罘区\",\"370611\":\"福山区\",\"370612\":\"牟平区\",\"370613\":\"莱山区\",\"370634\":\"长岛县\",\"370681\":\"龙口市\",\"370682\":\"莱阳市\",\"370683\":\"莱州市\",\"370684\":\"蓬莱市\",\"370685\":\"招远市\",\"370686\":\"栖霞市\",\"370687\":\"海阳市\",\"370700\":\"潍坊市\",\"370702\":\"潍城区\",\"370703\":\"寒亭区\",\"370704\":\"坊子区\",\"370705\":\"奎文区\",\"370724\":\"临朐县\",\"370725\":\"昌乐县\",\"370781\":\"青州市\",\"370782\":\"诸城市\",\"370783\":\"寿光市\",\"370784\":\"安丘市\",\"370785\":\"高密市\",\"370786\":\"昌邑市\",\"370800\":\"济宁市\",\"370811\":\"任城区\",\"370812\":\"兖州区\",\"370826\":\"微山县\",\"370827\":\"鱼台县\",\"370828\":\"金乡县\",\"370829\":\"嘉祥县\",\"370830\":\"汶上县\",\"370831\":\"泗水县\",\"370832\":\"梁山县\",\"370881\":\"曲阜市\",\"370883\":\"邹城市\",\"370900\":\"泰安市\",\"370902\":\"泰山区\",\"370911\":\"岱岳区\",\"370921\":\"宁阳县\",\"370923\":\"东平县\",\"370982\":\"新泰市\",\"370983\":\"肥城市\",\"371000\":\"威海市\",\"371002\":\"环翠区\",\"371003\":\"文登区\",\"371082\":\"荣成市\",\"371083\":\"乳山市\",\"371100\":\"日照市\",\"371102\":\"东港区\",\"371103\":\"岚山区\",\"371121\":\"五莲县\",\"371122\":\"莒县\",\"371200\":\"莱芜市\",\"371202\":\"莱城区\",\"371203\":\"钢城区\",\"371300\":\"临沂市\",\"371302\":\"兰山区\",\"371311\":\"罗庄区\",\"371312\":\"河东区\",\"371321\":\"沂南县\",\"371322\":\"郯城县\",\"371323\":\"沂水县\",\"371324\":\"兰陵县\",\"371325\":\"费县\",\"371326\":\"平邑县\",\"371327\":\"莒南县\",\"371328\":\"蒙阴县\",\"371329\":\"临沭县\",\"371400\":\"德州市\",\"371402\":\"德城区\",\"371403\":\"陵城区\",\"371422\":\"宁津县\",\"371423\":\"庆云县\",\"371424\":\"临邑县\",\"371425\":\"齐河县\",\"371426\":\"平原县\",\"371427\":\"夏津县\",\"371428\":\"武城县\",\"371481\":\"乐陵市\",\"371482\":\"禹城市\",\"371500\":\"聊城市\",\"371502\":\"东昌府区\",\"371521\":\"阳谷县\",\"371522\":\"莘县\",\"371523\":\"茌平县\",\"371524\":\"东阿县\",\"371525\":\"冠县\",\"371526\":\"高唐县\",\"371581\":\"临清市\",\"371600\":\"滨州市\",\"371602\":\"滨城区\",\"371603\":\"沾化区\",\"371621\":\"惠民县\",\"371622\":\"阳信县\",\"371623\":\"无棣县\",\"371625\":\"博兴县\",\"371626\":\"邹平县\",\"371700\":\"菏泽市\",\"371702\":\"牡丹区\",\"371703\":\"定陶区\",\"371721\":\"曹县\",\"371722\":\"单县\",\"371723\":\"成武县\",\"371724\":\"巨野县\",\"371725\":\"郓城县\",\"371726\":\"鄄城县\",\"371728\":\"东明县\",\"410000\":\"河南省\",\"410100\":\"郑州市\",\"410102\":\"中原区\",\"410103\":\"二七区\",\"410104\":\"管城回族区\",\"410105\":\"金水区\",\"410106\":\"上街区\",\"410108\":\"惠济区\",\"410122\":\"中牟县\",\"410181\":\"巩义市\",\"410182\":\"荥阳市\",\"410183\":\"新密市\",\"410184\":\"新郑市\",\"410185\":\"登封市\",\"410200\":\"开封市\",\"410202\":\"龙亭区\",\"410203\":\"顺河回族区\",\"410204\":\"鼓楼区\",\"410205\":\"禹王台区\",\"410212\":\"祥符区\",\"410221\":\"杞县\",\"410222\":\"通许县\",\"410223\":\"尉氏县\",\"410225\":\"兰考县\",\"410300\":\"洛阳市\",\"410302\":\"老城区\",\"410303\":\"西工区\",\"410304\":\"瀍河回族区\",\"410305\":\"涧西区\",\"410306\":\"吉利区\",\"410311\":\"洛龙区\",\"410322\":\"孟津县\",\"410323\":\"新安县\",\"410324\":\"栾川县\",\"410325\":\"嵩县\",\"410326\":\"汝阳县\",\"410327\":\"宜阳县\",\"410328\":\"洛宁县\",\"410329\":\"伊川县\",\"410381\":\"偃师市\",\"410400\":\"平顶山市\",\"410402\":\"新华区\",\"410403\":\"卫东区\",\"410404\":\"石龙区\",\"410411\":\"湛河区\",\"410421\":\"宝丰县\",\"410422\":\"叶县\",\"410423\":\"鲁山县\",\"410425\":\"郏县\",\"410481\":\"舞钢市\",\"410482\":\"汝州市\",\"410500\":\"安阳市\",\"410502\":\"文峰区\",\"410503\":\"北关区\",\"410505\":\"殷都区\",\"410506\":\"龙安区\",\"410522\":\"安阳县\",\"410523\":\"汤阴县\",\"410526\":\"滑县\",\"410527\":\"内黄县\",\"410581\":\"林州市\",\"410600\":\"鹤壁市\",\"410602\":\"鹤山区\",\"410603\":\"山城区\",\"410611\":\"淇滨区\",\"410621\":\"浚县\",\"410622\":\"淇县\",\"410700\":\"新乡市\",\"410702\":\"红旗区\",\"410703\":\"卫滨区\",\"410704\":\"凤泉区\",\"410711\":\"牧野区\",\"410721\":\"新乡县\",\"410724\":\"获嘉县\",\"410725\":\"原阳县\",\"410726\":\"延津县\",\"410727\":\"封丘县\",\"410728\":\"长垣县\",\"410781\":\"卫辉市\",\"410782\":\"辉县市\",\"410800\":\"焦作市\",\"410802\":\"解放区\",\"410803\":\"中站区\",\"410804\":\"马村区\",\"410811\":\"山阳区\",\"410821\":\"修武县\",\"410822\":\"博爱县\",\"410823\":\"武陟县\",\"410825\":\"温县\",\"410882\":\"沁阳市\",\"410883\":\"孟州市\",\"410900\":\"濮阳市\",\"410902\":\"华龙区\",\"410922\":\"清丰县\",\"410923\":\"南乐县\",\"410926\":\"范县\",\"410927\":\"台前县\",\"410928\":\"濮阳县\",\"411000\":\"许昌市\",\"411002\":\"魏都区\",\"411003\":\"建安区\",\"411024\":\"鄢陵县\",\"411025\":\"襄城县\",\"411081\":\"禹州市\",\"411082\":\"长葛市\",\"411100\":\"漯河市\",\"411102\":\"源汇区\",\"411103\":\"郾城区\",\"411104\":\"召陵区\",\"411121\":\"舞阳县\",\"411122\":\"临颍县\",\"411200\":\"三门峡市\",\"411202\":\"湖滨区\",\"411203\":\"陕州区\",\"411221\":\"渑池县\",\"411224\":\"卢氏县\",\"411281\":\"义马市\",\"411282\":\"灵宝市\",\"411300\":\"南阳市\",\"411302\":\"宛城区\",\"411303\":\"卧龙区\",\"411321\":\"南召县\",\"411322\":\"方城县\",\"411323\":\"西峡县\",\"411324\":\"镇平县\",\"411325\":\"内乡县\",\"411326\":\"淅川县\",\"411327\":\"社旗县\",\"411328\":\"唐河县\",\"411329\":\"新野县\",\"411330\":\"桐柏县\",\"411381\":\"邓州市\",\"411400\":\"商丘市\",\"411402\":\"梁园区\",\"411403\":\"睢阳区\",\"411421\":\"民权县\",\"411422\":\"睢县\",\"411423\":\"宁陵县\",\"411424\":\"柘城县\",\"411425\":\"虞城县\",\"411426\":\"夏邑县\",\"411481\":\"永城市\",\"411500\":\"信阳市\",\"411502\":\"浉河区\",\"411503\":\"平桥区\",\"411521\":\"罗山县\",\"411522\":\"光山县\",\"411523\":\"新县\",\"411524\":\"商城县\",\"411525\":\"固始县\",\"411526\":\"潢川县\",\"411527\":\"淮滨县\",\"411528\":\"息县\",\"411600\":\"周口市\",\"411602\":\"川汇区\",\"411621\":\"扶沟县\",\"411622\":\"西华县\",\"411623\":\"商水县\",\"411624\":\"沈丘县\",\"411625\":\"郸城县\",\"411626\":\"淮阳县\",\"411627\":\"太康县\",\"411628\":\"鹿邑县\",\"411681\":\"项城市\",\"411700\":\"驻马店市\",\"411702\":\"驿城区\",\"411721\":\"西平县\",\"411722\":\"上蔡县\",\"411723\":\"平舆县\",\"411724\":\"正阳县\",\"411725\":\"确山县\",\"411726\":\"泌阳县\",\"411727\":\"汝南县\",\"411728\":\"遂平县\",\"411729\":\"新蔡县\",\"419001\":\"济源市\",\"420000\":\"湖北省\",\"420100\":\"武汉市\",\"420102\":\"江岸区\",\"420103\":\"江汉区\",\"420104\":\"硚口区\",\"420105\":\"汉阳区\",\"420106\":\"武昌区\",\"420107\":\"青山区\",\"420111\":\"洪山区\",\"420112\":\"东西湖区\",\"420113\":\"汉南区\",\"420114\":\"蔡甸区\",\"420115\":\"江夏区\",\"420116\":\"黄陂区\",\"420117\":\"新洲区\",\"420200\":\"黄石市\",\"420202\":\"黄石港区\",\"420203\":\"西塞山区\",\"420204\":\"下陆区\",\"420205\":\"铁山区\",\"420222\":\"阳新县\",\"420281\":\"大冶市\",\"420300\":\"十堰市\",\"420302\":\"茅箭区\",\"420303\":\"张湾区\",\"420304\":\"郧阳区\",\"420322\":\"郧西县\",\"420323\":\"竹山县\",\"420324\":\"竹溪县\",\"420325\":\"房县\",\"420381\":\"丹江口市\",\"420500\":\"宜昌市\",\"420502\":\"西陵区\",\"420503\":\"伍家岗区\",\"420504\":\"点军区\",\"420505\":\"猇亭区\",\"420506\":\"夷陵区\",\"420525\":\"远安县\",\"420526\":\"兴山县\",\"420527\":\"秭归县\",\"420528\":\"长阳土家族自治县\",\"420529\":\"五峰土家族自治县\",\"420581\":\"宜都市\",\"420582\":\"当阳市\",\"420583\":\"枝江市\",\"420600\":\"襄阳市\",\"420602\":\"襄城区\",\"420606\":\"樊城区\",\"420607\":\"襄州区\",\"420624\":\"南漳县\",\"420625\":\"谷城县\",\"420626\":\"保康县\",\"420682\":\"老河口市\",\"420683\":\"枣阳市\",\"420684\":\"宜城市\",\"420700\":\"鄂州市\",\"420702\":\"梁子湖区\",\"420703\":\"华容区\",\"420704\":\"鄂城区\",\"420800\":\"荆门市\",\"420802\":\"东宝区\",\"420804\":\"掇刀区\",\"420821\":\"京山县\",\"420822\":\"沙洋县\",\"420881\":\"钟祥市\",\"420900\":\"孝感市\",\"420902\":\"孝南区\",\"420921\":\"孝昌县\",\"420922\":\"大悟县\",\"420923\":\"云梦县\",\"420981\":\"应城市\",\"420982\":\"安陆市\",\"420984\":\"汉川市\",\"421000\":\"荆州市\",\"421002\":\"沙市区\",\"421003\":\"荆州区\",\"421022\":\"公安县\",\"421023\":\"监利县\",\"421024\":\"江陵县\",\"421081\":\"石首市\",\"421083\":\"洪湖市\",\"421087\":\"松滋市\",\"421100\":\"黄冈市\",\"421102\":\"黄州区\",\"421121\":\"团风县\",\"421122\":\"红安县\",\"421123\":\"罗田县\",\"421124\":\"英山县\",\"421125\":\"浠水县\",\"421126\":\"蕲春县\",\"421127\":\"黄梅县\",\"421181\":\"麻城市\",\"421182\":\"武穴市\",\"421200\":\"咸宁市\",\"421202\":\"咸安区\",\"421221\":\"嘉鱼县\",\"421222\":\"通城县\",\"421223\":\"崇阳县\",\"421224\":\"通山县\",\"421281\":\"赤壁市\",\"421300\":\"随州市\",\"421303\":\"曾都区\",\"421321\":\"随县\",\"421381\":\"广水市\",\"422800\":\"恩施土家族苗族自治州\",\"422801\":\"恩施市\",\"422802\":\"利川市\",\"422822\":\"建始县\",\"422823\":\"巴东县\",\"422825\":\"宣恩县\",\"422826\":\"咸丰县\",\"422827\":\"来凤县\",\"422828\":\"鹤峰县\",\"429004\":\"仙桃市\",\"429005\":\"潜江市\",\"429006\":\"天门市\",\"429021\":\"神农架林区\",\"430000\":\"湖南省\",\"430100\":\"长沙市\",\"430102\":\"芙蓉区\",\"430103\":\"天心区\",\"430104\":\"岳麓区\",\"430105\":\"开福区\",\"430111\":\"雨花区\",\"430112\":\"望城区\",\"430121\":\"长沙县\",\"430124\":\"宁乡市\",\"430181\":\"浏阳市\",\"430200\":\"株洲市\",\"430202\":\"荷塘区\",\"430203\":\"芦淞区\",\"430204\":\"石峰区\",\"430211\":\"天元区\",\"430221\":\"株洲县\",\"430223\":\"攸县\",\"430224\":\"茶陵县\",\"430225\":\"炎陵县\",\"430281\":\"醴陵市\",\"430300\":\"湘潭市\",\"430302\":\"雨湖区\",\"430304\":\"岳塘区\",\"430321\":\"湘潭县\",\"430381\":\"湘乡市\",\"430382\":\"韶山市\",\"430400\":\"衡阳市\",\"430405\":\"珠晖区\",\"430406\":\"雁峰区\",\"430407\":\"石鼓区\",\"430408\":\"蒸湘区\",\"430412\":\"南岳区\",\"430421\":\"衡阳县\",\"430422\":\"衡南县\",\"430423\":\"衡山县\",\"430424\":\"衡东县\",\"430426\":\"祁东县\",\"430481\":\"耒阳市\",\"430482\":\"常宁市\",\"430500\":\"邵阳市\",\"430502\":\"双清区\",\"430503\":\"大祥区\",\"430511\":\"北塔区\",\"430521\":\"邵东县\",\"430522\":\"新邵县\",\"430523\":\"邵阳县\",\"430524\":\"隆回县\",\"430525\":\"洞口县\",\"430527\":\"绥宁县\",\"430528\":\"新宁县\",\"430529\":\"城步苗族自治县\",\"430581\":\"武冈市\",\"430600\":\"岳阳市\",\"430602\":\"岳阳楼区\",\"430603\":\"云溪区\",\"430611\":\"君山区\",\"430621\":\"岳阳县\",\"430623\":\"华容县\",\"430624\":\"湘阴县\",\"430626\":\"平江县\",\"430681\":\"汨罗市\",\"430682\":\"临湘市\",\"430700\":\"常德市\",\"430702\":\"武陵区\",\"430703\":\"鼎城区\",\"430721\":\"安乡县\",\"430722\":\"汉寿县\",\"430723\":\"澧县\",\"430724\":\"临澧县\",\"430725\":\"桃源县\",\"430726\":\"石门县\",\"430781\":\"津市市\",\"430800\":\"张家界市\",\"430802\":\"永定区\",\"430811\":\"武陵源区\",\"430821\":\"慈利县\",\"430822\":\"桑植县\",\"430900\":\"益阳市\",\"430902\":\"资阳区\",\"430903\":\"赫山区\",\"430921\":\"南县\",\"430922\":\"桃江县\",\"430923\":\"安化县\",\"430981\":\"沅江市\",\"431000\":\"郴州市\",\"431002\":\"北湖区\",\"431003\":\"苏仙区\",\"431021\":\"桂阳县\",\"431022\":\"宜章县\",\"431023\":\"永兴县\",\"431024\":\"嘉禾县\",\"431025\":\"临武县\",\"431026\":\"汝城县\",\"431027\":\"桂东县\",\"431028\":\"安仁县\",\"431081\":\"资兴市\",\"431100\":\"永州市\",\"431102\":\"零陵区\",\"431103\":\"冷水滩区\",\"431121\":\"祁阳县\",\"431122\":\"东安县\",\"431123\":\"双牌县\",\"431124\":\"道县\",\"431125\":\"江永县\",\"431126\":\"宁远县\",\"431127\":\"蓝山县\",\"431128\":\"新田县\",\"431129\":\"江华瑶族自治县\",\"431200\":\"怀化市\",\"431202\":\"鹤城区\",\"431221\":\"中方县\",\"431222\":\"沅陵县\",\"431223\":\"辰溪县\",\"431224\":\"溆浦县\",\"431225\":\"会同县\",\"431226\":\"麻阳苗族自治县\",\"431227\":\"新晃侗族自治县\",\"431228\":\"芷江侗族自治县\",\"431229\":\"靖州苗族侗族自治县\",\"431230\":\"通道侗族自治县\",\"431281\":\"洪江市\",\"431300\":\"娄底市\",\"431302\":\"娄星区\",\"431321\":\"双峰县\",\"431322\":\"新化县\",\"431381\":\"冷水江市\",\"431382\":\"涟源市\",\"433100\":\"湘西土家族苗族自治州\",\"433101\":\"吉首市\",\"433122\":\"泸溪县\",\"433123\":\"凤凰县\",\"433124\":\"花垣县\",\"433125\":\"保靖县\",\"433126\":\"古丈县\",\"433127\":\"永顺县\",\"433130\":\"龙山县\",\"440000\":\"广东省\",\"440100\":\"广州市\",\"440103\":\"荔湾区\",\"440104\":\"越秀区\",\"440105\":\"海珠区\",\"440106\":\"天河区\",\"440111\":\"白云区\",\"440112\":\"黄埔区\",\"440113\":\"番禺区\",\"440114\":\"花都区\",\"440115\":\"南沙区\",\"440117\":\"从化区\",\"440118\":\"增城区\",\"440200\":\"韶关市\",\"440203\":\"武江区\",\"440204\":\"浈江区\",\"440205\":\"曲江区\",\"440222\":\"始兴县\",\"440224\":\"仁化县\",\"440229\":\"翁源县\",\"440232\":\"乳源瑶族自治县\",\"440233\":\"新丰县\",\"440281\":\"乐昌市\",\"440282\":\"南雄市\",\"440300\":\"深圳市\",\"440303\":\"罗湖区\",\"440304\":\"福田区\",\"440305\":\"南山区\",\"440306\":\"宝安区\",\"440307\":\"龙岗区\",\"440308\":\"盐田区\",\"440309\":\"龙华区\",\"440310\":\"坪山区\",\"440400\":\"珠海市\",\"440402\":\"香洲区\",\"440403\":\"斗门区\",\"440404\":\"金湾区\",\"440500\":\"汕头市\",\"440507\":\"龙湖区\",\"440511\":\"金平区\",\"440512\":\"濠江区\",\"440513\":\"潮阳区\",\"440514\":\"潮南区\",\"440515\":\"澄海区\",\"440523\":\"南澳县\",\"440600\":\"佛山市\",\"440604\":\"禅城区\",\"440605\":\"南海区\",\"440606\":\"顺德区\",\"440607\":\"三水区\",\"440608\":\"高明区\",\"440700\":\"江门市\",\"440703\":\"蓬江区\",\"440704\":\"江海区\",\"440705\":\"新会区\",\"440781\":\"台山市\",\"440783\":\"开平市\",\"440784\":\"鹤山市\",\"440785\":\"恩平市\",\"440800\":\"湛江市\",\"440802\":\"赤坎区\",\"440803\":\"霞山区\",\"440804\":\"坡头区\",\"440811\":\"麻章区\",\"440823\":\"遂溪县\",\"440825\":\"徐闻县\",\"440881\":\"廉江市\",\"440882\":\"雷州市\",\"440883\":\"吴川市\",\"440900\":\"茂名市\",\"440902\":\"茂南区\",\"440904\":\"电白区\",\"440981\":\"高州市\",\"440982\":\"化州市\",\"440983\":\"信宜市\",\"441200\":\"肇庆市\",\"441202\":\"端州区\",\"441203\":\"鼎湖区\",\"441204\":\"高要区\",\"441223\":\"广宁县\",\"441224\":\"怀集县\",\"441225\":\"封开县\",\"441226\":\"德庆县\",\"441284\":\"四会市\",\"441300\":\"惠州市\",\"441302\":\"惠城区\",\"441303\":\"惠阳区\",\"441322\":\"博罗县\",\"441323\":\"惠东县\",\"441324\":\"龙门县\",\"441400\":\"梅州市\",\"441402\":\"梅江区\",\"441403\":\"梅县区\",\"441422\":\"大埔县\",\"441423\":\"丰顺县\",\"441424\":\"五华县\",\"441426\":\"平远县\",\"441427\":\"蕉岭县\",\"441481\":\"兴宁市\",\"441500\":\"汕尾市\",\"441502\":\"城区\",\"441521\":\"海丰县\",\"441523\":\"陆河县\",\"441581\":\"陆丰市\",\"441600\":\"河源市\",\"441602\":\"源城区\",\"441621\":\"紫金县\",\"441622\":\"龙川县\",\"441623\":\"连平县\",\"441624\":\"和平县\",\"441625\":\"东源县\",\"441700\":\"阳江市\",\"441702\":\"江城区\",\"441704\":\"阳东区\",\"441721\":\"阳西县\",\"441781\":\"阳春市\",\"441800\":\"清远市\",\"441802\":\"清城区\",\"441803\":\"清新区\",\"441821\":\"佛冈县\",\"441823\":\"阳山县\",\"441825\":\"连山壮族瑶族自治县\",\"441826\":\"连南瑶族自治县\",\"441881\":\"英德市\",\"441882\":\"连州市\",\"441900\":\"东莞市\",\"442000\":\"中山市\",\"445100\":\"潮州市\",\"445102\":\"湘桥区\",\"445103\":\"潮安区\",\"445122\":\"饶平县\",\"445200\":\"揭阳市\",\"445202\":\"榕城区\",\"445203\":\"揭东区\",\"445222\":\"揭西县\",\"445224\":\"惠来县\",\"445281\":\"普宁市\",\"445300\":\"云浮市\",\"445302\":\"云城区\",\"445303\":\"云安区\",\"445321\":\"新兴县\",\"445322\":\"郁南县\",\"445381\":\"罗定市\",\"450000\":\"广西壮族自治区\",\"450100\":\"南宁市\",\"450102\":\"兴宁区\",\"450103\":\"青秀区\",\"450105\":\"江南区\",\"450107\":\"西乡塘区\",\"450108\":\"良庆区\",\"450109\":\"邕宁区\",\"450110\":\"武鸣区\",\"450123\":\"隆安县\",\"450124\":\"马山县\",\"450125\":\"上林县\",\"450126\":\"宾阳县\",\"450127\":\"横县\",\"450200\":\"柳州市\",\"450202\":\"城中区\",\"450203\":\"鱼峰区\",\"450204\":\"柳南区\",\"450205\":\"柳北区\",\"450206\":\"柳江区\",\"450222\":\"柳城县\",\"450223\":\"鹿寨县\",\"450224\":\"融安县\",\"450225\":\"融水苗族自治县\",\"450226\":\"三江侗族自治县\",\"450300\":\"桂林市\",\"450302\":\"秀峰区\",\"450303\":\"叠彩区\",\"450304\":\"象山区\",\"450305\":\"七星区\",\"450311\":\"雁山区\",\"450312\":\"临桂区\",\"450321\":\"阳朔县\",\"450323\":\"灵川县\",\"450324\":\"全州县\",\"450325\":\"兴安县\",\"450326\":\"永福县\",\"450327\":\"灌阳县\",\"450328\":\"龙胜各族自治县\",\"450329\":\"资源县\",\"450330\":\"平乐县\",\"450331\":\"荔浦县\",\"450332\":\"恭城瑶族自治县\",\"450400\":\"梧州市\",\"450403\":\"万秀区\",\"450405\":\"长洲区\",\"450406\":\"龙圩区\",\"450421\":\"苍梧县\",\"450422\":\"藤县\",\"450423\":\"蒙山县\",\"450481\":\"岑溪市\",\"450500\":\"北海市\",\"450502\":\"海城区\",\"450503\":\"银海区\",\"450512\":\"铁山港区\",\"450521\":\"合浦县\",\"450600\":\"防城港市\",\"450602\":\"港口区\",\"450603\":\"防城区\",\"450621\":\"上思县\",\"450681\":\"东兴市\",\"450700\":\"钦州市\",\"450702\":\"钦南区\",\"450703\":\"钦北区\",\"450721\":\"灵山县\",\"450722\":\"浦北县\",\"450800\":\"贵港市\",\"450802\":\"港北区\",\"450803\":\"港南区\",\"450804\":\"覃塘区\",\"450821\":\"平南县\",\"450881\":\"桂平市\",\"450900\":\"玉林市\",\"450902\":\"玉州区\",\"450903\":\"福绵区\",\"450921\":\"容县\",\"450922\":\"陆川县\",\"450923\":\"博白县\",\"450924\":\"兴业县\",\"450981\":\"北流市\",\"451000\":\"百色市\",\"451002\":\"右江区\",\"451021\":\"田阳县\",\"451022\":\"田东县\",\"451023\":\"平果县\",\"451024\":\"德保县\",\"451026\":\"那坡县\",\"451027\":\"凌云县\",\"451028\":\"乐业县\",\"451029\":\"田林县\",\"451030\":\"西林县\",\"451031\":\"隆林各族自治县\",\"451081\":\"靖西市\",\"451100\":\"贺州市\",\"451102\":\"八步区\",\"451103\":\"平桂区\",\"451121\":\"昭平县\",\"451122\":\"钟山县\",\"451123\":\"富川瑶族自治县\",\"451200\":\"河池市\",\"451202\":\"金城江区\",\"451203\":\"宜州区\",\"451221\":\"南丹县\",\"451222\":\"天峨县\",\"451223\":\"凤山县\",\"451224\":\"东兰县\",\"451225\":\"罗城仫佬族自治县\",\"451226\":\"环江毛南族自治县\",\"451227\":\"巴马瑶族自治县\",\"451228\":\"都安瑶族自治县\",\"451229\":\"大化瑶族自治县\",\"451300\":\"来宾市\",\"451302\":\"兴宾区\",\"451321\":\"忻城县\",\"451322\":\"象州县\",\"451323\":\"武宣县\",\"451324\":\"金秀瑶族自治县\",\"451381\":\"合山市\",\"451400\":\"崇左市\",\"451402\":\"江州区\",\"451421\":\"扶绥县\",\"451422\":\"宁明县\",\"451423\":\"龙州县\",\"451424\":\"大新县\",\"451425\":\"天等县\",\"451481\":\"凭祥市\",\"460000\":\"海南省\",\"460100\":\"海口市\",\"460105\":\"秀英区\",\"460106\":\"龙华区\",\"460107\":\"琼山区\",\"460108\":\"美兰区\",\"460200\":\"三亚市\",\"460202\":\"海棠区\",\"460203\":\"吉阳区\",\"460204\":\"天涯区\",\"460205\":\"崖州区\",\"460300\":\"三沙市\",\"460321\":\"西沙群岛\",\"460322\":\"南沙群岛\",\"460323\":\"中沙群岛\",\"460324\":\"永乐群岛\",\"460400\":\"儋州市\",\"469001\":\"五指山市\",\"469002\":\"琼海市\",\"469005\":\"文昌市\",\"469006\":\"万宁市\",\"469007\":\"东方市\",\"469021\":\"定安县\",\"469022\":\"屯昌县\",\"469023\":\"澄迈县\",\"469024\":\"临高县\",\"469025\":\"白沙黎族自治县\",\"469026\":\"昌江黎族自治县\",\"469027\":\"乐东黎族自治县\",\"469028\":\"陵水黎族自治县\",\"469029\":\"保亭黎族苗族自治县\",\"469030\":\"琼中黎族苗族自治县\",\"500000\":\"重庆市\",\"500100\":\"重庆市\",\"500101\":\"万州区\",\"500102\":\"涪陵区\",\"500103\":\"渝中区\",\"500104\":\"大渡口区\",\"500105\":\"江北区\",\"500106\":\"沙坪坝区\",\"500107\":\"九龙坡区\",\"500108\":\"南岸区\",\"500109\":\"北碚区\",\"500110\":\"綦江区\",\"500111\":\"大足区\",\"500112\":\"渝北区\",\"500113\":\"巴南区\",\"500114\":\"黔江区\",\"500115\":\"长寿区\",\"500116\":\"江津区\",\"500117\":\"合川区\",\"500118\":\"永川区\",\"500119\":\"南川区\",\"500120\":\"璧山区\",\"500151\":\"铜梁区\",\"500152\":\"潼南区\",\"500153\":\"荣昌区\",\"500154\":\"开州区\",\"500155\":\"梁平区\",\"500156\":\"武隆区\",\"500229\":\"城口县\",\"500230\":\"丰都县\",\"500231\":\"垫江县\",\"500233\":\"忠县\",\"500235\":\"云阳县\",\"500236\":\"奉节县\",\"500237\":\"巫山县\",\"500238\":\"巫溪县\",\"500240\":\"石柱土家族自治县\",\"500241\":\"秀山土家族苗族自治县\",\"500242\":\"酉阳土家族苗族自治县\",\"500243\":\"彭水苗族土家族自治县\",\"510000\":\"四川省\",\"510100\":\"成都市\",\"510104\":\"锦江区\",\"510105\":\"青羊区\",\"510106\":\"金牛区\",\"510107\":\"武侯区\",\"510108\":\"成华区\",\"510112\":\"龙泉驿区\",\"510113\":\"青白江区\",\"510114\":\"新都区\",\"510115\":\"温江区\",\"510116\":\"双流区\",\"510117\":\"郫都区\",\"510121\":\"金堂县\",\"510129\":\"大邑县\",\"510131\":\"蒲江县\",\"510132\":\"新津县\",\"510181\":\"都江堰市\",\"510182\":\"彭州市\",\"510183\":\"邛崃市\",\"510184\":\"崇州市\",\"510185\":\"简阳市\",\"510300\":\"自贡市\",\"510302\":\"自流井区\",\"510303\":\"贡井区\",\"510304\":\"大安区\",\"510311\":\"沿滩区\",\"510321\":\"荣县\",\"510322\":\"富顺县\",\"510400\":\"攀枝花市\",\"510402\":\"东区\",\"510403\":\"西区\",\"510411\":\"仁和区\",\"510421\":\"米易县\",\"510422\":\"盐边县\",\"510500\":\"泸州市\",\"510502\":\"江阳区\",\"510503\":\"纳溪区\",\"510504\":\"龙马潭区\",\"510521\":\"泸县\",\"510522\":\"合江县\",\"510524\":\"叙永县\",\"510525\":\"古蔺县\",\"510600\":\"德阳市\",\"510603\":\"旌阳区\",\"510623\":\"中江县\",\"510626\":\"罗江县\",\"510681\":\"广汉市\",\"510682\":\"什邡市\",\"510683\":\"绵竹市\",\"510700\":\"绵阳市\",\"510703\":\"涪城区\",\"510704\":\"游仙区\",\"510705\":\"安州区\",\"510722\":\"三台县\",\"510723\":\"盐亭县\",\"510725\":\"梓潼县\",\"510726\":\"北川羌族自治县\",\"510727\":\"平武县\",\"510781\":\"江油市\",\"510800\":\"广元市\",\"510802\":\"利州区\",\"510811\":\"昭化区\",\"510812\":\"朝天区\",\"510821\":\"旺苍县\",\"510822\":\"青川县\",\"510823\":\"剑阁县\",\"510824\":\"苍溪县\",\"510900\":\"遂宁市\",\"510903\":\"船山区\",\"510904\":\"安居区\",\"510921\":\"蓬溪县\",\"510922\":\"射洪县\",\"510923\":\"大英县\",\"511000\":\"内江市\",\"511002\":\"市中区\",\"511011\":\"东兴区\",\"511024\":\"威远县\",\"511025\":\"资中县\",\"511083\":\"隆昌市\",\"511100\":\"乐山市\",\"511102\":\"市中区\",\"511111\":\"沙湾区\",\"511112\":\"五通桥区\",\"511113\":\"金口河区\",\"511123\":\"犍为县\",\"511124\":\"井研县\",\"511126\":\"夹江县\",\"511129\":\"沐川县\",\"511132\":\"峨边彝族自治县\",\"511133\":\"马边彝族自治县\",\"511181\":\"峨眉山市\",\"511300\":\"南充市\",\"511302\":\"顺庆区\",\"511303\":\"高坪区\",\"511304\":\"嘉陵区\",\"511321\":\"南部县\",\"511322\":\"营山县\",\"511323\":\"蓬安县\",\"511324\":\"仪陇县\",\"511325\":\"西充县\",\"511381\":\"阆中市\",\"511400\":\"眉山市\",\"511402\":\"东坡区\",\"511403\":\"彭山区\",\"511421\":\"仁寿县\",\"511423\":\"洪雅县\",\"511424\":\"丹棱县\",\"511425\":\"青神县\",\"511500\":\"宜宾市\",\"511502\":\"翠屏区\",\"511503\":\"南溪区\",\"511521\":\"宜宾县\",\"511523\":\"江安县\",\"511524\":\"长宁县\",\"511525\":\"高县\",\"511526\":\"珙县\",\"511527\":\"筠连县\",\"511528\":\"兴文县\",\"511529\":\"屏山县\",\"511600\":\"广安市\",\"511602\":\"广安区\",\"511603\":\"前锋区\",\"511621\":\"岳池县\",\"511622\":\"武胜县\",\"511623\":\"邻水县\",\"511681\":\"华蓥市\",\"511700\":\"达州市\",\"511702\":\"通川区\",\"511703\":\"达川区\",\"511722\":\"宣汉县\",\"511723\":\"开江县\",\"511724\":\"大竹县\",\"511725\":\"渠县\",\"511781\":\"万源市\",\"511800\":\"雅安市\",\"511802\":\"雨城区\",\"511803\":\"名山区\",\"511822\":\"荥经县\",\"511823\":\"汉源县\",\"511824\":\"石棉县\",\"511825\":\"天全县\",\"511826\":\"芦山县\",\"511827\":\"宝兴县\",\"511900\":\"巴中市\",\"511902\":\"巴州区\",\"511903\":\"恩阳区\",\"511921\":\"通江县\",\"511922\":\"南江县\",\"511923\":\"平昌县\",\"512000\":\"资阳市\",\"512002\":\"雁江区\",\"512021\":\"安岳县\",\"512022\":\"乐至县\",\"513200\":\"阿坝藏族羌族自治州\",\"513201\":\"马尔康市\",\"513221\":\"汶川县\",\"513222\":\"理县\",\"513223\":\"茂县\",\"513224\":\"松潘县\",\"513225\":\"九寨沟县\",\"513226\":\"金川县\",\"513227\":\"小金县\",\"513228\":\"黑水县\",\"513230\":\"壤塘县\",\"513231\":\"阿坝县\",\"513232\":\"若尔盖县\",\"513233\":\"红原县\",\"513300\":\"甘孜藏族自治州\",\"513301\":\"康定市\",\"513322\":\"泸定县\",\"513323\":\"丹巴县\",\"513324\":\"九龙县\",\"513325\":\"雅江县\",\"513326\":\"道孚县\",\"513327\":\"炉霍县\",\"513328\":\"甘孜县\",\"513329\":\"新龙县\",\"513330\":\"德格县\",\"513331\":\"白玉县\",\"513332\":\"石渠县\",\"513333\":\"色达县\",\"513334\":\"理塘县\",\"513335\":\"巴塘县\",\"513336\":\"乡城县\",\"513337\":\"稻城县\",\"513338\":\"得荣县\",\"513400\":\"凉山彝族自治州\",\"513401\":\"西昌市\",\"513422\":\"木里藏族自治县\",\"513423\":\"盐源县\",\"513424\":\"德昌县\",\"513425\":\"会理县\",\"513426\":\"会东县\",\"513427\":\"宁南县\",\"513428\":\"普格县\",\"513429\":\"布拖县\",\"513430\":\"金阳县\",\"513431\":\"昭觉县\",\"513432\":\"喜德县\",\"513433\":\"冕宁县\",\"513434\":\"越西县\",\"513435\":\"甘洛县\",\"513436\":\"美姑县\",\"513437\":\"雷波县\",\"520000\":\"贵州省\",\"520100\":\"贵阳市\",\"520102\":\"南明区\",\"520103\":\"云岩区\",\"520111\":\"花溪区\",\"520112\":\"乌当区\",\"520113\":\"白云区\",\"520115\":\"观山湖区\",\"520121\":\"开阳县\",\"520122\":\"息烽县\",\"520123\":\"修文县\",\"520181\":\"清镇市\",\"520200\":\"六盘水市\",\"520201\":\"钟山区\",\"520203\":\"六枝特区\",\"520221\":\"水城县\",\"520281\":\"盘州市\",\"520300\":\"遵义市\",\"520302\":\"红花岗区\",\"520303\":\"汇川区\",\"520304\":\"播州区\",\"520322\":\"桐梓县\",\"520323\":\"绥阳县\",\"520324\":\"正安县\",\"520325\":\"道真仡佬族苗族自治县\",\"520326\":\"务川仡佬族苗族自治县\",\"520327\":\"凤冈县\",\"520328\":\"湄潭县\",\"520329\":\"余庆县\",\"520330\":\"习水县\",\"520381\":\"赤水市\",\"520382\":\"仁怀市\",\"520400\":\"安顺市\",\"520402\":\"西秀区\",\"520403\":\"平坝区\",\"520422\":\"普定县\",\"520423\":\"镇宁布依族苗族自治县\",\"520424\":\"关岭布依族苗族自治县\",\"520425\":\"紫云苗族布依族自治县\",\"520500\":\"毕节市\",\"520502\":\"七星关区\",\"520521\":\"大方县\",\"520522\":\"黔西县\",\"520523\":\"金沙县\",\"520524\":\"织金县\",\"520525\":\"纳雍县\",\"520526\":\"威宁彝族回族苗族自治县\",\"520527\":\"赫章县\",\"520600\":\"铜仁市\",\"520602\":\"碧江区\",\"520603\":\"万山区\",\"520621\":\"江口县\",\"520622\":\"玉屏侗族自治县\",\"520623\":\"石阡县\",\"520624\":\"思南县\",\"520625\":\"印江土家族苗族自治县\",\"520626\":\"德江县\",\"520627\":\"沿河土家族自治县\",\"520628\":\"松桃苗族自治县\",\"522300\":\"黔西南布依族苗族自治州\",\"522301\":\"兴义市\",\"522322\":\"兴仁县\",\"522323\":\"普安县\",\"522324\":\"晴隆县\",\"522325\":\"贞丰县\",\"522326\":\"望谟县\",\"522327\":\"册亨县\",\"522328\":\"安龙县\",\"522600\":\"黔东南苗族侗族自治州\",\"522601\":\"凯里市\",\"522622\":\"黄平县\",\"522623\":\"施秉县\",\"522624\":\"三穗县\",\"522625\":\"镇远县\",\"522626\":\"岑巩县\",\"522627\":\"天柱县\",\"522628\":\"锦屏县\",\"522629\":\"剑河县\",\"522630\":\"台江县\",\"522631\":\"黎平县\",\"522632\":\"榕江县\",\"522633\":\"从江县\",\"522634\":\"雷山县\",\"522635\":\"麻江县\",\"522636\":\"丹寨县\",\"522700\":\"黔南布依族苗族自治州\",\"522701\":\"都匀市\",\"522702\":\"福泉市\",\"522722\":\"荔波县\",\"522723\":\"贵定县\",\"522725\":\"瓮安县\",\"522726\":\"独山县\",\"522727\":\"平塘县\",\"522728\":\"罗甸县\",\"522729\":\"长顺县\",\"522730\":\"龙里县\",\"522731\":\"惠水县\",\"522732\":\"三都水族自治县\",\"530000\":\"云南省\",\"530100\":\"昆明市\",\"530102\":\"五华区\",\"530103\":\"盘龙区\",\"530111\":\"官渡区\",\"530112\":\"西山区\",\"530113\":\"东川区\",\"530114\":\"呈贡区\",\"530115\":\"晋宁区\",\"530124\":\"富民县\",\"530125\":\"宜良县\",\"530126\":\"石林彝族自治县\",\"530127\":\"嵩明县\",\"530128\":\"禄劝彝族苗族自治县\",\"530129\":\"寻甸回族彝族自治县\",\"530181\":\"安宁市\",\"530300\":\"曲靖市\",\"530302\":\"麒麟区\",\"530303\":\"沾益区\",\"530321\":\"马龙县\",\"530322\":\"陆良县\",\"530323\":\"师宗县\",\"530324\":\"罗平县\",\"530325\":\"富源县\",\"530326\":\"会泽县\",\"530381\":\"宣威市\",\"530400\":\"玉溪市\",\"530402\":\"红塔区\",\"530403\":\"江川区\",\"530422\":\"澄江县\",\"530423\":\"通海县\",\"530424\":\"华宁县\",\"530425\":\"易门县\",\"530426\":\"峨山彝族自治县\",\"530427\":\"新平彝族傣族自治县\",\"530428\":\"元江哈尼族彝族傣族自治县\",\"530500\":\"保山市\",\"530502\":\"隆阳区\",\"530521\":\"施甸县\",\"530523\":\"龙陵县\",\"530524\":\"昌宁县\",\"530581\":\"腾冲市\",\"530600\":\"昭通市\",\"530602\":\"昭阳区\",\"530621\":\"鲁甸县\",\"530622\":\"巧家县\",\"530623\":\"盐津县\",\"530624\":\"大关县\",\"530625\":\"永善县\",\"530626\":\"绥江县\",\"530627\":\"镇雄县\",\"530628\":\"彝良县\",\"530629\":\"威信县\",\"530630\":\"水富县\",\"530700\":\"丽江市\",\"530702\":\"古城区\",\"530721\":\"玉龙纳西族自治县\",\"530722\":\"永胜县\",\"530723\":\"华坪县\",\"530724\":\"宁蒗彝族自治县\",\"530800\":\"普洱市\",\"530802\":\"思茅区\",\"530821\":\"宁洱哈尼族彝族自治县\",\"530822\":\"墨江哈尼族自治县\",\"530823\":\"景东彝族自治县\",\"530824\":\"景谷傣族彝族自治县\",\"530825\":\"镇沅彝族哈尼族拉祜族自治县\",\"530826\":\"江城哈尼族彝族自治县\",\"530827\":\"孟连傣族拉祜族佤族自治县\",\"530828\":\"澜沧拉祜族自治县\",\"530829\":\"西盟佤族自治县\",\"530900\":\"临沧市\",\"530902\":\"临翔区\",\"530921\":\"凤庆县\",\"530922\":\"云县\",\"530923\":\"永德县\",\"530924\":\"镇康县\",\"530925\":\"双江拉祜族佤族布朗族傣族自治县\",\"530926\":\"耿马傣族佤族自治县\",\"530927\":\"沧源佤族自治县\",\"532300\":\"楚雄彝族自治州\",\"532301\":\"楚雄市\",\"532322\":\"双柏县\",\"532323\":\"牟定县\",\"532324\":\"南华县\",\"532325\":\"姚安县\",\"532326\":\"大姚县\",\"532327\":\"永仁县\",\"532328\":\"元谋县\",\"532329\":\"武定县\",\"532331\":\"禄丰县\",\"532500\":\"红河哈尼族彝族自治州\",\"532501\":\"个旧市\",\"532502\":\"开远市\",\"532503\":\"蒙自市\",\"532504\":\"弥勒市\",\"532523\":\"屏边苗族自治县\",\"532524\":\"建水县\",\"532525\":\"石屏县\",\"532527\":\"泸西县\",\"532528\":\"元阳县\",\"532529\":\"红河县\",\"532530\":\"金平苗族瑶族傣族自治县\",\"532531\":\"绿春县\",\"532532\":\"河口瑶族自治县\",\"532600\":\"文山壮族苗族自治州\",\"532601\":\"文山市\",\"532622\":\"砚山县\",\"532623\":\"西畴县\",\"532624\":\"麻栗坡县\",\"532625\":\"马关县\",\"532626\":\"丘北县\",\"532627\":\"广南县\",\"532628\":\"富宁县\",\"532800\":\"西双版纳傣族自治州\",\"532801\":\"景洪市\",\"532822\":\"勐海县\",\"532823\":\"勐腊县\",\"532900\":\"大理白族自治州\",\"532901\":\"大理市\",\"532922\":\"漾濞彝族自治县\",\"532923\":\"祥云县\",\"532924\":\"宾川县\",\"532925\":\"弥渡县\",\"532926\":\"南涧彝族自治县\",\"532927\":\"巍山彝族回族自治县\",\"532928\":\"永平县\",\"532929\":\"云龙县\",\"532930\":\"洱源县\",\"532931\":\"剑川县\",\"532932\":\"鹤庆县\",\"533100\":\"德宏傣族景颇族自治州\",\"533102\":\"瑞丽市\",\"533103\":\"芒市\",\"533122\":\"梁河县\",\"533123\":\"盈江县\",\"533124\":\"陇川县\",\"533300\":\"怒江傈僳族自治州\",\"533301\":\"泸水市\",\"533323\":\"福贡县\",\"533324\":\"贡山独龙族怒族自治县\",\"533325\":\"兰坪白族普米族自治县\",\"533400\":\"迪庆藏族自治州\",\"533401\":\"香格里拉市\",\"533422\":\"德钦县\",\"533423\":\"维西傈僳族自治县\",\"540000\":\"西藏自治区\",\"540100\":\"拉萨市\",\"540102\":\"城关区\",\"540103\":\"堆龙德庆区\",\"540121\":\"林周县\",\"540122\":\"当雄县\",\"540123\":\"尼木县\",\"540124\":\"曲水县\",\"540126\":\"达孜县\",\"540127\":\"墨竹工卡县\",\"540200\":\"日喀则市\",\"540202\":\"桑珠孜区\",\"540221\":\"南木林县\",\"540222\":\"江孜县\",\"540223\":\"定日县\",\"540224\":\"萨迦县\",\"540225\":\"达孜区\",\"540226\":\"昂仁县\",\"540227\":\"谢通门县\",\"540228\":\"白朗县\",\"540229\":\"仁布县\",\"540230\":\"康马县\",\"540231\":\"定结县\",\"540232\":\"仲巴县\",\"540233\":\"亚东县\",\"540234\":\"吉隆县\",\"540235\":\"聂拉木县\",\"540236\":\"萨嘎县\",\"540237\":\"岗巴县\",\"540300\":\"昌都市\",\"540302\":\"卡若区\",\"540321\":\"江达县\",\"540322\":\"贡觉县\",\"540323\":\"类乌齐县\",\"540324\":\"丁青县\",\"540325\":\"察雅县\",\"540326\":\"八宿县\",\"540327\":\"左贡县\",\"540328\":\"芒康县\",\"540329\":\"洛隆县\",\"540330\":\"边坝县\",\"540400\":\"林芝市\",\"540402\":\"巴宜区\",\"540421\":\"工布江达县\",\"540422\":\"米林县\",\"540423\":\"墨脱县\",\"540424\":\"波密县\",\"540425\":\"察隅县\",\"540426\":\"朗县\",\"540500\":\"山南市\",\"540502\":\"乃东区\",\"540521\":\"扎囊县\",\"540522\":\"贡嘎县\",\"540523\":\"桑日县\",\"540524\":\"琼结县\",\"540525\":\"曲松县\",\"540526\":\"措美县\",\"540527\":\"洛扎县\",\"540528\":\"加查县\",\"540529\":\"隆子县\",\"540530\":\"错那县\",\"540531\":\"浪卡子县\",\"542400\":\"那曲市\",\"542421\":\"色尼区\",\"542422\":\"嘉黎县\",\"542423\":\"比如县\",\"542424\":\"聂荣县\",\"542425\":\"安多县\",\"542426\":\"申扎县\",\"542427\":\"索县\",\"542428\":\"班戈县\",\"542429\":\"巴青县\",\"542430\":\"尼玛县\",\"542431\":\"双湖县\",\"542500\":\"阿里地区\",\"542521\":\"普兰县\",\"542522\":\"札达县\",\"542523\":\"噶尔县\",\"542524\":\"日土县\",\"542525\":\"革吉县\",\"542526\":\"改则县\",\"542527\":\"措勤县\",\"610000\":\"陕西省\",\"610100\":\"西安市\",\"610102\":\"新城区\",\"610103\":\"碑林区\",\"610104\":\"莲湖区\",\"610111\":\"灞桥区\",\"610112\":\"未央区\",\"610113\":\"雁塔区\",\"610114\":\"阎良区\",\"610115\":\"临潼区\",\"610116\":\"长安区\",\"610117\":\"高陵区\",\"610118\":\"鄠邑区\",\"610122\":\"蓝田县\",\"610124\":\"周至县\",\"610200\":\"铜川市\",\"610202\":\"王益区\",\"610203\":\"印台区\",\"610204\":\"耀州区\",\"610222\":\"宜君县\",\"610300\":\"宝鸡市\",\"610302\":\"渭滨区\",\"610303\":\"金台区\",\"610304\":\"陈仓区\",\"610322\":\"凤翔县\",\"610323\":\"岐山县\",\"610324\":\"扶风县\",\"610326\":\"眉县\",\"610327\":\"陇县\",\"610328\":\"千阳县\",\"610329\":\"麟游县\",\"610330\":\"凤县\",\"610331\":\"太白县\",\"610400\":\"咸阳市\",\"610402\":\"秦都区\",\"610403\":\"杨陵区\",\"610404\":\"渭城区\",\"610422\":\"三原县\",\"610423\":\"泾阳县\",\"610424\":\"乾县\",\"610425\":\"礼泉县\",\"610426\":\"永寿县\",\"610427\":\"彬县\",\"610428\":\"长武县\",\"610429\":\"旬邑县\",\"610430\":\"淳化县\",\"610431\":\"武功县\",\"610481\":\"兴平市\",\"610500\":\"渭南市\",\"610502\":\"临渭区\",\"610503\":\"华州区\",\"610522\":\"潼关县\",\"610523\":\"大荔县\",\"610524\":\"合阳县\",\"610525\":\"澄城县\",\"610526\":\"蒲城县\",\"610527\":\"白水县\",\"610528\":\"富平县\",\"610581\":\"韩城市\",\"610582\":\"华阴市\",\"610600\":\"延安市\",\"610602\":\"宝塔区\",\"610603\":\"安塞区\",\"610621\":\"延长县\",\"610622\":\"延川县\",\"610623\":\"子长县\",\"610625\":\"志丹县\",\"610626\":\"吴起县\",\"610627\":\"甘泉县\",\"610628\":\"富县\",\"610629\":\"洛川县\",\"610630\":\"宜川县\",\"610631\":\"黄龙县\",\"610632\":\"黄陵县\",\"610700\":\"汉中市\",\"610702\":\"汉台区\",\"610721\":\"南郑区\",\"610722\":\"城固县\",\"610723\":\"洋县\",\"610724\":\"西乡县\",\"610725\":\"勉县\",\"610726\":\"宁强县\",\"610727\":\"略阳县\",\"610728\":\"镇巴县\",\"610729\":\"留坝县\",\"610730\":\"佛坪县\",\"610800\":\"榆林市\",\"610802\":\"榆阳区\",\"610803\":\"横山区\",\"610822\":\"府谷县\",\"610824\":\"靖边县\",\"610825\":\"定边县\",\"610826\":\"绥德县\",\"610827\":\"米脂县\",\"610828\":\"佳县\",\"610829\":\"吴堡县\",\"610830\":\"清涧县\",\"610831\":\"子洲县\",\"610881\":\"神木市\",\"610900\":\"安康市\",\"610902\":\"汉滨区\",\"610921\":\"汉阴县\",\"610922\":\"石泉县\",\"610923\":\"宁陕县\",\"610924\":\"紫阳县\",\"610925\":\"岚皋县\",\"610926\":\"平利县\",\"610927\":\"镇坪县\",\"610928\":\"旬阳县\",\"610929\":\"白河县\",\"611000\":\"商洛市\",\"611002\":\"商州区\",\"611021\":\"洛南县\",\"611022\":\"丹凤县\",\"611023\":\"商南县\",\"611024\":\"山阳县\",\"611025\":\"镇安县\",\"611026\":\"柞水县\",\"620000\":\"甘肃省\",\"620100\":\"兰州市\",\"620102\":\"城关区\",\"620103\":\"七里河区\",\"620104\":\"西固区\",\"620105\":\"安宁区\",\"620111\":\"红古区\",\"620121\":\"永登县\",\"620122\":\"皋兰县\",\"620123\":\"榆中县\",\"620200\":\"嘉峪关市\",\"620300\":\"金昌市\",\"620302\":\"金川区\",\"620321\":\"永昌县\",\"620400\":\"白银市\",\"620402\":\"白银区\",\"620403\":\"平川区\",\"620421\":\"靖远县\",\"620422\":\"会宁县\",\"620423\":\"景泰县\",\"620500\":\"天水市\",\"620502\":\"秦州区\",\"620503\":\"麦积区\",\"620521\":\"清水县\",\"620522\":\"秦安县\",\"620523\":\"甘谷县\",\"620524\":\"武山县\",\"620525\":\"张家川回族自治县\",\"620600\":\"武威市\",\"620602\":\"凉州区\",\"620621\":\"民勤县\",\"620622\":\"古浪县\",\"620623\":\"天祝藏族自治县\",\"620700\":\"张掖市\",\"620702\":\"甘州区\",\"620721\":\"肃南裕固族自治县\",\"620722\":\"民乐县\",\"620723\":\"临泽县\",\"620724\":\"高台县\",\"620725\":\"山丹县\",\"620800\":\"平凉市\",\"620802\":\"崆峒区\",\"620821\":\"泾川县\",\"620822\":\"灵台县\",\"620823\":\"崇信县\",\"620824\":\"华亭县\",\"620825\":\"庄浪县\",\"620826\":\"静宁县\",\"620900\":\"酒泉市\",\"620902\":\"肃州区\",\"620921\":\"金塔县\",\"620922\":\"瓜州县\",\"620923\":\"肃北蒙古族自治县\",\"620924\":\"阿克塞哈萨克族自治县\",\"620981\":\"玉门市\",\"620982\":\"敦煌市\",\"621000\":\"庆阳市\",\"621002\":\"西峰区\",\"621021\":\"庆城县\",\"621022\":\"环县\",\"621023\":\"华池县\",\"621024\":\"合水县\",\"621025\":\"正宁县\",\"621026\":\"宁县\",\"621027\":\"镇原县\",\"621100\":\"定西市\",\"621102\":\"安定区\",\"621121\":\"通渭县\",\"621122\":\"陇西县\",\"621123\":\"渭源县\",\"621124\":\"临洮县\",\"621125\":\"漳县\",\"621126\":\"岷县\",\"621200\":\"陇南市\",\"621202\":\"武都区\",\"621221\":\"成县\",\"621222\":\"文县\",\"621223\":\"宕昌县\",\"621224\":\"康县\",\"621225\":\"西和县\",\"621226\":\"礼县\",\"621227\":\"徽县\",\"621228\":\"两当县\",\"622900\":\"临夏回族自治州\",\"622901\":\"临夏市\",\"622921\":\"临夏县\",\"622922\":\"康乐县\",\"622923\":\"永靖县\",\"622924\":\"广河县\",\"622925\":\"和政县\",\"622926\":\"东乡族自治县\",\"622927\":\"积石山保安族东乡族撒拉族自治县\",\"623000\":\"甘南藏族自治州\",\"623001\":\"合作市\",\"623021\":\"临潭县\",\"623022\":\"卓尼县\",\"623023\":\"舟曲县\",\"623024\":\"迭部县\",\"623025\":\"玛曲县\",\"623026\":\"碌曲县\",\"623027\":\"夏河县\",\"630000\":\"青海省\",\"630100\":\"西宁市\",\"630102\":\"城东区\",\"630103\":\"城中区\",\"630104\":\"城西区\",\"630105\":\"城北区\",\"630121\":\"大通回族土族自治县\",\"630122\":\"湟中县\",\"630123\":\"湟源县\",\"630200\":\"海东市\",\"630202\":\"乐都区\",\"630203\":\"平安区\",\"630222\":\"民和回族土族自治县\",\"630223\":\"互助土族自治县\",\"630224\":\"化隆回族自治县\",\"630225\":\"循化撒拉族自治县\",\"632200\":\"海北藏族自治州\",\"632221\":\"门源回族自治县\",\"632222\":\"祁连县\",\"632223\":\"海晏县\",\"632224\":\"刚察县\",\"632300\":\"黄南藏族自治州\",\"632321\":\"同仁县\",\"632322\":\"尖扎县\",\"632323\":\"泽库县\",\"632324\":\"河南蒙古族自治县\",\"632500\":\"海南藏族自治州\",\"632521\":\"共和县\",\"632522\":\"同德县\",\"632523\":\"贵德县\",\"632524\":\"兴海县\",\"632525\":\"贵南县\",\"632600\":\"果洛藏族自治州\",\"632621\":\"玛沁县\",\"632622\":\"班玛县\",\"632623\":\"甘德县\",\"632624\":\"达日县\",\"632625\":\"久治县\",\"632626\":\"玛多县\",\"632700\":\"玉树藏族自治州\",\"632701\":\"玉树市\",\"632722\":\"杂多县\",\"632723\":\"称多县\",\"632724\":\"治多县\",\"632725\":\"囊谦县\",\"632726\":\"曲麻莱县\",\"632800\":\"海西蒙古族藏族自治州\",\"632801\":\"格尔木市\",\"632802\":\"德令哈市\",\"632821\":\"乌兰县\",\"632822\":\"都兰县\",\"632823\":\"天峻县\",\"640000\":\"宁夏回族自治区\",\"640100\":\"银川市\",\"640104\":\"兴庆区\",\"640105\":\"西夏区\",\"640106\":\"金凤区\",\"640121\":\"永宁县\",\"640122\":\"贺兰县\",\"640181\":\"灵武市\",\"640200\":\"石嘴山市\",\"640202\":\"大武口区\",\"640205\":\"惠农区\",\"640221\":\"平罗县\",\"640300\":\"吴忠市\",\"640302\":\"利通区\",\"640303\":\"红寺堡区\",\"640323\":\"盐池县\",\"640324\":\"同心县\",\"640381\":\"青铜峡市\",\"640400\":\"固原市\",\"640402\":\"原州区\",\"640422\":\"西吉县\",\"640423\":\"隆德县\",\"640424\":\"泾源县\",\"640425\":\"彭阳县\",\"640500\":\"中卫市\",\"640502\":\"沙坡头区\",\"640521\":\"中宁县\",\"640522\":\"海原县\",\"650000\":\"新疆维吾尔自治区\",\"650100\":\"乌鲁木齐市\",\"650102\":\"天山区\",\"650103\":\"沙依巴克区\",\"650104\":\"新市区\",\"650105\":\"水磨沟区\",\"650106\":\"头屯河区\",\"650107\":\"达坂城区\",\"650109\":\"米东区\",\"650121\":\"乌鲁木齐县\",\"650200\":\"克拉玛依市\",\"650202\":\"独山子区\",\"650203\":\"克拉玛依区\",\"650204\":\"白碱滩区\",\"650205\":\"乌尔禾区\",\"650400\":\"吐鲁番市\",\"650402\":\"高昌区\",\"650421\":\"鄯善县\",\"650422\":\"托克逊县\",\"650500\":\"哈密市\",\"650502\":\"伊州区\",\"650521\":\"巴里坤哈萨克自治县\",\"650522\":\"伊吾县\",\"652300\":\"昌吉回族自治州\",\"652301\":\"昌吉市\",\"652302\":\"阜康市\",\"652323\":\"呼图壁县\",\"652324\":\"玛纳斯县\",\"652325\":\"奇台县\",\"652327\":\"吉木萨尔县\",\"652328\":\"木垒哈萨克自治县\",\"652700\":\"博尔塔拉蒙古自治州\",\"652701\":\"博乐市\",\"652702\":\"阿拉山口市\",\"652722\":\"精河县\",\"652723\":\"温泉县\",\"652800\":\"巴音郭楞蒙古自治州\",\"652801\":\"库尔勒市\",\"652822\":\"轮台县\",\"652823\":\"尉犁县\",\"652824\":\"若羌县\",\"652825\":\"且末县\",\"652826\":\"焉耆回族自治县\",\"652827\":\"和静县\",\"652828\":\"和硕县\",\"652829\":\"博湖县\",\"652900\":\"阿克苏地区\",\"652901\":\"阿克苏市\",\"652922\":\"温宿县\",\"652923\":\"库车县\",\"652924\":\"沙雅县\",\"652925\":\"新和县\",\"652926\":\"拜城县\",\"652927\":\"乌什县\",\"652928\":\"阿瓦提县\",\"652929\":\"柯坪县\",\"653000\":\"克孜勒苏柯尔克孜自治州\",\"653001\":\"阿图什市\",\"653022\":\"阿克陶县\",\"653023\":\"阿合奇县\",\"653024\":\"乌恰县\",\"653100\":\"喀什地区\",\"653101\":\"喀什市\",\"653121\":\"疏附县\",\"653122\":\"疏勒县\",\"653123\":\"英吉沙县\",\"653124\":\"泽普县\",\"653125\":\"莎车县\",\"653126\":\"叶城县\",\"653127\":\"麦盖提县\",\"653128\":\"岳普湖县\",\"653129\":\"伽师县\",\"653130\":\"巴楚县\",\"653131\":\"塔什库尔干塔吉克自治县\",\"653200\":\"和田地区\",\"653201\":\"和田市\",\"653221\":\"和田县\",\"653222\":\"墨玉县\",\"653223\":\"皮山县\",\"653224\":\"洛浦县\",\"653225\":\"策勒县\",\"653226\":\"于田县\",\"653227\":\"民丰县\",\"654000\":\"伊犁哈萨克自治州\",\"654002\":\"伊宁市\",\"654003\":\"奎屯市\",\"654004\":\"霍尔果斯市\",\"654021\":\"伊宁县\",\"654022\":\"察布查尔锡伯自治县\",\"654023\":\"霍城县\",\"654024\":\"巩留县\",\"654025\":\"新源县\",\"654026\":\"昭苏县\",\"654027\":\"特克斯县\",\"654028\":\"尼勒克县\",\"654200\":\"塔城地区\",\"654201\":\"塔城市\",\"654202\":\"乌苏市\",\"654221\":\"额敏县\",\"654223\":\"沙湾县\",\"654224\":\"托里县\",\"654225\":\"裕民县\",\"654226\":\"和布克赛尔蒙古自治县\",\"654300\":\"阿勒泰地区\",\"654301\":\"阿勒泰市\",\"654321\":\"布尔津县\",\"654322\":\"富蕴县\",\"654323\":\"福海县\",\"654324\":\"哈巴河县\",\"654325\":\"青河县\",\"654326\":\"吉木乃县\",\"659001\":\"石河子市\",\"659002\":\"阿拉尔市\",\"659003\":\"图木舒克市\",\"659004\":\"五家渠市\",\"659005\":\"北屯市\",\"659006\":\"铁门关市\",\"659007\":\"双河市\",\"659008\":\"可克达拉市\",\"659009\":\"昆玉市\",\"710000\":\"台湾省\",\"710100\":\"台北市\",\"710101\":\"中正区\",\"710102\":\"大同区\",\"710103\":\"中山区\",\"710104\":\"万华区\",\"710105\":\"信义区\",\"710106\":\"松山区\",\"710107\":\"大安区\",\"710108\":\"南港区\",\"710109\":\"北投区\",\"710110\":\"内湖区\",\"710111\":\"士林区\",\"710112\":\"文山区\",\"710200\":\"新北市\",\"710201\":\"板桥区\",\"710202\":\"土城区\",\"710203\":\"新庄区\",\"710204\":\"新店区\",\"710205\":\"深坑区\",\"710206\":\"石碇区\",\"710207\":\"坪林区\",\"710208\":\"乌来区\",\"710209\":\"五股区\",\"710210\":\"八里区\",\"710211\":\"林口区\",\"710212\":\"淡水区\",\"710213\":\"中和区\",\"710214\":\"永和区\",\"710215\":\"三重区\",\"710216\":\"芦洲区\",\"710217\":\"泰山区\",\"710218\":\"树林区\",\"710219\":\"莺歌区\",\"710220\":\"三峡区\",\"710221\":\"汐止区\",\"710222\":\"金山区\",\"710223\":\"万里区\",\"710224\":\"三芝区\",\"710225\":\"石门区\",\"710226\":\"瑞芳区\",\"710227\":\"贡寮区\",\"710228\":\"双溪区\",\"710229\":\"平溪区\",\"710300\":\"桃园市\",\"710301\":\"桃园区\",\"710302\":\"中坜区\",\"710303\":\"平镇区\",\"710304\":\"八德区\",\"710305\":\"杨梅区\",\"710306\":\"芦竹区\",\"710307\":\"大溪区\",\"710308\":\"龙潭区\",\"710309\":\"龟山区\",\"710310\":\"大园区\",\"710311\":\"观音区\",\"710312\":\"新屋区\",\"710313\":\"复兴区\",\"710400\":\"台中市\",\"710401\":\"中区\",\"710402\":\"东区\",\"710403\":\"西区\",\"710404\":\"南区\",\"710405\":\"北区\",\"710406\":\"西屯区\",\"710407\":\"南屯区\",\"710408\":\"北屯区\",\"710409\":\"丰原区\",\"710410\":\"大里区\",\"710411\":\"太平区\",\"710412\":\"东势区\",\"710413\":\"大甲区\",\"710414\":\"清水区\",\"710415\":\"沙鹿区\",\"710416\":\"梧栖区\",\"710417\":\"后里区\",\"710418\":\"神冈区\",\"710419\":\"潭子区\",\"710420\":\"大雅区\",\"710421\":\"新小区\",\"710422\":\"石冈区\",\"710423\":\"外埔区\",\"710424\":\"大安区\",\"710425\":\"乌日区\",\"710426\":\"大肚区\",\"710427\":\"龙井区\",\"710428\":\"雾峰区\",\"710429\":\"和平区\",\"710500\":\"台南市\",\"710501\":\"中西区\",\"710502\":\"东区\",\"710503\":\"南区\",\"710504\":\"北区\",\"710505\":\"安平区\",\"710506\":\"安南区\",\"710507\":\"永康区\",\"710508\":\"归仁区\",\"710509\":\"新化区\",\"710510\":\"左镇区\",\"710511\":\"玉井区\",\"710512\":\"楠西区\",\"710513\":\"南化区\",\"710514\":\"仁德区\",\"710515\":\"关庙区\",\"710516\":\"龙崎区\",\"710517\":\"官田区\",\"710518\":\"麻豆区\",\"710519\":\"佳里区\",\"710520\":\"西港区\",\"710521\":\"七股区\",\"710522\":\"将军区\",\"710523\":\"学甲区\",\"710524\":\"北门区\",\"710525\":\"新营区\",\"710526\":\"后壁区\",\"710527\":\"白河区\",\"710528\":\"东山区\",\"710529\":\"六甲区\",\"710530\":\"下营区\",\"710531\":\"柳营区\",\"710532\":\"盐水区\",\"710533\":\"善化区\",\"710534\":\"大内区\",\"710535\":\"山上区\",\"710536\":\"新市区\",\"710537\":\"安定区\",\"710600\":\"高雄市\",\"710601\":\"楠梓区\",\"710602\":\"左营区\",\"710603\":\"鼓山区\",\"710604\":\"三民区\",\"710605\":\"盐埕区\",\"710606\":\"前金区\",\"710607\":\"新兴区\",\"710608\":\"苓雅区\",\"710609\":\"前镇区\",\"710610\":\"旗津区\",\"710611\":\"小港区\",\"710612\":\"凤山区\",\"710613\":\"大寮区\",\"710614\":\"鸟松区\",\"710615\":\"林园区\",\"710616\":\"仁武区\",\"710617\":\"大树区\",\"710618\":\"大社区\",\"710619\":\"冈山区\",\"710620\":\"路竹区\",\"710621\":\"桥头区\",\"710622\":\"梓官区\",\"710623\":\"弥陀区\",\"710624\":\"永安区\",\"710625\":\"燕巢区\",\"710626\":\"阿莲区\",\"710627\":\"茄萣区\",\"710628\":\"湖内区\",\"710629\":\"旗山区\",\"710630\":\"美浓区\",\"710631\":\"内门区\",\"710632\":\"杉林区\",\"710633\":\"甲仙区\",\"710634\":\"六龟区\",\"710635\":\"茂林区\",\"710636\":\"桃源区\",\"710637\":\"那玛夏区\",\"710700\":\"基隆市\",\"710701\":\"中正区\",\"710702\":\"七堵区\",\"710703\":\"暖暖区\",\"710704\":\"仁爱区\",\"710705\":\"中山区\",\"710706\":\"安乐区\",\"710707\":\"信义区\",\"710800\":\"新竹市\",\"710801\":\"东区\",\"710802\":\"北区\",\"710803\":\"香山区\",\"710900\":\"嘉义市\",\"710901\":\"东区\",\"710902\":\"西区\",\"719001\":\"宜兰县\",\"719002\":\"新竹县\",\"719003\":\"苗栗县\",\"719004\":\"彰化县\",\"719005\":\"南投县\",\"719006\":\"嘉义县\",\"719007\":\"云林县\",\"719008\":\"屏东县\",\"719009\":\"台东县\",\"719010\":\"花莲县\",\"719011\":\"澎湖县\",\"719012\":\"金门县\",\"719013\":\"连江县\",\"810000\":\"香港特别行政区\",\"810101\":\"中西区\",\"810102\":\"湾仔区\",\"810103\":\"东区\",\"810104\":\"南区\",\"810105\":\"油尖旺区\",\"810106\":\"深水埗区\",\"810107\":\"九龙城区\",\"810108\":\"黄大仙区\",\"810109\":\"观塘区\",\"810110\":\"北区\",\"810111\":\"大埔区\",\"810112\":\"沙田区\",\"810113\":\"西贡区\",\"810114\":\"荃湾区\",\"810115\":\"屯门区\",\"810116\":\"元朗区\",\"810117\":\"葵青区\",\"810118\":\"离岛区\",\"820000\":\"澳门特别行政区\",\"820101\":\"花地玛堂区\",\"820102\":\"圣安多尼堂区\",\"820103\":\"大堂区\",\"820104\":\"望德堂区\",\"820105\":\"风顺堂区\",\"820106\":\"嘉模堂区\",\"820107\":\"圣方济各堂区\",\"820108\":\"路氹城\",\"820109\":\"澳门新城\"}"
  },
  {
    "path": "src/assets/menu.json",
    "content": "[\n  {\n    \"id\": \"1\",\n    \"icon\": \"icon-dashboard\",\n    \"name\": \"首页\",\n    \"route\": \"/\",\n    \"role\": true\n  },\n  {\n    \"id\": \"2\",\n    \"icon\": \"icon-xitong\",\n    \"name\": \"系统管理\",\n    \"role\": [\n      \"/sys/org/list\",\n      \"/sys/role/list\",\n      \"/sys/user/list\",\n      \"/sys/shop/list\",\n      \"/sys/permission/list\",\n      \"/sys/weixinuser/list\"\n    ]\n  },\n  {\n    \"id\": \"21\",\n    \"bpid\": \"2\",\n    \"mpid\": \"2\",\n    \"name\": \"门店管理\",\n    \"route\": \"/system/shopManage\",\n    \"role\": \"/sys/org/list\"\n  },\n  {\n    \"id\": \"22\",\n    \"bpid\": \"2\",\n    \"mpid\": \"2\",\n    \"name\": \"角色管理\",\n    \"route\": \"/system/role\",\n    \"role\": \"/sys/role/list\"\n  },\n  {\n    \"id\": \"23\",\n    \"bpid\": \"2\",\n    \"mpid\": \"2\",\n    \"name\": \"web用户\",\n    \"route\": \"/system/user\",\n    \"role\": \"/sys/user/list\"\n  },\n  {\n    \"id\": \"24\",\n    \"bpid\": \"2\",\n    \"mpid\": \"2\",\n    \"name\": \"店铺设置\",\n    \"route\": \"/system/shopSettings\",\n    \"role\": \"/sys/shop/list\"\n  },\n  {\n    \"id\": \"25\",\n    \"bpid\": \"2\",\n    \"mpid\": \"-1\",\n    \"name\": \"部门管理\",\n    \"route\": \"/system/org\",\n    \"role\": true\n  },\n  {\n    \"id\": \"26\",\n    \"bpid\": \"2\",\n    \"mpid\": \"2\",\n    \"name\": \"权限管理\",\n    \"route\": \"/system/authorityManage\",\n    \"role\": \"/sys/permission/list\"\n  },\n  {\n    \"id\": \"27\",\n    \"bpid\": \"2\",\n    \"mpid\": \"2\",\n    \"name\": \"微信用户\",\n    \"route\": \"/system/weChatManage\",\n    \"role\": \"/sys/weixinuser/list\"\n  },\n  {\n    \"id\": \"3\",\n    \"icon\": \"icon-chepai\",\n    \"name\": \"车型管理\",\n    \"role\": [\n      \"/model/brand/list\",\n      \"/model/series/list\",\n      \"/model/vm/list\"\n    ]\n  },\n  {\n    \"id\": \"31\",\n    \"bpid\": \"3\",\n    \"mpid\": \"3\",\n    \"name\": \"品牌管理\",\n    \"route\": \"/allModalManage/brandManage\",\n    \"role\": \"/model/brand/list\"\n  },\n  {\n    \"id\": \"32\",\n    \"bpid\": \"3\",\n    \"mpid\": \"3\",\n    \"name\": \"车系管理\",\n    \"route\": \"/allModalManage/seriesManage\",\n    \"role\": \"/model/series/list\"\n  },\n  {\n    \"id\": \"33\",\n    \"bpid\": \"3\",\n    \"mpid\": \"3\",\n    \"name\": \"车型管理\",\n    \"route\": \"/allModalManage/modalManage\",\n    \"role\": \"/model/vm/list\"\n  },\n  {\n    \"id\": \"4\",\n    \"icon\": \"icon-shebeiliebiao\",\n    \"name\": \"设备管理\",\n    \"route\": \"/terminalManage\",\n    \"role\": [\n      \"/terminal/manage/list\"\n    ]\n  },\n  {\n    \"id\": \"5\",\n    \"icon\": \"icon-car\",\n    \"name\": \"车辆管理\",\n    \"route\": \"/carManage\",\n    \"role\": [\n      \"/car/vehicle/list\",\n      \"/car/monitor/list\"\n    ]\n  },\n  {\n    \"id\": \"51\",\n    \"bpid\": \"5\",\n    \"mpid\": \"5\",\n    \"icon\": \"setting\",\n    \"name\": \"车辆信息\",\n    \"route\": \"/carManage/carList\",\n    \"role\": \"/car/vehicle/list\"\n  },\n  {\n    \"id\": \"52\",\n    \"bpid\": \"5\",\n    \"mpid\": \"5\",\n    \"icon\": \"setting\",\n    \"name\": \"车辆监控\",\n    \"route\": \"/carManage/carMonitor\",\n    \"role\": \"/car/monitor/list\"\n  },\n  {\n    \"id\": \"6\",\n    \"icon\": \"icon-web-icon-\",\n    \"name\": \"客户管理\",\n    \"route\": \"/clientsManage\",\n    \"role\": [\n      \"/user/customerattr/list\",\n      \"/user/customer/list\"\n    ]\n  },\n  {\n    \"id\": \"61\",\n    \"bpid\": \"6\",\n    \"mpid\": \"6\",\n    \"name\": \"客户基本信息\",\n    \"route\": \"/clientsManage/clientsInfo\",\n    \"role\": \"/user/customer/list\",\n    \"icon\": \"setting\"\n  },\n  {\n    \"id\": \"62\",\n    \"bpid\": \"6\",\n    \"mpid\": \"6\",\n    \"name\": \"客户车辆信息\",\n    \"route\": \"/clientsManage/clientsCar\",\n    \"role\": \"/user/customerattr/list\",\n    \"icon\": \"setting\"\n  },\n  {\n    \"id\": \"621\",\n    \"bpid\": \"61\",\n    \"mpid\": \"-1\",\n    \"name\": \"客户车辆详情\",\n    \"route\": \"/clientsManage/clientsCar/clientsCarDetails\",\n    \"role\": \"/user/customerattr/list\"\n  },\n  {\n    \"id\": \"7\",\n    \"icon\": \"icon-baoyang\",\n    \"name\": \"保养管理\",\n    \"route\": \"/reverseManage\",\n    \"role\": [\n      \"/mainten/appointorder/list\"\n    ]\n  },\n  {\n    \"id\": \"71\",\n    \"bpid\": \"7\",\n    \"mpid\": \"7\",\n    \"name\": \"保养订单\",\n    \"route\": \"/reverseManage/reverseOrder\",\n    \"role\": \"/mainten/appointorder/list\",\n    \"icon\": \"setting\"\n  },\n  {\n    \"id\": \"711\",\n    \"bpid\": \"71\",\n    \"mpid\": \"-1\",\n    \"name\": \"App预约\",\n    \"route\": \"/reverseManage/reverseOrder/appReverse\",\n    \"role\": \"/mainten/appointorder/list\"\n  },\n  {\n    \"id\": \"712\",\n    \"bpid\": \"71\",\n    \"mpid\": \"-1\",\n    \"name\": \"系统转预约\",\n    \"route\": \"/reverseManage/reverseOrder/sysReverse\",\n    \"role\": \"/mainten/appointorder/list\"\n  },\n  {\n    \"id\": \"713\",\n    \"bpid\": \"71\",\n    \"mpid\": \"-1\",\n    \"name\": \"今日预约到店\",\n    \"route\": \"/reverseManage/reverseOrder/todayReverse\",\n    \"role\": \"/mainten/appointorder/list\"\n  },\n  {\n    \"id\": \"714\",\n    \"bpid\": \"71\",\n    \"mpid\": \"-1\",\n    \"name\": \"编辑预约单\",\n    \"route\": \"/reverseManage/reverseOrder/reverseDetails\",\n    \"role\": \"/mainten/appointorder/list\"\n  },\n  {\n    \"id\": \"72\",\n    \"bpid\": \"7\",\n    \"mpid\": \"7\",\n    \"name\": \"保养提醒\",\n    \"route\": \"/reverseManage/maintainRemind\",\n    \"role\": \"/mainten/conf/list\",\n    \"icon\": \"setting\"\n  },\n  {\n    \"id\": \"721\",\n    \"bpid\": \"72\",\n    \"mpid\": \"72\",\n    \"name\": \"实时里程查询\",\n    \"route\": \"/reverseManage/maintainRemind/realTimeSearch\",\n    \"role\": \"/mainten/conf/list\"\n  },\n  {\n    \"id\": \"722\",\n    \"bpid\": \"72\",\n    \"mpid\": \"72\",\n    \"name\": \"未处理保养提醒\",\n    \"route\": \"/reverseManage/maintainRemind/unMaintain\",\n    \"role\": \"/mainten/conf/list\"\n  },\n  {\n    \"id\": \"7221\",\n    \"bpid\": \"722\",\n    \"mpid\": \"-1\",\n    \"name\": \"保养里程\",\n    \"route\": \"/reverseManage/maintainRemind/unMaintain/remainDistance\",\n    \"role\": \"/mainten/conf/list\"\n  },\n  {\n    \"id\": \"7222\",\n    \"bpid\": \"722\",\n    \"mpid\": \"-1\",\n    \"name\": \"保养时间\",\n    \"route\": \"/reverseManage/maintainRemind/unMaintain/remainTime\",\n    \"role\": \"/mainten/conf/list\"\n  },\n  {\n    \"id\": \"7223\",\n    \"bpid\": \"722\",\n    \"mpid\": \"-1\",\n    \"name\": \"保养详情\",\n    \"route\": \"/reverseManage/maintainRemind/unMaintain/reverseDetail\",\n    \"role\": \"/mainten/conf/list\"\n  },\n  {\n    \"id\": \"723\",\n    \"bpid\": \"72\",\n    \"mpid\": \"72\",\n    \"name\": \"已处理保养提醒\",\n    \"route\": \"/reverseManage/maintainRemind/processedMaintain\",\n    \"role\": \"/mainten/remainOrder/findList\"\n  },\n  {\n    \"id\": \"73\",\n    \"bpid\": \"7\",\n    \"mpid\": \"7\",\n    \"name\": \"保养提醒设置\",\n    \"route\": \"/reverseManage/remainSettings\",\n    \"role\": \"/mainten/remainOrder/findList\",\n    \"icon\": \"setting\"\n  },\n  {\n    \"id\": \"8\",\n    \"icon\": \"icon-jiuyuan\",\n    \"name\": \"救援管理\",\n    \"route\": \"/rescueManage\",\n    \"role\": \"/rescue/order/list\"\n  },\n  {\n    \"id\": \"81\",\n    \"bpid\": \"8\",\n    \"mpid\": \"8\",\n    \"icon\": \"setting\",\n    \"name\": \"救援服务\",\n    \"route\": \"/rescueManage/rescueService\",\n    \"role\": \"/rescue/order/list\"\n  },\n  {\n    \"id\": \"81\",\n    \"bpid\": \"8\",\n    \"mpid\": \"-1\",\n    \"icon\": \"setting\",\n    \"name\": \"救援服务\",\n    \"route\": \"/rescueManage/rescueService/rescueDetail\",\n    \"role\": \"/rescue/order/list\"\n  },\n  {\n    \"id\": \"82\",\n    \"bpid\": \"8\",\n    \"mpid\": \"8\",\n    \"name\": \"救援统计\",\n    \"route\": \"/rescueManage/rescueCount\",\n    \"role\": \"/rescue/order/list\"\n  },\n  {\n    \"id\": \"9\",\n    \"icon\": \"icon-xinxi\",\n    \"name\": \"信息管理\",\n    \"route\": \"/infoManage\",\n    \"role\": [\n      \"/msg/info/list\",\n      \"/msg/examine/list\",\n      \"/msg/systemMessage/list\"\n    ]\n  },\n  {\n    \"id\": \"91\",\n    \"bpid\": \"9\",\n    \"mpid\": \"9\",\n    \"icon\": \"setting\",\n    \"name\": \"信息发布\",\n    \"route\": \"/infoManage/infoPublic\",\n    \"role\": \"/msg/info/list\"\n  },\n  {\n    \"id\": \"911\",\n    \"bpid\": \"91\",\n    \"mpid\": \"-1\",\n    \"name\": \"信息列表\",\n    \"route\": \"/infoManage/infoPublic/infoPublicList\",\n    \"role\": \"/msg/info/list\"\n  },\n  {\n    \"id\": \"912\",\n    \"bpid\": \"91\",\n    \"mpid\": \"-1\",\n    \"name\": \"店铺广告\",\n    \"route\": \"/infoManage/infoPublic/shopSeq\",\n    \"role\": \"/msg/info/list\"\n  },\n  {\n    \"id\": \"92\",\n    \"bpid\": \"9\",\n    \"mpid\": \"9\",\n    \"icon\": \"setting\",\n    \"name\": \"信息审核\",\n    \"route\": \"/infoManage/infoReview\",\n    \"role\": \"/msg/examine/list\"\n  },\n  {\n    \"id\": \"921\",\n    \"bpid\": \"92\",\n    \"mpid\": \"-1\",\n    \"name\": \"信息审核\",\n    \"route\": \"/infoManage/infoReview/infoReviewDetail\",\n    \"role\": \"/msg/examine/list\"\n  },\n  {\n    \"id\": \"93\",\n    \"bpid\": \"9\",\n    \"mpid\": \"9\",\n    \"icon\": \"setting\",\n    \"name\": \"系统消息\",\n    \"route\": \"/infoManage/sysInfo\",\n    \"role\": \"/msg/systemMessage/list\"\n  },\n  {\n    \"id\": \"11\",\n    \"icon\": \"icon-alarm-settings\",\n    \"name\": \"告警管理\",\n    \"route\": \"/alarm\",\n    \"role\": [\n      \"/fence/alarm/list\",\n      \"/fence/rail/list\"\n    ]\n  },\n  {\n    \"id\": \"111\",\n    \"bpid\": \"11\",\n    \"mpid\": \"11\",\n    \"icon\": \"setting\",\n    \"name\": \"告警消息\",\n    \"route\": \"/alarm/alertList\",\n    \"role\": \"/fence/alarm/list\"\n  },\n  {\n    \"id\": \"112\",\n    \"bpid\": \"11\",\n    \"mpid\": \"11\",\n    \"icon\": \"setting\",\n    \"name\": \"电子围栏\",\n    \"route\": \"/alarm/elecFence\",\n    \"role\": \"/fence/rail/list\"\n  },\n  {\n    \"id\": \"12\",\n    \"icon\": \"icon-tongji\",\n    \"name\": \"数据统计\",\n    \"route\": \"/dataManage\",\n    \"role\": \"/statistic/data/statNew\"\n  }\n]"
  },
  {
    "path": "src/components/FilterTable/MFilter.less",
    "content": "@import '../../styles/var.less';\n.filter-wrap {\n  position: relative;\n  .ant-form-inline .ant-form-item {\n    margin-right: 0;\n    width: 100%;\n    position: relative;\n    top: -4px;\n    .ant-form-item-control-wrapper,\n    .ant-form-item-control,\n    .ant-form-item-children {\n      width: 100%;\n    }\n  }\n  .btn-wrap {\n    text-align: left;\n    button {\n      margin-right: 10px;\n    }\n    .right-btn {\n      float: right;\n    }\n  }\n  .filter-mormal {\n    background-color: #fff;\n    padding: 10px;\n    transition: .4s all ease-in-out;\n    transform: translateY(0);\n    .ant-form {\n      position: relative;\n      top: 4px;\n    }\n  }\n  .filter-grade {\n    position: absolute;\n    background-color: #fff;\n    left: 0;\n    top: 0;\n    z-index: 999;\n    width: 100%;\n    padding: 10px;\n    transition: .4s all ease-in-out;\n    transform: translateY(-200%);\n    border-bottom: 1px solid #ececec;\n  }\n  .grade-btn {\n    margin-left: 20px;\n    font-size: 12px;\n    color: @primary-color;\n    [class*=\" iconfont-\"], [class^=\"iconfont-\"] {\n      font-size: 14px;\n      margin-left: 5px;\n      position: relative;\n      top: 1px;\n    }\n  }\n  &.showGrade {\n    .filter-mormal {\n      transform: translateY(-100%);\n    }\n    .filter-grade {\n      transform: translateY(0);\n    }\n  }\n}\n.checkbox-list {\n  text-align: left;\n  .el-checkbox+.el-checkbox {\n    margin-left: 0;\n  }\n  .el-checkbox {\n    width: 25%;\n    margin-bottom: 10px;\n  }\n  .dialog-footer {\n    text-align: center;\n    margin-top: 10px;\n  }\n}"
  },
  {
    "path": "src/components/FilterTable/MFilter.tsx",
    "content": "import {\n  Component, Prop, Emit, Vue,\n} from 'vue-property-decorator';\nimport {\n  Input, Select, Form, TimePicker, DatePicker, Cascader, Row, Col, Button, Modal, Checkbox, Radio,\n} from 'ant-design-vue';\nimport { FilterFormList, tableList } from '@/interface';\n\nimport './MFilter.less';\n\n@Component({\n  components: {\n    'a-input': Input,\n    'a-option': Select.Option,\n    'a-select': Select,\n    'a-form': Form,\n    'a-form-item': Form.Item,\n    'a-time-picker': TimePicker,\n    'a-date-picker': DatePicker,\n    'a-range-picker': DatePicker.RangePicker,\n    'a-cascader': Cascader,\n    'a-row': Row,\n    'a-col': Col,\n    'a-button': Button,\n    'a-modal': Modal,\n    'a-radio-group': Radio.Group,\n    'a-radio-button': Radio.Button,\n    'a-checkbox-group': Checkbox.Group,\n    'a-checkbox': Checkbox,\n  },\n  props: {\n    Form,\n  },\n})\n\nclass MFilterClass extends Vue {\n  // 筛选表单生成参数\n  @Prop({ default: [] })\n  private filterList!: FilterFormList[];\n\n  // 筛选表单高级生成参数\n  @Prop({ default: [] })\n  private filterGrade!: FilterFormList[];\n\n  // 筛选表单存储数据参数\n  @Prop({ default: {} }) private filterParams!: any;\n\n  // 是否展示新增按钮\n  @Prop({ default: false }) private addBtn!: boolean;\n\n  // 是否展示导出按钮\n  @Prop({ default: false }) private exportBtn!: boolean;\n\n  // 导出按钮回调事件\n  @Prop({ default: () => { } }) private exportFun!: Function;\n\n  // tablelist 参数\n  @Prop({ default: [] }) private tableList!: tableList[];\n\n  @Prop({ default: '100px' }) private labelWidth!: string;\n\n  @Prop({ default: 'filterTable' }) private localName!: string;\n\n  // data\n  params: any = JSON.parse(JSON.stringify(this.filterParams));\n\n  // 初始化表格筛选参数\n  initParams: any = JSON.parse(JSON.stringify(this.filterParams));\n\n  btnXl: number = 24 - (this.filterList.length * 3);\n\n  btnlg: number = 24 - (this.filterList.length * 3);\n\n  btnmd: number = 24 - (this.filterList.length * 4);\n\n  // 弹出窗开关\n  setModel: boolean = false;\n\n  // 表格显示的列表\n  checkList: Array<string> = [];\n\n  // 高级搜索开关\n  showGrade: boolean = false;\n\n  // 高级筛选高度\n  tableMarginTop: number = 0;\n\n  constructor(props: any) {\n    super(props);\n    const self = this;\n    const saveList = window.localStorage.getItem(this.localName);\n    if (saveList) {\n      this.checkList = saveList.split(',');\n    }\n  }\n\n  created() {\n    if (!this.checkList.length) {\n      this.tableList.map((item) => {\n        if (item.dataIndex) {\n          this.checkList.push(item.dataIndex);\n        }\n        return false;\n      });\n    }\n  }\n\n  // methods\n  @Emit()\n  onSearch(): void {\n    this.$emit('search', Object.assign(this.params, this.Form.getFieldsValue()));\n  }\n\n  @Emit()\n  reset(): void {\n    this.Form.resetFields();\n    this.$emit('clearOut');\n    this.params = JSON.parse(JSON.stringify(this.initParams));\n    this.$emit('search', this.Form.resetFields());\n  }\n\n  @Emit()\n  levelcodeChange(val: any, key: string): void {\n    const value = JSON.parse(JSON.stringify(val));\n    this.params.levelCode = value.pop();\n  }\n\n  @Emit()\n  openSetting(): void {\n    this.setModel = true;\n  }\n\n  @Emit()\n  closeModal(): void {\n    this.setModel = false;\n  }\n\n  @Emit()\n  gradeSwitch(val: boolean): void {\n    this.showGrade = val;\n    this.tableMarginTop = val\n      ? (this.$refs.filterGrade as Element).clientHeight\n      : (this.$refs.filterNormal as Element).clientHeight;\n    this.$emit('tableHeight', this.tableMarginTop);\n  }\n\n  @Emit()\n  addFun(): void {\n    this.$emit('addFun');\n  }\n\n  formItem(getFieldDecorator: any, item: FilterFormList, index: number, grade?: boolean) {\n    let itemDom = null;\n    switch (item.type) {\n      case 'input':\n        itemDom = <a-input id={item.key}\n          placeholder={item.placeholder}></a-input>;\n        break;\n      case 'select':\n        itemDom = <a-select\n          style=\"width: 100%;\"\n          id={item.key}\n          placeholder={item.placeholder}>\n          {\n            item.options && item.options.map((items: any, indexs: number) => <a-option\n              key={indexs} value={items.value}>{ items.label }</a-option>)\n          }\n        </a-select>;\n        break;\n      case 'cascader':\n        itemDom = <a-cascader style=\"width: 100%;\"\n          id={item.key}\n          allowClear\n          changeOnSelect\n          fieldNames={item.fieldNames}\n          options={item.options}\n          placeholder={item.placeholder}\n          on-change={item.change}></a-cascader>;\n        break;\n      case 'levelcode':\n        itemDom = <a-cascader style=\"width: 100%;\"\n          id={item.key}\n          allowClear\n          changeOnSelect\n          fieldNames={item.fieldNames}\n          options={item.options}\n          placeholder={item.placeholder}\n          on-change={(e: Array<string>) => this.levelcodeChange(e, item.key)}></a-cascader>;\n        break;\n      case 'datetime':\n        itemDom = <a-date-picker\n          id={item.key}\n          showTime\n          format=\"YYYY-MM-DD HH:mm:ss\"\n          placeholder={item.placeholder}>\n        </a-date-picker>;\n        break;\n      case 'date':\n        itemDom = <a-date-picker\n          id={item.key}\n          format=\"YYYY-MM-DD\"\n          placeholder={item.placeholder}>\n        </a-date-picker>;\n        break;\n      case 'datetimerange':\n        itemDom = <a-range-picker\n          style=\"width: 100%\"\n          id={item.key}\n          showTime\n          format=\"YYYY-MM-DD HH:mm:ss\"\n          disabledTime={item.disabledTime}\n          on-change={(e: Array<Date>) => this.rangeChange(e, item.value ? item.value : [])}\n          placeholder={item.placeholder}>\n        </a-range-picker>;\n        break;\n      case 'checkboxButton':\n        itemDom = <el-radio-group\n          on-change={item.change}\n          size=\"small\">\n          {\n            item.options && item.options.map((\n              items,\n              indexs: number,\n            ) => <a-radio-button\n              value={items.value}\n              key={indexs}>\n                {items.label}\n              </a-radio-button>)\n          }\n        </el-radio-group>;\n        break;\n      default: break;\n    }\n    if (grade) {\n      return (\n        <a-col {...{ props: this.gradeLayout }} key={index}>\n          <a-form-item {...{ props: this.formItemLayout }} label={item.label}>\n            {getFieldDecorator(item.key)(itemDom)}\n          </a-form-item>\n        </a-col>\n      );\n    }\n    return (\n      <a-col {...{ props: this.nomalLayout }} key={index}>\n        <a-form-item>\n          {\n            getFieldDecorator(item.key)(itemDom)\n          }\n        </a-form-item>\n      </a-col>\n    );\n  }\n\n  nomalLayout = {\n    span: 4,\n    xl: 3,\n    lg: 3,\n    md: 4,\n    sm: 8,\n    xs: 12,\n  }\n\n  gradeLayout = {\n    span: 8,\n    xl: 8,\n    lg: 8,\n    md: 12,\n    sm: 12,\n    xs: 12,\n  }\n\n  formItemLayout = {\n    labelCol: {\n      xs: { span: 24 },\n      sm: { span: 8 },\n      md: { span: 8 },\n      lg: { span: 6 },\n      xl: { span: 6 },\n    },\n    wrapperCol: {\n      xs: { span: 24 },\n      sm: { span: 16 },\n      md: { span: 16 },\n      lg: { span: 18 },\n      xl: { span: 18 },\n    },\n  }\n\n  // 时间区间赋值操作\n  rangeChange(data: any, value: string[]) {\n    this.params[value[0]] = data[0].format('YYYY-MM-DD hh:mm:ss');\n    this.params[value[1]] = data[1].format('YYYY-MM-DD hh:mm:ss');\n  }\n\n  render() {\n    const { getFieldDecorator } = this.Form as any;\n    const { isMobile } = this.$store.state.app;\n    return (\n      <div class={`filter-wrap ${this.showGrade ? 'showGrade' : ''}`}>\n        <div class=\"filter-mormal\" ref=\"filterNormal\">\n          <a-form layout=\"inline\">\n            <a-row gutter={20}>\n              {\n                this.filterList.map((item, index) => this.formItem(getFieldDecorator, item, index))\n              }\n              <a-col class=\"btn-wrap\" xl={this.btnXl} lg={this.btnlg} md={this.btnmd ? this.btnmd : 24} sm={24} xs={24}>\n                {this.btnElement(true)}\n              </a-col>\n            </a-row>\n          </a-form>\n        </div>\n        {\n          this.filterGrade.length\n            ? <div class=\"filter-grade\" ref=\"filterGrade\" id=\"filter-grade\">\n              <a-form>\n                <a-row gutter={20}>\n                  {\n                    this.filterGrade.map((item, index) => this.formItem(getFieldDecorator, item, index, true))\n                  }\n                  <a-col class=\"btn-wrap\" span={24} sm={24} xs={24}>\n                    {this.btnElement(false)}\n                  </a-col>\n                </a-row>\n              </a-form>\n            </div> : null\n        }\n        <a-modal id=\"tableSet\" width=\"500px\" title=\"Table Setting\" visible={this.setModel} on-ok={this.setTable} on-cancel={this.closeModal}>\n          <a-checkbox-group class=\"checkbox-list\" v-model={this.checkList}>\n            {\n              this.tableList.map((item, index) => <a-checkbox key={index} value={item.dataIndex}>\n                {item.title}</a-checkbox>)\n            }\n          </a-checkbox-group>\n        </a-modal>\n      </div>\n    );\n  }\n\n  setTable() {\n    if (this.checkList.length > 0) {\n      window.localStorage.setItem(this.localName, this.checkList.join(','));\n      this.$emit('setTable', this.checkList);\n      this.setModel = false;\n    } else {\n      this.$message.error('At least one column！');\n    }\n  }\n\n  btnElement(isNormal: boolean): JSX.Element {\n    return (\n      <div>\n        <a-button type=\"primary\" on-click={this.onSearch} id=\"tableSearch\" icon=\"search\">Search</a-button>\n        <a-button type=\"primary\" on-click={this.reset} id=\"tableReset\" icon=\"reload\">Reset</a-button>\n        {\n          this.filterGrade.length ? <a on-click={() => this.gradeSwitch(isNormal)} class=\"grade-btn\">{isNormal ? 'Common' : 'Senior'} Search{isNormal ? <i class=\"iconfont-down\"></i> : <i class=\"iconfont-up\"></i>}</a> : null\n        }\n        <div class=\"right-btn\">\n          {\n            this.addBtn ? <a-button on-click={this.addFun} id={isNormal ? 'tableAdd' : 'tableAdd2'} icon=\"plus\">Add</a-button> : null\n          }\n          {\n            this.exportBtn ? <a-button on-click={this.addFun} id={isNormal ? 'tableExport' : 'tableExport2'} icon=\"download\" shape=\"circle\"></a-button> : null\n          }\n          <a-button on-click={this.openSetting} id=\"tableSet\" icon=\"setting\" shape=\"circle\"></a-button>\n        </div>\n      </div>\n    );\n  }\n}\nconst MFilter = Form.create({\n  props: {\n    filterList: Array,\n    filterGrade: Array,\n    filterParams: Object,\n    addBtn: Boolean,\n    exportBtn: Boolean,\n    exportFun: Function,\n    tableList: Array,\n    labelWidth: String,\n  },\n})(MFilterClass);\nexport default MFilter;\n"
  },
  {
    "path": "src/components/FilterTable/MTable.less",
    "content": "@import '../../styles/var.less';\n\n.m-table {\n  padding: 10px;\n  position: relative;\n  transition: all .4s ease-in-out;\n  .el-dropdown-link {\n    font-size: 12px;\n    color: @primary-color;\n    cursor: pointer;\n  }\n  .pagination {\n    padding: 10px 0;\n  }\n  .el-table {\n    th> {\n      background: #fafafa;\n      color: rgba(0,0,0,.85);\n      .cell {\n        font-size: 13px;\n        text-align: center;\n      }\n    }\n    td,\n    th {\n      .cell {\n        overflow: hidden;\n        white-space: nowrap;\n        text-overflow: ellipsis;\n        font-size: 12px;\n      }\n    }\n  } \n  .table-opreat {\n    font-size: 12px;\n    a {\n      margin: 0 5px;\n      &.linkDisabled {\n        color: #acacac;\n        &:hover {\n          color: #acacac;\n          opacity: 1;\n          cursor: not-allowed;\n        }\n      }\n      &.link-blue {\n        color: @primary-color;\n      }\n      &.link-red {\n        color: #fa4059;\n      }\n      &.link-green {\n        color: #52c41a;\n      }\n      &.link-orange {\n        color: #faad14;\n      }\n      &:hover {\n        opacity: 0.7;\n      }\n    }\n    .disabled {\n      color: #acacac;\n      opacity: 1;\n      cursor: not-allowed;\n    }\n  }\n}"
  },
  {
    "path": "src/components/FilterTable/MTable.tsx",
    "content": "import {\n  Component, Prop, Emit, Vue, Inject, Provide,\n} from 'vue-property-decorator';\nimport {\n  Popconfirm, Table, Dropdown, Menu, Button, Icon,\n} from 'ant-design-vue';\nimport { tableList, Opreat, Directives } from '@/interface';\nimport Spin from '@/components/Spin';\nimport './MTable.less';\n\n@Component({\n  components: {\n    'a-table': Table,\n    'a-popconfirm': Popconfirm,\n    'm-spin': Spin,\n    'a-dropdown': Dropdown,\n    'a-menu-item': Menu.Item,\n    'a-menu': Menu,\n    'a-button': Button,\n    'a-icon': Icon,\n  },\n})\nexport default class MTable extends Vue {\n  @Prop() private tableList!: tableList[];\n\n  @Prop() private url!: string;\n\n  @Prop() private dataType!: string;\n\n  @Prop({\n    default: () => ({\n      code: 'result.resultCode',\n      codeOK: '0',\n      message: 'result.resultMessage',\n      data: 'entity.data',\n      total: 'entity.count',\n    }),\n  }) private backParams!: {\n    code: string,\n    message: string,\n    data: string,\n    codeOK: string | number,\n    total: string\n  };\n\n  // 外部参数\n  @Prop({ default: {} })\n  private outParams!: any;\n\n  // 行ID\n  @Prop({ default: 'id' }) private rowKey!: string;\n\n  // 操作栏数据\n  @Prop({ default: () => [] }) private opreat!: Opreat[];\n\n  // 操作栏width\n  @Prop({ default: '100px' }) private opreatWidth!: string;\n\n  // 本地存储名称\n  @Prop({ default: 'filter-table' }) private localName!: string;\n\n  // 请求报错回调\n  @Prop() private fetchError!: Function;\n\n  // 表格列数据\n  @Prop() private tableParams!: any;\n\n  // 请求类型\n  @Prop({ default: 'post' }) private fetchType!: string;\n\n  // 表格分页大小参数\n  @Prop({ default: () => ['5', '10', '15', '20', '50', '100'] }) private pageSizeList!: number[];\n\n  @Prop({ default: 10 }) private defaultPageSize!: number;\n\n  @Prop() private highlightCurrentRow!: boolean;\n\n  @Prop({ default: null }) private scroll!: {x: number, y: number};\n\n  // data\n  tableData: any = [];\n\n  pageParams: {\n    pageSize: number,\n    pageNum: number,\n    page: boolean,\n  } = {\n    pageSize: this.defaultPageSize,\n    pageNum: 1,\n    page: true,\n  };\n\n  loading: boolean = false;\n\n  // 数据总数\n  dataTotal: number = 0;\n\n  constructor(props: any) {\n    super(props);\n    const self = this;\n  }\n\n  created() {\n    this.getData();\n  }\n\n  reload() {\n    this.pageParams.pageNum = 1;\n    this.getData();\n  }\n\n  /**\n   * @method 获取表格数据\n   */\n  getData() {\n    this.loading = true;\n    window.ajax.request({\n      url: this.url,\n      method: this.fetchType,\n      fetchType: this.dataType,\n      data: Object.assign(\n        this.tableParams ? this.tableParams : {},\n        this.pageParams,\n        this.outParams,\n      ),\n    }).then((res: any) => {\n      this.loading = false;\n      const code = this.getValue(this.backParams.code, res);\n      if (code === this.backParams.codeOK) {\n        this.tableData = this.getValue(this.backParams.data, res);\n        this.dataTotal = this.getValue(this.backParams.total, res)\n          ? this.getValue(this.backParams.total, res) : 0;\n      } else {\n        this.$message.error(this.getValue(this.backParams.message, res));\n      }\n    });\n  }\n\n  /**\n   * @method 根据backParams参数，获取对应值\n   * @param {string} position 需要值的位置, 格式为 data.entity.list\n   * @param {object} res 返回的表格数据\n   */\n  getValue(position: string, res: any) {\n    let data = JSON.parse(JSON.stringify(res));\n    const keyList = position.split('.');\n    keyList.forEach((item, index) => {\n      if (data !== null && data[item] !== null) {\n        data = data[item];\n      } else {\n        data = null;\n        return false;\n      }\n      return true;\n    });\n    return data;\n  }\n\n  // 选择变化\n  selectChange(val: any) {\n    this.$emit('selectChange', val);\n  }\n\n  // 单选\n  currentChange(val: any) {\n    this.$emit('currentChange', val);\n  }\n\n  render() {\n    if (this.opreat.length && this.tableList[this.tableList.length -1].title !== '操作') {\n      this.tableList.push({\n        title: '操作',\n        dataIndex: 'action',\n        width: this.opreatWidth,\n        customRender: this.opreatJSX,\n      });\n    }\n    return (\n      <div class=\"m-table\" >\n        <a-table\n          bordered\n          loading={this.loading}\n          rowKey={this.rowKey}\n          dataSource={this.tableData}\n          scroll={this.scroll}\n          pagination={{\n            current: this.pageParams.pageNum,\n            defaultPageSize: this.defaultPageSize,\n            pageSize: this.pageParams.pageSize,\n            pageSizeOptions: this.pageSizeList,\n            showQuickJumper: true,\n            showSizeChanger: true,\n            total: this.dataTotal,\n          }}\n          columns={this.tableList}\n          on-change={this.tableChange}\n        >\n        </a-table>\n      </div>\n    );\n  }\n\n  /**\n   * @method 操作栏的渲染函数，参数对应antd的Columns>customRender的参数\n   * @param {any} text 当前列的值\n   * @param {object} record 当前行的值\n   * @param {number} index 当前列的序列号\n   */\n  opreatJSX(text: any, record: any, index: number) {\n    // 操作超过4个，就用下拉菜单方式\n    if (this.opreat.length > 4) {\n      return <a-dropdown on-command={(command: string) => this.menuClick(command, record)}>\n        <a-button type=\"dashed\" size=\"small\" style=\"margin-left: 8px\">\n          操作栏 <a-icon type=\"down\" />\n        </a-button>\n        <a-menu slot=\"overlay\">\n          {\n            this.opreat.map((item, indexs) => <a-menu-item\n              key={indexs}\n              command={item.key}\n              disabled={item.disabled && item.disabled(record)}\n            >\n              {typeof item.text === 'function' ? item.text(record) : item.text}\n            </a-menu-item>)\n          }\n        </a-menu>\n      </a-dropdown>;\n    }\n    // 普通模式\n    return <div class=\"table-opreat\">\n      {\n        this.opreat.map((item, indexs) => {\n          const whiteList = ['red', 'orange'];\n          if (item.disabled && item.disabled(record)) {\n            return <a id={`${item.key}-${record[item.rowKey]}`} key={indexs} class=\"btn disabled\">\n              { typeof item.text === 'function' ? item.text(record) : item.text }\n            </a>;\n          } if (whiteList.indexOf(typeof item.color === 'function' ? item.color(record) : item.color) >= 0) {\n            return <a-popconfirm\n              on-confirm={() => this.menuClick(item.key, record)}\n              title={typeof item.msg === 'function' ? item.msg(record) : item.msg}>\n              <a id={`${item.key}-${record[item.rowKey]}`} key={indexs} class={`link-${typeof item.color === 'function' ? item.color(record) : item.color}`}>\n                { typeof item.text === 'function' ? item.text(record) : item.text }\n              </a>\n            </a-popconfirm>;\n          }\n          return <a id={`${item.key}-${record[item.rowKey]}`} class={`link-${typeof item.color === 'function' ? item.color(record) : item.color}`} key={indexs} on-click={() => this.menuClick(item.key, record)}>{typeof item.text === 'function' ? item.text(record) : item.text}</a>;\n        })\n      }\n    </div>;\n  }\n\n  tableChange(pagination: any, filters: any, sorter: any) {\n    this.pageParams.pageSize = pagination.pageSize;\n    this.pageParams.pageNum = pagination.current;\n    this.getData();\n  }\n\n  menuClick(key: string, row: any) {\n    this.$emit('tableClick', key, row);\n  }\n}\n"
  },
  {
    "path": "src/components/FilterTable/index.vue",
    "content": "<template>\n  <div class=\"filter-table\">\n    <m-filter\n      ref=\"MFilter\"\n      :filter-list=\"filterList\"\n      :filter-grade=\"filterGrade\"\n      :filter-params=\"filterParams\"\n      :table-list=\"defalutTableList\"\n      :add-btn=\"addBtn\"\n      :export-btn=\"exportBtn\"\n      :local-name=\"localName\"\n      @search=\"searchFun\"\n      @export=\"exportBack\"\n      @clearOut=\"clearFun\"\n      @setTable=\"setTable\"\n      @addFun=\"addBack\"\n      @tableHeight=\"tableHeight\"\n    />\n    <m-table\n      ref=\"MTable\"\n      :table-list=\"changeTableList\"\n      :url=\"url\"\n      :data-type=\"dataType\"\n      :row-key=\"rowKey\"\n      :opreat=\"opreat\"\n      :out-params=\"outParams\"\n      :opreat-width=\"opreatWidth\"\n      :back-params=\"backParams\"\n      :local-name=\"localName\"\n      :fetch-type=\"fetchType\"\n      :fetch-error=\"fetchError\"\n      :table-params=\"tableParams\"\n      :default-page-size=\"defaultPageSize\"\n      :highlight-current-row=\"highlightCurrentRow\"\n      :scroll=\"scroll\"\n      @tableClick=\"tableClick\"\n      @selectChange=\"selectChange\"\n      @currentChange=\"currentChange\"\n    />\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n  Prop, Emit, Vue, Component,\n} from 'vue-property-decorator';\nimport { FilterFormList, tableList, Opreat } from '@/interface/index';\nimport MFilter from './MFilter';\nimport MTable from './MTable';\n\n@Component({\n  components: {\n    'm-filter': MFilter,\n    'm-table': MTable,\n  },\n})\nexport default class FilterTable extends Vue {\n  // 筛选表单生成参数\n  @Prop({ default: [] }) private filterList!: FilterFormList[];\n\n  // 筛选表单高级生成参数\n  @Prop({ default: [] }) private filterGrade!: FilterFormList[];\n\n  // 筛选表单存储数据参数\n  @Prop({ default: {} })\n  private filterParams!: any;\n\n  // 外部参数\n  @Prop({ default: {} })\n  private outParams!: any;\n\n  // 是否展示新增按钮\n  @Prop({ default: false }) private addBtn!: boolean;\n\n  // 是否展示导出按钮\n  @Prop({ default: false }) private exportBtn!: boolean;\n\n  // 表格参数\n  @Prop({ default: [] }) private tableList!: tableList[];\n\n  // 请求数据地址\n  @Prop({ default: '' }) private url!: string;\n\n  // 请求数据类型\n  @Prop({ default: 'formData' })\n  private dataType!: string;\n\n  // 表格行ID\n  @Prop({ default: 'id' }) private rowKey!: string;\n\n  // 操作参数\n  @Prop({ default: [] }) private opreat!: Opreat[];\n\n  // 操作栏width\n  @Prop({ default: '100px' }) private opreatWidth!: string;\n\n  // 本地存储字段名\n  @Prop({ default: 'filterTable' }) private localName!: string;\n\n  // 请求错误回调事件\n  @Prop() private fetchError!: string;\n\n  // 默认分页数量\n  @Prop({ default: 10 }) private defaultPageSize!: number;\n\n  // 数据返回格式\n  @Prop() private backParams!: object;\n\n  // 请求数据方法\n  @Prop({ default: 'json' }) private fetchType!: string;\n\n  @Prop({ default: false }) private highlightCurrentRow!: boolean;\n\n  @Prop({ default: null }) private scroll!: {x: number, y: number};\n\n  // 初始化请求参数\n  tableParams: any = Object.assign(this.filterParams, this.outParams);\n\n  defalutTableList: tableList[] = this.tableList.filter(item => true);\n\n  changeTableList: tableList[];\n\n  constructor(props: any) {\n    super(props);\n    const self = this;\n    const saveList = window.localStorage.getItem(this.localName);\n    if (saveList) {\n      const checkList = saveList.split(',');\n      const filterList = this.defalutTableList.filter((item, index) => checkList.indexOf(item.dataIndex) > -1);\n      this.changeTableList = filterList;\n    } else {\n      this.changeTableList = this.tableList.filter(item => true);\n    }\n  }\n\n  @Emit()\n  clearFun() {\n    this.$emit('clearOutParams');\n  }\n\n  reloadTable() {\n    const table: any = this.$refs.MTable;\n    // 延迟100ms加载数据\n    setTimeout(() => {\n      table.reload();\n    }, 100);\n  }\n\n  @Emit()\n  searchFun(params: any) {\n    this.tableParams = params;\n    const table: any = this.$refs.MTable;\n    // 延迟100ms加载数据\n    setTimeout(() => {\n      table.reload();\n    }, 100);\n  }\n\n  @Emit()\n  addBack() {\n    this.$emit('add');\n  }\n\n  @Emit()\n  tableHeight(params: any) {\n    const table: any = this.$refs.MTable;\n    table.$el.style.marginTop = `${params - 48}px`;\n  }\n\n  @Emit()\n  exportBack() {\n    this.$emit('exportBack');\n  }\n\n  @Emit()\n  @Emit()\n  setTable(list: Array<string>) {\n    const filterList = this.defalutTableList.filter((item, index) => list.indexOf(item.dataIndex) > -1);\n    this.changeTableList = filterList;\n  }\n\n  @Emit()\n  tableClick(key: string, row: any) {\n    this.$emit('menuClick', key, row);\n  }\n\n  @Emit()\n  selectChange(val: any) {\n    this.$emit('selectChange', val);\n  }\n\n  @Emit()\n  currentChange(val: any) {\n    this.$emit('currentChange', val);\n  }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.filter-table {\n  overflow: hidden;\n  min-height: e(\"calc(100vh - 100px)\");\n}\n</style>\n"
  },
  {
    "path": "src/components/HelloWorld.vue",
    "content": "<template>\n  <div class=\"hello\">\n    <h1>{{ msg }}</h1>\n    <p>\n      For guide and recipes on how to configure / customize this project,<br>\n      check out the\n      <a href=\"https://cli.vuejs.org\" target=\"_blank\">vue-cli documentation</a>.\n    </p>\n    <h3>Installed CLI Plugins</h3>\n    <ul>\n      <li><a href=\"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel\" target=\"_blank\">babel</a></li>\n      <li><a href=\"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-typescript\" target=\"_blank\">typescript</a></li>\n      <li><a href=\"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint\" target=\"_blank\">eslint</a></li>\n      <li><a href=\"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-unit-mocha\" target=\"_blank\">unit-mocha</a></li>\n    </ul>\n    <h3>Essential Links</h3>\n    <ul>\n      <li><a href=\"https://vuejs.org\" target=\"_blank\">Core Docs</a></li>\n      <li><a href=\"https://forum.vuejs.org\" target=\"_blank\">Forum</a></li>\n      <li><a href=\"https://chat.vuejs.org\" target=\"_blank\">Community Chat</a></li>\n      <li><a href=\"https://twitter.com/vuejs\" target=\"_blank\">Twitter</a></li>\n    </ul>\n    <h3>Ecosystem</h3>\n    <ul>\n      <li><a href=\"https://router.vuejs.org\" target=\"_blank\">vue-router</a></li>\n      <li><a href=\"https://vuex.vuejs.org\" target=\"_blank\">vuex</a></li>\n      <li><a href=\"https://github.com/vuejs/vue-devtools#vue-devtools\" target=\"_blank\">vue-devtools</a></li>\n      <li><a href=\"https://vue-loader.vuejs.org\" target=\"_blank\">vue-loader</a></li>\n      <li><a href=\"https://github.com/vuejs/awesome-vue\" target=\"_blank\">awesome-vue</a></li>\n    </ul>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { Component, Prop, Vue } from 'vue-property-decorator';\n\n@Component\nexport default class HelloWorld extends Vue {\n  @Prop() private msg!: string;\n}\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped lang=\"less\">\nh3 {\n  margin: 40px 0 0;\n}\nul {\n  list-style-type: none;\n  padding: 0;\n}\nli {\n  display: inline-block;\n  margin: 0 10px;\n}\na {\n  color: #42b983;\n}\n</style>\n"
  },
  {
    "path": "src/components/Layout/AppMain.less",
    "content": ".app-main {\n  -webkit-box-orient: horizontal;\n  -webkit-box-direction: normal;\n  -ms-flex-direction: row;\n  flex-direction: row;\n  display: flex;\n  .page-content {\n    width: e('calc(100vw - 200px)');\n    height: 100vh;\n    position: relative;\n    padding-top: 56px;\n    overflow-y: auto;\n    .page-wrap {\n      height: e('calc(100vh - 98px)');\n      width: 100%;\n      overflow-x: hidden;\n      overflow: auto; \n    }\n  }\n  @media screen and (max-width: 768px) {\n    .page-content {\n      width: 100vw;\n    }\n  }\n  &.sideLayout {\n    .side-bar {\n      min-width: 64px;\n      width: 64px;\n      .logo-wrap h1{\n        display: none;\n      }\n    }\n    .page-content {\n      width: e('calc(100vw - 64px)');\n    }\n  }\n  .page-tabs {\n    text-align: left;\n    .ant-tabs-bar {\n      margin-bottom: 0;\n    }\n    .el-tabs__header {\n      margin-bottom: 0;\n      .el-tabs__nav {\n        border: none;\n      }\n      .el-tabs__item {\n        background-color: #ececec;\n        &.is-active {\n          background-color: #fff;\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "src/components/Layout/AppMain.tsx",
    "content": "import {\n  Component, Prop, Emit, Vue, Watch, Provide,\n} from 'vue-property-decorator';\nimport { Tabs } from 'ant-design-vue';\nimport config from '@/utils/config';\nimport { menuItem } from '@/interface';\n\nimport Header from '@/components/Layout/Header/Header';\nimport Sidebar from '@/components/Layout/Sidebar/Sidebar';\nimport './AppMain.less';\n\n@Component({\n  components: {\n    'a-tabs': Tabs,\n    'a-tab-pane': Tabs.TabPane,\n  },\n})\nexport default class AppMain extends Vue {\n  @Prop() private menuData!: menuItem[];\n\n  // data\n  onTabs: any = '1';\n\n  @Watch('$route', { immediate: true, deep: true })\n  routeChange(to: any, from: any) {\n    this.$store.dispatch('AddTabPane', to.path);\n  }\n\n  @Emit()\n  removeTab(name: string) {\n    console.log(this);\n    this.$store.dispatch('RemoveTab', name);\n  }\n\n  @Emit()\n  tabChange(name: any) {\n    this.tabList.forEach((item: any, indexs: number) => {\n      if (item.name === name) {\n        this.$router.push({ name: item.name, params: { id: item.params }, query: item.query });\n        this.$store.dispatch('TabChange', item.name);\n      }\n    });\n  }\n\n  @Emit()\n  onTabEdit(targetKey: string, action: string) {\n    if (action === 'remove') {\n      this.removeTab(targetKey);\n    }\n  }\n\n  tabList = [];\n\n  render() {\n    const {\n      sidebar: { opened = 1 }, tabList, tabActiveKey, keepList, isMobile,\n    } = this.$store.state.app;\n    this.onTabs = tabActiveKey; // 激活状态保存\n    this.tabList = tabList;\n    if (config.openPages.indexOf(this.$route.path) > -1) {\n      return (\n        <div class=\"app-one\">\n          <router-view />\n        </div>\n      );\n    }\n    return (\n      <div class={`app-main ${opened ? '' : 'sideLayout'}`}>\n        {\n          isMobile ? null : <Sidebar />\n        }\n        <div class=\"page-content\">\n          <Header />\n          <a-tabs class=\"page-tabs\" activeKey={this.onTabs} type=\"editable-card\" on-change={this.tabChange} on-edit={this.onTabEdit}>\n            {\n              tabList.map((item: any, index: number) => <a-tab-pane\n              closable={tabList.length > 1} key={item.name}\n              tab={item.name}>\n              </a-tab-pane>)\n            }\n          </a-tabs>\n          <div class=\"page-wrap\">\n            <keep-alive max={10} include={keepList}>\n              <router-view/>\n            </keep-alive>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n"
  },
  {
    "path": "src/components/Layout/Header/Header.less",
    "content": "@import '../../../styles/var.less';\n@headerHeight: 56px;\n.header-wrap {\n  height: @headerHeight;\n  background-color: #fff;\n  text-align: left;\n  display: flex;\n  justify-content: space-between;\n  box-shadow: 4px 4px 40px 0 rgba(0,0,0,.05);\n  position: absolute;\n  width: 100%;\n  left: 0;\n  top: 0;\n  z-index: 999;\n  .menu-btn {\n    line-height: @headerHeight;\n    width: @headerHeight;\n    display: inline-block;\n    text-align: center;\n    transition: .3s all ease-in-out;\n    cursor: pointer;\n    &:hover {\n      color: @primary-color;\n      background-color: lighten(@primary-color, 25%);\n    }\n  }\n  .header-bread {\n    margin-left: 20px;\n    display: inline-block;\n    font-size: 12px;\n  }\n  .header-menu {\n    display: flex;\n    list-style: none;\n    color: #666;\n    li {\n      width: @headerHeight;\n      height: @headerHeight;\n      line-height: @headerHeight;\n      text-align: center;\n      cursor: pointer;\n      .el-badge__content.is-fixed {\n        top: 10px;\n      }\n      &:hover {\n        color: @primary-color;\n        background-color: lighten(@primary-color, 25%);\n        .el-dropdown-link {\n          color: @primary-color;\n        }\n      }\n      &.user {\n        width: auto;\n        padding: 0 20px;\n        .ant-dropdown-link {\n          height: 56px;\n          display: block;\n        }\n        .name {\n          margin-left: 10px;\n          font-size: 14px;\n          font-weight: 400;\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "src/components/Layout/Header/Header.tsx",
    "content": "import {\n  Component, Prop, Emit, Vue, Watch,\n} from 'vue-property-decorator';\nimport {\n  Badge, Dropdown, Breadcrumb, Popover, Icon, Menu,\n} from 'ant-design-vue';\nimport Cookies from 'js-cookie';\nimport { menuItem, routerItem } from '@/interface';\nimport { routeToArray } from '@/utils';\nimport MenuList from '@/components/Layout/Sidebar/MenuList';\nimport './Header.less';\n\ninterface breadItem {\n  url: string,\n  text: string,\n}\n\n@Component({\n  components: {\n    'a-badge': Badge,\n    'a-dropdown': Dropdown,\n    'a-menu-item': Menu.Item,\n    'a-breadcrumb': Breadcrumb,\n    'a-breadcrumb-item': Breadcrumb.Item,\n    'a-popover': Popover,\n    'menu-list': MenuList,\n    'a-icon': Icon,\n    'a-menu-divider': Menu.Divider,\n    'a-menu': Menu,\n  },\n})\nexport default class Header extends Vue {\n  @Prop() private username!: string;\n\n  // data\n  menuData: routerItem[] = [];\n\n  breadList: breadItem[] = [];\n\n  onIndex: number = 0;\n\n  @Watch('$route', { immediate: true, deep: true })\n  routeChange(to: any, from: any) {\n    const toDepth = routeToArray(to.path);\n    this.onIndex = 0;\n    this.breadList = [];\n    this.routerBread(this.menuData, toDepth.routeArr);\n  }\n\n  @Watch('menuData')\n  initRouteBread() {\n    const toDepth = routeToArray(this.$route.path);\n    this.routerBread(this.menuData, toDepth.routeArr);\n  }\n\n  @Emit()\n  routerBread(data: routerItem[], toDepth: string[]) {\n    data.map((item: routerItem) => {\n      if (item.path === toDepth[this.onIndex]) {\n        this.breadList.push({\n          url: item.path,\n          text: item.name ? item.name : '',\n        });\n        if (item.children && (toDepth.length - 1) >= this.onIndex) {\n          this.onIndex += 1;\n          this.routerBread(item.children, toDepth);\n        }\n      }\n      return true;\n    });\n  }\n\n  @Emit()\n  menuClick(params: {item: any, key: string, keyPath: string[]}): void {\n    const self = this;\n    switch (params.key) {\n      case '1':\n        break;\n      case '2':\n        break;\n      case '3':\n        Cookies.remove('token');\n        this.$router.push('/login');\n        break;\n      default:\n        break;\n    }\n  }\n\n  @Emit()\n  switchSidebar(): void {\n    this.$store.dispatch('ToggleSideBar');\n  }\n\n  render() {\n    const { username } = this;\n    const { menuData, sidebar: { opened }, isMobile } = this.$store.state.app;\n    this.menuData = menuData;\n    return (\n      <header class=\"header-wrap\">\n        <div class=\"header-left\">\n          {\n            isMobile ? <a-popover\n            placement=\"bottom\"\n            title=\"\"\n            width=\"300\"\n            trigger=\"click\">\n            <menu-list slot=\"content\" bgColor=\"#fff\" txtColor=\"#898989\" />\n            <i class=\"menu-btn iconfont-listMenu\"></i>\n          </a-popover> : <i class={`menu-btn iconfont-${opened ? 'indent' : 'outdent'}`} on-click={this.switchSidebar}></i>\n          }\n          {\n            isMobile ? null\n              : <a-breadcrumb class=\"header-bread\" separator=\"/\">\n              {\n                this.breadList.map((item: breadItem) => <a-breadcrumb-item to={item.url ? { path: '/' } : null}>{item.text}</a-breadcrumb-item>)\n              }\n            </a-breadcrumb>\n          }\n        </div>\n        <ul class=\"header-menu\">\n          <li>\n            <a-badge count={12} class=\"item\">\n              <i class=\"iconfont-email\"></i>\n            </a-badge>\n          </li>\n          <li>\n            <i class=\"iconfont-bell\"></i>\n          </li>\n          <li class=\"user\">\n            <a-dropdown>\n              <span class=\"ant-dropdown-link\">\n                <a-icon type=\"user\" />\n                <span class=\"name\">admin</span>\n              </span>\n              <a-menu slot=\"overlay\" on-click={this.menuClick}>\n                <a-menu-item key=\"1\">个人中心</a-menu-item>\n                <a-menu-item key=\"2\">修改密码</a-menu-item>\n                <a-menu-divider />\n                <a-menu-item key=\"3\"><font color=\"red\">退出登录</font></a-menu-item>\n              </a-menu>\n            </a-dropdown>\n          </li>\n        </ul>\n      </header>\n    );\n  }\n}\n"
  },
  {
    "path": "src/components/Layout/Sidebar/MenuList.less",
    "content": "@import '../../../styles/var.less';\n.left-menu {\n  text-align: left;\n  border-right: none;\n  height: e('calc(100vh - 82px)');\n  overflow-x: hidden;\n  overflow-y: auto;\n  [class*=\" iconfont-\"], [class^=\"iconfont-\"] {\n    margin-right: 10px;\n    position: relative;\n    top: 2px;\n  }\n}"
  },
  {
    "path": "src/components/Layout/Sidebar/MenuList.tsx",
    "content": "import {\n  Component, Emit, Vue, Prop, Watch,\n} from 'vue-property-decorator';\nimport { Menu, Icon } from 'ant-design-vue';\nimport { routerItem } from '@/interface';\nimport { routeToArray } from '@/utils/index';\nimport './MenuList.less';\n\n@Component({\n  components: {\n    'a-menu': Menu,\n    'a-submenu': Menu.SubMenu,\n    'a-menu-item-group': Menu.ItemGroup,\n    'a-menu-item': Menu.Item,\n    'a-icon': Icon,\n  },\n})\nexport default class MenuList extends Vue {\n  @Prop({ default: '#010101' }) private bgColor!: string;\n\n  @Prop({ default: '#fff' }) private txtColor!: string;\n\n  keys: string[] = []\n\n  openKeys: string[] = []\n\n  @Watch('$route', { immediate: true, deep: true })\n  routeChange(to: any, from: any) {\n    this.keys = routeToArray(to.path).routeArr;\n    const open = this.keys.concat();\n    open.pop();\n    this.openKeys = open || [];\n  }\n\n  openChange(openKeys: string[]) {\n    this.openKeys = openKeys;\n  }\n\n  render() {\n    const { menuData, sidebar: { opened } } = this.$store.state.app;\n    return (\n      <a-menu\n        inlineCollapsed={!opened}\n        theme='dark'\n        mode=\"inline\"\n        class=\"left-menu\"\n        openKeys={this.openKeys}\n        on-openChange={this.openChange}\n        selectedKeys={this.keys}\n        on-click={(params: {item: any, key: string, keyPath: string[]}) => {\n          const keyPath = params.keyPath.reverse();\n          this.openPage(keyPath.join('/'));\n        }}\n      >\n        {menuData ? this.renderMenu(menuData) : null}\n      </a-menu>\n    );\n  }\n\n  renderMenu(menuData: routerItem[], parentPath?: string): (JSX.Element | null)[] {\n    return menuData.map((item: routerItem) => {\n      if (item.children) {\n        let isEmpty = true;\n        item.children.forEach((items: routerItem) => {\n          if (!items.hidden) {\n            isEmpty = false;\n          }\n        });\n        if (isEmpty) {\n          return <a-menu-item\n            id={item.path}\n            key={`${item.path}`}>\n            <a-icon type={item.icon}></a-icon>\n            <span>{item.name}</span>\n          </a-menu-item>;\n        }\n        return <a-submenu\n          id={item.path}\n          key={item.path}>\n          <template slot=\"title\">\n          <a-icon type={item.icon}></a-icon>\n            <span>{item.name}</span>\n          </template>\n          {this.renderMenu(item.children, parentPath ? `${parentPath}/${item.path}` : item.path)}\n        </a-submenu>;\n      } if (item.hidden) {\n        return null;\n      }\n      return <a-menu-item\n        id={item.path}\n        key={`${item.path}`}>\n        <a-icon type={item.icon}></a-icon>\n        <span>{item.name}</span>\n      </a-menu-item>;\n    });\n  }\n\n  openPage(path: string) {\n    this.$router.push(path);\n  }\n}\n"
  },
  {
    "path": "src/components/Layout/Sidebar/Sidebar.less",
    "content": "@import '../../../styles/var.less';\n.side-bar {\n  max-width: 200px;\n  min-width: 200px;\n  width: 200px;\n  background-color: #010101;\n  transition: .3s all ease-in-out;\n  height: 100vh;\n  max-height: 100vh;\n  .ant-menu-dark {\n    background-color: #010101;\n    .ant-menu-inline.ant-menu-sub {\n      background-color: #232323;\n    }\n  }\n  .ant-menu-inline-collapsed {\n    width: 64px;\n  }\n  .ant-menu-inline-collapsed > .ant-menu-item, \n  .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item, .ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title {\n    padding: 0 20px !important;\n    span {\n      display: none;\n    }\n  }\n  .logo-wrap {\n    display: flex;\n    text-align: center;\n    padding: 20px 0;\n    img {\n      width: 42px;\n      height: 42px;\n      display: inline;\n      margin-left: 10px;\n    }\n    h1 {\n      font-size: 16px;\n      display: inline;\n      color: @primary-color;\n      line-height: 42px;\n      padding-left: 10px;\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n    }\n  }\n  \n}"
  },
  {
    "path": "src/components/Layout/Sidebar/Sidebar.tsx",
    "content": "import { Component, Vue } from 'vue-property-decorator';\nimport config from '@/utils/config';\nimport MenuList from '@/components/Layout/Sidebar/MenuList';\nimport './Sidebar.less';\n\n\n@Component\nexport default class SiderBar extends Vue {\n  render() {\n    const { menuData, sidebar: { opened } } = this.$store.state.app;\n    return (\n      <div class=\"side-bar\">\n        <div class=\"logo-wrap\">\n          <img src={config.logo} alt=\"logo\"/>\n          <h1 className=\"txt\">{config.name}</h1>\n        </div>\n        <MenuList />\n      </div>\n    );\n  }\n}\n"
  },
  {
    "path": "src/components/Loader/index.vue",
    "content": "<template>\n  <div :class=\"{'hidden': spinning, 'fullScreen': fullScreen}\" class=\"loader\">\n    <div class=\"warpper\">\n      <div class=\"inner\"/>\n      <div class=\"txt\">LOADING...</div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n  Component, Prop, Emit, Vue, Inject, Provide,\n} from 'vue-property-decorator';\n\n@Component\n\nexport default class Loader extends Vue {\n  @Prop() private spinning!: boolean;\n\n  @Prop() private fullScreen!: boolean;\n}\n</script>\n\n<style lang=\"less\" scoped>\n.loader {\n  display: block;\n  background-color: #fff;\n  width: 100%;\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 100000;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  opacity: 1;\n  text-align: center;\n\n  &.fullScreen {\n    position: fixed;\n  }\n\n  .warpper {\n    width: 100px;\n    height: 100px;\n    display: inline-flex;\n    flex-direction: column;\n    justify-content: space-around;\n  }\n\n  .inner {\n    width: 40px;\n    height: 40px;\n    margin: 0 auto;\n    text-indent: -12345px;\n    border-top: 1px solid rgba(0, 0, 0, 0.08);\n    border-right: 1px solid rgba(0, 0, 0, 0.08);\n    border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n    border-left: 1px solid rgba(0, 0, 0, 0.7);\n    border-radius: 50%;\n    z-index: 100001;\n\n    animation: spinner 600ms infinite linear;\n  }\n\n  .text {\n    width: 100px;\n    height: 20px;\n    text-align: center;\n    font-size: 12px;\n    letter-spacing: 4px;\n    color: #000;\n  }\n\n  &.hidden {\n    z-index: -1;\n    opacity: 0;\n    transition: opacity 1s ease 0.5s, z-index 0.1s ease 1.5s;\n  }\n}\n@keyframes spinner {\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n}\n</style>\n"
  },
  {
    "path": "src/components/Spin/index.less",
    "content": ".spin-wrap {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  z-index: 999;\n  background-color: rgba(255, 255, 255, .65);\n  display: none;\n  &.show {\n    display: block;\n  }\n  .ant-spin {\n    position: absolute;\n    top: 50%; \n    left: 50%;\n    transform: translate(-50%, -50%);\n  }\n}\n.ant-spin {\n  font-family:Monospaced Number, Chinese Quote, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Helvetica Neue, Helvetica, Arial, sans-serif;\n  font-size:14px;\n  line-height:1.5;\n  color:rgba(0, 0, 0, .65);\n  -webkit-box-sizing:border-box;\n  box-sizing:border-box;\n  margin:0;\n  padding:0;\n  list-style:none;\n  color:#1890ff;\n  vertical-align:middle;\n  text-align:center;\n  opacity:0;\n  position:absolute;\n  -webkit-transition:-webkit-transform .3s cubic-bezier(.78, .14, .15, .86);\n  transition:-webkit-transform .3s cubic-bezier(.78, .14, .15, .86);\n  transition:transform .3s cubic-bezier(.78, .14, .15, .86);\n  transition:transform .3s cubic-bezier(.78, .14, .15, .86), -webkit-transform .3s cubic-bezier(.78, .14, .15, .86);\n  display:none\n}\n.ant-spin-spinning {\n  opacity:1;\n  position:static;\n  display:inline-block\n}\n.ant-spin-nested-loading {\n  position:relative\n}\n.ant-spin-nested-loading>div>.ant-spin {\n  display:block;\n  position:absolute;\n  height:100%;\n  max-height:320px;\n  width:100%;\n  z-index:4\n}\n.ant-spin-nested-loading>div>.ant-spin .ant-spin-dot {\n  position:absolute;\n  top:50%;\n  left:50%;\n  margin:-10px\n}\n.ant-spin-nested-loading>div>.ant-spin .ant-spin-text {\n  position:absolute;\n  top:50%;\n  width:100%;\n  padding-top:5px;\n  text-shadow:0 1px 2px #fff\n}\n.ant-spin-nested-loading>div>.ant-spin.ant-spin-show-text .ant-spin-dot {\n  margin-top:-20px\n}\n.ant-spin-nested-loading>div>.ant-spin-sm .ant-spin-dot {\n  margin:-7px\n}\n.ant-spin-nested-loading>div>.ant-spin-sm .ant-spin-text {\n  padding-top:2px\n}\n.ant-spin-nested-loading>div>.ant-spin-sm.ant-spin-show-text .ant-spin-dot {\n  margin-top:-17px\n}\n.ant-spin-nested-loading>div>.ant-spin-lg .ant-spin-dot {\n  margin:-16px\n}\n.ant-spin-nested-loading>div>.ant-spin-lg .ant-spin-text {\n  padding-top:11px\n}\n.ant-spin-nested-loading>div>.ant-spin-lg.ant-spin-show-text .ant-spin-dot {\n  margin-top:-26px\n}\n.ant-spin-container {\n  position:relative;\n  zoom:1\n}\n.ant-spin-container:after, .ant-spin-container:before {\n  content:\"\";\n  display:table\n}\n.ant-spin-container:after {\n  clear:both\n}\n.ant-spin-blur {\n  pointer-events:none;\n  -webkit-user-select:none;\n  -moz-user-select:none;\n  -ms-user-select:none;\n  user-select:none;\n  overflow:hidden;\n  opacity:.7;\n  -webkit-filter:blur(.5px);\n  filter:blur(.5px);\n  //-webkit-filter:progid\\:DXImageTransform\\.Microsoft\\.Blur(PixelRadius\\=1, MakeShadow\\=false);\n  //filter:progid\\:DXImageTransform\\.Microsoft\\.Blur(PixelRadius\\=1, MakeShadow\\=false)\n}\n.ant-spin-blur:after {\n  content:\"\";\n  position:absolute;\n  left:0;\n  right:0;\n  top:0;\n  bottom:0;\n  background:#fff;\n  opacity:.3;\n  -webkit-transition:all .3s;\n  transition:all .3s;\n  z-index:10\n}\n.ant-spin-tip {\n  color:rgba(0, 0, 0, .45)\n}\n.ant-spin-dot {\n  position:relative;\n  display:inline-block;\n  font-size:20px;\n  width:20px;\n  height:20px\n}\n.ant-spin-dot i {\n  width:9px;\n  height:9px;\n  border-radius:100%;\n  background-color:#1890ff;\n  -webkit-transform:scale(.75);\n  -ms-transform:scale(.75);\n  transform:scale(.75);\n  display:block;\n  position:absolute;\n  opacity:.3;\n  -webkit-animation:antSpinMove 1s infinite linear alternate;\n  animation:antSpinMove 1s infinite linear alternate;\n  -webkit-transform-origin:50% 50%;\n  -ms-transform-origin:50% 50%;\n  transform-origin:50% 50%\n}\n.ant-spin-dot i:first-child {\n  left:0;\n  top:0\n}\n.ant-spin-dot i:nth-child(2) {\n  right:0;\n  top:0;\n  -webkit-animation-delay:.4s;\n  animation-delay:.4s\n}\n.ant-spin-dot i:nth-child(3) {\n  right:0;\n  bottom:0;\n  -webkit-animation-delay:.8s;\n  animation-delay:.8s\n}\n.ant-spin-dot i:nth-child(4) {\n  left:0;\n  bottom:0;\n  -webkit-animation-delay:1.2s;\n  animation-delay:1.2s\n}\n.ant-spin-dot-spin {\n  -webkit-transform:rotate(45deg);\n  -ms-transform:rotate(45deg);\n  transform:rotate(45deg);\n  -webkit-animation:antRotate 1.2s infinite linear;\n  animation:antRotate 1.2s infinite linear\n}\n.ant-spin-sm .ant-spin-dot {\n  font-size:14px;\n  width:14px;\n  height:14px\n}\n.ant-spin-sm .ant-spin-dot i {\n  width:6px;\n  height:6px\n}\n.ant-spin-lg .ant-spin-dot {\n  font-size:32px;\n  width:32px;\n  height:32px\n}\n.ant-spin-lg .ant-spin-dot i {\n  width:14px;\n  height:14px\n}\n.ant-spin.ant-spin-show-text .ant-spin-text {\n  display:block\n}\n@media (-ms-high-contrast:active), (-ms-high-contrast:none) {\n  .ant-spin-blur {\n      background:#fff;\n      opacity:.5\n  }\n}\n@-webkit-keyframes antSpinMove {\n  to {\n      opacity:1\n  }\n}\n@keyframes antSpinMove {\n  to {\n      opacity:1\n  }\n}\n@-webkit-keyframes antRotate {\n  to {\n      -webkit-transform:rotate(405deg);\n      transform:rotate(405deg)\n  }\n}\n@keyframes antRotate {\n  to {\n      -webkit-transform:rotate(405deg);\n      transform:rotate(405deg)\n  }\n}"
  },
  {
    "path": "src/components/Spin/index.tsx",
    "content": "import {\n  Component, Prop, Emit, Vue, Inject, Provide,\n} from 'vue-property-decorator';\nimport './index.less';\n\n@Component\nexport default class Spin extends Vue {\n  @Prop({ default: false }) show!: boolean;\n\n  render() {\n    return (\n      <div class={['spin-wrap', this.show ? 'show' : '']}>\n        {\n          this.show ? <div class=\"ant-spin ant-spin-spinning\">\n            <span class=\"ant-spin-dot ant-spin-dot-spin\">\n            <i></i><i></i><i></i><i></i>\n            </span>\n          </div> : ''\n        }\n      </div>\n    );\n  }\n}\n"
  },
  {
    "path": "src/global.d.ts",
    "content": "interface Window {\n  api: {\n    [key: string]: (\n      data: any,\n    ) => Promise<{\n      success: boolean;\n      message: string;\n      statusCode: number;\n      data: any;\n    }>;\n  };\n  ajax: any;\n  ApexCharts: any;\n  BMap: any;\n  BMapLib: any;\n  wangEditor: any;\n  CanvasLayer: any;\n  pointCollection: any;\n  BMAP_POINT_SIZE_HUGE: any;\n  BMAP_POINT_SHAPE_CIRCLE: any;\n  BMAP_DRAWING_CIRCLE: any;\n  BMAP_DRAWING_POLYGON: any;\n  BMAP_DRAWING_RECTANGLE: any;\n}\n\ninterface Date {\n  Format(fmt: string): string;\n}\n\ninterface returnData {\n  success: boolean;\n  message: string;\n  statusCode: number;\n  data: any;\n}\n\ndeclare module '*.json';\n"
  },
  {
    "path": "src/interface/index.ts",
    "content": "import { VNode } from 'vue';\nimport { ScopedSlot } from 'vue/types/vnode';\n\n/**\n * @interface 筛选表格的表单参数\n * @param key 表单的key值，对应filterParams里面的值\n * @param type 表单的类型，分为10种\n * @param label 表单前面的标题文字\n * @param placeholder 表单的占位文字\n * @param value 用于范围选择或者多个值的情况，\n * @param fieldNames antd的cascader组件的，自定义 options 中 label name children 的字段\n * https://vue.ant.design/components/cascader-cn/#API\n * @param options 用于下拉选择的选择项，可以异步加载\n * @param change 表单的change事件\n * @param disabledTime 时间范围选择的不可选日期，\n */\ntype FilterType = 'input' | 'select' | 'cascader' | 'levelcode' | 'datetime' | 'date' | 'datetimerange' | 'checkboxButton';\nexport interface FilterFormList {\n  key: string;\n  type: FilterType;\n  label: string;\n  placeholder: string | string[];\n  value?: string[];\n  fieldNames?: any;\n  options?: Array<{ value: any, label: string }>;\n  change?: Function;\n  disabledTime?: (dates: [object, object], partial: 'start'|'end') => any;\n}\n\nexport interface TableColumnFilter {\n  text: string,\n  value: any\n}\n\nexport interface ColumnFilterItem {\n  text?: string;\n  value?: string;\n  children?: any;\n}\n\nexport declare type SortOrder = 'ascend' | 'descend';\n\n// column\nexport interface tableList {\n  /**\n   * specify how content is aligned\n   * @default 'left'\n   * @type string\n   */\n  align?: 'left' | 'right' | 'center';\n\n  /**\n   * Span of this column's title\n   * @type number\n   */\n  colSpan?: number;\n\n  /**\n   * Display field of the data record, could be set like a.b.c\n   * @type string\n   */\n  dataIndex: string;\n\n  /**\n   * Default order of sorted values: 'ascend' 'descend' null\n   * @type string\n   */\n  defaultSortOrder?: SortOrder;\n\n  /**\n   * Customized filter overlay\n   * @type any (slot)\n   */\n  filterDropdown?: any;\n\n  /**\n   * Whether filterDropdown is visible\n   * @type boolean\n   */\n  filterDropdownVisible?: boolean;\n\n  /**\n   * Whether the dataSource is filtered\n   * @default false\n   * @type boolean\n   */\n  filtered?: boolean;\n\n  /**\n   * Controlled filtered value, filter icon will highlight\n   * @type string[]\n   */\n  filteredValue?: string[];\n\n  /**\n   * Customized filter icon\n   * @default false\n   * @type any\n   */\n  filterIcon?: any;\n\n  /**\n   * Whether multiple filters can be selected\n   * @default true\n   * @type boolean\n   */\n  filterMultiple?: boolean;\n\n  /**\n   * Filter menu config\n   * @type object[]\n   */\n  filters?: ColumnFilterItem[];\n\n  /**\n   * Set column to be fixed: true(same as left) 'left' 'right'\n   * @default false\n   * @type boolean | string\n   */\n  fixed?: boolean | 'left' | 'right';\n\n  /**\n   * Unique key of this column, you can ignore this prop if you've set a unique dataIndex\n   * @type string\n   */\n  key?: string;\n\n  /**\n   * Renderer of the table cell. The return value should be a VNode,\n   * or an object for colSpan/rowSpan config\n   * @type Function | ScopedSlot\n   */\n  customRender?: Function | ScopedSlot;\n\n  /**\n   * Sort function for local sort, see Array.sort's compareFunction.\n   * If you need sort buttons only, set to true\n   * @type boolean | Function\n   */\n  sorter?: boolean | Function;\n\n  /**\n   * Order of sorted values: 'ascend' 'descend' false\n   * @type boolean | string\n   */\n  sortOrder?: boolean | SortOrder;\n\n  /**\n   * Title of this column\n   * @type any (string | slot)\n   */\n  title: any;\n\n  /**\n   * Width of this column\n   * @type string | number\n   */\n  width?: string | number;\n\n  /**\n   * Set props on per cell\n   * @type Function\n   */\n  customCell?: (\n    record: any,\n    rowIndex: number,\n  ) => {\n    props: object;\n    attrs: object;\n    on: object;\n    class: object;\n    style: object;\n    nativeOn: object;\n  };\n\n  /**\n   * Set props on per header cell\n   * @type\n   */\n  customHeaderCell?: (\n    column: any,\n  ) => {\n    props: object;\n    attrs: object;\n    on: object;\n    class: object;\n    style: object;\n    nativeOn: object;\n  };\n\n  /**\n   * Callback executed when the confirm filter button is clicked,\n   * Use as a filter event when using template or jsx\n   * @type Function\n   */\n  onFilter?: Function;\n\n  /**\n   * Callback executed when filterDropdownVisible is changed,\n   * Use as a filterDropdownVisible event when using template or jsx\n   * @type Function\n   */\n  onFilterDropdownVisibleChange?: (visible: boolean) => void;\n\n  /**\n   * When using columns, you can use this property to configure\n   * the properties that support the slot,\n   * such as slots: { filterIcon: 'XXX'}\n   * @type object\n   */\n  slots?: object;\n\n  /**\n   * When using columns, you can use this property to configure\n   * the properties that support the slot-scope,\n   * such as scopedSlots: { customRender: 'XXX'}\n   * @type object\n   */\n  scopedSlots?: object;\n}\n/**\n * @interface 表格组件-操作栏参数\n * @param {string} key 操作的key值，用于回调事件匹配\n * @param {string} rowKey 当前行数据的id值，用于自动化测试，方便区别\n * @param {Function/string} color 文字颜色，可以根据当前行数据动态返回颜色值\n * @param {string} text 可以根据当前行数据动态返回文字\n * @param {Function} disabled 可以根据当前数据动态返回状态\n * @param {Function/string} roles 可以动态返回权限，控制是否展示\n */\nexport interface Opreat {\n  key: string,\n  rowKey: string,\n  color: Function | string,\n  text: Function | string,\n  disabled?: Function;\n  roles: Function | boolean,\n  msg?: Function | string,\n}\n/**\n * @interface 表格tag设置\n * @param {} key\n */\nexport interface tableTag {\n  key: number,\n  color: string,\n  value: number,\n  label: string,\n}\n\nexport interface menuItem {\n  id: number,\n  title: string,\n  url?: string,\n  icon?: string,\n  permission: string | Array<string> | boolean,\n  children?: Array<menuItem>,\n}\n\nexport interface MockConfig {\n  url: string,\n  headers: any,\n  body: string,\n}\n\nexport interface routerItem {\n  name?: string,\n  component?: any,\n  path: string,\n  icon?: string,\n  hidden?: boolean,\n  permission?: string | string[] | boolean,\n  redirect?: string | object,\n  children?: routerItem[],\n  meta?: any,\n}\n\nexport interface Directives {\n  name: string,\n  value: any,\n  modifiers: object,\n}\ntype CoordinateSystem = 'bd09ll' | 'gcj02ll';\nexport interface MapCarData {\n  id: string,\n  direction: number,\n  lat: number,\n  lng: number,\n  plateNum: string,\n  speed: number,\n  coordinateSystem: CoordinateSystem,\n}\n// 坐标\nexport interface Point {\n  lng: number,\n  lat: number,\n}\n"
  },
  {
    "path": "src/main.ts",
    "content": "import Vue from 'vue';\nimport { message } from 'ant-design-vue';\n// 自定义全局组件\nimport FilterTable from '@/components/FilterTable/index.vue';\n\nimport App from '@/App';\nimport router from '@/router';\nimport store from '@/store';\nimport config from '@/utils/config';\nimport Api from '@/api/api';\n\nimport './styles/global.less';\n\nconst Apis = new Api({ baseUrl: process.env.NODE_ENV === 'production' ? '/api' : '/api' });\n// 全局api\nwindow.api = Apis.api;\nwindow.ajax = Apis;\n\nconst options = {\n  position: 'fixed',\n  show: true,\n  height: '3px',\n};\n\n// Vue.use(VueInsProgressBar, options);\nVue.prototype.$message = message;\nVue.component('filter-table', FilterTable);\n\nVue.config.productionTip = false;\n\n\n// Vue.mixin({\n//   beforeRouteLeave(to, from, next) {\n//     const vnode = (this as any).$vnode;\n//     if (from && from.meta.rank && to.meta.rank && from.meta.rank > to.meta.rank) {\n//       if (vnode && vnode.data.keepAlive) {\n//         if (vnode.parent && vnode.parent.componentInstance\n//            && vnode.parent.componentInstance.cache) {\n//           if (vnode.componentOptions) {\n//             const key = vnode.key == null\n//               ? vnode.componentOptions.Ctor.cid +\n// (vnode.componentOptions.tag ? `::${vnode.componentOptions.tag}` : '')\n//               : vnode.key;\n//             const cache = vnode.parent.componentInstance.cache;\n//             const keys = vnode.parent.componentInstance.keys;\n//             if (cache[key]) {\n//               if (keys.length) {\n//                 const index = keys.indexOf(key);\n//                 if (index > -1) {\n//                   keys.splice(index, 1);\n//                 }\n//               }\n//               delete cache[key];\n//             }\n//           }\n//         }\n//       }\n//       this.$destroy();\n//     }\n//     next();\n//   },\n// });\n\nlet flag: boolean = true;\n// 路由拦截，权限验证和菜单生成\nrouter.beforeEach((to, from, next) => {\n  if (!store.state.app.menuData.length && flag) { // 判断是否获取到菜单数据,并且只执行一次\n    flag = false;\n    store.dispatch('getUserInfo').then(() => {\n      const toPath = config.noLoginList.indexOf(`#${to.path}`) > -1 ? '/dashboard' : to.path;\n      store.dispatch('AddTabPane', toPath).then(() => {\n        next({\n          path: toPath, query: to.query, params: to.params, replace: true,\n        });\n      });\n    }).catch((err) => {\n      console.log(err);\n      if (config.noLoginList.indexOf(to.path) < 0) {\n        next({ name: 'login', replace: true });\n      }\n      next();\n    });\n  }\n  next();\n});\n\n\nnew Vue({\n  router,\n  store,\n  render: h => h(App),\n}).$mount('#app');\n"
  },
  {
    "path": "src/mock/baseData.js",
    "content": "module.exports = function baseData(type, message, code) {\n  let resultCode = 0;\n  if (code) {\n    resultCode = code;\n  } else {\n    resultCode = type === 'success' ? 0 : 1;\n  }\n  return {\n    result: { resultCode, resultMessage: message },\n    entity: null,\n  };\n};\n"
  },
  {
    "path": "src/mock/customers.js",
    "content": "const Mock = require('mockjs');\n\nconst baseData = require('./baseData');\n\nconst BaseInfoData = Mock.mock({\n  'list|100': [\n    {\n      id: '@id',\n      name: '@name',\n      nickName: '@last',\n      phone: /^1[34578]\\d{9}$/,\n      'age|11-99': 1,\n      address: '@county(true)',\n      isMale: '@boolean',\n      email: '@email',\n      birthDate: '@datetime',\n      createTime: '@datetime',\n    },\n  ],\n});\n\nlet database = BaseInfoData.list;\n\nmodule.exports = {\n  baseInfoList(req, res) {\n    let { pageSize, pageNum, ...other } = req.body;\n    pageSize = pageSize || 10;\n    pageNum = pageNum || 1;\n    other = { ...other };\n\n    let newData = database;\n    for (const key in other) {\n      if ({}.hasOwnProperty.call(other, key)) {\n        newData = newData.filter((item) => {\n          if ({}.hasOwnProperty.call(item, key)) {\n            if (key === 'address') {\n              return other[key].every(iitem => item[key].indexOf(iitem) > -1);\n            } if (key === 'startTime' || key === 'endTime') {\n              const start = new Date(other.startTime).getTime();\n              const end = new Date(other.endTime).getTime();\n              const now = new Date(item[key]).getTime();\n\n              if (start && end) {\n                return now >= start && now <= end;\n              }\n              return true;\n            }\n            return String(item[key]).trim().indexOf(decodeURI(other[key]).trim()) > -1;\n          }\n          return true;\n        });\n      }\n    }\n    const list = {\n      data: newData.slice((pageNum - 1) * pageSize, pageNum * pageSize),\n      total: newData.length,\n    };\n    const data = baseData('success', '查询成功');\n    data.entity = list;\n    setTimeout(() => {\n      res.status(200).json(data);\n    }, 2000);\n  },\n  delete(req, res) {\n    const { ids } = req.body;\n    database = database.filter(item => !ids.some(_ => _ === item.id));\n    res.status(204).end();\n  },\n  update(req, res) {\n    const editItem = req.body;\n    let isExist = false;\n\n    database = database.map((item) => {\n      if (item.id === editItem.id) {\n        isExist = true;\n        return Object.assign({}, item, editItem);\n      }\n      return item;\n    });\n\n    if (isExist) {\n      res.json(baseData('success', '更新成功！'));\n    } else {\n      res.json(baseData('error', '未找到对应数据！'));\n    }\n  },\n  add(req, res) {\n    const newData = req.body;\n    newData.createTime = Mock.mock('@now');\n    newData.id = Mock.mock('@id');\n\n    database.unshift(newData);\n\n    res.json(baseData('success', '新增成功！'));\n  },\n};\n"
  },
  {
    "path": "src/mock/dashboard.js",
    "content": "const Mock = require('mockjs');\nconst baseData = require('./baseData');\nconst Dashboard = Mock.mock({\n  'projections|12': ['@integer(30, 90)'],\n  'actuals|12': ['@integer(30, 90)'],\n  'dataList|4': [\n    {\n      'name|+1': ['Customers', 'Orders', 'Revenue', 'Growth'],\n      'value|+1': ['@integer(10000, 40000)', '@integer(1000, 10000)', '@integer(3000, 8000)', '@integer(10, 100)'],\n      'number|+1': ['@float(1, 10, 2, 2)', '@float(1, 10, 2, 2)', '@float(1, 10, 2, 2)', '@float(1, 10, 2, 2)'],\n    },\n  ],\n  lineData: {\n    'Current|7': ['@integer(30, 90)'],\n    'Previous|7': ['@integer(30, 90)'],\n  },\n  CurrentWeek: '@integer(20000, 60000)',\n  PreviousWeek: '@integer(30000, 90000)',\n  'doughnut|4': ['@integer(50, 30)'],\n});\n\nmodule.exports = function dashboard(req, res) {\n  const data = baseData('success', '操作成功');\n  data.entity = Dashboard;\n  setTimeout(() => {\n    res.json(data);\n  }, 2000);\n};\n"
  },
  {
    "path": "src/mock/index.js",
    "content": "const bodyParser = require('body-parser');\n\nconst login = require('./login');\nconst dashboard = require('./dashboard');\nconst customers = require('./customers');\n\nmodule.exports = function mockInit(app) {\n  app.use(bodyParser.json());\n  app.use(bodyParser.urlencoded({ extended: false }));\n  app.all('/api/*', login.authLogin);\n  app.post('/api/user/login', login.loginByName);\n  app.post('/api/user/getUserInfo', login.getUserInfo);\n  app.post('/api/dashboard', dashboard);\n  app.post('/api/customers/baseInfoList', customers.baseInfoList);\n  app.post('/api/customers/baseInfo/add', customers.add);\n  app.post('/api/customers/baseInfo/update', customers.update);\n  app.post('/api/customers/baseInfo/delete', customers.delete);\n};\n"
  },
  {
    "path": "src/mock/login.js",
    "content": "const qs = require('qs');\nconst Mock = require('mockjs');\nconst baseData = require('./baseData');\n\nconst userPermission = {\n  DEFAULT: ['1', '2', '3', '4', '5'],\n  ADMIN: ['1', '2', '3', '4', '5', '6', '7', '8'],\n  DEVELOPER: ['1', '2', '3'],\n};\n\nconst adminUsers = [\n  {\n    id: 0,\n    username: 'admin',\n    password: 'admin',\n    permissions: userPermission.ADMIN,\n  }, {\n    id: 1,\n    username: 'guest',\n    password: 'guest',\n    permissions: userPermission.DEFAULT,\n  }, {\n    id: 2,\n    username: '吴彦祖',\n    password: '123456',\n    permissions: userPermission.DEVELOPER,\n  },\n];\nconst noAuthList = ['/api/user/login'];\nmodule.exports = {\n  loginByName(req, res) {\n    const { username, password } = req.body;\n    const user = adminUsers.filter(item => item.username === username);\n    if (user.length > 0 && user[0].password === password) {\n      const now = new Date();\n      now.setDate(now.getDate() + 1);\n      res.cookie('token', JSON.stringify({ id: user[0].id, deadline: now.getTime() }), {\n        maxAge: 900000,\n        httpOnly: true,\n      });\n      res.json(baseData('success', '登录成功'));\n    } else {\n      res.json(baseData('error', '用户名密码错误'));\n    }\n  },\n  authLogin(req, res, next) {\n    if (noAuthList.indexOf(req.path) > -1) {\n      next();\n      return;\n    }\n    const cookie = req.headers.cookie || '';\n    const cookies = qs.parse(cookie.replace(/\\s/g, ''), { delimiter: ';' });\n    const response = {};\n    if (!cookies.token) {\n      res.status(200).send(baseData('error', '登录超时', 3));\n      return;\n    }\n    const token = JSON.parse(cookies.token);\n    if (token) {\n      response.success = token.deadline > new Date().getTime();\n    }\n    if (response.success) {\n      next();\n    } else {\n      res.status(200).send(baseData('error', '登录超时', 3));\n    }\n  },\n  getUserInfo(req, res) {\n    const cookie = req.headers.cookie || '';\n    const cookies = qs.parse(cookie.replace(/\\s/g, ''), { delimiter: ';' });\n    const token = JSON.parse(cookies.token);\n    const user = {};\n    const userItem = adminUsers.filter(_ => _.id === token.id);\n    if (userItem.length > 0) {\n      user.permissions = userItem[0].permissions;\n      user.username = userItem[0].username;\n      user.id = userItem[0].id;\n    }\n    const data = baseData('success', '操作成功');\n    data.entity = user;\n    res.json(data);\n  },\n};\n"
  },
  {
    "path": "src/router/import_development.ts",
    "content": "module.exports = (file: string) => {\n  'use strict';\n\n  return (resolve: any) => require([`@/views/${file}`], resolve);\n};\n"
  },
  {
    "path": "src/router/import_production.ts",
    "content": "module.exports = (file: string) => {\n  'use strict';\n\n  return () => import(`@/views/${file}`);\n};\n"
  },
  {
    "path": "src/router/index.ts",
    "content": "import Vue from 'vue';\nimport Router, { RouterOptions } from 'vue-router';\nimport { routerItem } from '@/interface';\n\nconst getComponent = require(`./import_${process.env.NODE_ENV}`);\n\nexport const constantRouterMap: routerItem[] & RouterOptions['routes'] = [\n  {\n    path: '/', redirect: '/dashboard',\n  },\n  {\n    path: '/login', name: 'login', component: getComponent('login/index'),\n  },\n  {\n    path: '/modiflyPwd', name: 'modiflyPwd', component: getComponent('updatePwd/index.vue'),\n  },\n  {\n    path: '/updateSelf', name: 'personCenter', component: getComponent('updateSelf/index.vue'),\n  },\n  {\n    path: '*', name: '404', component: getComponent('error/404.vue'),\n  },\n  {\n    path: '/401', name: '401', component: getComponent('error/401.vue'),\n  },\n];\n/**\n * permission 有3种类型： Boolean Array String\n * Boolean值的情况，为true，有权限，为false，没有权限\n * Array值的情况，只要其中一个有，就有权限，\n * String值，会匹配vuex里面的perssions数组，如果有，就有权限\n * meta.key 这个是用来匹配缓存的，请确保key值和对应页面的class名称一致，否则页面无法正常缓存\n*/\nexport const asyncRouterMap: routerItem[] = [\n  {\n    path: '/dashboard',\n    icon: 'dashboard',\n    name: 'Dashboard',\n    component: getComponent('dashboard/index'),\n    permission: true,\n    meta: { key: 'Dashboard' },\n  },\n  {\n    path: '/customers',\n    icon: 'team',\n    name: 'Customers',\n    component: getComponent('customers/index'),\n    permission: true,\n    meta: { key: 'Customers' },\n    children: [\n      {\n        path: 'baseInfo',\n        name: 'Base Info',\n        component: getComponent('customers/baseInfo/index'),\n        permission: true,\n        meta: { key: 'BaseInfo' },\n      },\n    ],\n  },\n  {\n    path: '/charts',\n    icon: 'line-chart',\n    name: 'Charts',\n    component: getComponent('chart/index'),\n    permission: true,\n    meta: { key: 'Charts' },\n    children: [\n      {\n        path: 'apexCharts',\n        name: 'ApexCharts',\n        component: getComponent('chart/apexCharts/index'),\n        permission: true,\n        meta: { key: 'ApexCharts' },\n        children: [\n          {\n            path: 'line',\n            name: 'Line',\n            component: getComponent('chart/apexCharts/line/index'),\n            permission: true,\n            meta: { key: 'Line' },\n          },\n          {\n            path: 'area',\n            name: 'Area',\n            component: getComponent('chart/apexCharts/area/index'),\n            permission: true,\n            meta: { key: 'Area' },\n          },\n          {\n            path: 'column',\n            name: 'Column',\n            component: getComponent('chart/apexCharts/column/index'),\n            permission: true,\n            meta: { key: 'Column' },\n          },\n          {\n            path: 'bar',\n            name: 'Bar',\n            component: getComponent('chart/apexCharts/bar/index'),\n            permission: true,\n            meta: { key: 'Bar' },\n          },\n          {\n            path: 'mixed',\n            name: 'Mixed',\n            component: getComponent('chart/apexCharts/mixed/index'),\n            permission: true,\n            meta: { key: 'Mixed' },\n          },\n        ],\n      },\n    ],\n  },\n  {\n    path: '/components',\n    icon: 'appstore-o',\n    name: 'Components',\n    component: getComponent('components/index'),\n    permission: true,\n    meta: { key: 'Components' },\n    children: [\n      {\n        path: 'form',\n        name: 'Form',\n        component: getComponent('components/form/index'),\n        permission: true,\n        meta: { key: 'Form' },\n        children: [\n          {\n            path: 'baseForm',\n            name: 'BaseForm',\n            component: getComponent('components/form/baseForm/index'),\n            permission: true,\n            meta: { key: 'BaseForm' },\n          },\n        ],\n      },\n    ],\n  },\n  {\n    path: '/map',\n    icon: 'environment',\n    name: 'Map',\n    component: getComponent('map/index'),\n    permission: true,\n    meta: { key: 'Map' },\n    children: [\n      {\n        path: 'trajectory',\n        name: 'Trajectory',\n        component: getComponent('map/trajectory/index'),\n        permission: true,\n        meta: { key: 'Trajectory' },\n      },\n    ],\n  },\n];\n\nVue.use(Router);\n\nexport default new Router({\n  routes: constantRouterMap,\n});\n"
  },
  {
    "path": "src/shims-ant-design-vue.d.ts",
    "content": "declare module 'ant-design-vue/lib/locale-provider/zh_CN' {\n  const zh_CN: any;\n  export default zh_CN;\n}\n"
  },
  {
    "path": "src/shims-tsx.d.ts",
    "content": "import Vue, { VNode } from 'vue';\n\ndeclare global {\n  namespace JSX {\n    // tslint:disable no-empty-interface\n    interface Element extends VNode {}\n    // tslint:disable no-empty-interface\n    interface ElementClass extends Vue {}\n    interface IntrinsicElements {\n      [elem: string]: any\n    }\n  }\n}\n"
  },
  {
    "path": "src/shims-vue-amap.d.ts",
    "content": "declare module 'vue-amap' {\n  const VueAMap: any;\n  export default VueAMap;\n}\n"
  },
  {
    "path": "src/shims-vue.d.ts",
    "content": "import Vue from 'vue';\n\ndeclare module '*.vue' {\n\n  export default Vue;\n}\ndeclare module 'vue/types/vue' {\n  interface Vue {\n    Form: any,\n  }\n}\n"
  },
  {
    "path": "src/store/getters.ts",
    "content": "const getters = {\n  sidebar: (state: any) => state.app.sidebar,\n  roles: (state: any) => state.user.roles,\n  permission_routers: (state: any) => state.user.routers,\n  spinning: (state: any) => state.user.spinning,\n};\nexport default getters;\n"
  },
  {
    "path": "src/store/index.ts",
    "content": "import Vue from 'vue';\nimport Vuex from 'vuex';\nimport app from '@/store/modules/app';\nimport user from '@/store/modules/user';\nimport getters from '@/store/getters';\n\nVue.use(Vuex);\n\nconst store = new Vuex.Store({\n  modules: {\n    app,\n    user,\n  },\n  getters,\n});\n\nexport default store;\n"
  },
  {
    "path": "src/store/modules/app.ts",
    "content": "import { menuItem, routerItem } from '@/interface';\nimport { routeToArray } from '@/utils';\nimport router from '@/router';\n// 循环匹配当前路由数据\nfunction findMenu(\n  data: any,\n  url: Array<string>,\n  tabList: Array<any>,\n  tabActiveKey: string,\n  params?: string,\n  query?: any,\n  key?: string[],\n) {\n  let result: any = { tabList, tabActiveKey };\n  data.forEach((item: any) => {\n    if (url.indexOf(item.path.replace(/\\/:\\w+/g, '')) > -1) {\n      if (!key) {\n        key = [];\n      }\n      key.push(item.meta.key);\n      if (url.length === 1) {\n        result.tabList.push({\n          ...item,\n          params,\n          query,\n        });\n        result.tabActiveKey = item.name;\n      } else {\n        url.shift();\n        result = findMenu(item.children, url, tabList, tabActiveKey, params, query, key);\n      }\n    }\n  });\n  result.key = key;\n  return result;\n}\n\nconst app = {\n  state: {\n    sidebar: {\n      opened: localStorage.getItem('sidebarStatus'),\n    },\n    theme: 'default',\n    menuData: [], // 存储菜单路由数据\n    tabList: [], // 页面tab功能数据\n    tabActiveKey: '', // 当前激活tab页面\n    keepList: [], // 需要缓存的页面name\n    isMobile: false, // 是否为移动设备，条件width <= 768px\n  },\n  mutations: {\n    TOGGLE_SIDEBAR: (state: any) => {\n      localStorage.setItem('sidebarStatus', state.sidebar.opened ? '1' : '0');\n      state.sidebar.opened = !state.sidebar.opened;\n    },\n    SAVE_MENU: (state: any, menuData: routerItem[]) => {\n      state.menuData = menuData;\n      // const list: string[] = [];\n      // menuData.map(item => list.push(item.name ? item.name : ''));\n      // state.keepList = list; // 菜单列表的页面都需要缓存\n    },\n    TAB_CHANGE: (state: any, data: { tabList: any, tabActiveKey: string }) => {\n      state.tabList = data.tabList;\n      state.tabActiveKey = data.tabActiveKey;\n    },\n    KEEP_CHANGE: (state: any, list: Array<string>) => {\n      state.keepList = list;\n    },\n    ISMOBILE: (state: any, isMobile: boolean) => {\n      state.isMobile = isMobile;\n    },\n  },\n  actions: {\n    ChangeMobile: (context: any, isMobile: boolean) => {\n      context.commit('ISMOBILE', isMobile);\n    },\n    ToggleSideBar: (context: any) => {\n      context.commit('TOGGLE_SIDEBAR');\n    },\n    GetMenuData: (context: any, menuData: routerItem[]) => {\n      context.commit('SAVE_MENU', menuData);\n    },\n    // 新增缓存页面\n    addKeep: async (context: any, name: string[]) => {\n      // 新增tab，增加缓存状态\n      const { keepList } = context.state;\n      name.forEach((item: string) => {\n        if (keepList.indexOf(item) === -1) {\n          keepList.push(item);\n        }\n      });\n      await context.commit('KEEP_CHANGE', keepList);\n    },\n    AddTabPane: (context: any, url: string) => new Promise((resolve, reject) => {\n      const {\n        menuData, tabList, tabActiveKey, keepList,\n      } = context.state;\n      let resultData = { tabList, tabActiveKey, key: [] };\n      let haveMenu = false;\n      const ArrPath = routeToArray(url);\n      tabList.map((item: any) => {\n        if (ArrPath.routeArr.indexOf(item.path.replace(/\\/:\\w+/g, '')) > -1) {\n          resultData.tabActiveKey = item.name;\n          haveMenu = true;\n          return false;\n        }\n        return item;\n      });\n      if (!haveMenu) {\n        resultData = findMenu(menuData, ArrPath.routeArr, tabList, tabActiveKey, ArrPath.params);\n        if (resultData.tabActiveKey && resultData.key) {\n          context.dispatch('addKeep', resultData.key);\n        }\n      }\n      context.commit('TAB_CHANGE', resultData);\n      resolve(true);\n    }),\n    RemoveTab: (context: any, name: string) => {\n      let { tabList } = context.state;\n      const { keepList } = context.state;\n      const resultData = { tabList: [], tabActiveKey: '' };\n      tabList = tabList.filter((item: any, index: number) => {\n        if (item.name === name) {\n          // 关闭tab后，页面跳转到前一个TAB，特殊情况是关闭第一个TAB应该打开第二个TAB\n          resultData.tabActiveKey = index ? tabList[index - 1].name : tabList[index + 1].name;\n          keepList.splice(keepList.indexOf(item.meta.key), 1);\n          context.commit('KEEP_CHANGE', keepList);\n          router.push({ name: resultData.tabActiveKey });\n          return false;\n        }\n        return true;\n      });\n      resultData.tabList = tabList;\n      context.commit('TAB_CHANGE', resultData);\n    },\n    TabChange: (context: any, name: string) => {\n      const { tabList } = context.state;\n      const resultData = { tabList, tabActiveKey: name };\n      context.commit('TAB_CHANGE', resultData);\n    },\n  },\n};\n\nexport default app;\n"
  },
  {
    "path": "src/store/modules/user.ts",
    "content": "import config from '@/utils/config';\nimport router, { asyncRouterMap, constantRouterMap } from '@/router';\nimport { routerItem } from '@/interface';\n\ninterface UserData {\n  username: string,\n  userid: string,\n  avatarUri: string,\n  email: string\n}\n\nfunction filterAsyncRouter(\n  AsyncRouterMap: routerItem[],\n  permission: string[],\n): routerItem[] {\n  const routerMap = AsyncRouterMap.filter((item) => {\n    if (typeof item.permission === 'string') {\n      return permission.indexOf(item.permission) > -1;\n    } if (item.permission instanceof Array) {\n      const filter = item.permission.filter(items => permission.indexOf(items) > -1);\n      if (filter.length && item.children) {\n        item.children = filterAsyncRouter(item.children, permission);\n      }\n      return filter.length;\n    }\n    return item.permission;\n  });\n  return routerMap;\n}\n\nconst hasPermission = (permission: string[]) => { // 过滤路由\n  const filterRouter = filterAsyncRouter(asyncRouterMap, permission);\n  // 添加路由的时候排除掉dashboard\n  router.addRoutes(filterRouter);\n  return filterRouter;\n};\n\nconst user = {\n  state: {\n    user: {\n      username: '',\n      userid: '',\n      avatar_uri: '',\n      email: '',\n    },\n    roles: [],\n    permission_routers: [],\n    spinning: true,\n  },\n  mutations: {\n    SAVEROLES: (state: any, roles: Array<any>) => {\n      state.roles = roles;\n    },\n    SVAEUSER: (state: any, userData: UserData) => {\n      state.user = user;\n    },\n    LOADING: (state: any, loading: boolean) => {\n      state.spinning = loading;\n    },\n  },\n  actions: {\n    getUserInfo: (context: any) => new Promise((resolve, reject) => {\n      const params = {\n        token: localStorage.getItem('token'),\n      };\n      context.commit('LOADING', false);\n      window.api.getUserInfo(params).then((res: returnData) => {\n        context.commit('LOADING', true);\n        const { result, entity } = res.data;\n        if (!result.resultCode) {\n          const userData: UserData = {\n            username: entity.username,\n            userid: entity.id,\n            avatarUri: entity.avatar_uri,\n            email: entity.email,\n          };\n          context.commit('SVAEUSER', userData);\n          context.commit('SAVEROLES', entity.permissions);\n          const getRouter = hasPermission(entity.permissions.permission);\n          context.dispatch('GetMenuData', getRouter);\n          resolve(entity);\n        } else {\n          reject(result.resultMessage);\n        }\n      }).catch((error: any) => {\n        context.commit('LOADING', true);\n        reject(error);\n      });\n    }),\n  },\n};\n\nexport default user;\n"
  },
  {
    "path": "src/styles/global.less",
    "content": "::-webkit-scrollbar-thumb {\n  background-color: #e6e6e6;\n}\n\n::-webkit-scrollbar {\n  width: 8px;\n  height: 8px;\n}\n:root {\n  --font-family-sans-serif: \"Nunito\",sans-serif;\n  --font-family-monospace: SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;\n}\n@primary-color: #409EFF;\n\nhtml {\n  font-size: 16px;\n}\n\nbody {\n  height: 100%;\n  overflow-y: hidden;\n  background-color: #f0f2f5 !important;\n  font-family: Nunito,sans-serif;\n}\n\n::-webkit-scrollbar-thumb {\n  background-color: #e6e6e6;\n}\n\n::-webkit-scrollbar {\n  width: 8px;\n  height: 8px;\n}\n\n:global {\n  .editable-cell {\n    display: inline-block;\n  }\n\n  .ant-breadcrumb {\n    & > span {\n      &:last-child {\n        color: #999;\n        font-weight: normal;\n      }\n    }\n  }\n\n  .ant-breadcrumb-link {\n    .anticon + span {\n      margin-left: 4px;\n    }\n  }\n\n  .ant-table {\n    .ant-table-thead > tr > th {\n      text-align: center;\n    }\n\n    .ant-table-tbody > tr > td {\n      text-align: center;\n    }\n\n    &.ant-table-small {\n      .ant-table-thead > tr > th {\n        background: #f7f7f7;\n      }\n\n      .ant-table-body > table {\n        padding: 0;\n      }\n    }\n  }\n\n  .ant-table-pagination {\n    float: none!important;\n    display: table;\n    margin: 16px auto !important;\n  }\n\n  .ant-popover-inner {\n    border: none;\n    border-radius: 0;\n    box-shadow: 0 0 20px rgba(100, 100, 100, 0.2);\n  }\n\n  .vertical-center-modal {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    .ant-modal {\n      top: 0;\n\n      .ant-modal-body {\n        max-height: 80vh;\n        overflow-y: auto;\n      }\n    }\n  }\n\n  .ant-form-item-control {\n    vertical-align: middle;\n  }\n\n  .ant-modal-mask {\n    background-color: rgba(55, 55, 55, 0.2);\n  }\n\n  .ant-modal-content {\n    box-shadow: none;\n  }\n\n  .ant-select-dropdown-menu-item {\n    padding: 12px 16px !important;\n  }\n\n  .margin-right {\n    margin-right: 16px;\n  }\n\n  a:focus {\n    text-decoration: none;\n  }\n}\n@media (min-width: 1600px) {\n  :global {\n    .ant-col-xl-48 {\n      width: 20%;\n    }\n\n    .ant-col-xl-96 {\n      width: 40%;\n    }\n  }\n}\n@media (max-width: 767px) {\n  :global {\n    .ant-pagination-item,\n    .ant-pagination-next,\n    .ant-pagination-options,\n    .ant-pagination-prev {\n      margin-bottom: 8px;\n    }\n\n    .ant-card {\n      .ant-card-head {\n        padding: 0 12px;\n      }\n\n      .ant-card-body {\n        padding: 12px;\n      }\n    }\n  }\n}\n\n.chartjs-chart {\n  margin: auto;\n  position: relative;\n  width: 100%;\n}\n\n@font-face {\n  font-family: 'iconfont';  /* project id 730427 */\n  src: url('//at.alicdn.com/t/font_730427_0jr8nzjd50j6.eot');\n  src: url('//at.alicdn.com/t/font_730427_0jr8nzjd50j6.eot?#iefix') format('embedded-opentype'),\n  url('//at.alicdn.com/t/font_730427_0jr8nzjd50j6.woff') format('woff'),\n  url('//at.alicdn.com/t/font_730427_0jr8nzjd50j6.ttf') format('truetype'),\n  url('//at.alicdn.com/t/font_730427_0jr8nzjd50j6.svg#iconfont') format('svg');\n}\n\n[class*=\" iconfont-\"], [class^=\"iconfont-\"] {\n  font-family: iconfont !important;\n  font-size: 18px;\n  speak: none;\n  font-style: normal;\n  font-weight: 400;\n  font-variant: normal;\n  text-transform: none;\n  vertical-align: baseline;\n  display: inline-block;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n.iconfont-user::before {\n  content: '\\e7ae';\n}\n.iconfont-lock::before {\n  content: '\\e7c9';\n}\n.iconfont-code::before {\n  content: '\\e7fc';\n}\n.iconfont-indent::before {\n  content: '\\e7f3';\n}\n.iconfont-outdent::before {\n  content: '\\e7f4';\n}\n.iconfont-email::before {\n  content: '\\e7de';\n}\n.iconfont-crown::before {\n  content: '\\e842';\n}\n.iconfont-tag::before {\n  content: '\\e7e4';\n}\n.iconfont-sound::before {\n  content: '\\e7db';\n}\n.iconfont-cloudDownload::before {\n  content: '\\e7da';\n}\n.iconfont-cloudUpload::before {\n  content: '\\e7d9';\n}\n.iconfont-car::before {\n  content: '\\e7d7';\n}\n.iconfont-unlike::before {\n  content: '\\e7ca';\n}\n.iconfont-like::before {\n  content: '\\e7c8';\n}\n.iconfont-filter::before {\n  content: '\\e7c7';\n}\n.iconfont-skin::before {\n  content: '\\e7c6';\n}\n.iconfont-bell::before {\n  content: '\\e7c5';\n}\n.iconfont-delete::before {\n  content: '\\e7c4';\n}\n.iconfont-alert::before {\n  content: '\\e7c3';\n}\n.iconfont-fileSearch::before {\n  content: '\\e7b4';\n}\n.iconfont-mobile::before {\n  content: '\\e7b2';\n}\n.iconfont-import::before {\n  content: '\\e794';\n}\n.iconfont-save::before {\n  content: '\\e793';\n}\n.iconfont-export::before {\n  content: '\\e792';\n}\n.iconfont-edit::before {\n  content: '\\e791';\n}\n.iconfont-location::before {\n  content: '\\e790';\n}\n.iconfont-setting::before {\n  content: '\\e78f';\n}\n.iconfont-chart::before {\n  content: '\\e78e';\n}\n.iconfont-dashboard::before {\n  content: '\\e78b';\n}\n.iconfont-message::before {\n  content: '\\e78a';\n}\n.iconfont-server::before {\n  content: '\\e7b1';\n}\n.iconfont-team::before {\n  content: '\\e7af';\n}\n.iconfont-listMenu::before {\n  content: '\\e7f5';\n}\n.iconfont-down::before {\n  content: '\\e7ee';\n}\n.iconfont-up::before {\n  content: '\\e7ed';\n}\n.iconfont-time-circle::before {\n  content: '\\e784';\n}\n.iconfont-unlock::before {\n  content: '\\e7cb';\n}\n.iconfont-wifi::before {\n  content: '\\e7e0';\n}\n.iconfont-direction::before {\n  content: '\\e609';\n}\n.iconfont-speed::before {\n  content: '\\e8db';\n}\n.iconfont-close::before {\n  content: '\\e800';\n}\n.iconfont-monitor::before {\n  content: '\\e670';\n}\n.iconfont-link::before {\n  content: '\\e7e2';\n}\n.iconfont-plus::before {\n  content: '\\e801';\n}"
  },
  {
    "path": "src/styles/var.less",
    "content": "@border-radius-base: 3px;\n@border-radius-sm: 2px;\n@shadow-color: rgba(0,0,0,0.05);\n@shadow-1-down: 4px 4px 40px @shadow-color;\n@border-color-split: #f4f4f4;\n@border-color-base: #e5e5e5;\n@font-size-base: 13px;\n\n@primary-color: #727cf5;\n@warning-color: #faad14;\n@grey-color: #98a6ad;\n@green-color: #08cf97;\n@red-color: #fa5777;\n@text-color: #6b757c;\n\n@blue: #2c8ef8;\n@indigo: #727cf5;\n@purple: #6b5eae;\n@pink: #ff679b;\n@red: #fa5c7c;\n@orange: #fd7e14;\n@yellow: #ffbc00;\n@green: #0acf97;\n@teal: #02a8b5;\n@cyan: #39afd1;\n@white: #fff;\n@gray: #98a6ad;\n@gray-dark: #343a40;\n@primary: #727cf5;\n@secondary: #6c757d;\n@success: #0acf97;\n@info: #39afd1;\n@warning: #ffbc00;\n@danger: #fa5c7c;\n@light: #e3eaef;\n@dark: #313a46;\n"
  },
  {
    "path": "src/utils/city.ts",
    "content": "\n/*\n    ## Address 字典数据\n    字典数据来源 http://www.atatech.org/articles/30028?rnd=254259856\n    国标 省（市）级行政区划码表\n    华北   北京市 天津市 河北省 山西省 内蒙古自治区\n    东北   辽宁省 吉林省 黑龙江省\n    华东   上海市 江苏省 浙江省 安徽省 福建省 江西省 山东省\n    华南   广东省 广西壮族自治区 海南省\n    华中   河南省 湖北省 湖南省\n    西南   重庆市 四川省 贵州省 云南省 西藏自治区\n    西北   陕西省 甘肃省 青海省 宁夏回族自治区 新疆维吾尔自治区\n    港澳台 香港特别行政区 澳门特别行政区 台湾省\n\n    **排序**\n\n    ```js\n    var map = {}\n    _.each(_.keys(REGIONS),function(id){\n      map[id] = REGIONS[ID]\n    })\n    JSON.stringify(map)\n    ```\n*/\nconst DICT: any = {\n  110000: '北京',\n  110100: '北京市',\n  110101: '东城区',\n  110102: '西城区',\n  110105: '朝阳区',\n  110106: '丰台区',\n  110107: '石景山区',\n  110108: '海淀区',\n  110109: '门头沟区',\n  110111: '房山区',\n  110112: '通州区',\n  110113: '顺义区',\n  110114: '昌平区',\n  110115: '大兴区',\n  110116: '怀柔区',\n  110117: '平谷区',\n  110228: '密云县',\n  110229: '延庆县',\n  110230: '其它区',\n  120000: '天津',\n  120100: '天津市',\n  120101: '和平区',\n  120102: '河东区',\n  120103: '河西区',\n  120104: '南开区',\n  120105: '河北区',\n  120106: '红桥区',\n  120110: '东丽区',\n  120111: '西青区',\n  120112: '津南区',\n  120113: '北辰区',\n  120114: '武清区',\n  120115: '宝坻区',\n  120116: '滨海新区',\n  120221: '宁河县',\n  120223: '静海县',\n  120225: '蓟县',\n  120226: '其它区',\n  130000: '河北省',\n  130100: '石家庄市',\n  130102: '长安区',\n  130103: '桥东区',\n  130104: '桥西区',\n  130105: '新华区',\n  130107: '井陉矿区',\n  130108: '裕华区',\n  130121: '井陉县',\n  130123: '正定县',\n  130124: '栾城县',\n  130125: '行唐县',\n  130126: '灵寿县',\n  130127: '高邑县',\n  130128: '深泽县',\n  130129: '赞皇县',\n  130130: '无极县',\n  130131: '平山县',\n  130132: '元氏县',\n  130133: '赵县',\n  130181: '辛集市',\n  130182: '藁城市',\n  130183: '晋州市',\n  130184: '新乐市',\n  130185: '鹿泉市',\n  130186: '其它区',\n  130200: '唐山市',\n  130202: '路南区',\n  130203: '路北区',\n  130204: '古冶区',\n  130205: '开平区',\n  130207: '丰南区',\n  130208: '丰润区',\n  130223: '滦县',\n  130224: '滦南县',\n  130225: '乐亭县',\n  130227: '迁西县',\n  130229: '玉田县',\n  130230: '曹妃甸区',\n  130281: '遵化市',\n  130283: '迁安市',\n  130284: '其它区',\n  130300: '秦皇岛市',\n  130302: '海港区',\n  130303: '山海关区',\n  130304: '北戴河区',\n  130321: '青龙满族自治县',\n  130322: '昌黎县',\n  130323: '抚宁县',\n  130324: '卢龙县',\n  130398: '其它区',\n  130400: '邯郸市',\n  130402: '邯山区',\n  130403: '丛台区',\n  130404: '复兴区',\n  130406: '峰峰矿区',\n  130421: '邯郸县',\n  130423: '临漳县',\n  130424: '成安县',\n  130425: '大名县',\n  130426: '涉县',\n  130427: '磁县',\n  130428: '肥乡县',\n  130429: '永年县',\n  130430: '邱县',\n  130431: '鸡泽县',\n  130432: '广平县',\n  130433: '馆陶县',\n  130434: '魏县',\n  130435: '曲周县',\n  130481: '武安市',\n  130482: '其它区',\n  130500: '邢台市',\n  130502: '桥东区',\n  130503: '桥西区',\n  130521: '邢台县',\n  130522: '临城县',\n  130523: '内丘县',\n  130524: '柏乡县',\n  130525: '隆尧县',\n  130526: '任县',\n  130527: '南和县',\n  130528: '宁晋县',\n  130529: '巨鹿县',\n  130530: '新河县',\n  130531: '广宗县',\n  130532: '平乡县',\n  130533: '威县',\n  130534: '清河县',\n  130535: '临西县',\n  130581: '南宫市',\n  130582: '沙河市',\n  130583: '其它区',\n  130600: '保定市',\n  130602: '新市区',\n  130603: '北市区',\n  130604: '南市区',\n  130621: '满城县',\n  130622: '清苑县',\n  130623: '涞水县',\n  130624: '阜平县',\n  130625: '徐水县',\n  130626: '定兴县',\n  130627: '唐县',\n  130628: '高阳县',\n  130629: '容城县',\n  130630: '涞源县',\n  130631: '望都县',\n  130632: '安新县',\n  130633: '易县',\n  130634: '曲阳县',\n  130635: '蠡县',\n  130636: '顺平县',\n  130637: '博野县',\n  130638: '雄县',\n  130681: '涿州市',\n  130682: '定州市',\n  130683: '安国市',\n  130684: '高碑店市',\n  130699: '其它区',\n  130700: '张家口市',\n  130702: '桥东区',\n  130703: '桥西区',\n  130705: '宣化区',\n  130706: '下花园区',\n  130721: '宣化县',\n  130722: '张北县',\n  130723: '康保县',\n  130724: '沽源县',\n  130725: '尚义县',\n  130726: '蔚县',\n  130727: '阳原县',\n  130728: '怀安县',\n  130729: '万全县',\n  130730: '怀来县',\n  130731: '涿鹿县',\n  130732: '赤城县',\n  130733: '崇礼县',\n  130734: '其它区',\n  130800: '承德市',\n  130802: '双桥区',\n  130803: '双滦区',\n  130804: '鹰手营子矿区',\n  130821: '承德县',\n  130822: '兴隆县',\n  130823: '平泉县',\n  130824: '滦平县',\n  130825: '隆化县',\n  130826: '丰宁满族自治县',\n  130827: '宽城满族自治县',\n  130828: '围场满族蒙古族自治县',\n  130829: '其它区',\n  130900: '沧州市',\n  130902: '新华区',\n  130903: '运河区',\n  130921: '沧县',\n  130922: '青县',\n  130923: '东光县',\n  130924: '海兴县',\n  130925: '盐山县',\n  130926: '肃宁县',\n  130927: '南皮县',\n  130928: '吴桥县',\n  130929: '献县',\n  130930: '孟村回族自治县',\n  130981: '泊头市',\n  130982: '任丘市',\n  130983: '黄骅市',\n  130984: '河间市',\n  130985: '其它区',\n  131000: '廊坊市',\n  131002: '安次区',\n  131003: '广阳区',\n  131022: '固安县',\n  131023: '永清县',\n  131024: '香河县',\n  131025: '大城县',\n  131026: '文安县',\n  131028: '大厂回族自治县',\n  131081: '霸州市',\n  131082: '三河市',\n  131083: '其它区',\n  131100: '衡水市',\n  131102: '桃城区',\n  131121: '枣强县',\n  131122: '武邑县',\n  131123: '武强县',\n  131124: '饶阳县',\n  131125: '安平县',\n  131126: '故城县',\n  131127: '景县',\n  131128: '阜城县',\n  131181: '冀州市',\n  131182: '深州市',\n  131183: '其它区',\n  140000: '山西省',\n  140100: '太原市',\n  140105: '小店区',\n  140106: '迎泽区',\n  140107: '杏花岭区',\n  140108: '尖草坪区',\n  140109: '万柏林区',\n  140110: '晋源区',\n  140121: '清徐县',\n  140122: '阳曲县',\n  140123: '娄烦县',\n  140181: '古交市',\n  140182: '其它区',\n  140200: '大同市',\n  140202: '城区',\n  140203: '矿区',\n  140211: '南郊区',\n  140212: '新荣区',\n  140221: '阳高县',\n  140222: '天镇县',\n  140223: '广灵县',\n  140224: '灵丘县',\n  140225: '浑源县',\n  140226: '左云县',\n  140227: '大同县',\n  140228: '其它区',\n  140300: '阳泉市',\n  140302: '城区',\n  140303: '矿区',\n  140311: '郊区',\n  140321: '平定县',\n  140322: '盂县',\n  140323: '其它区',\n  140400: '长治市',\n  140421: '长治县',\n  140423: '襄垣县',\n  140424: '屯留县',\n  140425: '平顺县',\n  140426: '黎城县',\n  140427: '壶关县',\n  140428: '长子县',\n  140429: '武乡县',\n  140430: '沁县',\n  140431: '沁源县',\n  140481: '潞城市',\n  140482: '城区',\n  140483: '郊区',\n  140485: '其它区',\n  140500: '晋城市',\n  140502: '城区',\n  140521: '沁水县',\n  140522: '阳城县',\n  140524: '陵川县',\n  140525: '泽州县',\n  140581: '高平市',\n  140582: '其它区',\n  140600: '朔州市',\n  140602: '朔城区',\n  140603: '平鲁区',\n  140621: '山阴县',\n  140622: '应县',\n  140623: '右玉县',\n  140624: '怀仁县',\n  140625: '其它区',\n  140700: '晋中市',\n  140702: '榆次区',\n  140721: '榆社县',\n  140722: '左权县',\n  140723: '和顺县',\n  140724: '昔阳县',\n  140725: '寿阳县',\n  140726: '太谷县',\n  140727: '祁县',\n  140728: '平遥县',\n  140729: '灵石县',\n  140781: '介休市',\n  140782: '其它区',\n  140800: '运城市',\n  140802: '盐湖区',\n  140821: '临猗县',\n  140822: '万荣县',\n  140823: '闻喜县',\n  140824: '稷山县',\n  140825: '新绛县',\n  140826: '绛县',\n  140827: '垣曲县',\n  140828: '夏县',\n  140829: '平陆县',\n  140830: '芮城县',\n  140881: '永济市',\n  140882: '河津市',\n  140883: '其它区',\n  140900: '忻州市',\n  140902: '忻府区',\n  140921: '定襄县',\n  140922: '五台县',\n  140923: '代县',\n  140924: '繁峙县',\n  140925: '宁武县',\n  140926: '静乐县',\n  140927: '神池县',\n  140928: '五寨县',\n  140929: '岢岚县',\n  140930: '河曲县',\n  140931: '保德县',\n  140932: '偏关县',\n  140981: '原平市',\n  140982: '其它区',\n  141000: '临汾市',\n  141002: '尧都区',\n  141021: '曲沃县',\n  141022: '翼城县',\n  141023: '襄汾县',\n  141024: '洪洞县',\n  141025: '古县',\n  141026: '安泽县',\n  141027: '浮山县',\n  141028: '吉县',\n  141029: '乡宁县',\n  141030: '大宁县',\n  141031: '隰县',\n  141032: '永和县',\n  141033: '蒲县',\n  141034: '汾西县',\n  141081: '侯马市',\n  141082: '霍州市',\n  141083: '其它区',\n  141100: '吕梁市',\n  141102: '离石区',\n  141121: '文水县',\n  141122: '交城县',\n  141123: '兴县',\n  141124: '临县',\n  141125: '柳林县',\n  141126: '石楼县',\n  141127: '岚县',\n  141128: '方山县',\n  141129: '中阳县',\n  141130: '交口县',\n  141181: '孝义市',\n  141182: '汾阳市',\n  141183: '其它区',\n  150000: '内蒙古自治区',\n  150100: '呼和浩特市',\n  150102: '新城区',\n  150103: '回民区',\n  150104: '玉泉区',\n  150105: '赛罕区',\n  150121: '土默特左旗',\n  150122: '托克托县',\n  150123: '和林格尔县',\n  150124: '清水河县',\n  150125: '武川县',\n  150126: '其它区',\n  150200: '包头市',\n  150202: '东河区',\n  150203: '昆都仑区',\n  150204: '青山区',\n  150205: '石拐区',\n  150206: '白云鄂博矿区',\n  150207: '九原区',\n  150221: '土默特右旗',\n  150222: '固阳县',\n  150223: '达尔罕茂明安联合旗',\n  150224: '其它区',\n  150300: '乌海市',\n  150302: '海勃湾区',\n  150303: '海南区',\n  150304: '乌达区',\n  150305: '其它区',\n  150400: '赤峰市',\n  150402: '红山区',\n  150403: '元宝山区',\n  150404: '松山区',\n  150421: '阿鲁科尔沁旗',\n  150422: '巴林左旗',\n  150423: '巴林右旗',\n  150424: '林西县',\n  150425: '克什克腾旗',\n  150426: '翁牛特旗',\n  150428: '喀喇沁旗',\n  150429: '宁城县',\n  150430: '敖汉旗',\n  150431: '其它区',\n  150500: '通辽市',\n  150502: '科尔沁区',\n  150521: '科尔沁左翼中旗',\n  150522: '科尔沁左翼后旗',\n  150523: '开鲁县',\n  150524: '库伦旗',\n  150525: '奈曼旗',\n  150526: '扎鲁特旗',\n  150581: '霍林郭勒市',\n  150582: '其它区',\n  150600: '鄂尔多斯市',\n  150602: '东胜区',\n  150621: '达拉特旗',\n  150622: '准格尔旗',\n  150623: '鄂托克前旗',\n  150624: '鄂托克旗',\n  150625: '杭锦旗',\n  150626: '乌审旗',\n  150627: '伊金霍洛旗',\n  150628: '其它区',\n  150700: '呼伦贝尔市',\n  150702: '海拉尔区',\n  150703: '扎赉诺尔区',\n  150721: '阿荣旗',\n  150722: '莫力达瓦达斡尔族自治旗',\n  150723: '鄂伦春自治旗',\n  150724: '鄂温克族自治旗',\n  150725: '陈巴尔虎旗',\n  150726: '新巴尔虎左旗',\n  150727: '新巴尔虎右旗',\n  150781: '满洲里市',\n  150782: '牙克石市',\n  150783: '扎兰屯市',\n  150784: '额尔古纳市',\n  150785: '根河市',\n  150786: '其它区',\n  150800: '巴彦淖尔市',\n  150802: '临河区',\n  150821: '五原县',\n  150822: '磴口县',\n  150823: '乌拉特前旗',\n  150824: '乌拉特中旗',\n  150825: '乌拉特后旗',\n  150826: '杭锦后旗',\n  150827: '其它区',\n  150900: '乌兰察布市',\n  150902: '集宁区',\n  150921: '卓资县',\n  150922: '化德县',\n  150923: '商都县',\n  150924: '兴和县',\n  150925: '凉城县',\n  150926: '察哈尔右翼前旗',\n  150927: '察哈尔右翼中旗',\n  150928: '察哈尔右翼后旗',\n  150929: '四子王旗',\n  150981: '丰镇市',\n  150982: '其它区',\n  152200: '兴安盟',\n  152201: '乌兰浩特市',\n  152202: '阿尔山市',\n  152221: '科尔沁右翼前旗',\n  152222: '科尔沁右翼中旗',\n  152223: '扎赉特旗',\n  152224: '突泉县',\n  152225: '其它区',\n  152500: '锡林郭勒盟',\n  152501: '二连浩特市',\n  152502: '锡林浩特市',\n  152522: '阿巴嘎旗',\n  152523: '苏尼特左旗',\n  152524: '苏尼特右旗',\n  152525: '东乌珠穆沁旗',\n  152526: '西乌珠穆沁旗',\n  152527: '太仆寺旗',\n  152528: '镶黄旗',\n  152529: '正镶白旗',\n  152530: '正蓝旗',\n  152531: '多伦县',\n  152532: '其它区',\n  152900: '阿拉善盟',\n  152921: '阿拉善左旗',\n  152922: '阿拉善右旗',\n  152923: '额济纳旗',\n  152924: '其它区',\n  210000: '辽宁省',\n  210100: '沈阳市',\n  210102: '和平区',\n  210103: '沈河区',\n  210104: '大东区',\n  210105: '皇姑区',\n  210106: '铁西区',\n  210111: '苏家屯区',\n  210112: '东陵区',\n  210113: '新城子区',\n  210114: '于洪区',\n  210122: '辽中县',\n  210123: '康平县',\n  210124: '法库县',\n  210181: '新民市',\n  210184: '沈北新区',\n  210185: '其它区',\n  210200: '大连市',\n  210202: '中山区',\n  210203: '西岗区',\n  210204: '沙河口区',\n  210211: '甘井子区',\n  210212: '旅顺口区',\n  210213: '金州区',\n  210224: '长海县',\n  210281: '瓦房店市',\n  210282: '普兰店市',\n  210283: '庄河市',\n  210298: '其它区',\n  210300: '鞍山市',\n  210302: '铁东区',\n  210303: '铁西区',\n  210304: '立山区',\n  210311: '千山区',\n  210321: '台安县',\n  210323: '岫岩满族自治县',\n  210381: '海城市',\n  210382: '其它区',\n  210400: '抚顺市',\n  210402: '新抚区',\n  210403: '东洲区',\n  210404: '望花区',\n  210411: '顺城区',\n  210421: '抚顺县',\n  210422: '新宾满族自治县',\n  210423: '清原满族自治县',\n  210424: '其它区',\n  210500: '本溪市',\n  210502: '平山区',\n  210503: '溪湖区',\n  210504: '明山区',\n  210505: '南芬区',\n  210521: '本溪满族自治县',\n  210522: '桓仁满族自治县',\n  210523: '其它区',\n  210600: '丹东市',\n  210602: '元宝区',\n  210603: '振兴区',\n  210604: '振安区',\n  210624: '宽甸满族自治县',\n  210681: '东港市',\n  210682: '凤城市',\n  210683: '其它区',\n  210700: '锦州市',\n  210702: '古塔区',\n  210703: '凌河区',\n  210711: '太和区',\n  210726: '黑山县',\n  210727: '义县',\n  210781: '凌海市',\n  210782: '北镇市',\n  210783: '其它区',\n  210800: '营口市',\n  210802: '站前区',\n  210803: '西市区',\n  210804: '鲅鱼圈区',\n  210811: '老边区',\n  210881: '盖州市',\n  210882: '大石桥市',\n  210883: '其它区',\n  210900: '阜新市',\n  210902: '海州区',\n  210903: '新邱区',\n  210904: '太平区',\n  210905: '清河门区',\n  210911: '细河区',\n  210921: '阜新蒙古族自治县',\n  210922: '彰武县',\n  210923: '其它区',\n  211000: '辽阳市',\n  211002: '白塔区',\n  211003: '文圣区',\n  211004: '宏伟区',\n  211005: '弓长岭区',\n  211011: '太子河区',\n  211021: '辽阳县',\n  211081: '灯塔市',\n  211082: '其它区',\n  211100: '盘锦市',\n  211102: '双台子区',\n  211103: '兴隆台区',\n  211121: '大洼县',\n  211122: '盘山县',\n  211123: '其它区',\n  211200: '铁岭市',\n  211202: '银州区',\n  211204: '清河区',\n  211221: '铁岭县',\n  211223: '西丰县',\n  211224: '昌图县',\n  211281: '调兵山市',\n  211282: '开原市',\n  211283: '其它区',\n  211300: '朝阳市',\n  211302: '双塔区',\n  211303: '龙城区',\n  211321: '朝阳县',\n  211322: '建平县',\n  211324: '喀喇沁左翼蒙古族自治县',\n  211381: '北票市',\n  211382: '凌源市',\n  211383: '其它区',\n  211400: '葫芦岛市',\n  211402: '连山区',\n  211403: '龙港区',\n  211404: '南票区',\n  211421: '绥中县',\n  211422: '建昌县',\n  211481: '兴城市',\n  211482: '其它区',\n  220000: '吉林省',\n  220100: '长春市',\n  220102: '南关区',\n  220103: '宽城区',\n  220104: '朝阳区',\n  220105: '二道区',\n  220106: '绿园区',\n  220112: '双阳区',\n  220122: '农安县',\n  220181: '九台市',\n  220182: '榆树市',\n  220183: '德惠市',\n  220188: '其它区',\n  220200: '吉林市',\n  220202: '昌邑区',\n  220203: '龙潭区',\n  220204: '船营区',\n  220211: '丰满区',\n  220221: '永吉县',\n  220281: '蛟河市',\n  220282: '桦甸市',\n  220283: '舒兰市',\n  220284: '磐石市',\n  220285: '其它区',\n  220300: '四平市',\n  220302: '铁西区',\n  220303: '铁东区',\n  220322: '梨树县',\n  220323: '伊通满族自治县',\n  220381: '公主岭市',\n  220382: '双辽市',\n  220383: '其它区',\n  220400: '辽源市',\n  220402: '龙山区',\n  220403: '西安区',\n  220421: '东丰县',\n  220422: '东辽县',\n  220423: '其它区',\n  220500: '通化市',\n  220502: '东昌区',\n  220503: '二道江区',\n  220521: '通化县',\n  220523: '辉南县',\n  220524: '柳河县',\n  220581: '梅河口市',\n  220582: '集安市',\n  220583: '其它区',\n  220600: '白山市',\n  220602: '浑江区',\n  220621: '抚松县',\n  220622: '靖宇县',\n  220623: '长白朝鲜族自治县',\n  220625: '江源区',\n  220681: '临江市',\n  220682: '其它区',\n  220700: '松原市',\n  220702: '宁江区',\n  220721: '前郭尔罗斯蒙古族自治县',\n  220722: '长岭县',\n  220723: '乾安县',\n  220724: '扶余市',\n  220725: '其它区',\n  220800: '白城市',\n  220802: '洮北区',\n  220821: '镇赉县',\n  220822: '通榆县',\n  220881: '洮南市',\n  220882: '大安市',\n  220883: '其它区',\n  222400: '延边朝鲜族自治州',\n  222401: '延吉市',\n  222402: '图们市',\n  222403: '敦化市',\n  222404: '珲春市',\n  222405: '龙井市',\n  222406: '和龙市',\n  222424: '汪清县',\n  222426: '安图县',\n  222427: '其它区',\n  230000: '黑龙江省',\n  230100: '哈尔滨市',\n  230102: '道里区',\n  230103: '南岗区',\n  230104: '道外区',\n  230106: '香坊区',\n  230108: '平房区',\n  230109: '松北区',\n  230111: '呼兰区',\n  230123: '依兰县',\n  230124: '方正县',\n  230125: '宾县',\n  230126: '巴彦县',\n  230127: '木兰县',\n  230128: '通河县',\n  230129: '延寿县',\n  230181: '阿城区',\n  230182: '双城市',\n  230183: '尚志市',\n  230184: '五常市',\n  230186: '其它区',\n  230200: '齐齐哈尔市',\n  230202: '龙沙区',\n  230203: '建华区',\n  230204: '铁锋区',\n  230205: '昂昂溪区',\n  230206: '富拉尔基区',\n  230207: '碾子山区',\n  230208: '梅里斯达斡尔族区',\n  230221: '龙江县',\n  230223: '依安县',\n  230224: '泰来县',\n  230225: '甘南县',\n  230227: '富裕县',\n  230229: '克山县',\n  230230: '克东县',\n  230231: '拜泉县',\n  230281: '讷河市',\n  230282: '其它区',\n  230300: '鸡西市',\n  230302: '鸡冠区',\n  230303: '恒山区',\n  230304: '滴道区',\n  230305: '梨树区',\n  230306: '城子河区',\n  230307: '麻山区',\n  230321: '鸡东县',\n  230381: '虎林市',\n  230382: '密山市',\n  230383: '其它区',\n  230400: '鹤岗市',\n  230402: '向阳区',\n  230403: '工农区',\n  230404: '南山区',\n  230405: '兴安区',\n  230406: '东山区',\n  230407: '兴山区',\n  230421: '萝北县',\n  230422: '绥滨县',\n  230423: '其它区',\n  230500: '双鸭山市',\n  230502: '尖山区',\n  230503: '岭东区',\n  230505: '四方台区',\n  230506: '宝山区',\n  230521: '集贤县',\n  230522: '友谊县',\n  230523: '宝清县',\n  230524: '饶河县',\n  230525: '其它区',\n  230600: '大庆市',\n  230602: '萨尔图区',\n  230603: '龙凤区',\n  230604: '让胡路区',\n  230605: '红岗区',\n  230606: '大同区',\n  230621: '肇州县',\n  230622: '肇源县',\n  230623: '林甸县',\n  230624: '杜尔伯特蒙古族自治县',\n  230625: '其它区',\n  230700: '伊春市',\n  230702: '伊春区',\n  230703: '南岔区',\n  230704: '友好区',\n  230705: '西林区',\n  230706: '翠峦区',\n  230707: '新青区',\n  230708: '美溪区',\n  230709: '金山屯区',\n  230710: '五营区',\n  230711: '乌马河区',\n  230712: '汤旺河区',\n  230713: '带岭区',\n  230714: '乌伊岭区',\n  230715: '红星区',\n  230716: '上甘岭区',\n  230722: '嘉荫县',\n  230781: '铁力市',\n  230782: '其它区',\n  230800: '佳木斯市',\n  230803: '向阳区',\n  230804: '前进区',\n  230805: '东风区',\n  230811: '郊区',\n  230822: '桦南县',\n  230826: '桦川县',\n  230828: '汤原县',\n  230833: '抚远县',\n  230881: '同江市',\n  230882: '富锦市',\n  230883: '其它区',\n  230900: '七台河市',\n  230902: '新兴区',\n  230903: '桃山区',\n  230904: '茄子河区',\n  230921: '勃利县',\n  230922: '其它区',\n  231000: '牡丹江市',\n  231002: '东安区',\n  231003: '阳明区',\n  231004: '爱民区',\n  231005: '西安区',\n  231024: '东宁县',\n  231025: '林口县',\n  231081: '绥芬河市',\n  231083: '海林市',\n  231084: '宁安市',\n  231085: '穆棱市',\n  231086: '其它区',\n  231100: '黑河市',\n  231102: '爱辉区',\n  231121: '嫩江县',\n  231123: '逊克县',\n  231124: '孙吴县',\n  231181: '北安市',\n  231182: '五大连池市',\n  231183: '其它区',\n  231200: '绥化市',\n  231202: '北林区',\n  231221: '望奎县',\n  231222: '兰西县',\n  231223: '青冈县',\n  231224: '庆安县',\n  231225: '明水县',\n  231226: '绥棱县',\n  231281: '安达市',\n  231282: '肇东市',\n  231283: '海伦市',\n  231284: '其它区',\n  232700: '大兴安岭地区',\n  232702: '松岭区',\n  232703: '新林区',\n  232704: '呼中区',\n  232721: '呼玛县',\n  232722: '塔河县',\n  232723: '漠河县',\n  232724: '加格达奇区',\n  232725: '其它区',\n  310000: '上海',\n  310100: '上海市',\n  310101: '黄浦区',\n  310104: '徐汇区',\n  310105: '长宁区',\n  310106: '静安区',\n  310107: '普陀区',\n  310108: '闸北区',\n  310109: '虹口区',\n  310110: '杨浦区',\n  310112: '闵行区',\n  310113: '宝山区',\n  310114: '嘉定区',\n  310115: '浦东新区',\n  310116: '金山区',\n  310117: '松江区',\n  310118: '青浦区',\n  310120: '奉贤区',\n  310230: '崇明县',\n  310231: '其它区',\n  320000: '江苏省',\n  320100: '南京市',\n  320102: '玄武区',\n  320104: '秦淮区',\n  320105: '建邺区',\n  320106: '鼓楼区',\n  320111: '浦口区',\n  320113: '栖霞区',\n  320114: '雨花台区',\n  320115: '江宁区',\n  320116: '六合区',\n  320124: '溧水区',\n  320125: '高淳区',\n  320126: '其它区',\n  320200: '无锡市',\n  320202: '崇安区',\n  320203: '南长区',\n  320204: '北塘区',\n  320205: '锡山区',\n  320206: '惠山区',\n  320211: '滨湖区',\n  320281: '江阴市',\n  320282: '宜兴市',\n  320297: '其它区',\n  320300: '徐州市',\n  320302: '鼓楼区',\n  320303: '云龙区',\n  320305: '贾汪区',\n  320311: '泉山区',\n  320321: '丰县',\n  320322: '沛县',\n  320323: '铜山区',\n  320324: '睢宁县',\n  320381: '新沂市',\n  320382: '邳州市',\n  320383: '其它区',\n  320400: '常州市',\n  320402: '天宁区',\n  320404: '钟楼区',\n  320405: '戚墅堰区',\n  320411: '新北区',\n  320412: '武进区',\n  320481: '溧阳市',\n  320482: '金坛市',\n  320483: '其它区',\n  320500: '苏州市',\n  320505: '虎丘区',\n  320506: '吴中区',\n  320507: '相城区',\n  320508: '姑苏区',\n  320581: '常熟市',\n  320582: '张家港市',\n  320583: '昆山市',\n  320584: '吴江区',\n  320585: '太仓市',\n  320596: '其它区',\n  320600: '南通市',\n  320602: '崇川区',\n  320611: '港闸区',\n  320612: '通州区',\n  320621: '海安县',\n  320623: '如东县',\n  320681: '启东市',\n  320682: '如皋市',\n  320684: '海门市',\n  320694: '其它区',\n  320700: '连云港市',\n  320703: '连云区',\n  320705: '新浦区',\n  320706: '海州区',\n  320721: '赣榆县',\n  320722: '东海县',\n  320723: '灌云县',\n  320724: '灌南县',\n  320725: '其它区',\n  320800: '淮安市',\n  320802: '清河区',\n  320803: '淮安区',\n  320804: '淮阴区',\n  320811: '清浦区',\n  320826: '涟水县',\n  320829: '洪泽县',\n  320830: '盱眙县',\n  320831: '金湖县',\n  320832: '其它区',\n  320900: '盐城市',\n  320902: '亭湖区',\n  320903: '盐都区',\n  320921: '响水县',\n  320922: '滨海县',\n  320923: '阜宁县',\n  320924: '射阳县',\n  320925: '建湖县',\n  320981: '东台市',\n  320982: '大丰市',\n  320983: '其它区',\n  321000: '扬州市',\n  321002: '广陵区',\n  321003: '邗江区',\n  321023: '宝应县',\n  321081: '仪征市',\n  321084: '高邮市',\n  321088: '江都区',\n  321093: '其它区',\n  321100: '镇江市',\n  321102: '京口区',\n  321111: '润州区',\n  321112: '丹徒区',\n  321181: '丹阳市',\n  321182: '扬中市',\n  321183: '句容市',\n  321184: '其它区',\n  321200: '泰州市',\n  321202: '海陵区',\n  321203: '高港区',\n  321281: '兴化市',\n  321282: '靖江市',\n  321283: '泰兴市',\n  321284: '姜堰区',\n  321285: '其它区',\n  321300: '宿迁市',\n  321302: '宿城区',\n  321311: '宿豫区',\n  321322: '沭阳县',\n  321323: '泗阳县',\n  321324: '泗洪县',\n  321325: '其它区',\n  330000: '浙江省',\n  330100: '杭州市',\n  330102: '上城区',\n  330103: '下城区',\n  330104: '江干区',\n  330105: '拱墅区',\n  330106: '西湖区',\n  330108: '滨江区',\n  330109: '萧山区',\n  330110: '余杭区',\n  330122: '桐庐县',\n  330127: '淳安县',\n  330182: '建德市',\n  330183: '富阳市',\n  330185: '临安市',\n  330186: '其它区',\n  330200: '宁波市',\n  330203: '海曙区',\n  330204: '江东区',\n  330205: '江北区',\n  330206: '北仑区',\n  330211: '镇海区',\n  330212: '鄞州区',\n  330225: '象山县',\n  330226: '宁海县',\n  330281: '余姚市',\n  330282: '慈溪市',\n  330283: '奉化市',\n  330284: '其它区',\n  330300: '温州市',\n  330302: '鹿城区',\n  330303: '龙湾区',\n  330304: '瓯海区',\n  330322: '洞头县',\n  330324: '永嘉县',\n  330326: '平阳县',\n  330327: '苍南县',\n  330328: '文成县',\n  330329: '泰顺县',\n  330381: '瑞安市',\n  330382: '乐清市',\n  330383: '其它区',\n  330400: '嘉兴市',\n  330402: '南湖区',\n  330411: '秀洲区',\n  330421: '嘉善县',\n  330424: '海盐县',\n  330481: '海宁市',\n  330482: '平湖市',\n  330483: '桐乡市',\n  330484: '其它区',\n  330500: '湖州市',\n  330502: '吴兴区',\n  330503: '南浔区',\n  330521: '德清县',\n  330522: '长兴县',\n  330523: '安吉县',\n  330524: '其它区',\n  330600: '绍兴市',\n  330602: '越城区',\n  330621: '绍兴县',\n  330624: '新昌县',\n  330681: '诸暨市',\n  330682: '上虞市',\n  330683: '嵊州市',\n  330684: '其它区',\n  330700: '金华市',\n  330702: '婺城区',\n  330703: '金东区',\n  330723: '武义县',\n  330726: '浦江县',\n  330727: '磐安县',\n  330781: '兰溪市',\n  330782: '义乌市',\n  330783: '东阳市',\n  330784: '永康市',\n  330785: '其它区',\n  330800: '衢州市',\n  330802: '柯城区',\n  330803: '衢江区',\n  330822: '常山县',\n  330824: '开化县',\n  330825: '龙游县',\n  330881: '江山市',\n  330882: '其它区',\n  330900: '舟山市',\n  330902: '定海区',\n  330903: '普陀区',\n  330921: '岱山县',\n  330922: '嵊泗县',\n  330923: '其它区',\n  331000: '台州市',\n  331002: '椒江区',\n  331003: '黄岩区',\n  331004: '路桥区',\n  331021: '玉环县',\n  331022: '三门县',\n  331023: '天台县',\n  331024: '仙居县',\n  331081: '温岭市',\n  331082: '临海市',\n  331083: '其它区',\n  331100: '丽水市',\n  331102: '莲都区',\n  331121: '青田县',\n  331122: '缙云县',\n  331123: '遂昌县',\n  331124: '松阳县',\n  331125: '云和县',\n  331126: '庆元县',\n  331127: '景宁畲族自治县',\n  331181: '龙泉市',\n  331182: '其它区',\n  340000: '安徽省',\n  340100: '合肥市',\n  340102: '瑶海区',\n  340103: '庐阳区',\n  340104: '蜀山区',\n  340111: '包河区',\n  340121: '长丰县',\n  340122: '肥东县',\n  340123: '肥西县',\n  340192: '其它区',\n  340200: '芜湖市',\n  340202: '镜湖区',\n  340203: '弋江区',\n  340207: '鸠江区',\n  340208: '三山区',\n  340221: '芜湖县',\n  340222: '繁昌县',\n  340223: '南陵县',\n  340224: '其它区',\n  340300: '蚌埠市',\n  340302: '龙子湖区',\n  340303: '蚌山区',\n  340304: '禹会区',\n  340311: '淮上区',\n  340321: '怀远县',\n  340322: '五河县',\n  340323: '固镇县',\n  340324: '其它区',\n  340400: '淮南市',\n  340402: '大通区',\n  340403: '田家庵区',\n  340404: '谢家集区',\n  340405: '八公山区',\n  340406: '潘集区',\n  340421: '凤台县',\n  340422: '其它区',\n  340500: '马鞍山市',\n  340503: '花山区',\n  340504: '雨山区',\n  340506: '博望区',\n  340521: '当涂县',\n  340522: '其它区',\n  340600: '淮北市',\n  340602: '杜集区',\n  340603: '相山区',\n  340604: '烈山区',\n  340621: '濉溪县',\n  340622: '其它区',\n  340700: '铜陵市',\n  340702: '铜官山区',\n  340703: '狮子山区',\n  340711: '郊区',\n  340721: '铜陵县',\n  340722: '其它区',\n  340800: '安庆市',\n  340802: '迎江区',\n  340803: '大观区',\n  340811: '宜秀区',\n  340822: '怀宁县',\n  340823: '枞阳县',\n  340824: '潜山县',\n  340825: '太湖县',\n  340826: '宿松县',\n  340827: '望江县',\n  340828: '岳西县',\n  340881: '桐城市',\n  340882: '其它区',\n  341000: '黄山市',\n  341002: '屯溪区',\n  341003: '黄山区',\n  341004: '徽州区',\n  341021: '歙县',\n  341022: '休宁县',\n  341023: '黟县',\n  341024: '祁门县',\n  341025: '其它区',\n  341100: '滁州市',\n  341102: '琅琊区',\n  341103: '南谯区',\n  341122: '来安县',\n  341124: '全椒县',\n  341125: '定远县',\n  341126: '凤阳县',\n  341181: '天长市',\n  341182: '明光市',\n  341183: '其它区',\n  341200: '阜阳市',\n  341202: '颍州区',\n  341203: '颍东区',\n  341204: '颍泉区',\n  341221: '临泉县',\n  341222: '太和县',\n  341225: '阜南县',\n  341226: '颍上县',\n  341282: '界首市',\n  341283: '其它区',\n  341300: '宿州市',\n  341302: '埇桥区',\n  341321: '砀山县',\n  341322: '萧县',\n  341323: '灵璧县',\n  341324: '泗县',\n  341325: '其它区',\n  341400: '巢湖市',\n  341421: '庐江县',\n  341422: '无为县',\n  341423: '含山县',\n  341424: '和县',\n  341500: '六安市',\n  341502: '金安区',\n  341503: '裕安区',\n  341521: '寿县',\n  341522: '霍邱县',\n  341523: '舒城县',\n  341524: '金寨县',\n  341525: '霍山县',\n  341526: '其它区',\n  341600: '亳州市',\n  341602: '谯城区',\n  341621: '涡阳县',\n  341622: '蒙城县',\n  341623: '利辛县',\n  341624: '其它区',\n  341700: '池州市',\n  341702: '贵池区',\n  341721: '东至县',\n  341722: '石台县',\n  341723: '青阳县',\n  341724: '其它区',\n  341800: '宣城市',\n  341802: '宣州区',\n  341821: '郎溪县',\n  341822: '广德县',\n  341823: '泾县',\n  341824: '绩溪县',\n  341825: '旌德县',\n  341881: '宁国市',\n  341882: '其它区',\n  350000: '福建省',\n  350100: '福州市',\n  350102: '鼓楼区',\n  350103: '台江区',\n  350104: '仓山区',\n  350105: '马尾区',\n  350111: '晋安区',\n  350121: '闽侯县',\n  350122: '连江县',\n  350123: '罗源县',\n  350124: '闽清县',\n  350125: '永泰县',\n  350128: '平潭县',\n  350181: '福清市',\n  350182: '长乐市',\n  350183: '其它区',\n  350200: '厦门市',\n  350203: '思明区',\n  350205: '海沧区',\n  350206: '湖里区',\n  350211: '集美区',\n  350212: '同安区',\n  350213: '翔安区',\n  350214: '其它区',\n  350300: '莆田市',\n  350302: '城厢区',\n  350303: '涵江区',\n  350304: '荔城区',\n  350305: '秀屿区',\n  350322: '仙游县',\n  350323: '其它区',\n  350400: '三明市',\n  350402: '梅列区',\n  350403: '三元区',\n  350421: '明溪县',\n  350423: '清流县',\n  350424: '宁化县',\n  350425: '大田县',\n  350426: '尤溪县',\n  350427: '沙县',\n  350428: '将乐县',\n  350429: '泰宁县',\n  350430: '建宁县',\n  350481: '永安市',\n  350482: '其它区',\n  350500: '泉州市',\n  350502: '鲤城区',\n  350503: '丰泽区',\n  350504: '洛江区',\n  350505: '泉港区',\n  350521: '惠安县',\n  350524: '安溪县',\n  350525: '永春县',\n  350526: '德化县',\n  350527: '金门县',\n  350581: '石狮市',\n  350582: '晋江市',\n  350583: '南安市',\n  350584: '其它区',\n  350600: '漳州市',\n  350602: '芗城区',\n  350603: '龙文区',\n  350622: '云霄县',\n  350623: '漳浦县',\n  350624: '诏安县',\n  350625: '长泰县',\n  350626: '东山县',\n  350627: '南靖县',\n  350628: '平和县',\n  350629: '华安县',\n  350681: '龙海市',\n  350682: '其它区',\n  350700: '南平市',\n  350702: '延平区',\n  350721: '顺昌县',\n  350722: '浦城县',\n  350723: '光泽县',\n  350724: '松溪县',\n  350725: '政和县',\n  350781: '邵武市',\n  350782: '武夷山市',\n  350783: '建瓯市',\n  350784: '建阳市',\n  350785: '其它区',\n  350800: '龙岩市',\n  350802: '新罗区',\n  350821: '长汀县',\n  350822: '永定县',\n  350823: '上杭县',\n  350824: '武平县',\n  350825: '连城县',\n  350881: '漳平市',\n  350882: '其它区',\n  350900: '宁德市',\n  350902: '蕉城区',\n  350921: '霞浦县',\n  350922: '古田县',\n  350923: '屏南县',\n  350924: '寿宁县',\n  350925: '周宁县',\n  350926: '柘荣县',\n  350981: '福安市',\n  350982: '福鼎市',\n  350983: '其它区',\n  360000: '江西省',\n  360100: '南昌市',\n  360102: '东湖区',\n  360103: '西湖区',\n  360104: '青云谱区',\n  360105: '湾里区',\n  360111: '青山湖区',\n  360121: '南昌县',\n  360122: '新建县',\n  360123: '安义县',\n  360124: '进贤县',\n  360128: '其它区',\n  360200: '景德镇市',\n  360202: '昌江区',\n  360203: '珠山区',\n  360222: '浮梁县',\n  360281: '乐平市',\n  360282: '其它区',\n  360300: '萍乡市',\n  360302: '安源区',\n  360313: '湘东区',\n  360321: '莲花县',\n  360322: '上栗县',\n  360323: '芦溪县',\n  360324: '其它区',\n  360400: '九江市',\n  360402: '庐山区',\n  360403: '浔阳区',\n  360421: '九江县',\n  360423: '武宁县',\n  360424: '修水县',\n  360425: '永修县',\n  360426: '德安县',\n  360427: '星子县',\n  360428: '都昌县',\n  360429: '湖口县',\n  360430: '彭泽县',\n  360481: '瑞昌市',\n  360482: '其它区',\n  360483: '共青城市',\n  360500: '新余市',\n  360502: '渝水区',\n  360521: '分宜县',\n  360522: '其它区',\n  360600: '鹰潭市',\n  360602: '月湖区',\n  360622: '余江县',\n  360681: '贵溪市',\n  360682: '其它区',\n  360700: '赣州市',\n  360702: '章贡区',\n  360721: '赣县',\n  360722: '信丰县',\n  360723: '大余县',\n  360724: '上犹县',\n  360725: '崇义县',\n  360726: '安远县',\n  360727: '龙南县',\n  360728: '定南县',\n  360729: '全南县',\n  360730: '宁都县',\n  360731: '于都县',\n  360732: '兴国县',\n  360733: '会昌县',\n  360734: '寻乌县',\n  360735: '石城县',\n  360781: '瑞金市',\n  360782: '南康市',\n  360783: '其它区',\n  360800: '吉安市',\n  360802: '吉州区',\n  360803: '青原区',\n  360821: '吉安县',\n  360822: '吉水县',\n  360823: '峡江县',\n  360824: '新干县',\n  360825: '永丰县',\n  360826: '泰和县',\n  360827: '遂川县',\n  360828: '万安县',\n  360829: '安福县',\n  360830: '永新县',\n  360881: '井冈山市',\n  360882: '其它区',\n  360900: '宜春市',\n  360902: '袁州区',\n  360921: '奉新县',\n  360922: '万载县',\n  360923: '上高县',\n  360924: '宜丰县',\n  360925: '靖安县',\n  360926: '铜鼓县',\n  360981: '丰城市',\n  360982: '樟树市',\n  360983: '高安市',\n  360984: '其它区',\n  361000: '抚州市',\n  361002: '临川区',\n  361021: '南城县',\n  361022: '黎川县',\n  361023: '南丰县',\n  361024: '崇仁县',\n  361025: '乐安县',\n  361026: '宜黄县',\n  361027: '金溪县',\n  361028: '资溪县',\n  361029: '东乡县',\n  361030: '广昌县',\n  361031: '其它区',\n  361100: '上饶市',\n  361102: '信州区',\n  361121: '上饶县',\n  361122: '广丰县',\n  361123: '玉山县',\n  361124: '铅山县',\n  361125: '横峰县',\n  361126: '弋阳县',\n  361127: '余干县',\n  361128: '鄱阳县',\n  361129: '万年县',\n  361130: '婺源县',\n  361181: '德兴市',\n  361182: '其它区',\n  370000: '山东省',\n  370100: '济南市',\n  370102: '历下区',\n  370103: '市中区',\n  370104: '槐荫区',\n  370105: '天桥区',\n  370112: '历城区',\n  370113: '长清区',\n  370124: '平阴县',\n  370125: '济阳县',\n  370126: '商河县',\n  370181: '章丘市',\n  370182: '其它区',\n  370200: '青岛市',\n  370202: '市南区',\n  370203: '市北区',\n  370211: '黄岛区',\n  370212: '崂山区',\n  370213: '李沧区',\n  370214: '城阳区',\n  370281: '胶州市',\n  370282: '即墨市',\n  370283: '平度市',\n  370285: '莱西市',\n  370286: '其它区',\n  370300: '淄博市',\n  370302: '淄川区',\n  370303: '张店区',\n  370304: '博山区',\n  370305: '临淄区',\n  370306: '周村区',\n  370321: '桓台县',\n  370322: '高青县',\n  370323: '沂源县',\n  370324: '其它区',\n  370400: '枣庄市',\n  370402: '市中区',\n  370403: '薛城区',\n  370404: '峄城区',\n  370405: '台儿庄区',\n  370406: '山亭区',\n  370481: '滕州市',\n  370482: '其它区',\n  370500: '东营市',\n  370502: '东营区',\n  370503: '河口区',\n  370521: '垦利县',\n  370522: '利津县',\n  370523: '广饶县',\n  370591: '其它区',\n  370600: '烟台市',\n  370602: '芝罘区',\n  370611: '福山区',\n  370612: '牟平区',\n  370613: '莱山区',\n  370634: '长岛县',\n  370681: '龙口市',\n  370682: '莱阳市',\n  370683: '莱州市',\n  370684: '蓬莱市',\n  370685: '招远市',\n  370686: '栖霞市',\n  370687: '海阳市',\n  370688: '其它区',\n  370700: '潍坊市',\n  370702: '潍城区',\n  370703: '寒亭区',\n  370704: '坊子区',\n  370705: '奎文区',\n  370724: '临朐县',\n  370725: '昌乐县',\n  370781: '青州市',\n  370782: '诸城市',\n  370783: '寿光市',\n  370784: '安丘市',\n  370785: '高密市',\n  370786: '昌邑市',\n  370787: '其它区',\n  370800: '济宁市',\n  370802: '市中区',\n  370811: '任城区',\n  370826: '微山县',\n  370827: '鱼台县',\n  370828: '金乡县',\n  370829: '嘉祥县',\n  370830: '汶上县',\n  370831: '泗水县',\n  370832: '梁山县',\n  370881: '曲阜市',\n  370882: '兖州市',\n  370883: '邹城市',\n  370884: '其它区',\n  370900: '泰安市',\n  370902: '泰山区',\n  370903: '岱岳区',\n  370921: '宁阳县',\n  370923: '东平县',\n  370982: '新泰市',\n  370983: '肥城市',\n  370984: '其它区',\n  371000: '威海市',\n  371002: '环翠区',\n  371081: '文登市',\n  371082: '荣成市',\n  371083: '乳山市',\n  371084: '其它区',\n  371100: '日照市',\n  371102: '东港区',\n  371103: '岚山区',\n  371121: '五莲县',\n  371122: '莒县',\n  371123: '其它区',\n  371200: '莱芜市',\n  371202: '莱城区',\n  371203: '钢城区',\n  371204: '其它区',\n  371300: '临沂市',\n  371302: '兰山区',\n  371311: '罗庄区',\n  371312: '河东区',\n  371321: '沂南县',\n  371322: '郯城县',\n  371323: '沂水县',\n  371324: '苍山县',\n  371325: '费县',\n  371326: '平邑县',\n  371327: '莒南县',\n  371328: '蒙阴县',\n  371329: '临沭县',\n  371330: '其它区',\n  371400: '德州市',\n  371402: '德城区',\n  371421: '陵县',\n  371422: '宁津县',\n  371423: '庆云县',\n  371424: '临邑县',\n  371425: '齐河县',\n  371426: '平原县',\n  371427: '夏津县',\n  371428: '武城县',\n  371481: '乐陵市',\n  371482: '禹城市',\n  371483: '其它区',\n  371500: '聊城市',\n  371502: '东昌府区',\n  371521: '阳谷县',\n  371522: '莘县',\n  371523: '茌平县',\n  371524: '东阿县',\n  371525: '冠县',\n  371526: '高唐县',\n  371581: '临清市',\n  371582: '其它区',\n  371600: '滨州市',\n  371602: '滨城区',\n  371621: '惠民县',\n  371622: '阳信县',\n  371623: '无棣县',\n  371624: '沾化县',\n  371625: '博兴县',\n  371626: '邹平县',\n  371627: '其它区',\n  371700: '菏泽市',\n  371702: '牡丹区',\n  371721: '曹县',\n  371722: '单县',\n  371723: '成武县',\n  371724: '巨野县',\n  371725: '郓城县',\n  371726: '鄄城县',\n  371727: '定陶县',\n  371728: '东明县',\n  371729: '其它区',\n  410000: '河南省',\n  410100: '郑州市',\n  410102: '中原区',\n  410103: '二七区',\n  410104: '管城回族区',\n  410105: '金水区',\n  410106: '上街区',\n  410108: '惠济区',\n  410122: '中牟县',\n  410181: '巩义市',\n  410182: '荥阳市',\n  410183: '新密市',\n  410184: '新郑市',\n  410185: '登封市',\n  410188: '其它区',\n  410200: '开封市',\n  410202: '龙亭区',\n  410203: '顺河回族区',\n  410204: '鼓楼区',\n  410205: '禹王台区',\n  410211: '金明区',\n  410221: '杞县',\n  410222: '通许县',\n  410223: '尉氏县',\n  410224: '开封县',\n  410225: '兰考县',\n  410226: '其它区',\n  410300: '洛阳市',\n  410302: '老城区',\n  410303: '西工区',\n  410304: '瀍河回族区',\n  410305: '涧西区',\n  410306: '吉利区',\n  410307: '洛龙区',\n  410322: '孟津县',\n  410323: '新安县',\n  410324: '栾川县',\n  410325: '嵩县',\n  410326: '汝阳县',\n  410327: '宜阳县',\n  410328: '洛宁县',\n  410329: '伊川县',\n  410381: '偃师市',\n  410400: '平顶山市',\n  410402: '新华区',\n  410403: '卫东区',\n  410404: '石龙区',\n  410411: '湛河区',\n  410421: '宝丰县',\n  410422: '叶县',\n  410423: '鲁山县',\n  410425: '郏县',\n  410481: '舞钢市',\n  410482: '汝州市',\n  410483: '其它区',\n  410500: '安阳市',\n  410502: '文峰区',\n  410503: '北关区',\n  410505: '殷都区',\n  410506: '龙安区',\n  410522: '安阳县',\n  410523: '汤阴县',\n  410526: '滑县',\n  410527: '内黄县',\n  410581: '林州市',\n  410582: '其它区',\n  410600: '鹤壁市',\n  410602: '鹤山区',\n  410603: '山城区',\n  410611: '淇滨区',\n  410621: '浚县',\n  410622: '淇县',\n  410623: '其它区',\n  410700: '新乡市',\n  410702: '红旗区',\n  410703: '卫滨区',\n  410704: '凤泉区',\n  410711: '牧野区',\n  410721: '新乡县',\n  410724: '获嘉县',\n  410725: '原阳县',\n  410726: '延津县',\n  410727: '封丘县',\n  410728: '长垣县',\n  410781: '卫辉市',\n  410782: '辉县市',\n  410783: '其它区',\n  410800: '焦作市',\n  410802: '解放区',\n  410803: '中站区',\n  410804: '马村区',\n  410811: '山阳区',\n  410821: '修武县',\n  410822: '博爱县',\n  410823: '武陟县',\n  410825: '温县',\n  410881: '济源市',\n  410882: '沁阳市',\n  410883: '孟州市',\n  410884: '其它区',\n  410900: '濮阳市',\n  410902: '华龙区',\n  410922: '清丰县',\n  410923: '南乐县',\n  410926: '范县',\n  410927: '台前县',\n  410928: '濮阳县',\n  410929: '其它区',\n  411000: '许昌市',\n  411002: '魏都区',\n  411023: '许昌县',\n  411024: '鄢陵县',\n  411025: '襄城县',\n  411081: '禹州市',\n  411082: '长葛市',\n  411083: '其它区',\n  411100: '漯河市',\n  411102: '源汇区',\n  411103: '郾城区',\n  411104: '召陵区',\n  411121: '舞阳县',\n  411122: '临颍县',\n  411123: '其它区',\n  411200: '三门峡市',\n  411202: '湖滨区',\n  411221: '渑池县',\n  411222: '陕县',\n  411224: '卢氏县',\n  411281: '义马市',\n  411282: '灵宝市',\n  411283: '其它区',\n  411300: '南阳市',\n  411302: '宛城区',\n  411303: '卧龙区',\n  411321: '南召县',\n  411322: '方城县',\n  411323: '西峡县',\n  411324: '镇平县',\n  411325: '内乡县',\n  411326: '淅川县',\n  411327: '社旗县',\n  411328: '唐河县',\n  411329: '新野县',\n  411330: '桐柏县',\n  411381: '邓州市',\n  411382: '其它区',\n  411400: '商丘市',\n  411402: '梁园区',\n  411403: '睢阳区',\n  411421: '民权县',\n  411422: '睢县',\n  411423: '宁陵县',\n  411424: '柘城县',\n  411425: '虞城县',\n  411426: '夏邑县',\n  411481: '永城市',\n  411482: '其它区',\n  411500: '信阳市',\n  411502: '浉河区',\n  411503: '平桥区',\n  411521: '罗山县',\n  411522: '光山县',\n  411523: '新县',\n  411524: '商城县',\n  411525: '固始县',\n  411526: '潢川县',\n  411527: '淮滨县',\n  411528: '息县',\n  411529: '其它区',\n  411600: '周口市',\n  411602: '川汇区',\n  411621: '扶沟县',\n  411622: '西华县',\n  411623: '商水县',\n  411624: '沈丘县',\n  411625: '郸城县',\n  411626: '淮阳县',\n  411627: '太康县',\n  411628: '鹿邑县',\n  411681: '项城市',\n  411682: '其它区',\n  411700: '驻马店市',\n  411702: '驿城区',\n  411721: '西平县',\n  411722: '上蔡县',\n  411723: '平舆县',\n  411724: '正阳县',\n  411725: '确山县',\n  411726: '泌阳县',\n  411727: '汝南县',\n  411728: '遂平县',\n  411729: '新蔡县',\n  411730: '其它区',\n  420000: '湖北省',\n  420100: '武汉市',\n  420102: '江岸区',\n  420103: '江汉区',\n  420104: '硚口区',\n  420105: '汉阳区',\n  420106: '武昌区',\n  420107: '青山区',\n  420111: '洪山区',\n  420112: '东西湖区',\n  420113: '汉南区',\n  420114: '蔡甸区',\n  420115: '江夏区',\n  420116: '黄陂区',\n  420117: '新洲区',\n  420118: '其它区',\n  420200: '黄石市',\n  420202: '黄石港区',\n  420203: '西塞山区',\n  420204: '下陆区',\n  420205: '铁山区',\n  420222: '阳新县',\n  420281: '大冶市',\n  420282: '其它区',\n  420300: '十堰市',\n  420302: '茅箭区',\n  420303: '张湾区',\n  420321: '郧县',\n  420322: '郧西县',\n  420323: '竹山县',\n  420324: '竹溪县',\n  420325: '房县',\n  420381: '丹江口市',\n  420383: '其它区',\n  420500: '宜昌市',\n  420502: '西陵区',\n  420503: '伍家岗区',\n  420504: '点军区',\n  420505: '猇亭区',\n  420506: '夷陵区',\n  420525: '远安县',\n  420526: '兴山县',\n  420527: '秭归县',\n  420528: '长阳土家族自治县',\n  420529: '五峰土家族自治县',\n  420581: '宜都市',\n  420582: '当阳市',\n  420583: '枝江市',\n  420584: '其它区',\n  420600: '襄阳市',\n  420602: '襄城区',\n  420606: '樊城区',\n  420607: '襄州区',\n  420624: '南漳县',\n  420625: '谷城县',\n  420626: '保康县',\n  420682: '老河口市',\n  420683: '枣阳市',\n  420684: '宜城市',\n  420685: '其它区',\n  420700: '鄂州市',\n  420702: '梁子湖区',\n  420703: '华容区',\n  420704: '鄂城区',\n  420705: '其它区',\n  420800: '荆门市',\n  420802: '东宝区',\n  420804: '掇刀区',\n  420821: '京山县',\n  420822: '沙洋县',\n  420881: '钟祥市',\n  420882: '其它区',\n  420900: '孝感市',\n  420902: '孝南区',\n  420921: '孝昌县',\n  420922: '大悟县',\n  420923: '云梦县',\n  420981: '应城市',\n  420982: '安陆市',\n  420984: '汉川市',\n  420985: '其它区',\n  421000: '荆州市',\n  421002: '沙市区',\n  421003: '荆州区',\n  421022: '公安县',\n  421023: '监利县',\n  421024: '江陵县',\n  421081: '石首市',\n  421083: '洪湖市',\n  421087: '松滋市',\n  421088: '其它区',\n  421100: '黄冈市',\n  421102: '黄州区',\n  421121: '团风县',\n  421122: '红安县',\n  421123: '罗田县',\n  421124: '英山县',\n  421125: '浠水县',\n  421126: '蕲春县',\n  421127: '黄梅县',\n  421181: '麻城市',\n  421182: '武穴市',\n  421183: '其它区',\n  421200: '咸宁市',\n  421202: '咸安区',\n  421221: '嘉鱼县',\n  421222: '通城县',\n  421223: '崇阳县',\n  421224: '通山县',\n  421281: '赤壁市',\n  421283: '其它区',\n  421300: '随州市',\n  421302: '曾都区',\n  421321: '随县',\n  421381: '广水市',\n  421382: '其它区',\n  422800: '恩施土家族苗族自治州',\n  422801: '恩施市',\n  422802: '利川市',\n  422822: '建始县',\n  422823: '巴东县',\n  422825: '宣恩县',\n  422826: '咸丰县',\n  422827: '来凤县',\n  422828: '鹤峰县',\n  422829: '其它区',\n  429004: '仙桃市',\n  429005: '潜江市',\n  429006: '天门市',\n  429021: '神农架林区',\n  430000: '湖南省',\n  430100: '长沙市',\n  430102: '芙蓉区',\n  430103: '天心区',\n  430104: '岳麓区',\n  430105: '开福区',\n  430111: '雨花区',\n  430121: '长沙县',\n  430122: '望城区',\n  430124: '宁乡县',\n  430181: '浏阳市',\n  430182: '其它区',\n  430200: '株洲市',\n  430202: '荷塘区',\n  430203: '芦淞区',\n  430204: '石峰区',\n  430211: '天元区',\n  430221: '株洲县',\n  430223: '攸县',\n  430224: '茶陵县',\n  430225: '炎陵县',\n  430281: '醴陵市',\n  430282: '其它区',\n  430300: '湘潭市',\n  430302: '雨湖区',\n  430304: '岳塘区',\n  430321: '湘潭县',\n  430381: '湘乡市',\n  430382: '韶山市',\n  430383: '其它区',\n  430400: '衡阳市',\n  430405: '珠晖区',\n  430406: '雁峰区',\n  430407: '石鼓区',\n  430408: '蒸湘区',\n  430412: '南岳区',\n  430421: '衡阳县',\n  430422: '衡南县',\n  430423: '衡山县',\n  430424: '衡东县',\n  430426: '祁东县',\n  430481: '耒阳市',\n  430482: '常宁市',\n  430483: '其它区',\n  430500: '邵阳市',\n  430502: '双清区',\n  430503: '大祥区',\n  430511: '北塔区',\n  430521: '邵东县',\n  430522: '新邵县',\n  430523: '邵阳县',\n  430524: '隆回县',\n  430525: '洞口县',\n  430527: '绥宁县',\n  430528: '新宁县',\n  430529: '城步苗族自治县',\n  430581: '武冈市',\n  430582: '其它区',\n  430600: '岳阳市',\n  430602: '岳阳楼区',\n  430603: '云溪区',\n  430611: '君山区',\n  430621: '岳阳县',\n  430623: '华容县',\n  430624: '湘阴县',\n  430626: '平江县',\n  430681: '汨罗市',\n  430682: '临湘市',\n  430683: '其它区',\n  430700: '常德市',\n  430702: '武陵区',\n  430703: '鼎城区',\n  430721: '安乡县',\n  430722: '汉寿县',\n  430723: '澧县',\n  430724: '临澧县',\n  430725: '桃源县',\n  430726: '石门县',\n  430781: '津市市',\n  430782: '其它区',\n  430800: '张家界市',\n  430802: '永定区',\n  430811: '武陵源区',\n  430821: '慈利县',\n  430822: '桑植县',\n  430823: '其它区',\n  430900: '益阳市',\n  430902: '资阳区',\n  430903: '赫山区',\n  430921: '南县',\n  430922: '桃江县',\n  430923: '安化县',\n  430981: '沅江市',\n  430982: '其它区',\n  431000: '郴州市',\n  431002: '北湖区',\n  431003: '苏仙区',\n  431021: '桂阳县',\n  431022: '宜章县',\n  431023: '永兴县',\n  431024: '嘉禾县',\n  431025: '临武县',\n  431026: '汝城县',\n  431027: '桂东县',\n  431028: '安仁县',\n  431081: '资兴市',\n  431082: '其它区',\n  431100: '永州市',\n  431102: '零陵区',\n  431103: '冷水滩区',\n  431121: '祁阳县',\n  431122: '东安县',\n  431123: '双牌县',\n  431124: '道县',\n  431125: '江永县',\n  431126: '宁远县',\n  431127: '蓝山县',\n  431128: '新田县',\n  431129: '江华瑶族自治县',\n  431130: '其它区',\n  431200: '怀化市',\n  431202: '鹤城区',\n  431221: '中方县',\n  431222: '沅陵县',\n  431223: '辰溪县',\n  431224: '溆浦县',\n  431225: '会同县',\n  431226: '麻阳苗族自治县',\n  431227: '新晃侗族自治县',\n  431228: '芷江侗族自治县',\n  431229: '靖州苗族侗族自治县',\n  431230: '通道侗族自治县',\n  431281: '洪江市',\n  431282: '其它区',\n  431300: '娄底市',\n  431302: '娄星区',\n  431321: '双峰县',\n  431322: '新化县',\n  431381: '冷水江市',\n  431382: '涟源市',\n  431383: '其它区',\n  433100: '湘西土家族苗族自治州',\n  433101: '吉首市',\n  433122: '泸溪县',\n  433123: '凤凰县',\n  433124: '花垣县',\n  433125: '保靖县',\n  433126: '古丈县',\n  433127: '永顺县',\n  433130: '龙山县',\n  433131: '其它区',\n  440000: '广东省',\n  440100: '广州市',\n  440103: '荔湾区',\n  440104: '越秀区',\n  440105: '海珠区',\n  440106: '天河区',\n  440111: '白云区',\n  440112: '黄埔区',\n  440113: '番禺区',\n  440114: '花都区',\n  440115: '南沙区',\n  440116: '萝岗区',\n  440183: '增城市',\n  440184: '从化市',\n  440189: '其它区',\n  440200: '韶关市',\n  440203: '武江区',\n  440204: '浈江区',\n  440205: '曲江区',\n  440222: '始兴县',\n  440224: '仁化县',\n  440229: '翁源县',\n  440232: '乳源瑶族自治县',\n  440233: '新丰县',\n  440281: '乐昌市',\n  440282: '南雄市',\n  440283: '其它区',\n  440300: '深圳市',\n  440303: '罗湖区',\n  440304: '福田区',\n  440305: '南山区',\n  440306: '宝安区',\n  440307: '龙岗区',\n  440308: '盐田区',\n  440309: '其它区',\n  440320: '光明新区',\n  440321: '坪山新区',\n  440322: '大鹏新区',\n  440323: '龙华新区',\n  440400: '珠海市',\n  440402: '香洲区',\n  440403: '斗门区',\n  440404: '金湾区',\n  440488: '其它区',\n  440500: '汕头市',\n  440507: '龙湖区',\n  440511: '金平区',\n  440512: '濠江区',\n  440513: '潮阳区',\n  440514: '潮南区',\n  440515: '澄海区',\n  440523: '南澳县',\n  440524: '其它区',\n  440600: '佛山市',\n  440604: '禅城区',\n  440605: '南海区',\n  440606: '顺德区',\n  440607: '三水区',\n  440608: '高明区',\n  440609: '其它区',\n  440700: '江门市',\n  440703: '蓬江区',\n  440704: '江海区',\n  440705: '新会区',\n  440781: '台山市',\n  440783: '开平市',\n  440784: '鹤山市',\n  440785: '恩平市',\n  440786: '其它区',\n  440800: '湛江市',\n  440802: '赤坎区',\n  440803: '霞山区',\n  440804: '坡头区',\n  440811: '麻章区',\n  440823: '遂溪县',\n  440825: '徐闻县',\n  440881: '廉江市',\n  440882: '雷州市',\n  440883: '吴川市',\n  440884: '其它区',\n  440900: '茂名市',\n  440902: '茂南区',\n  440903: '茂港区',\n  440923: '电白县',\n  440981: '高州市',\n  440982: '化州市',\n  440983: '信宜市',\n  440984: '其它区',\n  441200: '肇庆市',\n  441202: '端州区',\n  441203: '鼎湖区',\n  441223: '广宁县',\n  441224: '怀集县',\n  441225: '封开县',\n  441226: '德庆县',\n  441283: '高要市',\n  441284: '四会市',\n  441285: '其它区',\n  441300: '惠州市',\n  441302: '惠城区',\n  441303: '惠阳区',\n  441322: '博罗县',\n  441323: '惠东县',\n  441324: '龙门县',\n  441325: '其它区',\n  441400: '梅州市',\n  441402: '梅江区',\n  441421: '梅县',\n  441422: '大埔县',\n  441423: '丰顺县',\n  441424: '五华县',\n  441426: '平远县',\n  441427: '蕉岭县',\n  441481: '兴宁市',\n  441482: '其它区',\n  441500: '汕尾市',\n  441502: '城区',\n  441521: '海丰县',\n  441523: '陆河县',\n  441581: '陆丰市',\n  441582: '其它区',\n  441600: '河源市',\n  441602: '源城区',\n  441621: '紫金县',\n  441622: '龙川县',\n  441623: '连平县',\n  441624: '和平县',\n  441625: '东源县',\n  441626: '其它区',\n  441700: '阳江市',\n  441702: '江城区',\n  441721: '阳西县',\n  441723: '阳东县',\n  441781: '阳春市',\n  441782: '其它区',\n  441800: '清远市',\n  441802: '清城区',\n  441821: '佛冈县',\n  441823: '阳山县',\n  441825: '连山壮族瑶族自治县',\n  441826: '连南瑶族自治县',\n  441827: '清新区',\n  441881: '英德市',\n  441882: '连州市',\n  441883: '其它区',\n  441900: '东莞市',\n  442000: '中山市',\n  442101: '东沙群岛',\n  445100: '潮州市',\n  445102: '湘桥区',\n  445121: '潮安区',\n  445122: '饶平县',\n  445186: '其它区',\n  445200: '揭阳市',\n  445202: '榕城区',\n  445221: '揭东区',\n  445222: '揭西县',\n  445224: '惠来县',\n  445281: '普宁市',\n  445285: '其它区',\n  445300: '云浮市',\n  445302: '云城区',\n  445321: '新兴县',\n  445322: '郁南县',\n  445323: '云安县',\n  445381: '罗定市',\n  445382: '其它区',\n  450000: '广西壮族自治区',\n  450100: '南宁市',\n  450102: '兴宁区',\n  450103: '青秀区',\n  450105: '江南区',\n  450107: '西乡塘区',\n  450108: '良庆区',\n  450109: '邕宁区',\n  450122: '武鸣县',\n  450123: '隆安县',\n  450124: '马山县',\n  450125: '上林县',\n  450126: '宾阳县',\n  450127: '横县',\n  450128: '其它区',\n  450200: '柳州市',\n  450202: '城中区',\n  450203: '鱼峰区',\n  450204: '柳南区',\n  450205: '柳北区',\n  450221: '柳江县',\n  450222: '柳城县',\n  450223: '鹿寨县',\n  450224: '融安县',\n  450225: '融水苗族自治县',\n  450226: '三江侗族自治县',\n  450227: '其它区',\n  450300: '桂林市',\n  450302: '秀峰区',\n  450303: '叠彩区',\n  450304: '象山区',\n  450305: '七星区',\n  450311: '雁山区',\n  450321: '阳朔县',\n  450322: '临桂区',\n  450323: '灵川县',\n  450324: '全州县',\n  450325: '兴安县',\n  450326: '永福县',\n  450327: '灌阳县',\n  450328: '龙胜各族自治县',\n  450329: '资源县',\n  450330: '平乐县',\n  450331: '荔浦县',\n  450332: '恭城瑶族自治县',\n  450333: '其它区',\n  450400: '梧州市',\n  450403: '万秀区',\n  450405: '长洲区',\n  450406: '龙圩区',\n  450421: '苍梧县',\n  450422: '藤县',\n  450423: '蒙山县',\n  450481: '岑溪市',\n  450482: '其它区',\n  450500: '北海市',\n  450502: '海城区',\n  450503: '银海区',\n  450512: '铁山港区',\n  450521: '合浦县',\n  450522: '其它区',\n  450600: '防城港市',\n  450602: '港口区',\n  450603: '防城区',\n  450621: '上思县',\n  450681: '东兴市',\n  450682: '其它区',\n  450700: '钦州市',\n  450702: '钦南区',\n  450703: '钦北区',\n  450721: '灵山县',\n  450722: '浦北县',\n  450723: '其它区',\n  450800: '贵港市',\n  450802: '港北区',\n  450803: '港南区',\n  450804: '覃塘区',\n  450821: '平南县',\n  450881: '桂平市',\n  450882: '其它区',\n  450900: '玉林市',\n  450902: '玉州区',\n  450903: '福绵区',\n  450921: '容县',\n  450922: '陆川县',\n  450923: '博白县',\n  450924: '兴业县',\n  450981: '北流市',\n  450982: '其它区',\n  451000: '百色市',\n  451002: '右江区',\n  451021: '田阳县',\n  451022: '田东县',\n  451023: '平果县',\n  451024: '德保县',\n  451025: '靖西县',\n  451026: '那坡县',\n  451027: '凌云县',\n  451028: '乐业县',\n  451029: '田林县',\n  451030: '西林县',\n  451031: '隆林各族自治县',\n  451032: '其它区',\n  451100: '贺州市',\n  451102: '八步区',\n  451119: '平桂管理区',\n  451121: '昭平县',\n  451122: '钟山县',\n  451123: '富川瑶族自治县',\n  451124: '其它区',\n  451200: '河池市',\n  451202: '金城江区',\n  451221: '南丹县',\n  451222: '天峨县',\n  451223: '凤山县',\n  451224: '东兰县',\n  451225: '罗城仫佬族自治县',\n  451226: '环江毛南族自治县',\n  451227: '巴马瑶族自治县',\n  451228: '都安瑶族自治县',\n  451229: '大化瑶族自治县',\n  451281: '宜州市',\n  451282: '其它区',\n  451300: '来宾市',\n  451302: '兴宾区',\n  451321: '忻城县',\n  451322: '象州县',\n  451323: '武宣县',\n  451324: '金秀瑶族自治县',\n  451381: '合山市',\n  451382: '其它区',\n  451400: '崇左市',\n  451402: '江州区',\n  451421: '扶绥县',\n  451422: '宁明县',\n  451423: '龙州县',\n  451424: '大新县',\n  451425: '天等县',\n  451481: '凭祥市',\n  451482: '其它区',\n  460000: '海南省',\n  460100: '海口市',\n  460105: '秀英区',\n  460106: '龙华区',\n  460107: '琼山区',\n  460108: '美兰区',\n  460109: '其它区',\n  460200: '三亚市',\n  460300: '三沙市',\n  460321: '西沙群岛',\n  460322: '南沙群岛',\n  460323: '中沙群岛的岛礁及其海域',\n  469001: '五指山市',\n  469002: '琼海市',\n  469003: '儋州市',\n  469005: '文昌市',\n  469006: '万宁市',\n  469007: '东方市',\n  469025: '定安县',\n  469026: '屯昌县',\n  469027: '澄迈县',\n  469028: '临高县',\n  469030: '白沙黎族自治县',\n  469031: '昌江黎族自治县',\n  469033: '乐东黎族自治县',\n  469034: '陵水黎族自治县',\n  469035: '保亭黎族苗族自治县',\n  469036: '琼中黎族苗族自治县',\n  471005: '其它区',\n  500000: '重庆',\n  500100: '重庆市',\n  500101: '万州区',\n  500102: '涪陵区',\n  500103: '渝中区',\n  500104: '大渡口区',\n  500105: '江北区',\n  500106: '沙坪坝区',\n  500107: '九龙坡区',\n  500108: '南岸区',\n  500109: '北碚区',\n  500110: '万盛区',\n  500111: '双桥区',\n  500112: '渝北区',\n  500113: '巴南区',\n  500114: '黔江区',\n  500115: '长寿区',\n  500222: '綦江区',\n  500223: '潼南县',\n  500224: '铜梁县',\n  500225: '大足区',\n  500226: '荣昌县',\n  500227: '璧山县',\n  500228: '梁平县',\n  500229: '城口县',\n  500230: '丰都县',\n  500231: '垫江县',\n  500232: '武隆县',\n  500233: '忠县',\n  500234: '开县',\n  500235: '云阳县',\n  500236: '奉节县',\n  500237: '巫山县',\n  500238: '巫溪县',\n  500240: '石柱土家族自治县',\n  500241: '秀山土家族苗族自治县',\n  500242: '酉阳土家族苗族自治县',\n  500243: '彭水苗族土家族自治县',\n  500381: '江津区',\n  500382: '合川区',\n  500383: '永川区',\n  500384: '南川区',\n  500385: '其它区',\n  510000: '四川省',\n  510100: '成都市',\n  510104: '锦江区',\n  510105: '青羊区',\n  510106: '金牛区',\n  510107: '武侯区',\n  510108: '成华区',\n  510112: '龙泉驿区',\n  510113: '青白江区',\n  510114: '新都区',\n  510115: '温江区',\n  510121: '金堂县',\n  510122: '双流县',\n  510124: '郫县',\n  510129: '大邑县',\n  510131: '蒲江县',\n  510132: '新津县',\n  510181: '都江堰市',\n  510182: '彭州市',\n  510183: '邛崃市',\n  510184: '崇州市',\n  510185: '其它区',\n  510300: '自贡市',\n  510302: '自流井区',\n  510303: '贡井区',\n  510304: '大安区',\n  510311: '沿滩区',\n  510321: '荣县',\n  510322: '富顺县',\n  510323: '其它区',\n  510400: '攀枝花市',\n  510402: '东区',\n  510403: '西区',\n  510411: '仁和区',\n  510421: '米易县',\n  510422: '盐边县',\n  510423: '其它区',\n  510500: '泸州市',\n  510502: '江阳区',\n  510503: '纳溪区',\n  510504: '龙马潭区',\n  510521: '泸县',\n  510522: '合江县',\n  510524: '叙永县',\n  510525: '古蔺县',\n  510526: '其它区',\n  510600: '德阳市',\n  510603: '旌阳区',\n  510623: '中江县',\n  510626: '罗江县',\n  510681: '广汉市',\n  510682: '什邡市',\n  510683: '绵竹市',\n  510684: '其它区',\n  510700: '绵阳市',\n  510703: '涪城区',\n  510704: '游仙区',\n  510722: '三台县',\n  510723: '盐亭县',\n  510724: '安县',\n  510725: '梓潼县',\n  510726: '北川羌族自治县',\n  510727: '平武县',\n  510781: '江油市',\n  510782: '其它区',\n  510800: '广元市',\n  510802: '利州区',\n  510811: '昭化区',\n  510812: '朝天区',\n  510821: '旺苍县',\n  510822: '青川县',\n  510823: '剑阁县',\n  510824: '苍溪县',\n  510825: '其它区',\n  510900: '遂宁市',\n  510903: '船山区',\n  510904: '安居区',\n  510921: '蓬溪县',\n  510922: '射洪县',\n  510923: '大英县',\n  510924: '其它区',\n  511000: '内江市',\n  511002: '市中区',\n  511011: '东兴区',\n  511024: '威远县',\n  511025: '资中县',\n  511028: '隆昌县',\n  511029: '其它区',\n  511100: '乐山市',\n  511102: '市中区',\n  511111: '沙湾区',\n  511112: '五通桥区',\n  511113: '金口河区',\n  511123: '犍为县',\n  511124: '井研县',\n  511126: '夹江县',\n  511129: '沐川县',\n  511132: '峨边彝族自治县',\n  511133: '马边彝族自治县',\n  511181: '峨眉山市',\n  511182: '其它区',\n  511300: '南充市',\n  511302: '顺庆区',\n  511303: '高坪区',\n  511304: '嘉陵区',\n  511321: '南部县',\n  511322: '营山县',\n  511323: '蓬安县',\n  511324: '仪陇县',\n  511325: '西充县',\n  511381: '阆中市',\n  511382: '其它区',\n  511400: '眉山市',\n  511402: '东坡区',\n  511421: '仁寿县',\n  511422: '彭山县',\n  511423: '洪雅县',\n  511424: '丹棱县',\n  511425: '青神县',\n  511426: '其它区',\n  511500: '宜宾市',\n  511502: '翠屏区',\n  511521: '宜宾县',\n  511522: '南溪区',\n  511523: '江安县',\n  511524: '长宁县',\n  511525: '高县',\n  511526: '珙县',\n  511527: '筠连县',\n  511528: '兴文县',\n  511529: '屏山县',\n  511530: '其它区',\n  511600: '广安市',\n  511602: '广安区',\n  511603: '前锋区',\n  511621: '岳池县',\n  511622: '武胜县',\n  511623: '邻水县',\n  511681: '华蓥市',\n  511683: '其它区',\n  511700: '达州市',\n  511702: '通川区',\n  511721: '达川区',\n  511722: '宣汉县',\n  511723: '开江县',\n  511724: '大竹县',\n  511725: '渠县',\n  511781: '万源市',\n  511782: '其它区',\n  511800: '雅安市',\n  511802: '雨城区',\n  511821: '名山区',\n  511822: '荥经县',\n  511823: '汉源县',\n  511824: '石棉县',\n  511825: '天全县',\n  511826: '芦山县',\n  511827: '宝兴县',\n  511828: '其它区',\n  511900: '巴中市',\n  511902: '巴州区',\n  511903: '恩阳区',\n  511921: '通江县',\n  511922: '南江县',\n  511923: '平昌县',\n  511924: '其它区',\n  512000: '资阳市',\n  512002: '雁江区',\n  512021: '安岳县',\n  512022: '乐至县',\n  512081: '简阳市',\n  512082: '其它区',\n  513200: '阿坝藏族羌族自治州',\n  513221: '汶川县',\n  513222: '理县',\n  513223: '茂县',\n  513224: '松潘县',\n  513225: '九寨沟县',\n  513226: '金川县',\n  513227: '小金县',\n  513228: '黑水县',\n  513229: '马尔康县',\n  513230: '壤塘县',\n  513231: '阿坝县',\n  513232: '若尔盖县',\n  513233: '红原县',\n  513234: '其它区',\n  513300: '甘孜藏族自治州',\n  513321: '康定县',\n  513322: '泸定县',\n  513323: '丹巴县',\n  513324: '九龙县',\n  513325: '雅江县',\n  513326: '道孚县',\n  513327: '炉霍县',\n  513328: '甘孜县',\n  513329: '新龙县',\n  513330: '德格县',\n  513331: '白玉县',\n  513332: '石渠县',\n  513333: '色达县',\n  513334: '理塘县',\n  513335: '巴塘县',\n  513336: '乡城县',\n  513337: '稻城县',\n  513338: '得荣县',\n  513339: '其它区',\n  513400: '凉山彝族自治州',\n  513401: '西昌市',\n  513422: '木里藏族自治县',\n  513423: '盐源县',\n  513424: '德昌县',\n  513425: '会理县',\n  513426: '会东县',\n  513427: '宁南县',\n  513428: '普格县',\n  513429: '布拖县',\n  513430: '金阳县',\n  513431: '昭觉县',\n  513432: '喜德县',\n  513433: '冕宁县',\n  513434: '越西县',\n  513435: '甘洛县',\n  513436: '美姑县',\n  513437: '雷波县',\n  513438: '其它区',\n  520000: '贵州省',\n  520100: '贵阳市',\n  520102: '南明区',\n  520103: '云岩区',\n  520111: '花溪区',\n  520112: '乌当区',\n  520113: '白云区',\n  520121: '开阳县',\n  520122: '息烽县',\n  520123: '修文县',\n  520151: '观山湖区',\n  520181: '清镇市',\n  520182: '其它区',\n  520200: '六盘水市',\n  520201: '钟山区',\n  520203: '六枝特区',\n  520221: '水城县',\n  520222: '盘县',\n  520223: '其它区',\n  520300: '遵义市',\n  520302: '红花岗区',\n  520303: '汇川区',\n  520321: '遵义县',\n  520322: '桐梓县',\n  520323: '绥阳县',\n  520324: '正安县',\n  520325: '道真仡佬族苗族自治县',\n  520326: '务川仡佬族苗族自治县',\n  520327: '凤冈县',\n  520328: '湄潭县',\n  520329: '余庆县',\n  520330: '习水县',\n  520381: '赤水市',\n  520382: '仁怀市',\n  520383: '其它区',\n  520400: '安顺市',\n  520402: '西秀区',\n  520421: '平坝县',\n  520422: '普定县',\n  520423: '镇宁布依族苗族自治县',\n  520424: '关岭布依族苗族自治县',\n  520425: '紫云苗族布依族自治县',\n  520426: '其它区',\n  522200: '铜仁市',\n  522201: '碧江区',\n  522222: '江口县',\n  522223: '玉屏侗族自治县',\n  522224: '石阡县',\n  522225: '思南县',\n  522226: '印江土家族苗族自治县',\n  522227: '德江县',\n  522228: '沿河土家族自治县',\n  522229: '松桃苗族自治县',\n  522230: '万山区',\n  522231: '其它区',\n  522300: '黔西南布依族苗族自治州',\n  522301: '兴义市',\n  522322: '兴仁县',\n  522323: '普安县',\n  522324: '晴隆县',\n  522325: '贞丰县',\n  522326: '望谟县',\n  522327: '册亨县',\n  522328: '安龙县',\n  522329: '其它区',\n  522400: '毕节市',\n  522401: '七星关区',\n  522422: '大方县',\n  522423: '黔西县',\n  522424: '金沙县',\n  522425: '织金县',\n  522426: '纳雍县',\n  522427: '威宁彝族回族苗族自治县',\n  522428: '赫章县',\n  522429: '其它区',\n  522600: '黔东南苗族侗族自治州',\n  522601: '凯里市',\n  522622: '黄平县',\n  522623: '施秉县',\n  522624: '三穗县',\n  522625: '镇远县',\n  522626: '岑巩县',\n  522627: '天柱县',\n  522628: '锦屏县',\n  522629: '剑河县',\n  522630: '台江县',\n  522631: '黎平县',\n  522632: '榕江县',\n  522633: '从江县',\n  522634: '雷山县',\n  522635: '麻江县',\n  522636: '丹寨县',\n  522637: '其它区',\n  522700: '黔南布依族苗族自治州',\n  522701: '都匀市',\n  522702: '福泉市',\n  522722: '荔波县',\n  522723: '贵定县',\n  522725: '瓮安县',\n  522726: '独山县',\n  522727: '平塘县',\n  522728: '罗甸县',\n  522729: '长顺县',\n  522730: '龙里县',\n  522731: '惠水县',\n  522732: '三都水族自治县',\n  522733: '其它区',\n  530000: '云南省',\n  530100: '昆明市',\n  530102: '五华区',\n  530103: '盘龙区',\n  530111: '官渡区',\n  530112: '西山区',\n  530113: '东川区',\n  530121: '呈贡区',\n  530122: '晋宁县',\n  530124: '富民县',\n  530125: '宜良县',\n  530126: '石林彝族自治县',\n  530127: '嵩明县',\n  530128: '禄劝彝族苗族自治县',\n  530129: '寻甸回族彝族自治县',\n  530181: '安宁市',\n  530182: '其它区',\n  530300: '曲靖市',\n  530302: '麒麟区',\n  530321: '马龙县',\n  530322: '陆良县',\n  530323: '师宗县',\n  530324: '罗平县',\n  530325: '富源县',\n  530326: '会泽县',\n  530328: '沾益县',\n  530381: '宣威市',\n  530382: '其它区',\n  530400: '玉溪市',\n  530402: '红塔区',\n  530421: '江川县',\n  530422: '澄江县',\n  530423: '通海县',\n  530424: '华宁县',\n  530425: '易门县',\n  530426: '峨山彝族自治县',\n  530427: '新平彝族傣族自治县',\n  530428: '元江哈尼族彝族傣族自治县',\n  530429: '其它区',\n  530500: '保山市',\n  530502: '隆阳区',\n  530521: '施甸县',\n  530522: '腾冲县',\n  530523: '龙陵县',\n  530524: '昌宁县',\n  530525: '其它区',\n  530600: '昭通市',\n  530602: '昭阳区',\n  530621: '鲁甸县',\n  530622: '巧家县',\n  530623: '盐津县',\n  530624: '大关县',\n  530625: '永善县',\n  530626: '绥江县',\n  530627: '镇雄县',\n  530628: '彝良县',\n  530629: '威信县',\n  530630: '水富县',\n  530631: '其它区',\n  530700: '丽江市',\n  530702: '古城区',\n  530721: '玉龙纳西族自治县',\n  530722: '永胜县',\n  530723: '华坪县',\n  530724: '宁蒗彝族自治县',\n  530725: '其它区',\n  530800: '普洱市',\n  530802: '思茅区',\n  530821: '宁洱哈尼族彝族自治县',\n  530822: '墨江哈尼族自治县',\n  530823: '景东彝族自治县',\n  530824: '景谷傣族彝族自治县',\n  530825: '镇沅彝族哈尼族拉祜族自治县',\n  530826: '江城哈尼族彝族自治县',\n  530827: '孟连傣族拉祜族佤族自治县',\n  530828: '澜沧拉祜族自治县',\n  530829: '西盟佤族自治县',\n  530830: '其它区',\n  530900: '临沧市',\n  530902: '临翔区',\n  530921: '凤庆县',\n  530922: '云县',\n  530923: '永德县',\n  530924: '镇康县',\n  530925: '双江拉祜族佤族布朗族傣族自治县',\n  530926: '耿马傣族佤族自治县',\n  530927: '沧源佤族自治县',\n  530928: '其它区',\n  532300: '楚雄彝族自治州',\n  532301: '楚雄市',\n  532322: '双柏县',\n  532323: '牟定县',\n  532324: '南华县',\n  532325: '姚安县',\n  532326: '大姚县',\n  532327: '永仁县',\n  532328: '元谋县',\n  532329: '武定县',\n  532331: '禄丰县',\n  532332: '其它区',\n  532500: '红河哈尼族彝族自治州',\n  532501: '个旧市',\n  532502: '开远市',\n  532522: '蒙自市',\n  532523: '屏边苗族自治县',\n  532524: '建水县',\n  532525: '石屏县',\n  532526: '弥勒市',\n  532527: '泸西县',\n  532528: '元阳县',\n  532529: '红河县',\n  532530: '金平苗族瑶族傣族自治县',\n  532531: '绿春县',\n  532532: '河口瑶族自治县',\n  532533: '其它区',\n  532600: '文山壮族苗族自治州',\n  532621: '文山市',\n  532622: '砚山县',\n  532623: '西畴县',\n  532624: '麻栗坡县',\n  532625: '马关县',\n  532626: '丘北县',\n  532627: '广南县',\n  532628: '富宁县',\n  532629: '其它区',\n  532800: '西双版纳傣族自治州',\n  532801: '景洪市',\n  532822: '勐海县',\n  532823: '勐腊县',\n  532824: '其它区',\n  532900: '大理白族自治州',\n  532901: '大理市',\n  532922: '漾濞彝族自治县',\n  532923: '祥云县',\n  532924: '宾川县',\n  532925: '弥渡县',\n  532926: '南涧彝族自治县',\n  532927: '巍山彝族回族自治县',\n  532928: '永平县',\n  532929: '云龙县',\n  532930: '洱源县',\n  532931: '剑川县',\n  532932: '鹤庆县',\n  532933: '其它区',\n  533100: '德宏傣族景颇族自治州',\n  533102: '瑞丽市',\n  533103: '芒市',\n  533122: '梁河县',\n  533123: '盈江县',\n  533124: '陇川县',\n  533125: '其它区',\n  533300: '怒江傈僳族自治州',\n  533321: '泸水县',\n  533323: '福贡县',\n  533324: '贡山独龙族怒族自治县',\n  533325: '兰坪白族普米族自治县',\n  533326: '其它区',\n  533400: '迪庆藏族自治州',\n  533421: '香格里拉县',\n  533422: '德钦县',\n  533423: '维西傈僳族自治县',\n  533424: '其它区',\n  540000: '西藏自治区',\n  540100: '拉萨市',\n  540102: '城关区',\n  540121: '林周县',\n  540122: '当雄县',\n  540123: '尼木县',\n  540124: '曲水县',\n  540125: '堆龙德庆县',\n  540126: '达孜县',\n  540127: '墨竹工卡县',\n  540128: '其它区',\n  542100: '昌都地区',\n  542121: '昌都县',\n  542122: '江达县',\n  542123: '贡觉县',\n  542124: '类乌齐县',\n  542125: '丁青县',\n  542126: '察雅县',\n  542127: '八宿县',\n  542128: '左贡县',\n  542129: '芒康县',\n  542132: '洛隆县',\n  542133: '边坝县',\n  542134: '其它区',\n  542200: '山南地区',\n  542221: '乃东县',\n  542222: '扎囊县',\n  542223: '贡嘎县',\n  542224: '桑日县',\n  542225: '琼结县',\n  542226: '曲松县',\n  542227: '措美县',\n  542228: '洛扎县',\n  542229: '加查县',\n  542231: '隆子县',\n  542232: '错那县',\n  542233: '浪卡子县',\n  542234: '其它区',\n  542300: '日喀则地区',\n  542301: '日喀则市',\n  542322: '南木林县',\n  542323: '江孜县',\n  542324: '定日县',\n  542325: '萨迦县',\n  542326: '拉孜县',\n  542327: '昂仁县',\n  542328: '谢通门县',\n  542329: '白朗县',\n  542330: '仁布县',\n  542331: '康马县',\n  542332: '定结县',\n  542333: '仲巴县',\n  542334: '亚东县',\n  542335: '吉隆县',\n  542336: '聂拉木县',\n  542337: '萨嘎县',\n  542338: '岗巴县',\n  542339: '其它区',\n  542400: '那曲地区',\n  542421: '那曲县',\n  542422: '嘉黎县',\n  542423: '比如县',\n  542424: '聂荣县',\n  542425: '安多县',\n  542426: '申扎县',\n  542427: '索县',\n  542428: '班戈县',\n  542429: '巴青县',\n  542430: '尼玛县',\n  542431: '其它区',\n  542432: '双湖县',\n  542500: '阿里地区',\n  542521: '普兰县',\n  542522: '札达县',\n  542523: '噶尔县',\n  542524: '日土县',\n  542525: '革吉县',\n  542526: '改则县',\n  542527: '措勤县',\n  542528: '其它区',\n  542600: '林芝地区',\n  542621: '林芝县',\n  542622: '工布江达县',\n  542623: '米林县',\n  542624: '墨脱县',\n  542625: '波密县',\n  542626: '察隅县',\n  542627: '朗县',\n  542628: '其它区',\n  610000: '陕西省',\n  610100: '西安市',\n  610102: '新城区',\n  610103: '碑林区',\n  610104: '莲湖区',\n  610111: '灞桥区',\n  610112: '未央区',\n  610113: '雁塔区',\n  610114: '阎良区',\n  610115: '临潼区',\n  610116: '长安区',\n  610122: '蓝田县',\n  610124: '周至县',\n  610125: '户县',\n  610126: '高陵县',\n  610127: '其它区',\n  610200: '铜川市',\n  610202: '王益区',\n  610203: '印台区',\n  610204: '耀州区',\n  610222: '宜君县',\n  610223: '其它区',\n  610300: '宝鸡市',\n  610302: '渭滨区',\n  610303: '金台区',\n  610304: '陈仓区',\n  610322: '凤翔县',\n  610323: '岐山县',\n  610324: '扶风县',\n  610326: '眉县',\n  610327: '陇县',\n  610328: '千阳县',\n  610329: '麟游县',\n  610330: '凤县',\n  610331: '太白县',\n  610332: '其它区',\n  610400: '咸阳市',\n  610402: '秦都区',\n  610403: '杨陵区',\n  610404: '渭城区',\n  610422: '三原县',\n  610423: '泾阳县',\n  610424: '乾县',\n  610425: '礼泉县',\n  610426: '永寿县',\n  610427: '彬县',\n  610428: '长武县',\n  610429: '旬邑县',\n  610430: '淳化县',\n  610431: '武功县',\n  610481: '兴平市',\n  610482: '其它区',\n  610500: '渭南市',\n  610502: '临渭区',\n  610521: '华县',\n  610522: '潼关县',\n  610523: '大荔县',\n  610524: '合阳县',\n  610525: '澄城县',\n  610526: '蒲城县',\n  610527: '白水县',\n  610528: '富平县',\n  610581: '韩城市',\n  610582: '华阴市',\n  610583: '其它区',\n  610600: '延安市',\n  610602: '宝塔区',\n  610621: '延长县',\n  610622: '延川县',\n  610623: '子长县',\n  610624: '安塞县',\n  610625: '志丹县',\n  610626: '吴起县',\n  610627: '甘泉县',\n  610628: '富县',\n  610629: '洛川县',\n  610630: '宜川县',\n  610631: '黄龙县',\n  610632: '黄陵县',\n  610633: '其它区',\n  610700: '汉中市',\n  610702: '汉台区',\n  610721: '南郑县',\n  610722: '城固县',\n  610723: '洋县',\n  610724: '西乡县',\n  610725: '勉县',\n  610726: '宁强县',\n  610727: '略阳县',\n  610728: '镇巴县',\n  610729: '留坝县',\n  610730: '佛坪县',\n  610731: '其它区',\n  610800: '榆林市',\n  610802: '榆阳区',\n  610821: '神木县',\n  610822: '府谷县',\n  610823: '横山县',\n  610824: '靖边县',\n  610825: '定边县',\n  610826: '绥德县',\n  610827: '米脂县',\n  610828: '佳县',\n  610829: '吴堡县',\n  610830: '清涧县',\n  610831: '子洲县',\n  610832: '其它区',\n  610900: '安康市',\n  610902: '汉滨区',\n  610921: '汉阴县',\n  610922: '石泉县',\n  610923: '宁陕县',\n  610924: '紫阳县',\n  610925: '岚皋县',\n  610926: '平利县',\n  610927: '镇坪县',\n  610928: '旬阳县',\n  610929: '白河县',\n  610930: '其它区',\n  611000: '商洛市',\n  611002: '商州区',\n  611021: '洛南县',\n  611022: '丹凤县',\n  611023: '商南县',\n  611024: '山阳县',\n  611025: '镇安县',\n  611026: '柞水县',\n  611027: '其它区',\n  620000: '甘肃省',\n  620100: '兰州市',\n  620102: '城关区',\n  620103: '七里河区',\n  620104: '西固区',\n  620105: '安宁区',\n  620111: '红古区',\n  620121: '永登县',\n  620122: '皋兰县',\n  620123: '榆中县',\n  620124: '其它区',\n  620200: '嘉峪关市',\n  620300: '金昌市',\n  620302: '金川区',\n  620321: '永昌县',\n  620322: '其它区',\n  620400: '白银市',\n  620402: '白银区',\n  620403: '平川区',\n  620421: '靖远县',\n  620422: '会宁县',\n  620423: '景泰县',\n  620424: '其它区',\n  620500: '天水市',\n  620502: '秦州区',\n  620503: '麦积区',\n  620521: '清水县',\n  620522: '秦安县',\n  620523: '甘谷县',\n  620524: '武山县',\n  620525: '张家川回族自治县',\n  620526: '其它区',\n  620600: '武威市',\n  620602: '凉州区',\n  620621: '民勤县',\n  620622: '古浪县',\n  620623: '天祝藏族自治县',\n  620624: '其它区',\n  620700: '张掖市',\n  620702: '甘州区',\n  620721: '肃南裕固族自治县',\n  620722: '民乐县',\n  620723: '临泽县',\n  620724: '高台县',\n  620725: '山丹县',\n  620726: '其它区',\n  620800: '平凉市',\n  620802: '崆峒区',\n  620821: '泾川县',\n  620822: '灵台县',\n  620823: '崇信县',\n  620824: '华亭县',\n  620825: '庄浪县',\n  620826: '静宁县',\n  620827: '其它区',\n  620900: '酒泉市',\n  620902: '肃州区',\n  620921: '金塔县',\n  620922: '瓜州县',\n  620923: '肃北蒙古族自治县',\n  620924: '阿克塞哈萨克族自治县',\n  620981: '玉门市',\n  620982: '敦煌市',\n  620983: '其它区',\n  621000: '庆阳市',\n  621002: '西峰区',\n  621021: '庆城县',\n  621022: '环县',\n  621023: '华池县',\n  621024: '合水县',\n  621025: '正宁县',\n  621026: '宁县',\n  621027: '镇原县',\n  621028: '其它区',\n  621100: '定西市',\n  621102: '安定区',\n  621121: '通渭县',\n  621122: '陇西县',\n  621123: '渭源县',\n  621124: '临洮县',\n  621125: '漳县',\n  621126: '岷县',\n  621127: '其它区',\n  621200: '陇南市',\n  621202: '武都区',\n  621221: '成县',\n  621222: '文县',\n  621223: '宕昌县',\n  621224: '康县',\n  621225: '西和县',\n  621226: '礼县',\n  621227: '徽县',\n  621228: '两当县',\n  621229: '其它区',\n  622900: '临夏回族自治州',\n  622901: '临夏市',\n  622921: '临夏县',\n  622922: '康乐县',\n  622923: '永靖县',\n  622924: '广河县',\n  622925: '和政县',\n  622926: '东乡族自治县',\n  622927: '积石山保安族东乡族撒拉族自治县',\n  622928: '其它区',\n  623000: '甘南藏族自治州',\n  623001: '合作市',\n  623021: '临潭县',\n  623022: '卓尼县',\n  623023: '舟曲县',\n  623024: '迭部县',\n  623025: '玛曲县',\n  623026: '碌曲县',\n  623027: '夏河县',\n  623028: '其它区',\n  630000: '青海省',\n  630100: '西宁市',\n  630102: '城东区',\n  630103: '城中区',\n  630104: '城西区',\n  630105: '城北区',\n  630121: '大通回族土族自治县',\n  630122: '湟中县',\n  630123: '湟源县',\n  630124: '其它区',\n  632100: '海东市',\n  632121: '平安县',\n  632122: '民和回族土族自治县',\n  632123: '乐都区',\n  632126: '互助土族自治县',\n  632127: '化隆回族自治县',\n  632128: '循化撒拉族自治县',\n  632129: '其它区',\n  632200: '海北藏族自治州',\n  632221: '门源回族自治县',\n  632222: '祁连县',\n  632223: '海晏县',\n  632224: '刚察县',\n  632225: '其它区',\n  632300: '黄南藏族自治州',\n  632321: '同仁县',\n  632322: '尖扎县',\n  632323: '泽库县',\n  632324: '河南蒙古族自治县',\n  632325: '其它区',\n  632500: '海南藏族自治州',\n  632521: '共和县',\n  632522: '同德县',\n  632523: '贵德县',\n  632524: '兴海县',\n  632525: '贵南县',\n  632526: '其它区',\n  632600: '果洛藏族自治州',\n  632621: '玛沁县',\n  632622: '班玛县',\n  632623: '甘德县',\n  632624: '达日县',\n  632625: '久治县',\n  632626: '玛多县',\n  632627: '其它区',\n  632700: '玉树藏族自治州',\n  632721: '玉树市',\n  632722: '杂多县',\n  632723: '称多县',\n  632724: '治多县',\n  632725: '囊谦县',\n  632726: '曲麻莱县',\n  632727: '其它区',\n  632800: '海西蒙古族藏族自治州',\n  632801: '格尔木市',\n  632802: '德令哈市',\n  632821: '乌兰县',\n  632822: '都兰县',\n  632823: '天峻县',\n  632824: '其它区',\n  640000: '宁夏回族自治区',\n  640100: '银川市',\n  640104: '兴庆区',\n  640105: '西夏区',\n  640106: '金凤区',\n  640121: '永宁县',\n  640122: '贺兰县',\n  640181: '灵武市',\n  640182: '其它区',\n  640200: '石嘴山市',\n  640202: '大武口区',\n  640205: '惠农区',\n  640221: '平罗县',\n  640222: '其它区',\n  640300: '吴忠市',\n  640302: '利通区',\n  640303: '红寺堡区',\n  640323: '盐池县',\n  640324: '同心县',\n  640381: '青铜峡市',\n  640382: '其它区',\n  640400: '固原市',\n  640402: '原州区',\n  640422: '西吉县',\n  640423: '隆德县',\n  640424: '泾源县',\n  640425: '彭阳县',\n  640426: '其它区',\n  640500: '中卫市',\n  640502: '沙坡头区',\n  640521: '中宁县',\n  640522: '海原县',\n  640523: '其它区',\n  650000: '新疆维吾尔自治区',\n  650100: '乌鲁木齐市',\n  650102: '天山区',\n  650103: '沙依巴克区',\n  650104: '新市区',\n  650105: '水磨沟区',\n  650106: '头屯河区',\n  650107: '达坂城区',\n  650109: '米东区',\n  650121: '乌鲁木齐县',\n  650122: '其它区',\n  650200: '克拉玛依市',\n  650202: '独山子区',\n  650203: '克拉玛依区',\n  650204: '白碱滩区',\n  650205: '乌尔禾区',\n  650206: '其它区',\n  652100: '吐鲁番地区',\n  652101: '吐鲁番市',\n  652122: '鄯善县',\n  652123: '托克逊县',\n  652124: '其它区',\n  652200: '哈密地区',\n  652201: '哈密市',\n  652222: '巴里坤哈萨克自治县',\n  652223: '伊吾县',\n  652224: '其它区',\n  652300: '昌吉回族自治州',\n  652301: '昌吉市',\n  652302: '阜康市',\n  652323: '呼图壁县',\n  652324: '玛纳斯县',\n  652325: '奇台县',\n  652327: '吉木萨尔县',\n  652328: '木垒哈萨克自治县',\n  652329: '其它区',\n  652700: '博尔塔拉蒙古自治州',\n  652701: '博乐市',\n  652702: '阿拉山口市',\n  652722: '精河县',\n  652723: '温泉县',\n  652724: '其它区',\n  652800: '巴音郭楞蒙古自治州',\n  652801: '库尔勒市',\n  652822: '轮台县',\n  652823: '尉犁县',\n  652824: '若羌县',\n  652825: '且末县',\n  652826: '焉耆回族自治县',\n  652827: '和静县',\n  652828: '和硕县',\n  652829: '博湖县',\n  652830: '其它区',\n  652900: '阿克苏地区',\n  652901: '阿克苏市',\n  652922: '温宿县',\n  652923: '库车县',\n  652924: '沙雅县',\n  652925: '新和县',\n  652926: '拜城县',\n  652927: '乌什县',\n  652928: '阿瓦提县',\n  652929: '柯坪县',\n  652930: '其它区',\n  653000: '克孜勒苏柯尔克孜自治州',\n  653001: '阿图什市',\n  653022: '阿克陶县',\n  653023: '阿合奇县',\n  653024: '乌恰县',\n  653025: '其它区',\n  653100: '喀什地区',\n  653101: '喀什市',\n  653121: '疏附县',\n  653122: '疏勒县',\n  653123: '英吉沙县',\n  653124: '泽普县',\n  653125: '莎车县',\n  653126: '叶城县',\n  653127: '麦盖提县',\n  653128: '岳普湖县',\n  653129: '伽师县',\n  653130: '巴楚县',\n  653131: '塔什库尔干塔吉克自治县',\n  653132: '其它区',\n  653200: '和田地区',\n  653201: '和田市',\n  653221: '和田县',\n  653222: '墨玉县',\n  653223: '皮山县',\n  653224: '洛浦县',\n  653225: '策勒县',\n  653226: '于田县',\n  653227: '民丰县',\n  653228: '其它区',\n  654000: '伊犁哈萨克自治州',\n  654002: '伊宁市',\n  654003: '奎屯市',\n  654021: '伊宁县',\n  654022: '察布查尔锡伯自治县',\n  654023: '霍城县',\n  654024: '巩留县',\n  654025: '新源县',\n  654026: '昭苏县',\n  654027: '特克斯县',\n  654028: '尼勒克县',\n  654029: '其它区',\n  654200: '塔城地区',\n  654201: '塔城市',\n  654202: '乌苏市',\n  654221: '额敏县',\n  654223: '沙湾县',\n  654224: '托里县',\n  654225: '裕民县',\n  654226: '和布克赛尔蒙古自治县',\n  654227: '其它区',\n  654300: '阿勒泰地区',\n  654301: '阿勒泰市',\n  654321: '布尔津县',\n  654322: '富蕴县',\n  654323: '福海县',\n  654324: '哈巴河县',\n  654325: '青河县',\n  654326: '吉木乃县',\n  654327: '其它区',\n  659001: '石河子市',\n  659002: '阿拉尔市',\n  659003: '图木舒克市',\n  659004: '五家渠市',\n  710000: '台湾',\n  710100: '台北市',\n  710101: '中正区',\n  710102: '大同区',\n  710103: '中山区',\n  710104: '松山区',\n  710105: '大安区',\n  710106: '万华区',\n  710107: '信义区',\n  710108: '士林区',\n  710109: '北投区',\n  710110: '内湖区',\n  710111: '南港区',\n  710112: '文山区',\n  710113: '其它区',\n  710200: '高雄市',\n  710201: '新兴区',\n  710202: '前金区',\n  710203: '芩雅区',\n  710204: '盐埕区',\n  710205: '鼓山区',\n  710206: '旗津区',\n  710207: '前镇区',\n  710208: '三民区',\n  710209: '左营区',\n  710210: '楠梓区',\n  710211: '小港区',\n  710212: '其它区',\n  710241: '苓雅区',\n  710242: '仁武区',\n  710243: '大社区',\n  710244: '冈山区',\n  710245: '路竹区',\n  710246: '阿莲区',\n  710247: '田寮区',\n  710248: '燕巢区',\n  710249: '桥头区',\n  710250: '梓官区',\n  710251: '弥陀区',\n  710252: '永安区',\n  710253: '湖内区',\n  710254: '凤山区',\n  710255: '大寮区',\n  710256: '林园区',\n  710257: '鸟松区',\n  710258: '大树区',\n  710259: '旗山区',\n  710260: '美浓区',\n  710261: '六龟区',\n  710262: '内门区',\n  710263: '杉林区',\n  710264: '甲仙区',\n  710265: '桃源区',\n  710266: '那玛夏区',\n  710267: '茂林区',\n  710268: '茄萣区',\n  710300: '台南市',\n  710301: '中西区',\n  710302: '东区',\n  710303: '南区',\n  710304: '北区',\n  710305: '安平区',\n  710306: '安南区',\n  710307: '其它区',\n  710339: '永康区',\n  710340: '归仁区',\n  710341: '新化区',\n  710342: '左镇区',\n  710343: '玉井区',\n  710344: '楠西区',\n  710345: '南化区',\n  710346: '仁德区',\n  710347: '关庙区',\n  710348: '龙崎区',\n  710349: '官田区',\n  710350: '麻豆区',\n  710351: '佳里区',\n  710352: '西港区',\n  710353: '七股区',\n  710354: '将军区',\n  710355: '学甲区',\n  710356: '北门区',\n  710357: '新营区',\n  710358: '后壁区',\n  710359: '白河区',\n  710360: '东山区',\n  710361: '六甲区',\n  710362: '下营区',\n  710363: '柳营区',\n  710364: '盐水区',\n  710365: '善化区',\n  710366: '大内区',\n  710367: '山上区',\n  710368: '新市区',\n  710369: '安定区',\n  710400: '台中市',\n  710401: '中区',\n  710402: '东区',\n  710403: '南区',\n  710404: '西区',\n  710405: '北区',\n  710406: '北屯区',\n  710407: '西屯区',\n  710408: '南屯区',\n  710409: '其它区',\n  710431: '太平区',\n  710432: '大里区',\n  710433: '雾峰区',\n  710434: '乌日区',\n  710435: '丰原区',\n  710436: '后里区',\n  710437: '石冈区',\n  710438: '东势区',\n  710439: '和平区',\n  710440: '新社区',\n  710441: '潭子区',\n  710442: '大雅区',\n  710443: '神冈区',\n  710444: '大肚区',\n  710445: '沙鹿区',\n  710446: '龙井区',\n  710447: '梧栖区',\n  710448: '清水区',\n  710449: '大甲区',\n  710450: '外埔区',\n  710451: '大安区',\n  710500: '金门县',\n  710507: '金沙镇',\n  710508: '金湖镇',\n  710509: '金宁乡',\n  710510: '金城镇',\n  710511: '烈屿乡',\n  710512: '乌坵乡',\n  710600: '南投县',\n  710614: '南投市',\n  710615: '中寮乡',\n  710616: '草屯镇',\n  710617: '国姓乡',\n  710618: '埔里镇',\n  710619: '仁爱乡',\n  710620: '名间乡',\n  710621: '集集镇',\n  710622: '水里乡',\n  710623: '鱼池乡',\n  710624: '信义乡',\n  710625: '竹山镇',\n  710626: '鹿谷乡',\n  710700: '基隆市',\n  710701: '仁爱区',\n  710702: '信义区',\n  710703: '中正区',\n  710704: '中山区',\n  710705: '安乐区',\n  710706: '暖暖区',\n  710707: '七堵区',\n  710708: '其它区',\n  710800: '新竹市',\n  710801: '东区',\n  710802: '北区',\n  710803: '香山区',\n  710804: '其它区',\n  710900: '嘉义市',\n  710901: '东区',\n  710902: '西区',\n  710903: '其它区',\n  711100: '新北市',\n  711130: '万里区',\n  711131: '金山区',\n  711132: '板桥区',\n  711133: '汐止区',\n  711134: '深坑区',\n  711135: '石碇区',\n  711136: '瑞芳区',\n  711137: '平溪区',\n  711138: '双溪区',\n  711139: '贡寮区',\n  711140: '新店区',\n  711141: '坪林区',\n  711142: '乌来区',\n  711143: '永和区',\n  711144: '中和区',\n  711145: '土城区',\n  711146: '三峡区',\n  711147: '树林区',\n  711148: '莺歌区',\n  711149: '三重区',\n  711150: '新庄区',\n  711151: '泰山区',\n  711152: '林口区',\n  711153: '芦洲区',\n  711154: '五股区',\n  711155: '八里区',\n  711156: '淡水区',\n  711157: '三芝区',\n  711158: '石门区',\n  711200: '宜兰县',\n  711214: '宜兰市',\n  711215: '头城镇',\n  711216: '礁溪乡',\n  711217: '壮围乡',\n  711218: '员山乡',\n  711219: '罗东镇',\n  711220: '三星乡',\n  711221: '大同乡',\n  711222: '五结乡',\n  711223: '冬山乡',\n  711224: '苏澳镇',\n  711225: '南澳乡',\n  711226: '钓鱼台',\n  711300: '新竹县',\n  711314: '竹北市',\n  711315: '湖口乡',\n  711316: '新丰乡',\n  711317: '新埔镇',\n  711318: '关西镇',\n  711319: '芎林乡',\n  711320: '宝山乡',\n  711321: '竹东镇',\n  711322: '五峰乡',\n  711323: '横山乡',\n  711324: '尖石乡',\n  711325: '北埔乡',\n  711326: '峨眉乡',\n  711400: '桃园县',\n  711414: '中坜市',\n  711415: '平镇市',\n  711416: '龙潭乡',\n  711417: '杨梅市',\n  711418: '新屋乡',\n  711419: '观音乡',\n  711420: '桃园市',\n  711421: '龟山乡',\n  711422: '八德市',\n  711423: '大溪镇',\n  711424: '复兴乡',\n  711425: '大园乡',\n  711426: '芦竹乡',\n  711500: '苗栗县',\n  711519: '竹南镇',\n  711520: '头份镇',\n  711521: '三湾乡',\n  711522: '南庄乡',\n  711523: '狮潭乡',\n  711524: '后龙镇',\n  711525: '通霄镇',\n  711526: '苑里镇',\n  711527: '苗栗市',\n  711528: '造桥乡',\n  711529: '头屋乡',\n  711530: '公馆乡',\n  711531: '大湖乡',\n  711532: '泰安乡',\n  711533: '铜锣乡',\n  711534: '三义乡',\n  711535: '西湖乡',\n  711536: '卓兰镇',\n  711700: '彰化县',\n  711727: '彰化市',\n  711728: '芬园乡',\n  711729: '花坛乡',\n  711730: '秀水乡',\n  711731: '鹿港镇',\n  711732: '福兴乡',\n  711733: '线西乡',\n  711734: '和美镇',\n  711735: '伸港乡',\n  711736: '员林镇',\n  711737: '社头乡',\n  711738: '永靖乡',\n  711739: '埔心乡',\n  711740: '溪湖镇',\n  711741: '大村乡',\n  711742: '埔盐乡',\n  711743: '田中镇',\n  711744: '北斗镇',\n  711745: '田尾乡',\n  711746: '埤头乡',\n  711747: '溪州乡',\n  711748: '竹塘乡',\n  711749: '二林镇',\n  711750: '大城乡',\n  711751: '芳苑乡',\n  711752: '二水乡',\n  711900: '嘉义县',\n  711919: '番路乡',\n  711920: '梅山乡',\n  711921: '竹崎乡',\n  711922: '阿里山乡',\n  711923: '中埔乡',\n  711924: '大埔乡',\n  711925: '水上乡',\n  711926: '鹿草乡',\n  711927: '太保市',\n  711928: '朴子市',\n  711929: '东石乡',\n  711930: '六脚乡',\n  711931: '新港乡',\n  711932: '民雄乡',\n  711933: '大林镇',\n  711934: '溪口乡',\n  711935: '义竹乡',\n  711936: '布袋镇',\n  712100: '云林县',\n  712121: '斗南镇',\n  712122: '大埤乡',\n  712123: '虎尾镇',\n  712124: '土库镇',\n  712125: '褒忠乡',\n  712126: '东势乡',\n  712127: '台西乡',\n  712128: '仑背乡',\n  712129: '麦寮乡',\n  712130: '斗六市',\n  712131: '林内乡',\n  712132: '古坑乡',\n  712133: '莿桐乡',\n  712134: '西螺镇',\n  712135: '二仑乡',\n  712136: '北港镇',\n  712137: '水林乡',\n  712138: '口湖乡',\n  712139: '四湖乡',\n  712140: '元长乡',\n  712400: '屏东县',\n  712434: '屏东市',\n  712435: '三地门乡',\n  712436: '雾台乡',\n  712437: '玛家乡',\n  712438: '九如乡',\n  712439: '里港乡',\n  712440: '高树乡',\n  712441: '盐埔乡',\n  712442: '长治乡',\n  712443: '麟洛乡',\n  712444: '竹田乡',\n  712445: '内埔乡',\n  712446: '万丹乡',\n  712447: '潮州镇',\n  712448: '泰武乡',\n  712449: '来义乡',\n  712450: '万峦乡',\n  712451: '崁顶乡',\n  712452: '新埤乡',\n  712453: '南州乡',\n  712454: '林边乡',\n  712455: '东港镇',\n  712456: '琉球乡',\n  712457: '佳冬乡',\n  712458: '新园乡',\n  712459: '枋寮乡',\n  712460: '枋山乡',\n  712461: '春日乡',\n  712462: '狮子乡',\n  712463: '车城乡',\n  712464: '牡丹乡',\n  712465: '恒春镇',\n  712466: '满州乡',\n  712500: '台东县',\n  712517: '台东市',\n  712518: '绿岛乡',\n  712519: '兰屿乡',\n  712520: '延平乡',\n  712521: '卑南乡',\n  712522: '鹿野乡',\n  712523: '关山镇',\n  712524: '海端乡',\n  712525: '池上乡',\n  712526: '东河乡',\n  712527: '成功镇',\n  712528: '长滨乡',\n  712529: '金峰乡',\n  712530: '大武乡',\n  712531: '达仁乡',\n  712532: '太麻里乡',\n  712600: '花莲县',\n  712615: '花莲市',\n  712616: '新城乡',\n  712617: '太鲁阁',\n  712618: '秀林乡',\n  712619: '吉安乡',\n  712620: '寿丰乡',\n  712621: '凤林镇',\n  712622: '光复乡',\n  712623: '丰滨乡',\n  712624: '瑞穗乡',\n  712625: '万荣乡',\n  712626: '玉里镇',\n  712627: '卓溪乡',\n  712628: '富里乡',\n  712700: '澎湖县',\n  712707: '马公市',\n  712708: '西屿乡',\n  712709: '望安乡',\n  712710: '七美乡',\n  712711: '白沙乡',\n  712712: '湖西乡',\n  712800: '连江县',\n  712805: '南竿乡',\n  712806: '北竿乡',\n  712807: '莒光乡',\n  712808: '东引乡',\n  810000: '香港特别行政区',\n  810100: '香港岛',\n  810101: '中西区',\n  810102: '湾仔',\n  810103: '东区',\n  810104: '南区',\n  810200: '九龙',\n  810201: '九龙城区',\n  810202: '油尖旺区',\n  810203: '深水埗区',\n  810204: '黄大仙区',\n  810205: '观塘区',\n  810300: '新界',\n  810301: '北区',\n  810302: '大埔区',\n  810303: '沙田区',\n  810304: '西贡区',\n  810305: '元朗区',\n  810306: '屯门区',\n  810307: '荃湾区',\n  810308: '葵青区',\n  810309: '离岛区',\n  820000: '澳门特别行政区',\n  820100: '澳门半岛',\n  820200: '离岛',\n  990000: '海外',\n  990100: '海外',\n};\n\n// id pid/parentId name children\nconst tree = (list: any) => {\n  const mapped: any = {};\n  let item;\n  for (let i = 0; i < list.length; i += 1) {\n    item = list[i];\n    if (!item || !item.id) continue;\n    mapped[item.id] = item;\n  }\n\n  const result = [];\n  for (let ii = 0; ii < list.length; ii += 1) {\n    item = list[ii];\n\n    if (!item) continue;\n    /* jshint -W041 */\n    if (item.pid === undefined && item.parentId === undefined) {\n      result.push(item);\n      continue;\n    }\n    const parent = mapped[item.pid] || mapped[item.parentId];\n    if (!parent) continue;\n    if (!parent.children) parent.children = [];\n    parent.children.push(item);\n  }\n  return result;\n};\n\nconst DICT_FIXED = (function dict() {\n  const fixed = [];\n  for (const id in DICT) {\n    if ({}.hasOwnProperty.call(DICT, id)) {\n      let pid;\n      if (id.slice(2, 6) !== '0000') {\n        pid = id.slice(4, 6) === '00' ? (`${id.slice(0, 2)}0000`) : `${id.slice(0, 4)}00`;\n      }\n      fixed.push({\n        id,\n        pid,\n        name: DICT[id],\n        value: DICT[id],\n        label: DICT[id],\n      });\n    }\n  }\n  return tree(fixed);\n}());\n\nexport default DICT_FIXED;\n"
  },
  {
    "path": "src/utils/config.ts",
    "content": "const Logo = require('../assets/logo.svg');\n\nconst API = process.env.NODE_ENV === 'production' ? '' : '/api';\n\nconst config = {\n  name: 'vue-ts-admin',\n  footerText: 'vue-ts-admin  © 2018 xiaoyang',\n  logo: Logo,\n  icon: '/favicon.ico',\n  API,\n  openPages: ['/login', '/404', '/401'], // 全屏页面\n  noLoginList: ['#/login'],\n};\n\nexport default config;\n"
  },
  {
    "path": "src/utils/coordTrasns.ts",
    "content": "/**\n * 'bd09ll' 百度坐标系\n * 'gcj02ll' 火星坐标系\n */\ntype CoordSys = 'bd09ll' | 'gcj02ll';\nexport default class coordTrasns {\n  static gcj2bd(lat: number, lon: number) {\n    // 世界大地坐标转为百度坐标\n    const xpi = (3.14159265358979324 * 3000.0) / 180.0;\n    const x = lon;\n    const y = lat;\n    const z = Math.sqrt((x * x) + (y * y)) + (0.00002 * Math.sin(y * xpi));\n    const theta = Math.atan2(y, x) + (0.000003 * Math.cos(x * xpi));\n    const bdLon = (z * Math.cos(theta)) + 0.0065;\n    const bdLat = (z * Math.sin(theta)) + 0.006;\n    const result = { lat: 0, lng: 0 };\n    result.lng = bdLon;\n    result.lat = bdLat;\n    return result;\n  }\n\n  static transToBaidu(piont: { lat: number, lng: number }, coordSys: CoordSys) {\n    if (coordSys === 'gcj02ll') {\n      return this.gcj2bd(piont.lat, piont.lng);\n    }\n    return piont;\n  }\n}\n"
  },
  {
    "path": "src/utils/index.ts",
    "content": "export function param2Obj(url: string): { token?: string } {\n  const search = url.split('?')[1];\n  if (!search) {\n    return {};\n  }\n  return JSON.parse(`{\"${decodeURIComponent(search).replace(/\"/g, '\\\\\"').replace(/&/g, '\",\"').replace(/=/g, '\":\"')}\"}`);\n}\n\nexport function routeToArray(route: string): { routeArr: string[], params: string } {\n  if (!route) {\n    return {\n      routeArr: [],\n      params: '',\n    };\n  }\n  const arr: string[] = route.split('/');\n  const ret: string[] = [];\n  let params = '';\n  arr.shift();\n  arr.forEach((item, index) => {\n    if (parseInt(item, 10)) {\n      params = item;\n      return;\n    }\n    ret.push(index ? item : `/${item}`);\n  });\n  return {\n    routeArr: ret,\n    params,\n  };\n}\n\nexport function levelcodeToArray(levelcode: string) {\n  if (!levelcode) {\n    return [];\n  }\n  const arr: string[] = levelcode.split('/');\n  const ret: string[] = [];\n  arr.length -= 1;\n  arr.forEach((itm) => {\n    ret.push(ret[ret.length - 1] ? `${ret[ret.length - 1] + itm}/` : `${itm}/`);\n  });\n  return ret;\n}\n\nexport function numFormat(num: number) {\n  return num.toString().replace(/(\\d{1,3})(?=(\\d{3})+$)/g, '$1,');\n}\n\nexport const loadApexCharts = () => new Promise(((resolve, reject) => {\n  if (window.ApexCharts) {\n    resolve(window.ApexCharts);\n  }\n  const script: any = document.createElement('script');\n  script.type = 'text/javascript';\n  script.src = '/apexcharts.min.js';\n  script.onerror = reject;\n  const { head } = document;\n  if (head) {\n    head.appendChild(script);\n  }\n  script.onload = function onload() {\n    if (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete') {\n      resolve(window.ApexCharts);\n    }\n    script.onload = null;\n    script.onreadystatechange = null;\n  };\n  script.onreadystatechange = script.onload;\n}));\n\nexport const loadBmap = () => new Promise(((resolve, reject) => {\n  if (!window.BMap) {\n    const script: any = document.createElement('script');\n    script.type = 'text/javascript';\n    script.src = '//api.map.baidu.com/getscript?v=2.0&ak=3oWu5SgExpeyXtRXbuDdRO08CoVMTloM&s=1';\n    script.onerror = reject;\n    const { head } = document;\n    if (head) {\n      head.appendChild(script);\n    }\n    script.onload = function onload() {\n      if (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete') {\n        resolve(window.BMap);\n      }\n      script.onload = null;\n      script.onreadystatechange = null;\n    };\n    script.onreadystatechange = script.onload;\n  } else {\n    resolve(window.BMap);\n  }\n}));\n\nexport const loadCanvasLayer = () => new Promise(((resolve, reject) => {\n  const script: any = document.createElement('script');\n  script.type = 'text/javascript';\n  script.src = '/canvaslayer.js';\n  script.onerror = reject;\n  const { head } = document;\n  if (head) {\n    head.appendChild(script);\n  }\n  script.onload = function onload() {\n    if (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete') {\n      resolve(window.CanvasLayer);\n    }\n    script.onload = null;\n    script.onreadystatechange = null;\n  };\n  script.onreadystatechange = script.onload;\n}));\n\nexport const loadMapInfoBox = () => new Promise(((resolve, reject) => {\n  const script: any = document.createElement('script');\n  script.type = 'text/javascript';\n  script.src = '//api.map.baidu.com/library/InfoBox/1.2/src/InfoBox_min.js';\n  script.onerror = reject;\n  const { head } = document;\n  if (head) {\n    head.appendChild(script);\n  }\n  script.onload = function onload() {\n    if (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete') {\n      resolve();\n    }\n    script.onload = null;\n    script.onreadystatechange = null;\n  };\n  script.onreadystatechange = script.onload;\n}));\n"
  },
  {
    "path": "src/utils/request.ts",
    "content": "/* global window */\nimport axios from 'axios';\nimport qs from 'qs';\nimport jsonp from 'jsonp';\nimport lodash from 'lodash';\nimport pathToRegexp from 'path-to-regexp';\nimport { message } from 'ant-design-vue';\nimport config from '@/utils/config';\nimport router from '@/router';\n\naxios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n\nconst service = axios.create({\n  baseURL: process.env.NODE_ENV === 'production' ? '/monitor' : '/api', // api的base_url\n  timeout: 20000, // 请求超时时间\n  headers: {\n    token: window.localStorage.getItem('token'),\n  },\n});\n\nconst fetch = (options: {\nurl: string,\nmethod: string,\ndata?: object,\nfetchType?: string,\nheaders?: any,\n}) => {\n  const { data } = options;\n  let { url } = options;\n  const { method = 'get', fetchType } = options;\n  options.headers = {\n    ...options.headers,\n    token: window.localStorage.getItem('token'),\n  };\n  let cloneData: any = lodash.cloneDeep(data);\n  cloneData = qs.stringify(cloneData);\n\n  try {\n    const domins = url.match(/[a-zA-z]+:\\/\\/[^/]*/);\n    if (domins) {\n      url = url.slice(domins[0].length);\n    }\n    const match = pathToRegexp.parse(url);\n    url = pathToRegexp.compile(url)(data);\n    match.map((item: any) => {\n      if (typeof item === 'object') {\n        if (item instanceof Object && item.name in cloneData) {\n          delete cloneData[item.name];\n        }\n      }\n      return true;\n    });\n    url = domins ? domins[0] + url : url;\n  } catch (e) {\n    message.error(e.message);\n  }\n\n  if (fetchType === 'JSONP') {\n    return new Promise((resolve, reject) => {\n      jsonp(url, {\n        param: `${qs.stringify(data)}&callback`,\n        name: `jsonp_${new Date().getTime()}`,\n        timeout: 4000,\n      }, (error, result) => {\n        if (error) {\n          reject(error);\n        }\n        resolve({ statusText: 'OK', status: 200, data: result });\n      });\n    });\n  } if (fetchType === 'YQL') {\n    url = `http://query.yahooapis.com/v1/public/yql?q=select * from json where url='${options.url}?${encodeURIComponent(qs.stringify(options.data))}'&format=json`;\n  } else if (fetchType === 'JSON') {\n    return service({\n      url,\n      method: method.toLowerCase(),\n      headers: {\n        'Content-Type': 'application/json',\n      },\n      data,\n    });\n  }\n  switch (method.toLowerCase()) {\n    case 'post':\n      return service.post(url, cloneData, { headers: options.headers });\n    case 'get':\n      return service.get(`${url}?${cloneData}`, { headers: options.headers });\n    default:\n      return service.get(`${url}?${cloneData}`, { headers: options.headers });\n  }\n};\n\ninterface Option {\n  url: string,\n  method: string,\n  data?: object,\n  fetchType?: string,\n  headers?: any,\n}\n\nexport default function request(options: Option): Promise<any> {\n  return fetch(options).then((response: any) => {\n    const { statusText, status } = response;\n    let { data } = response;\n    if (data instanceof Array) {\n      data = {\n        list: data,\n      };\n    }\n    if (response.data.result && response.data.result.resultCode === 3) {\n      if (config.noLoginList.indexOf(window.location.hash) < 0) {\n        router.replace('/login');\n      }\n      return Promise.reject(new Error(response.data.result.resultMessage));\n    }\n    return Promise.resolve({\n      success: true,\n      message: statusText,\n      statusCode: status,\n      ...data,\n    });\n  }).catch((error) => {\n    const { response } = error;\n    let msg;\n    let statusCode;\n    if (response && response instanceof Object) {\n      const { data, statusText } = response;\n      statusCode = response.status;\n      msg = data.message || statusText;\n    } else {\n      statusCode = 600;\n      msg = error.message || 'Network Error';\n    }\n    message.error(msg);\n    return Promise.reject(new Error(msg));\n  });\n}\n"
  },
  {
    "path": "src/views/chart/apexCharts/area/dataSeries.ts",
    "content": "export const dataSeries = [\n  [{\n    date: '2014-01-01',\n    value: 20000000,\n  },\n  {\n    date: '2014-01-02',\n    value: 10379978,\n  },\n  {\n    date: '2014-01-03',\n    value: 30493749,\n  },\n  {\n    date: '2014-01-04',\n    value: 10785250,\n  },\n  {\n    date: '2014-01-05',\n    value: 33901904,\n  },\n  {\n    date: '2014-01-06',\n    value: 11576838,\n  },\n  {\n    date: '2014-01-07',\n    value: 14413854,\n  },\n  {\n    date: '2014-01-08',\n    value: 15177211,\n  },\n  {\n    date: '2014-01-09',\n    value: 16622100,\n  },\n  {\n    date: '2014-01-10',\n    value: 17381072,\n  },\n  {\n    date: '2014-01-11',\n    value: 18802310,\n  },\n  {\n    date: '2014-01-12',\n    value: 15531790,\n  },\n  {\n    date: '2014-01-13',\n    value: 15748881,\n  },\n  {\n    date: '2014-01-14',\n    value: 18706437,\n  },\n  {\n    date: '2014-01-15',\n    value: 19752685,\n  },\n  {\n    date: '2014-01-16',\n    value: 21016418,\n  },\n  {\n    date: '2014-01-17',\n    value: 25622924,\n  },\n  {\n    date: '2014-01-18',\n    value: 25337480,\n  },\n  {\n    date: '2014-01-19',\n    value: 22258882,\n  },\n  {\n    date: '2014-01-20',\n    value: 23829538,\n  },\n  {\n    date: '2014-01-21',\n    value: 24245689,\n  },\n  {\n    date: '2014-01-22',\n    value: 26429711,\n  },\n  {\n    date: '2014-01-23',\n    value: 26259017,\n  },\n  {\n    date: '2014-01-24',\n    value: 25396183,\n  },\n  {\n    date: '2014-01-25',\n    value: 23107346,\n  },\n  {\n    date: '2014-01-26',\n    value: 28659852,\n  },\n  {\n    date: '2014-01-27',\n    value: 25270783,\n  },\n  {\n    date: '2014-01-28',\n    value: 26270783,\n  },\n  {\n    date: '2014-01-29',\n    value: 27270783,\n  },\n  {\n    date: '2014-01-30',\n    value: 28270783,\n  },\n  {\n    date: '2014-01-31',\n    value: 29270783,\n  },\n  {\n    date: '2014-02-01',\n    value: 30270783,\n  },\n  {\n    date: '2014-02-02',\n    value: 31270783,\n  },\n  {\n    date: '2014-02-03',\n    value: 32270783,\n  },\n  {\n    date: '2014-02-04',\n    value: 33270783,\n  },\n  {\n    date: '2014-02-05',\n    value: 28270783,\n  },\n  {\n    date: '2014-02-06',\n    value: 27270783,\n  },\n  {\n    date: '2014-02-07',\n    value: 35270783,\n  },\n  {\n    date: '2014-02-08',\n    value: 34270783,\n  },\n  {\n    date: '2014-02-09',\n    value: 28270783,\n  },\n  {\n    date: '2014-02-10',\n    value: 35270783,\n  },\n  {\n    date: '2014-02-11',\n    value: 36270783,\n  },\n  {\n    date: '2014-02-12',\n    value: 34127078,\n  },\n  {\n    date: '2014-02-13',\n    value: 33124078,\n  },\n  {\n    date: '2014-02-14',\n    value: 36227078,\n  },\n  {\n    date: '2014-02-15',\n    value: 37827078,\n  },\n  {\n    date: '2014-02-16',\n    value: 36427073,\n  },\n  {\n    date: '2014-02-17',\n    value: 37570783,\n  },\n  {\n    date: '2014-02-18',\n    value: 38627073,\n  },\n  {\n    date: '2014-02-19',\n    value: 37727078,\n  },\n  {\n    date: '2014-02-20',\n    value: 38827073,\n  },\n  {\n    date: '2014-02-21',\n    value: 40927078,\n  },\n  {\n    date: '2014-02-22',\n    value: 41027078,\n  },\n  {\n    date: '2014-02-23',\n    value: 42127073,\n  },\n  {\n    date: '2014-02-24',\n    value: 43220783,\n  },\n  {\n    date: '2014-02-25',\n    value: 44327078,\n  },\n  {\n    date: '2014-02-26',\n    value: 40427078,\n  },\n  {\n    date: '2014-02-27',\n    value: 41027078,\n  },\n  {\n    date: '2014-02-28',\n    value: 45627078,\n  },\n  {\n    date: '2014-03-01',\n    value: 44727078,\n  },\n  {\n    date: '2014-03-02',\n    value: 44227078,\n  },\n  {\n    date: '2014-03-03',\n    value: 45227078,\n  },\n  {\n    date: '2014-03-04',\n    value: 46027078,\n  },\n  {\n    date: '2014-03-05',\n    value: 46927078,\n  },\n  {\n    date: '2014-03-06',\n    value: 47027078,\n  },\n  {\n    date: '2014-03-07',\n    value: 46227078,\n  },\n  {\n    date: '2014-03-08',\n    value: 47027078,\n  },\n  {\n    date: '2014-03-09',\n    value: 48027078,\n  },\n  {\n    date: '2014-03-10',\n    value: 47027078,\n  },\n  {\n    date: '2014-03-11',\n    value: 47027078,\n  },\n  {\n    date: '2014-03-12',\n    value: 48017078,\n  },\n  {\n    date: '2014-03-13',\n    value: 48077078,\n  },\n  {\n    date: '2014-03-14',\n    value: 48087078,\n  },\n  {\n    date: '2014-03-15',\n    value: 48017078,\n  },\n  {\n    date: '2014-03-16',\n    value: 48047078,\n  },\n  {\n    date: '2014-03-17',\n    value: 48067078,\n  },\n  {\n    date: '2014-03-18',\n    value: 48077078,\n  },\n  {\n    date: '2014-03-19',\n    value: 48027074,\n  },\n  {\n    date: '2014-03-20',\n    value: 48927079,\n  },\n  {\n    date: '2014-03-21',\n    value: 48727071,\n  },\n  {\n    date: '2014-03-22',\n    value: 48127072,\n  },\n  {\n    date: '2014-03-23',\n    value: 48527072,\n  },\n  {\n    date: '2014-03-24',\n    value: 48627027,\n  },\n  {\n    date: '2014-03-25',\n    value: 48027040,\n  },\n  {\n    date: '2014-03-26',\n    value: 48027043,\n  },\n  {\n    date: '2014-03-27',\n    value: 48057022,\n  },\n  {\n    date: '2014-03-28',\n    value: 49057022,\n  },\n  {\n    date: '2014-03-29',\n    value: 50057022,\n  },\n  {\n    date: '2014-03-30',\n    value: 51057022,\n  },\n  {\n    date: '2014-03-31',\n    value: 52057022,\n  },\n  {\n    date: '2014-04-01',\n    value: 53057022,\n  },\n  {\n    date: '2014-04-02',\n    value: 54057022,\n  },\n  {\n    date: '2014-04-03',\n    value: 52057022,\n  },\n  {\n    date: '2014-04-04',\n    value: 55057022,\n  },\n  {\n    date: '2014-04-05',\n    value: 58270783,\n  },\n  {\n    date: '2014-04-06',\n    value: 56270783,\n  },\n  {\n    date: '2014-04-07',\n    value: 55270783,\n  },\n  {\n    date: '2014-04-08',\n    value: 58270783,\n  },\n  {\n    date: '2014-04-09',\n    value: 59270783,\n  },\n  {\n    date: '2014-04-10',\n    value: 60270783,\n  },\n  {\n    date: '2014-04-11',\n    value: 61270783,\n  },\n  {\n    date: '2014-04-12',\n    value: 62270783,\n  },\n  {\n    date: '2014-04-13',\n    value: 63270783,\n  },\n  {\n    date: '2014-04-14',\n    value: 64270783,\n  },\n  {\n    date: '2014-04-15',\n    value: 65270783,\n  },\n  {\n    date: '2014-04-16',\n    value: 66270783,\n  },\n  {\n    date: '2014-04-17',\n    value: 67270783,\n  },\n  {\n    date: '2014-04-18',\n    value: 68270783,\n  },\n  {\n    date: '2014-04-19',\n    value: 69270783,\n  },\n  {\n    date: '2014-04-20',\n    value: 70270783,\n  },\n  {\n    date: '2014-04-21',\n    value: 71270783,\n  },\n  {\n    date: '2014-04-22',\n    value: 72270783,\n  },\n  {\n    date: '2014-04-23',\n    value: 73270783,\n  },\n  {\n    date: '2014-04-24',\n    value: 74270783,\n  },\n  {\n    date: '2014-04-25',\n    value: 75270783,\n  },\n  {\n    date: '2014-04-26',\n    value: 76660783,\n  },\n  {\n    date: '2014-04-27',\n    value: 77270783,\n  },\n  {\n    date: '2014-04-28',\n    value: 78370783,\n  },\n  {\n    date: '2014-04-29',\n    value: 79470783,\n  },\n  {\n    date: '2014-04-30',\n    value: 80170783,\n  },\n  ],\n  [{\n    date: '2014-01-01',\n    value: 150000000,\n  },\n  {\n    date: '2014-01-02',\n    value: 160379978,\n  },\n  {\n    date: '2014-01-03',\n    value: 170493749,\n  },\n  {\n    date: '2014-01-04',\n    value: 160785250,\n  },\n  {\n    date: '2014-01-05',\n    value: 167391904,\n  },\n  {\n    date: '2014-01-06',\n    value: 161576838,\n  },\n  {\n    date: '2014-01-07',\n    value: 161413854,\n  },\n  {\n    date: '2014-01-08',\n    value: 152177211,\n  },\n  {\n    date: '2014-01-09',\n    value: 143762210,\n  },\n  {\n    date: '2014-01-10',\n    value: 144381072,\n  },\n  {\n    date: '2014-01-11',\n    value: 154352310,\n  },\n  {\n    date: '2014-01-12',\n    value: 165531790,\n  },\n  {\n    date: '2014-01-13',\n    value: 175748881,\n  },\n  {\n    date: '2014-01-14',\n    value: 187064037,\n  },\n  {\n    date: '2014-01-15',\n    value: 197520685,\n  },\n  {\n    date: '2014-01-16',\n    value: 210176418,\n  },\n  {\n    date: '2014-01-17',\n    value: 196122924,\n  },\n  {\n    date: '2014-01-18',\n    value: 207337480,\n  },\n  {\n    date: '2014-01-19',\n    value: 200258882,\n  },\n  {\n    date: '2014-01-20',\n    value: 186829538,\n  },\n  {\n    date: '2014-01-21',\n    value: 192456897,\n  },\n  {\n    date: '2014-01-22',\n    value: 204299711,\n  },\n  {\n    date: '2014-01-23',\n    value: 192759017,\n  },\n  {\n    date: '2014-01-24',\n    value: 203596183,\n  },\n  {\n    date: '2014-01-25',\n    value: 208107346,\n  },\n  {\n    date: '2014-01-26',\n    value: 196359852,\n  },\n  {\n    date: '2014-01-27',\n    value: 192570783,\n  },\n  {\n    date: '2014-01-28',\n    value: 177967768,\n  },\n  {\n    date: '2014-01-29',\n    value: 190632803,\n  },\n  {\n    date: '2014-01-30',\n    value: 203725316,\n  },\n  {\n    date: '2014-01-31',\n    value: 218226177,\n  },\n  {\n    date: '2014-02-01',\n    value: 210698669,\n  },\n  {\n    date: '2014-02-02',\n    value: 217640656,\n  },\n  {\n    date: '2014-02-03',\n    value: 216142362,\n  },\n  {\n    date: '2014-02-04',\n    value: 201410971,\n  },\n  {\n    date: '2014-02-05',\n    value: 196704289,\n  },\n  {\n    date: '2014-02-06',\n    value: 190436945,\n  },\n  {\n    date: '2014-02-07',\n    value: 178891686,\n  },\n  {\n    date: '2014-02-08',\n    value: 171613962,\n  },\n  {\n    date: '2014-02-09',\n    value: 157579773,\n  },\n  {\n    date: '2014-02-10',\n    value: 158677098,\n  },\n  {\n    date: '2014-02-11',\n    value: 147129977,\n  },\n  {\n    date: '2014-02-12',\n    value: 151561876,\n  },\n  {\n    date: '2014-02-13',\n    value: 151627421,\n  },\n  {\n    date: '2014-02-14',\n    value: 143543872,\n  },\n  {\n    date: '2014-02-15',\n    value: 136581057,\n  },\n  {\n    date: '2014-02-16',\n    value: 135560715,\n  },\n  {\n    date: '2014-02-17',\n    value: 122625263,\n  },\n  {\n    date: '2014-02-18',\n    value: 112091484,\n  },\n  {\n    date: '2014-02-19',\n    value: 98810329,\n  },\n  {\n    date: '2014-02-20',\n    value: 99882912,\n  },\n  {\n    date: '2014-02-21',\n    value: 94943095,\n  },\n  {\n    date: '2014-02-22',\n    value: 104875743,\n  },\n  {\n    date: '2014-02-23',\n    value: 116383678,\n  },\n  {\n    date: '2014-02-24',\n    value: 125028841,\n  },\n  {\n    date: '2014-02-25',\n    value: 123967310,\n  },\n  {\n    date: '2014-02-26',\n    value: 133167029,\n  },\n  {\n    date: '2014-02-27',\n    value: 128577263,\n  },\n  {\n    date: '2014-02-28',\n    value: 115836969,\n  },\n  {\n    date: '2014-03-01',\n    value: 119264529,\n  },\n  {\n    date: '2014-03-02',\n    value: 109363374,\n  },\n  {\n    date: '2014-03-03',\n    value: 113985628,\n  },\n  {\n    date: '2014-03-04',\n    value: 114650999,\n  },\n  {\n    date: '2014-03-05',\n    value: 110866108,\n  },\n  {\n    date: '2014-03-06',\n    value: 96473454,\n  },\n  {\n    date: '2014-03-07',\n    value: 104075886,\n  },\n  {\n    date: '2014-03-08',\n    value: 103568384,\n  },\n  {\n    date: '2014-03-09',\n    value: 101534883,\n  },\n  {\n    date: '2014-03-10',\n    value: 115825447,\n  },\n  {\n    date: '2014-03-11',\n    value: 126133916,\n  },\n  {\n    date: '2014-03-12',\n    value: 116502109,\n  },\n  {\n    date: '2014-03-13',\n    value: 130169411,\n  },\n  {\n    date: '2014-03-14',\n    value: 124296886,\n  },\n  {\n    date: '2014-03-15',\n    value: 126347399,\n  },\n  {\n    date: '2014-03-16',\n    value: 131483669,\n  },\n  {\n    date: '2014-03-17',\n    value: 142811333,\n  },\n  {\n    date: '2014-03-18',\n    value: 129675396,\n  },\n  {\n    date: '2014-03-19',\n    value: 115514483,\n  },\n  {\n    date: '2014-03-20',\n    value: 117630630,\n  },\n  {\n    date: '2014-03-21',\n    value: 122340239,\n  },\n  {\n    date: '2014-03-22',\n    value: 132349091,\n  },\n  {\n    date: '2014-03-23',\n    value: 125613305,\n  },\n  {\n    date: '2014-03-24',\n    value: 135592466,\n  },\n  {\n    date: '2014-03-25',\n    value: 123408762,\n  },\n  {\n    date: '2014-03-26',\n    value: 111991454,\n  },\n  {\n    date: '2014-03-27',\n    value: 116123955,\n  },\n  {\n    date: '2014-03-28',\n    value: 112817214,\n  },\n  {\n    date: '2014-03-29',\n    value: 113029590,\n  },\n  {\n    date: '2014-03-30',\n    value: 108753398,\n  },\n  {\n    date: '2014-03-31',\n    value: 99383763,\n  },\n  {\n    date: '2014-04-01',\n    value: 100151737,\n  },\n  {\n    date: '2014-04-02',\n    value: 94985209,\n  },\n  {\n    date: '2014-04-03',\n    value: 82913669,\n  },\n  {\n    date: '2014-04-04',\n    value: 78748268,\n  },\n  {\n    date: '2014-04-05',\n    value: 63829135,\n  },\n  {\n    date: '2014-04-06',\n    value: 78694727,\n  },\n  {\n    date: '2014-04-07',\n    value: 80868994,\n  },\n  {\n    date: '2014-04-08',\n    value: 93799013,\n  },\n  {\n    date: '2014-04-09',\n    value: 99042416,\n  },\n  {\n    date: '2014-04-10',\n    value: 97298692,\n  },\n  {\n    date: '2014-04-11',\n    value: 83353499,\n  },\n  {\n    date: '2014-04-12',\n    value: 71248129,\n  },\n  {\n    date: '2014-04-13',\n    value: 75253744,\n  },\n  {\n    date: '2014-04-14',\n    value: 68976648,\n  },\n  {\n    date: '2014-04-15',\n    value: 71002284,\n  },\n  {\n    date: '2014-04-16',\n    value: 75052401,\n  },\n  {\n    date: '2014-04-17',\n    value: 83894030,\n  },\n  {\n    date: '2014-04-18',\n    value: 90236528,\n  },\n  {\n    date: '2014-04-19',\n    value: 99739114,\n  },\n  {\n    date: '2014-04-20',\n    value: 96407136,\n  },\n  {\n    date: '2014-04-21',\n    value: 108323177,\n  },\n  {\n    date: '2014-04-22',\n    value: 101578914,\n  },\n  {\n    date: '2014-04-23',\n    value: 115877608,\n  },\n  {\n    date: '2014-04-24',\n    value: 112088857,\n  },\n  {\n    date: '2014-04-25',\n    value: 112071353,\n  },\n  {\n    date: '2014-04-26',\n    value: 101790062,\n  },\n  {\n    date: '2014-04-27',\n    value: 115003761,\n  },\n  {\n    date: '2014-04-28',\n    value: 120457727,\n  },\n  {\n    date: '2014-04-29',\n    value: 118253926,\n  },\n  {\n    date: '2014-04-30',\n    value: 117956992,\n  },\n  ],\n  [{\n    date: '2014-01-01',\n    value: 50000000,\n  },\n  {\n    date: '2014-01-02',\n    value: 60379978,\n  },\n  {\n    date: '2014-01-03',\n    value: 40493749,\n  },\n  {\n    date: '2014-01-04',\n    value: 60785250,\n  },\n  {\n    date: '2014-01-05',\n    value: 67391904,\n  },\n  {\n    date: '2014-01-06',\n    value: 61576838,\n  },\n  {\n    date: '2014-01-07',\n    value: 61413854,\n  },\n  {\n    date: '2014-01-08',\n    value: 82177211,\n  },\n  {\n    date: '2014-01-09',\n    value: 103762210,\n  },\n  {\n    date: '2014-01-10',\n    value: 84381072,\n  },\n  {\n    date: '2014-01-11',\n    value: 54352310,\n  },\n  {\n    date: '2014-01-12',\n    value: 65531790,\n  },\n  {\n    date: '2014-01-13',\n    value: 75748881,\n  },\n  {\n    date: '2014-01-14',\n    value: 47064037,\n  },\n  {\n    date: '2014-01-15',\n    value: 67520685,\n  },\n  {\n    date: '2014-01-16',\n    value: 60176418,\n  },\n  {\n    date: '2014-01-17',\n    value: 66122924,\n  },\n  {\n    date: '2014-01-18',\n    value: 57337480,\n  },\n  {\n    date: '2014-01-19',\n    value: 100258882,\n  },\n  {\n    date: '2014-01-20',\n    value: 46829538,\n  },\n  {\n    date: '2014-01-21',\n    value: 92456897,\n  },\n  {\n    date: '2014-01-22',\n    value: 94299711,\n  },\n  {\n    date: '2014-01-23',\n    value: 62759017,\n  },\n  {\n    date: '2014-01-24',\n    value: 103596183,\n  },\n  {\n    date: '2014-01-25',\n    value: 108107346,\n  },\n  {\n    date: '2014-01-26',\n    value: 66359852,\n  },\n  {\n    date: '2014-01-27',\n    value: 62570783,\n  },\n  {\n    date: '2014-01-28',\n    value: 77967768,\n  },\n  {\n    date: '2014-01-29',\n    value: 60632803,\n  },\n  {\n    date: '2014-01-30',\n    value: 103725316,\n  },\n  {\n    date: '2014-01-31',\n    value: 98226177,\n  },\n  {\n    date: '2014-02-01',\n    value: 60698669,\n  },\n  {\n    date: '2014-02-02',\n    value: 67640656,\n  },\n  {\n    date: '2014-02-03',\n    value: 66142362,\n  },\n  {\n    date: '2014-02-04',\n    value: 101410971,\n  },\n  {\n    date: '2014-02-05',\n    value: 66704289,\n  },\n  {\n    date: '2014-02-06',\n    value: 60436945,\n  },\n  {\n    date: '2014-02-07',\n    value: 78891686,\n  },\n  {\n    date: '2014-02-08',\n    value: 71613962,\n  },\n  {\n    date: '2014-02-09',\n    value: 107579773,\n  },\n  {\n    date: '2014-02-10',\n    value: 58677098,\n  },\n  {\n    date: '2014-02-11',\n    value: 87129977,\n  },\n  {\n    date: '2014-02-12',\n    value: 51561876,\n  },\n  {\n    date: '2014-02-13',\n    value: 51627421,\n  },\n  {\n    date: '2014-02-14',\n    value: 83543872,\n  },\n  {\n    date: '2014-02-15',\n    value: 66581057,\n  },\n  {\n    date: '2014-02-16',\n    value: 65560715,\n  },\n  {\n    date: '2014-02-17',\n    value: 62625263,\n  },\n  {\n    date: '2014-02-18',\n    value: 92091484,\n  },\n  {\n    date: '2014-02-19',\n    value: 48810329,\n  },\n  {\n    date: '2014-02-20',\n    value: 49882912,\n  },\n  {\n    date: '2014-02-21',\n    value: 44943095,\n  },\n  {\n    date: '2014-02-22',\n    value: 104875743,\n  },\n  {\n    date: '2014-02-23',\n    value: 96383678,\n  },\n  {\n    date: '2014-02-24',\n    value: 105028841,\n  },\n  {\n    date: '2014-02-25',\n    value: 63967310,\n  },\n  {\n    date: '2014-02-26',\n    value: 63167029,\n  },\n  {\n    date: '2014-02-27',\n    value: 68577263,\n  },\n  {\n    date: '2014-02-28',\n    value: 95836969,\n  },\n  {\n    date: '2014-03-01',\n    value: 99264529,\n  },\n  {\n    date: '2014-03-02',\n    value: 109363374,\n  },\n  {\n    date: '2014-03-03',\n    value: 93985628,\n  },\n  {\n    date: '2014-03-04',\n    value: 94650999,\n  },\n  {\n    date: '2014-03-05',\n    value: 90866108,\n  },\n  {\n    date: '2014-03-06',\n    value: 46473454,\n  },\n  {\n    date: '2014-03-07',\n    value: 84075886,\n  },\n  {\n    date: '2014-03-08',\n    value: 103568384,\n  },\n  {\n    date: '2014-03-09',\n    value: 101534883,\n  },\n  {\n    date: '2014-03-10',\n    value: 95825447,\n  },\n  {\n    date: '2014-03-11',\n    value: 66133916,\n  },\n  {\n    date: '2014-03-12',\n    value: 96502109,\n  },\n  {\n    date: '2014-03-13',\n    value: 80169411,\n  },\n  {\n    date: '2014-03-14',\n    value: 84296886,\n  },\n  {\n    date: '2014-03-15',\n    value: 86347399,\n  },\n  {\n    date: '2014-03-16',\n    value: 31483669,\n  },\n  {\n    date: '2014-03-17',\n    value: 82811333,\n  },\n  {\n    date: '2014-03-18',\n    value: 89675396,\n  },\n  {\n    date: '2014-03-19',\n    value: 95514483,\n  },\n  {\n    date: '2014-03-20',\n    value: 97630630,\n  },\n  {\n    date: '2014-03-21',\n    value: 62340239,\n  },\n  {\n    date: '2014-03-22',\n    value: 62349091,\n  },\n  {\n    date: '2014-03-23',\n    value: 65613305,\n  },\n  {\n    date: '2014-03-24',\n    value: 65592466,\n  },\n  {\n    date: '2014-03-25',\n    value: 63408762,\n  },\n  {\n    date: '2014-03-26',\n    value: 91991454,\n  },\n  {\n    date: '2014-03-27',\n    value: 96123955,\n  },\n  {\n    date: '2014-03-28',\n    value: 92817214,\n  },\n  {\n    date: '2014-03-29',\n    value: 93029590,\n  },\n  {\n    date: '2014-03-30',\n    value: 108753398,\n  },\n  {\n    date: '2014-03-31',\n    value: 49383763,\n  },\n  {\n    date: '2014-04-01',\n    value: 100151737,\n  },\n  {\n    date: '2014-04-02',\n    value: 44985209,\n  },\n  {\n    date: '2014-04-03',\n    value: 52913669,\n  },\n  {\n    date: '2014-04-04',\n    value: 48748268,\n  },\n  {\n    date: '2014-04-05',\n    value: 23829135,\n  },\n  {\n    date: '2014-04-06',\n    value: 58694727,\n  },\n  {\n    date: '2014-04-07',\n    value: 50868994,\n  },\n  {\n    date: '2014-04-08',\n    value: 43799013,\n  },\n  {\n    date: '2014-04-09',\n    value: 4042416,\n  },\n  {\n    date: '2014-04-10',\n    value: 47298692,\n  },\n  {\n    date: '2014-04-11',\n    value: 53353499,\n  },\n  {\n    date: '2014-04-12',\n    value: 71248129,\n  },\n  {\n    date: '2014-04-13',\n    value: 75253744,\n  },\n  {\n    date: '2014-04-14',\n    value: 68976648,\n  },\n  {\n    date: '2014-04-15',\n    value: 71002284,\n  },\n  {\n    date: '2014-04-16',\n    value: 75052401,\n  },\n  {\n    date: '2014-04-17',\n    value: 83894030,\n  },\n  {\n    date: '2014-04-18',\n    value: 50236528,\n  },\n  {\n    date: '2014-04-19',\n    value: 59739114,\n  },\n  {\n    date: '2014-04-20',\n    value: 56407136,\n  },\n  {\n    date: '2014-04-21',\n    value: 108323177,\n  },\n  {\n    date: '2014-04-22',\n    value: 101578914,\n  },\n  {\n    date: '2014-04-23',\n    value: 95877608,\n  },\n  {\n    date: '2014-04-24',\n    value: 62088857,\n  },\n  {\n    date: '2014-04-25',\n    value: 92071353,\n  },\n  {\n    date: '2014-04-26',\n    value: 81790062,\n  },\n  {\n    date: '2014-04-27',\n    value: 105003761,\n  },\n  {\n    date: '2014-04-28',\n    value: 100457727,\n  },\n  {\n    date: '2014-04-29',\n    value: 98253926,\n  },\n  {\n    date: '2014-04-30',\n    value: 67956992,\n  },\n  ],\n];\n"
  },
  {
    "path": "src/views/chart/apexCharts/area/dateSeries.ts",
    "content": "export const dateSeries = [\n  [1327359600000, 30.95],\n  [1327446000000, 31.34],\n  [1327532400000, 31.18],\n  [1327618800000, 31.05],\n  [1327878000000, 31.00],\n  [1327964400000, 30.95],\n  [1328050800000, 31.24],\n  [1328137200000, 31.29],\n  [1328223600000, 31.85],\n  [1328482800000, 31.86],\n  [1328569200000, 32.28],\n  [1328655600000, 32.10],\n  [1328742000000, 32.65],\n  [1328828400000, 32.21],\n  [1329087600000, 32.35],\n  [1329174000000, 32.44],\n  [1329260400000, 32.46],\n  [1329346800000, 32.86],\n  [1329433200000, 32.75],\n  [1329778800000, 32.54],\n  [1329865200000, 32.33],\n  [1329951600000, 32.97],\n  [1330038000000, 33.41],\n  [1330297200000, 33.27],\n  [1330383600000, 33.27],\n  [1330470000000, 32.89],\n  [1330556400000, 33.10],\n  [1330642800000, 33.73],\n  [1330902000000, 33.22],\n  [1330988400000, 31.99],\n  [1331074800000, 32.41],\n  [1331161200000, 33.05],\n  [1331247600000, 33.64],\n  [1331506800000, 33.56],\n  [1331593200000, 34.22],\n  [1331679600000, 33.77],\n  [1331766000000, 34.17],\n  [1331852400000, 33.82],\n  [1332111600000, 34.51],\n  [1332198000000, 33.16],\n  [1332284400000, 33.56],\n  [1332370800000, 33.71],\n  [1332457200000, 33.81],\n  [1332712800000, 34.40],\n  [1332799200000, 34.63],\n  [1332885600000, 34.46],\n  [1332972000000, 34.48],\n  [1333058400000, 34.31],\n  [1333317600000, 34.70],\n  [1333404000000, 34.31],\n  [1333490400000, 33.46],\n  [1333576800000, 33.59],\n  [1333922400000, 33.22],\n  [1334008800000, 32.61],\n  [1334095200000, 33.01],\n  [1334181600000, 33.55],\n  [1334268000000, 33.18],\n  [1334527200000, 32.84],\n  [1334613600000, 33.84],\n  [1334700000000, 33.39],\n  [1334786400000, 32.91],\n  [1334872800000, 33.06],\n  [1335132000000, 32.62],\n  [1335218400000, 32.40],\n  [1335304800000, 33.13],\n  [1335391200000, 33.26],\n  [1335477600000, 33.58],\n  [1335736800000, 33.55],\n  [1335823200000, 33.77],\n  [1335909600000, 33.76],\n  [1335996000000, 33.32],\n  [1336082400000, 32.61],\n  [1336341600000, 32.52],\n  [1336428000000, 32.67],\n  [1336514400000, 32.52],\n  [1336600800000, 31.92],\n  [1336687200000, 32.20],\n  [1336946400000, 32.23],\n  [1337032800000, 32.33],\n  [1337119200000, 32.36],\n  [1337205600000, 32.01],\n  [1337292000000, 31.31],\n  [1337551200000, 32.01],\n  [1337637600000, 32.01],\n  [1337724000000, 32.18],\n  [1337810400000, 31.54],\n  [1337896800000, 31.60],\n  [1338242400000, 32.05],\n  [1338328800000, 31.29],\n  [1338415200000, 31.05],\n  [1338501600000, 29.82],\n  [1338760800000, 30.31],\n  [1338847200000, 30.70],\n  [1338933600000, 31.69],\n  [1339020000000, 31.32],\n  [1339106400000, 31.65],\n  [1339365600000, 31.13],\n  [1339452000000, 31.77],\n  [1339538400000, 31.79],\n  [1339624800000, 31.67],\n  [1339711200000, 32.39],\n  [1339970400000, 32.63],\n  [1340056800000, 32.89],\n  [1340143200000, 31.99],\n  [1340229600000, 31.23],\n  [1340316000000, 31.57],\n  [1340575200000, 30.84],\n  [1340661600000, 31.07],\n  [1340748000000, 31.41],\n  [1340834400000, 31.17],\n  [1340920800000, 32.37],\n  [1341180000000, 32.19],\n  [1341266400000, 32.51],\n  [1341439200000, 32.53],\n  [1341525600000, 31.37],\n  [1341784800000, 30.43],\n  [1341871200000, 30.44],\n  [1341957600000, 30.20],\n  [1342044000000, 30.14],\n  [1342130400000, 30.65],\n  [1342389600000, 30.40],\n  [1342476000000, 30.65],\n  [1342562400000, 31.43],\n  [1342648800000, 31.89],\n  [1342735200000, 31.38],\n  [1342994400000, 30.64],\n  [1343080800000, 30.02],\n  [1343167200000, 30.33],\n  [1343253600000, 30.95],\n  [1343340000000, 31.89],\n  [1343599200000, 31.01],\n  [1343685600000, 30.88],\n  [1343772000000, 30.69],\n  [1343858400000, 30.58],\n  [1343944800000, 32.02],\n  [1344204000000, 32.14],\n  [1344290400000, 32.37],\n  [1344376800000, 32.51],\n  [1344463200000, 32.65],\n  [1344549600000, 32.64],\n  [1344808800000, 32.27],\n  [1344895200000, 32.10],\n  [1344981600000, 32.91],\n  [1345068000000, 33.65],\n  [1345154400000, 33.80],\n  [1345413600000, 33.92],\n  [1345500000000, 33.75],\n  [1345586400000, 33.84],\n  [1345672800000, 33.50],\n  [1345759200000, 32.26],\n  [1346018400000, 32.32],\n  [1346104800000, 32.06],\n  [1346191200000, 31.96],\n  [1346277600000, 31.46],\n  [1346364000000, 31.27],\n  [1346709600000, 31.43],\n  [1346796000000, 32.26],\n  [1346882400000, 32.79],\n  [1346968800000, 32.46],\n  [1347228000000, 32.13],\n  [1347314400000, 32.43],\n  [1347400800000, 32.42],\n  [1347487200000, 32.81],\n  [1347573600000, 33.34],\n  [1347832800000, 33.41],\n  [1347919200000, 32.57],\n  [1348005600000, 33.12],\n  [1348092000000, 34.53],\n  [1348178400000, 33.83],\n  [1348437600000, 33.41],\n  [1348524000000, 32.90],\n  [1348610400000, 32.53],\n  [1348696800000, 32.80],\n  [1348783200000, 32.44],\n  [1349042400000, 32.62],\n  [1349128800000, 32.57],\n  [1349215200000, 32.60],\n  [1349301600000, 32.68],\n  [1349388000000, 32.47],\n  [1349647200000, 32.23],\n  [1349733600000, 31.68],\n  [1349820000000, 31.51],\n  [1349906400000, 31.78],\n  [1349992800000, 31.94],\n  [1350252000000, 32.33],\n  [1350338400000, 33.24],\n  [1350424800000, 33.44],\n  [1350511200000, 33.48],\n  [1350597600000, 33.24],\n  [1350856800000, 33.49],\n  [1350943200000, 33.31],\n  [1351029600000, 33.36],\n  [1351116000000, 33.40],\n  [1351202400000, 34.01],\n  [1351638000000, 34.02],\n  [1351724400000, 34.36],\n  [1351810800000, 34.39],\n  [1352070000000, 34.24],\n  [1352156400000, 34.39],\n  [1352242800000, 33.47],\n  [1352329200000, 32.98],\n  [1352415600000, 32.90],\n  [1352674800000, 32.70],\n  [1352761200000, 32.54],\n  [1352847600000, 32.23],\n  [1352934000000, 32.64],\n  [1353020400000, 32.65],\n  [1353279600000, 32.92],\n  [1353366000000, 32.64],\n  [1353452400000, 32.84],\n  [1353625200000, 33.40],\n  [1353884400000, 33.30],\n  [1353970800000, 33.18],\n  [1354057200000, 33.88],\n  [1354143600000, 34.09],\n  [1354230000000, 34.61],\n  [1354489200000, 34.70],\n  [1354575600000, 35.30],\n  [1354662000000, 35.40],\n  [1354748400000, 35.14],\n  [1354834800000, 35.48],\n  [1355094000000, 35.75],\n  [1355180400000, 35.54],\n  [1355266800000, 35.96],\n  [1355353200000, 35.53],\n  [1355439600000, 37.56],\n  [1355698800000, 37.42],\n  [1355785200000, 37.49],\n  [1355871600000, 38.09],\n  [1355958000000, 37.87],\n  [1356044400000, 37.71],\n  [1356303600000, 37.53],\n  [1356476400000, 37.55],\n  [1356562800000, 37.30],\n  [1356649200000, 36.90],\n  [1356908400000, 37.68],\n  [1357081200000, 38.34],\n  [1357167600000, 37.75],\n  [1357254000000, 38.13],\n  [1357513200000, 37.94],\n  [1357599600000, 38.14],\n  [1357686000000, 38.66],\n  [1357772400000, 38.62],\n  [1357858800000, 38.09],\n  [1358118000000, 38.16],\n  [1358204400000, 38.15],\n  [1358290800000, 37.88],\n  [1358377200000, 37.73],\n  [1358463600000, 37.98],\n  [1358809200000, 37.95],\n  [1358895600000, 38.25],\n  [1358982000000, 38.10],\n  [1359068400000, 38.32],\n  [1359327600000, 38.24],\n  [1359414000000, 38.52],\n  [1359500400000, 37.94],\n  [1359586800000, 37.83],\n  [1359673200000, 38.34],\n  [1359932400000, 38.10],\n  [1360018800000, 38.51],\n  [1360105200000, 38.40],\n  [1360191600000, 38.07],\n  [1360278000000, 39.12],\n  [1360537200000, 38.64],\n  [1360623600000, 38.89],\n  [1360710000000, 38.81],\n  [1360796400000, 38.61],\n  [1360882800000, 38.63],\n  [1361228400000, 38.99],\n  [1361314800000, 38.77],\n  [1361401200000, 38.34],\n  [1361487600000, 38.55],\n  [1361746800000, 38.11],\n  [1361833200000, 38.59],\n  [1361919600000, 39.60],\n];\n\nconst dateSeries2 = [\n  [1376431200000, 46.84],\n  [1376517600000, 45.87],\n  [1376604000000, 45.40],\n  [1376863200000, 44.89],\n  [1376949600000, 45.07],\n  [1377036000000, 45.14],\n  [1377122400000, 45.68],\n  [1377208800000, 45.77],\n  [1377468000000, 46.06],\n  [1377554400000, 45.50],\n  [1377640800000, 45.53],\n  [1377727200000, 45.93],\n  [1377813600000, 45.75],\n  [1378159200000, 45.88],\n  [1378245600000, 46.93],\n  [1378332000000, 46.73],\n  [1378418400000, 46.87],\n  [1378677600000, 47.25],\n  [1378764000000, 48.02],\n  [1378850400000, 48.20],\n  [1378936800000, 47.64],\n  [1379023200000, 47.76],\n  [1379282400000, 48.14],\n  [1379368800000, 48.14],\n  [1379455200000, 52.58],\n  [1379541600000, 51.87],\n  [1379628000000, 52.31],\n  [1379887200000, 51.80],\n  [1379973600000, 51.42],\n  [1380060000000, 51.87],\n  [1380146400000, 52.10],\n  [1380232800000, 52.03],\n  [1380492000000, 51.94],\n  [1380578400000, 52.43],\n  [1380664800000, 51.52],\n  [1380751200000, 50.88],\n  [1380837600000, 51.57],\n  [1381096800000, 50.82],\n  [1381183200000, 49.58],\n  [1381269600000, 49.45],\n  [1381356000000, 51.16],\n  [1381442400000, 52.19],\n  [1381701600000, 52.63],\n  [1381788000000, 51.93],\n  [1381874400000, 51.91],\n  [1381960800000, 52.06],\n  [1382047200000, 52.63],\n  [1382306400000, 53.08],\n  [1382392800000, 53.17],\n  [1382479200000, 53.06],\n  [1382565600000, 54.21],\n  [1382652000000, 53.81],\n  [1382914800000, 53.93],\n  [1383001200000, 54.86],\n  [1383087600000, 54.10],\n  [1383174000000, 54.22],\n  [1383260400000, 54.61],\n  [1383519600000, 55.39],\n  [1383606000000, 54.79],\n  [1383692400000, 54.88],\n  [1383778800000, 53.17],\n  [1383865200000, 54.84],\n  [1384124400000, 56.18],\n  [1384210800000, 56.24],\n  [1384297200000, 57.55],\n  [1384383600000, 57.17],\n  [1384470000000, 57.35],\n  [1384729200000, 56.60],\n  [1384815600000, 55.77],\n  [1384902000000, 55.94],\n  [1384988400000, 56.23],\n  [1385074800000, 56.41],\n  [1385334000000, 56.95],\n  [1385420400000, 56.70],\n  [1385506800000, 56.91],\n  [1385679600000, 56.78],\n  [1385938800000, 56.76],\n  [1386025200000, 56.40],\n  [1386111600000, 56.05],\n  [1386198000000, 55.04],\n  [1386284400000, 55.60],\n  [1386543600000, 55.44],\n  [1386630000000, 55.32],\n  [1386716400000, 54.64],\n  [1386802800000, 53.99],\n  [1386889200000, 60.89],\n  [1387148400000, 58.50],\n  [1387234800000, 57.67],\n  [1387321200000, 59.04],\n  [1387407600000, 58.13],\n  [1387494000000, 59.26],\n  [1387753200000, 59.47],\n  [1387839600000, 59.53],\n  [1388012400000, 59.58],\n  [1388098800000, 59.51],\n  [1388358000000, 59.55],\n  [1388444400000, 59.88],\n  [1388617200000, 59.29],\n  [1388703600000, 59.16],\n  [1388962800000, 58.12],\n  [1389049200000, 58.97],\n  [1389135600000, 58.90],\n  [1389222000000, 59.09],\n  [1389308400000, 59.53],\n  [1389567600000, 58.60],\n  [1389654000000, 60.37],\n  [1389740400000, 61.68],\n  [1389826800000, 61.63],\n  [1389913200000, 61.37],\n  [1390258800000, 60.85],\n  [1390345200000, 61.77],\n  [1390431600000, 60.88],\n  [1390518000000, 59.09],\n  [1390777200000, 58.36],\n  [1390863600000, 59.11],\n  [1390950000000, 58.46],\n  [1391036400000, 59.39],\n  [1391122800000, 59.19],\n  [1391382000000, 58.09],\n  [1391468400000, 59.72],\n  [1391554800000, 61.00],\n  [1391641200000, 61.34],\n  [1391727600000, 62.88],\n  [1391986800000, 63.78],\n  [1392073200000, 63.97],\n  [1392159600000, 65.14],\n  [1392246000000, 67.04],\n  [1392332400000, 68.34],\n  [1392678000000, 68.66],\n  [1392764400000, 67.99],\n  [1392850800000, 68.48],\n  [1392937200000, 68.22],\n  [1393196400000, 68.77],\n  [1393282800000, 68.01],\n  [1393369200000, 67.82],\n  [1393455600000, 69.92],\n  [1393542000000, 68.63],\n  [1393801200000, 67.86],\n  [1393887600000, 68.60],\n  [1393974000000, 68.90],\n  [1394060400000, 68.92],\n  [1394146800000, 68.52],\n  [1394406000000, 68.04],\n  [1394492400000, 67.47],\n  [1394578800000, 68.06],\n  [1394665200000, 67.08],\n  [1394751600000, 67.19],\n  [1395010800000, 68.17],\n  [1395097200000, 68.52],\n  [1395183600000, 67.63],\n  [1395270000000, 68.49],\n  [1395356400000, 67.14],\n  [1395615600000, 65.24],\n  [1395702000000, 65.81],\n  [1395788400000, 63.90],\n  [1395874800000, 64.53],\n  [1395961200000, 64.88],\n  [1396216800000, 65.74],\n  [1396303200000, 65.93],\n  [1396389600000, 65.48],\n  [1396476000000, 62.45],\n  [1396562400000, 61.32],\n  [1396821600000, 60.47],\n  [1396908000000, 61.82],\n  [1396994400000, 63.46],\n  [1397080800000, 61.49],\n  [1397167200000, 60.50],\n  [1397426400000, 61.39],\n  [1397512800000, 62.10],\n  [1397599200000, 63.04],\n  [1397685600000, 64.04],\n  [1398031200000, 64.30],\n  [1398117600000, 64.48],\n  [1398204000000, 64.39],\n  [1398290400000, 63.22],\n  [1398376800000, 61.61],\n  [1398636000000, 60.40],\n  [1398722400000, 60.91],\n  [1398808800000, 61.69],\n  [1398895200000, 62.59],\n  [1398981600000, 61.56],\n  [1399240800000, 61.44],\n  [1399327200000, 59.44],\n  [1399413600000, 58.63],\n  [1399500000000, 59.08],\n  [1399586400000, 59.59],\n  [1399845600000, 60.70],\n  [1399932000000, 60.81],\n  [1400018400000, 60.88],\n  [1400104800000, 60.20],\n  [1400191200000, 61.64],\n  [1400450400000, 62.20],\n  [1400536800000, 61.71],\n  [1400623200000, 62.47],\n  [1400709600000, 63.15],\n  [1400796000000, 64.30],\n  [1401141600000, 65.25],\n  [1401228000000, 64.84],\n  [1401314400000, 65.45],\n  [1401400800000, 64.54],\n  [1401660000000, 64.64],\n  [1401746400000, 64.09],\n  [1401832800000, 64.17],\n  [1401919200000, 65.47],\n  [1402005600000, 66.91],\n  [1402264800000, 66.93],\n  [1402351200000, 66.96],\n  [1402437600000, 67.46],\n  [1402524000000, 66.56],\n  [1402610400000, 66.82],\n  [1402869600000, 67.62],\n  [1402956000000, 67.54],\n  [1403042400000, 73.08],\n  [1403128800000, 72.95],\n  [1403215200000, 72.61],\n  [1403474400000, 72.89],\n  [1403560800000, 72.38],\n  [1403647200000, 72.44],\n  [1403733600000, 72.85],\n  [1403820000000, 72.00],\n  [1404079200000, 72.36],\n  [1404165600000, 73.01],\n  [1404252000000, 72.76],\n  [1404338400000, 73.57],\n  [1404684000000, 72.68],\n  [1404770400000, 71.14],\n  [1404856800000, 71.57],\n  [1404943200000, 71.70],\n  [1405029600000, 72.26],\n  [1405288800000, 72.88],\n  [1405375200000, 72.29],\n  [1405461600000, 72.38],\n  [1405548000000, 71.39],\n  [1405634400000, 72.55],\n  [1405893600000, 71.96],\n  [1405980000000, 72.26],\n  [1406066400000, 72.04],\n  [1406152800000, 72.80],\n  [1406239200000, 72.62],\n  [1406498400000, 72.70],\n  [1406584800000, 72.27],\n  [1406671200000, 71.89],\n  [1406757600000, 69.25],\n  [1406844000000, 68.94],\n  [1407103200000, 68.77],\n  [1407189600000, 68.97],\n  [1407276000000, 68.23],\n  [1407362400000, 67.83],\n  [1407448800000, 68.39],\n  [1407708000000, 68.97],\n  [1407794400000, 68.78],\n  [1407880800000, 69.79],\n  [1407967200000, 70.05],\n  [1408053600000, 70.07],\n  [1408312800000, 71.06],\n  [1408399200000, 72.05],\n  [1408485600000, 71.02],\n  [1408572000000, 71.73],\n  [1408658400000, 72.04],\n  [1408917600000, 71.82],\n  [1409004000000, 71.53],\n  [1409090400000, 71.55],\n  [1409176800000, 71.37],\n  [1409263200000, 71.90],\n  [1409608800000, 72.10],\n  [1409695200000, 72.43],\n  [1409781600000, 72.45],\n  [1409868000000, 73.13],\n  [1410127200000, 73.39],\n  [1410213600000, 72.42],\n  [1410300000000, 72.33],\n  [1410386400000, 72.42],\n  [1410472800000, 70.98],\n  [1410732000000, 70.27],\n  [1410818400000, 70.73],\n  [1410904800000, 67.30],\n  [1410991200000, 67.91],\n  [1411077600000, 66.94],\n  [1411336800000, 67.20],\n  [1411423200000, 67.79],\n  [1411509600000, 69.03],\n  [1411596000000, 67.71],\n  [1411682400000, 68.36],\n  [1411941600000, 69.22],\n  [1412028000000, 69.19],\n  [1412114400000, 67.54],\n  [1412200800000, 67.06],\n  [1412287200000, 68.40],\n  [1412546400000, 67.67],\n  [1412632800000, 65.96],\n  [1412719200000, 67.99],\n  [1412805600000, 65.66],\n  [1412892000000, 63.29],\n  [1413151200000, 61.68],\n  [1413237600000, 60.88],\n  [1413324000000, 62.19],\n  [1413410400000, 62.86],\n  [1413496800000, 64.52],\n  [1413756000000, 64.68],\n  [1413842400000, 66.42],\n  [1413928800000, 65.04],\n  [1414015200000, 65.92],\n  [1414101600000, 67.01],\n  [1414364400000, 67.03],\n  [1414450800000, 68.37],\n  [1414537200000, 67.93],\n  [1414623600000, 68.57],\n  [1414710000000, 70.12],\n  [1414969200000, 69.91],\n  [1415055600000, 71.07],\n  [1415142000000, 71.37],\n  [1415228400000, 72.10],\n  [1415314800000, 71.60],\n  [1415574000000, 71.70],\n  [1415660400000, 71.70],\n  [1415746800000, 71.41],\n  [1415833200000, 71.72],\n  [1415919600000, 71.42],\n  [1416178800000, 69.97],\n  [1416265200000, 70.83],\n  [1416351600000, 70.82],\n  [1416438000000, 70.44],\n  [1416524400000, 71.32],\n  [1416783600000, 71.22],\n  [1416870000000, 72.00],\n  [1416956400000, 72.98],\n  [1417129200000, 73.68],\n  [1417388400000, 73.75],\n  [1417474800000, 73.47],\n  [1417561200000, 73.18],\n  [1417647600000, 73.03],\n  [1417734000000, 72.40],\n  [1417993200000, 72.05],\n  [1418079600000, 71.56],\n  [1418166000000, 69.85],\n  [1418252400000, 69.74],\n  [1418338800000, 76.02],\n  [1418598000000, 73.04],\n  [1418684400000, 72.32],\n  [1418770800000, 74.00],\n  [1418857200000, 74.89],\n  [1418943600000, 74.45],\n  [1419202800000, 74.50],\n  [1419289200000, 74.38],\n  [1419375600000, 74.74],\n  [1419548400000, 74.67],\n  [1419807600000, 74.13],\n  [1419894000000, 73.08],\n  [1419980400000, 72.70],\n  [1420153200000, 72.34],\n  [1420412400000, 71.98],\n  [1420498800000, 70.53],\n  [1420585200000, 71.11],\n  [1420671600000, 72.92],\n  [1420758000000, 71.84],\n  [1421017200000, 71.12],\n  [1421103600000, 70.59],\n  [1421190000000, 69.99],\n  [1421276400000, 70.29],\n  [1421362800000, 71.73],\n  [1421708400000, 71.49],\n  [1421794800000, 71.54],\n  [1421881200000, 73.48],\n  [1421967600000, 74.06],\n  [1422226800000, 72.74],\n  [1422313200000, 71.46],\n  [1422399600000, 70.25],\n  [1422486000000, 71.64],\n  [1422572400000, 70.13],\n  [1422831600000, 71.11],\n  [1422918000000, 71.92],\n  [1423004400000, 72.28],\n  [1423090800000, 73.10],\n  [1423177200000, 72.54],\n  [1423436400000, 72.33],\n  [1423522800000, 72.76],\n  [1423609200000, 73.01],\n  [1423695600000, 74.59],\n  [1423782000000, 76.51],\n  [1424127600000, 77.13],\n  [1424214000000, 77.73],\n  [1424300400000, 77.73],\n  [1424386800000, 78.55],\n  [1424646000000, 78.10],\n  [1424732400000, 77.68],\n  [1424818800000, 78.07],\n  [1424905200000, 78.96],\n  [1424991600000, 79.10],\n  [1425250800000, 79.79],\n  [1425337200000, 78.99],\n  [1425423600000, 77.63],\n  [1425510000000, 78.62],\n  [1425596400000, 77.55],\n  [1425855600000, 77.93],\n  [1425942000000, 76.00],\n  [1426028400000, 76.01],\n  [1426114800000, 77.40],\n  [1426201200000, 77.62],\n  [1426460400000, 78.33],\n  [1426546800000, 79.66],\n  [1426633200000, 76.89],\n  [1426719600000, 77.14],\n  [1426806000000, 77.36],\n  [1427065200000, 76.35],\n  [1427151600000, 75.45],\n  [1427238000000, 73.13],\n  [1427324400000, 72.97],\n  [1427410800000, 73.31],\n  [1427666400000, 73.60],\n  [1427752800000, 73.94],\n  [1427839200000, 75.07],\n  [1427925600000, 75.68],\n  [1428271200000, 76.23],\n  [1428357600000, 75.65],\n  [1428444000000, 75.44],\n  [1428530400000, 76.33],\n  [1428616800000, 76.53],\n  [1428876000000, 76.02],\n  [1428962400000, 75.95],\n  [1429048800000, 76.03],\n  [1429135200000, 75.15],\n  [1429221600000, 73.15],\n  [1429480800000, 73.92],\n  [1429567200000, 74.62],\n  [1429653600000, 75.50],\n  [1429740000000, 76.52],\n  [1429826400000, 76.54],\n  [1430085600000, 76.55],\n  [1430172000000, 76.02],\n  [1430258400000, 76.65],\n  [1430344800000, 76.06],\n  [1430431200000, 76.43],\n  [1430690400000, 75.85],\n  [1430776800000, 75.00],\n  [1430863200000, 74.48],\n  [1430949600000, 74.73],\n  [1431036000000, 76.31],\n  [1431295200000, 76.78],\n  [1431381600000, 76.57],\n  [1431468000000, 77.08],\n  [1431554400000, 79.43],\n  [1431640800000, 78.92],\n  [1431900000000, 79.41],\n  [1431986400000, 79.62],\n  [1432072800000, 79.61],\n  [1432159200000, 80.56],\n  [1432245600000, 80.04],\n  [1432591200000, 79.36],\n  [1432677600000, 80.16],\n  [1432764000000, 80.02],\n  [1432850400000, 79.09],\n  [1433109600000, 79.87],\n  [1433196000000, 79.82],\n  [1433282400000, 80.13],\n  [1433368800000, 78.75],\n  [1433455200000, 78.86],\n  [1433714400000, 78.16],\n  [1433800800000, 77.90],\n  [1433887200000, 79.56],\n  [1433973600000, 79.65],\n  [1434060000000, 79.86],\n  [1434319200000, 78.90],\n  [1434405600000, 79.94],\n  [1434492000000, 77.91],\n  [1434578400000, 79.39],\n  [1434664800000, 79.70],\n  [1434924000000, 82.28],\n  [1435010400000, 83.55],\n  [1435096800000, 83.40],\n  [1435183200000, 83.94],\n  [1435269600000, 82.74],\n  [1435528800000, 81.28],\n  [1435615200000, 81.01],\n  [1435701600000, 80.94],\n  [1435788000000, 80.75],\n  [1436133600000, 80.50],\n  [1436220000000, 80.59],\n  [1436306400000, 79.99],\n  [1436392800000, 80.47],\n  [1436479200000, 80.59],\n  [1436738400000, 81.44],\n  [1436824800000, 81.89],\n  [1436911200000, 82.12],\n  [1436997600000, 82.52],\n  [1437084000000, 82.10],\n  [1437343200000, 82.09],\n  [1437429600000, 81.19],\n  [1437516000000, 80.73],\n  [1437602400000, 80.64],\n  [1437688800000, 80.98],\n  [1437948000000, 79.93],\n  [1438034400000, 80.59],\n  [1438120800000, 80.25],\n  [1438207200000, 81.29],\n  [1438293600000, 81.99],\n  [1438552800000, 81.40],\n  [1438639200000, 82.06],\n  [1438725600000, 83.38],\n  [1438812000000, 82.19],\n  [1438898400000, 82.69],\n  [1439157600000, 83.62],\n  [1439244000000, 83.90],\n  [1439330400000, 83.82],\n  [1439416800000, 84.31],\n  [1439503200000, 86.12],\n  [1439762400000, 86.77],\n  [1439848800000, 86.45],\n  [1439935200000, 85.48],\n  [1440021600000, 82.69],\n];\n"
  },
  {
    "path": "src/views/chart/apexCharts/area/githubData.ts",
    "content": "export const githubdata = {\n  series: [\n    {\n      x: 1352592000000,\n      a: 306,\n      d: 33,\n      y: 13,\n    },\n    {\n      x: 1353196800000,\n      a: 77,\n      d: 41,\n      y: 11,\n    },\n    {\n      x: 1353801600000,\n      a: 97,\n      d: 52,\n      y: 13,\n    },\n    {\n      x: 1354406400000,\n      a: 349,\n      d: 231,\n      y: 27,\n    },\n    {\n      x: 1355011200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1355616000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1356220800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1356825600000,\n      a: 93,\n      d: 16,\n      y: 12,\n    },\n    {\n      x: 1357430400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1358035200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1358640000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1359244800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1359849600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1360454400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1361059200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1361664000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1362268800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1362873600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1363478400000,\n      a: 47,\n      d: 20,\n      y: 6,\n    },\n    {\n      x: 1364083200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1364688000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1365292800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1365897600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1366502400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1367107200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1367712000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1368316800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1368921600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1369526400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1370131200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1370736000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1371340800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1371945600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1372550400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1373155200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1373760000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1374364800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1374969600000,\n      a: 22,\n      d: 16,\n      y: 9,\n    },\n    {\n      x: 1375574400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1376179200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1376784000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1377388800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1377993600000,\n      a: 104,\n      d: 79,\n      y: 12,\n    },\n    {\n      x: 1378598400000,\n      a: 60,\n      d: 17,\n      y: 9,\n    },\n    {\n      x: 1379203200000,\n      a: 27,\n      d: 36,\n      y: 3,\n    },\n    {\n      x: 1379808000000,\n      a: 283,\n      d: 199,\n      y: 20,\n    },\n    {\n      x: 1380412800000,\n      a: 1,\n      d: 1,\n      y: 1,\n    },\n    {\n      x: 1381017600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1381622400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1382227200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1382832000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1383436800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1384041600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1384646400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1385251200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1385856000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1386460800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1387065600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1387670400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1388275200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1388880000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1389484800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1390089600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1390694400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1391299200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1391904000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1392508800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1393113600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1393718400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1394323200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1394928000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1395532800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1396137600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1396742400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1397347200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1397952000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1398556800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1399161600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1399766400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1400371200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1400976000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1401580800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1402185600000,\n      a: 115,\n      d: 38,\n      y: 11,\n    },\n    {\n      x: 1402790400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1403395200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1404000000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1404604800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1405209600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1405814400000,\n      a: 598,\n      d: 209,\n      y: 34,\n    },\n    {\n      x: 1406419200000,\n      a: 195,\n      d: 119,\n      y: 18,\n    },\n    {\n      x: 1407024000000,\n      a: 174,\n      d: 54,\n      y: 13,\n    },\n    {\n      x: 1407628800000,\n      a: 1,\n      d: 1,\n      y: 1,\n    },\n    {\n      x: 1408233600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1408838400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1409443200000,\n      a: 2,\n      d: 2,\n      y: 1,\n    },\n    {\n      x: 1410048000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1410652800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1411257600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1411862400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1412467200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1413072000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1413676800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1414281600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1414886400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1415491200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1416096000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1416700800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1417305600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1417910400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1418515200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1419120000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1419724800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1420329600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1420934400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1421539200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1422144000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1422748800000,\n      a: 46,\n      d: 43,\n      y: 8,\n    },\n    {\n      x: 1423353600000,\n      a: 20,\n      d: 4,\n      y: 1,\n    },\n    {\n      x: 1423958400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1424563200000,\n      a: 18,\n      d: 11,\n      y: 4,\n    },\n    {\n      x: 1425168000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1425772800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1426377600000,\n      a: 54,\n      d: 63,\n      y: 4,\n    },\n    {\n      x: 1426982400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1427587200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1428192000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1428796800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1429401600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1430006400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1430611200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1431216000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1431820800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1432425600000,\n      a: 10,\n      d: 11,\n      y: 1,\n    },\n    {\n      x: 1433030400000,\n      a: 296,\n      d: 172,\n      y: 18,\n    },\n    {\n      x: 1433635200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1434240000000,\n      a: 10,\n      d: 13,\n      y: 2,\n    },\n    {\n      x: 1434844800000,\n      a: 20,\n      d: 16,\n      y: 3,\n    },\n    {\n      x: 1435449600000,\n      a: 24,\n      d: 10,\n      y: 3,\n    },\n    {\n      x: 1436054400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1436659200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1437264000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1437868800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1438473600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1439078400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1439683200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1440288000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1440892800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1441497600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1442102400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1442707200000,\n      a: 275,\n      d: 129,\n      y: 12,\n    },\n    {\n      x: 1443312000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1443916800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1444521600000,\n      a: 1213,\n      d: 837,\n      y: 5,\n    },\n    {\n      x: 1445126400000,\n      a: 299,\n      d: 54,\n      y: 3,\n    },\n    {\n      x: 1445731200000,\n      a: 30,\n      d: 33,\n      y: 1,\n    },\n    {\n      x: 1446336000000,\n      a: 202,\n      d: 185,\n      y: 18,\n    },\n    {\n      x: 1446940800000,\n      a: 554,\n      d: 292,\n      y: 39,\n    },\n    {\n      x: 1447545600000,\n      a: 9030,\n      d: 44,\n      y: 7,\n    },\n    {\n      x: 1448150400000,\n      a: 8,\n      d: 1,\n      y: 1,\n    },\n    {\n      x: 1448755200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1449360000000,\n      a: 18,\n      d: 12,\n      y: 5,\n    },\n    {\n      x: 1449964800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1450569600000,\n      a: 4,\n      d: 3,\n      y: 2,\n    },\n    {\n      x: 1451174400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1451779200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1452384000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1452988800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1453593600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1454198400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1454803200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1455408000000,\n      a: 2,\n      d: 2,\n      y: 1,\n    },\n    {\n      x: 1456012800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1456617600000,\n      a: 32,\n      d: 43,\n      y: 1,\n    },\n    {\n      x: 1457222400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1457827200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1458432000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1459036800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1459641600000,\n      a: 23,\n      d: 13,\n      y: 3,\n    },\n    {\n      x: 1460246400000,\n      a: 421,\n      d: 335,\n      y: 9,\n    },\n    {\n      x: 1460851200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1461456000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1462060800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1462665600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1463270400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1463875200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1464480000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1465084800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1465689600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1466294400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1466899200000,\n      a: 6,\n      d: 1,\n      y: 1,\n    },\n    {\n      x: 1467504000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1468108800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1468713600000,\n      a: 886,\n      d: 49,\n      y: 15,\n    },\n    {\n      x: 1469318400000,\n      a: 38,\n      d: 26,\n      y: 4,\n    },\n    {\n      x: 1469923200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1470528000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1471132800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1471737600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1472342400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1472947200000,\n      a: 2,\n      d: 2,\n      y: 1,\n    },\n    {\n      x: 1473552000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1474156800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1474761600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1475366400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1475971200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1476576000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1477180800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1477785600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1478390400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1478995200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1479600000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1480204800000,\n      a: 8,\n      d: 0,\n      y: 1,\n    },\n    {\n      x: 1480809600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1481414400000,\n      a: 1,\n      d: 1,\n      y: 1,\n    },\n    {\n      x: 1482019200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1482624000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1483228800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1483833600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1484438400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1485043200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1485648000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1486252800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1486857600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1487462400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1488067200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1488672000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1489276800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1489881600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1490486400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1491091200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1491696000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1492300800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1492905600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1493510400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1494115200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1494720000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1495324800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1495929600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1496534400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1497139200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1497744000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1498348800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1498953600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1499558400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1500163200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1500768000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1501372800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1501977600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1502582400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1503187200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1503792000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1504396800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1505001600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1505606400000,\n      a: 2,\n      d: 2,\n      y: 2,\n    },\n    {\n      x: 1506211200000,\n      a: 49,\n      d: 10,\n      y: 4,\n    },\n    {\n      x: 1506816000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1507420800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1508025600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1508630400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1509235200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1509840000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1510444800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1511049600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1511654400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1512259200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1512864000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1513468800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1514073600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1514678400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1515283200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1515888000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1516492800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1517097600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1517702400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1518307200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1518912000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1519516800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1520121600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1520726400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1521331200000,\n      a: 768,\n      d: 2125,\n      y: 12,\n    },\n    {\n      x: 1521936000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1522540800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1523145600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1523750400000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1524355200000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1524960000000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1525564800000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1526169600000,\n      a: 0,\n      d: 0,\n      y: 0,\n    },\n    {\n      x: 1526774400000,\n      a: 1,\n      d: 0,\n      y: 1,\n    },\n  ],\n};\n"
  },
  {
    "path": "src/views/chart/apexCharts/area/index.less",
    "content": "@import '../../../../styles/var.less';\n.area-wrap {\n  padding: 20px;\n  .item-title {\n    color: @text-color;\n    font-size: 16px;\n    text-transform: uppercase;\n  }\n  .ant-card {\n    margin-bottom: 20px;\n  }\n}"
  },
  {
    "path": "src/views/chart/apexCharts/area/index.tsx",
    "content": "import { Component, Vue } from 'vue-property-decorator';\nimport { Row, Col, Card } from 'ant-design-vue';\nimport { loadApexCharts } from '@/utils/index';\n\nimport {\n  basicAreaOptions,\n  splineAreaOptions,\n  areaChartDatetimeOptions,\n  areaChartNegativeOptions,\n  areaChartGithubOptions,\n  areaChartGithub2Options,\n  stackedAreaOptions,\n  areaTimeSeriesOptions,\n  areaChartNullvaluesOptions,\n} from './params';\n\nimport './index.less';\n\n@Component({\n  name: 'Area',\n  components: {\n    'a-row': Row,\n    'a-col': Col,\n    'a-card': Card,\n  },\n})\nexport default class Area extends Vue {\n  itemLayout = {\n    xxl: 12,\n    xl: 12,\n    md: 12,\n    sm: 24,\n    xs: 24,\n  }\n\n  basicAreaChart: any = null;\n\n  splineAreaChart: any = null;\n\n  areaChartDatetimeChart: any = null;\n\n  areaChartNegativeChart: any = null;\n\n  areaChartGithubChart: any = null;\n\n  areaChartGithub2Chart: any = null;\n\n  stackedAreaChart: any = null;\n\n  areaTimeSeriesChart: any = null;\n\n  areaChartNullvaluesChart: any = null;\n\n  mounted() {\n    loadApexCharts().then(() => {\n      this.basicAreaChart = new window.ApexCharts(\n        document.querySelector('#basic-area'),\n        basicAreaOptions,\n      );\n      this.basicAreaChart.render();\n      this.splineAreaChart = new window.ApexCharts(\n        document.querySelector('#spline-area'),\n        splineAreaOptions,\n      );\n      this.splineAreaChart.render();\n      this.areaChartDatetimeChart = new window.ApexCharts(\n        document.querySelector('#area-chart-datetime'),\n        areaChartDatetimeOptions,\n      );\n      this.areaChartDatetimeChart.render();\n      this.areaChartNegativeChart = new window.ApexCharts(\n        document.querySelector('#area-chart-negative'),\n        areaChartNegativeOptions,\n      );\n      this.areaChartNegativeChart.render();\n      this.areaChartGithub2Chart = new window.ApexCharts(\n        document.querySelector('#area-chart-github2'),\n        areaChartGithub2Options,\n      );\n      this.areaChartGithub2Chart.render();\n      areaChartGithubOptions.events = {\n        selection(e: any, t: any) {\n          this.areaChartGithub2Chart.updateOptions({\n            xaxis: {\n              min: t.xaxis.min,\n              max: t.xaxis.max,\n            },\n          }, !1, !1);\n        },\n        updated(e: any, t: any) {\n          this.areaChartGithub2Chart.updateOptions({\n            xaxis: {\n              min: t.config.xaxis.min,\n              max: t.config.xaxis.max,\n            },\n          }, !1, !1);\n        },\n      };\n      this.areaChartGithubChart = new window.ApexCharts(\n        document.querySelector('#area-chart-github'),\n        areaChartGithubOptions,\n      );\n      this.areaChartGithubChart.render();\n      this.stackedAreaChart = new window.ApexCharts(\n        document.querySelector('#stacked-area'),\n        stackedAreaOptions,\n      );\n      this.stackedAreaChart.render();\n      this.areaTimeSeriesChart = new window.ApexCharts(\n        document.querySelector('#area-timeSeries'),\n        areaTimeSeriesOptions,\n      );\n      this.areaTimeSeriesChart.render();\n      this.areaChartNullvaluesChart = new window.ApexCharts(\n        document.querySelector('#area-chart-nullvalues'),\n        areaChartNullvaluesOptions,\n      );\n      this.areaChartNullvaluesChart.render();\n    });\n  }\n\n  render() {\n    return (\n      <div class=\"area-wrap\">\n        <a-row gutter={{ xs: 8, md: 12, xl: 20 }}>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">basic-area</h2>\n              <div id=\"basic-area\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">spline-area</h2>\n              <div id=\"spline-area\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">area-chart-datetime</h2>\n              <div id=\"area-chart-datetime\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">area-chart-negative</h2>\n              <div id=\"area-chart-negative\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">area-chart-github</h2>\n              <div id=\"area-chart-github\" style=\"margin-bottom: 48px\"></div>\n              <div id=\"area-chart-github2\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">stacked-area</h2>\n              <div id=\"stacked-area\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">area-timeSeries</h2>\n              <div id=\"area-timeSeries\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">area-chart-nullvalues</h2>\n              <div id=\"area-chart-nullvalues\"></div>\n            </a-card>\n          </a-col>\n        </a-row>\n      </div>\n    );\n  }\n}\n"
  },
  {
    "path": "src/views/chart/apexCharts/area/params.ts",
    "content": "import moment from 'moment';\n\nimport { dateSeries } from './dateSeries';\nimport { dataSeries } from './dataSeries';\nimport { githubdata } from './githubData';\n\n\nexport const basicAreaOptions = {\n  chart: {\n    height: 380,\n    type: 'area',\n    zoom: {\n      enabled: !1,\n    },\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  stroke: {\n    width: 3,\n    curve: 'straight',\n  },\n  colors: ['#fa5c7c'],\n  series: [{\n    name: 'STOCK ABC',\n    data: [\n      8107.85,\n      8128.0,\n      8122.9,\n      8165.5,\n      8340.7,\n      8423.7,\n      8423.5,\n      8514.3,\n      8481.85,\n      8487.7,\n      8506.9,\n      8626.2,\n      8668.95,\n      8602.3,\n      8607.55,\n      8512.9,\n      8496.25,\n      8600.65,\n      8881.1,\n      9340.85,\n    ],\n  }],\n  title: {\n    text: 'Fundamental Analysis of Stocks',\n    align: 'left',\n  },\n  subtitle: {\n    text: 'Price Movements',\n    align: 'left',\n  },\n  labels: [\n    '13 Nov 2017',\n    '14 Nov 2017',\n    '15 Nov 2017',\n    '16 Nov 2017',\n    '17 Nov 2017',\n    '20 Nov 2017',\n    '21 Nov 2017',\n    '22 Nov 2017',\n    '23 Nov 2017',\n    '24 Nov 2017',\n    '27 Nov 2017',\n    '28 Nov 2017',\n    '29 Nov 2017',\n    '30 Nov 2017',\n    '01 Dec 2017',\n    '04 Dec 2017',\n    '05 Dec 2017',\n    '06 Dec 2017',\n    '07 Dec 2017',\n    '08 Dec 2017',\n  ],\n  xaxis: {\n    type: 'datetime',\n  },\n  yaxis: {\n    opposite: !0,\n  },\n  legend: {\n    horizontalAlign: 'left',\n  },\n  grid: {\n    row: {\n      colors: ['#f1f3fa', 'transparent'],\n    },\n    borderColor: '#f1f3fa',\n  },\n  responsive: [{\n    breakpoint: 600,\n    options: {\n      chart: {\n        toolbar: {\n          show: !1,\n        },\n      },\n      legend: {\n        show: !1,\n      },\n    },\n  }],\n};\n\n\nexport const splineAreaOptions = {\n  chart: {\n    height: 380,\n    type: 'area',\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  stroke: {\n    width: 3,\n    curve: 'smooth',\n  },\n  colors: ['#727cf5', '#6c757d'],\n  series: [{\n    name: 'Series 1',\n    data: [31, 40, 28, 51, 42, 109, 100],\n  }, {\n    name: 'Series 2',\n    data: [11, 32, 45, 32, 34, 52, 41],\n  }],\n  xaxis: {\n    categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'],\n  },\n  tooltip: {\n    fixed: {\n      enabled: !1,\n      position: 'topRight',\n    },\n  },\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n};\n\nexport const areaChartDatetimeOptions = {\n  annotations: {\n    yaxis: [{\n      value: 30,\n      borderColor: '#999',\n      yAxisIndex: 0,\n      label: {\n        show: !0,\n        text: 'Support',\n        style: {\n          color: '#fff',\n          background: '#00E396',\n        },\n      },\n    }],\n    xaxis: [{\n      value: new Date('14 Nov 2012').getTime(),\n      borderColor: '#999',\n      yAxisIndex: 0,\n      label: {\n        show: !0,\n        text: 'Rally',\n        style: {\n          color: '#fff',\n          background: '#775DD0',\n        },\n      },\n    }],\n  },\n  chart: {\n    type: 'area',\n    height: 380,\n    scroller: {\n      enabled: !0,\n    },\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  series: [{\n    data: dateSeries,\n  }],\n  markers: {\n    size: 0,\n    style: 'hollow',\n  },\n  xaxis: {\n    type: 'datetime',\n    min: new Date('01 Mar 2012').getTime(),\n  },\n  yaxis: {},\n  tooltip: {\n    key: {\n      format: 'dd MMM yyyy',\n    },\n  },\n  fill: {\n    type: 'gradient',\n    gradient: {\n      shadeIntensity: 1,\n      opacityFrom: 0.7,\n      opacityTo: 0,\n      stops: [0, 40, 100],\n    },\n  },\n};\n\nexport const areaChartNegativeOptions = {\n  chart: {\n    height: 380,\n    type: 'area',\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  stroke: {\n    width: 2,\n    curve: 'straight',\n  },\n  colors: ['#0acf97', '#ffbc00'],\n  series: [{\n    name: 'North',\n    data: [{\n      x: 1996,\n      y: 322,\n    }, {\n      x: 1997,\n      y: 324,\n    }, {\n      x: 1998,\n      y: 329,\n    }, {\n      x: 1999,\n      y: 342,\n    }, {\n      x: 2e3,\n      y: 348,\n    }, {\n      x: 2001,\n      y: 334,\n    }, {\n      x: 2002,\n      y: 325,\n    }, {\n      x: 2003,\n      y: 316,\n    }, {\n      x: 2004,\n      y: 318,\n    }, {\n      x: 2005,\n      y: 330,\n    }, {\n      x: 2006,\n      y: 355,\n    }, {\n      x: 2007,\n      y: 366,\n    }, {\n      x: 2008,\n      y: 337,\n    }, {\n      x: 2009,\n      y: 352,\n    }, {\n      x: 2010,\n      y: 377,\n    }, {\n      x: 2011,\n      y: 383,\n    }, {\n      x: 2012,\n      y: 344,\n    }, {\n      x: 2013,\n      y: 366,\n    }, {\n      x: 2014,\n      y: 389,\n    }, {\n      x: 2015,\n      y: 334,\n    }],\n  }, {\n    name: 'South',\n    data: [{\n      x: 1996,\n      y: 162,\n    }, {\n      x: 1997,\n      y: 90,\n    }, {\n      x: 1998,\n      y: 50,\n    }, {\n      x: 1999,\n      y: 77,\n    }, {\n      x: 2e3,\n      y: 35,\n    }, {\n      x: 2001,\n      y: -45,\n    }, {\n      x: 2002,\n      y: -88,\n    }, {\n      x: 2003,\n      y: -120,\n    }, {\n      x: 2004,\n      y: -156,\n    }, {\n      x: 2005,\n      y: -123,\n    }, {\n      x: 2006,\n      y: -88,\n    }, {\n      x: 2007,\n      y: -66,\n    }, {\n      x: 2008,\n      y: -45,\n    }, {\n      x: 2009,\n      y: -29,\n    }, {\n      x: 2010,\n      y: -45,\n    }, {\n      x: 2011,\n      y: -88,\n    }, {\n      x: 2012,\n      y: -132,\n    }, {\n      x: 2013,\n      y: -146,\n    }, {\n      x: 2014,\n      y: -169,\n    }, {\n      x: 2015,\n      y: -184,\n    }],\n  }],\n  xaxis: {\n    type: 'datetime',\n    axisBorder: {\n      show: !1,\n    },\n    axisTicks: {\n      show: !1,\n    },\n  },\n  yaxis: {\n    tickAmount: 4,\n    floating: !1,\n    labels: {\n      style: {\n        color: '#8e8da4',\n      },\n      offsetY: -7,\n      offsetX: 0,\n    },\n    axisBorder: {\n      show: !1,\n    },\n    axisTicks: {\n      show: !1,\n    },\n  },\n  fill: {\n    opacity: 0.5,\n    gradient: {\n      enabled: !1,\n    },\n  },\n  tooltip: {\n    x: {\n      format: 'yyyy',\n    },\n    fixed: {\n      enabled: !1,\n      position: 'topRight',\n    },\n  },\n  grid: {\n    yaxis: {\n      lines: {\n        offsetX: -30,\n      },\n    },\n    padding: {\n      left: 0,\n    },\n    borderColor: '#f1f3fa',\n  },\n};\n\nexport const areaChartGithubOptions: any = {\n  chart: {\n    height: 200,\n    type: 'area',\n    background: '#F6F8FA',\n    selection: {\n      xaxis: {\n        min: new Date('05 Jan 2014').getTime(),\n        max: new Date('04 Jan 2015').getTime(),\n      },\n    },\n    // events: {\n    //   selection(e, t) {\n    //     chartarea2.updateOptions({\n    //       xaxis: {\n    //         min: t.xaxis.min,\n    //         max: t.xaxis.max,\n    //       },\n    //     }, !1, !1);\n    //   },\n    //   updated(e, t) {\n    //     chartarea2.updateOptions({\n    //       xaxis: {\n    //         min: t.config.xaxis.min,\n    //         max: t.config.xaxis.max,\n    //       },\n    //     }, !1, !1);\n    //   },\n    // },\n  },\n  colors: ['#0acf97'],\n  dataLabels: {\n    enabled: !1,\n  },\n  stroke: {\n    width: 0,\n    curve: 'smooth',\n  },\n  series: [{\n    name: 'commits',\n    data: githubdata.series,\n  }],\n  fill: {\n    opacity: 1,\n    type: 'solid',\n  },\n  legend: {\n    position: 'top',\n    horizontalAlign: 'left',\n  },\n  xaxis: {\n    type: 'datetime',\n  },\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n};\n\nexport const areaChartGithub2Options = {\n  chart: {\n    type: 'area',\n    height: 160,\n    background: '#F6F8FA',\n    toolbar: {\n      show: !1,\n    },\n    events: {\n      mounted(e: any) {\n        const t = document.querySelector('p span.commits');\n        const a = e.getSeriesTotalXRange(e.w.globals.minX, e.w.globals.maxX);\n        if (t) t.innerHTML = a;\n      },\n      updated(e: any) {\n        const t = document.querySelector('.cmeta span.commits');\n        const a = e.getSeriesTotalXRange(e.w.globals.minX, e.w.globals.maxX);\n        if (t) t.innerHTML = a;\n      },\n    },\n  },\n  colors: ['#FF7F00'],\n  stroke: {\n    width: 0,\n    curve: 'smooth',\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  fill: {\n    opacity: 1,\n    type: 'solid',\n  },\n  series: [{\n    name: 'commits',\n    data: githubdata.series,\n  }],\n  yaxis: {\n    tickAmount: 3,\n    labels: {\n      show: !1,\n    },\n  },\n  xaxis: {\n    type: 'datetime',\n  },\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n};\n\nfunction generateDayWiseTimeSeries(e: any, t: any, a: any) {\n  let r = 0;\n  let o;\n  for (o = []; r < t;) {\n    const i = e;\n    const n = Math.floor(Math.random() * ((a.max - a.min) + 1)) + a.min;\n    o.push([i, n]); e += 864e5; r++;\n  }\n  return o;\n}\n\nexport const stackedAreaOptions = {\n  chart: {\n    height: 422,\n    type: 'area',\n    stacked: !0,\n    scroller: {\n      enabled: !0,\n    },\n    events: {\n      selection(e: any, t: any) {\n        console.log(new Date(t.xaxis.min));\n      },\n    },\n  },\n  colors: ['#727cf5', '#0acf97', '#e3eaef'],\n  dataLabels: {\n    enabled: !1,\n  },\n  stroke: {\n    width: 2,\n    curve: 'smooth',\n  },\n  series: [{\n    name: 'South',\n    data: generateDayWiseTimeSeries(new Date('11 Feb 2017').getTime(), 20, {\n      min: 10,\n      max: 60,\n    }),\n  }, {\n    name: 'North',\n    data: generateDayWiseTimeSeries(new Date('11 Feb 2017').getTime(), 20, {\n      min: 10,\n      max: 20,\n    }),\n  }, {\n    name: 'Central',\n    data: generateDayWiseTimeSeries(new Date('11 Feb 2017').getTime(), 20, {\n      min: 10,\n      max: 15,\n    }),\n  }],\n  fill: {\n    gradient: {\n      enabled: !0,\n      opacityFrom: 0.6,\n      opacityTo: 0.8,\n    },\n  },\n  legend: {\n    position: 'top',\n    horizontalAlign: 'left',\n  },\n  xaxis: {\n    type: 'datetime',\n  },\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n  responsive: [{\n    breakpoint: 600,\n    options: {\n      chart: {\n        toolbar: {\n          show: !1,\n        },\n      },\n    },\n  }],\n};\n\nlet ts1 = 13885344e5;\nlet ts2 = 13886208e5;\nlet ts3 = 13890528e5;\nconst dataSet: any = [[], [], []];\nlet innerArr: any;\n\nfor (let i = 0; i < 12; i++) {\n  innerArr = [ts1 += 864e5, dataSeries[2][i].value];\n  dataSet[0].push(innerArr);\n}\nfor (let i = 0; i < 18; i++) {\n  innerArr = [ts2 += 864e5, dataSeries[1][i].value];\n  dataSet[1].push(innerArr);\n}\nfor (let i = 0; i < 12; i++) {\n  innerArr = [ts3 += 864e5, dataSeries[0][i].value];\n  dataSet[2].push(innerArr);\n}\n\nexport const areaTimeSeriesOptions = {\n  chart: {\n    type: 'area',\n    stacked: !1,\n    height: 380,\n    zoom: {\n      enabled: !1,\n    },\n  },\n  plotOptions: {\n    line: {\n      curve: 'smooth',\n    },\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  series: [{\n    name: 'PRODUCT A',\n    data: dataSet[0],\n  }, {\n    name: 'PRODUCT B',\n    data: dataSet[1],\n  }, {\n    name: 'PRODUCT C',\n    data: dataSet[2],\n  }],\n  colors: ['#39afd1', '#fa5c7c', '#727cf5'],\n  markers: {\n    size: 0,\n    style: 'full',\n  },\n  stroke: {\n    width: 3,\n  },\n  fill: {\n    gradient: {\n      enabled: !0,\n      shadeIntensity: 1,\n      inverseColors: !1,\n      opacityFrom: 0.45,\n      opacityTo: 0.05,\n      stops: [20, 100, 100, 100],\n    },\n  },\n  yaxis: {\n    labels: {\n      style: {\n        color: '#8e8da4',\n      },\n      offsetX: 0,\n      formatter(e: any) {\n        return (e / 1e6).toFixed(0);\n      },\n    },\n    axisBorder: {\n      show: !1,\n    },\n    axisTicks: {\n      show: !1,\n    },\n  },\n  xaxis: {\n    type: 'datetime',\n    tickAmount: 8,\n    labels: {\n      formatter(e: any) {\n        return moment(new Date(e)).format('DD MMM YYYY');\n      },\n    },\n  },\n  title: {\n    text: 'Irregular Data in Time Series',\n    align: 'left',\n    offsetX: 0,\n  },\n  tooltip: {\n    shared: !0,\n    y: {\n      formatter(e: any) {\n        return `${(e / 1e6).toFixed(0)} points`;\n      },\n    },\n  },\n  legend: {\n    position: 'top',\n    horizontalAlign: 'center',\n    offsetX: -10,\n  },\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n  responsive: [{\n    breakpoint: 600,\n    options: {\n      chart: {\n        toolbar: {\n          show: !1,\n        },\n      },\n    },\n  }],\n};\n\nexport const areaChartNullvaluesOptions = {\n  chart: {\n    height: 380,\n    type: 'area',\n    animations: {\n      enabled: !1,\n    },\n    zoom: {\n      enabled: !1,\n    },\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  stroke: {\n    curve: 'straight',\n  },\n  colors: ['#6c757d'],\n  series: [{\n    name: 'Network',\n    data: [{\n      x: 'Dec 23 2017',\n      y: null,\n    }, {\n      x: 'Dec 24 2017',\n      y: 44,\n    }, {\n      x: 'Dec 25 2017',\n      y: 31,\n    }, {\n      x: 'Dec 26 2017',\n      y: 38,\n    }, {\n      x: 'Dec 27 2017',\n      y: null,\n    }, {\n      x: 'Dec 28 2017',\n      y: 32,\n    }, {\n      x: 'Dec 29 2017',\n      y: 55,\n    }, {\n      x: 'Dec 30 2017',\n      y: 51,\n    }, {\n      x: 'Dec 31 2017',\n      y: 67,\n    }, {\n      x: 'Jan 01 2018',\n      y: 22,\n    }, {\n      x: 'Jan 02 2018',\n      y: 34,\n    }, {\n      x: 'Jan 03 2018',\n      y: null,\n    }, {\n      x: 'Jan 04 2018',\n      y: null,\n    }, {\n      x: 'Jan 05 2018',\n      y: 11,\n    }, {\n      x: 'Jan 06 2018',\n      y: 4,\n    }, {\n      x: 'Jan 07 2018',\n      y: 15,\n    }, {\n      x: 'Jan 08 2018',\n      y: null,\n    }, {\n      x: 'Jan 09 2018',\n      y: 9,\n    }, {\n      x: 'Jan 10 2018',\n      y: 34,\n    }, {\n      x: 'Jan 11 2018',\n      y: null,\n    }, {\n      x: 'Jan 12 2018',\n      y: null,\n    }, {\n      x: 'Jan 13 2018',\n      y: 13,\n    }, {\n      x: 'Jan 14 2018',\n      y: null,\n    }],\n  }],\n  fill: {\n    opacity: 0.8,\n    gradient: {\n      enabled: !1,\n    },\n    pattern: {\n      enabled: !0,\n      style: ['verticalLines', 'horizontalLines'],\n      width: 5,\n      depth: 6,\n    },\n  },\n  markers: {\n    size: 5,\n    hover: {\n      size: 9,\n    },\n  },\n  title: {\n    text: 'Network Monitoring',\n  },\n  tooltip: {\n    intersect: !0,\n    shared: !1,\n  },\n  theme: {\n    palette: 'palette1',\n  },\n  xaxis: {\n    type: 'datetime',\n  },\n  yaxis: {\n    title: {\n      text: 'Bytes Received',\n    },\n  },\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n  responsive: [{\n    breakpoint: 600,\n    options: {\n      chart: {\n        toolbar: {\n          show: !1,\n        },\n      },\n    },\n  }],\n};\n"
  },
  {
    "path": "src/views/chart/apexCharts/bar/index.less",
    "content": "@import '../../../../styles/var.less';\n.bar-wrap {\n  padding: 20px;\n  .item-title {\n    color: @text-color;\n    font-size: 16px;\n    text-transform: uppercase;\n  }\n  .ant-card {\n    margin-bottom: 20px;\n  }\n}"
  },
  {
    "path": "src/views/chart/apexCharts/bar/index.tsx",
    "content": "import { Component, Vue } from 'vue-property-decorator';\nimport { Row, Col, Card } from 'ant-design-vue';\nimport { loadApexCharts } from '@/utils/index';\n\nimport {\n  basicBarOptions,\n  groupedBarOptions,\n  stackedBarOptions,\n  fullStackedBarOptions,\n  negativeBarOptions,\n  patternBarOptions,\n  imageFillBarOptions,\n} from './params';\n\nimport './index.less';\n\n@Component({\n  name: 'Bar',\n  components: {\n    'a-row': Row,\n    'a-col': Col,\n    'a-card': Card,\n  },\n})\nexport default class Bar extends Vue {\n  itemLayout = {\n    xxl: 12,\n    xl: 12,\n    md: 12,\n    sm: 24,\n    xs: 24,\n  }\n\n  basicBarChart: any = null;\n\n  groupedBarChart: any = null;\n\n  stackedBarChart: any = null;\n\n  fullStackedBarChart: any = null;\n\n  negativeBarChart: any = null;\n\n  patternBarChart: any = null;\n\n  imageFillBarChart: any = null;\n\n  mounted() {\n    loadApexCharts().then(() => {\n      this.basicBarChart = new window.ApexCharts(\n        document.querySelector('#basic-bar'),\n        basicBarOptions,\n      );\n      this.basicBarChart.render();\n      this.groupedBarChart = new window.ApexCharts(\n        document.querySelector('#grouped-bar'),\n        groupedBarOptions,\n      );\n      this.groupedBarChart.render();\n      this.stackedBarChart = new window.ApexCharts(\n        document.querySelector('#stacked-bar'),\n        stackedBarOptions,\n      );\n      this.stackedBarChart.render();\n      this.fullStackedBarChart = new window.ApexCharts(\n        document.querySelector('#full-stacked-bar'),\n        fullStackedBarOptions,\n      );\n      this.fullStackedBarChart.render();\n      this.negativeBarChart = new window.ApexCharts(\n        document.querySelector('#negative-bar'),\n        negativeBarOptions,\n      );\n      this.negativeBarChart.render();\n      this.patternBarChart = new window.ApexCharts(\n        document.querySelector('#pattern-bar'),\n        patternBarOptions,\n      );\n      this.patternBarChart.render();\n      this.imageFillBarChart = new window.ApexCharts(\n        document.querySelector('#image-fill-bar'),\n        imageFillBarOptions,\n      );\n      this.imageFillBarChart.render();\n    });\n  }\n\n  render() {\n    return (\n      <div class=\"bar-wrap\">\n        <a-row gutter={{ xs: 8, md: 12, xl: 20 }}>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">basic-bar</h2>\n              <div id=\"basic-bar\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">grouped-bar</h2>\n              <div id=\"grouped-bar\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">stacked-bar</h2>\n              <div id=\"stacked-bar\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">full-stacked-bar</h2>\n              <div id=\"full-stacked-bar\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">negative-bar</h2>\n              <div id=\"negative-bar\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">pattern-bar</h2>\n              <div id=\"pattern-bar\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">image-fill-bar</h2>\n              <div id=\"image-fill-bar\"></div>\n            </a-card>\n          </a-col>\n        </a-row>\n      </div>\n    );\n  }\n}\n"
  },
  {
    "path": "src/views/chart/apexCharts/bar/params.ts",
    "content": "export const basicBarOptions = {\n  chart: {\n    height: 380,\n    type: 'bar',\n    toolbar: {\n      show: !1,\n    },\n  },\n  plotOptions: {\n    bar: {\n      horizontal: !0,\n    },\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  series: [{\n    data: [400, 430, 448, 470, 540, 580, 690, 1100, 1200, 1380],\n  }],\n  colors: ['#39afd1'],\n  xaxis: {\n    categories: ['South Korea', 'Canada', 'United Kingdom', 'Netherlands', 'Italy', 'France', 'Japan',\n      'United States', 'China', 'Germany'],\n  },\n  states: {\n    hover: {\n      filter: 'none',\n    },\n  },\n  grid: {\n    borderColor: '#f1f3fa',\n  },\n};\nexport const groupedBarOptions = {\n  chart: {\n    height: 380,\n    type: 'bar',\n    toolbar: {\n      show: !1,\n    },\n  },\n  plotOptions: {\n    bar: {\n      horizontal: !0,\n      dataLabels: {\n        position: 'top',\n      },\n    },\n  },\n  dataLabels: {\n    enabled: !0,\n    offsetX: -6,\n    style: {\n      fontSize: '12px',\n      colors: ['#fff'],\n    },\n  },\n  colors: ['#fa5c7c', '#6c757d'],\n  stroke: {\n    show: !0,\n    width: 1,\n    colors: ['#fff'],\n  },\n  series: [{\n    name: 'Series 1',\n    data: [44, 55, 41, 64, 22, 43, 21],\n  }, {\n    name: 'Series 2',\n    data: [53, 32, 33, 52, 13, 44, 32],\n  }],\n  xaxis: {\n    categories: [2001, 2002, 2003, 2004, 2005, 2006, 2007],\n  },\n  states: {\n    hover: {\n      filter: 'none',\n    },\n  },\n  grid: {\n    borderColor: '#f1f3fa',\n  },\n};\n\nexport const stackedBarOptions = {\n  chart: {\n    height: 380,\n    type: 'bar',\n    stacked: !0,\n    toolbar: {\n      show: !1,\n    },\n  },\n  plotOptions: {\n    bar: {\n      horizontal: !0,\n    },\n  },\n  stroke: {\n    show: !1,\n  },\n  series: [{\n    name: 'Marine Sprite',\n    data: [44, 55, 41, 37, 22, 43, 21],\n  }, {\n    name: 'Striking Calf',\n    data: [53, 32, 33, 52, 13, 43, 32],\n  }, {\n    name: 'Tank Picture',\n    data: [12, 17, 11, 9, 15, 11, 20],\n  }, {\n    name: 'Bucket Slope',\n    data: [9, 7, 5, 8, 6, 9, 4],\n  }, {\n    name: 'Reborn Kid',\n    data: [25, 12, 19, 32, 25, 24, 10],\n  }],\n  xaxis: {\n    categories: [2008, 2009, 2010, 2011, 2012, 2013, 2014],\n    labels: {\n      formatter(e: any) {\n        return `${e}K`;\n      },\n    },\n  },\n  yaxis: {\n    title: {\n      text: 0,\n    },\n  },\n  colors: ['#727cf5', '#0acf97', '#fa5c7c', '#6c757d', '#39afd1'],\n  tooltip: {\n    y: {\n      formatter(e: any) {\n        return `${e}K`;\n      },\n    },\n  },\n  fill: {\n    opacity: 1,\n  },\n  states: {\n    hover: {\n      filter: 'none',\n    },\n  },\n  legend: {\n    position: 'top',\n    horizontalAlign: 'center',\n  },\n  grid: {\n    borderColor: '#f1f3fa',\n  },\n};\n\nexport const fullStackedBarOptions = {\n  chart: {\n    height: 380,\n    type: 'bar',\n    stacked: !0,\n    stackType: '100%',\n    toolbar: {\n      show: !1,\n    },\n  },\n  plotOptions: {\n    bar: {\n      horizontal: !0,\n    },\n  },\n  stroke: {\n    width: 1,\n    colors: ['#fff'],\n  },\n  series: [{\n    name: 'Marine Sprite',\n    data: [44, 55, 41, 37, 22, 43, 21],\n  }, {\n    name: 'Striking Calf',\n    data: [53, 32, 33, 52, 13, 43, 32],\n  }, {\n    name: 'Tank Picture',\n    data: [12, 17, 11, 9, 15, 11, 20],\n  }, {\n    name: 'Bucket Slope',\n    data: [9, 7, 5, 8, 6, 9, 4],\n  }, {\n    name: 'Reborn Kid',\n    data: [25, 12, 19, 32, 25, 24, 10],\n  }],\n  xaxis: {\n    categories: [2008, 2009, 2010, 2011, 2012, 2013, 2014],\n  },\n  colors: ['#ffbc00', '#39afd1', '#6c757d', '#e3eaef', '#727cf5'],\n  tooltip: {\n    y: {\n      formatter(e: any) {\n        return `${e}K`;\n      },\n    },\n  },\n  fill: {\n    opacity: 1,\n  },\n  states: {\n    hover: {\n      filter: 'none',\n    },\n  },\n  legend: {\n    position: 'top',\n    horizontalAlign: 'center',\n  },\n  grid: {\n    borderColor: '#f1f3fa',\n  },\n};\n\nexport const negativeBarOptions = {\n  chart: {\n    height: 380,\n    type: 'bar',\n    stacked: !0,\n    toolbar: {\n      show: !1,\n    },\n  },\n  colors: ['#fa5c7c', '#0acf97'],\n  plotOptions: {\n    bar: {\n      horizontal: !0,\n      barHeight: '80%',\n    },\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  stroke: {\n    width: 1,\n    colors: ['#fff'],\n  },\n  series: [{\n    name: 'Males',\n    data: [0.4, 0.65, 0.76, 0.88, 1.5, 2.1, 2.9, 3.8, 3.9, 4.2, 4, 4.3, 4.1, 4.2, 4.5, 3.9, 3.5, 3],\n  }, {\n    name: 'Females',\n    data: [\n      -0.8, -1.05, -1.06, -1.18, -1.4, -2.2, -2.85, -3.7,\n      -3.96, -4.22, -4.3, -4.4, -4.1, -4, -4.1, -3.4, -3.1, -2.8,\n    ],\n  }],\n  grid: {\n    borderColor: '#f1f3fa',\n    xaxis: {\n      showLines: !1,\n    },\n  },\n  yaxis: {\n    min: -5,\n    max: 5,\n    title: {},\n  },\n  tooltip: {\n    shared: !1,\n    x: {\n      formatter(e: any) {\n        return e;\n      },\n    },\n    y: {\n      formatter(e: any) {\n        return `${Math.abs(e)}%`;\n      },\n    },\n  },\n  xaxis: {\n    categories: ['85+', '80-84', '75-79', '70-74', '65-69', '60-64', '55-59', '50-54', '45-49', '40-44', '35-39',\n      '30-34', '25-29', '20-24', '15-19', '10-14', '5-9', '0-4'],\n    title: {\n      text: 'Percent',\n    },\n    labels: {\n      formatter(e: any) {\n        return `${Math.abs(Math.round(e))}%`;\n      },\n    },\n  },\n};\n\nexport const patternBarOptions = {\n  chart: {\n    height: 380,\n    type: 'bar',\n    stacked: !0,\n    toolbar: {\n      show: !1,\n    },\n    shadow: {\n      enabled: !0,\n      blur: 1,\n      opacity: 0.5,\n    },\n  },\n  plotOptions: {\n    bar: {\n      horizontal: !0,\n      barHeight: '60%',\n    },\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  stroke: {\n    width: 2,\n  },\n  series: [{\n    name: 'Marine Sprite',\n    data: [44, 55, 41, 37, 22, 43, 21],\n  }, {\n    name: 'Striking Calf',\n    data: [53, 32, 33, 52, 13, 43, 32],\n  }, {\n    name: 'Tank Picture',\n    data: [12, 17, 11, 9, 15, 11, 20],\n  }, {\n    name: 'Bucket Slope',\n    data: [9, 7, 5, 8, 6, 9, 4],\n  }],\n  xaxis: {\n    categories: [2008, 2009, 2010, 2011, 2012, 2013, 2014],\n  },\n  yaxis: {\n    title: {\n      text: 0,\n    },\n  },\n  tooltip: {\n    shared: !1,\n    y: {\n      formatter(e: any) {\n        return `${e}K`;\n      },\n    },\n  },\n  colors: ['#727cf5', '#0acf97', '#fa5c7c', '#39afd1'],\n  fill: {\n    type: 'pattern',\n    opacity: 1,\n    pattern: {\n      style: ['circles', 'slantedLines', 'verticalLines', 'horizontalLines'],\n    },\n  },\n  states: {\n    hover: {\n      filter: 'none',\n    },\n  },\n  legend: {\n    position: 'right',\n  },\n  grid: {\n    borderColor: '#f1f3fa',\n  },\n  responsive: [{\n    breakpoint: 600,\n    options: {\n      legend: {\n        show: !1,\n      },\n    },\n  }],\n};\n\nconst labels = Array({ length: 39 }).map((e, t) => t + 1);\n\nexport const imageFillBarOptions = {\n  chart: {\n    height: 450,\n    type: 'bar',\n    toolbar: {\n      show: !1,\n    },\n    animations: {\n      enabled: !1,\n    },\n  },\n  plotOptions: {\n    bar: {\n      horizontal: !0,\n      barHeight: '100%',\n    },\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  stroke: {\n    colors: ['#fff'],\n    width: 0.2,\n  },\n  series: [{\n    name: 'coins',\n    data: [\n      2, 4, 3, 4, 3, 5, 5, 6.5, 6, 5, 4, 5, 8, 7, 7,\n      8, 8, 10, 9, 9, 12, 12, 11, 12, 13, 14, 16, 14, 15,\n      17, 19, 21,\n    ],\n  }],\n  labels,\n  yaxis: {\n    axisBorder: {\n      show: !1,\n    },\n    axisTicks: {\n      show: !1,\n    },\n    labels: {\n      show: !1,\n    },\n    title: {\n      text: 'Weight',\n    },\n  },\n  grid: {\n    position: 'back',\n    borderColor: '#f1f3fa',\n  },\n  fill: {\n    type: 'image',\n    opacity: 0.87,\n    image: {\n      src: [require('@/assets/small-4.jpg')],\n      width: 466,\n      height: 406,\n    },\n  },\n};\n"
  },
  {
    "path": "src/views/chart/apexCharts/column/index.less",
    "content": "@import '../../../../styles/var.less';\n.column-wrap {\n  padding: 20px;\n  .item-title {\n    color: @text-color;\n    font-size: 16px;\n    text-transform: uppercase;\n  }\n  .ant-card {\n    margin-bottom: 20px;\n  }\n}"
  },
  {
    "path": "src/views/chart/apexCharts/column/index.tsx",
    "content": "import { Component, Vue } from 'vue-property-decorator';\nimport { Row, Col, Card } from 'ant-design-vue';\nimport { loadApexCharts } from '@/utils/index';\n\nimport {\n  basicColumnOptions,\n  datalabelsColumnOptions,\n  stackedColumnOptions,\n  fullStackedColumnOptions,\n  rotateLabelsColumnOptions,\n  negativeValueColumnOptions,\n  distributedColumnOptions,\n} from './params';\n\nimport './index.less';\n\n@Component({\n  name: 'Column',\n  components: {\n    'a-row': Row,\n    'a-col': Col,\n    'a-card': Card,\n  },\n})\nexport default class Column extends Vue {\n  itemLayout = {\n    xxl: 12,\n    xl: 12,\n    md: 12,\n    sm: 24,\n    xs: 24,\n  }\n\n  basicColumnChart: any = null;\n\n  datalabelsColumnChart: any = null;\n\n  stackedColumnChart: any = null;\n\n  fullStackedColumnChart: any = null;\n\n  rotateLabelsColumnChart: any = null;\n\n  negativeValueColumnChart: any = null;\n\n  distributedColumnChart: any = null;\n\n  mounted() {\n    loadApexCharts().then(() => {\n      this.basicColumnChart = new window.ApexCharts(\n        document.querySelector('#basic-column'),\n        basicColumnOptions,\n      );\n      this.basicColumnChart.render();\n      this.datalabelsColumnChart = new window.ApexCharts(\n        document.querySelector('#datalabels-column'),\n        datalabelsColumnOptions,\n      );\n      this.datalabelsColumnChart.render();\n      this.stackedColumnChart = new window.ApexCharts(\n        document.querySelector('#stacked-column'),\n        stackedColumnOptions,\n      );\n      this.stackedColumnChart.render();\n      this.fullStackedColumnChart = new window.ApexCharts(\n        document.querySelector('#full-stacked-column'),\n        fullStackedColumnOptions,\n      );\n      this.fullStackedColumnChart.render();\n      this.rotateLabelsColumnChart = new window.ApexCharts(\n        document.querySelector('#rotate-labels-column'),\n        rotateLabelsColumnOptions,\n      );\n      this.rotateLabelsColumnChart.render();\n      this.negativeValueColumnChart = new window.ApexCharts(\n        document.querySelector('#negative-value-column'),\n        negativeValueColumnOptions,\n      );\n      this.negativeValueColumnChart.render();\n      this.distributedColumnChart = new window.ApexCharts(\n        document.querySelector('#distributed-column'),\n        distributedColumnOptions,\n      );\n      this.distributedColumnChart.render();\n    });\n  }\n\n  render() {\n    return (\n      <div class=\"column-wrap\">\n        <a-row gutter={{ xs: 8, md: 12, xl: 20 }}>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">basic-column</h2>\n              <div id=\"basic-column\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">datalabels-column</h2>\n              <div id=\"datalabels-column\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">stacked-column</h2>\n              <div id=\"stacked-column\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">full-stacked-column</h2>\n              <div id=\"full-stacked-column\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">rotate-labels-column</h2>\n              <div id=\"rotate-labels-column\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">negative-value-column</h2>\n              <div id=\"negative-value-column\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">distributed-column</h2>\n              <div id=\"distributed-column\"></div>\n            </a-card>\n          </a-col>\n        </a-row>\n      </div>\n    );\n  }\n}\n"
  },
  {
    "path": "src/views/chart/apexCharts/column/params.ts",
    "content": "export const basicColumnOptions = {\n  chart: {\n    height: 380,\n    type: 'bar',\n    toolbar: {\n      show: !1,\n    },\n  },\n  plotOptions: {\n    bar: {\n      horizontal: !1,\n      endingShape: 'rounded',\n      columnWidth: '55%',\n    },\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  stroke: {\n    show: !0,\n    width: 2,\n    colors: ['transparent'],\n  },\n  colors: ['#727cf5', '#0acf97', '#fa5c7c'],\n  series: [{\n    name: 'Net Profit',\n    data: [44, 55, 57, 56, 61, 58, 63, 60, 66],\n  }, {\n    name: 'Revenue',\n    data: [76, 85, 101, 98, 87, 105, 91, 114, 94],\n  }, {\n    name: 'Free Cash Flow',\n    data: [35, 41, 36, 26, 45, 48, 52, 53, 41],\n  }],\n  xaxis: {\n    categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct'],\n  },\n  yaxis: {\n    title: {\n      text: '$ (thousands)',\n    },\n  },\n  fill: {\n    opacity: 1,\n  },\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n  tooltip: {\n    y: {\n      formatter(o: any) {\n        return `$ ${o} thousands`;\n      },\n    },\n  },\n};\n\nexport const datalabelsColumnOptions = {\n  chart: {\n    height: 380,\n    type: 'bar',\n    toolbar: {\n      show: !1,\n    },\n  },\n  plotOptions: {\n    bar: {\n      dataLabels: {\n        position: 'top',\n      },\n    },\n  },\n  dataLabels: {\n    enabled: !0,\n    formatter(o: any) {\n      return `${o}%`;\n    },\n    offsetY: -20,\n    style: {\n      fontSize: '12px',\n      colors: ['#304758'],\n    },\n  },\n  colors: ['#727cf5'],\n  series: [{\n    name: 'Inflation',\n    data: [2.3, 3.1, 4, 10.1, 4, 3.6, 3.2, 2.3, 1.4, 0.8, 0.5, 0.2],\n  }],\n  xaxis: {\n    categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n    position: 'top',\n    labels: {\n      offsetY: -18,\n    },\n    axisBorder: {\n      show: !1,\n    },\n    axisTicks: {\n      show: !1,\n    },\n    crosshairs: {\n      fill: {\n        type: 'gradient',\n        gradient: {\n          colorFrom: '#D8E3F0',\n          colorTo: '#BED1E6',\n          stops: [0, 100],\n          opacityFrom: 0.4,\n          opacityTo: 0.5,\n        },\n      },\n    },\n    tooltip: {\n      enabled: !0,\n      offsetY: -35,\n    },\n  },\n  fill: {\n    gradient: {\n      enabled: !1,\n      shade: 'light',\n      type: 'horizontal',\n      shadeIntensity: 0.25,\n      gradientToColors: 0,\n      inverseColors: !0,\n      opacityFrom: 1,\n      opacityTo: 1,\n      stops: [50, 0, 100, 100],\n    },\n  },\n  yaxis: {\n    axisBorder: {\n      show: !1,\n    },\n    axisTicks: {\n      show: !1,\n    },\n    labels: {\n      show: !1,\n      formatter(o: any) {\n        return `${o}%`;\n      },\n    },\n  },\n  title: {\n    text: 'Monthly Inflation in Argentina, 2002',\n    floating: !0,\n    offsetY: 350,\n    align: 'center',\n    style: {\n      color: '#444',\n    },\n  },\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n};\n\nexport const stackedColumnOptions = {\n  chart: {\n    height: 380,\n    type: 'bar',\n    stacked: !0,\n    toolbar: {\n      show: !1,\n    },\n  },\n  plotOptions: {\n    bar: {\n      horizontal: !1,\n      columnWidth: '50%',\n    },\n  },\n  series: [{\n    name: 'Product A',\n    data: [44, 55, 41, 67, 22, 43, 21, 49],\n  }, {\n    name: 'Product B',\n    data: [13, 23, 20, 8, 13, 27, 33, 12],\n  }, {\n    name: 'Product C',\n    data: [11, 17, 15, 15, 21, 14, 15, 13],\n  }],\n  xaxis: {\n    categories: ['2011 Q1', '2011 Q2', '2011 Q3', '2011 Q4', '2012 Q1', '2012 Q2', '2012 Q3', '2012 Q4'],\n  },\n  colors: ['#39afd1', '#ffbc00', '#e3eaef'],\n  fill: {\n    opacity: 1,\n  },\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n};\n\nexport const fullStackedColumnOptions = {\n  chart: {\n    height: 380,\n    type: 'bar',\n    stacked: !0,\n    stackType: '100%',\n    toolbar: {\n      show: !1,\n    },\n  },\n  plotOptions: {\n    bar: {\n      columnWidth: '50%',\n    },\n  },\n  series: [{\n    name: 'Product A',\n    data: [44, 55, 41, 67, 22, 43, 21, 49],\n  }, {\n    name: 'Product B',\n    data: [13, 23, 20, 8, 13, 27, 33, 12],\n  }, {\n    name: 'Product C',\n    data: [11, 17, 15, 15, 21, 14, 15, 13],\n  }],\n  xaxis: {\n    categories: ['2011 Q1', '2011 Q2', '2011 Q3', '2011 Q4', '2012 Q1', '2012 Q2', '2012 Q3', '2012 Q4'],\n  },\n  fill: {\n    opacity: 1,\n  },\n  colors: ['#39afd1', '#0acf97', '#e3eaef'],\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n};\n\nexport const rotateLabelsColumnOptions = {\n  annotations: {\n    points: [{\n      x: 'Bananas',\n      seriesIndex: 0,\n      label: {\n        borderColor: '#727cf5',\n        offsetY: 0,\n        style: {\n          color: '#fff',\n          background: '#727cf5',\n        },\n        text: 'Bananas are good',\n      },\n    }],\n  },\n  chart: {\n    height: 380,\n    type: 'bar',\n    toolbar: {\n      show: !1,\n    },\n  },\n  plotOptions: {\n    bar: {\n      columnWidth: '50%',\n      endingShape: 'rounded',\n    },\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  stroke: {\n    width: 2,\n  },\n  colors: ['#fa5c7c'],\n  series: [{\n    name: 'Servings',\n    data: [44, 55, 41, 67, 22, 43, 21, 33, 45, 31, 87, 65, 35],\n  }],\n  grid: {\n    row: {\n      colors: ['#f1f3fa', 'transparent'],\n    },\n    borderColor: '#f1f3fa',\n  },\n  xaxis: {\n    labels: {\n      rotate: -45,\n    },\n    categories: ['Apples', 'Oranges', 'Strawberries', 'Pineapples', 'Mangoes', 'Bananas', 'Blackberries', 'Pears',\n      'Watermelons', 'Cherries', 'Pomegranates', 'Tangerines', 'Papayas'],\n  },\n  yaxis: {\n    title: {\n      text: 'Servings',\n    },\n  },\n  fill: {\n    type: 'gradient',\n    gradient: {\n      shade: 'light',\n      type: 'horizontal',\n      shadeIntensity: 0.25,\n      gradientToColors: 0,\n      inverseColors: !0,\n      opacityFrom: 0.85,\n      opacityTo: 0.85,\n      stops: [50, 0, 100],\n    },\n  },\n};\n\nexport const negativeValueColumnOptions = {\n  chart: {\n    height: 380,\n    type: 'bar',\n    toolbar: {\n      show: !1,\n    },\n  },\n  plotOptions: {\n    bar: {\n      colors: {\n        ranges: [{\n          from: -100,\n          to: -46,\n          color: '#fa5c7c',\n        }, {\n          from: -45,\n          to: 0,\n          color: '#ffbc00',\n        }],\n      },\n      columnWidth: '80%',\n    },\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  colors: ['#727cf5'],\n  series: [{\n    name: 'Cash Flow',\n    data: [\n      1.45, 5.42, 5.9, -0.42, -12.6, -18.1, -18.2, -14.16,\n      -11.1, -6.09, 0.34, 3.88, 13.07, 5.8, 2, 7.37, 8.1,\n      13.57, 15.75, 17.1, 19.8, -27.03, -54.4, -47.2, -43.3,\n      -18.6, -48.6, -41.1, -39.6, -37.6, -29.4, -21.4, -2.4,\n    ],\n  }],\n  yaxis: {\n    title: {\n      text: 'Growth',\n    },\n    labels: {\n      formatter(o: any) {\n        return `${o.toFixed(0)}%`;\n      },\n    },\n  },\n  xaxis: {\n    categories: [\n      '2011-01-01', '2011-02-01', '2011-03-01', '2011-04-01', '2011-05-01', '2011-06-01', '2011-07-01',\n      '2011-08-01', '2011-09-01', '2011-10-01', '2011-11-01', '2011-12-01', '2012-01-01', '2012-02-01',\n      '2012-03-01', '2012-04-01', '2012-05-01', '2012-06-01', '2012-07-01', '2012-08-01', '2012-09-01',\n      '2012-10-01', '2012-11-01', '2012-12-01', '2013-01-01', '2013-02-01', '2013-03-01', '2013-04-01',\n      '2013-05-01', '2013-06-01', '2013-07-01', '2013-08-01', '2013-09-01',\n    ],\n    labels: {\n      rotate: -90,\n    },\n  },\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n};\n\nconst colors = ['#727cf5', '#6c757d', '#0acf97', '#fa5c7c', '#ffbc00', '#39afd1', '#e3eaef', '#313a46'];\nexport const distributedColumnOptions = {\n  chart: {\n    height: 380,\n    type: 'bar',\n    toolbar: {\n      show: !1,\n    },\n    events: {\n      click(o: any, e: any, t: any) {\n        console.log(o, e, t);\n      },\n    },\n  },\n  colors,\n  plotOptions: {\n    bar: {\n      columnWidth: '45%',\n      distributed: !0,\n    },\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  series: [{\n    data: [21, 22, 10, 28, 16, 21, 13, 30],\n  }],\n  xaxis: {\n    categories: ['John', 'Joe', 'Jake', 'Amber', 'Peter', 'Mary', 'David', 'Lily'],\n    labels: {\n      style: {\n        colors,\n        fontSize: '14px',\n      },\n    },\n  },\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n};\n"
  },
  {
    "path": "src/views/chart/apexCharts/index.tsx",
    "content": "import { Component, Vue } from 'vue-property-decorator';\n\n@Component({\n  name: 'ApexCharts',\n})\nexport default class ApexCharts extends Vue {\n  render() {\n    const { keepList } = this.$store.state.app;\n    return (\n      <keep-alive max={10} include={keepList}>\n        <router-view/>\n      </keep-alive>\n    );\n  }\n}\n"
  },
  {
    "path": "src/views/chart/apexCharts/line/dataSeries.ts",
    "content": "export const dataSeries = [\n  [{\n    date: '2014-01-01',\n    value: 20000000,\n  },\n  {\n    date: '2014-01-02',\n    value: 10379978,\n  },\n  {\n    date: '2014-01-03',\n    value: 30493749,\n  },\n  {\n    date: '2014-01-04',\n    value: 10785250,\n  },\n  {\n    date: '2014-01-05',\n    value: 33901904,\n  },\n  {\n    date: '2014-01-06',\n    value: 11576838,\n  },\n  {\n    date: '2014-01-07',\n    value: 14413854,\n  },\n  {\n    date: '2014-01-08',\n    value: 15177211,\n  },\n  {\n    date: '2014-01-09',\n    value: 16622100,\n  },\n  {\n    date: '2014-01-10',\n    value: 17381072,\n  },\n  {\n    date: '2014-01-11',\n    value: 18802310,\n  },\n  {\n    date: '2014-01-12',\n    value: 15531790,\n  },\n  {\n    date: '2014-01-13',\n    value: 15748881,\n  },\n  {\n    date: '2014-01-14',\n    value: 18706437,\n  },\n  {\n    date: '2014-01-15',\n    value: 19752685,\n  },\n  {\n    date: '2014-01-16',\n    value: 21016418,\n  },\n  {\n    date: '2014-01-17',\n    value: 25622924,\n  },\n  {\n    date: '2014-01-18',\n    value: 25337480,\n  },\n  {\n    date: '2014-01-19',\n    value: 22258882,\n  },\n  {\n    date: '2014-01-20',\n    value: 23829538,\n  },\n  {\n    date: '2014-01-21',\n    value: 24245689,\n  },\n  {\n    date: '2014-01-22',\n    value: 26429711,\n  },\n  {\n    date: '2014-01-23',\n    value: 26259017,\n  },\n  {\n    date: '2014-01-24',\n    value: 25396183,\n  },\n  {\n    date: '2014-01-25',\n    value: 23107346,\n  },\n  {\n    date: '2014-01-26',\n    value: 28659852,\n  },\n  {\n    date: '2014-01-27',\n    value: 25270783,\n  },\n  {\n    date: '2014-01-28',\n    value: 26270783,\n  },\n  {\n    date: '2014-01-29',\n    value: 27270783,\n  },\n  {\n    date: '2014-01-30',\n    value: 28270783,\n  },\n  {\n    date: '2014-01-31',\n    value: 29270783,\n  },\n  {\n    date: '2014-02-01',\n    value: 30270783,\n  },\n  {\n    date: '2014-02-02',\n    value: 31270783,\n  },\n  {\n    date: '2014-02-03',\n    value: 32270783,\n  },\n  {\n    date: '2014-02-04',\n    value: 33270783,\n  },\n  {\n    date: '2014-02-05',\n    value: 28270783,\n  },\n  {\n    date: '2014-02-06',\n    value: 27270783,\n  },\n  {\n    date: '2014-02-07',\n    value: 35270783,\n  },\n  {\n    date: '2014-02-08',\n    value: 34270783,\n  },\n  {\n    date: '2014-02-09',\n    value: 28270783,\n  },\n  {\n    date: '2014-02-10',\n    value: 35270783,\n  },\n  {\n    date: '2014-02-11',\n    value: 36270783,\n  },\n  {\n    date: '2014-02-12',\n    value: 34127078,\n  },\n  {\n    date: '2014-02-13',\n    value: 33124078,\n  },\n  {\n    date: '2014-02-14',\n    value: 36227078,\n  },\n  {\n    date: '2014-02-15',\n    value: 37827078,\n  },\n  {\n    date: '2014-02-16',\n    value: 36427073,\n  },\n  {\n    date: '2014-02-17',\n    value: 37570783,\n  },\n  {\n    date: '2014-02-18',\n    value: 38627073,\n  },\n  {\n    date: '2014-02-19',\n    value: 37727078,\n  },\n  {\n    date: '2014-02-20',\n    value: 38827073,\n  },\n  {\n    date: '2014-02-21',\n    value: 40927078,\n  },\n  {\n    date: '2014-02-22',\n    value: 41027078,\n  },\n  {\n    date: '2014-02-23',\n    value: 42127073,\n  },\n  {\n    date: '2014-02-24',\n    value: 43220783,\n  },\n  {\n    date: '2014-02-25',\n    value: 44327078,\n  },\n  {\n    date: '2014-02-26',\n    value: 40427078,\n  },\n  {\n    date: '2014-02-27',\n    value: 41027078,\n  },\n  {\n    date: '2014-02-28',\n    value: 45627078,\n  },\n  {\n    date: '2014-03-01',\n    value: 44727078,\n  },\n  {\n    date: '2014-03-02',\n    value: 44227078,\n  },\n  {\n    date: '2014-03-03',\n    value: 45227078,\n  },\n  {\n    date: '2014-03-04',\n    value: 46027078,\n  },\n  {\n    date: '2014-03-05',\n    value: 46927078,\n  },\n  {\n    date: '2014-03-06',\n    value: 47027078,\n  },\n  {\n    date: '2014-03-07',\n    value: 46227078,\n  },\n  {\n    date: '2014-03-08',\n    value: 47027078,\n  },\n  {\n    date: '2014-03-09',\n    value: 48027078,\n  },\n  {\n    date: '2014-03-10',\n    value: 47027078,\n  },\n  {\n    date: '2014-03-11',\n    value: 47027078,\n  },\n  {\n    date: '2014-03-12',\n    value: 48017078,\n  },\n  {\n    date: '2014-03-13',\n    value: 48077078,\n  },\n  {\n    date: '2014-03-14',\n    value: 48087078,\n  },\n  {\n    date: '2014-03-15',\n    value: 48017078,\n  },\n  {\n    date: '2014-03-16',\n    value: 48047078,\n  },\n  {\n    date: '2014-03-17',\n    value: 48067078,\n  },\n  {\n    date: '2014-03-18',\n    value: 48077078,\n  },\n  {\n    date: '2014-03-19',\n    value: 48027074,\n  },\n  {\n    date: '2014-03-20',\n    value: 48927079,\n  },\n  {\n    date: '2014-03-21',\n    value: 48727071,\n  },\n  {\n    date: '2014-03-22',\n    value: 48127072,\n  },\n  {\n    date: '2014-03-23',\n    value: 48527072,\n  },\n  {\n    date: '2014-03-24',\n    value: 48627027,\n  },\n  {\n    date: '2014-03-25',\n    value: 48027040,\n  },\n  {\n    date: '2014-03-26',\n    value: 48027043,\n  },\n  {\n    date: '2014-03-27',\n    value: 48057022,\n  },\n  {\n    date: '2014-03-28',\n    value: 49057022,\n  },\n  {\n    date: '2014-03-29',\n    value: 50057022,\n  },\n  {\n    date: '2014-03-30',\n    value: 51057022,\n  },\n  {\n    date: '2014-03-31',\n    value: 52057022,\n  },\n  {\n    date: '2014-04-01',\n    value: 53057022,\n  },\n  {\n    date: '2014-04-02',\n    value: 54057022,\n  },\n  {\n    date: '2014-04-03',\n    value: 52057022,\n  },\n  {\n    date: '2014-04-04',\n    value: 55057022,\n  },\n  {\n    date: '2014-04-05',\n    value: 58270783,\n  },\n  {\n    date: '2014-04-06',\n    value: 56270783,\n  },\n  {\n    date: '2014-04-07',\n    value: 55270783,\n  },\n  {\n    date: '2014-04-08',\n    value: 58270783,\n  },\n  {\n    date: '2014-04-09',\n    value: 59270783,\n  },\n  {\n    date: '2014-04-10',\n    value: 60270783,\n  },\n  {\n    date: '2014-04-11',\n    value: 61270783,\n  },\n  {\n    date: '2014-04-12',\n    value: 62270783,\n  },\n  {\n    date: '2014-04-13',\n    value: 63270783,\n  },\n  {\n    date: '2014-04-14',\n    value: 64270783,\n  },\n  {\n    date: '2014-04-15',\n    value: 65270783,\n  },\n  {\n    date: '2014-04-16',\n    value: 66270783,\n  },\n  {\n    date: '2014-04-17',\n    value: 67270783,\n  },\n  {\n    date: '2014-04-18',\n    value: 68270783,\n  },\n  {\n    date: '2014-04-19',\n    value: 69270783,\n  },\n  {\n    date: '2014-04-20',\n    value: 70270783,\n  },\n  {\n    date: '2014-04-21',\n    value: 71270783,\n  },\n  {\n    date: '2014-04-22',\n    value: 72270783,\n  },\n  {\n    date: '2014-04-23',\n    value: 73270783,\n  },\n  {\n    date: '2014-04-24',\n    value: 74270783,\n  },\n  {\n    date: '2014-04-25',\n    value: 75270783,\n  },\n  {\n    date: '2014-04-26',\n    value: 76660783,\n  },\n  {\n    date: '2014-04-27',\n    value: 77270783,\n  },\n  {\n    date: '2014-04-28',\n    value: 78370783,\n  },\n  {\n    date: '2014-04-29',\n    value: 79470783,\n  },\n  {\n    date: '2014-04-30',\n    value: 80170783,\n  },\n  ],\n  [{\n    date: '2014-01-01',\n    value: 150000000,\n  },\n  {\n    date: '2014-01-02',\n    value: 160379978,\n  },\n  {\n    date: '2014-01-03',\n    value: 170493749,\n  },\n  {\n    date: '2014-01-04',\n    value: 160785250,\n  },\n  {\n    date: '2014-01-05',\n    value: 167391904,\n  },\n  {\n    date: '2014-01-06',\n    value: 161576838,\n  },\n  {\n    date: '2014-01-07',\n    value: 161413854,\n  },\n  {\n    date: '2014-01-08',\n    value: 152177211,\n  },\n  {\n    date: '2014-01-09',\n    value: 143762210,\n  },\n  {\n    date: '2014-01-10',\n    value: 144381072,\n  },\n  {\n    date: '2014-01-11',\n    value: 154352310,\n  },\n  {\n    date: '2014-01-12',\n    value: 165531790,\n  },\n  {\n    date: '2014-01-13',\n    value: 175748881,\n  },\n  {\n    date: '2014-01-14',\n    value: 187064037,\n  },\n  {\n    date: '2014-01-15',\n    value: 197520685,\n  },\n  {\n    date: '2014-01-16',\n    value: 210176418,\n  },\n  {\n    date: '2014-01-17',\n    value: 196122924,\n  },\n  {\n    date: '2014-01-18',\n    value: 207337480,\n  },\n  {\n    date: '2014-01-19',\n    value: 200258882,\n  },\n  {\n    date: '2014-01-20',\n    value: 186829538,\n  },\n  {\n    date: '2014-01-21',\n    value: 192456897,\n  },\n  {\n    date: '2014-01-22',\n    value: 204299711,\n  },\n  {\n    date: '2014-01-23',\n    value: 192759017,\n  },\n  {\n    date: '2014-01-24',\n    value: 203596183,\n  },\n  {\n    date: '2014-01-25',\n    value: 208107346,\n  },\n  {\n    date: '2014-01-26',\n    value: 196359852,\n  },\n  {\n    date: '2014-01-27',\n    value: 192570783,\n  },\n  {\n    date: '2014-01-28',\n    value: 177967768,\n  },\n  {\n    date: '2014-01-29',\n    value: 190632803,\n  },\n  {\n    date: '2014-01-30',\n    value: 203725316,\n  },\n  {\n    date: '2014-01-31',\n    value: 218226177,\n  },\n  {\n    date: '2014-02-01',\n    value: 210698669,\n  },\n  {\n    date: '2014-02-02',\n    value: 217640656,\n  },\n  {\n    date: '2014-02-03',\n    value: 216142362,\n  },\n  {\n    date: '2014-02-04',\n    value: 201410971,\n  },\n  {\n    date: '2014-02-05',\n    value: 196704289,\n  },\n  {\n    date: '2014-02-06',\n    value: 190436945,\n  },\n  {\n    date: '2014-02-07',\n    value: 178891686,\n  },\n  {\n    date: '2014-02-08',\n    value: 171613962,\n  },\n  {\n    date: '2014-02-09',\n    value: 157579773,\n  },\n  {\n    date: '2014-02-10',\n    value: 158677098,\n  },\n  {\n    date: '2014-02-11',\n    value: 147129977,\n  },\n  {\n    date: '2014-02-12',\n    value: 151561876,\n  },\n  {\n    date: '2014-02-13',\n    value: 151627421,\n  },\n  {\n    date: '2014-02-14',\n    value: 143543872,\n  },\n  {\n    date: '2014-02-15',\n    value: 136581057,\n  },\n  {\n    date: '2014-02-16',\n    value: 135560715,\n  },\n  {\n    date: '2014-02-17',\n    value: 122625263,\n  },\n  {\n    date: '2014-02-18',\n    value: 112091484,\n  },\n  {\n    date: '2014-02-19',\n    value: 98810329,\n  },\n  {\n    date: '2014-02-20',\n    value: 99882912,\n  },\n  {\n    date: '2014-02-21',\n    value: 94943095,\n  },\n  {\n    date: '2014-02-22',\n    value: 104875743,\n  },\n  {\n    date: '2014-02-23',\n    value: 116383678,\n  },\n  {\n    date: '2014-02-24',\n    value: 125028841,\n  },\n  {\n    date: '2014-02-25',\n    value: 123967310,\n  },\n  {\n    date: '2014-02-26',\n    value: 133167029,\n  },\n  {\n    date: '2014-02-27',\n    value: 128577263,\n  },\n  {\n    date: '2014-02-28',\n    value: 115836969,\n  },\n  {\n    date: '2014-03-01',\n    value: 119264529,\n  },\n  {\n    date: '2014-03-02',\n    value: 109363374,\n  },\n  {\n    date: '2014-03-03',\n    value: 113985628,\n  },\n  {\n    date: '2014-03-04',\n    value: 114650999,\n  },\n  {\n    date: '2014-03-05',\n    value: 110866108,\n  },\n  {\n    date: '2014-03-06',\n    value: 96473454,\n  },\n  {\n    date: '2014-03-07',\n    value: 104075886,\n  },\n  {\n    date: '2014-03-08',\n    value: 103568384,\n  },\n  {\n    date: '2014-03-09',\n    value: 101534883,\n  },\n  {\n    date: '2014-03-10',\n    value: 115825447,\n  },\n  {\n    date: '2014-03-11',\n    value: 126133916,\n  },\n  {\n    date: '2014-03-12',\n    value: 116502109,\n  },\n  {\n    date: '2014-03-13',\n    value: 130169411,\n  },\n  {\n    date: '2014-03-14',\n    value: 124296886,\n  },\n  {\n    date: '2014-03-15',\n    value: 126347399,\n  },\n  {\n    date: '2014-03-16',\n    value: 131483669,\n  },\n  {\n    date: '2014-03-17',\n    value: 142811333,\n  },\n  {\n    date: '2014-03-18',\n    value: 129675396,\n  },\n  {\n    date: '2014-03-19',\n    value: 115514483,\n  },\n  {\n    date: '2014-03-20',\n    value: 117630630,\n  },\n  {\n    date: '2014-03-21',\n    value: 122340239,\n  },\n  {\n    date: '2014-03-22',\n    value: 132349091,\n  },\n  {\n    date: '2014-03-23',\n    value: 125613305,\n  },\n  {\n    date: '2014-03-24',\n    value: 135592466,\n  },\n  {\n    date: '2014-03-25',\n    value: 123408762,\n  },\n  {\n    date: '2014-03-26',\n    value: 111991454,\n  },\n  {\n    date: '2014-03-27',\n    value: 116123955,\n  },\n  {\n    date: '2014-03-28',\n    value: 112817214,\n  },\n  {\n    date: '2014-03-29',\n    value: 113029590,\n  },\n  {\n    date: '2014-03-30',\n    value: 108753398,\n  },\n  {\n    date: '2014-03-31',\n    value: 99383763,\n  },\n  {\n    date: '2014-04-01',\n    value: 100151737,\n  },\n  {\n    date: '2014-04-02',\n    value: 94985209,\n  },\n  {\n    date: '2014-04-03',\n    value: 82913669,\n  },\n  {\n    date: '2014-04-04',\n    value: 78748268,\n  },\n  {\n    date: '2014-04-05',\n    value: 63829135,\n  },\n  {\n    date: '2014-04-06',\n    value: 78694727,\n  },\n  {\n    date: '2014-04-07',\n    value: 80868994,\n  },\n  {\n    date: '2014-04-08',\n    value: 93799013,\n  },\n  {\n    date: '2014-04-09',\n    value: 99042416,\n  },\n  {\n    date: '2014-04-10',\n    value: 97298692,\n  },\n  {\n    date: '2014-04-11',\n    value: 83353499,\n  },\n  {\n    date: '2014-04-12',\n    value: 71248129,\n  },\n  {\n    date: '2014-04-13',\n    value: 75253744,\n  },\n  {\n    date: '2014-04-14',\n    value: 68976648,\n  },\n  {\n    date: '2014-04-15',\n    value: 71002284,\n  },\n  {\n    date: '2014-04-16',\n    value: 75052401,\n  },\n  {\n    date: '2014-04-17',\n    value: 83894030,\n  },\n  {\n    date: '2014-04-18',\n    value: 90236528,\n  },\n  {\n    date: '2014-04-19',\n    value: 99739114,\n  },\n  {\n    date: '2014-04-20',\n    value: 96407136,\n  },\n  {\n    date: '2014-04-21',\n    value: 108323177,\n  },\n  {\n    date: '2014-04-22',\n    value: 101578914,\n  },\n  {\n    date: '2014-04-23',\n    value: 115877608,\n  },\n  {\n    date: '2014-04-24',\n    value: 112088857,\n  },\n  {\n    date: '2014-04-25',\n    value: 112071353,\n  },\n  {\n    date: '2014-04-26',\n    value: 101790062,\n  },\n  {\n    date: '2014-04-27',\n    value: 115003761,\n  },\n  {\n    date: '2014-04-28',\n    value: 120457727,\n  },\n  {\n    date: '2014-04-29',\n    value: 118253926,\n  },\n  {\n    date: '2014-04-30',\n    value: 117956992,\n  },\n  ],\n  [{\n    date: '2014-01-01',\n    value: 50000000,\n  },\n  {\n    date: '2014-01-02',\n    value: 60379978,\n  },\n  {\n    date: '2014-01-03',\n    value: 40493749,\n  },\n  {\n    date: '2014-01-04',\n    value: 60785250,\n  },\n  {\n    date: '2014-01-05',\n    value: 67391904,\n  },\n  {\n    date: '2014-01-06',\n    value: 61576838,\n  },\n  {\n    date: '2014-01-07',\n    value: 61413854,\n  },\n  {\n    date: '2014-01-08',\n    value: 82177211,\n  },\n  {\n    date: '2014-01-09',\n    value: 103762210,\n  },\n  {\n    date: '2014-01-10',\n    value: 84381072,\n  },\n  {\n    date: '2014-01-11',\n    value: 54352310,\n  },\n  {\n    date: '2014-01-12',\n    value: 65531790,\n  },\n  {\n    date: '2014-01-13',\n    value: 75748881,\n  },\n  {\n    date: '2014-01-14',\n    value: 47064037,\n  },\n  {\n    date: '2014-01-15',\n    value: 67520685,\n  },\n  {\n    date: '2014-01-16',\n    value: 60176418,\n  },\n  {\n    date: '2014-01-17',\n    value: 66122924,\n  },\n  {\n    date: '2014-01-18',\n    value: 57337480,\n  },\n  {\n    date: '2014-01-19',\n    value: 100258882,\n  },\n  {\n    date: '2014-01-20',\n    value: 46829538,\n  },\n  {\n    date: '2014-01-21',\n    value: 92456897,\n  },\n  {\n    date: '2014-01-22',\n    value: 94299711,\n  },\n  {\n    date: '2014-01-23',\n    value: 62759017,\n  },\n  {\n    date: '2014-01-24',\n    value: 103596183,\n  },\n  {\n    date: '2014-01-25',\n    value: 108107346,\n  },\n  {\n    date: '2014-01-26',\n    value: 66359852,\n  },\n  {\n    date: '2014-01-27',\n    value: 62570783,\n  },\n  {\n    date: '2014-01-28',\n    value: 77967768,\n  },\n  {\n    date: '2014-01-29',\n    value: 60632803,\n  },\n  {\n    date: '2014-01-30',\n    value: 103725316,\n  },\n  {\n    date: '2014-01-31',\n    value: 98226177,\n  },\n  {\n    date: '2014-02-01',\n    value: 60698669,\n  },\n  {\n    date: '2014-02-02',\n    value: 67640656,\n  },\n  {\n    date: '2014-02-03',\n    value: 66142362,\n  },\n  {\n    date: '2014-02-04',\n    value: 101410971,\n  },\n  {\n    date: '2014-02-05',\n    value: 66704289,\n  },\n  {\n    date: '2014-02-06',\n    value: 60436945,\n  },\n  {\n    date: '2014-02-07',\n    value: 78891686,\n  },\n  {\n    date: '2014-02-08',\n    value: 71613962,\n  },\n  {\n    date: '2014-02-09',\n    value: 107579773,\n  },\n  {\n    date: '2014-02-10',\n    value: 58677098,\n  },\n  {\n    date: '2014-02-11',\n    value: 87129977,\n  },\n  {\n    date: '2014-02-12',\n    value: 51561876,\n  },\n  {\n    date: '2014-02-13',\n    value: 51627421,\n  },\n  {\n    date: '2014-02-14',\n    value: 83543872,\n  },\n  {\n    date: '2014-02-15',\n    value: 66581057,\n  },\n  {\n    date: '2014-02-16',\n    value: 65560715,\n  },\n  {\n    date: '2014-02-17',\n    value: 62625263,\n  },\n  {\n    date: '2014-02-18',\n    value: 92091484,\n  },\n  {\n    date: '2014-02-19',\n    value: 48810329,\n  },\n  {\n    date: '2014-02-20',\n    value: 49882912,\n  },\n  {\n    date: '2014-02-21',\n    value: 44943095,\n  },\n  {\n    date: '2014-02-22',\n    value: 104875743,\n  },\n  {\n    date: '2014-02-23',\n    value: 96383678,\n  },\n  {\n    date: '2014-02-24',\n    value: 105028841,\n  },\n  {\n    date: '2014-02-25',\n    value: 63967310,\n  },\n  {\n    date: '2014-02-26',\n    value: 63167029,\n  },\n  {\n    date: '2014-02-27',\n    value: 68577263,\n  },\n  {\n    date: '2014-02-28',\n    value: 95836969,\n  },\n  {\n    date: '2014-03-01',\n    value: 99264529,\n  },\n  {\n    date: '2014-03-02',\n    value: 109363374,\n  },\n  {\n    date: '2014-03-03',\n    value: 93985628,\n  },\n  {\n    date: '2014-03-04',\n    value: 94650999,\n  },\n  {\n    date: '2014-03-05',\n    value: 90866108,\n  },\n  {\n    date: '2014-03-06',\n    value: 46473454,\n  },\n  {\n    date: '2014-03-07',\n    value: 84075886,\n  },\n  {\n    date: '2014-03-08',\n    value: 103568384,\n  },\n  {\n    date: '2014-03-09',\n    value: 101534883,\n  },\n  {\n    date: '2014-03-10',\n    value: 95825447,\n  },\n  {\n    date: '2014-03-11',\n    value: 66133916,\n  },\n  {\n    date: '2014-03-12',\n    value: 96502109,\n  },\n  {\n    date: '2014-03-13',\n    value: 80169411,\n  },\n  {\n    date: '2014-03-14',\n    value: 84296886,\n  },\n  {\n    date: '2014-03-15',\n    value: 86347399,\n  },\n  {\n    date: '2014-03-16',\n    value: 31483669,\n  },\n  {\n    date: '2014-03-17',\n    value: 82811333,\n  },\n  {\n    date: '2014-03-18',\n    value: 89675396,\n  },\n  {\n    date: '2014-03-19',\n    value: 95514483,\n  },\n  {\n    date: '2014-03-20',\n    value: 97630630,\n  },\n  {\n    date: '2014-03-21',\n    value: 62340239,\n  },\n  {\n    date: '2014-03-22',\n    value: 62349091,\n  },\n  {\n    date: '2014-03-23',\n    value: 65613305,\n  },\n  {\n    date: '2014-03-24',\n    value: 65592466,\n  },\n  {\n    date: '2014-03-25',\n    value: 63408762,\n  },\n  {\n    date: '2014-03-26',\n    value: 91991454,\n  },\n  {\n    date: '2014-03-27',\n    value: 96123955,\n  },\n  {\n    date: '2014-03-28',\n    value: 92817214,\n  },\n  {\n    date: '2014-03-29',\n    value: 93029590,\n  },\n  {\n    date: '2014-03-30',\n    value: 108753398,\n  },\n  {\n    date: '2014-03-31',\n    value: 49383763,\n  },\n  {\n    date: '2014-04-01',\n    value: 100151737,\n  },\n  {\n    date: '2014-04-02',\n    value: 44985209,\n  },\n  {\n    date: '2014-04-03',\n    value: 52913669,\n  },\n  {\n    date: '2014-04-04',\n    value: 48748268,\n  },\n  {\n    date: '2014-04-05',\n    value: 23829135,\n  },\n  {\n    date: '2014-04-06',\n    value: 58694727,\n  },\n  {\n    date: '2014-04-07',\n    value: 50868994,\n  },\n  {\n    date: '2014-04-08',\n    value: 43799013,\n  },\n  {\n    date: '2014-04-09',\n    value: 4042416,\n  },\n  {\n    date: '2014-04-10',\n    value: 47298692,\n  },\n  {\n    date: '2014-04-11',\n    value: 53353499,\n  },\n  {\n    date: '2014-04-12',\n    value: 71248129,\n  },\n  {\n    date: '2014-04-13',\n    value: 75253744,\n  },\n  {\n    date: '2014-04-14',\n    value: 68976648,\n  },\n  {\n    date: '2014-04-15',\n    value: 71002284,\n  },\n  {\n    date: '2014-04-16',\n    value: 75052401,\n  },\n  {\n    date: '2014-04-17',\n    value: 83894030,\n  },\n  {\n    date: '2014-04-18',\n    value: 50236528,\n  },\n  {\n    date: '2014-04-19',\n    value: 59739114,\n  },\n  {\n    date: '2014-04-20',\n    value: 56407136,\n  },\n  {\n    date: '2014-04-21',\n    value: 108323177,\n  },\n  {\n    date: '2014-04-22',\n    value: 101578914,\n  },\n  {\n    date: '2014-04-23',\n    value: 95877608,\n  },\n  {\n    date: '2014-04-24',\n    value: 62088857,\n  },\n  {\n    date: '2014-04-25',\n    value: 92071353,\n  },\n  {\n    date: '2014-04-26',\n    value: 81790062,\n  },\n  {\n    date: '2014-04-27',\n    value: 105003761,\n  },\n  {\n    date: '2014-04-28',\n    value: 100457727,\n  },\n  {\n    date: '2014-04-29',\n    value: 98253926,\n  },\n  {\n    date: '2014-04-30',\n    value: 67956992,\n  },\n  ],\n];\n"
  },
  {
    "path": "src/views/chart/apexCharts/line/index.less",
    "content": "@import '../../../../styles/var.less';\n.line-wrap {\n  padding: 20px;\n  .item-title {\n    color: @text-color;\n    font-size: 16px;\n    text-transform: uppercase;\n  }\n  .ant-card {\n    margin-bottom: 20px;\n  }\n}"
  },
  {
    "path": "src/views/chart/apexCharts/line/index.tsx",
    "content": "import { Component, Vue } from 'vue-property-decorator';\nimport { Row, Col, Card } from 'ant-design-vue';\nimport { loadApexCharts } from '@/utils/index';\n\nimport {\n  lineChartOptions,\n  lineChartDatalabelOptions,\n  lineChartZoomableOptions,\n  lineChartAnnotationsOptions,\n  lineChartSyncingOptions,\n  lineChartSyncing2Options,\n  lineChartGradientOptions,\n  lineChartMissingOptions,\n  lineChartDashedOptions,\n  lineChartRealtimedOptions,\n} from './params';\n\nimport './index.less';\n\n@Component({\n  name: 'Line',\n  components: {\n    'a-row': Row,\n    'a-col': Col,\n    'a-card': Card,\n  },\n})\nexport default class Line extends Vue {\n  itemLayout = {\n    xxl: 12,\n    xl: 12,\n    md: 12,\n    sm: 24,\n    xs: 24,\n  }\n\n  lineChart: any = null;\n\n  lineChartDatalabel: any = null;\n\n  lineChartZoomable: any = null;\n\n  lineChartAnnotationsChart: any = null;\n\n  lineChartSyncingChart: any = null;\n\n  lineChartSyncing2Chart: any = null;\n\n  lineChartGradientChart: any = null;\n\n  lineChartMissingChart: any = null;\n\n  lineChartDashedChart: any = null;\n\n  lineChartRealtimedChart: any = null;\n\n  timer: any = null;\n\n  mounted() {\n    loadApexCharts().then(() => {\n      this.lineChart = new window.ApexCharts(\n        document.querySelector('#line-chart'),\n        lineChartOptions,\n      );\n      this.lineChart.render();\n      this.lineChartDatalabel = new window.ApexCharts(\n        document.querySelector('#line-chart-datalabel'),\n        lineChartDatalabelOptions,\n      );\n      this.lineChartDatalabel.render();\n      this.lineChartZoomable = new window.ApexCharts(\n        document.querySelector('#line-chart-zoomable'),\n        lineChartZoomableOptions,\n      );\n      this.lineChartZoomable.render();\n      this.lineChartAnnotationsChart = new window.ApexCharts(\n        document.querySelector('#line-chart-annotations'),\n        lineChartAnnotationsOptions,\n      );\n      this.lineChartAnnotationsChart.render();\n      this.lineChartSyncingChart = new window.ApexCharts(\n        document.querySelector('#line-chart-syncing'),\n        lineChartSyncingOptions,\n      );\n      this.lineChartSyncingChart.render();\n      this.lineChartSyncing2Chart = new window.ApexCharts(\n        document.querySelector('#line-chart-syncing2'),\n        lineChartSyncing2Options,\n      );\n      this.lineChartSyncing2Chart.render();\n      this.lineChartGradientChart = new window.ApexCharts(\n        document.querySelector('#line-chart-gradient'),\n        lineChartGradientOptions,\n      );\n      this.lineChartGradientChart.render();\n      this.lineChartMissingChart = new window.ApexCharts(\n        document.querySelector('#line-chart-missing'),\n        lineChartMissingOptions,\n      );\n      this.lineChartMissingChart.render();\n      this.lineChartDashedChart = new window.ApexCharts(\n        document.querySelector('#line-chart-dashed'),\n        lineChartDashedOptions,\n      );\n      this.lineChartDashedChart.render();\n\n      this.lineChartRealtimedChart = new window.ApexCharts(\n        document.querySelector('#line-chart-realtimed'),\n        lineChartRealtimedOptions,\n      );\n      this.lineChartRealtimedChart.render();\n      this.timer = window.setInterval(() => {\n        this.lineChartRealtimedChart.appendData([{\n          data: [Math.floor((20 * Math.random()) + 20)],\n        }, {\n          data: [Math.floor((20 * Math.random()) + 20)],\n        }]);\n      }, 1e3);\n    });\n  }\n\n  beforeDestroy() {\n    window.clearInterval(this.timer);\n  }\n\n  render() {\n    return (\n      <div class=\"line-wrap\">\n        <a-row gutter={{ xs: 8, md: 12, xl: 20 }}>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">line-chart</h2>\n              <div id=\"line-chart\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">line-chart-datalabel</h2>\n              <div id=\"line-chart-datalabel\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">line-chart-zoomable</h2>\n              <div id=\"line-chart-zoomable\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">line-chart-annotations</h2>\n              <div id=\"line-chart-annotations\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">SYNCING CHARTS</h2>\n              <div id=\"line-chart-syncing2\"></div>\n              <div id=\"line-chart-syncing\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">line-chart-gradient</h2>\n              <div id=\"line-chart-gradient\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">line-chart-missing</h2>\n              <div id=\"line-chart-missing\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">line-chart-dashed</h2>\n              <div id=\"line-chart-dashed\"></div>\n            </a-card>\n          </a-col>\n          <a-col span={24}>\n            <a-card>\n              <h2 class=\"item-title\">line-chart-realtime</h2>\n              <div id=\"line-chart-realtimed\"></div>\n            </a-card>\n          </a-col>\n        </a-row>\n      </div>\n    );\n  }\n}\n"
  },
  {
    "path": "src/views/chart/apexCharts/line/params.ts",
    "content": "import { dataSeries } from './dataSeries';\n\nexport const lineChartOptions = {\n  chart: {\n    height: 380,\n    type: 'line',\n    zoom: {\n      enabled: !1,\n    },\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  colors: ['#ffbc00'],\n  stroke: {\n    width: [4],\n    curve: 'straight',\n  },\n  series: [{\n    name: 'Desktops',\n    data: [30, 41, 35, 51, 49, 62, 69, 91, 126],\n  }],\n  title: {\n    text: 'Product Trends by Month',\n    align: 'center',\n  },\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n  labels: [\n    '13 Nov 2017',\n    '14 Nov 2017',\n    '15 Nov 2017',\n    '16 Nov 2017',\n    '17 Nov 2017',\n    '20 Nov 2017',\n    '21 Nov 2017',\n    '22 Nov 2017',\n    '23 Nov 2017',\n    '24 Nov 2017',\n    '27 Nov 2017',\n    '28 Nov 2017',\n    '29 Nov 2017',\n    '30 Nov 2017',\n    '01 Dec 2017',\n    '04 Dec 2017',\n    '05 Dec 2017',\n    '06 Dec 2017',\n    '07 Dec 2017',\n    '08 Dec 2017',\n  ],\n  xaxis: {\n    categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep'],\n  },\n  responsive: [{\n    breakpoint: 600,\n    options: {\n      chart: {\n        toolbar: {\n          show: !1,\n        },\n      },\n      legend: {\n        show: !1,\n      },\n    },\n  }],\n};\n\nexport const lineChartDatalabelOptions = {\n  chart: {\n    height: 380,\n    type: 'line',\n    zoom: {\n      enabled: !1,\n    },\n    toolbar: {\n      show: !1,\n    },\n  },\n  colors: ['#727cf5', '#0acf97'],\n  dataLabels: {\n    enabled: !0,\n  },\n  stroke: {\n    width: [3, 3],\n    curve: 'smooth',\n  },\n  series: [{\n    name: 'High - 2018',\n    data: [28, 29, 33, 36, 32, 32, 33],\n  }, {\n    name: 'Low - 2018',\n    data: [12, 11, 14, 18, 17, 13, 13],\n  }],\n  title: {\n    text: 'Average High & Low Temperature',\n    align: 'left',\n  },\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n  markers: {\n    style: 'inverted',\n    size: 6,\n  },\n  xaxis: {\n    categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'],\n    title: {\n      text: 'Month',\n    },\n  },\n  yaxis: {\n    title: {\n      text: 'Temperature',\n    },\n    min: 5,\n    max: 40,\n  },\n  legend: {\n    position: 'top',\n    horizontalAlign: 'right',\n    floating: !0,\n    offsetY: -25,\n    offsetX: -5,\n  },\n  responsive: [{\n    breakpoint: 600,\n    options: {\n      chart: {\n        toolbar: {\n          show: !1,\n        },\n      },\n      legend: {\n        show: !1,\n      },\n    },\n  }],\n};\nlet ts2 = 14844186e5;\nconst dates: any = [];\nconst spikes = [5, -5, 3, -3, 8, -8];\n\nfor (let i = 0; i < 120; i++) {\n  const innerArr = [ts2 += 864e5, dataSeries[1][i].value];\n  dates.push(innerArr);\n}\nexport const lineChartZoomableOptions = {\n  chart: {\n    type: 'area',\n    stacked: !1,\n    height: 380,\n    zoom: {\n      enabled: !0,\n    },\n  },\n  plotOptions: {\n    line: {\n      curve: 'smooth',\n    },\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  stroke: {\n    width: [3],\n  },\n  series: [{\n    name: 'XYZ MOTORS',\n    data: dates,\n  }],\n  markers: {\n    size: 0,\n    style: 'full',\n  },\n  colors: ['#fa5c7c'],\n  title: {\n    text: 'Stock Price Movement',\n    align: 'left',\n  },\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n  fill: {\n    gradient: {\n      enabled: !0,\n      shadeIntensity: 1,\n      inverseColors: !1,\n      opacityFrom: 0.5,\n      opacityTo: 0.1,\n      stops: [0, 70, 80, 100],\n    },\n  },\n  yaxis: {\n    min: 2e7,\n    max: 25e7,\n    labels: {\n      formatter(e: any) {\n        return (e / 1e6).toFixed(0);\n      },\n    },\n    title: {\n      text: 'Price',\n    },\n  },\n  xaxis: {\n    type: 'datetime',\n  },\n  tooltip: {\n    shared: !1,\n    y: {\n      formatter(e: any) {\n        return (e / 1e6).toFixed(0);\n      },\n    },\n  },\n  responsive: [{\n    breakpoint: 600,\n    options: {\n      chart: {\n        toolbar: {\n          show: !1,\n        },\n      },\n      legend: {\n        show: !1,\n      },\n    },\n  }],\n};\n\nexport const lineChartAnnotationsOptions = {\n  annotations: {\n    yaxis: [{\n      y: 8200,\n      borderColor: '#0acf97',\n      label: {\n        borderColor: '#0acf97',\n        style: {\n          color: '#fff',\n          background: '#0acf97',\n        },\n        text: 'Support',\n      },\n    }],\n    xaxis: [{\n      x: new Date('23 Nov 2017').getTime(),\n      borderColor: '#775DD0',\n      label: {\n        borderColor: '#775DD0',\n        style: {\n          color: '#fff',\n          background: '#775DD0',\n        },\n        text: 'Anno Test',\n      },\n    }, {\n      x: new Date('03 Dec 2017').getTime(),\n      borderColor: '#ffbc00',\n      label: {\n        borderColor: '#ffbc00',\n        style: {\n          color: '#fff',\n          background: '#ffbc00',\n        },\n        orientation: 'horizontal',\n        text: 'New Beginning',\n      },\n    }],\n    points: [{\n      x: new Date('27 Nov 2017').getTime(),\n      y: 8506.9,\n      marker: {\n        size: 8,\n        fillColor: '#fff',\n        strokeColor: '#fa5c7c',\n        radius: 2,\n      },\n      label: {\n        borderColor: '#fa5c7c',\n        offsetY: 0,\n        style: {\n          color: '#fff',\n          background: '#fa5c7c',\n        },\n        text: 'Point Annotation',\n      },\n    }],\n  },\n  chart: {\n    height: 380,\n    type: 'line',\n    id: 'areachart-2',\n  },\n  colors: ['#39afd1'],\n  dataLabels: {\n    enabled: !1,\n  },\n  stroke: {\n    width: [3],\n    curve: 'straight',\n  },\n  series: [{\n    data: [\n      8107.85,\n      8128.0,\n      8122.9,\n      8165.5,\n      8340.7,\n      8423.7,\n      8423.5,\n      8514.3,\n      8481.85,\n      8487.7,\n      8506.9,\n      8626.2,\n      8668.95,\n      8602.3,\n      8607.55,\n      8512.9,\n      8496.25,\n      8600.65,\n      8881.1,\n      9340.85,\n    ],\n  }],\n  title: {\n    text: 'Line with Annotations',\n    align: 'left',\n  },\n  labels: [\n    '13 Nov 2017',\n    '14 Nov 2017',\n    '15 Nov 2017',\n    '16 Nov 2017',\n    '17 Nov 2017',\n    '20 Nov 2017',\n    '21 Nov 2017',\n    '22 Nov 2017',\n    '23 Nov 2017',\n    '24 Nov 2017',\n    '27 Nov 2017',\n    '28 Nov 2017',\n    '29 Nov 2017',\n    '30 Nov 2017',\n    '01 Dec 2017',\n    '04 Dec 2017',\n    '05 Dec 2017',\n    '06 Dec 2017',\n    '07 Dec 2017',\n    '08 Dec 2017',\n  ],\n  xaxis: {\n    type: 'datetime',\n  },\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n  responsive: [{\n    breakpoint: 600,\n    options: {\n      chart: {\n        toolbar: {\n          show: !1,\n        },\n      },\n      legend: {\n        show: !1,\n      },\n    },\n  }],\n};\n\nfunction generateDayWiseTimeSeries(e: any, t: any, a: any) {\n  const r = [];\n  for (let o = 0; o < t;) {\n    const n = e;\n    const i = Math.floor(Math.random() * ((a.max - a.min) + 1)) + a.min;\n    r.push([n, i]);\n    e += 864e5;\n    o++;\n  }\n  return r;\n}\n\nexport const lineChartSyncingOptions = {\n  chart: {\n    type: 'line',\n    height: 160,\n    toolbar: {\n      tools: {\n        zoom: !1,\n        pan: !1,\n        selection: !1,\n        download: !1,\n        reset: !0,\n      },\n    },\n  },\n  colors: ['#727cf5'],\n  stroke: {\n    width: [3],\n    curve: 'straight',\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  fill: {\n    opacity: 1,\n  },\n  series: [{\n    data: generateDayWiseTimeSeries(new Date('11 Feb 2017').getTime(), 20, {\n      min: 10,\n      max: 30,\n    }),\n  }],\n  xaxis: {\n    type: 'datetime',\n  },\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n};\n\nexport const lineChartSyncing2Options = {\n  chart: {\n    height: 200,\n    type: 'line',\n    stacked: !0,\n    scroller: {\n      enabled: !0,\n      thumb: {\n        height: 4,\n        background: '#0acf97',\n      },\n      scrollButtons: {\n        enabled: !0,\n        size: 6,\n        borderWidth: 2,\n        borderColor: '#0acf97',\n        fillColor: '#0acf97',\n      },\n    },\n    selection: {\n      xaxis: {\n        min: new Date('19 Feb 2017').getTime(),\n        max: new Date('26 Feb 2017').getTime(),\n      },\n    },\n    // events: {\n    //   selection(e, t) {\n    //     chartline2.updateOptions({\n    //       xaxis: {\n    //         min: t.xaxis.min,\n    //         max: t.xaxis.max,\n    //       },\n    //     }, !1, !1);\n    //   },\n    //   updated(e, t) {\n    //     chartline2.updateOptions({\n    //       xaxis: {\n    //         min: t.config.xaxis.min,\n    //         max: t.config.xaxis.max,\n    //       },\n    //     }, !1, !1);\n    //   },\n    // },\n  },\n  colors: ['#6c757d'],\n  dataLabels: {\n    enabled: !1,\n  },\n  stroke: {\n    width: [3],\n    curve: 'smooth',\n  },\n  series: [{\n    data: generateDayWiseTimeSeries(new Date('11 Feb 2017').getTime(), 20, {\n      min: 10,\n      max: 60,\n    }),\n  }],\n  fill: {\n    gradient: {\n      enabled: !0,\n      opacityFrom: 0.6,\n      opacityTo: 0.8,\n    },\n  },\n  legend: {\n    position: 'top',\n    horizontalAlign: 'left',\n  },\n  xaxis: {\n    type: 'datetime',\n  },\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n};\n\nexport const lineChartGradientOptions = {\n  chart: {\n    height: 374,\n    type: 'line',\n    shadow: {\n      enabled: !1,\n      color: '#bbb',\n      top: 3,\n      left: 2,\n      blur: 3,\n      opacity: 1,\n    },\n  },\n  stroke: {\n    width: 5,\n    curve: 'smooth',\n  },\n  series: [{\n    name: 'Likes',\n    data: [4, 3, 10, 9, 29, 19, 22, 9, 12, 7, 19, 5, 13, 9, 17, 2, 7, 5],\n  }],\n  xaxis: {\n    type: 'datetime',\n    categories: ['1/11/2000', '2/11/2000', '3/11/2000', '4/11/2000', '5/11/2000', '6/11/2000', '7/11/2000',\n      '8/11/2000', '9/11/2000', '10/11/2000', '11/11/2000', '12/11/2000', '1/11/2001', '2/11/2001',\n      '3/11/2001', '4/11/2001', '5/11/2001', '6/11/2001'],\n  },\n  title: {\n    text: 'Social Media',\n    align: 'left',\n    style: {\n      fontSize: '16px',\n      color: '#666',\n    },\n  },\n  fill: {\n    type: 'gradient',\n    gradient: {\n      shade: 'dark',\n      gradientToColors: ['#fa5c7c'],\n      shadeIntensity: 1,\n      type: 'horizontal',\n      opacityFrom: 1,\n      opacityTo: 1,\n      stops: [0, 100, 100, 100],\n    },\n  },\n  markers: {\n    size: 4,\n    opacity: 0.9,\n    colors: ['#ffbc00'],\n    strokeColor: '#fff',\n    strokeWidth: 2,\n    style: 'inverted',\n    hover: {\n      size: 7,\n    },\n  },\n  yaxis: {\n    min: -10,\n    max: 40,\n    title: {\n      text: 'Engagement',\n    },\n  },\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n  responsive: [{\n    breakpoint: 600,\n    options: {\n      chart: {\n        toolbar: {\n          show: !1,\n        },\n      },\n      legend: {\n        show: !1,\n      },\n    },\n  }],\n};\n\n\nexport const lineChartMissingOptions = {\n  chart: {\n    height: 380,\n    type: 'line',\n    zoom: {\n      enabled: !1,\n    },\n    animations: {\n      enabled: !1,\n    },\n  },\n  stroke: {\n    width: [5, 5, 4],\n    curve: 'straight',\n  },\n  series: [{\n    name: 'Peter',\n    data: [5, 5, 10, 8, 7, 5, 4, null, null, null, 10, 10, 7, 8, 6, 9],\n  }, {\n    name: 'Johnny',\n    data: [10, 15, null, 12, null, 10, 12, 15, null, null, 12, null, 14, null, null, null],\n  }, {\n    name: 'David',\n    data: [null, null, null, null, 3, 4, 1, 3, 4, 6, 7, 9, 5, null, null, null],\n  }],\n  colors: ['#ffbc00', '#0acf97', '#39afd1'],\n  labels: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n};\n\nexport const lineChartDashedOptions = {\n  chart: {\n    height: 380,\n    type: 'line',\n    zoom: {\n      enabled: !1,\n    },\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  stroke: {\n    width: [3, 5, 3],\n    curve: 'straight',\n    dashArray: [0, 8, 5],\n  },\n  series: [{\n    name: 'Session Duration',\n    data: [45, 52, 38, 24, 33, 26, 21, 20, 6, 8, 15, 10],\n  }, {\n    name: 'Page Views',\n    data: [35, 41, 62, 42, 13, 18, 29, 37, 36, 51, 32, 35],\n  }, {\n    name: 'Total Visits',\n    data: [87, 57, 74, 99, 75, 38, 62, 47, 82, 56, 45, 47],\n  }],\n  markers: {\n    size: 0,\n    style: 'hollow',\n  },\n  xaxis: {\n    categories: ['01 Jan', '02 Jan', '03 Jan', '04 Jan', '05 Jan', '06 Jan', '07 Jan', '08 Jan', '09 Jan', '10 Jan',\n      '11 Jan', '12 Jan'],\n  },\n  colors: ['#6c757d', '#0acf97', '#39afd1'],\n  tooltip: {\n    y: {\n      title: {\n        formatter(e: any) {\n          if (e === 'Session Duration') {\n            return `${e} (mins)`;\n          }\n          if (e === 'Page Views') {\n            return `${e} per session`;\n          }\n          return e;\n        },\n      },\n    },\n  },\n  grid: {\n    borderColor: '#f1f3fa',\n  },\n};\n\nexport const lineChartRealtimedOptions = {\n  chart: {\n    height: 380,\n    type: 'line',\n    animations: {\n      dynamicAnimation: {\n        enabled: !1,\n      },\n    },\n    toolbar: {\n      show: !1,\n    },\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  stroke: {\n    width: [3, 3],\n    curve: 'smooth',\n  },\n  series: [{\n    name: 'Laptops',\n    data: [45, 52, 38, 24, 33, 26, 21, 20, 6, 8, 15, 10, 51, 32, 12],\n  }, {\n    name: 'Desktops',\n    data: [35, 41, 62, 42, 13, 18, 29, 37, 36, 51, 32, 35, 20, 51, 36],\n  }],\n  markers: {\n    size: 0,\n  },\n  colors: ['#fa5c7c', '#727cf5'],\n  xaxis: {\n    range: 14,\n    tickAmount: 14,\n  },\n  legend: {\n    show: !1,\n  },\n  grid: {\n    row: {\n      colors: ['transparent', 'transparent'],\n      opacity: 0.2,\n    },\n    borderColor: '#f1f3fa',\n  },\n};\n"
  },
  {
    "path": "src/views/chart/apexCharts/mixed/index.less",
    "content": "@import '../../../../styles/var.less';\n.mixed-wrap {\n  padding: 20px;\n  .item-title {\n    color: @text-color;\n    font-size: 16px;\n    text-transform: uppercase;\n  }\n  .ant-card {\n    margin-bottom: 20px;\n  }\n}"
  },
  {
    "path": "src/views/chart/apexCharts/mixed/index.tsx",
    "content": "import { Component, Vue } from 'vue-property-decorator';\nimport { Row, Col, Card } from 'ant-design-vue';\nimport { loadApexCharts } from '@/utils/index';\n\nimport {\n  lineColumnMixedOptions,\n  multipleYaxisMixedOptions,\n  lineAreaMixedOptions,\n  allMixedOptions,\n} from './params';\n\nimport './index.less';\n\n@Component({\n  name: 'Mixed',\n  components: {\n    'a-row': Row,\n    'a-col': Col,\n    'a-card': Card,\n  },\n})\nexport default class Mixed extends Vue {\n  itemLayout = {\n    xxl: 12,\n    xl: 12,\n    md: 12,\n    sm: 24,\n    xs: 24,\n  }\n\n  lineColumnMixedChart: any = null;\n\n  multipleYaxisMixedChart: any = null;\n\n  lineAreaMixedChart: any = null;\n\n  allMixedChart: any = null;\n\n  mounted() {\n    loadApexCharts().then(() => {\n      this.lineColumnMixedChart = new window.ApexCharts(\n        document.querySelector('#line-column-mixed'),\n        lineColumnMixedOptions,\n      );\n      this.lineColumnMixedChart.render();\n      this.multipleYaxisMixedChart = new window.ApexCharts(\n        document.querySelector('#multiple-yaxis-mixed'),\n        multipleYaxisMixedOptions,\n      );\n      this.multipleYaxisMixedChart.render();\n      this.lineAreaMixedChart = new window.ApexCharts(\n        document.querySelector('#line-area-mixed'),\n        lineAreaMixedOptions,\n      );\n      this.lineAreaMixedChart.render();\n      this.allMixedChart = new window.ApexCharts(\n        document.querySelector('#all-mixed'),\n        allMixedOptions,\n      );\n      this.allMixedChart.render();\n    });\n  }\n\n  render() {\n    return (\n      <div class=\"mixed-wrap\">\n        <a-row gutter={{ xs: 8, md: 12, xl: 20 }}>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">line-column-mixed</h2>\n              <div id=\"line-column-mixed\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">multiple-yaxis-mixed</h2>\n              <div id=\"multiple-yaxis-mixed\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">line-area-mixed</h2>\n              <div id=\"line-area-mixed\"></div>\n            </a-card>\n          </a-col>\n          <a-col {...{ props: this.itemLayout }}>\n            <a-card>\n              <h2 class=\"item-title\">all-mixed</h2>\n              <div id=\"all-mixed\"></div>\n            </a-card>\n          </a-col>\n        </a-row>\n      </div>\n    );\n  }\n}\n"
  },
  {
    "path": "src/views/chart/apexCharts/mixed/params.ts",
    "content": "export const lineColumnMixedOptions = {\n  chart: {\n    height: 380,\n    type: 'line',\n    toolbar: {\n      show: !1,\n    },\n  },\n  series: [{\n    name: 'Website Blog',\n    type: 'column',\n    data: [440, 505, 414, 671, 227, 413, 201, 352, 752, 320, 257, 160],\n  }, {\n    name: 'Social Media',\n    type: 'line',\n    data: [23, 42, 35, 27, 43, 22, 17, 31, 22, 22, 12, 16],\n  }],\n  stroke: {\n    width: [0, 4],\n  },\n  labels: ['01 Jan 2001', '02 Jan 2001', '03 Jan 2001', '04 Jan 2001', '05 Jan 2001', '06 Jan 2001', '07 Jan 2001',\n    '08 Jan 2001', '09 Jan 2001', '10 Jan 2001', '11 Jan 2001', '12 Jan 2001'],\n  xaxis: {\n    type: 'datetime',\n  },\n  colors: ['#727cf5', '#0acf97'],\n  yaxis: [{\n    title: {\n      text: 'Website Blog',\n    },\n  }, {\n    opposite: !0,\n    title: {\n      text: 'Social Media',\n    },\n  }],\n  grid: {\n    row: {\n      colors: ['#f1f3fa', 'transparent'],\n    },\n    borderColor: '#f1f3fa',\n  },\n};\nexport const multipleYaxisMixedOptions = {\n  chart: {\n    height: 380,\n    type: 'line',\n    stacked: !1,\n    toolbar: {\n      show: !1,\n    },\n  },\n  dataLabels: {\n    enabled: !1,\n  },\n  stroke: {\n    width: [0, 0, 3],\n  },\n  series: [{\n    name: 'Income',\n    type: 'column',\n    data: [1.4, 2, 2.5, 1.5, 2.5, 2.8, 3.8, 4.6],\n  }, {\n    name: 'Cashflow',\n    type: 'column',\n    data: [1.1, 3, 3.1, 4, 4.1, 4.9, 6.5, 8.5],\n  }, {\n    name: 'Revenue',\n    type: 'line',\n    data: [20, 29, 37, 36, 44, 45, 50, 58],\n  }],\n  colors: ['#727cf5', '#39afd1', '#fa5c7c'],\n  xaxis: {\n    categories: [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016],\n  },\n  yaxis: [{\n    axisTicks: {\n      show: !0,\n    },\n    axisBorder: {\n      show: !0,\n      color: '#727cf5',\n    },\n    labels: {\n      style: {\n        color: '#727cf5',\n      },\n    },\n    title: {\n      text: 'Income (thousand crores)',\n    },\n  }, {\n    axisTicks: {\n      show: !0,\n    },\n    axisBorder: {\n      show: !0,\n      color: '#39afd1',\n    },\n    labels: {\n      style: {\n        color: '#39afd1',\n      },\n      offsetX: 10,\n    },\n    title: {\n      text: 'Operating Cashflow (thousand crores)',\n    },\n  }, {\n    opposite: !0,\n    axisTicks: {\n      show: !0,\n    },\n    axisBorder: {\n      show: !0,\n      color: '#fa5c7c',\n    },\n    labels: {\n      style: {\n        color: '#fa5c7c',\n      },\n    },\n    title: {\n      text: 'Revenue (thousand crores)',\n    },\n  }],\n  tooltip: {\n    followCursor: !0,\n    y: {\n      formatter(e: any) {\n        return e !== 0 ? `${e} thousand crores` : e;\n      },\n    },\n  },\n  grid: {\n    borderColor: '#f1f3fa',\n  },\n  responsive: [{\n    breakpoint: 600,\n    options: {\n      yaxis: {\n        show: !1,\n      },\n      legend: {\n        show: !1,\n      },\n    },\n  }],\n};\n\nexport const lineAreaMixedOptions = {\n  chart: {\n    height: 380,\n    type: 'line',\n    toolbar: {\n      show: !1,\n    },\n  },\n  stroke: {\n    curve: 'smooth',\n    width: 2,\n  },\n  series: [{\n    name: 'Team A',\n    type: 'area',\n    data: [44, 55, 31, 47, 31, 43, 26, 41, 31, 47, 33],\n  }, {\n    name: 'Team B',\n    type: 'line',\n    data: [55, 69, 45, 61, 43, 54, 37, 52, 44, 61, 43],\n  }],\n  fill: {\n    type: 'solid',\n    opacity: [0.35, 1],\n  },\n  labels: ['Dec 01', 'Dec 02', 'Dec 03', 'Dec 04', 'Dec 05', 'Dec 06', 'Dec 07', 'Dec 08', 'Dec 09 ', 'Dec 10',\n    'Dec 11'],\n  markers: {\n    size: 0,\n  },\n  colors: ['#0acf97', '#fa5c7c'],\n  yaxis: [{\n    title: {\n      text: 'Series A',\n    },\n  }, {\n    opposite: !0,\n    title: {\n      text: 'Series B',\n    },\n  }],\n  tooltip: {\n    shared: !0,\n    intersect: !1,\n    y: {\n      formatter(e: any) {\n        return e !== 0 ? `${e.toFixed(0)} points` : e;\n      },\n    },\n  },\n  grid: {\n    borderColor: '#f1f3fa',\n  },\n  responsive: [{\n    breakpoint: 600,\n    options: {\n      yaxis: {\n        show: !1,\n      },\n      legend: {\n        show: !1,\n      },\n    },\n  }],\n};\n\nexport const allMixedOptions = {\n  chart: {\n    height: 380,\n    type: 'line',\n    stacked: !1,\n    toolbar: {\n      show: !1,\n    },\n  },\n  stroke: {\n    width: [0, 2, 4],\n    curve: 'smooth',\n  },\n  plotOptions: {\n    bar: {\n      columnWidth: '50%',\n    },\n  },\n  colors: ['#727cf5', '#39afd1', '#fa5c7c'],\n  series: [{\n    name: 'Team A',\n    type: 'column',\n    data: [23, 11, 22, 27, 13, 22, 37, 21, 44, 22, 30],\n  }, {\n    name: 'Team B',\n    type: 'area',\n    data: [44, 55, 41, 67, 22, 43, 21, 41, 56, 27, 43],\n  }, {\n    name: 'Team C',\n    type: 'line',\n    data: [30, 25, 36, 30, 45, 35, 64, 52, 59, 36, 39],\n  }],\n  fill: {\n    opacity: [0.85, 0.25, 1],\n    gradient: {\n      inverseColors: !1,\n      shade: 'light',\n      type: 'vertical',\n      opacityFrom: 0.85,\n      opacityTo: 0.55,\n      stops: [0, 100, 100, 100],\n    },\n  },\n  labels: ['01/01/2003', '02/01/2003', '03/01/2003', '04/01/2003', '05/01/2003', '06/01/2003', '07/01/2003',\n    '08/01/2003', '09/01/2003', '10/01/2003', '11/01/2003'],\n  markers: {\n    size: 0,\n  },\n  xaxis: {\n    type: 'datetime',\n  },\n  yaxis: {\n    title: {\n      text: 'Points',\n    },\n  },\n  tooltip: {\n    shared: !0,\n    intersect: !1,\n    y: {\n      formatter(e: any) {\n        return e !== 0 ? `${e.toFixed(0)} points` : e;\n      },\n    },\n  },\n  grid: {\n    borderColor: '#f1f3fa',\n  },\n};\n"
  },
  {
    "path": "src/views/chart/index.tsx",
    "content": "import { Component, Vue } from 'vue-property-decorator';\n\n\n@Component({\n  name: 'Charts',\n})\nexport default class Charts extends Vue {\n  render() {\n    const { keepList } = this.$store.state.app;\n    return (\n      <keep-alive max={10} include={keepList}>\n        <router-view/>\n      </keep-alive>\n    );\n  }\n}\n"
  },
  {
    "path": "src/views/components/form/baseForm/index.less",
    "content": "@import '../../../../styles/var.less';\n.base-form-wrap {\n  padding: 20px;\n  .form-btn-wrap {\n    margin-top: 20px;\n    button {\n      margin-right: 20px;\n    }\n  }\n}"
  },
  {
    "path": "src/views/components/form/baseForm/index.tsx",
    "content": "import { Component, Vue } from 'vue-property-decorator';\nimport {\n  Form, Input, Select, Radio, Card, Dropdown, Menu, Icon, DatePicker, Button, Modal,\n} from 'ant-design-vue';\n\nimport './index.less';\n\n@Component({\n  name: 'baseForm',\n  components: {\n    'a-form': Form,\n    'a-form-item': Form.Item,\n    'a-input': Input,\n    'a-select': Select,\n    'a-radio': Radio,\n    'a-radio-group': Radio.Group,\n    'a-card': Card,\n    'a-dropdown': Dropdown,\n    'a-menu': Menu,\n    'a-menu-item': Menu.Item,\n    'a-icon': Icon,\n    'a-date-picker': DatePicker,\n    'a-button': Button,\n    'a-modal': Modal,\n  },\n  props: {\n    Form,\n  },\n})\n\nclass BaseForm extends Vue {\n  itemLayout = {\n    labelCol: {\n      xs: { span: 24 },\n      sm: { span: 8 },\n    },\n    wrapperCol: {\n      xs: { span: 12 },\n      sm: { span: 6 },\n    },\n  }\n\n  submit(e: HTMLFormElement) {\n    e.preventDefault();\n    this.Form.validateFields((err: any, values: object) => {\n      if (!err) {\n        Modal.info({\n          title: '表单数据',\n          content: JSON.stringify(values),\n          onOk() {},\n        });\n      }\n    });\n  }\n\n  render() {\n    const { getFieldDecorator } = this.Form;\n    return (\n      <div class=\"base-form-wrap\">\n        <a-card\n          title=\"Base Form\"\n        >\n          <a-dropdown slot=\"extra\">\n            <a class=\"ant-dropdown-link\">\n              <a-icon type=\"ellipsis\" style=\"font-size: 22px\" />\n            </a>\n            <a-menu slot=\"overlay\">\n              <a-menu-item>\n                <a>1st menu item</a>\n              </a-menu-item>\n              <a-menu-item>\n                <a>2nd menu item</a>\n              </a-menu-item>\n              <a-menu-item>\n                <a>3rd menu item</a>\n              </a-menu-item>\n            </a-menu>\n          </a-dropdown>\n          <a-form on-submit={this.submit}>\n            <a-form-item {...{ props: this.itemLayout }} label=\"客户姓名\">\n              {\n                getFieldDecorator('name', {\n                  rules: [\n                    { required: true, message: '请输入客户姓名' },\n                  ],\n                })(<a-input placeholder=\"请输入客户姓名\"></a-input>)\n              }\n            </a-form-item>\n            <a-form-item {...{ props: this.itemLayout }} label=\"客户昵称\">\n              {\n                getFieldDecorator('nickname', {\n                  rules: [\n                    { required: true, message: '请输入客户昵称' },\n                  ],\n                })(<a-input placeholder=\"请输入客户昵称\"></a-input>)\n              }\n            </a-form-item>\n            <a-form-item {...{ props: this.itemLayout }} label=\"登录名\">\n              {\n                getFieldDecorator('loginName', {\n                  rules: [\n                    { required: true, message: '请输入登录名' },\n                  ],\n                })(<a-input placeholder=\"请输入登录名\"></a-input>)\n              }\n            </a-form-item>\n            <a-form-item {...{ props: this.itemLayout }} label=\"手机号\">\n              {\n                getFieldDecorator('loginName', {\n                  rules: [\n                    { required: true, message: '请输入手机号' },\n                    {\n                      pattern: /^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/,\n                      message: '请输入正确的手机号',\n                    },\n                  ],\n                })(<a-input placeholder=\"请输入手机号\"></a-input>)\n              }\n            </a-form-item>\n            <a-form-item {...{ props: this.itemLayout }} label=\"出生日期\">\n              {\n                getFieldDecorator('birthDate', {\n                  rules: [\n                    { required: true, message: '请选择出生日期' },\n                  ],\n                })(<a-date-picker placeholder=\"请选择出生日期\"></a-date-picker>)\n              }\n            </a-form-item>\n            <a-form-item {...{ props: this.itemLayout }} label=\"性别\">\n              {\n                getFieldDecorator('isMale', {\n                  rules: [\n                    { required: true, message: '请选择性别' },\n                  ],\n                })(<a-radio-group>\n                <a-radio value={0}>男</a-radio>\n                <a-radio value={1}>女</a-radio>\n                <a-radio value={2}>火星人</a-radio>\n              </a-radio-group>)\n              }\n\n            </a-form-item>\n            <a-form-item {...{ props: this.itemLayout }} label=\"身份证号码\">\n              {\n                getFieldDecorator('idNumber', {\n                  rules: [\n                    { required: true, message: '请输入身份证号码' },\n                  ],\n                })(<a-input placeholder=\"身份证号码\"></a-input>)\n              }\n            </a-form-item>\n            <a-form-item {...{ props: this.itemLayout }} label=\"Email\">\n              {\n                getFieldDecorator('email', {\n                  rules: [\n                    { required: true, message: '请输入Email' },\n                  ],\n                })(<a-input placeholder=\"请输入Email\"></a-input>)\n              }\n            </a-form-item>\n            <a-form-item {...{ props: this.itemLayout }} label=\"联系地址\">\n            {\n                getFieldDecorator('address', {\n                  rules: [\n                    { required: true, message: '请输入联系地址' },\n                  ],\n                })(<a-input placeholder=\"请输入联系地址\"></a-input>)\n              }\n              <div class=\"form-btn-wrap\">\n                <a-button type=\"primary\" htmlType=\"submit\">提交</a-button>\n                <a-button>重置</a-button>\n              </div>\n            </a-form-item>\n          </a-form>\n        </a-card>\n      </div>\n    );\n  }\n}\n\nexport default Form.create({})(BaseForm);\n"
  },
  {
    "path": "src/views/components/form/index.tsx",
    "content": "import { Component, Vue } from 'vue-property-decorator';\n\n@Component({\n  name: 'Form',\n})\nexport default class Form extends Vue {\n  render() {\n    const { keepList } = this.$store.state.app;\n    return (\n      <div>\n        <keep-alive max={10} include={keepList}>\n          <router-view/>\n        </keep-alive>\n      </div>\n    );\n  }\n}\n"
  },
  {
    "path": "src/views/components/index.tsx",
    "content": "import { Component, Vue } from 'vue-property-decorator';\n\n@Component({\n  name: 'Components',\n})\nexport default class Components extends Vue {\n  render() {\n    const { keepList } = this.$store.state.app;\n    return (\n      <keep-alive max={10} include={keepList}>\n        <router-view/>\n      </keep-alive>\n    );\n  }\n}\n"
  },
  {
    "path": "src/views/customers/baseInfo/index.less",
    "content": ""
  },
  {
    "path": "src/views/customers/baseInfo/index.tsx",
    "content": "import { Component, Vue } from 'vue-property-decorator';\nimport { Tag } from 'ant-design-vue';\nimport moment from 'moment';\nimport { tableList, FilterFormList, Opreat } from '@/interface';\nimport city from '@/utils/city';\n\nimport InfoModal from './infoModal';\n\nimport './index.less';\n\n@Component({\n  name: 'BaseInfo',\n  components: {\n    'a-tag': Tag,\n    'info-modal': InfoModal,\n  },\n})\nexport default class BaseInfo extends Vue {\n  filterParams: any = {\n    name: '',\n    address: [],\n    createtime: [],\n    startTime: '',\n    endTime: '',\n  };\n\n  BackParams: any = {\n    code: 'data.result.resultCode',\n    codeOK: 0,\n    message: 'data.result.resultMessage',\n    data: 'data.entity.data',\n    total: 'data.entity.total',\n  };\n\n  outParams: any = {};\n\n  filterList: FilterFormList[] = [\n    {\n      key: 'name',\n      label: 'name',\n      type: 'input',\n      placeholder: 'Seach Name',\n    },\n    {\n      key: 'address',\n      label: 'address',\n      type: 'cascader',\n      placeholder: 'Seach address',\n      options: city,\n    },\n    {\n      key: 'createtime',\n      label: 'Createtime',\n      type: 'datetimerange',\n      placeholder: ['start date', 'end date'],\n      value: ['startTime', 'endTime'],\n    },\n  ];\n\n  tableList: tableList[] = [\n    {\n      title: 'Name',\n      dataIndex: 'name',\n    },\n    {\n      title: 'Nickname',\n      dataIndex: 'nickName',\n    },\n    {\n      title: 'age',\n      dataIndex: 'age',\n    },\n    {\n      title: 'Phone number',\n      dataIndex: 'phone',\n    },\n    {\n      title: 'Birth date',\n      dataIndex: 'birthDate',\n    },\n    {\n      title: 'Gender',\n      dataIndex: 'isMale',\n      customRender: this.genderRender,\n    },\n    {\n      title: 'ID number',\n      dataIndex: 'id',\n    },\n    {\n      title: 'Email',\n      dataIndex: 'email',\n    },\n    {\n      title: 'Address',\n      dataIndex: 'address',\n    },\n  ];\n\n  opreat: Opreat[] = [\n    {\n      key: 'edit',\n      rowKey: 'id',\n      color: 'blue',\n      text: '编辑',\n      roles: true,\n    },\n    {\n      key: 'delete',\n      rowKey: 'id',\n      color: 'red',\n      text: '删除',\n      roles: true,\n      msg: '确定删除？',\n    },\n  ];\n\n  title: string = 'add customer';\n\n  visible: boolean = false;\n\n  modelType: string = 'add';\n\n  editData: object = {};\n\n  genderRender(text: any) {\n    return <a-tag color={text ? 'blue' : 'purple'}>{text ? 'Male' : 'Female'}</a-tag>;\n  }\n\n  tableClick(key: string, row: any) {\n    const data = JSON.parse(JSON.stringify(row));\n    data.address = data.address.split(' ');\n    data.birthDate = moment(data.birthDate, 'YYYY-MM-DD HH:mm:ss');\n    switch (key) {\n      case 'edit':\n        this.editData = data;\n        this.visible = true;\n        this.modelType = 'edit';\n        break;\n      default:\n        break;\n    }\n  }\n\n  add() {\n    this.title = 'Add customer';\n    this.modelType = 'add';\n    this.visible = true;\n    this.editData = {};\n  }\n\n  closeModal() {\n    this.visible = false;\n    this.editData = {};\n  }\n\n  success() {\n    this.visible = false;\n    const Table: any = this.$refs.baseInfoTable;\n    this.editData = {};\n    Table.reloadTable();\n  }\n\n  render() {\n    return (\n      <div class=\"baseInfo-wrap\">\n        <filter-table\n          ref=\"baseInfoTable\"\n          tableList={this.tableList}\n          filterList={this.filterList}\n          filterGrade={[]}\n          scroll={{ x: 900 }}\n          url={'/customers/baseInfoList'}\n          filterParams={this.filterParams}\n          outParams={this.outParams}\n          addBtn={true}\n          exportBtn={false}\n          dataType={'json'}\n          rowKey={'id'}\n          opreat={this.opreat}\n          fetchType={'post'}\n          backParams={this.BackParams}\n          on-menuClick={this.tableClick}\n          on-add={this.add}\n        />\n        <info-modal\n          title={this.title}\n          visible={this.visible}\n          type={this.modelType}\n          data={this.editData}\n          on-close={this.closeModal}\n          on-success={this.success}\n        />\n      </div>\n    );\n  }\n}\n"
  },
  {
    "path": "src/views/customers/baseInfo/infoModal.tsx",
    "content": "import { Vue, Component, Prop } from 'vue-property-decorator';\nimport {\n  Modal, Form, Input, Radio, DatePicker, InputNumber, Cascader,\n} from 'ant-design-vue';\nimport moment from 'moment';\nimport city from '@/utils/city';\n\n@Component({\n  components: {\n    'a-modal': Modal,\n    'a-form': Form,\n    'a-form-item': Form.Item,\n    'a-input': Input,\n    'a-input-number': InputNumber,\n    'a-radio': Radio,\n    'a-radio-group': Radio.Group,\n    'a-date-picker': DatePicker,\n    'a-cascader': Cascader,\n  },\n  props: {\n    Form,\n  },\n})\nclass InfoModal extends Vue {\n  @Prop() title!: string;\n\n  @Prop() visible!: boolean;\n\n  @Prop() type!: string;\n\n  @Prop() data!: any;\n\n  formItemLayout = {\n    labelCol: {\n      xs: { span: 24 },\n      sm: { span: 4 },\n    },\n    wrapperCol: {\n      xs: { span: 24 },\n      sm: { span: 20 },\n    },\n  }\n\n  submit() {\n    this.Form.validateFields([], {}, (err: any, values: any) => {\n      if (!err) {\n        if (this.type === 'add') {\n          window.api.baseInfoAdd(values).then((res: any) => {\n            const { result: { resultCode, resultMessage } } = res.data;\n            if (!resultCode) {\n              this.$message.success(resultMessage);\n              this.Form.resetFields();\n              this.$emit('success');\n            } else {\n              this.$message.error(resultMessage);\n            }\n          });\n        } else {\n          window.api.baseInfoUpdate(values).then((res: any) => {\n            const { result: { resultCode, resultMessage } } = res.data;\n            if (!resultCode) {\n              this.$message.success(resultMessage);\n              this.Form.resetFields();\n              this.$emit('success');\n            } else {\n              this.$message.error(resultMessage);\n            }\n          });\n        }\n      }\n    });\n  }\n\n  cancel() {\n    this.$emit('close');\n  }\n\n  render() {\n    const { getFieldDecorator } = this.Form;\n    return (\n      <a-modal\n        title={this.title}\n        visible={this.visible}\n        on-ok={this.submit}\n        on-cancel={this.cancel}\n      >\n        <a-form>\n          <a-form-item\n          {...{ props: this.formItemLayout }}\n          label=\"name\"\n          >\n            {getFieldDecorator('name', {\n              initialValue: this.data.name,\n              rules: [\n                { required: true, message: 'please enter the name' },\n              ],\n            })(<a-input placeholder=\"name\"></a-input>)}\n          </a-form-item>\n          <a-form-item\n          {...{ props: this.formItemLayout }}\n          label=\"nickName\"\n          >\n            {getFieldDecorator('nickName', {\n              initialValue: this.data.nickName,\n              rules: [\n                { required: true, message: 'please enter the nickName' },\n              ],\n            })(<a-input placeholder=\"nickName\"></a-input>)}\n          </a-form-item>\n          <a-form-item\n          {...{ props: this.formItemLayout }}\n          label=\"age\"\n          >\n            {getFieldDecorator('age', {\n              initialValue: this.data.age,\n              rules: [\n                { required: true, message: 'please enter the age' },\n              ],\n            })(<a-input-number style=\"width: 100%\" placeholder=\"age\"></a-input-number>)}\n          </a-form-item>\n          <a-form-item\n          {...{ props: this.formItemLayout }}\n          label=\"phone\"\n          >\n            {getFieldDecorator('phone', {\n              initialValue: this.data.phone,\n              rules: [\n                { required: true, message: 'please enter the phone' },\n                {\n                  pattern: /^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/,\n                  message: 'Please enter the correct phone number',\n                },\n              ],\n            })(<a-input htmlType=\"number\" placeholder=\"phone\"></a-input>)}\n          </a-form-item>\n          <a-form-item\n          {...{ props: this.formItemLayout }}\n          label=\"birthDate\"\n          >\n            {getFieldDecorator('birthDate', {\n              initialValue: this.data.birthDate,\n              rules: [\n                { required: true, message: 'please select the birthDate' },\n              ],\n            })(<a-date-picker\n              format=\"YYYY-MM-DD HH:mm:ss\"\n              style=\"width: 100%\"\n              showTime={ { defaultValue: moment('00:00:00', 'HH:mm:ss') } }\n            />)}\n          </a-form-item>\n          <a-form-item\n          {...{ props: this.formItemLayout }}\n          label=\"isMale\"\n          >\n            {getFieldDecorator('isMale', {\n              initialValue: this.data.isMale,\n              rules: [\n                { required: true, message: 'please select the birthDate' },\n              ],\n            })(<a-radio-group>\n                <a-radio value={true}>Male</a-radio>\n                <a-radio value={false}>Female</a-radio>\n              </a-radio-group>)}\n          </a-form-item>\n          <a-form-item\n          {...{ props: this.formItemLayout }}\n          label=\"id Number\"\n          >\n            {getFieldDecorator('id', {\n              initialValue: this.data.id,\n              rules: [\n                { required: true, message: 'please enter the id Number' },\n              ],\n            })(<a-input placeholder=\"id Number\"></a-input>)}\n          </a-form-item>\n          <a-form-item\n          {...{ props: this.formItemLayout }}\n          label=\"email\"\n          >\n            {getFieldDecorator('email', {\n              initialValue: this.data.email,\n              rules: [\n                { required: true, message: 'please enter the id email' },\n              ],\n            })(<a-input placeholder=\"email\"></a-input>)}\n          </a-form-item>\n          <a-form-item\n          {...{ props: this.formItemLayout }}\n          label=\"address\"\n          >\n            {getFieldDecorator('address', {\n              initialValue: this.data.address,\n              rules: [\n                { required: true, message: 'please select the address' },\n              ],\n            })(<a-cascader\n              allowClear\n              options={city}\n              placeholder=\"please select the address\"\n              >\n              </a-cascader>)}\n          </a-form-item>\n        </a-form>\n      </a-modal>\n    );\n  }\n}\n\nexport default Form.create({\n  props: {\n    title: String,\n    visible: Boolean,\n    type: String,\n    data: Object,\n  },\n})(InfoModal);\n"
  },
  {
    "path": "src/views/customers/index.tsx",
    "content": "import { Component, Vue } from 'vue-property-decorator';\n\n@Component({\n  name: 'Customers',\n})\nexport default class Customers extends Vue {\n  render() {\n    const { keepList } = this.$store.state.app;\n    return (\n      <keep-alive max={10} include={keepList}>\n        <router-view/>\n      </keep-alive>\n    );\n  }\n}\n"
  },
  {
    "path": "src/views/dashboard/index.less",
    "content": "@import '../../styles/var.less';\n.container {\n  width: 100%;\n  height: 100%;\n  text-align: left;\n  padding: 7px;\n  overflow-y: auto;\n  overflow-x: hidden;\n  .dash-col {\n    margin-bottom: 20px;\n    .sub-item {\n      margin-bottom: 20px;\n    }\n  }\n  .dash-box {\n    position: relative;\n    border-radius: 4px;\n    .opreat {\n      position: absolute;\n      right: 20px;\n      top: 20px;\n      color: @text-color;\n      font-size: 20px;\n    }\n    .title {\n      color: @text-color;\n      font-size: 16px;\n      text-transform: uppercase;\n    }\n  }\n  .dash-card {\n    border-radius: 4px;\n    .ant-card-body {\n      position: relative;\n      padding: 20px;  \n    }\n    h3 {\n      color: @grey-color;\n      font-size: 14px;\n    }\n    .icon {\n      width: 40px;\n      height: 40px;\n      background-color: #dbdefd;\n      color: @primary-color;\n      line-height: 40px;\n      position: absolute;\n      right: 20px;\n      top: 20px;\n      font-size: 18px;\n      border-radius: 4px;\n    }\n    .number {\n      color: @text-color;\n      font-size: 2rem;\n      margin: 10px 0 15px 0;\n    }\n    .footer {\n      font-size: 1rem;\n      .s-number {\n        font-size: 14px;\n        margin-right: 20px;\n        &.green {\n          color: @green-color;\n          .anticon {\n            color: @green-color;\n          }\n        }\n        &.red {\n          color: @red-color;\n          .anticon {\n            color: @red-color;\n          }\n        }\n      }\n      .txt {\n        color: @grey-color;\n        font-size: 14px;\n      }\n    }\n  }\n  .dash-bar-chart {\n    height: 340px;\n  }\n  .revenue-chart {\n    margin-bottom: 20px;\n    .ant-card-body {\n      position: relative;\n      padding: 20px;  \n    }\n    .opreat {\n      position: absolute;\n      right: 20px;\n      top: 20px;\n      color: @text-color;\n      font-size: 20px;\n    }\n    .title {\n      color: @text-color;\n      font-size: 16px;\n    }\n    .float-text {\n      position: absolute;\n      left: 8%;\n      bottom: 200px;\n      max-width: 350px;\n      padding: 20px;\n      z-index: 1;\n      .txt {\n        color: @text-color;\n        font-size: 15px;\n      }\n      .tips {\n        color: @grey-color;\n        font-size: 12px;\n      }\n    }\n    .week-data {\n      background-color: #f9f9fd;\n      padding: 20px 0;\n      display: flex;\n      justify-content: center;\n      .item {\n        width: 50%;\n        text-align: center;\n        .item-title {\n          color: @grey-color;\n          font-size: 13px;\n        }\n        .number {\n          font-size: 30px;\n          color: @text-color;\n          margin-bottom: 0;\n          &::before{\n            content: '';\n            width: 12px;\n            height: 12px;\n            background-color: @primary-color;\n            display: inline-block;\n            border-radius: 50%;\n            position: relative;\n            left: -14px;\n            top: -5px;\n          }\n          &.number2 {\n            &::before{\n              background-color: @green-color;\n            }\n          }\n        }\n      }\n    }\n  }\n  .total-wrap {\n    height: 589px;\n    .filter-wrap {\n      margin: 15px 0;\n      .tips {\n        margin-left: 10px;\n      }\n    }\n    .chart-widget-list {\n      margin-top: 40px;\n      p {\n        border-bottom: 1px solid #f1f3fa;\n        margin-bottom: 10px;\n        padding-bottom: 10px;\n        .mdi-square {\n          width: 10px;\n          height: 10px;\n          display: inline-block;\n          background-color: @secondary;\n          &.text-primary {\n            background-color: @primary-color;\n          }\n          &.text-danger {\n            background-color: @danger;\n          }\n          &.text-success {\n            background-color: @success;\n          }\n        }\n        .fr {\n          float: right;\n        }\n      }\n    }\n  }\n}"
  },
  {
    "path": "src/views/dashboard/index.tsx",
    "content": "import { Component, Vue, Emit } from 'vue-property-decorator';\nimport {\n  Button, DatePicker, Modal, Row, Col, Card, Icon, Radio,\n} from 'ant-design-vue';\nimport Chart from 'chart.js';\nimport { numFormat } from '@/utils/index';\n\nimport './index.less';\n\n@Component({\n  name: 'Dashboard',\n  components: {\n    'a-button': Button,\n    'a-date-picker': DatePicker,\n    'a-radio-group': Radio.Group,\n    'a-radio-button': Radio.Button,\n    'a-modal': Modal,\n    'a-row': Row,\n    'a-col': Col,\n    'a-card': Card,\n    'a-icon': Icon,\n  },\n})\nexport default class Dashboard extends Vue {\n  pageData: any = null;\n\n  created() {\n    window.api.dashboard(null).then((res: returnData) => {\n      this.pageData = res.data.entity;\n      this.loading = false;\n      setTimeout(() => {\n        this.init();\n      }, 200);\n    });\n  }\n\n  init() {\n    this.BarChart();\n    this.LineChart();\n    this.Doughnut();\n  }\n\n  BarChartDom: any = null\n\n  BarChart() {\n    const BarChart: any = document.getElementById('BarChart');\n    if (!BarChart) {\n      return false;\n    }\n    const a: any = BarChart.getContext('2d').createLinearGradient(\n      0, 500, 0,\n      150,\n    );\n    a.addColorStop(0, '#fa5c7c');\n    a.addColorStop(1, '#727cf5');\n    const config: any = {\n      type: 'bar',\n      data: {\n        labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n        datasets: [{\n          label: 'projections',\n          backgroundColor: a,\n          borderColor: a,\n          hoverBackgroundColor: a,\n          hoverBorderColor: a,\n          data: this.pageData.projections,\n        }, {\n          label: 'actuals',\n          backgroundColor: '#e3eaef',\n          borderColor: '#e3eaef',\n          hoverBackgroundColor: '#e3eaef',\n          hoverBorderColor: '#e3eaef',\n          data: this.pageData.actuals,\n        }],\n      },\n      options: {\n        maintainAspectRatio: !1,\n        legend: {\n          display: !1,\n        },\n        scales: {\n          yAxes: [{\n            gridLines: {\n              display: !1,\n            },\n            stacked: !1,\n            ticks: {\n              stepSize: 20,\n            },\n          }],\n          xAxes: [{\n            barPercentage: 0.7,\n            categoryPercentage: 0.5,\n            stacked: !1,\n            gridLines: {\n              color: 'rgba(0,0,0,0.01)',\n            },\n          }],\n        },\n      },\n    };\n    this.BarChartDom = new Chart(BarChart.getContext('2d'), config);\n  }\n\n  LineChart() {\n    const LineChart: any = document.getElementById('LineChart');\n    const config: any = {\n      type: 'line',\n      data: {\n        labels: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],\n        datasets: [{\n          label: 'Current Week',\n          backgroundColor: 'transparent',\n          borderColor: '#727cf5',\n          data: this.pageData.lineData.Current,\n        }, {\n          label: 'Previous Week',\n          fill: !0,\n          backgroundColor: 'transparent',\n          borderColor: '#0acf97',\n          data: this.pageData.lineData.Previous,\n        }],\n      },\n      options: {\n        maintainAspectRatio: !1,\n        legend: {\n          display: !1,\n        },\n        tooltips: {\n          intersect: !1,\n        },\n        hover: {\n          intersect: !0,\n        },\n        plugins: {\n          filler: {\n            propagate: !1,\n          },\n        },\n        scales: {\n          xAxes: [{\n            reverse: !0,\n            gridLines: {\n              color: 'rgba(0,0,0,0.05)',\n            },\n          }],\n          yAxes: [{\n            ticks: {\n              stepSize: 20,\n            },\n            display: !0,\n            borderDash: [5, 5],\n            gridLines: {\n              color: 'rgba(0,0,0,0)',\n              fontColor: '#fff',\n            },\n          }],\n        },\n      },\n    };\n    this.BarChartDom = new Chart(LineChart.getContext('2d'), config);\n  }\n\n  DoughnutDom: any = null\n\n  Doughnut() {\n    const config: any = {\n      type: 'doughnut',\n      data: {\n        labels: ['Direct', 'Affilliate', 'Sponsored', 'E-mail'],\n        datasets: [{\n          data: this.pageData.doughnut,\n          backgroundColor: ['#727cf5', '#fa5c7c', '#0acf97', '#ebeff2'],\n          borderColor: 'transparent',\n          borderWidth: '3',\n        }],\n      },\n      options: {\n        maintainAspectRatio: !1,\n        cutoutPercentage: 60,\n        legend: {\n          display: !1,\n        },\n      },\n    };\n    const Doughnut: any = document.getElementById('Doughnut');\n    this.DoughnutDom = new Chart(Doughnut.getContext('2d'), config);\n  }\n\n\n  ColLayout: any = {\n    span: 12,\n    lg: 12,\n    md: 12,\n    sm: 24,\n    xs: 24,\n  }\n\n  tabChange() {\n\n  }\n\n  iconList = ['team', 'shopping-cart', 'pay-circle', 'line-chart']\n\n  loading: boolean = true;\n\n  render() {\n    return (\n      <div class=\"container\">\n        <a-row gutter={{ xs: 8, md: 12, xl: 20 }} class=\"dash-col\">\n          <a-col span={10} xxl={10} xl={10} lg={12} md={24} sm={24} xs={24}>\n            <a-row gutter={{ xs: 8, md: 12, xl: 20 }}>\n              {\n                this.pageData && this.pageData.dataList.map((item: any, index: number) => <a-col {...{ props: this.ColLayout }} class=\"sub-item\">\n                  <a-card loading={this.loading} class=\"dash-card\">\n                    <h3>{item.name}</h3>\n                    <a-icon class=\"icon\" type={this.iconList[index]}></a-icon>\n                    <p class=\"number\">{numFormat(item.value)}</p>\n                    <div class=\"footer\">\n                      <span class={`s-number ${index % 2 ? 'green' : 'red'}`}>\n                        <a-icon type={index % 2 ? 'arrow-up' : 'arrow-down'}></a-icon>\n                        {item.number}%\n                      </span>\n                      <span class=\"txt\">Since last month</span>\n                    </div>\n                  </a-card>\n                </a-col>)\n              }\n              {\n                !this.pageData && this.iconList.map((item: any) => <a-col {...{ props: this.ColLayout }} class=\"sub-item\">\n                  <a-card loading={this.loading} class=\"dash-card\" style=\"height: 160px\">\n                    ............\n                  </a-card>\n                </a-col>)\n              }\n            </a-row>\n          </a-col>\n          <a-col span={14} xxl={14} xl={14} lg={12} md={24} sm={24} xs={24}>\n            <a-card loading={this.loading} class=\"dash-box dash-bar-chart\">\n              <a-icon class=\"opreat\" type=\"ellipsis\"></a-icon>\n              <h2 class=\"title\">PROJECTIONS VS ACTUALS</h2>\n              <div style=\"height: 263px;\" class=\"chartjs-chart\">\n                <canvas height=\"86px\" id=\"BarChart\"></canvas>\n              </div>\n            </a-card>\n          </a-col>\n        </a-row>\n        <a-row gutter={{ xs: 8, md: 12, xl: 20 }}>\n          <a-col span={16} xxl={16} xl={16} lg={24} md={24} sm={24} xs={24}>\n            <a-card loading={this.loading} class=\"dash-box revenue-chart\">\n              <h2 class=\"title\">REVENUE</h2>\n              <a-icon class=\"opreat\" type=\"ellipsis\"></a-icon>\n              <div class=\"week-data\">\n                <div class=\"item\">\n                  <h4 class=\"item-title\">Current Week</h4>\n                  <p class=\"number\">${this.pageData && numFormat(this.pageData.CurrentWeek)}</p>\n                </div>\n                <div class=\"item\">\n                  <h4 class=\"item-title\">Previous Week</h4>\n                  <p class=\"number number2\">${this.pageData && numFormat(this.pageData.PreviousWeek)}</p>\n                </div>\n              </div>\n              <div class=\"float-text\">\n                <p class=\"txt\">Today's Earning: $2,562.30</p>\n                <p class=\"tips\">Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus...</p>\n                <a-button type=\"dashed\">\n                  View Statements <a-icon type=\"arrow-right\"></a-icon>\n                </a-button>\n              </div>\n              <div style=\"height: 364px; margin-top: 40px\" class=\"chartjs-chart\">\n                <canvas height=\"100px\" id=\"LineChart\"></canvas>\n              </div>\n            </a-card>\n          </a-col>\n          <a-col span={8} xxl={8} xl={8} lg={24} md={24} sm={24} xs={24}>\n            <a-card loading={this.loading} class=\"dash-box total-wrap\">\n              <h2 class=\"title\">Total Sales</h2>\n              <a-icon class=\"opreat\" type=\"ellipsis\"></a-icon>\n              <div class=\"filter-wrap\">\n                <a-radio-group defaultValue=\"a\" buttonStyle=\"solid\">\n                  <a-radio-button value=\"a\">Today</a-radio-button>\n                  <a-radio-button value=\"b\">Yesterday</a-radio-button>\n                  <a-radio-button value=\"c\">A Week</a-radio-button>\n                  <a-radio-button value=\"d\">A Month</a-radio-button>\n                </a-radio-group>\n                <span class=\"tips\">Please select filter time</span>\n              </div>\n              <div style=\"height: 225px; margin-top: 40px\" class=\"chartjs-chart\">\n                <canvas height=\"100px\" id=\"Doughnut\"></canvas>\n              </div>\n              <div class=\"chart-widget-list\">\n                <p>\n                  <i class=\"mdi mdi-square text-primary\"></i> Direct\n                  <span class=\"fr\">$300.56</span>\n                </p>\n                <p>\n                  <i class=\"mdi mdi-square text-danger\"></i> Affilliate\n                  <span class=\"fr\">$135.18</span>\n                </p>\n                <p>\n                  <i class=\"mdi mdi-square text-success\"></i> Sponsored\n                  <span class=\"fr\">$48.96</span>\n                </p>\n                <p class=\"mb-0\">\n                  <i class=\"mdi mdi-square\"></i> E-mail\n                  <span class=\"fr\">$154.02</span>\n                </p>\n              </div>\n            </a-card>\n          </a-col>\n        </a-row>\n      </div>\n    );\n  }\n}\n"
  },
  {
    "path": "src/views/error/401.vue",
    "content": "<template>\n  <div :style=\"{'height': height + 'px'}\" class=\"errPage-container\">\n    <div class=\"content\">\n      <el-button icon='arrow-left' class=\"pan-back-btn\" @click=\"back\">返回</el-button>\n      <el-row>\n        <el-col :span=\"12\">\n          <h1 class=\"text-jumbo text-ginormous\">Oops!</h1>\n          <h2>你没有权限去该页面</h2>\n          <h6>如有不满请联系你领导</h6>\n          <ul class=\"list-unstyled\">\n            <li>或者你可以去:</li>\n            <li class=\"link-type\">\n              <router-link to=\"/dashboard\">回首页</router-link>\n            </li>\n            <li class=\"link-type\"><a href=\"https://www.taobao.com/\">随便看看</a></li>\n            <li><a href=\"#\" @click.prevent=\"dialogVisible=true\">点我看图</a></li>\n          </ul>\n        </el-col>\n        <el-col :span=\"12\">\n          <img :src=\"errGif\" width=\"313\" height=\"428\" alt=\"Girl has dropped her ice cream.\">\n        </el-col>\n      </el-row>\n\n      <el-dialog :visible.sync=\"dialogVisible\" title=\"随便看\" size=\"large\">\n        <img :src=\"ewizardClap\" class=\"pan-img\">\n      </el-dialog>\n    </div>\n  </div>\n</template>\n\n<script>\nimport errGif from '@/assets/401_images/401.gif';\n\nexport default {\n  data() {\n    return {\n      errGif: `${errGif}?${+new Date()}`,\n      ewizardClap: 'https://wpimg.wallstcn.com/007ef517-bafd-4066-aae4-6883632d9646',\n      dialogVisible: false,\n      height: 0,\n    };\n  },\n  mounted() {\n    this.$nextTick(() => {\n      this.height = window.screen.availHeight;\n    });\n  },\n  methods: {\n    back() {\n      if (this.$route.query.noGoBack) {\n        this.$router.push({ path: '/dashboard' });\n      } else {\n        this.$router.go(-1);\n      }\n    },\n  },\n};\n</script>\n\n<style lang=\"less\" scoped>\n  .errPage-container {\n    background-color: #fff;\n    height: 100%;\n    padding-top: 1px;\n    .content{\n      width: 800px;\n      margin: 100px auto;\n    }\n    .pan-back-btn {\n      background: #008489;\n      color: #fff;\n    }\n    .pan-gif {\n      margin: 0 auto;\n      display: block;\n    }\n    .pan-img {\n      display: block;\n      margin: 0 auto;\n    }\n    .text-jumbo {\n      font-size: 60px;\n      font-weight: 700;\n      color: #484848;\n    }\n    .list-unstyled {\n      font-size: 14px;\n      li {\n        padding-bottom: 5px;\n      }\n      a {\n        color: #008489;\n        text-decoration: none;\n        &:hover {\n          text-decoration: underline;\n        }\n      }\n    }\n  }\n</style>\n"
  },
  {
    "path": "src/views/error/404.vue",
    "content": "<template>\n  <div style=\"background:#f0f2f5;margin-top: -20px;\">\n    <div class=\"wscn-http404\">\n      <div class=\"pic-404\">\n        <img :src=\"img404\" class=\"pic-404__parent\" alt=\"404\">\n        <img :src=\"img404cloud\" class=\"pic-404__child left\" alt=\"404\">\n        <img :src=\"img404cloud\" class=\"pic-404__child mid\" alt=\"404\">\n        <img :src=\"img404cloud\" class=\"pic-404__child right\" alt=\"404\">\n      </div>\n      <div class=\"bullshit\">\n        <div class=\"bullshit__oops\">OOPS!</div>\n        <div class=\"bullshit__info\">版权所有<a class='link-type' href='http://www.chinapke.com/' target='_blank'>@xioayang</a></div>\n        <div class=\"bullshit__headline\">{{ message }}</div>\n        <div class=\"bullshit__info\">请检查您输入的网址是否正确，请点击以下按钮返回主页或者发送错误报告</div>\n        <a href=\"/\" class=\"bullshit__return-home\">返回首页</a>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { Emit, Vue, Component } from 'vue-property-decorator';\n\nconst img404 = require('@/assets/404_images/404.png');\nconst img404cloud = require('@/assets/404_images/404_cloud.png');\n\n@Component\nexport default class UpdatePwd extends Vue {\n  img404: any = img404;\n\n  img404cloud: any = img404cloud;\n\n  message: string = '特朗普说这个页面你不能进......';\n}\n</script>\n\n<style lang=\"less\" scoped>\n@import '../../styles/var.less';\n\n.wscn-http404 {\n  position: relative;\n  width: 1200px;\n  margin: 20px auto 60px;\n  padding: 0 100px;\n  overflow: hidden;\n  .pic-404 {\n    position: relative;\n    float: left;\n    width: 600px;\n    padding: 150px 0;\n    overflow: hidden;\n    &__parent {\n      width: 100%;\n    }\n    &__child {\n      position: absolute;\n      &.left {\n        width: 80px;\n        top: 17px;\n        left: 220px;\n        opacity: 0;\n        animation-name: cloudLeft;\n        animation-duration: 2s;\n        animation-timing-function: linear;\n        animation-fill-mode: forwards;\n        animation-delay: 1s;\n      }\n      &.mid {\n        width: 46px;\n        top: 10px;\n        left: 420px;\n        opacity: 0;\n        animation-name: cloudMid;\n        animation-duration: 2s;\n        animation-timing-function: linear;\n        animation-fill-mode: forwards;\n        animation-delay: 1.2s;\n      }\n      &.right {\n        width: 62px;\n        top: 100px;\n        left: 500px;\n        opacity: 0;\n        animation-name: cloudRight;\n        animation-duration: 2s;\n        animation-timing-function: linear;\n        animation-fill-mode: forwards;\n        animation-delay: 1s;\n      }\n      @keyframes cloudLeft {\n        0% {\n          top: 17px;\n          left: 220px;\n          opacity: 0;\n        }\n        20% {\n          top: 33px;\n          left: 188px;\n          opacity: 1;\n        }\n        80% {\n          top: 81px;\n          left: 92px;\n          opacity: 1;\n        }\n        100% {\n          top: 97px;\n          left: 60px;\n          opacity: 0;\n        }\n      }\n      @keyframes cloudMid {\n        0% {\n          top: 10px;\n          left: 420px;\n          opacity: 0;\n        }\n        20% {\n          top: 40px;\n          left: 360px;\n          opacity: 1;\n        }\n        70% {\n          top: 130px;\n          left: 180px;\n          opacity: 1;\n        }\n        100% {\n          top: 160px;\n          left: 120px;\n          opacity: 0;\n        }\n      }\n      @keyframes cloudRight {\n        0% {\n          top: 100px;\n          left: 500px;\n          opacity: 0;\n        }\n        20% {\n          top: 120px;\n          left: 460px;\n          opacity: 1;\n        }\n        80% {\n          top: 180px;\n          left: 340px;\n          opacity: 1;\n        }\n        100% {\n          top: 200px;\n          left: 300px;\n          opacity: 0;\n        }\n      }\n    }\n  }\n  .bullshit {\n    position: relative;\n    float: left;\n    width: 300px;\n    padding: 150px 0;\n    overflow: hidden;\n    &__oops {\n      font-size: 32px;\n      font-weight: bold;\n      line-height: 40px;\n      color: @primary;\n      opacity: 0;\n      margin-bottom: 20px;\n      animation-name: slideUp;\n      animation-duration: 0.5s;\n      animation-fill-mode: forwards;\n    }\n    &__headline {\n      font-size: 20px;\n      line-height: 24px;\n      color: @primary;\n      opacity: 0;\n      margin-bottom: 10px;\n      animation-name: slideUp;\n      animation-duration: 0.5s;\n      animation-delay: 0.1s;\n      animation-fill-mode: forwards;\n    }\n    &__info {\n      font-size: 13px;\n      line-height: 21px;\n      color: grey;\n      opacity: 0;\n      margin-bottom: 30px;\n      animation-name: slideUp;\n      animation-duration: 0.5s;\n      animation-delay: 0.2s;\n      animation-fill-mode: forwards;\n    }\n    &__return-home {\n      display: block;\n      float: left;\n      width: 110px;\n      height: 36px;\n      background: @primary;\n      border-radius: 100px;\n      text-align: center;\n      color: #ffffff;\n      opacity: 0;\n      font-size: 14px;\n      line-height: 36px;\n      cursor: pointer;\n      animation-name: slideUp;\n      animation-duration: 0.5s;\n      animation-delay: 0.3s;\n      animation-fill-mode: forwards;\n    }\n    @keyframes slideUp {\n      0% {\n        transform: translateY(60px);\n        opacity: 0;\n      }\n      100% {\n        transform: translateY(0);\n        opacity: 1;\n      }\n    }\n  }\n}\n\n</style>\n"
  },
  {
    "path": "src/views/login/index.tsx",
    "content": "import { Component, Emit, Vue } from 'vue-property-decorator';\nimport {\n  Form, Button, Input, Icon,\n} from 'ant-design-vue';\nimport config from '@/utils/config';\n\nimport './login.less';\n\n@Component({\n  components: {\n    'a-form': Form,\n    'a-form-item': Form.Item,\n    'a-button': Button,\n    'a-input': Input,\n    'a-icon': Icon,\n  },\n  props: {\n    Form,\n  },\n})\nclass Login extends Vue {\n  loginForm: {\n    username: string;\n    password: string;\n  } = { username: '', password: '' };\n\n  config = config;\n\n  imgToken = '';\n\n  loading = false;\n\n  created() {}\n\n  @Emit()\n  submitForm() {\n    this.Form.validateFields((err: any, values: object) => {\n      if (!err) {\n        this.loading = true;\n        window.api\n          .login({ ...values })\n          .then((res) => {\n            this.loading = false;\n            const {\n              result: { resultCode, resultMessage },\n            } = res.data;\n            if (resultCode !== 0) {\n              this.$message.error(resultMessage || 'unkown error');\n            } else {\n              this.$message.success(resultMessage);\n              this.$store\n                .dispatch('getUserInfo')\n                .then(() => {\n                  this.$router.push('/');\n                })\n                .catch((error) => {\n                  this.$message.error(error);\n                });\n            }\n          })\n          .catch((errs: any) => {\n            this.loading = false;\n            this.$message.error(errs.message);\n          });\n        return true;\n      }\n      return false;\n    });\n  }\n\n  render() {\n    const { getFieldDecorator } = this.Form;\n    return (\n      <div class=\"loginWrap\">\n        <h2 class=\"loginTxt\">\n          WELCOME\n          <br />\n          VUE-TS-ADMIN\n        </h2>\n        <div class=\"loginForm\">\n          <div class=\"logo\">\n            <img alt=\"logo\" src={require('../../assets/logo.svg')} />\n            <span>{config.name}</span>\n          </div>\n          <a-form ref=\"loginForm\" on-submit={this.submitForm}>\n            <a-form-item>\n              {getFieldDecorator('username', {\n                rules: [{ required: true, message: 'Please enter a user name' }],\n              })(\n                <a-input\n                  id=\"username\"\n                  prefix-icon=\"iconfont-user\"\n                  placeholder=\"Please enter a user name\"\n                >\n                  <a-icon slot=\"prefix\" type=\"user\" />\n                </a-input>,\n              )}\n            </a-form-item>\n            <a-form-item>\n              {getFieldDecorator('password', {\n                rules: [{ required: true, message: 'Please enter a password' }],\n              })(\n                <a-input\n                  id=\"password\"\n                  prefix-icon=\"iconfont-lock\"\n                  type=\"password\"\n                  on-pressEnter={this.submitForm}\n                  placeholder=\"Please enter a user name\"\n                >\n                  <a-icon slot=\"prefix\" type=\"lock\" />\n                </a-input>,\n              )}\n            </a-form-item>\n            <a-form-item>\n              <a-button loading={this.loading} type=\"primary\" on-click={this.submitForm}>\n                Login\n              </a-button>\n            </a-form-item>\n          </a-form>\n          <div class=\"tips\">\n            <span>username：admin</span>\n            <span class=\"right\">password：admin</span>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n\nexport default Form.create({})(Login);\n"
  },
  {
    "path": "src/views/login/login.less",
    "content": ".loginWrap {\n  background: url(\"../../assets/login-bg.jpg\") center no-repeat;\n  background-size: cover;\n  width: 100%;\n  height: 100vh;\n  .loginTxt {\n    position: absolute;\n    left: 30%;\n    top: 50%;\n    margin-top: -100px;\n    font-size: 50px;\n    color: #fff;\n  }\n  .tips {\n    color: #999;\n    .right {\n      float: right;\n    }\n  }\n}\n.loginForm {\n  position: absolute;\n  top: 50%;\n  left: 70%;\n  margin: -180px 0 0 -160px;\n  width: 320px;\n  height: 360px;\n  padding: 36px;\n  box-shadow: 0 0 100px rgba(0, 0, 0, 0.08);\n  background-color: #fff;\n  border-radius: 6px;\n  .el-form-item {\n    margin-bottom: 26px;\n  }\n  button {\n    width: 100%;\n  }\n\n  p {\n    color: rgb(204, 204, 204);\n    text-align: center;\n    margin-top: 16px;\n    font-size: 12px;\n    display: flex;\n    justify-content: space-between;\n  }\n}\n\n.logo {\n  text-align: center;\n  cursor: pointer;\n  margin-bottom: 24px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n\n  img {\n    width: 46px;\n    margin-right: 15px;\n  }\n\n  span {\n    vertical-align: text-bottom;\n    font-size: 16px;\n    text-transform: uppercase;\n    display: inline-block;\n    font-weight: 700;\n  }\n}\n\n.ant-spin-container,\n.ant-spin-nested-loading {\n  height: 100%;\n}\n.authcodeImg {\n  position: absolute;\n  right: 10px;\n  top: 8px;\n  width: 60px;\n}\n\n@media screen and (max-width: 1400px) {\n  .loginWrap {\n    .loginTxt {\n      left: 20%;\n    }\n  }\n}\n\n@media screen and (max-width: 1200px) {\n  .loginWrap {\n    .loginTxt {\n      left: 10%;\n    }\n  }\n}\n\n@media screen and (max-width: 900px) {\n  .loginWrap {\n    .loginTxt {\n      display: none;\n    }\n    .loginForm {\n      left: 50%;\n    }\n  }\n  .form {\n    left: 50%;\n  }\n}"
  },
  {
    "path": "src/views/map/index.tsx",
    "content": "import { Component, Vue } from 'vue-property-decorator';\n\n@Component({\n  name: 'Map',\n})\nexport default class Map extends Vue {\n  render() {\n    const { keepList } = this.$store.state.app;\n    return (\n      <div>\n        <keep-alive max={10} include={keepList}>\n          <router-view/>\n        </keep-alive>\n      </div>\n    );\n  }\n}\n"
  },
  {
    "path": "src/views/map/trajectory/commonfun.ts",
    "content": "/**\n * @file 存放公共方法\n */\n\nconst commonfun = {\n  /**\n   * 根据系统要求变更时间格式\n   *\n   * @param {string} time UNIX时间戳\n   * @return {string} 时间 格式：2016-08-19 19:18:15\n   */\n  getLocalTime(time: string) {\n    const d = new Date(parseInt(time, 10) * 1000);\n    let month: any = d.getMonth() + 1;\n    let day: any = d.getDate();\n    let hour: any = d.getHours();\n    let minute: any = d.getMinutes();\n    let second: any = d.getSeconds();\n    month = month < 10 ? `0${month}` : month;\n    day = day < 10 ? `0${day}` : day;\n    hour = hour < 10 ? `0${hour}` : hour;\n    minute = minute < 10 ? `0${minute}` : minute;\n    second = second < 10 ? `0${second}` : second;\n    return `${d.getFullYear()}-${month}-${day} ${hour}:${minute}:${second}`;\n  },\n\n  /**\n   * 获取传入时间当天的0点0分0秒时间\n   *\n   * @param {Object} time js Date对象\n   * @return {string} 时间 格式：2016-08-19 19:18:15\n   */\n  getStartTime(time: string) {\n    const date = new Date(time);\n    date.setHours(0);\n    date.setMinutes(0);\n    date.setSeconds(0);\n    date.setMilliseconds(0);\n    return date;\n  },\n\n  /**\n   * 获取当前日期\n   *\n   * @param {string} time UNIX时间戳 可选\n   * @param {string} type 获取日期格式\n   * @return {string} 时间 格式：2016-08-19\n   */\n  getCurrentDate(e: any, type: string) {\n    e = e || new Date();\n    const d = e;\n    let result = '';\n    if (!type) {\n      let month = d.getMonth() + 1;\n      let day = d.getDate();\n      month = month < 10 ? `0${month}` : month;\n      day = day < 10 ? `0${day}` : day;\n      result = `${d.getFullYear()}-${month}-${day}`;\n    } else if (type === 'hh:00') {\n      const minute = e.getMinutes();\n      if (minute <= 30) {\n        e = new Date(e.valueOf() - (60 * 60 * 1000 * 2));\n      } else {\n        e = new Date(e.valueOf() - (60 * 60 * 1000));\n      }\n      let hour = e.getHours();\n      let month = d.getMonth() + 1;\n      let day = d.getDate();\n      const year = e.getFullYear();\n      hour = hour < 10 ? `0${hour}` : `${hour}`;\n      month = month < 10 ? `0${month}` : month;\n      day = day < 10 ? `0${day}` : day;\n      result = `${e.getFullYear()}-${month}-${day} ${hour}:00`;\n    }\n    return result;\n  },\n\n  /**\n   * 从当前url取参数\n   *\n   * @param {string} 参数名\n   * @return {string} 参数值\n   */\n  getQueryString(name: string) {\n    const reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`, 'i');\n    const r = window.location.search.substr(1).match(reg);\n    if (r != null) {\n      return unescape(r[2]);\n    }\n    return null;\n  },\n  /**\n   * 判断当前设备是否在线，规则是最后上传的轨迹点\n   * 时间在当前系统时间十分钟内判断为在线，否则为离线\n   *\n   * @param {number} time UNIX时间戳\n   * @return {number} 在线状态 0在线 1离线\n   */\n  getOnlineStatus(time: number) {\n    let status = 0;\n    const timestamp = new Date().getTime() / 1000;\n    const timeDiff = (timestamp - time) / 60;\n    status = timeDiff >= 10 ? 1 : 0;\n    return status;\n  },\n  /**\n   * 判断当前设备是否为静止，规则是速度小于1km/h返回静止，\n   * 否则返回速度\n   *\n   * @param {number} speed 速度 单位为 km/h\n   * @return {string} 速度\n   */\n  getSpeed(speed: number): string {\n    let speedDesc;\n    if (speed >= 1) {\n      speedDesc = `${speed.toFixed(1)}km/h`;\n    } else {\n      speedDesc = '静止';\n    }\n    return speedDesc;\n  },\n  /**\n   * 返回当前弹窗中的状态字段数组，\n   * 分别为状态、速度、方向\n   *\n   * @param {number} speed 速度\n   * @param {number} time UNIX时间戳\n   * @param {number} direction 方向\n   *\n   * @return {array} 状态\n   */\n  getInfoWindowStatus(speed: number, time: number, direction: number) {\n    const statusArr = [];\n    speed = speed || 0;\n    if (this.getOnlineStatus(time) === 0) {\n      if (this.getSpeed(speed) === '静止') {\n        statusArr[0] = '静止（时速不大于1km/h）';\n        statusArr[1] = '';\n        statusArr[2] = '';\n      } else {\n        statusArr[0] = '<span class=\"run\">行驶（时速不小于1km/h）</span>';\n        statusArr[1] = this.getSpeed(speed);\n        statusArr[2] = this.getDirection(direction);\n      }\n    } else {\n      statusArr[0] = '离线（10分钟内无定位点）';\n      statusArr[1] = '';\n      statusArr[2] = '';\n    }\n\n    return statusArr.join(' ');\n  },\n  /**\n   * 返回当前设备运动方向描述，一共分为8种，45度一个\n   *\n   * @param {number} direction 方向数据\n   * @return {string} 方向描述\n   */\n  getDirection(direction: number) {\n    let directionDesc = '';\n    direction = direction || 0;\n    switch (Math.floor((direction) / 22.5)) {\n      case 0:\n      case 15:\n        directionDesc = '(北)';\n        break;\n      case 1:\n      case 2:\n        directionDesc = '(东北)';\n        break;\n      case 3:\n      case 4:\n        directionDesc = '(东)';\n        break;\n      case 5:\n      case 6:\n        directionDesc = '(东南)';\n        break;\n      case 7:\n      case 8:\n        directionDesc = '(南)';\n        break;\n      case 9:\n      case 10:\n        directionDesc = '(西南)';\n        break;\n      case 11:\n      case 12:\n        directionDesc = '(西)';\n        break;\n      case 13:\n      case 14:\n        directionDesc = '(西北)';\n        break;\n      default:\n        directionDesc = '未知';\n    }\n    return directionDesc;\n  },\n  /**\n   * 返回当前车辆图标方向，一个四种，90度一个\n   *\n   * @param {number} direction 方向数据\n   * @return {number} 方向标识 0上 1右 2下 3左\n   */\n  getDirectionIcon(direction: number) {\n    let directionIcon = 0;\n    direction = direction || 0;\n    switch (Math.floor((direction) / 45)) {\n      case 0:\n      case 7:\n        directionIcon = 0;\n        break;\n      case 1:\n      case 2:\n        directionIcon = 1;\n        break;\n      case 3:\n      case 4:\n        directionIcon = 2;\n        break;\n      case 5:\n      case 6:\n        directionIcon = 3;\n        break;\n      default:\n        directionIcon = 4;\n    }\n    return directionIcon;\n  },\n};\n\n\nexport default commonfun;\n"
  },
  {
    "path": "src/views/map/trajectory/data.json",
    "content": "{\"result\":{\"resultCode\":\"0\",\"resultMessage\":\"执行成功\"},\"entity\":[{\"id\":\"5bded8b16b00cd7d889f725d\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552717119622535,\"lng\":106.6030816712476,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":14,\"events\":null,\"utctime\":\"2018-11-04 11:32:01\"},{\"id\":\"5bded8b26b00cd7d889f725f\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552717119622535,\"lng\":106.6030816712476,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":14,\"events\":null,\"utctime\":\"2018-11-04 11:32:02\"},{\"id\":\"5bded8b56b00cd7d889f7260\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552717119622535,\"lng\":106.6030816712476,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":14,\"events\":null,\"utctime\":\"2018-11-04 11:32:05\"},{\"id\":\"5bded8b76b00cd7d889f7261\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552717119622535,\"lng\":106.6030816712476,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":14,\"events\":null,\"utctime\":\"2018-11-04 11:32:07\"},{\"id\":\"5bded8c06b00cd7d889f7262\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552717119622535,\"lng\":106.6030816712476,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":14,\"events\":null,\"utctime\":\"2018-11-04 11:32:16\"},{\"id\":\"5bded8d36b00cd7d889f7263\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55271060423086,\"lng\":106.60303017620946,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":196,\"events\":null,\"utctime\":\"2018-11-04 11:32:34\"},{\"id\":\"5bded8d46b00cd7d889f7264\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55270267593192,\"lng\":106.60306859100595,\"obdSpeed\":0,\"gpsSpeed\":1,\"direction\":183,\"events\":null,\"utctime\":\"2018-11-04 11:32:36\"},{\"id\":\"5bded8d86b00cd7d889f7265\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552646516660023,\"lng\":106.60306885388667,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":183,\"events\":null,\"utctime\":\"2018-11-04 11:32:38\"},{\"id\":\"5bded8dc6b00cd7d889f7266\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552627477358282,\"lng\":106.60308928467013,\"obdSpeed\":0,\"gpsSpeed\":1,\"direction\":109,\"events\":null,\"utctime\":\"2018-11-04 11:32:44\"},{\"id\":\"5bded8dd6b00cd7d889f7267\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552627477358282,\"lng\":106.60308928467013,\"obdSpeed\":0,\"gpsSpeed\":1,\"direction\":109,\"events\":null,\"utctime\":\"2018-11-04 11:32:44\"},{\"id\":\"5bded8e06b00cd7d889f7268\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55262973491846,\"lng\":106.60310100057656,\"obdSpeed\":0,\"gpsSpeed\":1,\"direction\":109,\"events\":null,\"utctime\":\"2018-11-04 11:32:46\"},{\"id\":\"5bded8e06b00cd7d889f7269\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55262973491846,\"lng\":106.60310100057656,\"obdSpeed\":0,\"gpsSpeed\":1,\"direction\":109,\"events\":null,\"utctime\":\"2018-11-04 11:32:46\"},{\"id\":\"5bded8e66b00cd7d889f726a\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552637512219743,\"lng\":106.6031067234459,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":109,\"events\":null,\"utctime\":\"2018-11-04 11:32:52\"},{\"id\":\"5bded8e96b00cd7d889f726b\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552645173099666,\"lng\":106.60306803629226,\"obdSpeed\":0,\"gpsSpeed\":3,\"direction\":109,\"events\":null,\"utctime\":\"2018-11-04 11:32:56\"},{\"id\":\"5bded8ee6b00cd7d889f726c\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552653178515254,\"lng\":106.60302471733323,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":109,\"events\":null,\"utctime\":\"2018-11-04 11:33:00\"},{\"id\":\"5bded8f16b00cd7d889f726d\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552652373242108,\"lng\":106.60302417228418,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":109,\"events\":null,\"utctime\":\"2018-11-04 11:33:02\"},{\"id\":\"5bded8f16b00cd7d889f726e\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552654319327083,\"lng\":106.60302117560818,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":5,\"events\":null,\"utctime\":\"2018-11-04 11:33:04\"},{\"id\":\"5bded8f26b00cd7d889f726f\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552666616906436,\"lng\":106.60301545614759,\"obdSpeed\":0,\"gpsSpeed\":1,\"direction\":5,\"events\":null,\"utctime\":\"2018-11-04 11:33:06\"},{\"id\":\"5bded8f36b00cd7d889f7270\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552666616906436,\"lng\":106.60301545614759,\"obdSpeed\":0,\"gpsSpeed\":1,\"direction\":5,\"events\":null,\"utctime\":\"2018-11-04 11:33:06\"},{\"id\":\"5bded8f46b00cd7d889f7271\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552679292903736,\"lng\":106.60300292534598,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":5,\"events\":null,\"utctime\":\"2018-11-04 11:33:08\"},{\"id\":\"5bded8fc6b00cd7d889f7272\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55267597080228,\"lng\":106.602972682141,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":5,\"events\":null,\"utctime\":\"2018-11-04 11:33:14\"},{\"id\":\"5bded8fe6b00cd7d889f7273\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552671767541916,\"lng\":106.60296396281181,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":4,\"events\":null,\"utctime\":\"2018-11-04 11:33:16\"},{\"id\":\"5bded8ff6b00cd7d889f7274\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552669764569515,\"lng\":106.60295333665304,\"obdSpeed\":0,\"gpsSpeed\":1,\"direction\":4,\"events\":null,\"utctime\":\"2018-11-04 11:33:18\"},{\"id\":\"5bded9006b00cd7d889f7275\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552669764569515,\"lng\":106.60295333665304,\"obdSpeed\":0,\"gpsSpeed\":1,\"direction\":4,\"events\":null,\"utctime\":\"2018-11-04 11:33:18\"},{\"id\":\"5bded9026b00cd7d889f7276\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55269053962209,\"lng\":106.60292609446564,\"obdSpeed\":0,\"gpsSpeed\":3,\"direction\":329,\"events\":null,\"utctime\":\"2018-11-04 11:33:22\"},{\"id\":\"5bded9046b00cd7d889f7277\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552714036267297,\"lng\":106.60289830774052,\"obdSpeed\":0,\"gpsSpeed\":7,\"direction\":309,\"events\":null,\"utctime\":\"2018-11-04 11:33:24\"},{\"id\":\"5bded9076b00cd7d889f7278\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552735879057145,\"lng\":106.60285499049327,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":301,\"events\":null,\"utctime\":\"2018-11-04 11:33:26\"},{\"id\":\"5bded90a6b00cd7d889f7279\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552785155719675,\"lng\":106.6027923329468,\"obdSpeed\":0,\"gpsSpeed\":9,\"direction\":328,\"events\":null,\"utctime\":\"2018-11-04 11:33:30\"},{\"id\":\"5bded90f6b00cd7d889f727a\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552850348545878,\"lng\":106.60271823415619,\"obdSpeed\":0,\"gpsSpeed\":9,\"direction\":318,\"events\":null,\"utctime\":\"2018-11-04 11:33:34\"},{\"id\":\"5bded9106b00cd7d889f727b\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552886554355972,\"lng\":106.60265884314025,\"obdSpeed\":0,\"gpsSpeed\":9,\"direction\":317,\"events\":null,\"utctime\":\"2018-11-04 11:33:36\"},{\"id\":\"5bded9146b00cd7d889f727c\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552909157715888,\"lng\":106.6026190670587,\"obdSpeed\":0,\"gpsSpeed\":3,\"direction\":315,\"events\":null,\"utctime\":\"2018-11-04 11:33:38\"},{\"id\":\"5bded9146b00cd7d889f727d\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55292233941416,\"lng\":106.60259182272067,\"obdSpeed\":0,\"gpsSpeed\":1,\"direction\":295,\"events\":null,\"utctime\":\"2018-11-04 11:33:40\"},{\"id\":\"5bded9176b00cd7d889f727e\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55292448013781,\"lng\":106.60257656503711,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":295,\"events\":null,\"utctime\":\"2018-11-04 11:33:42\"},{\"id\":\"5bded91b6b00cd7d889f727f\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.552944427751985,\"lng\":106.60253324619747,\"obdSpeed\":0,\"gpsSpeed\":7,\"direction\":298,\"events\":null,\"utctime\":\"2018-11-04 11:33:46\"},{\"id\":\"5bded9286b00cd7d889f7280\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.553261158081195,\"lng\":106.60189434664775,\"obdSpeed\":0,\"gpsSpeed\":12,\"direction\":306,\"events\":null,\"utctime\":\"2018-11-04 11:34:00\"},{\"id\":\"5bded92a6b00cd7d889f7281\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.553281590653505,\"lng\":106.60187200630538,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":319,\"events\":null,\"utctime\":\"2018-11-04 11:34:02\"},{\"id\":\"5bded92b6b00cd7d889f7282\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.553281590653505,\"lng\":106.60187200630538,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":319,\"events\":null,\"utctime\":\"2018-11-04 11:34:02\"},{\"id\":\"5bded92d6b00cd7d889f7283\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55327445830286,\"lng\":106.60186001625766,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":329,\"events\":null,\"utctime\":\"2018-11-04 11:34:04\"},{\"id\":\"5bded9336b00cd7d889f7284\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.553291452241943,\"lng\":106.60184911948373,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":329,\"events\":null,\"utctime\":\"2018-11-04 11:34:10\"},{\"id\":\"5bded9366b00cd7d889f7285\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55329151776658,\"lng\":106.60184503231137,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":329,\"events\":null,\"utctime\":\"2018-11-04 11:34:12\"},{\"id\":\"5bded93f6b00cd7d889f7286\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.553327724397786,\"lng\":106.60183713542617,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":329,\"events\":null,\"utctime\":\"2018-11-04 11:34:22\"},{\"id\":\"5bded9456b00cd7d889f7287\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55336470032273,\"lng\":106.60178128218067,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":301,\"events\":null,\"utctime\":\"2018-11-04 11:34:28\"},{\"id\":\"5bded9466b00cd7d889f7288\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.553386424170196,\"lng\":106.60174613515731,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":315,\"events\":null,\"utctime\":\"2018-11-04 11:34:30\"},{\"id\":\"5bded94a6b00cd7d889f7289\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.553456501670155,\"lng\":106.60167311947761,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":328,\"events\":null,\"utctime\":\"2018-11-04 11:34:34\"},{\"id\":\"5bded94b6b00cd7d889f728a\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.553456501670155,\"lng\":106.60167311947761,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":328,\"events\":null,\"utctime\":\"2018-11-04 11:34:34\"},{\"id\":\"5bded9586b00cd7d889f728b\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.5536084822073,\"lng\":106.60153417239366,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":339,\"events\":null,\"utctime\":\"2018-11-04 11:34:48\"},{\"id\":\"5bded95e6b00cd7d889f728c\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.553686615896655,\"lng\":106.60150012126455,\"obdSpeed\":0,\"gpsSpeed\":1,\"direction\":357,\"events\":null,\"utctime\":\"2018-11-04 11:34:54\"},{\"id\":\"5bded9626b00cd7d889f728d\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.553710502319014,\"lng\":106.60148241256583,\"obdSpeed\":0,\"gpsSpeed\":3,\"direction\":333,\"events\":null,\"utctime\":\"2018-11-04 11:34:58\"},{\"id\":\"5bded9646b00cd7d889f728e\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.553736183376053,\"lng\":106.60145434958115,\"obdSpeed\":0,\"gpsSpeed\":7,\"direction\":309,\"events\":null,\"utctime\":\"2018-11-04 11:35:00\"},{\"id\":\"5bded9646b00cd7d889f728f\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.553736183376053,\"lng\":106.60145434958115,\"obdSpeed\":0,\"gpsSpeed\":7,\"direction\":309,\"events\":null,\"utctime\":\"2018-11-04 11:35:00\"},{\"id\":\"5bded9696b00cd7d889f7290\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.5538033457204,\"lng\":106.60134372777846,\"obdSpeed\":0,\"gpsSpeed\":12,\"direction\":306,\"events\":null,\"utctime\":\"2018-11-04 11:35:04\"},{\"id\":\"5bded96c6b00cd7d889f7291\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.553978918899535,\"lng\":106.60120586761245,\"obdSpeed\":0,\"gpsSpeed\":22,\"direction\":323,\"events\":null,\"utctime\":\"2018-11-04 11:35:08\"},{\"id\":\"5bded9726b00cd7d889f7292\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.554310082643827,\"lng\":106.60094185473979,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":335,\"events\":null,\"utctime\":\"2018-11-04 11:35:14\"},{\"id\":\"5bded9746b00cd7d889f7293\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.554429805872562,\"lng\":106.6009696590031,\"obdSpeed\":0,\"gpsSpeed\":22,\"direction\":1,\"events\":null,\"utctime\":\"2018-11-04 11:35:16\"},{\"id\":\"5bded9766b00cd7d889f7294\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55459631640086,\"lng\":106.60107321863738,\"obdSpeed\":0,\"gpsSpeed\":25,\"direction\":23,\"events\":null,\"utctime\":\"2018-11-04 11:35:18\"},{\"id\":\"5bded9806b00cd7d889f7295\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.5550584394729,\"lng\":106.60134927741188,\"obdSpeed\":32,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"5\"],\"utctime\":\"2018-11-04 11:35:26\"},{\"id\":\"5bded9876b00cd7d889f7296\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.555570307362835,\"lng\":106.60156918974573,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":24,\"events\":null,\"utctime\":\"2018-11-04 11:35:34\"},{\"id\":\"5bded9946b00cd7d889f7297\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55612766906327,\"lng\":106.60186210890653,\"obdSpeed\":0,\"gpsSpeed\":18,\"direction\":9,\"events\":null,\"utctime\":\"2018-11-04 11:35:48\"},{\"id\":\"5bded9966b00cd7d889f7298\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.556213013168552,\"lng\":106.60186864730176,\"obdSpeed\":0,\"gpsSpeed\":18,\"direction\":359,\"events\":null,\"utctime\":\"2018-11-04 11:35:50\"},{\"id\":\"5bded9986b00cd7d889f7299\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55629450100561,\"lng\":106.6018111529896,\"obdSpeed\":0,\"gpsSpeed\":18,\"direction\":327,\"events\":null,\"utctime\":\"2018-11-04 11:35:52\"},{\"id\":\"5bded99e6b00cd7d889f729a\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55652501923617,\"lng\":106.60171332698012,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":332,\"events\":null,\"utctime\":\"2018-11-04 11:35:56\"},{\"id\":\"5bded99e6b00cd7d889f729b\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.556632449456913,\"lng\":106.6016620969012,\"obdSpeed\":0,\"gpsSpeed\":22,\"direction\":338,\"events\":null,\"utctime\":\"2018-11-04 11:35:58\"},{\"id\":\"5bded9a26b00cd7d889f729c\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.556893961490122,\"lng\":106.60164437415989,\"obdSpeed\":0,\"gpsSpeed\":25,\"direction\":0,\"events\":null,\"utctime\":\"2018-11-04 11:36:02\"},{\"id\":\"5bded9a56b00cd7d889f729d\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55702125809838,\"lng\":106.60165662895426,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":9,\"events\":null,\"utctime\":\"2018-11-04 11:36:04\"},{\"id\":\"5bded9a66b00cd7d889f729e\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55715360754262,\"lng\":106.60169204344147,\"obdSpeed\":0,\"gpsSpeed\":22,\"direction\":13,\"events\":null,\"utctime\":\"2018-11-04 11:36:06\"},{\"id\":\"5bded9ad6b00cd7d889f729f\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.557468581999373,\"lng\":106.60179093073744,\"obdSpeed\":0,\"gpsSpeed\":14,\"direction\":3,\"events\":null,\"utctime\":\"2018-11-04 11:36:12\"},{\"id\":\"5bded9af6b00cd7d889f72a0\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.557466849510313,\"lng\":106.6017974703719,\"obdSpeed\":0,\"gpsSpeed\":1,\"direction\":4,\"events\":null,\"utctime\":\"2018-11-04 11:36:14\"},{\"id\":\"5bded9b16b00cd7d889f72a1\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.557499505775347,\"lng\":106.60179092820606,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":18,\"events\":null,\"utctime\":\"2018-11-04 11:36:16\"},{\"id\":\"5bded9b66b00cd7d889f72a2\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.557784681074214,\"lng\":106.60187046612627,\"obdSpeed\":0,\"gpsSpeed\":27,\"direction\":24,\"events\":null,\"utctime\":\"2018-11-04 11:36:22\"},{\"id\":\"5bded9bc6b00cd7d889f72a3\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.558178484038084,\"lng\":106.60197614442838,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":7,\"events\":null,\"utctime\":\"2018-11-04 11:36:28\"},{\"id\":\"5bded9be6b00cd7d889f72a4\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55828704497373,\"lng\":106.60198948254714,\"obdSpeed\":0,\"gpsSpeed\":25,\"direction\":18,\"events\":null,\"utctime\":\"2018-11-04 11:36:30\"},{\"id\":\"5bded9c36b00cd7d889f72a5\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55853434049125,\"lng\":106.60211397085779,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":18,\"events\":null,\"utctime\":\"2018-11-04 11:36:34\"},{\"id\":\"5bded9c46b00cd7d889f72a6\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.55862326210166,\"lng\":106.60213412142295,\"obdSpeed\":0,\"gpsSpeed\":16,\"direction\":2,\"events\":null,\"utctime\":\"2018-11-04 11:36:36\"},{\"id\":\"5bded9c66b00cd7d889f72a7\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.5587266159541,\"lng\":106.60218478626061,\"obdSpeed\":0,\"gpsSpeed\":20,\"direction\":17,\"events\":null,\"utctime\":\"2018-11-04 11:36:38\"},{\"id\":\"5bded9ca6b00cd7d889f72a8\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.558905876218,\"lng\":106.60225532893521,\"obdSpeed\":0,\"gpsSpeed\":16,\"direction\":28,\"events\":null,\"utctime\":\"2018-11-04 11:36:42\"},{\"id\":\"5bded9ce6b00cd7d889f72a9\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.559101031087625,\"lng\":106.60234984413731,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":12,\"events\":null,\"utctime\":\"2018-11-04 11:36:46\"},{\"id\":\"5bded9da6b00cd7d889f72aa\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.559921749719006,\"lng\":106.6026804617753,\"obdSpeed\":0,\"gpsSpeed\":27,\"direction\":25,\"events\":null,\"utctime\":\"2018-11-04 11:36:58\"},{\"id\":\"5bded9de6b00cd7d889f72ab\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56014667083726,\"lng\":106.60288312293555,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":39,\"events\":null,\"utctime\":\"2018-11-04 11:37:02\"},{\"id\":\"5bded9e16b00cd7d889f72ac\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56022196934246,\"lng\":106.60294168423945,\"obdSpeed\":0,\"gpsSpeed\":18,\"direction\":40,\"events\":null,\"utctime\":\"2018-11-04 11:37:04\"},{\"id\":\"5bded9e86b00cd7d889f72ad\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.560503751484116,\"lng\":106.60315168028308,\"obdSpeed\":0,\"gpsSpeed\":18,\"direction\":26,\"events\":null,\"utctime\":\"2018-11-04 11:37:12\"},{\"id\":\"5bded9f06b00cd7d889f72ae\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56086489035446,\"lng\":106.60335265746899,\"obdSpeed\":37,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"5\"],\"utctime\":\"2018-11-04 11:37:20\"},{\"id\":\"5bdeda006b00cd7d889f72af\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.561917216269308,\"lng\":106.60388279805211,\"obdSpeed\":0,\"gpsSpeed\":22,\"direction\":21,\"events\":null,\"utctime\":\"2018-11-04 11:37:34\"},{\"id\":\"5bdeda176b00cd7d889f72b0\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.562848092400113,\"lng\":106.60428949385923,\"obdSpeed\":32,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"5\"],\"utctime\":\"2018-11-04 11:37:56\"},{\"id\":\"5bdeda1e6b00cd7d889f72b1\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.563380812528678,\"lng\":106.60455517736217,\"obdSpeed\":0,\"gpsSpeed\":33,\"direction\":22,\"events\":null,\"utctime\":\"2018-11-04 11:38:04\"},{\"id\":\"5bdeda226b00cd7d889f72b2\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.563900360193088,\"lng\":106.60472495689599,\"obdSpeed\":0,\"gpsSpeed\":37,\"direction\":15,\"events\":null,\"utctime\":\"2018-11-04 11:38:10\"},{\"id\":\"5bdeda2f6b00cd7d889f72b3\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.565011522247648,\"lng\":106.60508922328731,\"obdSpeed\":0,\"gpsSpeed\":38,\"direction\":15,\"events\":null,\"utctime\":\"2018-11-04 11:38:22\"},{\"id\":\"5bdeda486b00cd7d889f72b4\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.566776949871816,\"lng\":106.60570666279577,\"obdSpeed\":0,\"gpsSpeed\":11,\"direction\":331,\"events\":null,\"utctime\":\"2018-11-04 11:38:48\"},{\"id\":\"5bdeda4a6b00cd7d889f72b5\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56678509598244,\"lng\":106.60565109206019,\"obdSpeed\":0,\"gpsSpeed\":7,\"direction\":276,\"events\":null,\"utctime\":\"2018-11-04 11:38:50\"},{\"id\":\"5bdeda4b6b00cd7d889f72b6\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56678509598244,\"lng\":106.60565109206019,\"obdSpeed\":0,\"gpsSpeed\":7,\"direction\":276,\"events\":null,\"utctime\":\"2018-11-04 11:38:50\"},{\"id\":\"5bdeda4c6b00cd7d889f72b7\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.566772088578503,\"lng\":106.60563203220191,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":260,\"events\":null,\"utctime\":\"2018-11-04 11:38:52\"},{\"id\":\"5bdeda4d6b00cd7d889f72b8\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.566772088578503,\"lng\":106.60563203220191,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":260,\"events\":null,\"utctime\":\"2018-11-04 11:38:52\"},{\"id\":\"5bdeda516b00cd7d889f72b9\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.566766222592985,\"lng\":106.6056252257624,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":260,\"events\":null,\"utctime\":\"2018-11-04 11:38:56\"},{\"id\":\"5bdeda536b00cd7d889f72ba\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.566765344275453,\"lng\":106.6056295844061,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":260,\"events\":null,\"utctime\":\"2018-11-04 11:38:58\"},{\"id\":\"5bdeda546b00cd7d889f72bb\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.566765344275453,\"lng\":106.6056295844061,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":260,\"events\":null,\"utctime\":\"2018-11-04 11:38:58\"},{\"id\":\"5bdeda566b00cd7d889f72bc\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.566766332237396,\"lng\":106.60563612111301,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":260,\"events\":null,\"utctime\":\"2018-11-04 11:39:00\"},{\"id\":\"5bdeda5b6b00cd7d889f72bd\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.566748549062805,\"lng\":106.60564648141276,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":184,\"events\":null,\"utctime\":\"2018-11-04 11:39:06\"},{\"id\":\"5bdeda5e6b00cd7d889f72be\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.5667237133379,\"lng\":106.6056385957347,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":196,\"events\":null,\"utctime\":\"2018-11-04 11:39:10\"},{\"id\":\"5bdeda606b00cd7d889f72bf\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.5667237133379,\"lng\":106.6056385957347,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":196,\"events\":null,\"utctime\":\"2018-11-04 11:39:10\"},{\"id\":\"5bdeda6b6b00cd7d889f72c0\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.566087584134717,\"lng\":106.60537226277376,\"obdSpeed\":46,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"5\"],\"utctime\":\"2018-11-04 11:39:22\"},{\"id\":\"5bdeda786b00cd7d889f72c1\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564876486505895,\"lng\":106.60497868989822,\"obdSpeed\":0,\"gpsSpeed\":42,\"direction\":194,\"events\":null,\"utctime\":\"2018-11-04 11:39:34\"},{\"id\":\"5bdeda966b00cd7d889f72c2\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.562436154050072,\"lng\":106.60401993492904,\"obdSpeed\":0,\"gpsSpeed\":16,\"direction\":202,\"events\":null,\"utctime\":\"2018-11-04 11:40:04\"},{\"id\":\"5bdeda9c6b00cd7d889f72c3\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.562093468138933,\"lng\":106.60386884808325,\"obdSpeed\":0,\"gpsSpeed\":11,\"direction\":211,\"events\":null,\"utctime\":\"2018-11-04 11:40:12\"},{\"id\":\"5bdeda9e6b00cd7d889f72c4\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.562056494566097,\"lng\":106.60382172872535,\"obdSpeed\":0,\"gpsSpeed\":9,\"direction\":227,\"events\":null,\"utctime\":\"2018-11-04 11:40:14\"},{\"id\":\"5bdedaa06b00cd7d889f72c5\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.562043241320747,\"lng\":106.6037492649395,\"obdSpeed\":0,\"gpsSpeed\":11,\"direction\":251,\"events\":null,\"utctime\":\"2018-11-04 11:40:16\"},{\"id\":\"5bdedaa26b00cd7d889f72c6\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.562044229346217,\"lng\":106.6036506419947,\"obdSpeed\":0,\"gpsSpeed\":14,\"direction\":274,\"events\":null,\"utctime\":\"2018-11-04 11:40:18\"},{\"id\":\"5bdedaa86b00cd7d889f72c7\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.562138917856423,\"lng\":106.6032490290473,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":285,\"events\":null,\"utctime\":\"2018-11-04 11:40:24\"},{\"id\":\"5bdedab46b00cd7d889f72c8\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.562280458086267,\"lng\":106.60266620148462,\"obdSpeed\":0,\"gpsSpeed\":25,\"direction\":285,\"events\":null,\"utctime\":\"2018-11-04 11:40:34\"},{\"id\":\"5bdedabf6b00cd7d889f72c9\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56266810974832,\"lng\":106.60127290773023,\"obdSpeed\":0,\"gpsSpeed\":46,\"direction\":286,\"events\":null,\"utctime\":\"2018-11-04 11:40:46\"},{\"id\":\"5bdedaf06b00cd7d889f72ca\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564667102381165,\"lng\":106.5942711977671,\"obdSpeed\":0,\"gpsSpeed\":42,\"direction\":289,\"events\":null,\"utctime\":\"2018-11-04 11:41:36\"},{\"id\":\"5bdedb056b00cd7d889f72cb\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.565141611287196,\"lng\":106.59271414012399,\"obdSpeed\":0,\"gpsSpeed\":9,\"direction\":284,\"events\":null,\"utctime\":\"2018-11-04 11:41:56\"},{\"id\":\"5bdedb0e6b00cd7d889f72cc\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.565143327347492,\"lng\":106.5927253118408,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":305,\"events\":null,\"utctime\":\"2018-11-04 11:42:06\"},{\"id\":\"5bdedb296b00cd7d889f72cd\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56514089515971,\"lng\":106.59272476796463,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":305,\"events\":null,\"utctime\":\"2018-11-04 11:42:32\"},{\"id\":\"5bdedb396b00cd7d889f72ce\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56514307876226,\"lng\":106.59270732694223,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":285,\"events\":null,\"utctime\":\"2018-11-04 11:42:48\"},{\"id\":\"5bdedb3b6b00cd7d889f72cf\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56514307876226,\"lng\":106.59270732694223,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":285,\"events\":null,\"utctime\":\"2018-11-04 11:42:50\"},{\"id\":\"5bdedb3c6b00cd7d889f72d0\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.565157086026154,\"lng\":106.5926468255293,\"obdSpeed\":0,\"gpsSpeed\":11,\"direction\":281,\"events\":null,\"utctime\":\"2018-11-04 11:42:52\"},{\"id\":\"5bdedb476b00cd7d889f72d1\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56524506773712,\"lng\":106.59214075987751,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":277,\"events\":null,\"utctime\":\"2018-11-04 11:43:02\"},{\"id\":\"5bdedb4a6b00cd7d889f72d2\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.565262145123356,\"lng\":106.59212467486563,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":279,\"events\":null,\"utctime\":\"2018-11-04 11:43:06\"},{\"id\":\"5bdedb686b00cd7d889f72d3\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.565243185398945,\"lng\":106.5921230487708,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":279,\"events\":null,\"utctime\":\"2018-11-04 11:43:36\"},{\"id\":\"5bdedb786b00cd7d889f72d4\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56524291416659,\"lng\":106.59212304889739,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":279,\"events\":null,\"utctime\":\"2018-11-04 11:43:50\"},{\"id\":\"5bdedb7a6b00cd7d889f72d5\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56524291416659,\"lng\":106.59212304889739,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":279,\"events\":null,\"utctime\":\"2018-11-04 11:43:52\"},{\"id\":\"5bdedb7c6b00cd7d889f72d6\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56525210952822,\"lng\":106.59212467955581,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":273,\"events\":null,\"utctime\":\"2018-11-04 11:43:54\"},{\"id\":\"5bdedb866b00cd7d889f72d7\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.565437864914962,\"lng\":106.59157362189552,\"obdSpeed\":0,\"gpsSpeed\":20,\"direction\":296,\"events\":null,\"utctime\":\"2018-11-04 11:44:06\"},{\"id\":\"5bdedb866b00cd7d889f72d8\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.565437864914962,\"lng\":106.59157362189552,\"obdSpeed\":0,\"gpsSpeed\":20,\"direction\":296,\"events\":null,\"utctime\":\"2018-11-04 11:44:06\"},{\"id\":\"5bdedb8e6b00cd7d889f72d9\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56555647531864,\"lng\":106.59123105743362,\"obdSpeed\":0,\"gpsSpeed\":18,\"direction\":293,\"events\":null,\"utctime\":\"2018-11-04 11:44:12\"},{\"id\":\"5bdedb946b00cd7d889f72da\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.565630706841173,\"lng\":106.59093129957833,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":264,\"events\":null,\"utctime\":\"2018-11-04 11:44:20\"},{\"id\":\"5bdedb976b00cd7d889f72db\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56572115288131,\"lng\":106.59092335392741,\"obdSpeed\":0,\"gpsSpeed\":1,\"direction\":301,\"events\":null,\"utctime\":\"2018-11-04 11:44:22\"},{\"id\":\"5bdedb9b6b00cd7d889f72dc\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.565716492541053,\"lng\":106.59090946015499,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":289,\"events\":null,\"utctime\":\"2018-11-04 11:44:26\"},{\"id\":\"5bdedb9d6b00cd7d889f72dd\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56573046011254,\"lng\":106.59090100672356,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":289,\"events\":null,\"utctime\":\"2018-11-04 11:44:28\"},{\"id\":\"5bdedb9f6b00cd7d889f72de\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56574435640515,\"lng\":106.59088001965974,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":301,\"events\":null,\"utctime\":\"2018-11-04 11:44:30\"},{\"id\":\"5bdedba56b00cd7d889f72df\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.565829803438948,\"lng\":106.59070913951079,\"obdSpeed\":0,\"gpsSpeed\":9,\"direction\":300,\"events\":null,\"utctime\":\"2018-11-04 11:44:36\"},{\"id\":\"5bdedbb06b00cd7d889f72e0\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.566059686018793,\"lng\":106.59037471140833,\"obdSpeed\":0,\"gpsSpeed\":9,\"direction\":318,\"events\":null,\"utctime\":\"2018-11-04 11:44:48\"},{\"id\":\"5bdedbb46b00cd7d889f72e1\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.566133017292866,\"lng\":106.59024825317803,\"obdSpeed\":0,\"gpsSpeed\":20,\"direction\":303,\"events\":null,\"utctime\":\"2018-11-04 11:44:52\"},{\"id\":\"5bdedbbe6b00cd7d889f72e2\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56645813508959,\"lng\":106.5894574377669,\"obdSpeed\":0,\"gpsSpeed\":29,\"direction\":292,\"events\":null,\"utctime\":\"2018-11-04 11:45:02\"},{\"id\":\"5bdedbc36b00cd7d889f72e3\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.566572757606338,\"lng\":106.58921953971868,\"obdSpeed\":0,\"gpsSpeed\":22,\"direction\":290,\"events\":null,\"utctime\":\"2018-11-04 11:45:06\"},{\"id\":\"5bdedbce6b00cd7d889f72e4\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.566946521833163,\"lng\":106.5882623195007,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":280,\"events\":null,\"utctime\":\"2018-11-04 11:45:18\"},{\"id\":\"5bdedbd26b00cd7d889f72e5\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.567011342361663,\"lng\":106.58804708274103,\"obdSpeed\":0,\"gpsSpeed\":20,\"direction\":296,\"events\":null,\"utctime\":\"2018-11-04 11:45:22\"},{\"id\":\"5bdedbd46b00cd7d889f72e6\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56709410953156,\"lng\":106.58797212665984,\"obdSpeed\":0,\"gpsSpeed\":16,\"direction\":322,\"events\":null,\"utctime\":\"2018-11-04 11:45:24\"},{\"id\":\"5bdedbd86b00cd7d889f72e7\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56725831453153,\"lng\":106.58787424417253,\"obdSpeed\":0,\"gpsSpeed\":16,\"direction\":335,\"events\":null,\"utctime\":\"2018-11-04 11:45:28\"},{\"id\":\"5bdedbdc6b00cd7d889f72e8\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.567346751912858,\"lng\":106.58780064736176,\"obdSpeed\":0,\"gpsSpeed\":9,\"direction\":323,\"events\":null,\"utctime\":\"2018-11-04 11:45:32\"},{\"id\":\"5bdedbe06b00cd7d889f72e9\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56751482951726,\"lng\":106.58773354322109,\"obdSpeed\":0,\"gpsSpeed\":18,\"direction\":335,\"events\":null,\"utctime\":\"2018-11-04 11:45:36\"},{\"id\":\"5bdedbe16b00cd7d889f72ea\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56751482951726,\"lng\":106.58773354322109,\"obdSpeed\":0,\"gpsSpeed\":18,\"direction\":335,\"events\":null,\"utctime\":\"2018-11-04 11:45:36\"},{\"id\":\"5bdedbe46b00cd7d889f72eb\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.567730467995172,\"lng\":106.58764162322503,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":346,\"events\":null,\"utctime\":\"2018-11-04 11:45:40\"},{\"id\":\"5bdedbef6b00cd7d889f72ec\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.568305002390296,\"lng\":106.58732531526437,\"obdSpeed\":0,\"gpsSpeed\":25,\"direction\":308,\"events\":null,\"utctime\":\"2018-11-04 11:45:50\"},{\"id\":\"5bdedbf06b00cd7d889f72ed\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56836371107242,\"lng\":106.58718827239355,\"obdSpeed\":0,\"gpsSpeed\":25,\"direction\":292,\"events\":null,\"utctime\":\"2018-11-04 11:45:52\"},{\"id\":\"5bdedbf66b00cd7d889f72ee\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.568597224559518,\"lng\":106.58681879266621,\"obdSpeed\":0,\"gpsSpeed\":20,\"direction\":307,\"events\":null,\"utctime\":\"2018-11-04 11:45:58\"},{\"id\":\"5bdedbf86b00cd7d889f72ef\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56866781032662,\"lng\":106.5867209700498,\"obdSpeed\":0,\"gpsSpeed\":22,\"direction\":323,\"events\":null,\"utctime\":\"2018-11-04 11:46:00\"},{\"id\":\"5bdedbfe6b00cd7d889f72f0\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56899056165388,\"lng\":106.58651513673571,\"obdSpeed\":0,\"gpsSpeed\":27,\"direction\":335,\"events\":null,\"utctime\":\"2018-11-04 11:46:06\"},{\"id\":\"5bdedbff6b00cd7d889f72f1\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56899056165388,\"lng\":106.58651513673571,\"obdSpeed\":0,\"gpsSpeed\":27,\"direction\":335,\"events\":null,\"utctime\":\"2018-11-04 11:46:06\"},{\"id\":\"5bdedc1d6b00cd7d889f72f2\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.5716745872369,\"lng\":106.58528452292327,\"obdSpeed\":0,\"gpsSpeed\":40,\"direction\":338,\"events\":null,\"utctime\":\"2018-11-04 11:46:36\"},{\"id\":\"5bdedc3b6b00cd7d889f72f3\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.574660002486688,\"lng\":106.58392590850204,\"obdSpeed\":0,\"gpsSpeed\":51,\"direction\":338,\"events\":null,\"utctime\":\"2018-11-04 11:47:06\"},{\"id\":\"5bdedc596b00cd7d889f72f4\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57738851649031,\"lng\":106.58173327805711,\"obdSpeed\":0,\"gpsSpeed\":38,\"direction\":299,\"events\":null,\"utctime\":\"2018-11-04 11:47:36\"},{\"id\":\"5bdedc6e6b00cd7d889f72f5\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57819729167381,\"lng\":106.58004506657446,\"obdSpeed\":0,\"gpsSpeed\":16,\"direction\":244,\"events\":null,\"utctime\":\"2018-11-04 11:47:58\"},{\"id\":\"5bdedc706b00cd7d889f72f6\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57813471572829,\"lng\":106.57998880234163,\"obdSpeed\":0,\"gpsSpeed\":16,\"direction\":229,\"events\":null,\"utctime\":\"2018-11-04 11:48:00\"},{\"id\":\"5bdedc726b00cd7d889f72f7\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57803173781709,\"lng\":106.57995679118481,\"obdSpeed\":0,\"gpsSpeed\":16,\"direction\":211,\"events\":null,\"utctime\":\"2018-11-04 11:48:02\"},{\"id\":\"5bdedc776b00cd7d889f72f8\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.577748106150576,\"lng\":106.57985284404064,\"obdSpeed\":0,\"gpsSpeed\":31,\"direction\":203,\"events\":null,\"utctime\":\"2018-11-04 11:48:06\"},{\"id\":\"5bdedc826b00cd7d889f72f9\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57697141967707,\"lng\":106.57923514708271,\"obdSpeed\":0,\"gpsSpeed\":40,\"direction\":214,\"events\":null,\"utctime\":\"2018-11-04 11:48:16\"},{\"id\":\"5bdedc8a6b00cd7d889f72fa\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576521779655106,\"lng\":106.5788098100923,\"obdSpeed\":0,\"gpsSpeed\":11,\"direction\":258,\"events\":null,\"utctime\":\"2018-11-04 11:48:26\"},{\"id\":\"5bdedc8c6b00cd7d889f72fb\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576547899448318,\"lng\":106.57877442384938,\"obdSpeed\":0,\"gpsSpeed\":3,\"direction\":287,\"events\":null,\"utctime\":\"2018-11-04 11:48:28\"},{\"id\":\"5bdedc8c6b00cd7d889f72fc\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576547899448318,\"lng\":106.57877442384938,\"obdSpeed\":0,\"gpsSpeed\":3,\"direction\":287,\"events\":null,\"utctime\":\"2018-11-04 11:48:28\"},{\"id\":\"5bdedc8d6b00cd7d889f72fd\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576547899448318,\"lng\":106.57877442384938,\"obdSpeed\":0,\"gpsSpeed\":3,\"direction\":287,\"events\":null,\"utctime\":\"2018-11-04 11:48:28\"},{\"id\":\"5bdedc8f6b00cd7d889f72fe\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576557056622196,\"lng\":106.57875374201704,\"obdSpeed\":0,\"gpsSpeed\":1,\"direction\":287,\"events\":null,\"utctime\":\"2018-11-04 11:48:30\"},{\"id\":\"5bdedc906b00cd7d889f72ff\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576594514590507,\"lng\":106.5786963124882,\"obdSpeed\":0,\"gpsSpeed\":12,\"direction\":302,\"events\":null,\"utctime\":\"2018-11-04 11:48:32\"},{\"id\":\"5bdedc956b00cd7d889f7300\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576736717633512,\"lng\":106.57844022255217,\"obdSpeed\":0,\"gpsSpeed\":27,\"direction\":298,\"events\":null,\"utctime\":\"2018-11-04 11:48:36\"},{\"id\":\"5bdedc9a6b00cd7d889f7301\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576902343723816,\"lng\":106.57794151283564,\"obdSpeed\":0,\"gpsSpeed\":33,\"direction\":283,\"events\":null,\"utctime\":\"2018-11-04 11:48:42\"},{\"id\":\"5bdedca06b00cd7d889f7302\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576961025195356,\"lng\":106.57728331445793,\"obdSpeed\":0,\"gpsSpeed\":35,\"direction\":270,\"events\":null,\"utctime\":\"2018-11-04 11:48:48\"},{\"id\":\"5bdedcb36b00cd7d889f7303\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.577007264363754,\"lng\":106.57532704004986,\"obdSpeed\":0,\"gpsSpeed\":35,\"direction\":270,\"events\":null,\"utctime\":\"2018-11-04 11:49:06\"},{\"id\":\"5bdedce06b00cd7d889f7304\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57709258998977,\"lng\":106.57385251494979,\"obdSpeed\":0,\"gpsSpeed\":29,\"direction\":281,\"events\":null,\"utctime\":\"2018-11-04 11:49:22\"},{\"id\":\"5bdedce16b00cd7d889f7305\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.577188447570382,\"lng\":106.57301716783248,\"obdSpeed\":0,\"gpsSpeed\":27,\"direction\":269,\"events\":null,\"utctime\":\"2018-11-04 11:49:30\"},{\"id\":\"5bdedce16b00cd7d889f7307\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.577138092497005,\"lng\":106.57290473391811,\"obdSpeed\":0,\"gpsSpeed\":20,\"direction\":234,\"events\":null,\"utctime\":\"2018-11-04 11:49:32\"},{\"id\":\"5bdedce16b00cd7d889f7306\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.577068291663107,\"lng\":106.57287436789707,\"obdSpeed\":0,\"gpsSpeed\":12,\"direction\":200,\"events\":null,\"utctime\":\"2018-11-04 11:49:34\"},{\"id\":\"5bdedce16b00cd7d889f7308\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57697886469193,\"lng\":106.57286195054265,\"obdSpeed\":0,\"gpsSpeed\":18,\"direction\":184,\"events\":null,\"utctime\":\"2018-11-04 11:49:36\"},{\"id\":\"5bdedce16b00cd7d889f7309\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57697886469193,\"lng\":106.57286195054265,\"obdSpeed\":0,\"gpsSpeed\":18,\"direction\":184,\"events\":null,\"utctime\":\"2018-11-04 11:49:36\"},{\"id\":\"5bdedce46b00cd7d889f730a\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57599588252265,\"lng\":106.5727413766976,\"obdSpeed\":0,\"gpsSpeed\":9,\"direction\":215,\"events\":null,\"utctime\":\"2018-11-04 11:49:56\"},{\"id\":\"5bdedce86b00cd7d889f730b\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.5759425924493,\"lng\":106.57271615723174,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":241,\"events\":null,\"utctime\":\"2018-11-04 11:50:00\"},{\"id\":\"5bdedcec6b00cd7d889f730c\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57590898877844,\"lng\":106.5726102349349,\"obdSpeed\":0,\"gpsSpeed\":14,\"direction\":261,\"events\":null,\"utctime\":\"2018-11-04 11:50:04\"},{\"id\":\"5bdedced6b00cd7d889f730d\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57590898877844,\"lng\":106.5726102349349,\"obdSpeed\":28,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"5\"],\"utctime\":\"2018-11-04 11:50:04\"},{\"id\":\"5bdedcef6b00cd7d889f730e\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.575899022916072,\"lng\":106.57249424329237,\"obdSpeed\":0,\"gpsSpeed\":20,\"direction\":270,\"events\":null,\"utctime\":\"2018-11-04 11:50:06\"},{\"id\":\"5bdedcf16b00cd7d889f730f\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57591432599516,\"lng\":106.57231358002751,\"obdSpeed\":50,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"5\"],\"utctime\":\"2018-11-04 11:50:08\"},{\"id\":\"5bdedcf36b00cd7d889f7310\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.575948478599777,\"lng\":106.57204381185284,\"obdSpeed\":55,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"5\"],\"utctime\":\"2018-11-04 11:50:10\"},{\"id\":\"5bdedd026b00cd7d889f7311\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57613110990905,\"lng\":106.57030067615254,\"obdSpeed\":0,\"gpsSpeed\":37,\"direction\":275,\"events\":null,\"utctime\":\"2018-11-04 11:50:24\"},{\"id\":\"5bdedd0d6b00cd7d889f7312\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57620803304705,\"lng\":106.56898041162886,\"obdSpeed\":0,\"gpsSpeed\":42,\"direction\":272,\"events\":null,\"utctime\":\"2018-11-04 11:50:36\"},{\"id\":\"5bdedd2b6b00cd7d889f7313\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57628557095652,\"lng\":106.56580034459944,\"obdSpeed\":0,\"gpsSpeed\":25,\"direction\":276,\"events\":null,\"utctime\":\"2018-11-04 11:51:06\"},{\"id\":\"5bdedd496b00cd7d889f7314\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576322489264516,\"lng\":106.56268834373078,\"obdSpeed\":0,\"gpsSpeed\":38,\"direction\":270,\"events\":null,\"utctime\":\"2018-11-04 11:51:36\"},{\"id\":\"5bdedd5e6b00cd7d889f7315\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576339147518173,\"lng\":106.56137054851182,\"obdSpeed\":0,\"gpsSpeed\":3,\"direction\":271,\"events\":null,\"utctime\":\"2018-11-04 11:51:56\"},{\"id\":\"5bdedd686b00cd7d889f7316\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576351791576588,\"lng\":106.56134723673081,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":271,\"events\":null,\"utctime\":\"2018-11-04 11:52:06\"},{\"id\":\"5bdedd716b00cd7d889f7317\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576355885841902,\"lng\":106.56135319376264,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":271,\"events\":null,\"utctime\":\"2018-11-04 11:52:16\"},{\"id\":\"5bdedd736b00cd7d889f7318\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576355345823078,\"lng\":106.5613537361125,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":271,\"events\":null,\"utctime\":\"2018-11-04 11:52:18\"},{\"id\":\"5bdedd756b00cd7d889f7319\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576354503591737,\"lng\":106.56134723434937,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":268,\"events\":null,\"utctime\":\"2018-11-04 11:52:20\"},{\"id\":\"5bdedd856b00cd7d889f731a\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576322831886184,\"lng\":106.56034816147374,\"obdSpeed\":41,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"5\"],\"utctime\":\"2018-11-04 11:52:36\"},{\"id\":\"5bdedd866b00cd7d889f731b\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576322831886184,\"lng\":106.56034816147374,\"obdSpeed\":0,\"gpsSpeed\":31,\"direction\":271,\"events\":null,\"utctime\":\"2018-11-04 11:52:36\"},{\"id\":\"5bdedd8b6b00cd7d889f731c\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57629528284043,\"lng\":106.55977559487907,\"obdSpeed\":0,\"gpsSpeed\":33,\"direction\":266,\"events\":null,\"utctime\":\"2018-11-04 11:52:42\"},{\"id\":\"5bdedd906b00cd7d889f731d\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576239056243264,\"lng\":106.55917063201308,\"obdSpeed\":0,\"gpsSpeed\":37,\"direction\":262,\"events\":null,\"utctime\":\"2018-11-04 11:52:48\"},{\"id\":\"5bdedd926b00cd7d889f731e\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576179838964343,\"lng\":106.55898329310676,\"obdSpeed\":0,\"gpsSpeed\":33,\"direction\":250,\"events\":null,\"utctime\":\"2018-11-04 11:52:50\"},{\"id\":\"5bdedd966b00cd7d889f731f\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57615597729724,\"lng\":106.5586099100757,\"obdSpeed\":0,\"gpsSpeed\":29,\"direction\":262,\"events\":null,\"utctime\":\"2018-11-04 11:52:54\"},{\"id\":\"5bdedd9f6b00cd7d889f7320\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57609097116546,\"lng\":106.55780802504232,\"obdSpeed\":55,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"5\"],\"utctime\":\"2018-11-04 11:53:02\"},{\"id\":\"5bdedda46b00cd7d889f7321\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576072909653572,\"lng\":106.55728206315985,\"obdSpeed\":0,\"gpsSpeed\":40,\"direction\":265,\"events\":null,\"utctime\":\"2018-11-04 11:53:06\"},{\"id\":\"5bdeddc06b00cd7d889f7322\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.575388305384894,\"lng\":106.55328056375753,\"obdSpeed\":0,\"gpsSpeed\":48,\"direction\":251,\"events\":null,\"utctime\":\"2018-11-04 11:53:36\"},{\"id\":\"5bdeddc26b00cd7d889f7323\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.575388305384894,\"lng\":106.55328056375753,\"obdSpeed\":0,\"gpsSpeed\":48,\"direction\":251,\"events\":null,\"utctime\":\"2018-11-04 11:53:36\"},{\"id\":\"5bdeddd66b00cd7d889f7324\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.574223864173213,\"lng\":106.55057048269961,\"obdSpeed\":0,\"gpsSpeed\":59,\"direction\":236,\"events\":null,\"utctime\":\"2018-11-04 11:53:58\"},{\"id\":\"5bdedddc6b00cd7d889f7325\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.573853245555803,\"lng\":106.55001958739459,\"obdSpeed\":0,\"gpsSpeed\":59,\"direction\":231,\"events\":null,\"utctime\":\"2018-11-04 11:54:02\"},{\"id\":\"5bdedde06b00cd7d889f7326\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57346851010271,\"lng\":106.54946036838874,\"obdSpeed\":0,\"gpsSpeed\":61,\"direction\":230,\"events\":null,\"utctime\":\"2018-11-04 11:54:06\"},{\"id\":\"5bdedde26b00cd7d889f7327\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57302321959355,\"lng\":106.5489493480581,\"obdSpeed\":0,\"gpsSpeed\":61,\"direction\":225,\"events\":null,\"utctime\":\"2018-11-04 11:54:10\"},{\"id\":\"5bdeddfa6b00cd7d889f7328\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.569970590045898,\"lng\":106.54621533073777,\"obdSpeed\":0,\"gpsSpeed\":59,\"direction\":210,\"events\":null,\"utctime\":\"2018-11-04 11:54:34\"},{\"id\":\"5bdede1c6b00cd7d889f7329\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56666936423704,\"lng\":106.54431335738028,\"obdSpeed\":0,\"gpsSpeed\":46,\"direction\":205,\"events\":null,\"utctime\":\"2018-11-04 11:55:06\"},{\"id\":\"5bdede206b00cd7d889f732a\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.566237239980453,\"lng\":106.54404671274213,\"obdSpeed\":0,\"gpsSpeed\":48,\"direction\":207,\"events\":null,\"utctime\":\"2018-11-04 11:55:10\"},{\"id\":\"5bdede346b00cd7d889f732b\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564398034142446,\"lng\":106.54263527197827,\"obdSpeed\":0,\"gpsSpeed\":31,\"direction\":222,\"events\":null,\"utctime\":\"2018-11-04 11:55:32\"},{\"id\":\"5bdede3a6b00cd7d889f732c\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564135971065962,\"lng\":106.54232696061008,\"obdSpeed\":0,\"gpsSpeed\":40,\"direction\":225,\"events\":null,\"utctime\":\"2018-11-04 11:55:36\"},{\"id\":\"5bdede486b00cd7d889f732d\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56285444039015,\"lng\":106.54066095446952,\"obdSpeed\":0,\"gpsSpeed\":49,\"direction\":233,\"events\":null,\"utctime\":\"2018-11-04 11:55:52\"},{\"id\":\"5bdede586b00cd7d889f732e\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.561956636076925,\"lng\":106.53899031203491,\"obdSpeed\":0,\"gpsSpeed\":46,\"direction\":243,\"events\":null,\"utctime\":\"2018-11-04 11:56:06\"},{\"id\":\"5bdede5a6b00cd7d889f732f\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.561749916064628,\"lng\":106.53850110198645,\"obdSpeed\":0,\"gpsSpeed\":48,\"direction\":246,\"events\":null,\"utctime\":\"2018-11-04 11:56:10\"},{\"id\":\"5bdede6f6b00cd7d889f7330\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56099302417252,\"lng\":106.53569940948134,\"obdSpeed\":0,\"gpsSpeed\":42,\"direction\":256,\"events\":null,\"utctime\":\"2018-11-04 11:56:30\"},{\"id\":\"5bdede706b00cd7d889f7331\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.560949093827432,\"lng\":106.53547396196682,\"obdSpeed\":0,\"gpsSpeed\":40,\"direction\":258,\"events\":null,\"utctime\":\"2018-11-04 11:56:32\"},{\"id\":\"5bdede766b00cd7d889f7332\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.560854643554908,\"lng\":106.5347587226588,\"obdSpeed\":0,\"gpsSpeed\":42,\"direction\":260,\"events\":null,\"utctime\":\"2018-11-04 11:56:38\"},{\"id\":\"5bdede8d6b00cd7d889f7333\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56057984658696,\"lng\":106.5326517972619,\"obdSpeed\":41,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"5\"],\"utctime\":\"2018-11-04 11:57:00\"},{\"id\":\"5bdede946b00cd7d889f7334\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.560469679001763,\"lng\":106.53187140626946,\"obdSpeed\":0,\"gpsSpeed\":37,\"direction\":265,\"events\":null,\"utctime\":\"2018-11-04 11:57:08\"},{\"id\":\"5bdede986b00cd7d889f7335\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56044814136621,\"lng\":106.53143095956848,\"obdSpeed\":0,\"gpsSpeed\":40,\"direction\":271,\"events\":null,\"utctime\":\"2018-11-04 11:57:12\"},{\"id\":\"5bdedeaa6b00cd7d889f7336\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.560658693934947,\"lng\":106.52953121828921,\"obdSpeed\":0,\"gpsSpeed\":25,\"direction\":295,\"events\":null,\"utctime\":\"2018-11-04 11:57:30\"},{\"id\":\"5bdedeb26b00cd7d889f7337\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.560862620373808,\"lng\":106.52879567816672,\"obdSpeed\":0,\"gpsSpeed\":40,\"direction\":281,\"events\":null,\"utctime\":\"2018-11-04 11:57:38\"},{\"id\":\"5bdedeb36b00cd7d889f7338\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.560862620373808,\"lng\":106.52879567816672,\"obdSpeed\":0,\"gpsSpeed\":40,\"direction\":281,\"events\":null,\"utctime\":\"2018-11-04 11:57:38\"},{\"id\":\"5bdedecd6b00cd7d889f7339\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.561691898901874,\"lng\":106.5254975966648,\"obdSpeed\":0,\"gpsSpeed\":49,\"direction\":290,\"events\":null,\"utctime\":\"2018-11-04 11:58:04\"},{\"id\":\"5bdeded06b00cd7d889f733a\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.561855205911865,\"lng\":106.52499249762444,\"obdSpeed\":0,\"gpsSpeed\":46,\"direction\":290,\"events\":null,\"utctime\":\"2018-11-04 11:58:08\"},{\"id\":\"5bdedeea6b00cd7d889f733b\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56270419284333,\"lng\":106.52164587888942,\"obdSpeed\":50,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"6\"],\"utctime\":\"2018-11-04 11:58:32\"},{\"id\":\"5bdedeee6b00cd7d889f733c\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56280753121659,\"lng\":106.52104368533566,\"obdSpeed\":0,\"gpsSpeed\":18,\"direction\":283,\"events\":null,\"utctime\":\"2018-11-04 11:58:38\"},{\"id\":\"5bdedef16b00cd7d889f733d\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.562830388297662,\"lng\":106.52093199934767,\"obdSpeed\":0,\"gpsSpeed\":18,\"direction\":283,\"events\":null,\"utctime\":\"2018-11-04 11:58:40\"},{\"id\":\"5bdedf0c6b00cd7d889f733e\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.562791550661796,\"lng\":106.5209985335519,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":282,\"events\":null,\"utctime\":\"2018-11-04 11:59:08\"},{\"id\":\"5bdedf186b00cd7d889f733f\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.562792093142015,\"lng\":106.52099853335635,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":282,\"events\":null,\"utctime\":\"2018-11-04 11:59:20\"},{\"id\":\"5bdedf1a6b00cd7d889f7340\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.562792090032964,\"lng\":106.5209982629519,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":282,\"events\":null,\"utctime\":\"2018-11-04 11:59:22\"},{\"id\":\"5bdedf1b6b00cd7d889f7341\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.562792090032964,\"lng\":106.5209982629519,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":282,\"events\":null,\"utctime\":\"2018-11-04 11:59:22\"},{\"id\":\"5bdedf2b6b00cd7d889f7342\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.563014349978214,\"lng\":106.51945340715267,\"obdSpeed\":0,\"gpsSpeed\":44,\"direction\":279,\"events\":null,\"utctime\":\"2018-11-04 11:59:38\"},{\"id\":\"5bdedf446b00cd7d889f7343\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56360410369355,\"lng\":106.51567581224552,\"obdSpeed\":0,\"gpsSpeed\":51,\"direction\":283,\"events\":null,\"utctime\":\"2018-11-04 12:00:02\"},{\"id\":\"5bdedf456b00cd7d889f7344\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56367023137621,\"lng\":106.51541780906373,\"obdSpeed\":0,\"gpsSpeed\":46,\"direction\":287,\"events\":null,\"utctime\":\"2018-11-04 12:00:04\"},{\"id\":\"5bdedf496b00cd7d889f7345\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56379026594741,\"lng\":106.51495401546528,\"obdSpeed\":0,\"gpsSpeed\":40,\"direction\":286,\"events\":null,\"utctime\":\"2018-11-04 12:00:08\"},{\"id\":\"5bdedf4e6b00cd7d889f7346\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56387774878666,\"lng\":106.51466401331473,\"obdSpeed\":0,\"gpsSpeed\":18,\"direction\":285,\"events\":null,\"utctime\":\"2018-11-04 12:00:12\"},{\"id\":\"5bdedf826b00cd7d889f7347\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.563869864353826,\"lng\":106.51466130907079,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":286,\"events\":null,\"utctime\":\"2018-11-04 12:00:30\"},{\"id\":\"5bdedf846b00cd7d889f7348\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.563869864353826,\"lng\":106.51466130907079,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":286,\"events\":null,\"utctime\":\"2018-11-04 12:00:30\"},{\"id\":\"5bdedf846b00cd7d889f7349\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.563869864353826,\"lng\":106.51466130907079,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":286,\"events\":null,\"utctime\":\"2018-11-04 12:00:30\"},{\"id\":\"5bdedf846b00cd7d889f734a\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.563871177796454,\"lng\":106.51465508122322,\"obdSpeed\":0,\"gpsSpeed\":1,\"direction\":284,\"events\":null,\"utctime\":\"2018-11-04 12:00:32\"},{\"id\":\"5bdedf856b00cd7d889f734b\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56397791123483,\"lng\":106.51427109319727,\"obdSpeed\":0,\"gpsSpeed\":35,\"direction\":287,\"events\":null,\"utctime\":\"2018-11-04 12:00:38\"},{\"id\":\"5bdedf856b00cd7d889f734c\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.5644027147885,\"lng\":106.51292278314686,\"obdSpeed\":0,\"gpsSpeed\":53,\"direction\":293,\"events\":null,\"utctime\":\"2018-11-04 12:00:48\"},{\"id\":\"5bdedf856b00cd7d889f734d\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.565438703989805,\"lng\":106.50970355797502,\"obdSpeed\":0,\"gpsSpeed\":62,\"direction\":282,\"events\":null,\"utctime\":\"2018-11-04 12:01:08\"},{\"id\":\"5bdedf856b00cd7d889f734e\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.565438703989805,\"lng\":106.50970355797502,\"obdSpeed\":0,\"gpsSpeed\":62,\"direction\":282,\"events\":null,\"utctime\":\"2018-11-04 12:01:08\"},{\"id\":\"5bdedf8c6b00cd7d889f734f\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.565569474713627,\"lng\":106.50829344921122,\"obdSpeed\":0,\"gpsSpeed\":59,\"direction\":271,\"events\":null,\"utctime\":\"2018-11-04 12:01:16\"},{\"id\":\"5bdedf9e6b00cd7d889f7350\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56519522238437,\"lng\":106.50556788105557,\"obdSpeed\":0,\"gpsSpeed\":59,\"direction\":248,\"events\":null,\"utctime\":\"2018-11-04 12:01:32\"},{\"id\":\"5bdedfa06b00cd7d889f7351\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564969428159273,\"lng\":106.5049818614685,\"obdSpeed\":0,\"gpsSpeed\":55,\"direction\":246,\"events\":null,\"utctime\":\"2018-11-04 12:01:36\"},{\"id\":\"5bdedfa36b00cd7d889f7352\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56485351175516,\"lng\":106.5046961486435,\"obdSpeed\":0,\"gpsSpeed\":53,\"direction\":245,\"events\":null,\"utctime\":\"2018-11-04 12:01:38\"},{\"id\":\"5bdedfb86b00cd7d889f7353\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56380172959228,\"lng\":106.50148262526741,\"obdSpeed\":0,\"gpsSpeed\":55,\"direction\":260,\"events\":null,\"utctime\":\"2018-11-04 12:02:00\"},{\"id\":\"5bdedfbb6b00cd7d889f7354\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56375030368614,\"lng\":106.50116160260713,\"obdSpeed\":55,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"6\"],\"utctime\":\"2018-11-04 12:02:02\"},{\"id\":\"5bdedfc16b00cd7d889f7355\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.5637148813042,\"lng\":106.50048604328612,\"obdSpeed\":0,\"gpsSpeed\":29,\"direction\":268,\"events\":null,\"utctime\":\"2018-11-04 12:02:08\"},{\"id\":\"5bdedfc66b00cd7d889f7356\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56371516689938,\"lng\":106.4999872409878,\"obdSpeed\":0,\"gpsSpeed\":29,\"direction\":271,\"events\":null,\"utctime\":\"2018-11-04 12:02:14\"},{\"id\":\"5bdedfd66b00cd7d889f7357\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.563969087872685,\"lng\":106.4981609759957,\"obdSpeed\":0,\"gpsSpeed\":46,\"direction\":282,\"events\":null,\"utctime\":\"2018-11-04 12:02:30\"},{\"id\":\"5bdedfdf6b00cd7d889f7358\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56420577135479,\"lng\":106.49716596178334,\"obdSpeed\":0,\"gpsSpeed\":40,\"direction\":286,\"events\":null,\"utctime\":\"2018-11-04 12:02:38\"},{\"id\":\"5bdedfee6b00cd7d889f7359\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56463106332192,\"lng\":106.49615270344086,\"obdSpeed\":0,\"gpsSpeed\":9,\"direction\":16,\"events\":null,\"utctime\":\"2018-11-04 12:02:54\"},{\"id\":\"5bdedff76b00cd7d889f735a\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56468163303216,\"lng\":106.49617008349396,\"obdSpeed\":0,\"gpsSpeed\":9,\"direction\":16,\"events\":null,\"utctime\":\"2018-11-04 12:02:56\"},{\"id\":\"5bdee0116b00cd7d889f735b\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56468163303216,\"lng\":106.49617008349396,\"obdSpeed\":0,\"gpsSpeed\":9,\"direction\":16,\"events\":null,\"utctime\":\"2018-11-04 12:02:56\"},{\"id\":\"5bdee0116b00cd7d889f735c\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564735935594452,\"lng\":106.49622634593256,\"obdSpeed\":0,\"gpsSpeed\":7,\"direction\":25,\"events\":null,\"utctime\":\"2018-11-04 12:02:58\"},{\"id\":\"5bdee0126b00cd7d889f735d\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564755414908774,\"lng\":106.49626358951296,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":25,\"events\":null,\"utctime\":\"2018-11-04 12:03:08\"},{\"id\":\"5bdee0136b00cd7d889f735e\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564756782758455,\"lng\":106.49626222931401,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":25,\"events\":null,\"utctime\":\"2018-11-04 12:03:10\"},{\"id\":\"5bdee0136b00cd7d889f735f\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564754907504025,\"lng\":106.49625951102126,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":25,\"events\":null,\"utctime\":\"2018-11-04 12:03:16\"},{\"id\":\"5bdee0146b00cd7d889f7360\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564753845953547,\"lng\":106.49625679235523,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":25,\"events\":null,\"utctime\":\"2018-11-04 12:03:20\"},{\"id\":\"5bdee01c6b00cd7d889f7361\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564753308164722,\"lng\":106.49625624877044,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":25,\"events\":null,\"utctime\":\"2018-11-04 12:03:38\"},{\"id\":\"5bdee0266b00cd7d889f7362\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56475331050321,\"lng\":106.49625597685416,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":25,\"events\":null,\"utctime\":\"2018-11-04 12:03:48\"},{\"id\":\"5bdee0276b00cd7d889f7363\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56475331050321,\"lng\":106.49625597685416,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":25,\"events\":null,\"utctime\":\"2018-11-04 12:03:50\"},{\"id\":\"5bdee02d6b00cd7d889f7364\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564753581736046,\"lng\":106.49625597673028,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":25,\"events\":null,\"utctime\":\"2018-11-04 12:03:56\"},{\"id\":\"5bdee02e6b00cd7d889f7365\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564753581736046,\"lng\":106.49625597673028,\"obdSpeed\":0,\"gpsSpeed\":80,\"direction\":25,\"events\":null,\"utctime\":\"2018-11-04 12:03:56\"},{\"id\":\"5bdee0306b00cd7d889f7366\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564753581736046,\"lng\":106.49625597673028,\"obdSpeed\":0,\"gpsSpeed\":80,\"direction\":25,\"events\":null,\"utctime\":\"2018-11-04 12:03:58\"},{\"id\":\"5bdee0326b00cd7d889f7367\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564765829314744,\"lng\":106.49625107665712,\"obdSpeed\":0,\"gpsSpeed\":73,\"direction\":342,\"events\":null,\"utctime\":\"2018-11-04 12:04:02\"},{\"id\":\"5bdee0396b00cd7d889f7368\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564830844646426,\"lng\":106.49619747918189,\"obdSpeed\":0,\"gpsSpeed\":51,\"direction\":342,\"events\":null,\"utctime\":\"2018-11-04 12:04:08\"},{\"id\":\"5bdee03a6b00cd7d889f7369\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56483378050741,\"lng\":106.49617164550448,\"obdSpeed\":0,\"gpsSpeed\":61,\"direction\":286,\"events\":null,\"utctime\":\"2018-11-04 12:04:10\"},{\"id\":\"5bdee03e6b00cd7d889f736a\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564817859122385,\"lng\":106.49609986543197,\"obdSpeed\":0,\"gpsSpeed\":77,\"direction\":222,\"events\":null,\"utctime\":\"2018-11-04 12:04:14\"},{\"id\":\"5bdee0426b00cd7d889f736b\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564789436064046,\"lng\":106.4960623528246,\"obdSpeed\":0,\"gpsSpeed\":77,\"direction\":222,\"events\":null,\"utctime\":\"2018-11-04 12:04:16\"},{\"id\":\"5bdee0426b00cd7d889f736c\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56475300050542,\"lng\":106.49604170306644,\"obdSpeed\":0,\"gpsSpeed\":67,\"direction\":207,\"events\":null,\"utctime\":\"2018-11-04 12:04:18\"},{\"id\":\"5bdee0496b00cd7d889f736d\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564729472214996,\"lng\":106.49606482755641,\"obdSpeed\":0,\"gpsSpeed\":50,\"direction\":222,\"events\":null,\"utctime\":\"2018-11-04 12:04:24\"},{\"id\":\"5bdee04a6b00cd7d889f736e\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564733269475777,\"lng\":106.49606482582642,\"obdSpeed\":0,\"gpsSpeed\":31,\"direction\":172,\"events\":null,\"utctime\":\"2018-11-04 12:04:26\"},{\"id\":\"5bdee04c6b00cd7d889f736f\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564744620851982,\"lng\":106.49606944338971,\"obdSpeed\":0,\"gpsSpeed\":21,\"direction\":29,\"events\":null,\"utctime\":\"2018-11-04 12:04:28\"},{\"id\":\"5bdee04c6b00cd7d889f7370\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564744620851982,\"lng\":106.49606944338971,\"obdSpeed\":0,\"gpsSpeed\":31,\"direction\":29,\"events\":null,\"utctime\":\"2018-11-04 12:04:28\"},{\"id\":\"5bdee0506b00cd7d889f7371\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56475951727369,\"lng\":106.49607188391914,\"obdSpeed\":0,\"gpsSpeed\":41,\"direction\":29,\"events\":null,\"utctime\":\"2018-11-04 12:04:30\"},{\"id\":\"5bdee0546b00cd7d889f7372\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564751425439056,\"lng\":106.49606672102672,\"obdSpeed\":0,\"gpsSpeed\":55,\"direction\":204,\"events\":null,\"utctime\":\"2018-11-04 12:04:36\"},{\"id\":\"5bdee0576b00cd7d889f7373\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564710619119268,\"lng\":106.49604960825872,\"obdSpeed\":0,\"gpsSpeed\":69,\"direction\":200,\"events\":null,\"utctime\":\"2018-11-04 12:04:38\"},{\"id\":\"5bdee05c6b00cd7d889f7374\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564595867614234,\"lng\":106.495990107779,\"obdSpeed\":0,\"gpsSpeed\":75,\"direction\":227,\"events\":null,\"utctime\":\"2018-11-04 12:04:44\"},{\"id\":\"5bdee05d6b00cd7d889f7375\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564595867614234,\"lng\":106.495990107779,\"obdSpeed\":0,\"gpsSpeed\":85,\"direction\":227,\"events\":null,\"utctime\":\"2018-11-04 12:04:44\"},{\"id\":\"5bdee05e6b00cd7d889f7376\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564595867614234,\"lng\":106.495990107779,\"obdSpeed\":0,\"gpsSpeed\":95,\"direction\":227,\"events\":null,\"utctime\":\"2018-11-04 12:04:44\"},{\"id\":\"5bdee0606b00cd7d889f7377\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.564611990970747,\"lng\":106.49582340451262,\"obdSpeed\":0,\"gpsSpeed\":76,\"direction\":283,\"events\":null,\"utctime\":\"2018-11-04 12:04:48\"},{\"id\":\"5bdee06a6b00cd7d889f7378\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56504803742935,\"lng\":106.4948395015126,\"obdSpeed\":0,\"gpsSpeed\":68,\"direction\":295,\"events\":null,\"utctime\":\"2018-11-04 12:04:58\"},{\"id\":\"5bdee0756b00cd7d889f7379\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56554884151008,\"lng\":106.49374464396364,\"obdSpeed\":0,\"gpsSpeed\":84,\"direction\":298,\"events\":null,\"utctime\":\"2018-11-04 12:05:08\"},{\"id\":\"5bdee0806b00cd7d889f737a\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.566241993487807,\"lng\":106.49240291629309,\"obdSpeed\":0,\"gpsSpeed\":80,\"direction\":306,\"events\":null,\"utctime\":\"2018-11-04 12:05:20\"},{\"id\":\"5bdee0af6b00cd7d889f737b\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.569945088345357,\"lng\":106.4879344211406,\"obdSpeed\":0,\"gpsSpeed\":100,\"direction\":319,\"events\":null,\"utctime\":\"2018-11-04 12:06:06\"},{\"id\":\"5bdee0b26b00cd7d889f737c\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.569952866537992,\"lng\":106.48792107276816,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":319,\"events\":null,\"utctime\":\"2018-11-04 12:06:08\"},{\"id\":\"5bdee0c36b00cd7d889f737d\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.56996366956299,\"lng\":106.48790472691822,\"obdSpeed\":0,\"gpsSpeed\":120,\"direction\":319,\"events\":null,\"utctime\":\"2018-11-04 12:06:26\"},{\"id\":\"5bdee0c56b00cd7d889f737e\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.569963673324004,\"lng\":106.48790445460675,\"obdSpeed\":0,\"gpsSpeed\":100,\"direction\":319,\"events\":null,\"utctime\":\"2018-11-04 12:06:28\"},{\"id\":\"5bdee0c76b00cd7d889f737f\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.569966328706776,\"lng\":106.48788893117928,\"obdSpeed\":0,\"gpsSpeed\":73,\"direction\":317,\"events\":null,\"utctime\":\"2018-11-04 12:06:30\"},{\"id\":\"5bdee0ca6b00cd7d889f7380\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.570106363940468,\"lng\":106.48778454043519,\"obdSpeed\":0,\"gpsSpeed\":100,\"direction\":329,\"events\":null,\"utctime\":\"2018-11-04 12:06:34\"},{\"id\":\"5bdee0ce6b00cd7d889f7381\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.570217536364623,\"lng\":106.48770821599123,\"obdSpeed\":0,\"gpsSpeed\":85,\"direction\":328,\"events\":null,\"utctime\":\"2018-11-04 12:06:36\"},{\"id\":\"5bdee0cf6b00cd7d889f7382\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57033735077229,\"lng\":106.48761527285359,\"obdSpeed\":0,\"gpsSpeed\":97,\"direction\":327,\"events\":null,\"utctime\":\"2018-11-04 12:06:38\"},{\"id\":\"5bdee0e46b00cd7d889f7383\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.572447436114906,\"lng\":106.48611065552711,\"obdSpeed\":0,\"gpsSpeed\":80,\"direction\":352,\"events\":null,\"utctime\":\"2018-11-04 12:07:00\"},{\"id\":\"5bdee0e86b00cd7d889f7384\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57280386549219,\"lng\":106.48614333582626,\"obdSpeed\":0,\"gpsSpeed\":70,\"direction\":14,\"events\":null,\"utctime\":\"2018-11-04 12:07:04\"},{\"id\":\"5bdee0ea6b00cd7d889f7385\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.572975655920807,\"lng\":106.48626549374559,\"obdSpeed\":0,\"gpsSpeed\":95,\"direction\":28,\"events\":null,\"utctime\":\"2018-11-04 12:07:06\"},{\"id\":\"5bdee0ee6b00cd7d889f7386\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.573168322773608,\"lng\":106.48661368879135,\"obdSpeed\":0,\"gpsSpeed\":97,\"direction\":67,\"events\":null,\"utctime\":\"2018-11-04 12:07:10\"},{\"id\":\"5bdee0f46b00cd7d889f7387\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57343317330911,\"lng\":106.48711513703245,\"obdSpeed\":0,\"gpsSpeed\":125,\"direction\":38,\"events\":null,\"utctime\":\"2018-11-04 12:07:16\"},{\"id\":\"5bdee0f66b00cd7d889f7388\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57356009625983,\"lng\":106.48715343430469,\"obdSpeed\":0,\"gpsSpeed\":125,\"direction\":15,\"events\":null,\"utctime\":\"2018-11-04 12:07:18\"},{\"id\":\"5bdee0f86b00cd7d889f7389\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.573694675264736,\"lng\":106.48712990464419,\"obdSpeed\":0,\"gpsSpeed\":59,\"direction\":358,\"events\":null,\"utctime\":\"2018-11-04 12:07:20\"},{\"id\":\"5bdee0fe6b00cd7d889f738a\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.574220654061,\"lng\":106.48710251271562,\"obdSpeed\":0,\"gpsSpeed\":75,\"direction\":2,\"events\":null,\"utctime\":\"2018-11-04 12:07:26\"},{\"id\":\"5bdee1006b00cd7d889f738b\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57440432059695,\"lng\":106.4871554658717,\"obdSpeed\":0,\"gpsSpeed\":97,\"direction\":16,\"events\":null,\"utctime\":\"2018-11-04 12:07:28\"},{\"id\":\"5bdee1086b00cd7d889f738c\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.575063864487106,\"lng\":106.48744521428753,\"obdSpeed\":0,\"gpsSpeed\":35,\"direction\":30,\"events\":null,\"utctime\":\"2018-11-04 12:07:36\"},{\"id\":\"5bdee10e6b00cd7d889f738d\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57544474366887,\"lng\":106.48780652671992,\"obdSpeed\":0,\"gpsSpeed\":31,\"direction\":42,\"events\":null,\"utctime\":\"2018-11-04 12:07:42\"},{\"id\":\"5bdee1206b00cd7d889f738e\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57622878549002,\"lng\":106.48917026811543,\"obdSpeed\":0,\"gpsSpeed\":37,\"direction\":70,\"events\":null,\"utctime\":\"2018-11-04 12:08:00\"},{\"id\":\"5bdee12a6b00cd7d889f738f\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57638106951512,\"lng\":106.48991227146617,\"obdSpeed\":0,\"gpsSpeed\":29,\"direction\":76,\"events\":null,\"utctime\":\"2018-11-04 12:08:08\"},{\"id\":\"5bdee1326b00cd7d889f7390\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576490785100077,\"lng\":106.49028593343992,\"obdSpeed\":0,\"gpsSpeed\":14,\"direction\":64,\"events\":null,\"utctime\":\"2018-11-04 12:08:16\"},{\"id\":\"5bdee1366b00cd7d889f7391\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576510186648896,\"lng\":106.49031749279969,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":64,\"events\":null,\"utctime\":\"2018-11-04 12:08:20\"},{\"id\":\"5bdee1376b00cd7d889f7392\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576510256621336,\"lng\":106.49033355320455,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":64,\"events\":null,\"utctime\":\"2018-11-04 12:08:22\"},{\"id\":\"5bdee1386b00cd7d889f7393\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576510256621336,\"lng\":106.49033355320455,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":64,\"events\":null,\"utctime\":\"2018-11-04 12:08:22\"},{\"id\":\"5bdee1386b00cd7d889f7394\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576519668886142,\"lng\":106.49036158248872,\"obdSpeed\":0,\"gpsSpeed\":7,\"direction\":58,\"events\":null,\"utctime\":\"2018-11-04 12:08:24\"},{\"id\":\"5bdee13e6b00cd7d889f7395\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.5767832383629,\"lng\":106.49056032903223,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":17,\"events\":null,\"utctime\":\"2018-11-04 12:08:30\"},{\"id\":\"5bdee1406b00cd7d889f7396\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.5767832383629,\"lng\":106.49056032903223,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":17,\"events\":null,\"utctime\":\"2018-11-04 12:08:30\"},{\"id\":\"5bdee1406b00cd7d889f7397\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.576933466258048,\"lng\":106.49045240143555,\"obdSpeed\":0,\"gpsSpeed\":33,\"direction\":351,\"events\":null,\"utctime\":\"2018-11-04 12:08:32\"},{\"id\":\"5bdee1486b00cd7d889f7398\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.577416728226225,\"lng\":106.49036621804949,\"obdSpeed\":0,\"gpsSpeed\":29,\"direction\":352,\"events\":null,\"utctime\":\"2018-11-04 12:08:38\"},{\"id\":\"5bdee1666b00cd7d889f7399\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.57919995306262,\"lng\":106.4901835369193,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":354,\"events\":null,\"utctime\":\"2018-11-04 12:09:08\"},{\"id\":\"5bdee1776b00cd7d889f739a\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.581074097742395,\"lng\":106.4900167663634,\"obdSpeed\":69,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"5\"],\"utctime\":\"2018-11-04 12:09:26\"},{\"id\":\"5bdee1846b00cd7d889f739b\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.582798905270035,\"lng\":106.48984328910385,\"obdSpeed\":0,\"gpsSpeed\":51,\"direction\":358,\"events\":null,\"utctime\":\"2018-11-04 12:09:38\"},{\"id\":\"5bdee1996b00cd7d889f739c\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.58487891197739,\"lng\":106.48971706709771,\"obdSpeed\":0,\"gpsSpeed\":22,\"direction\":354,\"events\":null,\"utctime\":\"2018-11-04 12:09:58\"},{\"id\":\"5bdee1a06b00cd7d889f739d\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.584902955511556,\"lng\":106.4897031588197,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":356,\"events\":null,\"utctime\":\"2018-11-04 12:10:06\"},{\"id\":\"5bdee1a26b00cd7d889f739e\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.584898693563428,\"lng\":106.48969717388624,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":356,\"events\":null,\"utctime\":\"2018-11-04 12:10:08\"},{\"id\":\"5bdee1a26b00cd7d889f739f\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.584898693563428,\"lng\":106.48969717388624,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":356,\"events\":null,\"utctime\":\"2018-11-04 12:10:08\"},{\"id\":\"5bdee1b46b00cd7d889f73a0\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.585909498409606,\"lng\":106.48962727951243,\"obdSpeed\":0,\"gpsSpeed\":33,\"direction\":353,\"events\":null,\"utctime\":\"2018-11-04 12:10:26\"},{\"id\":\"5bdee1c06b00cd7d889f73a1\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.587023638087263,\"lng\":106.4895148107326,\"obdSpeed\":0,\"gpsSpeed\":37,\"direction\":352,\"events\":null,\"utctime\":\"2018-11-04 12:10:38\"},{\"id\":\"5bdee1de6b00cd7d889f73a2\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.58883847356992,\"lng\":106.48926197986368,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":359,\"events\":null,\"utctime\":\"2018-11-04 12:11:10\"},{\"id\":\"5bdee1e06b00cd7d889f73a3\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.58883847356992,\"lng\":106.48926197986368,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":359,\"events\":null,\"utctime\":\"2018-11-04 12:11:10\"},{\"id\":\"5bdee1e16b00cd7d889f73a4\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.58884249862225,\"lng\":106.48926524292364,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":359,\"events\":null,\"utctime\":\"2018-11-04 12:11:12\"},{\"id\":\"5bdee1fa6b00cd7d889f73a5\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.5903496221372,\"lng\":106.48919378497779,\"obdSpeed\":41,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"5\"],\"utctime\":\"2018-11-04 12:11:36\"},{\"id\":\"5bdee1fc6b00cd7d889f73a6\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.59068848722969,\"lng\":106.48916187196417,\"obdSpeed\":0,\"gpsSpeed\":33,\"direction\":353,\"events\":null,\"utctime\":\"2018-11-04 12:11:40\"},{\"id\":\"5bdee2186b00cd7d889f73a7\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.59304635391706,\"lng\":106.48898809133942,\"obdSpeed\":0,\"gpsSpeed\":22,\"direction\":1,\"events\":null,\"utctime\":\"2018-11-04 12:12:08\"},{\"id\":\"5bdee21f6b00cd7d889f73a8\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.593322208081137,\"lng\":106.48898429450838,\"obdSpeed\":0,\"gpsSpeed\":9,\"direction\":5,\"events\":null,\"utctime\":\"2018-11-04 12:12:14\"},{\"id\":\"5bdee22c6b00cd7d889f73a9\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.59335600307495,\"lng\":106.48899215881336,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":5,\"events\":null,\"utctime\":\"2018-11-04 12:12:26\"},{\"id\":\"5bdee2306b00cd7d889f73aa\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.593357973622645,\"lng\":106.48898671165178,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":5,\"events\":null,\"utctime\":\"2018-11-04 12:12:30\"},{\"id\":\"5bdee2316b00cd7d889f73ab\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.5933614558834,\"lng\":106.48898997561372,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":5,\"events\":null,\"utctime\":\"2018-11-04 12:12:32\"},{\"id\":\"5bdee2346b00cd7d889f73ac\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.593501738521837,\"lng\":106.48902523998778,\"obdSpeed\":23,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"5\"],\"utctime\":\"2018-11-04 12:12:36\"},{\"id\":\"5bdee2386b00cd7d889f73ad\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.593717538595335,\"lng\":106.48907159770832,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":10,\"events\":null,\"utctime\":\"2018-11-04 12:12:40\"},{\"id\":\"5bdee2466b00cd7d889f73ae\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.594827238948554,\"lng\":106.4890534356809,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":345,\"events\":null,\"utctime\":\"2018-11-04 12:12:54\"},{\"id\":\"5bdee24c6b00cd7d889f73af\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.59507137369822,\"lng\":106.48898760150493,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":355,\"events\":null,\"utctime\":\"2018-11-04 12:12:58\"},{\"id\":\"5bdee24c6b00cd7d889f73b0\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.5951930127005,\"lng\":106.4889972949184,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":5,\"events\":null,\"utctime\":\"2018-11-04 12:13:00\"},{\"id\":\"5bdee2546b00cd7d889f73b1\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.595578592689492,\"lng\":106.48912519072049,\"obdSpeed\":0,\"gpsSpeed\":14,\"direction\":29,\"events\":null,\"utctime\":\"2018-11-04 12:13:08\"},{\"id\":\"5bdee2566b00cd7d889f73b2\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.595649869413307,\"lng\":106.48917005116648,\"obdSpeed\":0,\"gpsSpeed\":14,\"direction\":31,\"events\":null,\"utctime\":\"2018-11-04 12:13:10\"},{\"id\":\"5bdee2586b00cd7d889f73b3\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.59571324648077,\"lng\":106.48930040671755,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":72,\"events\":null,\"utctime\":\"2018-11-04 12:13:12\"},{\"id\":\"5bdee25a6b00cd7d889f73b4\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.59571822253788,\"lng\":106.48948035996533,\"obdSpeed\":0,\"gpsSpeed\":31,\"direction\":88,\"events\":null,\"utctime\":\"2018-11-04 12:13:14\"},{\"id\":\"5bdee2706b00cd7d889f73b5\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.595816279145456,\"lng\":106.491498936309,\"obdSpeed\":0,\"gpsSpeed\":12,\"direction\":30,\"events\":null,\"utctime\":\"2018-11-04 12:13:36\"},{\"id\":\"5bdee2726b00cd7d889f73b6\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.59591341050077,\"lng\":106.49147245241633,\"obdSpeed\":0,\"gpsSpeed\":20,\"direction\":0,\"events\":null,\"utctime\":\"2018-11-04 12:13:38\"},{\"id\":\"5bdee2746b00cd7d889f73b7\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.596040068224987,\"lng\":106.49147179835862,\"obdSpeed\":0,\"gpsSpeed\":25,\"direction\":356,\"events\":null,\"utctime\":\"2018-11-04 12:13:40\"},{\"id\":\"5bdee2746b00cd7d889f73b8\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.596040068224987,\"lng\":106.49147179835862,\"obdSpeed\":0,\"gpsSpeed\":25,\"direction\":356,\"events\":null,\"utctime\":\"2018-11-04 12:13:40\"},{\"id\":\"5bdee27a6b00cd7d889f73b9\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.59648892120998,\"lng\":106.49147032435653,\"obdSpeed\":0,\"gpsSpeed\":29,\"direction\":2,\"events\":null,\"utctime\":\"2018-11-04 12:13:46\"},{\"id\":\"5bdee27c6b00cd7d889f73ba\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.59662735386293,\"lng\":106.4914372751855,\"obdSpeed\":0,\"gpsSpeed\":27,\"direction\":357,\"events\":null,\"utctime\":\"2018-11-04 12:13:48\"},{\"id\":\"5bdee27e6b00cd7d889f73bb\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.596780628983826,\"lng\":106.49143333521795,\"obdSpeed\":0,\"gpsSpeed\":29,\"direction\":0,\"events\":null,\"utctime\":\"2018-11-04 12:13:50\"},{\"id\":\"5bdee2826b00cd7d889f73bc\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.59718822618356,\"lng\":106.4914577602861,\"obdSpeed\":0,\"gpsSpeed\":40,\"direction\":0,\"events\":null,\"utctime\":\"2018-11-04 12:13:54\"},{\"id\":\"5bdee2846b00cd7d889f73bd\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.59739104515766,\"lng\":106.49143826870213,\"obdSpeed\":0,\"gpsSpeed\":40,\"direction\":357,\"events\":null,\"utctime\":\"2018-11-04 12:13:56\"},{\"id\":\"5bdee2866b00cd7d889f73be\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.59762349059986,\"lng\":106.49143617239149,\"obdSpeed\":0,\"gpsSpeed\":48,\"direction\":1,\"events\":null,\"utctime\":\"2018-11-04 12:13:58\"},{\"id\":\"5bdee28a6b00cd7d889f73bf\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.59811954198693,\"lng\":106.49152612699795,\"obdSpeed\":0,\"gpsSpeed\":49,\"direction\":12,\"events\":null,\"utctime\":\"2018-11-04 12:14:02\"},{\"id\":\"5bdee28e6b00cd7d889f73c0\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.598546557955665,\"lng\":106.49181508327335,\"obdSpeed\":0,\"gpsSpeed\":44,\"direction\":28,\"events\":null,\"utctime\":\"2018-11-04 12:14:06\"},{\"id\":\"5bdee2936b00cd7d889f73c1\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.598884677905488,\"lng\":106.4920562050579,\"obdSpeed\":0,\"gpsSpeed\":35,\"direction\":24,\"events\":null,\"utctime\":\"2018-11-04 12:14:10\"},{\"id\":\"5bdee2936b00cd7d889f73c2\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.598884677905488,\"lng\":106.4920562050579,\"obdSpeed\":32,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"6\"],\"utctime\":\"2018-11-04 12:14:10\"},{\"id\":\"5bdee2946b00cd7d889f73c3\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.599042645850158,\"lng\":106.49206887279222,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":352,\"events\":null,\"utctime\":\"2018-11-04 12:14:12\"},{\"id\":\"5bdee2986b00cd7d889f73c4\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.599158789348003,\"lng\":106.49180480900496,\"obdSpeed\":0,\"gpsSpeed\":27,\"direction\":274,\"events\":null,\"utctime\":\"2018-11-04 12:14:16\"},{\"id\":\"5bdee29a6b00cd7d889f73c5\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.599158789348003,\"lng\":106.49180480900496,\"obdSpeed\":41,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"5\"],\"utctime\":\"2018-11-04 12:14:16\"},{\"id\":\"5bdee2a06b00cd7d889f73c6\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.599212695824235,\"lng\":106.4911006870642,\"obdSpeed\":0,\"gpsSpeed\":18,\"direction\":292,\"events\":null,\"utctime\":\"2018-11-04 12:14:24\"},{\"id\":\"5bdee2a26b00cd7d889f73c7\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.599212695824235,\"lng\":106.4911006870642,\"obdSpeed\":19,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"6\"],\"utctime\":\"2018-11-04 12:14:24\"},{\"id\":\"5bdee2a26b00cd7d889f73c8\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.599271448169887,\"lng\":106.49104157929749,\"obdSpeed\":0,\"gpsSpeed\":12,\"direction\":336,\"events\":null,\"utctime\":\"2018-11-04 12:14:26\"},{\"id\":\"5bdee2a46b00cd7d889f73c9\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.5993579278091,\"lng\":106.49104450720637,\"obdSpeed\":0,\"gpsSpeed\":14,\"direction\":6,\"events\":null,\"utctime\":\"2018-11-04 12:14:28\"},{\"id\":\"5bdee2a86b00cd7d889f73ca\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.599471015507955,\"lng\":106.49108987504385,\"obdSpeed\":37,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"5\"],\"utctime\":\"2018-11-04 12:14:30\"},{\"id\":\"5bdee2b16b00cd7d889f73cb\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.600348139949812,\"lng\":106.49126749711229,\"obdSpeed\":0,\"gpsSpeed\":38,\"direction\":7,\"events\":null,\"utctime\":\"2018-11-04 12:14:40\"},{\"id\":\"5bdee2c56b00cd7d889f73cc\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.600685509169065,\"lng\":106.49126888689258,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":19,\"events\":null,\"utctime\":\"2018-11-04 12:15:00\"},{\"id\":\"5bdee2c76b00cd7d889f73cd\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.60068359114347,\"lng\":106.4912705212814,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":19,\"events\":null,\"utctime\":\"2018-11-04 12:15:02\"},{\"id\":\"5bdee2c96b00cd7d889f73ce\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.600683907935238,\"lng\":106.49126671067933,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":359,\"events\":null,\"utctime\":\"2018-11-04 12:15:04\"},{\"id\":\"5bdee2cf6b00cd7d889f73cf\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.60089124041542,\"lng\":106.49136971474076,\"obdSpeed\":0,\"gpsSpeed\":12,\"direction\":16,\"events\":null,\"utctime\":\"2018-11-04 12:15:10\"},{\"id\":\"5bdee2d46b00cd7d889f73d0\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.60114757235723,\"lng\":106.49141226452622,\"obdSpeed\":0,\"gpsSpeed\":22,\"direction\":358,\"events\":null,\"utctime\":\"2018-11-04 12:15:16\"},{\"id\":\"5bdee2db6b00cd7d889f73d1\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.60154465768197,\"lng\":106.4913869516094,\"obdSpeed\":0,\"gpsSpeed\":25,\"direction\":355,\"events\":null,\"utctime\":\"2018-11-04 12:15:22\"},{\"id\":\"5bdee2de6b00cd7d889f73d2\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.601797818015,\"lng\":106.49142270579787,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":1,\"events\":null,\"utctime\":\"2018-11-04 12:15:26\"},{\"id\":\"5bdee2e06b00cd7d889f73d3\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.601926284307297,\"lng\":106.4914302403366,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":358,\"events\":null,\"utctime\":\"2018-11-04 12:15:28\"},{\"id\":\"5bdee2e86b00cd7d889f73d4\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.60236344200833,\"lng\":106.49145662442079,\"obdSpeed\":0,\"gpsSpeed\":14,\"direction\":359,\"events\":null,\"utctime\":\"2018-11-04 12:15:36\"},{\"id\":\"5bdee2ea6b00cd7d889f73d5\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.6024427732173,\"lng\":106.49144514223676,\"obdSpeed\":0,\"gpsSpeed\":14,\"direction\":0,\"events\":null,\"utctime\":\"2018-11-04 12:15:38\"},{\"id\":\"5bdee2ed6b00cd7d889f73d6\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.602517884627723,\"lng\":106.49144645461439,\"obdSpeed\":0,\"gpsSpeed\":14,\"direction\":0,\"events\":null,\"utctime\":\"2018-11-04 12:15:40\"},{\"id\":\"5bdee2ee6b00cd7d889f73d7\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.602622633503696,\"lng\":106.49146435010513,\"obdSpeed\":0,\"gpsSpeed\":18,\"direction\":359,\"events\":null,\"utctime\":\"2018-11-04 12:15:42\"},{\"id\":\"5bdee2f26b00cd7d889f73d8\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.602715936110304,\"lng\":106.49146401850267,\"obdSpeed\":37,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"5\"],\"utctime\":\"2018-11-04 12:15:44\"},{\"id\":\"5bdee2f26b00cd7d889f73d9\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.602797040018206,\"lng\":106.49132625206359,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":304,\"events\":null,\"utctime\":\"2018-11-04 12:15:46\"},{\"id\":\"5bdee2f46b00cd7d889f73da\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.602770635013034,\"lng\":106.49117575833604,\"obdSpeed\":0,\"gpsSpeed\":27,\"direction\":268,\"events\":null,\"utctime\":\"2018-11-04 12:15:48\"},{\"id\":\"5bdee3026b00cd7d889f73db\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.602774272219847,\"lng\":106.48968569398893,\"obdSpeed\":37,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"6\"],\"utctime\":\"2018-11-04 12:16:00\"},{\"id\":\"5bdee3026b00cd7d889f73dc\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.602841099531734,\"lng\":106.48948854756745,\"obdSpeed\":0,\"gpsSpeed\":33,\"direction\":296,\"events\":null,\"utctime\":\"2018-11-04 12:16:02\"},{\"id\":\"5bdee3046b00cd7d889f73dd\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.602975908503673,\"lng\":106.48940406560875,\"obdSpeed\":0,\"gpsSpeed\":27,\"direction\":339,\"events\":null,\"utctime\":\"2018-11-04 12:16:04\"},{\"id\":\"5bdee3066b00cd7d889f73de\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.602975908503673,\"lng\":106.48940406560875,\"obdSpeed\":41,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"5\"],\"utctime\":\"2018-11-04 12:16:04\"},{\"id\":\"5bdee3066b00cd7d889f73df\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.603139263223227,\"lng\":106.48937701104762,\"obdSpeed\":0,\"gpsSpeed\":31,\"direction\":355,\"events\":null,\"utctime\":\"2018-11-04 12:16:06\"},{\"id\":\"5bdee30a6b00cd7d889f73e0\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.6034635974156,\"lng\":106.48938035176337,\"obdSpeed\":0,\"gpsSpeed\":31,\"direction\":2,\"events\":null,\"utctime\":\"2018-11-04 12:16:10\"},{\"id\":\"5bdee30b6b00cd7d889f73e1\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.6034635974156,\"lng\":106.48938035176337,\"obdSpeed\":0,\"gpsSpeed\":31,\"direction\":2,\"events\":null,\"utctime\":\"2018-11-04 12:16:10\"},{\"id\":\"5bdee3106b00cd7d889f73e2\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.603671383260398,\"lng\":106.48939873999285,\"obdSpeed\":0,\"gpsSpeed\":14,\"direction\":3,\"events\":null,\"utctime\":\"2018-11-04 12:16:14\"},{\"id\":\"5bdee3256b00cd7d889f73e3\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.603734690215024,\"lng\":106.48936929911589,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":2,\"events\":null,\"utctime\":\"2018-11-04 12:16:36\"},{\"id\":\"5bdee3266b00cd7d889f73e4\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.6037464819549,\"lng\":106.4893801822034,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":359,\"events\":null,\"utctime\":\"2018-11-04 12:16:38\"},{\"id\":\"5bdee3286b00cd7d889f73e5\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.6037464819549,\"lng\":106.4893801822034,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":359,\"events\":null,\"utctime\":\"2018-11-04 12:16:38\"},{\"id\":\"5bdee3296b00cd7d889f73e6\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.60377739776912,\"lng\":106.48938043613092,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":359,\"events\":null,\"utctime\":\"2018-11-04 12:16:40\"},{\"id\":\"5bdee32a6b00cd7d889f73e7\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.603853619947245,\"lng\":106.4894005377427,\"obdSpeed\":0,\"gpsSpeed\":16,\"direction\":3,\"events\":null,\"utctime\":\"2018-11-04 12:16:42\"},{\"id\":\"5bdee33b6b00cd7d889f73e8\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.60470634762689,\"lng\":106.48946266892133,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":359,\"events\":null,\"utctime\":\"2018-11-04 12:16:56\"},{\"id\":\"5bdee3406b00cd7d889f73e9\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.605242950401568,\"lng\":106.48945339510317,\"obdSpeed\":0,\"gpsSpeed\":33,\"direction\":0,\"events\":null,\"utctime\":\"2018-11-04 12:17:04\"},{\"id\":\"5bdee3476b00cd7d889f73ea\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.605698498269813,\"lng\":106.48944118042226,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":0,\"events\":null,\"utctime\":\"2018-11-04 12:17:10\"},{\"id\":\"5bdee34a6b00cd7d889f73eb\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.60594213661544,\"lng\":106.48943534099101,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":353,\"events\":null,\"utctime\":\"2018-11-04 12:17:14\"},{\"id\":\"5bdee34e6b00cd7d889f73ec\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.606199653067698,\"lng\":106.48944692156012,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":1,\"events\":null,\"utctime\":\"2018-11-04 12:17:18\"},{\"id\":\"5bdee3526b00cd7d889f73ed\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.60644035055358,\"lng\":106.48945878537953,\"obdSpeed\":0,\"gpsSpeed\":22,\"direction\":2,\"events\":null,\"utctime\":\"2018-11-04 12:17:22\"},{\"id\":\"5bdee3646b00cd7d889f73ee\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.607582489189642,\"lng\":106.48948114499986,\"obdSpeed\":0,\"gpsSpeed\":29,\"direction\":357,\"events\":null,\"utctime\":\"2018-11-04 12:17:40\"},{\"id\":\"5bdee3656b00cd7d889f73ef\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.607582489189642,\"lng\":106.48948114499986,\"obdSpeed\":0,\"gpsSpeed\":29,\"direction\":357,\"events\":null,\"utctime\":\"2018-11-04 12:17:40\"},{\"id\":\"5bdee36a6b00cd7d889f73f0\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.608166933508073,\"lng\":106.4894863534932,\"obdSpeed\":0,\"gpsSpeed\":44,\"direction\":1,\"events\":null,\"utctime\":\"2018-11-04 12:17:46\"},{\"id\":\"5bdee36d6b00cd7d889f73f1\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.60840474504124,\"lng\":106.48951212556972,\"obdSpeed\":0,\"gpsSpeed\":46,\"direction\":2,\"events\":null,\"utctime\":\"2018-11-04 12:17:48\"},{\"id\":\"5bdee36d6b00cd7d889f73f2\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.60840474504124,\"lng\":106.48951212556972,\"obdSpeed\":0,\"gpsSpeed\":46,\"direction\":2,\"events\":null,\"utctime\":\"2018-11-04 12:17:48\"},{\"id\":\"5bdee36e6b00cd7d889f73f3\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.60840474504124,\"lng\":106.48951212556972,\"obdSpeed\":0,\"gpsSpeed\":46,\"direction\":2,\"events\":null,\"utctime\":\"2018-11-04 12:17:48\"},{\"id\":\"5bdee36f6b00cd7d889f73f4\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.608649599358053,\"lng\":106.48953871447637,\"obdSpeed\":0,\"gpsSpeed\":48,\"direction\":4,\"events\":null,\"utctime\":\"2018-11-04 12:17:50\"},{\"id\":\"5bdee36f6b00cd7d889f73f5\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.608649599358053,\"lng\":106.48953871447637,\"obdSpeed\":0,\"gpsSpeed\":48,\"direction\":4,\"events\":null,\"utctime\":\"2018-11-04 12:17:50\"},{\"id\":\"5bdee3716b00cd7d889f73f6\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.608911215505394,\"lng\":106.4895486933136,\"obdSpeed\":0,\"gpsSpeed\":51,\"direction\":3,\"events\":null,\"utctime\":\"2018-11-04 12:17:52\"},{\"id\":\"5bdee3716b00cd7d889f73f7\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.608911215505394,\"lng\":106.4895486933136,\"obdSpeed\":0,\"gpsSpeed\":51,\"direction\":3,\"events\":null,\"utctime\":\"2018-11-04 12:17:52\"},{\"id\":\"5bdee3726b00cd7d889f73f8\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.608911215505394,\"lng\":106.4895486933136,\"obdSpeed\":0,\"gpsSpeed\":51,\"direction\":3,\"events\":null,\"utctime\":\"2018-11-04 12:17:52\"},{\"id\":\"5bdee3726b00cd7d889f73f9\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.60917167722119,\"lng\":106.48956412082697,\"obdSpeed\":0,\"gpsSpeed\":51,\"direction\":3,\"events\":null,\"utctime\":\"2018-11-04 12:17:54\"},{\"id\":\"5bdee3736b00cd7d889f73fa\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.60917167722119,\"lng\":106.48956412082697,\"obdSpeed\":0,\"gpsSpeed\":51,\"direction\":3,\"events\":null,\"utctime\":\"2018-11-04 12:17:54\"},{\"id\":\"5bdee3736b00cd7d889f73fb\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.60917167722119,\"lng\":106.48956412082697,\"obdSpeed\":0,\"gpsSpeed\":51,\"direction\":3,\"events\":null,\"utctime\":\"2018-11-04 12:17:54\"},{\"id\":\"5bdee3746b00cd7d889f73fc\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.60917167722119,\"lng\":106.48956412082697,\"obdSpeed\":0,\"gpsSpeed\":51,\"direction\":3,\"events\":null,\"utctime\":\"2018-11-04 12:17:54\"},{\"id\":\"5bdee3756b00cd7d889f73fd\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.609440932631273,\"lng\":106.48959179980288,\"obdSpeed\":0,\"gpsSpeed\":51,\"direction\":2,\"events\":null,\"utctime\":\"2018-11-04 12:17:56\"},{\"id\":\"5bdee37c6b00cd7d889f73fe\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.610462415604623,\"lng\":106.48963532268071,\"obdSpeed\":0,\"gpsSpeed\":51,\"direction\":7,\"events\":null,\"utctime\":\"2018-11-04 12:18:04\"},{\"id\":\"5bdee3826b00cd7d889f73ff\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.611158789061854,\"lng\":106.48969204132938,\"obdSpeed\":0,\"gpsSpeed\":44,\"direction\":358,\"events\":null,\"utctime\":\"2018-11-04 12:18:10\"},{\"id\":\"5bdee3836b00cd7d889f7400\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.611158789061854,\"lng\":106.48969204132938,\"obdSpeed\":0,\"gpsSpeed\":44,\"direction\":358,\"events\":null,\"utctime\":\"2018-11-04 12:18:10\"},{\"id\":\"5bdee3846b00cd7d889f7401\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.611392313853138,\"lng\":106.48969362002828,\"obdSpeed\":0,\"gpsSpeed\":48,\"direction\":0,\"events\":null,\"utctime\":\"2018-11-04 12:18:12\"},{\"id\":\"5bdee3906b00cd7d889f7402\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.612827465961956,\"lng\":106.48950794690923,\"obdSpeed\":0,\"gpsSpeed\":44,\"direction\":346,\"events\":null,\"utctime\":\"2018-11-04 12:18:24\"},{\"id\":\"5bdee3986b00cd7d889f7403\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.613463464591177,\"lng\":106.48932790068486,\"obdSpeed\":0,\"gpsSpeed\":22,\"direction\":2,\"events\":null,\"utctime\":\"2018-11-04 12:18:32\"},{\"id\":\"5bdee39c6b00cd7d889f7404\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.613593891602026,\"lng\":106.48947735220251,\"obdSpeed\":0,\"gpsSpeed\":16,\"direction\":56,\"events\":null,\"utctime\":\"2018-11-04 12:18:36\"},{\"id\":\"5bdee39e6b00cd7d889f7405\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.613593891602026,\"lng\":106.48947735220251,\"obdSpeed\":0,\"gpsSpeed\":16,\"direction\":56,\"events\":null,\"utctime\":\"2018-11-04 12:18:36\"},{\"id\":\"5bdee3a16b00cd7d889f7406\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.613646257176445,\"lng\":106.48951818365484,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":65,\"events\":null,\"utctime\":\"2018-11-04 12:18:40\"},{\"id\":\"5bdee3a16b00cd7d889f7407\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.613646257176445,\"lng\":106.48951818365484,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":65,\"events\":null,\"utctime\":\"2018-11-04 12:18:40\"},{\"id\":\"5bdee3a36b00cd7d889f7408\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.61366112052125,\"lng\":106.48950157484647,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":65,\"events\":null,\"utctime\":\"2018-11-04 12:18:42\"},{\"id\":\"5bdee3a46b00cd7d889f7409\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.613678093299995,\"lng\":106.48951055718491,\"obdSpeed\":0,\"gpsSpeed\":3,\"direction\":71,\"events\":null,\"utctime\":\"2018-11-04 12:18:44\"},{\"id\":\"5bdee3a56b00cd7d889f740a\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.613678093299995,\"lng\":106.48951055718491,\"obdSpeed\":0,\"gpsSpeed\":3,\"direction\":71,\"events\":null,\"utctime\":\"2018-11-04 12:18:44\"},{\"id\":\"5bdee3a86b00cd7d889f740b\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.61370538766036,\"lng\":106.48958133844364,\"obdSpeed\":23,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"5\"],\"utctime\":\"2018-11-04 12:18:46\"},{\"id\":\"5bdee3a86b00cd7d889f740c\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.613709616301545,\"lng\":106.48969513564792,\"obdSpeed\":0,\"gpsSpeed\":18,\"direction\":88,\"events\":null,\"utctime\":\"2018-11-04 12:18:48\"},{\"id\":\"5bdee3aa6b00cd7d889f740d\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.613650860773635,\"lng\":106.48981356575077,\"obdSpeed\":0,\"gpsSpeed\":20,\"direction\":119,\"events\":null,\"utctime\":\"2018-11-04 12:18:50\"},{\"id\":\"5bdee3ae6b00cd7d889f740e\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.61340832833695,\"lng\":106.48992194310554,\"obdSpeed\":0,\"gpsSpeed\":24,\"direction\":155,\"events\":null,\"utctime\":\"2018-11-04 12:18:54\"},{\"id\":\"5bdee3b26b00cd7d889f740f\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.613245659254147,\"lng\":106.49010762284995,\"obdSpeed\":0,\"gpsSpeed\":18,\"direction\":120,\"events\":null,\"utctime\":\"2018-11-04 12:18:58\"},{\"id\":\"5bdee3b46b00cd7d889f7410\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.613245659254147,\"lng\":106.49010762284995,\"obdSpeed\":0,\"gpsSpeed\":18,\"direction\":120,\"events\":null,\"utctime\":\"2018-11-04 12:18:58\"},{\"id\":\"5bdee3b56b00cd7d889f7411\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.61322329710024,\"lng\":106.49007414226209,\"obdSpeed\":0,\"gpsSpeed\":1,\"direction\":125,\"events\":null,\"utctime\":\"2018-11-04 12:19:00\"},{\"id\":\"5bdee3bc6b00cd7d889f7412\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.613226535992414,\"lng\":106.49005399717241,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":163,\"events\":null,\"utctime\":\"2018-11-04 12:19:06\"},{\"id\":\"5bdee3bf6b00cd7d889f7413\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.61322053385402,\"lng\":106.49005672022577,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":134,\"events\":null,\"utctime\":\"2018-11-04 12:19:10\"},{\"id\":\"5bdee3bf6b00cd7d889f7414\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.61322053385402,\"lng\":106.49005672022577,\"obdSpeed\":0,\"gpsSpeed\":0,\"direction\":134,\"events\":null,\"utctime\":\"2018-11-04 12:19:10\"},{\"id\":\"5bdee3c06b00cd7d889f7415\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.613170550164487,\"lng\":106.49006244367934,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":157,\"events\":null,\"utctime\":\"2018-11-04 12:19:12\"},{\"id\":\"5bdee3c16b00cd7d889f7416\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.613170550164487,\"lng\":106.49006244367934,\"obdSpeed\":0,\"gpsSpeed\":5,\"direction\":157,\"events\":null,\"utctime\":\"2018-11-04 12:19:12\"},{\"id\":\"5bdee3c56b00cd7d889f7417\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.613017981954076,\"lng\":106.49011500424228,\"obdSpeed\":0,\"gpsSpeed\":16,\"direction\":173,\"events\":null,\"utctime\":\"2018-11-04 12:19:16\"},{\"id\":\"5bdee3c66b00cd7d889f7418\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.612937779555953,\"lng\":106.49010793813913,\"obdSpeed\":0,\"gpsSpeed\":12,\"direction\":184,\"events\":null,\"utctime\":\"2018-11-04 12:19:18\"},{\"id\":\"5bdee3ca6b00cd7d889f7419\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.612826674785552,\"lng\":106.49009924374998,\"obdSpeed\":0,\"gpsSpeed\":12,\"direction\":162,\"events\":null,\"utctime\":\"2018-11-04 12:19:22\"},{\"id\":\"5bdee3d46b00cd7d889f741a\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.612687307486592,\"lng\":106.490180659988,\"obdSpeed\":28,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"5\"],\"utctime\":\"2018-11-04 12:19:26\"},{\"id\":\"5bdee3e76b00cd7d889f741b\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.612687307486592,\"lng\":106.490180659988,\"obdSpeed\":19,\"gpsSpeed\":0,\"direction\":0,\"events\":[\"6\"],\"utctime\":\"2018-11-04 12:19:26\"},{\"id\":\"5bdee4136b00cd7d889f741c\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.612687307486592,\"lng\":106.490180659988,\"obdSpeed\":19,\"gpsSpeed\":0,\"direction\":0,\"events\":null,\"utctime\":\"2018-11-04 12:20:35\"},{\"id\":\"5bdee4196b00cd7d889f741d\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.612687307486592,\"lng\":106.490180659988,\"obdSpeed\":19,\"gpsSpeed\":0,\"direction\":0,\"events\":null,\"utctime\":\"2018-11-04 12:20:41\"},{\"id\":\"5bdee41a6b00cd7d889f741e\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.612687307486592,\"lng\":106.490180659988,\"obdSpeed\":19,\"gpsSpeed\":0,\"direction\":0,\"events\":null,\"utctime\":\"2018-11-04 12:20:42\"},{\"id\":\"5bdee41d6b00cd7d889f741f\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.612687307486592,\"lng\":106.490180659988,\"obdSpeed\":19,\"gpsSpeed\":0,\"direction\":0,\"events\":null,\"utctime\":\"2018-11-04 12:20:45\"},{\"id\":\"5bdee4206b00cd7d889f7420\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.612687307486592,\"lng\":106.490180659988,\"obdSpeed\":19,\"gpsSpeed\":0,\"direction\":0,\"events\":null,\"utctime\":\"2018-11-04 12:20:48\"},{\"id\":\"5bdee4236b00cd7d889f7421\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.612687307486592,\"lng\":106.490180659988,\"obdSpeed\":19,\"gpsSpeed\":0,\"direction\":0,\"events\":null,\"utctime\":\"2018-11-04 12:20:51\"},{\"id\":\"5bdee4256b00cd7d889f7422\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.612687307486592,\"lng\":106.490180659988,\"obdSpeed\":19,\"gpsSpeed\":0,\"direction\":0,\"events\":null,\"utctime\":\"2018-11-04 12:20:53\"},{\"id\":\"5bdee4266b00cd7d889f7423\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.612687307486592,\"lng\":106.490180659988,\"obdSpeed\":19,\"gpsSpeed\":0,\"direction\":0,\"events\":null,\"utctime\":\"2018-11-04 12:20:54\"},{\"id\":\"5bdee4366b00cd7d889f7424\",\"vehicleID\":250,\"termianlID\":968,\"lat\":29.612687307486592,\"lng\":106.490180659988,\"obdSpeed\":19,\"gpsSpeed\":0,\"direction\":0,\"events\":null,\"utctime\":\"2018-11-04 12:21:10\"}]}"
  },
  {
    "path": "src/views/map/trajectory/index.less",
    "content": ".trajectory-wrap {\n  height: e('calc(100vh - 98px)');\n  overflow: hidden;\n  position: relative;\n  .behavior-list {\n    position: absolute;\n    left: 20px;\n    top: 20px;\n    z-index: 3;\n    list-style: none;\n    padding-left: 0;\n    li {\n      background-color: #333;\n      color: #fff;\n      border-radius: 4px;\n      margin-bottom: 10px;\n      text-align: center;\n      padding: 4px;\n      border: 1px solid #000;\n      .number {\n        display: block;\n      }\n      .txt {\n        display: block;\n      }\n      &:nth-child(1) {\n        background-color: #f6ffed;\n        border-color: #b7eb8f;\n        color: #52c41a;\n      }\n      &:nth-child(2) {\n        background-color: #fff7e6;\n        border-color: #ffd591;\n        color: #fa8c16;\n      }\n      &:nth-child(3) {\n        background-color: #fff1f0;\n        border-color: #ffa39e;\n        color: #f5222d;\n      }\n      &:nth-child(4) {\n        background-color: #fff0f6;\n        border-color: #ffadd2;\n        color: #eb2f96;\n      }\n      &:nth-child(5) {\n        background-color: #e6f7ff;\n        border-color: #91d5ff;\n        color: #1890ff;\n      }\n      &:nth-child(6) {\n        background-color: #f0f5ff;\n        border-color: #adc6ff;\n        color: #2f54eb;\n      }\n      &:nth-child(7) {\n        background-color: #e6fffb;\n        border-color: #87e8de;\n        color: #13c2c2;\n      }\n    }\n  }\n  #map {\n    height: e('calc(100vh - 98px)');\n  }\n  .speedContorl-img {\n    width: 34px;\n    margin-bottom: 10px;\n  }\n  .loc-change-box {\n    position: absolute;\n    bottom: 10px;\n    right: 20px;\n    z-index: 999;\n    display: flex;\n    flex-direction: column;\n    transition: all .5s ease-in-out;\n    .btn {\n      margin-left: 0px;\n      padding: 10px;\n      margin-bottom: 10px;\n    }\n    .less {\n      margin-bottom: 10px;\n    }\n  }\n  .detail-active {\n    top: 10px;\n  }\n  .loc-active {\n    bottom: 390px;\n  }\n  .table-active {\n    bottom: 0;\n  }\n  .carInfoBox{\n    height: 221px;\n    width: 313px;\n    background: url('../../../assets/infobox.png');\n  }\n\n  .monitorListItem0, .carInfoHeader0{\n    background-image: url('../../../assets/carrun_2x.png');\n    color: #333;\n  }\n  .monitorListItem1, .carInfoHeader1{\n    background-image: url('../../../assets/carstatic_2x.png');\n    color: #666;\n  }\n  .monitorListItem2, .carInfoHeader2{\n    background-image: url('../../../assets/caroff_2x.png');\n    color: #999;\n  }\n\n  .carInfoWindow{\n    width: 278px;\n    margin-left: 25px;\n  }\n\n  .carInfoHeader0, .carInfoHeader1, .carInfoHeader2{\n    height: 40px;\n    margin-top: 10px;\n    line-height: 40px;\n    font-size: 13px;\n    background-repeat: no-repeat;\n    background-position: left center;\n    padding-left: 25px;\n    width: 225px;\n    overflow: hidden;\n    white-space: nowrap;\n    text-overflow: ellipsis;\n    background-size: 16px 14px;\n  }\n\n  .carInfoContent{\n      height: 150px;\n      width: 100%;\n      font-size: 12px;\n      overflow-y: auto;\n      -webkit-overflow-scrolling:touch;\n  }\n\n  ::-webkit-scrollbar {\n      width: 9px;\n  }\n\n  ::-webkit-scrollbar-track {\n      -webkit-border-radius: 5px;\n              border-radius: 5px;\n      background: rgba(0, 0, 0, 0.1);\n  }\n\n  ::-webkit-scrollbar-thumb {\n      -webkit-border-radius: 5px;\n              border-radius: 5px;\n      background: rgba(0, 0, 0, 0.2);\n  }\n\n  ::-webkit-scrollbar-thumb:hover {\n      background: rgba(0, 0, 0, 0.4);\n  }\n\n  ::-webkit-scrollbar-thumb:window-inactive {\n      background: rgba(0, 0, 0, 0.05);\n  }\n\n  .carInfoItem{\n      min-height: 30px;\n      width: 250px;\n      line-height: 30px;\n      float: left;\n  }\n\n  .infoItemTitle{\n      color: #333;\n      width: 55px;\n      height: 100%;\n      float: left;\n      text-align: left;\n      font-weight: bold;\n      overflow: hidden;\n      white-space: nowrap;\n      text-overflow: ellipsis;\n  }\n\n  .infoItemContent{\n      color: #666;\n      float: right;\n      width: 195px;\n      height: 100%;\n  }\n\n  .run{\n      color:#2398ff;\n  }\n  .infoControl{\n      height: 40px;\n      width: 275px;\n      float: left;\n  }\n\n  .infoZoomIn,\n  .infoGoTrack {\n      /*display: none;*/\n      height: 100%;\n      line-height: 40px;\n      background-position: left center;\n      background-repeat: no-repeat;\n      width: 50px;\n      font-size: 12px;\n      color: #666;\n      cursor: pointer;\n      float: right;\n      text-align: left;\n      padding-left: 20px;\n  }\n  .trackpoint {\n    position: absolute;\n  }\n  .trackpoint_in {\n    height: 12px;\n    width: 12px;\n    background-color: #2398ff;\n    border-radius: 6px;\n    margin: 3px;\n    border: 2px solid #fff;\n  }\n  .trackpoint_over {\n    height: 12px;\n    width: 12px;\n    background-color: #ff6123;\n    border-radius: 6px;\n    margin: 3px;\n    border: 2px solid #fff;\n  }\n  .infoZoomIn {\n      background-size: 15px 15px;\n      background-image: url('../../../assets/zoominicon.png');\n  }\n\n  .infoGoTrack {\n      background-size: 14px 18px;\n      background-image: url('../../../assets/gotrack_2x.png');\n  }\n  .playCar {\n    position: absolute;\n    transform-origin: center;\n  }\n  .trackcar {\n    background-size: cover;\n    background-position: -10px 0;\n    width: 16px;\n    height: 30px;\n    background-image: url('../../../assets/carrunnorth.png');\n  }\n  .play-box {\n    background-color: rgba(0, 0, 0, 0.4);\n    position: absolute;\n    bottom: 20px;\n    width: 500px;\n    left: 50%;\n    margin-left: -250px;\n    padding-left: 10px;    \n    border-radius: 6px;\n    display: flex;\n    align-items: center;\n    transition: .4s all ease-in-out;\n    &.bottom {\n      bottom: 400px;\n    }\n    .play-icon {\n      color: #fff;\n      margin-right: 10px;\n      cursor: pointer;\n      &.iconfont-play::before {\n        content: '\\e61f';\n      }\n      &.iconfont-pass::before {\n        content: '\\e68b';\n      }\n    }\n    .ant-slider {\n      width: 320px;\n      .ant-slider__button-wrapper {\n        transition: all .3s linear;\n      }\n    }\n    .dot-left,\n    .dot-right {\n      color: #fff;\n    }\n    .dot-left {\n      margin-right: 15px;\n    }\n    .dot-right {\n      margin-left: 15px;\n    }\n    .ant-select {\n      width: 80px;\n      margin-left: 10px;\n      .ant-select-selection {\n        background: none !important;\n        border: none !important;\n        color: #fff;\n      }\n    }\n  }\n}"
  },
  {
    "path": "src/views/map/trajectory/index.tsx",
    "content": "import { Component, Vue } from 'vue-property-decorator';\nimport moment from 'moment';\nimport {\n  Button, Slider, Select, Tooltip,\n} from 'ant-design-vue';\nimport coordTrasns from '@/utils/coordTrasns';\nimport { loadBmap, loadMapInfoBox, loadCanvasLayer } from '@/utils/index';\nimport commonfun from './commonfun';\nimport traData from './data.json';\nimport MapControl from './mapControl';\nimport './index.less';\n\nfunction getTimeDay(day: number) { }\n\n@Component({\n  name: 'Trajectory',\n  components: {\n    'a-button': Button,\n    'a-slider': Slider,\n    'a-select': Select,\n    'a-select-option': Select.Option,\n    'a-tooltip': Tooltip,\n  },\n})\nexport default class Trajectory extends Vue {\n  BMap: any = null;\n\n  // 百度地图对象\n  SMap: any = null;\n\n  // 当前地图对象实例\n  SMapZoom: number = 15;\n\n  // 当前地图对象zoom\n  geolocationControl: any = null;\n\n  // 定位\n  CanvasLayer: any = null;\n\n  // 轨迹渲染层\n  mapCenter: {\n    lat: number,\n    lng: number\n  } = {\n    lat: 29.563694,\n    lng: 106.560421,\n  };\n\n  CarPoint: any = null;\n\n  // 车辆位置\n  CarIcon: any = null;\n\n  // 车辆图标\n  CarMarker: object[] = [];\n\n  // 车辆标记\n  tableUrl: string = '';\n\n  mapContorl: any = null;\n\n  // 地图方法类\n  constructor(dataIndexs: any) {\n    super(dataIndexs);\n    loadBmap().then((BMap: any) => {\n      this.BMap = BMap;\n      this.SMap = new BMap.Map('map', { enableMapClick: false });\n      this.SMap.centerAndZoom(new BMap.Point(this.mapCenter.lng, this.mapCenter.lat), 15);\n      this.geolocationControl = new BMap.GeolocationControl();\n      this.geolocationControl.addEventListener('locationSuccess', () => {\n        console.log('locationSuccess');\n      });\n      this.SMap.enableScrollWheelZoom(true);\n      loadMapInfoBox().then((BMapLib: any) => {\n        this.mapContorl = new MapControl({ SMap: this.SMap });\n        this.getData();\n      });\n      loadCanvasLayer().then((CanvasLayer: any) => {\n        this.CanvasLayer = CanvasLayer;\n      });\n    });\n  }\n\n  currentTrackData = [];\n\n  first = true;\n\n  exportBtn: boolean = true;\n\n  canvasLayer: any = null;\n\n  canvasLayerBack: any = null;\n\n  CanvasLayerPointer: any = null;\n\n  canvasBehavior: any = null;\n\n  pointCollection: any = [];\n\n  utc2now(time: string) {\n    const date = new Date(time);\n    const str = date.getTime() + (8 * 60 * 60 * 1000); // 转换成时间戳+8小时\n    const nowDate = new Date(str);\n    return moment(nowDate).format('yyyy-MM-dd hh:mm:ss');\n  }\n\n  /**\n   * view内部，绘制轨迹线路\n   *\n   * @param {Array} data 轨迹数据 可选\n   * @param {number} starttime 时间区间起点 可选\n   * @param {number} endtime 时间区间终点 可选\n   */\n  trackView = (data: any) => {\n    const self = this;\n    if (!data) {\n      data = this.currentTrackData;\n    }\n    const that = this;\n    const totalPoints: any = [];\n    const viewportPoints = [];\n    if (data.length === 0) {\n      return;\n    }\n    for (let i = 0; i < data.length; i += 1) {\n      const tempPoint = new this.BMap.Point(data[i].lng, data[i].lat);\n      tempPoint.speed = data[i].obdSpeed ? data[i].obdSpeed : data[i].gpsSpeed;\n      tempPoint.uTCTime = this.utc2now(data[i].utctime);\n      tempPoint.direction = data[i].direction;\n      tempPoint.printSpeed = commonfun.getSpeed(data[i].speed);\n      tempPoint.lnglat = `${data[i].lng.toFixed(2)},${data[i].lat.toFixed(2)}`;\n      tempPoint.event = data[i].events;\n      totalPoints.push(tempPoint);\n    }\n    if (that.first) {\n      this.SMap.setViewport(totalPoints, { margins: [20, 0, 0, 20] });\n    }\n    function updateBack() {\n      const nextArray = [];\n      const ctx = self.canvasLayerBack.canvas.getContext('2d');\n      if (!ctx) {\n        return;\n      }\n      ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n      if (totalPoints.length !== 0) {\n        for (let i = 0, len = totalPoints.length; i < len - 1; i += 1) {\n          const pixel = self.SMap.pointToPixel(totalPoints[i]);\n          const nextPixel = self.SMap.pointToPixel(totalPoints[i + 1]);\n          ctx.beginPath();\n          ctx.moveTo(pixel.x, pixel.y);\n          ctx.lineWidth = 8;\n          ctx.strokeStyle = '#8b8b89';\n          ctx.lineTo(nextPixel.x, nextPixel.y);\n          ctx.lineCap = 'round';\n          ctx.stroke();\n        }\n      }\n    }\n    function update() {\n      const ctx = self.canvasLayer.canvas.getContext('2d');\n      if (!ctx) {\n        return;\n      }\n      ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n      if (totalPoints.length !== 0) {\n        // 绘制带速度颜色的轨迹\n        for (let i = 0, len = totalPoints.length; i < len - 2; i += 1) {\n          const pixel = self.SMap.pointToPixel(totalPoints[i]);\n          const nextPixel = self.SMap.pointToPixel(totalPoints[i + 1]);\n          ctx.beginPath();\n          ctx.moveTo(pixel.x, pixel.y);\n          ctx.lineCap = 'round';\n          ctx.lineWidth = 6;\n          const grd = ctx.createLinearGradient(pixel.x, pixel.y, nextPixel.x, nextPixel.y);\n          const { speed } = totalPoints[i];\n          const speedNext = totalPoints[i + 1].speed;\n          grd.addColorStop(0, self.getColorBySpeed(speed));\n          grd.addColorStop(1, self.getColorBySpeed(speedNext));\n          ctx.strokeStyle = grd;\n          ctx.lineTo(nextPixel.x, nextPixel.y);\n          ctx.stroke();\n        }\n      }\n    }\n    function updatePointer() {\n      const ctx = self.CanvasLayerPointer.canvas.getContext('2d');\n      if (!ctx) {\n        return;\n      }\n      ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n      if (totalPoints.length !== 0) {\n        const lineObj = {};\n        let pixelPart = 0;\n        for (let i = 0, len = totalPoints.length; i < len - 1; i += 1) {\n          const pixel = self.SMap.pointToPixel(totalPoints[i]);\n          const nextPixel = self.SMap.pointToPixel(totalPoints[i + 1]);\n\n          ctx.beginPath();\n          pixelPart += Math.abs(nextPixel.x - pixel.x) + Math.abs(nextPixel.y - pixel.y);\n          // 根据渲染像素距离渲染箭头\n          if (pixelPart > 40) {\n            // 箭头一共需要5个点：起点、终点、中心点、箭头端点1、箭头端点2\n            pixelPart = 0;\n            const midPixel = new self.BMap.Pixel(\n              (pixel.x + nextPixel.x) / 2,\n              (pixel.y + nextPixel.y) / 2,\n            );\n\n            // 起点终点距离\n            const distance = (((nextPixel.x - pixel.x) ** 2)\n              + ((nextPixel.y - pixel.y) ** 2)) ** 0.5;\n            // 箭头长度\n            const pointerLong = 4;\n            const aPixel: any = {};\n            const bPixel: any = {};\n            if (nextPixel.x - pixel.x === 0) {\n              if (nextPixel.y - pixel.y > 0) {\n                aPixel.x = midPixel.x - (pointerLong * (0.5 ** 0.5));\n                aPixel.y = midPixel.y - (pointerLong * (0.5 ** 0.5));\n                bPixel.x = midPixel.x + (pointerLong * (0.5 ** 0.5));\n                bPixel.y = midPixel.y - (pointerLong * (0.5 ** 0.5));\n              } else if (nextPixel.y - pixel.y < 0) {\n                aPixel.x = midPixel.x - (pointerLong * (0.5 ** 0.5));\n                aPixel.y = midPixel.y + (pointerLong * (0.5 ** 0.5));\n                bPixel.x = midPixel.x + (pointerLong * (0.5 ** 0.5));\n                bPixel.y = midPixel.y + (pointerLong * (0.5 ** 0.5));\n              } else {\n                // continue;\n              }\n            } else {\n              const k0 = (\n                (\n                  (-(2 ** 0.5) * distance * pointerLong)\n                  + (2 * (nextPixel.y - pixel.y) * midPixel.y)\n                ) / (2 * (nextPixel.x - pixel.x))) + midPixel.x;\n              const k1 = -((nextPixel.y - pixel.y) / (nextPixel.x - pixel.x));\n              const a = (k1 ** 2) + 1;\n              const b = (2 * k1 * (k0 - midPixel.x)) - (2 * midPixel.y);\n              const c = (((k0 - midPixel.x) ** 2) + (midPixel.y ** 2)) - (pointerLong ** 2);\n\n              aPixel.y = (-b + (((b * b) - (4 * a * c)) ** 0.5)) / (2 * a);\n              bPixel.y = (-b - (((b * b) - (4 * a * c)) ** 0.5)) / (2 * a);\n              aPixel.x = (k1 * aPixel.y) + k0;\n              bPixel.x = (k1 * bPixel.y) + k0;\n            }\n            ctx.moveTo(aPixel.x, aPixel.y);\n            ctx.lineWidth = 2;\n            ctx.strokeStyle = '#eee';\n            ctx.lineTo(midPixel.x, midPixel.y);\n            ctx.lineTo(bPixel.x, bPixel.y);\n            ctx.lineCap = 'round';\n            ctx.stroke();\n          }\n        }\n      }\n    }\n    function renderBehavior() {\n      const Map = ['', '震', '碰', '碰', '翻', '加', '减', '弯'];\n      const ColorMap = ['', '#52c41a', '#fa8c16', '#f5222d', '#eb2f96', '#1890ff', '#2f54eb', '#13c2c2'];\n      const ctx: CanvasRenderingContext2D = self.canvasBehavior.canvas.getContext('2d');\n      if (!ctx) {\n        return;\n      }\n      ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n      const mulPoint: { x: number, y: number, event: string[] }[] = [];\n      function addPoint(x: number, y: number, text: string, color: string, fontSize: string, type: 'one' | 'mul') {\n        ctx.beginPath();\n        ctx.arc(x, y, 9, 0, 2 * Math.PI);\n        ctx.strokeStyle = color;\n        ctx.lineWidth = 2;\n        ctx.fillStyle = color;\n        ctx.fill();\n        ctx.stroke();\n        ctx.font = `bold ${fontSize} arial`;\n        ctx.fillStyle = '#fff';\n        ctx.fillText(text, type === 'one' ? x - 5.5 : x - 4, y + 4);\n      }\n      function hoverMul(x: number, y: number, event: string[]) {\n        let py = 0;\n        event.forEach((item) => {\n          addPoint(x + py, y - 30, Map[parseInt(item, 10)], ColorMap[parseInt(item, 10)], '12px', 'one');\n          py += 30;\n        });\n      }\n      function removeMul(x: number, y: number, num: number) {\n        ctx.clearRect(x - 10, y - 40, num * 30, 20);\n      }\n      function iconRender(x: number, y: number, url: string) {\n        const img = new Image();\n        img.onload = () => {\n          ctx.drawImage(img, x, y);\n        };\n        img.src = url;\n      }\n      if (totalPoints.length !== 0) {\n        const oneXY = self.SMap.pointToPixel(totalPoints[0]);\n        iconRender(oneXY.x - 13, oneXY.y - 26, require('@/assets/start.png'));\n        const endXY = self.SMap.pointToPixel(totalPoints[totalPoints.length - 1]);\n        iconRender(endXY.x - 13, endXY.y - 26, require('@/assets/end.png'));\n        for (let i = 0, len = totalPoints.length; i < len - 1; i += 1) {\n          if (totalPoints[i].event && totalPoints[i].event[0] !== '0') {\n            const pixel = self.SMap.pointToPixel(totalPoints[i]);\n            if (totalPoints[i].event.length === 1) {\n              addPoint(pixel.x, pixel.y, Map[parseInt(totalPoints[i].event[0], 10)], ColorMap[parseInt(totalPoints[i].event[0], 10)], '12px', 'one');\n            } else {\n              addPoint(pixel.x, pixel.y, totalPoints[i].event.length, '#faad14', '14px', 'mul');\n              mulPoint.push({\n                x: pixel.x,\n                y: pixel.y,\n                event: totalPoints[i].event,\n              });\n            }\n          }\n        }\n        if (mulPoint.length) {\n          self.canvasBehavior.canvas.addEventListener('mousemove', (e: MouseEvent) => {\n            mulPoint.forEach((item) => {\n              if (Math.abs(e.pageX - item.x - 200) < 5 && Math.abs(e.pageY - item.y - 100) < 5) {\n                hoverMul(item.x, item.y, item.event);\n              } else {\n                removeMul(item.x, item.y, item.event.length);\n              }\n            });\n          });\n        }\n      }\n    }\n    const render = () => {\n      if (totalPoints.length > 0) {\n        if (this.canvasLayer || this.canvasLayerBack\n          || this.CanvasLayerPointer || this.canvasBehavior) {\n          this.SMap.removeOverlay(this.CanvasLayerPointer);\n          this.SMap.removeOverlay(this.canvasLayer);\n          this.SMap.removeOverlay(this.canvasLayerBack);\n          this.SMap.removeOverlay(this.canvasBehavior);\n        }\n        // 轨迹边框渲染\n        this.canvasLayerBack = new this.CanvasLayer({\n          map: this.SMap,\n          update: updateBack,\n        });\n        // 轨迹渐变渲染\n        this.canvasLayer = new this.CanvasLayer({\n          map: this.SMap,\n          update,\n        });\n        // 轨迹箭头渲染\n        this.CanvasLayerPointer = new this.CanvasLayer({\n          map: this.SMap,\n          update: updatePointer,\n        });\n        // 驾驶行为层\n        this.canvasBehavior = new this.CanvasLayer({\n          map: this.SMap,\n          update: renderBehavior,\n        });\n      }\n      const options = {\n        size: window.BMAP_POINT_SIZE_HUGE,\n        shape: window.BMAP_POINT_SHAPE_CIRCLE,\n        color: 'rgba(0, 0, 0, 0)',\n      };\n      // 初始化PointCollection\n      if (this.pointCollection) {\n        this.SMap.removeOverlay(this.pointCollection);\n      }\n      this.pointCollection = new this.BMap.PointCollection(totalPoints, options);\n      this.pointCollection.addEventListener('click', (e: any) => {\n        this.mapContorl.showTrackInfoBox({\n          ...e.point,\n          plateNum: this.getPlateNum(),\n          status: e.point.printSpeed,\n          point: e.point,\n        });\n      });\n      this.pointCollection.addEventListener('mouseover', (e: any) => {\n        this.mapContorl.addTrackPointOverlay(e, 'trackpoint_over');\n      });\n      this.pointCollection.addEventListener('mouseout', (e: any) => {\n        this.mapContorl.removeTrackPointOverlay('trackpoint_over');\n      });\n      // 添加Overlay\n      this.SMap.addOverlay(this.pointCollection);\n    };\n    if (that.first) {\n      setTimeout(() => render(), 100);\n    } else {\n      render();\n    }\n  }\n\n  getPlateNum() {\n    return this.plateNum;\n  }\n\n  // 根据速度获取相应颜色\n  getColorBySpeed = (speed: number) => {\n    let color = '';\n    let red: string | number = 0;\n    let green: string | number = 0;\n    let blue: string | number = 0;\n    speed = speed > 100 ? 100 : speed;\n    switch (Math.floor(speed / 25)) {\n      case 0:\n        red = 187 + Math.ceil(((241 - 187) / 25) * speed);\n        green = 0 + Math.ceil(((48 - 0) / 25) * speed);\n        blue = 0 + Math.ceil(((48 - 0) / 25) * speed);\n        break;\n      case 1:\n        speed -= 25;\n        red = 241 + Math.ceil(((255 - 241) / 25) * speed);\n        green = 48 + Math.ceil(((200 - 48) / 25) * speed);\n        blue = 48 + Math.ceil(((0 - 48) / 25) * speed);\n        break;\n      case 2:\n        speed -= 50;\n        red = 255 + Math.ceil(((22 - 255) / 25) * speed);\n        green = 200 + Math.ceil(((191 - 200) / 25) * speed);\n        blue = 0 + Math.ceil(((43 - 0) / 25) * speed);\n        break;\n      case 3:\n        speed -= 75;\n        red = 85 + Math.ceil(((22 - 85) / 25) * speed);\n        green = 170 + Math.ceil(((191 - 170) / 25) * speed);\n        blue = 0 + Math.ceil(((85 - 0) / 25) * speed);\n        break;\n      case 4:\n        red = 85;\n        green = 170;\n        blue = 85;\n        break;\n      default: break;\n    }\n\n    red = red\n      .toString(16)\n      .length === 1\n      ? `0${red.toString(16)}`\n      : red.toString(16);\n    green = green\n      .toString(16)\n      .length === 1\n      ? `0${green.toString(16)}`\n      : green.toString(16);\n    blue = blue\n      .toString(16)\n      .length === 1\n      ? `0${blue.toString(16)}`\n      : blue.toString(16);\n    color = `#${red}${green}${blue}`;\n    return color;\n  }\n\n  timeChange(val: string) {\n    console.log(val);\n  }\n\n  // 增加zoom\n  zoomAdd = () => {\n    const newZoom = this.SMap.getZoom() + 1;\n    this.SMap.setZoom(newZoom);\n  }\n\n  // 减少zoom\n  zoomReduce = () => {\n    const newZoom = this.SMap.getZoom() - 1;\n    this.SMap.setZoom(newZoom);\n  }\n\n  plateNum = '';\n\n  behaivorData: { num: number, txt: string }[] = [];\n\n  getData() {\n    this.behaivorData = [\n      { num: 0, txt: '轻震动' },\n      { num: 0, txt: '轻碰撞' },\n      { num: 0, txt: '重碰撞' },\n      { num: 0, txt: '翻滚' },\n      { num: 0, txt: '急加速' },\n      { num: 0, txt: '急减速' },\n      { num: 0, txt: '急转弯' },\n    ];\n    let data = traData.entity;\n    data = data.map((item: any, index: number) => {\n      const point = coordTrasns.transToBaidu(item, 'bd09ll');\n      item.lat = point.lat;\n      item.lng = point.lng;\n      if (item.events) {\n        item.events.forEach((items: string) => {\n          if (items !== '0') {\n            this.behaivorData[parseInt(items, 10) - 1].num += 1;\n          }\n        });\n      }\n      return item;\n    });\n    this.currentTrackData = data;\n    this.trackView(data);\n    // 设置轨迹播放时间-1小时轨迹播放时长为1分钟\n    this.playTime = this.timeFormat(60);\n    this.defaultTime = this.playTime;\n  }\n\n  /**\n   * 播放轨迹动画-start\n   */\n  playOnTime: number = 0;\n\n  // 播放当前时间点\n  defaultTime: string = '';\n\n  playTime: string = '1:00';\n\n  // 播放时长\n  playStatus: boolean = false;\n\n  // 播放状态\n  playMultiple: number = 1;\n\n  // 播放速度\n  timeFormat(val: number) { // 格式化时间\n    return `${parseInt((val / 60).toString(), 10)}:${(val % 60) < 10 ? `0${(val % 60).toFixed(0)}` : (val % 60).toFixed(0)}`;\n  }\n\n  playTimeNumber(time: string) {\n    const timeArr = time.split(':');\n    let timeNumber = 0;\n    timeNumber += parseInt(timeArr[0], 10) * 60;\n    timeNumber += parseInt(timeArr[1], 10);\n    return timeNumber;\n  }\n\n  // 播放seInterval值\n  playTimer: any = null;\n\n  // 是否第一次播放轨迹\n  firstPlay: boolean = true;\n\n  getTrackData() {\n    return this.currentTrackData;\n  }\n\n  getMapContorl = () => this.mapContorl\n\n  // 播放轨迹动画\n  trackPlay() {\n    const mapContorl = this.getMapContorl();\n    if (this.firstPlay) {\n      mapContorl.initMapPlay(this.getTrackData(), this.playTimeNumber(this.playTime));\n      this.firstPlay = false;\n    }\n    if (this.playStatus) {\n      this.playStatus = false;\n      clearInterval(this.playTimer);\n      mapContorl.passPlay();\n    } else {\n      this.playStatus = true;\n      mapContorl.playContinue();\n      this.playTimer = setInterval(() => {\n        if (this.playOnTime === this.playTimeNumber(this.playTime)) {\n          clearInterval(this.playTimer);\n          this.playStatus = false;\n          this.playOnTime = 0;\n          this.firstPlay = true;\n          this.getMapContorl().clearPlay();\n        } else {\n          this.playOnTime += 1;\n        }\n      }, 1000);\n    }\n  }\n\n  jumpPlay(val: number) {\n    this.getMapContorl().jumpPlay(val);\n  }\n\n  clearPlay() {\n    // this.trackPlay();\n    clearInterval(this.playTimer);\n    this.playOnTime = 0;\n    this.playStatus = false;\n    this.firstPlay = true;\n    this.getMapContorl().clearPlay();\n  }\n\n  playChange(val: number) {\n    this.playTime = this.timeFormat(this.playTimeNumber(this.defaultTime) / val);\n    this.clearPlay();\n    this.getMapContorl().playSetTime(this.playTimeNumber(this.defaultTime) / val);\n  }\n\n  /**\n   * 播放轨迹动画-end\n   */\n  render() {\n    return (\n      <div class=\"trajectory-wrap\">\n        <ul class=\"behavior-list\">\n          {\n            this.behaivorData && this.behaivorData.map(item => <li>\n              <span class=\"number\">{item.num}</span>\n              <span className=\"txt\">{item.txt}</span>\n            </li>)\n          }\n        </ul>\n        <div id=\"map\"></div>\n        {\n          this.currentTrackData.length\n            ? <div class=\"play-box\">\n              <i on-click={this.trackPlay} class={`play-icon iconfont-${this.playStatus ? 'pass' : 'play'}`}></i>\n              <span class=\"dot-left\">{this.timeFormat(this.playOnTime)}</span>\n              <a-slider\n                v-model={this.playOnTime}\n                max={this.playTimeNumber(this.playTime)}\n                on-change={this.jumpPlay}\n                tipFormatter={this.timeFormat}>\n              </a-slider>\n              <span class=\"dot-right\">{this.playTime}</span>\n              <a-select v-model={this.playMultiple} on-change={this.playChange} placeholder=\"请选择\">\n                <a-select-option key={0} value={0.3}>0.3x</a-select-option>\n                <a-select-option key={1} value={0.5}>0.5x</a-select-option>\n                <a-select-option key={2} value={0.8}>0.8x</a-select-option>\n                <a-select-option key={3} value={1}>1x</a-select-option>\n                <a-select-option key={4} value={1.5}>1.5x</a-select-option>\n                <a-select-option key={5} value={2}>2x</a-select-option>\n                <a-select-option key={6} value={3}>3x</a-select-option>\n              </a-select>\n            </div> : null\n        }\n      </div>\n    );\n  }\n}\n"
  },
  {
    "path": "src/views/map/trajectory/mapControl.ts",
    "content": "import { message } from 'ant-design-vue';\nexport default class MapContorl {\n  SMap: any = null;\n\n  // map对象\n  constructor(props: any) {\n    this.SMap = props.SMap;\n    this.initTrackPointOverlay();\n    this.initTrackCarOverlay();\n  }\n\n  trackPointOverlay: any = null;\n\n  point: any = null;\n\n  type: string = '';\n\n  trackCarOverlay: any = null;\n\n  /**\n   * 初始化轨迹车辆覆盖物\n   *\n   */\n  initTrackCarOverlay() {\n    const self = this;\n    this.trackCarOverlay = function trackCarOverlay(point : any, type : string) {\n      this.point = point;\n      // this.type = 'trackpoint';\n      this.type = type;\n    };\n    this.trackCarOverlay.prototype = new window.BMap.Overlay();\n    this.trackCarOverlay.prototype.initialize = function initialize(map: any) {\n      const that = this;\n      this.map = self.SMap;\n      this.div = document.createElement('div');\n      const { div } = this;\n      // div.className = 'trackpointOverlay';\n      div.className = this.type;\n      const innerDiv = document.createElement('div');\n      innerDiv.className = 'trackcar';\n      div.appendChild(innerDiv);\n      self.SMap\n        .getPanes()\n        .labelPane\n        .appendChild(div);\n      return div;\n    };\n    this.trackCarOverlay.prototype.draw = function draw() {\n      const { map } = this;\n      const pixel = map.pointToOverlayPixel(this.point);\n      this.div.style.left = `${pixel.x - 8}px`;\n      this.div.style.top = `${pixel.y - 8}px`;\n    };\n  }\n\n  myCarOverlay: any = null;\n\n  /**\n   * 添加车辆覆盖物\n   *\n   * @param {Object} point 点\n   * @param {string} type 点类型\n   */\n  addTrackCarOverlay(point: any, type: string) {\n    this.myCarOverlay = new this.trackCarOverlay(point, type);\n    this.SMap.addOverlay(this.myCarOverlay);\n  }\n\n  // 轨迹数据\n  trackData: any = null;\n\n  // 播放一个坐标点的时长\n  oneTime: number = 0;\n\n  // 动画setinterval值\n  playTimers: any = null;\n\n  // 当前轨迹点\n  playNumber: number = 0;\n\n  // 初始化播放轨迹\n  initMapPlay(data: any, playSeconds: number) {\n    this.trackData = data;\n    this.oneTime = (playSeconds * 1000) / this.trackData.length;\n    const firstPoint = new window.BMap.Point(data[0].lng, data[0].lat);\n    this.removeTrackCarOverlay('playCar');\n    this.addTrackCarOverlay(firstPoint, 'playCar');\n    this.myCarOverlay.div.style.transition = `left ${this.oneTime / 1000}s linear, top ${this.oneTime / 1000}s linear`;\n  }\n\n  playInterVal() {\n    const time = this.oneTime.toFixed(6);\n    return setInterval(() => {\n      if (this.playNumber === this.trackData.length - 1) {\n        window.clearInterval(this.playTimers);\n        this.playNumber = 0;\n      }\n      const Point = new window.BMap.Point(\n        this.trackData[this.playNumber].lng,\n        this.trackData[this.playNumber].lat,\n      );\n      const pixel = this.SMap.pointToOverlayPixel(Point);\n      this.myCarOverlay.div.style.left = `${pixel.x - 14}px`;\n      this.myCarOverlay.div.style.top = `${pixel.y - 14}px`;\n      this.rotateAnimate(this.myCarOverlay.div, this.trackData[this.playNumber].direction);\n      this.playNumber += 1;\n    }, time ? parseFloat(time) : 100);\n  }\n\n  rotateAnimate(dom: any, direction: number) {\n    const patt = /\\d+/g;\n    let startVal: any = patt.exec(dom.style.transform);\n    startVal = parseInt(startVal ? startVal[0] : '0', 10);\n    // 是否反方向旋转\n    let isThe = false;\n    if (Math.abs(startVal - direction) > 180) {\n      isThe = true;\n    }\n    dom.style.transform = `rotate(${isThe ? -direction : direction}deg)`;\n  }\n\n  // 继续播放动画\n  playContinue() {\n    this.playTimers = this.playInterVal();\n  }\n\n  // 播放时长设置\n  playSetTime(val: number) {\n    if (this.trackData) {\n      this.oneTime = (val * 1000) / this.trackData.length;\n      this.playNumber = 0;\n      this.passPlay();\n    }\n  }\n\n  // 暂停播放\n  passPlay() {\n    window.clearInterval(this.playTimers);\n  }\n\n  // 跳跃播放\n  jumpPlay(val: number) {\n    const JumpNumber = parseInt(((val * 1000) / this.oneTime).toString(), 10);\n    this.playNumber = JumpNumber;\n  }\n\n  // 清除播放\n  clearPlay() {\n    this.removeTrackCarOverlay('playCar');\n    this.passPlay();\n    this.playNumber = 0;\n  }\n\n  /**\n   * 初始化轨迹点信息覆盖物\n   *\n   */\n  initTrackPointOverlay() {\n    const self = this;\n    this.trackPointOverlay = function trackPointOverlay(point : any, type : string) {\n      this.point = point;\n      // this.type = 'trackpoint';\n      this.type = type;\n    };\n    this.trackPointOverlay.prototype = new window.BMap.Overlay();\n    this.trackPointOverlay.prototype.initialize = function initialize(map: any) {\n      const that = this;\n      this.map = self.SMap;\n      this.div = document.createElement('div');\n      const { div } = this;\n      div.className = 'trackpoint';\n      // div.className = this.type;\n      const innerDiv = document.createElement('div');\n      innerDiv.className = this.type;\n      div.appendChild(innerDiv);\n      self.SMap\n        .getPanes()\n        .labelPane\n        .appendChild(div);\n      return div;\n    };\n    this.trackPointOverlay.prototype.draw = function draw() {\n      const { map } = this;\n      const pixel = map.pointToOverlayPixel(this.point);\n      this.div.style.left = `${pixel.x - 8}px`;\n      this.div.style.top = `${pixel.y - 8}px`;\n    };\n  }\n\n  /**\n   * 添加轨迹点信息覆盖物\n   *\n   * @param {Object} point 点\n   * @param {string} type 点类型\n   */\n  addTrackPointOverlay(data: any, type: string) {\n    const myCompOverlay = new this.trackPointOverlay(data.point, type);\n    this.SMap.addOverlay(myCompOverlay);\n  }\n\n  /**\n   * 设置设备监控的marker\n   *\n   * @param {Object} data marker的数据信息\n   * @param {number} service_type 服务类型 1 为车辆定位点, 2为轨迹点\n   */\n  setEntityMarker(data: any, serviceType: number) {\n    const that = this;\n    const point = new window.BMap.Point(data.lng, data.lat);\n    let iconUrl = '';\n    let size;\n    let imageSize;\n    const { status } = data;\n    if (serviceType === 1) {\n      size = new window.BMap.Size(41, 34);\n      imageSize = new window.BMap.Size(41, 34);\n      switch (status.substring(0, 2)) {\n        case '离线':\n          iconUrl = require('@/assets/caroffnorth.png');\n          break;\n        case '静止':\n          iconUrl = require('@/assets/carstaticnorth.png');\n          break;\n        default:\n          iconUrl = require('@/assets/carrunnorth.png');\n          break;\n      }\n    } else {\n      size = new window.BMap.Size(22, 27);\n      imageSize = new window.BMap.Size(22, 27);\n      switch (status.substring(0, 2)) {\n        case '离线':\n          iconUrl = require('@/assets/othertypeoffline.png');\n          break;\n        case '静止':\n          iconUrl = require('@/assets/othertypestatic.png');\n          break;\n        default:\n          iconUrl = require('@/assets/othertype.png');\n          break;\n      }\n    }\n    const icon = new window.BMap.Icon(iconUrl, size);\n    icon.setImageSize(imageSize);\n    this.entityMarker = new window.BMap.Marker(point, { icon });\n    this.entityMarker.setZIndex(999);\n    this.entityMarker.setRotation(data.direction);\n    this.entityMarker.addEventListener('click', (e: any) => {\n      that.trackInfoBox.open(that.entityMarker);\n    });\n    this.SMap.addOverlay(this.entityMarker);\n    // 如果是定时器触发的，那么不移动地图\n    if (!data.interval) {\n      this.SMap.panTo(point);\n    }\n    console.log(this.entityMarker.getIcon());\n  }\n\n  trackInfoBox: any = null;\n\n  // 窗口对象\n  entityMarker: any = null;\n\n  // 标记\n  /**\n   * 初始化车辆信息详情和轨迹点详情infobox\n   *\n   * @param {Object} data 数据\n   */\n  setTrackInfoBox(data: any) {\n    const infoContentFrontArr = [\n      '<div class=\"carInfoWindow\">',\n      '<div class=\"carInfoHeader0\">',\n      `<abbr title=\"${data.plateNum}\">`,\n      data.plateNum,\n      '</abbr>',\n      '</div>',\n      '<div class=\"carInfoContent\">',\n    ];\n    data.infor.forEach((item: any) => {\n      const itemPushArr = [\n        '<div class=\"carInfoItem\">',\n        '<div class=\"infoItemTitle\">',\n        item[0],\n        '</div>',\n        '<div class=\"infoItemContent\">',\n        item[1],\n        '</div>',\n        '</div>',\n      ];\n      infoContentFrontArr.push(itemPushArr.join(''));\n    });\n    this.trackInfoBox = new window.BMapLib.InfoBox(\n      this.SMap,\n      infoContentFrontArr.join(''),\n      {\n        boxClass: 'carInfoBox',\n        // boxStyle:{background:\"url('tipbox.gif') no-repeatcenter top\",width: \"200px\"},\n        closeIconMargin: '15px 20px 0 0',\n        alignBottom: false,\n        closeIconUrl: require('@/assets/closeinfowindow.png'),\n      },\n    );\n    this.trackInfoBox.addEventListener('close', () => {\n      // TrackAction.closemonitorinfobox();\n    });\n    this.trackInfoBox.open(data.point);\n  }\n\n  /**\n  * 删除轨迹点信息覆盖物\n  *\n  * @param {string} type 类型，分为鼠标浮动和点击两种\n  */\n  removeTrackPointOverlay(type: string) {\n    const overlays = this.SMap.getOverlays();\n    const { length } = overlays;\n    const trackPointOverlays = [];\n    for (let i = 0; i < length; i += 1) {\n      if (overlays[i].type === type) {\n        trackPointOverlays.push(overlays[i]);\n      }\n    }\n    for (let j = 0; j < trackPointOverlays.length; j += 1) {\n      this.SMap.removeOverlay(trackPointOverlays[j]);\n    }\n  }\n\n  /**\n  * 删除轨迹车辆覆盖物\n  *\n  * @param {string} type 类型，分为鼠标浮动和点击两种\n  */\n  removeTrackCarOverlay(type: string) {\n    const overlays = this.SMap.getOverlays();\n    const { length } = overlays;\n    const trackPointOverlays = [];\n    for (let i = 0; i < length; i += 1) {\n      if (overlays[i].type === type) {\n        trackPointOverlays.push(overlays[i]);\n      }\n    }\n    for (let j = 0; j < trackPointOverlays.length; j += 1) {\n      this.SMap.removeOverlay(trackPointOverlays[j]);\n    }\n  }\n\n  /**\n   * 删除设备监控的marker,\n   *\n   */\n  removeEntityMarker() {\n    this.SMap.removeOverlay(this.entityMarker);\n    this.entityMarker = null;\n  }\n\n  /**\n   * 删除infobox\n   *\n   */\n  removeTrackInfoBox() {\n    this.SMap.removeOverlay(this.trackInfoBox);\n    this.trackInfoBox = null;\n  }\n\n  /**\n   * 展示轨迹点详情\n  */\n  showTrackInfoBox(datas: any) {\n    this.removeTrackPointOverlay('trackpoint_in');\n    this.removeTrackInfoBox();\n    this.addTrackPointOverlay(datas, 'trackpoint_in');\n    window.api.gpsToAddress({ lat: datas.lat, lng: datas.lng, coordinateSystem: 'bd09ll' }).then((res: any) => {\n      const { data } = res;\n      if (data.status === 0) {\n        const address = data.result.formatted_address + data.result.sematic_description;\n        const infor = [\n          ['定位', datas.lnglat],\n          ['地址', address],\n          ['速度', `${datas.speed}km/h`],\n          ['定位时间', new Date(datas.uTCTime).Format('yyyy-MM-dd hh:mm:ss')],\n        ];\n        this.setTrackInfoBox({\n          plateNum: datas.plateNum,\n          infor,\n          point: datas.point,\n          status: datas.status,\n        });\n      } else {\n        message.error('获取物理地址失败！');\n      }\n    });\n  }\n}\n"
  },
  {
    "path": "src/views/project/detail/index.less",
    "content": ""
  },
  {
    "path": "src/views/project/detail/index.tsx",
    "content": "import { Component, Vue } from 'vue-property-decorator';\n\n@Component\nexport default class ProjectDetail extends Vue {\n  render() {\n    return (\n      <div>\n      </div>\n    );\n  }\n}\n"
  },
  {
    "path": "src/views/project/index.tsx",
    "content": "import { Component, Vue } from 'vue-property-decorator';\n\n@Component\nexport default class Project extends Vue {\n  render() {\n    const { keepList } = this.$store.state.app;\n    return (\n      <keep-alive max={10} include={keepList}>\n        <router-view/>\n      </keep-alive>\n    );\n  }\n}\n"
  },
  {
    "path": "src/views/project/list/index.less",
    "content": ""
  },
  {
    "path": "src/views/project/list/index.tsx",
    "content": "import { Component, Vue } from 'vue-property-decorator';\n\n@Component\nexport default class ProjectList extends Vue {\n  render() {\n    return (\n      <div>\n      </div>\n    );\n  }\n}\n"
  },
  {
    "path": "tests/e2e/custom-assertions/elementCount.js",
    "content": "// A custom Nightwatch assertion.\n// The assertion name is the filename.\n// Example usage:\n//\n//   browser.assert.elementCount(selector, count)\n//\n// For more information on custom assertions see:\n// http://nightwatchjs.org/guide#writing-custom-assertions\n\nexports.assertion = function elementCount(selector, count) {\n  this.message = `Testing if element <${selector}> has count: ${count}`;\n  this.expected = count;\n  this.pass = val => val === count;\n  this.value = res => res.value;\n  function evaluator(_selector) {\n    return document.querySelectorAll(_selector).length;\n  }\n  this.command = cb => this.api.execute(evaluator, [selector], cb);\n};\n"
  },
  {
    "path": "tests/e2e/specs/test.js",
    "content": "// For authoring Nightwatch tests, see\n// http://nightwatchjs.org/guide#usage\n\nmodule.exports = {\n  'default e2e tests': (browser) => {\n    browser\n      .url(process.env.VUE_DEV_SERVER_URL)\n      .waitForElementVisible('#app', 5000)\n      .assert.elementPresent('.hello')\n      .assert.containsText('h1', 'Welcome to Your Vue.js + TypeScript App')\n      .assert.elementCount('img', 1)\n      .end();\n  },\n};\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"esnext\",\n    \"module\": \"esnext\",\n    \"strict\": true,\n    \"jsx\": \"preserve\",\n    \"importHelpers\": true,\n    \"moduleResolution\": \"node\",\n    \"experimentalDecorators\": true,\n    \"esModuleInterop\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"sourceMap\": true,\n    \"baseUrl\": \".\",\n    \"types\": [\n      \"webpack-env\"\n    ],\n    \"paths\": {\n      \"@/*\": [\n        \"src/*\"\n      ]\n    },\n    \"lib\": [\n      \"esnext\",\n      \"dom\",\n      \"dom.iterable\",\n      \"scripthost\"\n    ]\n  },\n  \"include\": [\n    \"src/**/*.ts\",\n    \"src/**/*.tsx\",\n    \"src/**/*.vue\",\n    \"tests/**/*.ts\",\n    \"tests/**/*.tsx\"\n  ],\n  \"exclude\": [\n    \"node_modules\"\n  ]\n}\n"
  },
  {
    "path": "vue.config.js",
    "content": "const Mock = require('./src/mock/index');\n\nmodule.exports = {\n  chainWebpack: (config) => {\n    'use strict';\n\n    config.module\n      .rule('tsx')\n      .test(/\\.tsx$/)\n      .use('vue-jsx-hot-loader')\n      .before('babel-loader')\n      .loader('vue-jsx-hot-loader');\n    config.plugin('html').tap((args) => {\n      args[0].chunksSortMode = 'none';\n      return args;\n    });\n  },\n  css: {\n    loaderOptions: {\n      less: {\n        javascriptEnabled: true,\n        modifyVars: {\n          'primary-color': '#0390FF',\n          'border-radius-base': '3px',\n          'border-radius-sm': '2px',\n          'shadow-color': 'rgba(0,0,0,0.05)',\n          'shadow-1-down': '4px 4px 40px @shadow-color',\n          'border-color-split': '#f4f4f4',\n          'border-color-base': '#e5e5e5',\n          'font-size-base': '13px',\n          'text-color': '#666',\n        },\n      },\n    },\n  },\n  devServer: {\n    proxy: {\n      '/api': {\n        target: 'http://localhost:8080/api/', // 开发环境地址\n        changeOrigin: true,\n        pathRewrite: {\n          '^/api': '',\n        },\n      },\n    },\n    setup(app) {\n      Mock(app);\n    },\n  },\n};\n"
  }
]