Răsfoiți Sursa

chore: lint bigmember_pc

zhangyuhan 1 an în urmă
părinte
comite
ea823122bc
100 a modificat fișierele cu 9362 adăugiri și 8695 ștergeri
  1. 12 2
      .editorconfig
  2. 1 1
      apps/bigmember_pc/.eslintignore
  3. 21 13
      apps/bigmember_pc/.eslintrc.cjs
  4. 5 6
      apps/bigmember_pc/.gitlab-ci.yml
  5. 8 6
      apps/bigmember_pc/README.md
  6. 1 1
      apps/bigmember_pc/config/proxy.js
  7. 2 1
      apps/bigmember_pc/package.json
  8. 9 11
      apps/bigmember_pc/src/App.vue
  9. 18 10
      apps/bigmember_pc/src/api/axios.js
  10. 57 49
      apps/bigmember_pc/src/api/index.js
  11. 10 10
      apps/bigmember_pc/src/api/modules/analysis.js
  12. 2 2
      apps/bigmember_pc/src/api/modules/biService.js
  13. 26 26
      apps/bigmember_pc/src/api/modules/chart.js
  14. 4 4
      apps/bigmember_pc/src/api/modules/coupon.js
  15. 1 1
      apps/bigmember_pc/src/api/modules/course.js
  16. 4 4
      apps/bigmember_pc/src/api/modules/crmApplication.js
  17. 8 8
      apps/bigmember_pc/src/api/modules/customer.js
  18. 9 9
      apps/bigmember_pc/src/api/modules/dataExport.js
  19. 5 5
      apps/bigmember_pc/src/api/modules/entbase.js
  20. 3 3
      apps/bigmember_pc/src/api/modules/entnicheNew.js
  21. 2 2
      apps/bigmember_pc/src/api/modules/file.js
  22. 20 20
      apps/bigmember_pc/src/api/modules/forecast.js
  23. 15 14
      apps/bigmember_pc/src/api/modules/home.js
  24. 1 1
      apps/bigmember_pc/src/api/modules/jyMerge.js
  25. 2 2
      apps/bigmember_pc/src/api/modules/leadGeneration.js
  26. 4 4
      apps/bigmember_pc/src/api/modules/marketing.js
  27. 7 7
      apps/bigmember_pc/src/api/modules/medical.js
  28. 9 9
      apps/bigmember_pc/src/api/modules/medicalField.js
  29. 7 7
      apps/bigmember_pc/src/api/modules/order.js
  30. 5 5
      apps/bigmember_pc/src/api/modules/pay.js
  31. 6 3
      apps/bigmember_pc/src/api/modules/placeOrder.js
  32. 9 9
      apps/bigmember_pc/src/api/modules/potential.js
  33. 21 21
      apps/bigmember_pc/src/api/modules/project.js
  34. 15 15
      apps/bigmember_pc/src/api/modules/public.js
  35. 9 9
      apps/bigmember_pc/src/api/modules/report.js
  36. 25 25
      apps/bigmember_pc/src/api/modules/subscribe.js
  37. 6 6
      apps/bigmember_pc/src/api/modules/svip.js
  38. 15 15
      apps/bigmember_pc/src/api/modules/user.js
  39. 9 9
      apps/bigmember_pc/src/api/modules/workspace.js
  40. 0 0
      apps/bigmember_pc/src/assets/js/china-n.json
  41. 0 0
      apps/bigmember_pc/src/assets/js/china.json
  42. 5581 6078
      apps/bigmember_pc/src/assets/js/china_area.js
  43. 133 89
      apps/bigmember_pc/src/assets/js/selector.js
  44. 5 5
      apps/bigmember_pc/src/assets/style/_mixin.scss
  45. 13 13
      apps/bigmember_pc/src/assets/style/_variables.scss
  46. 9 9
      apps/bigmember_pc/src/assets/style/common.scss
  47. 1 1
      apps/bigmember_pc/src/assets/style/component/verify-code-form-common.scss
  48. 191 192
      apps/bigmember_pc/src/assets/style/iconfont.css
  49. 40 41
      apps/bigmember_pc/src/assets/style/reset-ele.scss
  50. 0 1
      apps/bigmember_pc/src/assets/style/selector-cascader-common.scss
  51. 22 16
      apps/bigmember_pc/src/components/account/AccountAuthCard.vue
  52. 12 8
      apps/bigmember_pc/src/components/account/Countdown.vue
  53. 27 20
      apps/bigmember_pc/src/components/account/EmailBindCard.vue
  54. 32 21
      apps/bigmember_pc/src/components/account/PhoneBindCard.vue
  55. 63 25
      apps/bigmember_pc/src/components/account/SendVerifyCodeForm.vue
  56. 32 24
      apps/bigmember_pc/src/components/ad/activity-dialog.vue
  57. 41 24
      apps/bigmember_pc/src/components/ad/guide-intro-dialog.vue
  58. 21 8
      apps/bigmember_pc/src/components/ad/svga-support/index.vue
  59. 349 237
      apps/bigmember_pc/src/components/article-item/ArticleItem.vue
  60. 25 16
      apps/bigmember_pc/src/components/article-item/ProjectItem.vue
  61. 20 17
      apps/bigmember_pc/src/components/chart/BarLineChart.vue
  62. 52 32
      apps/bigmember_pc/src/components/chart/BlueProgressChart.vue
  63. 64 52
      apps/bigmember_pc/src/components/chart/ColumnBarChart.vue
  64. 98 61
      apps/bigmember_pc/src/components/chart/DoubleBarChart.vue
  65. 58 34
      apps/bigmember_pc/src/components/chart/DuoToneChart.vue
  66. 217 150
      apps/bigmember_pc/src/components/chart/HotChart.vue
  67. 13 9
      apps/bigmember_pc/src/components/chart/LineChart.vue
  68. 70 53
      apps/bigmember_pc/src/components/chart/MapChart.vue
  69. 23 15
      apps/bigmember_pc/src/components/chart/PieChart.vue
  70. 149 115
      apps/bigmember_pc/src/components/chart/ProChart.vue
  71. 99 43
      apps/bigmember_pc/src/components/chart/ProgressChart.vue
  72. 10 10
      apps/bigmember_pc/src/components/chart/RectTreeMapChart.vue
  73. 28 16
      apps/bigmember_pc/src/components/chart/SimpleHistogramChart.vue
  74. 390 196
      apps/bigmember_pc/src/components/collect-info/CollectInfo.vue
  75. 27 15
      apps/bigmember_pc/src/components/common/AssociationInput.vue
  76. 85 76
      apps/bigmember_pc/src/components/common/BigMemberEmpty.vue
  77. 26 12
      apps/bigmember_pc/src/components/common/ContentLayout.vue
  78. 27 26
      apps/bigmember_pc/src/components/common/Dialog.vue
  79. 5 5
      apps/bigmember_pc/src/components/common/Empty.vue
  80. 42 24
      apps/bigmember_pc/src/components/common/Monitor.vue
  81. 147 94
      apps/bigmember_pc/src/components/common/Popper.vue
  82. 2 4
      apps/bigmember_pc/src/components/common/SpecCard.vue
  83. 67 27
      apps/bigmember_pc/src/components/common/TabHeader.vue
  84. 10 8
      apps/bigmember_pc/src/components/common/Tips.vue
  85. 3 3
      apps/bigmember_pc/src/components/common/WorkspaceContentCard.vue
  86. 8 13
      apps/bigmember_pc/src/components/common/classCard.vue
  87. 55 54
      apps/bigmember_pc/src/components/common/informationSuccess.vue
  88. 14 6
      apps/bigmember_pc/src/components/common/noPass.vue
  89. 59 40
      apps/bigmember_pc/src/components/common/popupBox.vue
  90. 16 12
      apps/bigmember_pc/src/components/common/tabs.vue
  91. 103 69
      apps/bigmember_pc/src/components/contact-info/ContactInfo.vue
  92. 43 21
      apps/bigmember_pc/src/components/coupon/BuySubmit.vue
  93. 35 19
      apps/bigmember_pc/src/components/coupon/BuySubmitSticky.vue
  94. 14 9
      apps/bigmember_pc/src/components/coupon/CheckPhone.vue
  95. 149 78
      apps/bigmember_pc/src/components/coupon/CouponCardList.vue
  96. 48 34
      apps/bigmember_pc/src/components/coupon/CouponCardListOld.vue
  97. 26 16
      apps/bigmember_pc/src/components/coupon/CouponGiftList.vue
  98. 38 23
      apps/bigmember_pc/src/components/coupon/SpecList.vue
  99. 19 11
      apps/bigmember_pc/src/components/coupon/validity.vue
  100. 13 10
      apps/bigmember_pc/src/components/crm-info/IframeDialog.vue

+ 12 - 2
.editorconfig

@@ -1,5 +1,15 @@
-[*.{js,jsx,ts,tsx,vue}]
+root = true
+
+[*]
 indent_style = space
-indent_size = 2
+end_of_line = lf
+charset = utf-8
 trim_trailing_whitespace = true
 insert_final_newline = true
+
+[*.md]
+max_line_length = off
+trim_trailing_whitespace = false
+
+[*.{ts,js,vue,css}]
+indent_size = 2

+ 1 - 1
apps/bigmember_pc/.eslintignore

@@ -1,2 +1,2 @@
 /src/assets/fonts
-vue.config.js
+vite.config.js

+ 21 - 13
apps/bigmember_pc/.eslintrc.cjs

@@ -1,22 +1,30 @@
 /* eslint-env node */
-require("@rushstack/eslint-patch/modern-module-resolution");
+require('@rushstack/eslint-patch/modern-module-resolution')
 module.exports = {
-  "root": true,
-  "globals": {
+  root: true,
+  env: {
+    browser: true,
+    node: true
+  },
+  globals: {
     loginflag: true,
     $: true,
     JyObj: true,
     _hmt: true,
     vComponentChart: true
   },
-  "rules": {
-    'no-console': 'warn',
-    'no-debugger': 'warn',
-    'eqeqeq': 'warn',
-    indent: ['error', 2, {
-      SwitchCase: 1
-    }],
-    quotes: ['error', 'single']
+  plugins: ['vue'],
+  rules: {
+    'vue/no-mutating-props': 'off',
+    'vue/multi-word-component-names': 'off',
+    'no-empty': ['error', { allowEmptyCatch: true }],
+    'no-unused-vars': 'off',
+    'no-console': 'off',
+    'no-debugger': 'warn'
   },
-  "extends": ["plugin:vue/essential", "eslint:recommended", "@vue/eslint-config-prettier"]
-};
+  extends: [
+    'plugin:vue/essential',
+    'eslint:recommended',
+    '@vue/eslint-config-prettier'
+  ]
+}

+ 5 - 6
apps/bigmember_pc/.gitlab-ci.yml

@@ -1,17 +1,16 @@
 image: node:16.14.2-alpine
 
-stages:          # List of stages for jobs, and their order of execution
+stages: # List of stages for jobs, and their order of execution
   - lint
 
-install:       # This job runs in the build stage, which runs first.
+install: # This job runs in the build stage, which runs first.
   stage: lint
   script:
     - cp ./ci-lint/package.json ./package.json
     - echo "Use yarn management node_modules"
-    -
-      hash yarn 2>/dev/null || { 
-        echo >&2 "Not has yarn, wait install";
-        npm install yarn --prefer-offline --no-audit -g;
+    - hash yarn 2>/dev/null || {
+      echo >&2 "Not has yarn, wait install";
+      npm install yarn --prefer-offline --no-audit -g;
       }
     - yarn install --pure-lockfile --prefer-offline
     - yarn run lint

+ 8 - 6
apps/bigmember_pc/README.md

@@ -1,15 +1,17 @@
-## 剑鱼大会员PC端
+## 剑鱼大会员 PC 端
+
 ##### 无顶部底部开发
-0. ```yarn run serve:alone```
+
+0. `yarn run serve:alone`
 
 ##### 接入顶部开发调试
 
-0. ```yarn run serve```
+0. `yarn run serve`
 
-1. 本机启动剑鱼Web主程序
+1. 本机启动剑鱼 Web 主程序
 
-2. 修改`systemjs-importmap`中app对应的请求地址
+2. 修改`systemjs-importmap`中 app 对应的请求地址
 
-    > 文件地址 /src/web/templates/frontRouter/pc/page_big_pc/sess/index.html
+   > 文件地址 /src/web/templates/frontRouter/pc/page_big_pc/sess/index.html
 
 T3. 访问`/swordfish/docs/index`

+ 1 - 1
apps/bigmember_pc/config/proxy.js

@@ -22,7 +22,7 @@ const PrefixAPIS = [
 ]
 
 exports.getProxyOfDomain = function (domain) {
-  const proxy = PrefixAPIS.reduce((a,b) => {
+  const proxy = PrefixAPIS.reduce((a, b) => {
     a[b] = domain
     return a
   }, {})

+ 2 - 1
apps/bigmember_pc/package.json

@@ -6,7 +6,8 @@
     "dev": "vite",
     "build": "vite build",
     "preview": "vite preview --port 4173",
-    "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore"
+    "lint": "eslint . --ext .vue,.js,.jsx --fix",
+    "format": "prettier --write \"./**/*.{,vue,ts,js,json,md}\""
   },
   "dependencies": {
     "@jianyu/easy-fix-sub-app": "^0.0.2",

+ 9 - 11
apps/bigmember_pc/src/App.vue

@@ -11,30 +11,29 @@
 import { getParam } from '@/utils/'
 export default {
   components: {},
-  data () {
+  data() {
     return {
       cashViews: ['list-potential']
     }
   },
-  created () {
+  created() {
     // noIntercept不走登录拦截
     this.$store.dispatch('user/getNewEnt', { noIntercept: true })
     this.$store.dispatch('user/getEntInfo', { noIntercept: true })
   },
-  mounted () {
+  mounted() {
     if (getParam('iframe') === 'BidrenewalDialog') {
       const body = document.querySelector('body')
       body.classList.add('big-transparent')
     }
   },
-
   methods: {}
 }
 </script>
 <style lang="scss">
-@import "~@/assets/style/common.scss";
-@import "~@/assets/style/reset-ele.scss";
-@import "~@/assets/style/reset-qiankun.scss";
+@import '~@/assets/style/common.scss';
+@import '~@/assets/style/reset-ele.scss';
+@import '~@/assets/style/reset-qiankun.scss';
 
 .v-w1200 {
   width: 1200px;
@@ -84,7 +83,6 @@ export default {
 }
 
 .visited {
-
   .visited-hd,
   td {
     color: #999 !important;
@@ -95,11 +93,11 @@ export default {
   }
 
   .visited-ft {
-    color: #9B9CA3 !important;
+    color: #9b9ca3 !important;
   }
 }
 .monitor-popover {
-  border-radius: 12px!important;
-  border: 1px solid #ececec!important;
+  border-radius: 12px !important;
+  border: 1px solid #ececec !important;
 }
 </style>

+ 18 - 10
apps/bigmember_pc/src/api/axios.js

@@ -5,19 +5,27 @@ const service = axios.create({
   baseURL: import.meta.env.VITE_APP_BASE_API
 })
 
-service.interceptors.request.use(config => {
-  // 在请求发送之前做一些事
-  return config
-}, function (error) {
-  // 当出现请求错误是做一些事
-  console.log('--请求超时--', error)
-  return Promise.reject(error)
-})
+service.interceptors.request.use(
+  (config) => {
+    // 在请求发送之前做一些事
+    return config
+  },
+  function (error) {
+    // 当出现请求错误是做一些事
+    console.log('--请求超时--', error)
+    return Promise.reject(error)
+  }
+)
 
 // 添加一个返回拦截器
-service.interceptors.response.use(response => {
+service.interceptors.response.use((response) => {
   // 此处添加响应拦截
-  if (import.meta.env.NODE_ENV === 'production' && response.config && !response.config.noIntercept && !window.$noIntercept) {
+  if (
+    import.meta.env.NODE_ENV === 'production' &&
+    response.config &&
+    !response.config.noIntercept &&
+    !window.$noIntercept
+  ) {
     const noPermissionText = ['未登录', '需要登录', '需要登录!']
     const noPermission = noPermissionText.includes(response.data.error_msg)
     if (noPermission) {

+ 57 - 49
apps/bigmember_pc/src/api/index.js

@@ -9,66 +9,74 @@ import qs from 'qs'
 //   console.log('jqXHR', jqXHR)
 // })
 // jquery请求
-const ajax = config => new Promise((resolve, reject) => {
-  // 获取url参数
-  const url = config.baseURL ? config.baseURL + config.url : import.meta.env.VITE_APP_BASE_API + config.url
+const ajax = (config) =>
+  new Promise((resolve, reject) => {
+    // 获取url参数
+    const url = config.baseURL
+      ? config.baseURL + config.url
+      : import.meta.env.VITE_APP_BASE_API + config.url
 
-  const ajaxConf = {
-    url: url,
-    method: config.method
-  }
+    const ajaxConf = {
+      url: url,
+      method: config.method
+    }
 
-  // 获取data数据
-  const data = config.data
-  const params = config.params
-  const headers = config.headers
+    // 获取data数据
+    const data = config.data
+    const params = config.params
+    const headers = config.headers
 
-  if (ajaxConf.method.toLowerCase() === 'post') {
-    if (data) {
-      if (typeof data === 'string') {
-        // formData
-        ajaxConf.data = qs.parse(data)
-      } else {
-        // json
-        ajaxConf.contentType = 'application/json;charset=UTF-8'
-        ajaxConf.data = JSON.stringify(data)
+    if (ajaxConf.method.toLowerCase() === 'post') {
+      if (data) {
+        if (typeof data === 'string') {
+          // formData
+          ajaxConf.data = qs.parse(data)
+        } else {
+          // json
+          ajaxConf.contentType = 'application/json;charset=UTF-8'
+          ajaxConf.data = JSON.stringify(data)
+        }
+      }
+    } else if (ajaxConf.method.toLowerCase() === 'get') {
+      if (params) {
+        ajaxConf.data = params
       }
     }
-  } else if (ajaxConf.method.toLowerCase() === 'get') {
-    if (params) {
-      ajaxConf.data = params
+    if (headers) {
+      ajaxConf.headers = headers
     }
-  }
-  if (headers) {
-    ajaxConf.headers = headers
-  }
 
-  // 此处数据预处理
-  // 此处添加请求拦截(请求发送前处理参数)
+    // 此处数据预处理
+    // 此处添加请求拦截(请求发送前处理参数)
 
-  $.ajax({
-    ...ajaxConf,
-    beforeSend: xhr => {
-      // 此处请求预处理
-      // 此处添加请求拦截(请求发送前处理参数)
-    },
-    success: res => {
-      // 此处添加响应拦截
-      if (import.meta.env.NODE_ENV === 'production' && config && !config.noIntercept && !window.$noIntercept) {
-        const noPermissionText = ['未登录', '需要登录', '需要登录!']
-        const noPermission = noPermissionText.includes(res.error_msg)
-        if (noPermission) {
-          location.href = '/notin/page'
-          return
+    $.ajax({
+      ...ajaxConf,
+      beforeSend: (xhr) => {
+        // 此处请求预处理
+        // 此处添加请求拦截(请求发送前处理参数)
+      },
+      success: (res) => {
+        // 此处添加响应拦截
+        if (
+          import.meta.env.NODE_ENV === 'production' &&
+          config &&
+          !config.noIntercept &&
+          !window.$noIntercept
+        ) {
+          const noPermissionText = ['未登录', '需要登录', '需要登录!']
+          const noPermission = noPermissionText.includes(res.error_msg)
+          if (noPermission) {
+            location.href = '/notin/page'
+            return
+          }
         }
+        resolve(res)
+      },
+      error: (err) => {
+        reject(err)
       }
-      resolve(res)
-    },
-    error: err => {
-      reject(err)
-    }
+    })
   })
-})
 
 const useJQueryAjax = !!window.antiAdd
 export default useJQueryAjax ? ajax : axios

+ 10 - 10
apps/bigmember_pc/src/api/modules/analysis.js

@@ -2,7 +2,7 @@ import request from '@/api'
 import qs from 'qs'
 
 // 获取是否关注
-export function getFollowInfo (data) {
+export function getFollowInfo(data) {
   data = qs.stringify(data)
   return request({
     url: '/follow/project/check',
@@ -12,7 +12,7 @@ export function getFollowInfo (data) {
 }
 
 // 关注项目
-export function addFollow (data) {
+export function addFollow(data) {
   data = qs.stringify(data)
   return request({
     url: '/follow/project/add',
@@ -22,7 +22,7 @@ export function addFollow (data) {
 }
 
 // 取消关注
-export function cancelFollow (data) {
+export function cancelFollow(data) {
   data = qs.stringify(data)
   return request({
     url: '/follow/project/cancel',
@@ -32,7 +32,7 @@ export function cancelFollow (data) {
 }
 
 // 获取项目基本信息(同跟筛选条件)
-export function getProjectInfo (data) {
+export function getProjectInfo(data) {
   data = qs.stringify(data)
   return request({
     url: '/analysis/projectInfo',
@@ -42,7 +42,7 @@ export function getProjectInfo (data) {
 }
 
 // 获取项目基本信息(同跟筛选条件)
-export function getFollowAssociationList (data) {
+export function getFollowAssociationList(data) {
   data = qs.stringify(data)
   return request({
     url: '/follow/ent/association',
@@ -52,7 +52,7 @@ export function getFollowAssociationList (data) {
 }
 
 // 获取投标决策分析结果
-export function getAnalysisResult (data) {
+export function getAnalysisResult(data) {
   // data = qs.stringify(data)
   return request({
     url: '/decision/decInfo',
@@ -62,7 +62,7 @@ export function getAnalysisResult (data) {
 }
 
 // 获取投标决策分析项目明细
-export function getAnalysisDetail (data) {
+export function getAnalysisDetail(data) {
   // data = qs.stringify(data)
   return request({
     url: '/decision/projectInfoByBW',
@@ -72,7 +72,7 @@ export function getAnalysisDetail (data) {
 }
 
 // 分析内容-中标企业top10
-export function getAnalysisHotTop10 (data) {
+export function getAnalysisHotTop10(data) {
   return request({
     url: '/decision/hotWinnerTop',
     method: 'post',
@@ -81,7 +81,7 @@ export function getAnalysisHotTop10 (data) {
 }
 
 // 分析内容-评标专家top10
-export function getAnalysisDecReviewExperts (data) {
+export function getAnalysisDecReviewExperts(data) {
   return request({
     url: '/decision/decReviewExperts',
     method: 'post',
@@ -90,7 +90,7 @@ export function getAnalysisDecReviewExperts (data) {
 }
 
 // 分析内容-评标专家top10项目信息明细
-export function getAnalysisERProjects (data) {
+export function getAnalysisERProjects(data) {
   return request({
     url: '/decision/getREProjects',
     method: 'post',

+ 2 - 2
apps/bigmember_pc/src/api/modules/biService.js

@@ -1,6 +1,6 @@
 import request from '@/api'
 
-export function getBiAddedProjects () {
+export function getBiAddedProjects() {
   return request({
     baseURL: '/jyapi/biService',
     url: '/getInfoId',
@@ -8,7 +8,7 @@ export function getBiAddedProjects () {
   })
 }
 
-export function addBiProject (data) {
+export function addBiProject(data) {
   return request({
     baseURL: '/jyapi/biService',
     url: '/addProject',

+ 26 - 26
apps/bigmember_pc/src/api/modules/chart.js

@@ -2,7 +2,7 @@ import request from '@/api'
 import qs from 'qs'
 
 // 获取大会员采购单位动态信息
-export function getUnitDt (data) {
+export function getUnitDt(data) {
   data = qs.stringify(data)
   return request({
     url: '/portrait/buyer/getNewMsg',
@@ -12,7 +12,7 @@ export function getUnitDt (data) {
 }
 
 // 获取超级订阅采购单位动态信息
-export function getVipUnitDt (data) {
+export function getVipUnitDt(data) {
   data = qs.stringify(data)
   return request({
     url: '/subVipPortrait/buyer/getNewMsg',
@@ -22,7 +22,7 @@ export function getVipUnitDt (data) {
 }
 
 // 获取大会员采购单位画像信息
-export function getUnitChart (data) {
+export function getUnitChart(data) {
   data = qs.stringify(data)
   return request({
     url: '/portrait/buyer/getData',
@@ -32,7 +32,7 @@ export function getUnitChart (data) {
 }
 
 // 获取超级订阅采购单位画像信息
-export function getVipUnitChart (data) {
+export function getVipUnitChart(data) {
   data = qs.stringify(data)
   return request({
     url: '/subVipPortrait/buyer/getData',
@@ -42,7 +42,7 @@ export function getVipUnitChart (data) {
 }
 
 // 获取地图json文件
-export function getMapJson (data) {
+export function getMapJson(data) {
   data = qs.stringify(data)
   return request({
     url: '@/assets/js/china.json',
@@ -52,7 +52,7 @@ export function getMapJson (data) {
 }
 
 // 获取企业画像图表信息
-export function getEntChart (data) {
+export function getEntChart(data) {
   data = qs.stringify(data)
   return request({
     url: '/portrait/winner/getData',
@@ -62,7 +62,7 @@ export function getEntChart (data) {
 }
 
 // 获取企业画像关联信息
-export function getEntAssociatedInfo (data) {
+export function getEntAssociatedInfo(data) {
   data = qs.stringify(data)
   return request({
     url: '/portrait/winner/noLoginAssociatedInfo',
@@ -72,7 +72,7 @@ export function getEntAssociatedInfo (data) {
 }
 
 // 获取超级订阅企业画像图表信息
-export function getSubVipEntChart (data) {
+export function getSubVipEntChart(data) {
   data = qs.stringify(data)
   return request({
     url: '/portrait/subVipPortrait/winner',
@@ -82,7 +82,7 @@ export function getSubVipEntChart (data) {
 }
 
 // 企业画像可筛选项*
-export function getEntWinnerSelect (data) {
+export function getEntWinnerSelect(data) {
   data = qs.stringify(data)
   return request({
     url: '/portrait/winner/selects',
@@ -92,7 +92,7 @@ export function getEntWinnerSelect (data) {
 }
 
 // 超级订阅企业画像可筛选项*
-export function getsubVipPortraitSelect (data) {
+export function getsubVipPortraitSelect(data) {
   data = qs.stringify(data)
   return request({
     url: '/portrait/subVipPortrait/selects',
@@ -102,7 +102,7 @@ export function getsubVipPortraitSelect (data) {
 }
 
 // 企业画像-企业基本信息*
-export function getEntForm (data) {
+export function getEntForm(data) {
   data = qs.stringify(data)
   return request({
     url: '/portrait/ent/detail',
@@ -112,7 +112,7 @@ export function getEntForm (data) {
 }
 
 // 超级订阅-企业画像-企业基本信息*
-export function getSubVipEntForm (data) {
+export function getSubVipEntForm(data) {
   data = qs.stringify(data)
   return request({
     url: '/portrait/subVipPortrait/entDetail',
@@ -122,7 +122,7 @@ export function getSubVipEntForm (data) {
 }
 
 // 企业情报历史数据接口
-export function getEntChangeList (data) {
+export function getEntChangeList(data) {
   data = qs.stringify(data)
   return request({
     url: '/follow/ent/entChangeList',
@@ -132,7 +132,7 @@ export function getEntChangeList (data) {
 }
 
 // 大会员采购单位画像可筛选项*
-export function getBuyerSelect (data) {
+export function getBuyerSelect(data) {
   data = qs.stringify(data)
   return request({
     url: '/portrait/buyer/selects',
@@ -142,7 +142,7 @@ export function getBuyerSelect (data) {
 }
 
 // 超级订阅采购单位画像可筛选项*
-export function getVipBuyerSelect (data) {
+export function getVipBuyerSelect(data) {
   data = qs.stringify(data)
   return request({
     url: '/subVipPortrait/buyer/selects',
@@ -152,7 +152,7 @@ export function getVipBuyerSelect (data) {
 }
 
 // 采购单位画像-中标动态
-export function getNewMsg (data) {
+export function getNewMsg(data) {
   data = qs.stringify(data)
   return request({
     url: '/portrait/winner/getNewMsg',
@@ -162,7 +162,7 @@ export function getNewMsg (data) {
 }
 
 // 超级订阅-采购单位画像-中标动态
-export function getSvipNewMsg (data) {
+export function getSvipNewMsg(data) {
   data = qs.stringify(data)
   return request({
     url: '/portrait/subVipPortrait/winnerNewMsg',
@@ -172,7 +172,7 @@ export function getSvipNewMsg (data) {
 }
 
 // 添加关注的企业*
-export function setFollowEnt (data) {
+export function setFollowEnt(data) {
   data = qs.stringify(data)
   return request({
     url: '/follow/ent/addFollow',
@@ -182,7 +182,7 @@ export function setFollowEnt (data) {
 }
 
 // 取消关注的企业*
-export function setCancelEnt (data) {
+export function setCancelEnt(data) {
   data = qs.stringify(data)
   return request({
     url: '/follow/ent/delFollow',
@@ -192,7 +192,7 @@ export function setCancelEnt (data) {
 }
 
 // 查询当前企业是否在 关注的客户 列表中
-export function getStatusCustomer (data) {
+export function getStatusCustomer(data) {
   return request({
     baseURL: '/publicapply',
     url: '/customer/check',
@@ -202,7 +202,7 @@ export function getStatusCustomer (data) {
 }
 
 // 添加/取消关注的客户*
-export function setStatusCustomer (data) {
+export function setStatusCustomer(data) {
   // data = qs.stringify(data)
   return request({
     baseURL: '/publicapply',
@@ -213,7 +213,7 @@ export function setStatusCustomer (data) {
 }
 
 // 获取采购单位画像历史项目联系方式
-export function getBuyerHistoryContact (data) {
+export function getBuyerHistoryContact(data) {
   data = qs.stringify(data)
   return request({
     url: '/portrait/contacts',
@@ -223,7 +223,7 @@ export function getBuyerHistoryContact (data) {
 }
 
 // 获取中标企业画像联系人联系方式
-export function getWinnerHistoryContact (data) {
+export function getWinnerHistoryContact(data) {
   data = qs.stringify(data)
   return request({
     url: '/portrait/winner/contacts',
@@ -233,7 +233,7 @@ export function getWinnerHistoryContact (data) {
 }
 
 // 超级订阅用户获取采购单位画像历史项目联系方式
-export function vipBuyerHistoryContact (data) {
+export function vipBuyerHistoryContact(data) {
   data = qs.stringify(data)
   return request({
     url: '/subVipPortrait/buyer/contacts',
@@ -243,7 +243,7 @@ export function vipBuyerHistoryContact (data) {
 }
 
 // 周报月报项目明细
-export function getWeekMonthReportProjectList (data) {
+export function getWeekMonthReportProjectList(data) {
   return request({
     url: '/report/projectInfo',
     method: 'post',
@@ -252,7 +252,7 @@ export function getWeekMonthReportProjectList (data) {
 }
 
 // 市场分析报告项目明细
-export function getMarketAnalysisReportProjectList (data) {
+export function getMarketAnalysisReportProjectList(data) {
   data = qs.stringify(data)
   return request({
     url: '/marketAnalysis/projectInfo',

+ 4 - 4
apps/bigmember_pc/src/api/modules/coupon.js

@@ -3,7 +3,7 @@ import qs from 'qs'
 
 // 1. 查询当前价格产品可以使用的优惠券
 // 2. 自动领券功能JYR: 1
-export function getCouponList (data) {
+export function getCouponList(data) {
   if (data && data.token) {
     data = qs.stringify(data)
     return request({
@@ -24,7 +24,7 @@ export function getCouponList (data) {
 }
 
 // 优惠券最优选择接口
-export function optimalCoupon (data) {
+export function optimalCoupon(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/jyCoupon',
@@ -35,7 +35,7 @@ export function optimalCoupon (data) {
 }
 
 // 产品下的赠品
-export function getGiftList (data) {
+export function getGiftList(data) {
   if (data && data.token) {
     data = qs.stringify(data)
     return request({
@@ -54,7 +54,7 @@ export function getGiftList (data) {
     })
   }
 }
-export function getInfoByUser (data) {
+export function getInfoByUser(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/jyCoupon',

+ 1 - 1
apps/bigmember_pc/src/api/modules/course.js

@@ -1,7 +1,7 @@
 import request from '@/api'
 
 // 根据ID获取线上课程详情
-export function getCourseInfo (params) {
+export function getCourseInfo(params) {
   return request({
     baseURL: '/OnlineCourses',
     url: '/course/onlineCourseDetails',

+ 4 - 4
apps/bigmember_pc/src/api/modules/crmApplication.js

@@ -1,6 +1,6 @@
 import request from '@/api'
 // 忽略操作
-export function ajaxIgnoreOperate (data) {
+export function ajaxIgnoreOperate(data) {
   // data = qs.stringify(data)
   return request({
     baseURL: '/jyapi',
@@ -11,7 +11,7 @@ export function ajaxIgnoreOperate (data) {
 }
 
 // 收录操作
-export function ajaxEmployOperate (data) {
+export function ajaxEmployOperate(data) {
   return request({
     baseURL: '/jyapi',
     url: '/crmApplication/employ/operate',
@@ -21,7 +21,7 @@ export function ajaxEmployOperate (data) {
 }
 
 // 收录情况
-export function ajaxEmployInfo (data) {
+export function ajaxEmployInfo(data) {
   return request({
     baseURL: '/jyapi',
     url: '/crmApplication/employ/info',
@@ -31,7 +31,7 @@ export function ajaxEmployInfo (data) {
 }
 
 // 判断是否能创建
-export function isAjaxCanAdd (data) {
+export function isAjaxCanAdd(data) {
   return request({
     baseURL: '/jyapi',
     url: '/crmApplication/info/canAdd',

+ 8 - 8
apps/bigmember_pc/src/api/modules/customer.js

@@ -2,7 +2,7 @@ import request from '@/api'
 import qs from 'qs'
 
 // 广东移动单位画像-搜索
-export function getCustomQuery (data) {
+export function getCustomQuery(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/privatedata',
@@ -12,7 +12,7 @@ export function getCustomQuery (data) {
   })
 }
 // 广东移动单位画像-详情
-export function getCustomBuyerData (data) {
+export function getCustomBuyerData(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/privatedata',
@@ -22,7 +22,7 @@ export function getCustomBuyerData (data) {
   })
 }
 // 广东移动单位画像-招标动态
-export function getBuyerNewMsg (data) {
+export function getBuyerNewMsg(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/privatedata',
@@ -32,7 +32,7 @@ export function getBuyerNewMsg (data) {
   })
 }
 // 广东移动单位画像-高级分析筛选条件
-export function getCustomBuyerSelect (data) {
+export function getCustomBuyerSelect(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/privatedata',
@@ -42,7 +42,7 @@ export function getCustomBuyerSelect (data) {
   })
 }
 // 广东移动单位画像-拟建项目
-export function getBuyerProposed (data) {
+export function getBuyerProposed(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/privatedata',
@@ -52,7 +52,7 @@ export function getBuyerProposed (data) {
   })
 }
 // 广东移动单位画像-预告项目
-export function getBuyerNotice (data) {
+export function getBuyerNotice(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/privatedata',
@@ -62,7 +62,7 @@ export function getBuyerNotice (data) {
   })
 }
 // 广东移动单位画像-即将到期项目
-export function getBuyerExpire (data) {
+export function getBuyerExpire(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/privatedata',
@@ -72,7 +72,7 @@ export function getBuyerExpire (data) {
   })
 }
 // 商机管理权限
-export function getEntNicheAuth (data) {
+export function getEntNicheAuth(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/front',

+ 9 - 9
apps/bigmember_pc/src/api/modules/dataExport.js

@@ -4,7 +4,7 @@ import qs from 'qs'
 // 画像动态导出
 // isMember bool 是否是大会员
 // isWinner bool false 采购单位画像;true 中标企业画像
-export function getPortrayalSearchExportId (isMember, isWinner, data) {
+export function getPortrayalSearchExportId(isMember, isWinner, data) {
   let url = ''
   if (isMember) {
     if (isWinner) {
@@ -28,7 +28,7 @@ export function getPortrayalSearchExportId (isMember, isWinner, data) {
 }
 
 // 获取数据导出页面个人支付价格信息
-export function getDataExportPrice (data) {
+export function getDataExportPrice(data) {
   return request({
     baseURL: '/jypay',
     url: '/dataexport/getPrice',
@@ -38,7 +38,7 @@ export function getDataExportPrice (data) {
 }
 
 // 获取数据导出页面数据包信息
-export function getDataPackUsage (data) {
+export function getDataPackUsage(data) {
   return request({
     baseURL: '/subscribepay',
     url: '/dataExportPack/account',
@@ -48,7 +48,7 @@ export function getDataPackUsage (data) {
 }
 
 // 根据ID获取数据导出相关信息
-export function getDataExportInfo (data) {
+export function getDataExportInfo(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/publicapply',
@@ -59,7 +59,7 @@ export function getDataExportInfo (data) {
 }
 
 // 获取数据导出数据包抵扣信息
-export function getDataExportFilterInfo (data) {
+export function getDataExportFilterInfo(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/subscribepay',
@@ -70,7 +70,7 @@ export function getDataExportFilterInfo (data) {
 }
 
 // 发送邮箱验证码
-export function sendMailCode (data) {
+export function sendMailCode(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/front',
@@ -81,7 +81,7 @@ export function sendMailCode (data) {
 }
 
 // 验证邮箱验证码
-export function checkMailCode (data) {
+export function checkMailCode(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/front',
@@ -92,7 +92,7 @@ export function checkMailCode (data) {
 }
 
 // 数据导出-超出2w条,点击不在提示
-export function ajaxSetDontPromptAgain (data) {
+export function ajaxSetDontPromptAgain(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/front',
@@ -103,7 +103,7 @@ export function ajaxSetDontPromptAgain (data) {
 }
 
 // 数据导出-判断是否展示弹框
-export function ajaxGetDontPromptAgain (data) {
+export function ajaxGetDontPromptAgain(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/front',

+ 5 - 5
apps/bigmember_pc/src/api/modules/entbase.js

@@ -1,6 +1,6 @@
 import request from '@/api'
 
-export function entBaseInfo (typeobj) {
+export function entBaseInfo(typeobj) {
   if (typeobj && typeobj.noIntercept) {
     return request({
       baseURL: '/entbase',
@@ -16,7 +16,7 @@ export function entBaseInfo (typeobj) {
     })
   }
 }
-export function userRule () {
+export function userRule() {
   return request({
     baseURL: '/entnicheNew',
     url: '/distribute/userRule',
@@ -24,7 +24,7 @@ export function userRule () {
   })
 }
 
-export function defaultSelectEnt (typeobj) {
+export function defaultSelectEnt(typeobj) {
   if (typeobj && typeobj.noIntercept) {
     return request({
       baseURL: '/entbase',
@@ -42,7 +42,7 @@ export function defaultSelectEnt (typeobj) {
   }
 }
 // 获取当前用户的企业信息
-export function getUserEntInfo () {
+export function getUserEntInfo() {
   return request({
     baseURL: '/entbase',
     url: '/ent/entinfo',
@@ -51,7 +51,7 @@ export function getUserEntInfo () {
 }
 
 //  企业人员结构信息(过滤企业管理员、部门管理员权限)
-export function getEntPowerPersons () {
+export function getEntPowerPersons() {
   return request({
     baseURL: '/entbase',
     url: '/person/dept',

+ 3 - 3
apps/bigmember_pc/src/api/modules/entnicheNew.js

@@ -2,7 +2,7 @@ import request from '@/api'
 import qs from 'qs'
 
 // 获取用户自定义标签/分类标签列表
-export function getEntUserTags () {
+export function getEntUserTags() {
   return request({
     baseURL: '/entnicheNew',
     url: `/customer/getLabel?t=${Date.now()}`,
@@ -11,7 +11,7 @@ export function getEntUserTags () {
 }
 
 // 添加标签后认领接口
-export function renLingCustomerAddTags (data) {
+export function renLingCustomerAddTags(data) {
   return request({
     baseURL: '/entnicheNew',
     url: '/customer/attention',
@@ -21,7 +21,7 @@ export function renLingCustomerAddTags (data) {
 }
 
 // 新增标签
-export function customerAddLabel (data) {
+export function customerAddLabel(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/entnicheNew',

+ 2 - 2
apps/bigmember_pc/src/api/modules/file.js

@@ -1,7 +1,7 @@
 import request from '@/api'
 import qs from 'qs'
 
-export function createOrder (data) {
+export function createOrder(data) {
   return request({
     baseURL: '/jypay',
     url: '/resourcePack/createOrder',
@@ -10,7 +10,7 @@ export function createOrder (data) {
   })
 }
 
-export function getFilePackList (data) {
+export function getFilePackList(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/jypay',

+ 20 - 20
apps/bigmember_pc/src/api/modules/forecast.js

@@ -2,7 +2,7 @@ import request from '@/api'
 import qs from 'qs'
 
 // 潜在项目预测list接口
-export function getPotenList (data) {
+export function getPotenList(data) {
   data = qs.stringify(data)
   return request({
     url: '/forecast/forPList',
@@ -12,7 +12,7 @@ export function getPotenList (data) {
 }
 
 // 根据项目名称联想项目信息接口
-export function getProjectList (data) {
+export function getProjectList(data) {
   data = qs.stringify(data)
   return request({
     url: '/analysis/projectName',
@@ -22,7 +22,7 @@ export function getProjectList (data) {
 }
 
 // 中标预测结果详情页接口
-export function getResultDetail (data) {
+export function getResultDetail(data) {
   data = qs.stringify(data)
   return request({
     url: '/forecast/forWResult',
@@ -32,7 +32,7 @@ export function getResultDetail (data) {
 }
 
 // 我关注的企业列表
-export function getEntFollowList (data) {
+export function getEntFollowList(data) {
   data = qs.stringify(data)
   return request({
     url: '/follow/ent/list',
@@ -42,7 +42,7 @@ export function getEntFollowList (data) {
 }
 
 // 中标企业联想接口
-export function getBidAssociation (data) {
+export function getBidAssociation(data) {
   data = qs.stringify(data)
   return request({
     url: '/search/ent/association',
@@ -52,7 +52,7 @@ export function getBidAssociation (data) {
 }
 
 // 采购单位联想接口
-export function getBuyerAssociation (data) {
+export function getBuyerAssociation(data) {
   data = qs.stringify(data)
   return request({
     url: '/search/buyer/association',
@@ -62,7 +62,7 @@ export function getBuyerAssociation (data) {
 }
 
 // 筛选条件数据接口
-export function getBidProjectInfo (data) {
+export function getBidProjectInfo(data) {
   data = qs.stringify(data)
   return request({
     url: '/analysis/projectInfo',
@@ -72,7 +72,7 @@ export function getBidProjectInfo (data) {
 }
 
 // 中标预测预测数据接口
-export function getForWData (data) {
+export function getForWData(data) {
   // data = qs.stringify(data)
   return request({
     url: '/forecast/forWData',
@@ -82,7 +82,7 @@ export function getForWData (data) {
 }
 
 // 中标预测数据状态接口
-export function getForWStatus (data) {
+export function getForWStatus(data) {
   data = qs.stringify(data)
   return request({
     url: '/forecast/forWStatus',
@@ -92,7 +92,7 @@ export function getForWStatus (data) {
 }
 
 // 中标预测数据状态接口
-export function getForWResult (data) {
+export function getForWResult(data) {
   data = qs.stringify(data)
   return request({
     url: '/forecast/forWResult',
@@ -102,7 +102,7 @@ export function getForWResult (data) {
 }
 
 // 潜在项目预测详情页接口
-export function getPotenDetail (data) {
+export function getPotenDetail(data) {
   data = qs.stringify(data)
   return request({
     url: '/forecast/forPContent',
@@ -112,7 +112,7 @@ export function getPotenDetail (data) {
 }
 
 // 查询企业是否关注
-export function getfollowCheck (data) {
+export function getfollowCheck(data) {
   data = qs.stringify(data)
   return request({
     url: '/follow/ent/followCheck',
@@ -122,7 +122,7 @@ export function getfollowCheck (data) {
 }
 
 // AI中标预测历史记录
-export function getBidAiused (data) {
+export function getBidAiused(data) {
   data = qs.stringify(data)
   return request({
     url: '/use/aiused_history',
@@ -132,7 +132,7 @@ export function getBidAiused (data) {
 }
 
 // AI中标预测历史记录
-export function getBdInfoStatus (data) {
+export function getBdInfoStatus(data) {
   data = qs.stringify(data)
   return request({
     url: '/forecast/bdInfoStatus',
@@ -142,7 +142,7 @@ export function getBdInfoStatus (data) {
 }
 
 // 超级订阅-企业查询默认列表
-export function getSearchByNames (data) {
+export function getSearchByNames(data) {
   // data = qs.stringify(data)
   return request({
     url: '/entinfo/bynames',
@@ -152,7 +152,7 @@ export function getSearchByNames (data) {
 }
 
 // 大会员-中标动态-可筛选项
-export function getNewMsgSelects (data) {
+export function getNewMsgSelects(data) {
   data = qs.stringify(data)
   return request({
     url: '/portrait/winner/getNewMsgSelects',
@@ -162,7 +162,7 @@ export function getNewMsgSelects (data) {
 }
 
 // 超级订阅-中标动态-可筛选项
-export function getSvipMsgSelects (data) {
+export function getSvipMsgSelects(data) {
   data = qs.stringify(data)
   return request({
     url: '/portrait/subVipPortrait/getNewMsgSelects',
@@ -172,7 +172,7 @@ export function getSvipMsgSelects (data) {
 }
 
 // 更改关注企业分组
-export function changeEntGroup (data) {
+export function changeEntGroup(data) {
   data = qs.stringify(data)
   return request({
     url: '/follow/ent/changeGroup',
@@ -182,7 +182,7 @@ export function changeEntGroup (data) {
 }
 
 // 潜在预测订阅省份
-export function forecastArea () {
+export function forecastArea() {
   return request({
     url: '/forecast/forArea',
     method: 'get'
@@ -190,7 +190,7 @@ export function forecastArea () {
 }
 
 // 潜在预测数据导出
-export function forecastDataExport (data) {
+export function forecastDataExport(data) {
   data = qs.stringify(data)
   return request({
     url: '/forecast/forDerive',

+ 15 - 14
apps/bigmember_pc/src/api/modules/home.js

@@ -1,11 +1,12 @@
 import request from '@/api'
 import qs from 'qs'
 
-export const getSearchTag = params => request({
-  url: '/indexTag',
-  method: 'get',
-  params
-})
+export const getSearchTag = (params) =>
+  request({
+    url: '/indexTag',
+    method: 'get',
+    params
+  })
 
 const vtMap = {
   v: 'vType',
@@ -14,7 +15,7 @@ const vtMap = {
   f: 'fType',
   q: 'eType' // 企业订阅-也需调商机管理订阅信息接口,定义q为了区分企业订阅和个人订阅(商机管理)所传参数
 }
-export function getPushList (vt, data) {
+export function getPushList(vt, data) {
   // data = qs.stringify(data)
   return request({
     baseURL: '/jyapi/jybx',
@@ -24,7 +25,7 @@ export function getPushList (vt, data) {
   })
 }
 
-export function getPushListExport (vt, data) {
+export function getPushListExport(vt, data) {
   return request({
     baseURL: '/jyapi',
     url: `/jybx/subscribe/${vtMap[vt]}/byPushHistory`,
@@ -33,7 +34,7 @@ export function getPushListExport (vt, data) {
   })
 }
 
-export function getSimpleFollowList (data) {
+export function getSimpleFollowList(data) {
   data = qs.stringify(data)
   return request({
     url: '/follow/ent/pcSimpleFollowList',
@@ -42,7 +43,7 @@ export function getSimpleFollowList (data) {
   })
 }
 
-export function getDeskFollowList (data) {
+export function getDeskFollowList(data) {
   data = qs.stringify(data)
   return request({
     url: '/follow/ent/list',
@@ -52,7 +53,7 @@ export function getDeskFollowList (data) {
 }
 
 // 获取周报月报
-export function getReportList (data) {
+export function getReportList(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/subscribepay',
@@ -63,7 +64,7 @@ export function getReportList (data) {
 }
 
 // 获取订阅关键词
-export function getSubscribeKeywords (vt, data) {
+export function getSubscribeKeywords(vt, data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/jyapi',
@@ -74,7 +75,7 @@ export function getSubscribeKeywords (vt, data) {
 }
 
 // 设置列表阅读状态
-export function setSubscribeInfoRead (vt, data) {
+export function setSubscribeInfoRead(vt, data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/jyapi',
@@ -85,7 +86,7 @@ export function setSubscribeInfoRead (vt, data) {
 }
 
 // 设置列表阅读状态
-export function getAttendBiddingList (type, data) {
+export function getAttendBiddingList(type, data) {
   return request({
     baseURL: '/jyapi',
     url: `/jybx/core/participate/${type}/list`,
@@ -95,7 +96,7 @@ export function getAttendBiddingList (type, data) {
 }
 
 // 企业人员结构信息
-export function getEntPersons (data) {
+export function getEntPersons(data) {
   return request({
     baseURL: '/jyapi',
     url: '/jybx/core/participate/persons',

+ 1 - 1
apps/bigmember_pc/src/api/modules/jyMerge.js

@@ -1,6 +1,6 @@
 import request from '@/api'
 
-export function getMergeStatus () {
+export function getMergeStatus() {
   return request({
     baseURL: '/jyMerge',
     url: '/usermerge/state?t=' + Date.now(),

+ 2 - 2
apps/bigmember_pc/src/api/modules/leadGeneration.js

@@ -2,7 +2,7 @@ import request from '@/api'
 import qs from 'qs'
 
 // 市场分析报告&超前项目
-export function leadGetDate (data) {
+export function leadGetDate(data) {
   data = qs.stringify(data)
   return request({
     url: '/getDate',
@@ -13,7 +13,7 @@ export function leadGetDate (data) {
 }
 
 // 市场分析报告&超前项目 点击事件统计
-export function ajaxSetLeadGetDateRecord (data) {
+export function ajaxSetLeadGetDateRecord(data) {
   return request({
     url: '/clickRecord',
     baseURL: '/leadGeneration',

+ 4 - 4
apps/bigmember_pc/src/api/modules/marketing.js

@@ -5,7 +5,7 @@ import request from '@/api'
  */
 
 // 获取服务端当前时间戳
-export function getServerInitTime () {
+export function getServerInitTime() {
   return request({
     baseURL: '/jyapi/marketing',
     url: '/time/now?t=' + Date.now(),
@@ -14,7 +14,7 @@ export function getServerInitTime () {
 }
 
 // 预约
-export function appointmentAdd (data) {
+export function appointmentAdd(data) {
   return request({
     baseURL: '/jyapi/marketing',
     url: '/appointment/add',
@@ -24,7 +24,7 @@ export function appointmentAdd (data) {
 }
 
 // 预热信息
-export function getAppointmentInfo (data) {
+export function getAppointmentInfo(data) {
   return request({
     baseURL: '/jyapi/marketing',
     url: '/appointment/info',
@@ -34,7 +34,7 @@ export function getAppointmentInfo (data) {
 }
 
 // 是否已预约
-export function getIsAppointment (data) {
+export function getIsAppointment(data) {
   return request({
     baseURL: '/jyapi/marketing',
     url: '/appointment/isAppointment',

+ 7 - 7
apps/bigmember_pc/src/api/modules/medical.js

@@ -1,7 +1,7 @@
 import request from '@/api'
 
 // 资源查询
-export function GetResourceSurplus (headers) {
+export function GetResourceSurplus(headers) {
   return request({
     url: '/resourceCenter/surplus',
     baseURL: '/jyapi',
@@ -11,7 +11,7 @@ export function GetResourceSurplus (headers) {
 }
 
 // 查询我关注的医疗机构
-export function followInstitutionList (data) {
+export function followInstitutionList(data) {
   return request({
     url: '/domain/claim/institution',
     baseURL: '/jyapi',
@@ -21,7 +21,7 @@ export function followInstitutionList (data) {
 }
 
 // 查询我关注的经销商
-export function followDistributorList (data) {
+export function followDistributorList(data) {
   return request({
     url: '/domain/claim/distributor',
     baseURL: '/jyapi',
@@ -31,7 +31,7 @@ export function followDistributorList (data) {
 }
 
 // 医疗机构画像-基本信息
-export function getInstitution (data) {
+export function getInstitution(data) {
   return request({
     url: '/domain/portrait/institution',
     baseURL: '/jyapi',
@@ -41,7 +41,7 @@ export function getInstitution (data) {
 }
 
 // 医疗机构-最新标讯信息
-export function getMeNewMsgList (data) {
+export function getMeNewMsgList(data) {
   return request({
     url: '/domain/portrait/getNewMsgList',
     baseURL: '/jyapi',
@@ -51,7 +51,7 @@ export function getMeNewMsgList (data) {
 }
 
 // 医疗机构画像-是否认领
-export function isClaimed (data) {
+export function isClaimed(data) {
   return request({
     url: '/domain/isClaimed',
     baseURL: '/jyapi',
@@ -61,7 +61,7 @@ export function isClaimed (data) {
 }
 
 // 医疗机构标讯信息导出
-export function getPortrayalMedicalExportId (data) {
+export function getPortrayalMedicalExportId(data) {
   return request({
     url: '/domain/portrait/newMsgListExport',
     baseURL: '/jyapi',

+ 9 - 9
apps/bigmember_pc/src/api/modules/medicalField.js

@@ -2,7 +2,7 @@ import request from '@/api'
 import qs from 'qs'
 
 // 用户认证信息保存
-export function domainUsersave (data) {
+export function domainUsersave(data) {
   return request({
     url: '/domain/userAuthInfoSave',
     baseURL: '/jyapi',
@@ -12,7 +12,7 @@ export function domainUsersave (data) {
 }
 
 // 获取用户认证信息
-export function domainUserauthinfo (data) {
+export function domainUserauthinfo(data) {
   data = qs.stringify(data)
   return request({
     url: '/domain/userAuthInfo',
@@ -23,7 +23,7 @@ export function domainUserauthinfo (data) {
 }
 
 // 经销商列表
-export function getDistributorList (data) {
+export function getDistributorList(data) {
   return request({
     baseURL: '/jyapi/domain',
     url: '/search/distributor',
@@ -33,7 +33,7 @@ export function getDistributorList (data) {
 }
 
 // 获取医疗机构筛选条件
-export function getMedicalFilter () {
+export function getMedicalFilter() {
   return request({
     baseURL: '/jyapi/domain',
     url: '/getFilterItem',
@@ -42,7 +42,7 @@ export function getMedicalFilter () {
 }
 
 // 筛选医疗机构列表
-export function getSearchMedicalList (data) {
+export function getSearchMedicalList(data) {
   return request({
     baseURL: '/jyapi',
     url: '/domain/search/institution',
@@ -52,7 +52,7 @@ export function getSearchMedicalList (data) {
 }
 
 // 经销商认领
-export function distributorClaim (data) {
+export function distributorClaim(data) {
   return request({
     baseURL: '/jyapi/domain',
     url: '/distributor/claim',
@@ -62,7 +62,7 @@ export function distributorClaim (data) {
 }
 
 // 经销商取消认领
-export function distributorUnClaimed (data) {
+export function distributorUnClaimed(data) {
   return request({
     baseURL: '/jyapi/domain',
     url: '/distributor/unclaimed',
@@ -72,7 +72,7 @@ export function distributorUnClaimed (data) {
 }
 
 // 机构认领
-export function setInstitutionClaim (data) {
+export function setInstitutionClaim(data) {
   return request({
     baseURL: '/jyapi/domain',
     url: '/institution/claim',
@@ -82,7 +82,7 @@ export function setInstitutionClaim (data) {
 }
 
 // 机构取消认领
-export function institutionUnClaimed (data) {
+export function institutionUnClaimed(data) {
   return request({
     baseURL: '/jyapi/domain',
     url: '/institution/unclaimed',

+ 7 - 7
apps/bigmember_pc/src/api/modules/order.js

@@ -2,7 +2,7 @@ import request from '@/api'
 import qs from 'qs'
 
 // 根据商品ID、扩展等参数获取商品规格信息
-export function ajaxGetProductInfo (data) {
+export function ajaxGetProductInfo(data) {
   return request({
     url: '/commodity/detail',
     baseURL: '/jypay',
@@ -12,7 +12,7 @@ export function ajaxGetProductInfo (data) {
 }
 
 // 根据商品ID、规格等参数获取商品优惠信息
-export function ajaxGetProductOffers (data) {
+export function ajaxGetProductOffers(data) {
   return request({
     url: '/commodity/couponInfo',
     baseURL: '/jypay',
@@ -22,7 +22,7 @@ export function ajaxGetProductOffers (data) {
 }
 
 // 根据商品ID、规格、优惠等参数获取商品订单金额信息
-export function ajaxGetProductOrderAmount (data) {
+export function ajaxGetProductOrderAmount(data) {
   return request({
     url: '/commodity/price',
     baseURL: '/jypay',
@@ -31,7 +31,7 @@ export function ajaxGetProductOrderAmount (data) {
   })
 }
 // 根据商品ID、规格、优惠等参数获取商品订单金额信息
-export function ajaxSubmitCreatedProductOrder (data) {
+export function ajaxSubmitCreatedProductOrder(data) {
   return request({
     url: '/common/createorder',
     baseURL: '/jypay',
@@ -42,7 +42,7 @@ export function ajaxSubmitCreatedProductOrder (data) {
 
 // 数据流量包支付
 // https://showdoc.jydev.jianyu360.com/web/#/49?page_id=743
-export function packPayApi (data) {
+export function packPayApi(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/subscribepay',
@@ -52,7 +52,7 @@ export function packPayApi (data) {
   })
 }
 
-export function packExportFile (data) {
+export function packExportFile(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/subscribepay',
@@ -64,7 +64,7 @@ export function packExportFile (data) {
 
 // 超级订阅购买获取续费周期
 // https://yapi.jydev.jianyu360.com/project/63/interface/api/1911
-export function getEffectiveTime (data) {
+export function getEffectiveTime(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/subscribepay',

+ 5 - 5
apps/bigmember_pc/src/api/modules/pay.js

@@ -1,7 +1,7 @@
 import request from '@/api'
 import qs from 'qs'
 
-export function getPhoneCaptcha () {
+export function getPhoneCaptcha() {
   return request({
     baseURL: '/jypay',
     url: `/user/phone/imgCaptcha?t=${Date.now()}`,
@@ -9,7 +9,7 @@ export function getPhoneCaptcha () {
   })
 }
 
-export function phoneBind (data, type) {
+export function phoneBind(data, type) {
   data = qs.stringify(data)
   return request({
     baseURL: '/jypay',
@@ -19,7 +19,7 @@ export function phoneBind (data, type) {
   })
 }
 
-export function emailBind (data, type) {
+export function emailBind(data, type) {
   data = qs.stringify(data)
   return request({
     baseURL: '/jypay',
@@ -29,7 +29,7 @@ export function emailBind (data, type) {
   })
 }
 
-export function accountAuth (data, type) {
+export function accountAuth(data, type) {
   data = qs.stringify(data)
   return request({
     baseURL: '/jypay',
@@ -39,7 +39,7 @@ export function accountAuth (data, type) {
   })
 }
 
-export function filePackUseHistory (data) {
+export function filePackUseHistory(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/jypay',

+ 6 - 3
apps/bigmember_pc/src/api/modules/placeOrder.js

@@ -1,6 +1,7 @@
 import request from '@/api'
 
-export function commodityDetail (data) { // 商品详情
+export function commodityDetail(data) {
+  // 商品详情
   // data = qs.stringify(data)
   return request({
     baseURL: '/jypay',
@@ -10,7 +11,8 @@ export function commodityDetail (data) { // 商品详情
   })
 }
 
-export function commodityDiscounts (data) { // 获取优惠券
+export function commodityDiscounts(data) {
+  // 获取优惠券
   // data = qs.stringify(data)
   return request({
     baseURL: '/jypay',
@@ -20,7 +22,8 @@ export function commodityDiscounts (data) { // 获取优惠券
   })
 }
 
-export function commodityPrice (data) { //  计算价格
+export function commodityPrice(data) {
+  //  计算价格
   return request({
     baseURL: '/jypay',
     url: '/commodity/price',

+ 9 - 9
apps/bigmember_pc/src/api/modules/potential.js

@@ -2,7 +2,7 @@ import request from '@/api'
 import qs from 'qs'
 
 // 潜在客户/竞争对手接口
-export function getCorList (data) {
+export function getCorList(data) {
   return request({
     url: '/potential/corList',
     method: 'post',
@@ -11,7 +11,7 @@ export function getCorList (data) {
 }
 
 // 潜在客户/竞争对手接口--首页
-export function getIndexCorList (data) {
+export function getIndexCorList(data) {
   return request({
     url: '/potential/index',
     method: 'post',
@@ -19,7 +19,7 @@ export function getIndexCorList (data) {
   })
 }
 
-export function setRemoveEnt (data) {
+export function setRemoveEnt(data) {
   data = qs.stringify(data)
   return request({
     url: '/potential/rMyRivals',
@@ -28,7 +28,7 @@ export function setRemoveEnt (data) {
   })
 }
 
-export function setRemoveCustomer (data) {
+export function setRemoveCustomer(data) {
   // data = qs.stringify(data)
   return request({
     baseURL: '/publicapply',
@@ -38,7 +38,7 @@ export function setRemoveCustomer (data) {
   })
 }
 
-export function getUsage (data) {
+export function getUsage(data) {
   data = qs.stringify(data)
   return request({
     url: '/portrait/subVipPortrait/usage',
@@ -47,7 +47,7 @@ export function getUsage (data) {
   })
 }
 
-export function setLogs (data) {
+export function setLogs(data) {
   // data = qs.stringify(data)
   return request({
     url: '/drainage/buyerunit',
@@ -57,7 +57,7 @@ export function setLogs (data) {
   })
 }
 
-export function followClientList (data) {
+export function followClientList(data) {
   data = qs.stringify(data)
   return request({
     url: '/customer/list',
@@ -68,7 +68,7 @@ export function followClientList (data) {
 }
 
 // 是否认领企业
-export function claimchecked (data) {
+export function claimchecked(data) {
   return request({
     baseURL: '/entnicheNew',
     url: '/customer/claimcheck',
@@ -78,7 +78,7 @@ export function claimchecked (data) {
 }
 
 // 添加认领
-export function custAttention (data) {
+export function custAttention(data) {
   return request({
     baseURL: '/entnicheNew',
     url: '/customer/attention',

+ 21 - 21
apps/bigmember_pc/src/api/modules/project.js

@@ -1,7 +1,7 @@
 import request from '@/api'
 import qs from 'qs'
 
-export function getFollowProjectDetail (data) {
+export function getFollowProjectDetail(data) {
   data = qs.stringify(data)
   return request({
     url: '/follow/project/detail',
@@ -10,7 +10,7 @@ export function getFollowProjectDetail (data) {
   })
 }
 
-export function getProjectReport (data) {
+export function getProjectReport(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/bigmember',
@@ -21,7 +21,7 @@ export function getProjectReport (data) {
 }
 
 // 项目历程
-export function getProjectHistory (data) {
+export function getProjectHistory(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/publicapply',
@@ -31,7 +31,7 @@ export function getProjectHistory (data) {
   })
 }
 
-export function getFollowProjectList (data) {
+export function getFollowProjectList(data) {
   data = qs.stringify(data)
   return request({
     url: '/follow/project/list',
@@ -40,7 +40,7 @@ export function getFollowProjectList (data) {
   })
 }
 
-export function followProjectAdd (data) {
+export function followProjectAdd(data) {
   data = qs.stringify(data)
   return request({
     url: '/follow/project/add',
@@ -49,7 +49,7 @@ export function followProjectAdd (data) {
   })
 }
 
-export function followProjectCancel (data) {
+export function followProjectCancel(data) {
   data = qs.stringify(data)
   return request({
     url: '/follow/project/cancel',
@@ -58,7 +58,7 @@ export function followProjectCancel (data) {
   })
 }
 
-export function setFollowRemove30Day (data) {
+export function setFollowRemove30Day(data) {
   data = qs.stringify(data)
   return request({
     url: '/follow/project/remove30Day',
@@ -67,7 +67,7 @@ export function setFollowRemove30Day (data) {
   })
 }
 
-export function attentionProject (data) {
+export function attentionProject(data) {
   data = qs.stringify(data)
   return request({
     url: '/follow/project/list',
@@ -76,7 +76,7 @@ export function attentionProject (data) {
   })
 }
 
-export function areaProject (data) {
+export function areaProject(data) {
   data = qs.stringify(data)
   return request({
     url: '/follow/project/screenArea',
@@ -85,7 +85,7 @@ export function areaProject (data) {
   })
 }
 
-export function showAnnouncement (data) {
+export function showAnnouncement(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/publicapply',
@@ -96,7 +96,7 @@ export function showAnnouncement (data) {
 }
 
 // 首页-已认领的项目
-export function getClaimList () {
+export function getClaimList() {
   return request({
     baseURL: '/bigmember',
     url: '/project/claim/list',
@@ -109,7 +109,7 @@ export function getClaimList () {
  * @param data
  * @returns {AxiosPromise}
  */
-export function getProjectRecordStatus (data) {
+export function getProjectRecordStatus(data) {
   return request({
     baseURL: '/jyapi',
     url: '/jybx/core/participate/content',
@@ -123,7 +123,7 @@ export function getProjectRecordStatus (data) {
  * @param data
  * @returns {AxiosPromise}
  */
-export function setProjectRecordStatus (data) {
+export function setProjectRecordStatus(data) {
   return request({
     baseURL: '/jyapi',
     url: '/jybx/core/participate/updateBidStatus',
@@ -137,7 +137,7 @@ export function setProjectRecordStatus (data) {
  * @param data
  * @returns {AxiosPromise}
  */
-export function getProjectRecords (data) {
+export function getProjectRecords(data) {
   return request({
     baseURL: '/jyapi',
     url: '/jybx/core/participate/records',
@@ -151,7 +151,7 @@ export function getProjectRecords (data) {
  * @param data
  * @returns {AxiosPromise}
  */
-export function getProjectRecordStatusOptions (data) {
+export function getProjectRecordStatusOptions(data) {
   return request({
     baseURL: '/jyapi',
     url: '/jybx/core/participate/setUpInfo',
@@ -164,7 +164,7 @@ export function getProjectRecordStatusOptions (data) {
  * 获取列表参标数据
  * @param data
  */
-export function getBidIsJoin (data) {
+export function getBidIsJoin(data) {
   return request({
     baseURL: '/jyapi/jybx',
     url: '/core/participate/show',
@@ -185,7 +185,7 @@ export function getBidIsJoin (data) {
  int64 bidEndTime = 6 ;// 投标截止时间
  int64 currentTime = 7 ;// 服务器当前时间
  */
-export function getDetailBidIsJoin (data) {
+export function getDetailBidIsJoin(data) {
   return request({
     baseURL: '/jyapi/jybx',
     url: '/core/participate/info',
@@ -200,7 +200,7 @@ export function getDetailBidIsJoin (data) {
  * @param projectIds 项目信息id ,多个,号隔开 划转和终止参标必传(bidIds和projectIds必传一个)
  * @param callback
  */
-export function joinBidAction (action, data) {
+export function joinBidAction(action, data) {
   return request({
     baseURL: '/jyapi/jybx',
     url: `/core/participate/${action}/info`,
@@ -210,7 +210,7 @@ export function joinBidAction (action, data) {
 }
 
 // 订阅推送列表参标统计
-export function getPushBidStatistics (data) {
+export function getPushBidStatistics(data) {
   return request({
     baseURL: '/jyapi',
     url: '/jybx/core/statistics/pushStatistics',
@@ -220,7 +220,7 @@ export function getPushBidStatistics (data) {
 }
 
 // 参标项目汇总统计
-export function getProjectBidStatistics (data) {
+export function getProjectBidStatistics(data) {
   return request({
     baseURL: '/jyapi',
     url: '/jybx/core/statistics/projectStatistics',
@@ -230,7 +230,7 @@ export function getProjectBidStatistics (data) {
 }
 
 // 项目明细汇总统计
-export function getProjectBidDetailStatistics (data) {
+export function getProjectBidDetailStatistics(data) {
   return request({
     baseURL: '/jyapi',
     url: '/jybx/core/statistics/projectDetails',

+ 15 - 15
apps/bigmember_pc/src/api/modules/public.js

@@ -1,7 +1,7 @@
 import request from '@/api'
 import qs from 'qs'
 
-export function getCommonAdList (data) {
+export function getCommonAdList(data) {
   return request({
     baseURL: '/publicapply',
     url: '/free/getJyAdList',
@@ -10,7 +10,7 @@ export function getCommonAdList (data) {
   })
 }
 
-export function getFreeUserPushInfo (data) {
+export function getFreeUserPushInfo(data) {
   return request({
     baseURL: '/publicapply',
     url: '/myinfo',
@@ -19,7 +19,7 @@ export function getFreeUserPushInfo (data) {
 }
 
 // 获取免费订阅信息接口
-export function getFreeUserSubscribeList (data) {
+export function getFreeUserSubscribeList(data) {
   return request({
     baseURL: '/publicapply',
     url: '/free/subscribe',
@@ -37,7 +37,7 @@ export const getFreeSubscribeInfo = getFreeUserSubscribeList
   }
   参数示例 (baction=R binfo数组只需要bid即可)
 */
-export function bidCollAction (data) {
+export function bidCollAction(data) {
   return request({
     baseURL: '/publicapply',
     url: '/bidcoll/action',
@@ -47,7 +47,7 @@ export function bidCollAction (data) {
 }
 
 // 获取用户标讯收藏自定义标签
-export function getBidCollTagList () {
+export function getBidCollTagList() {
   return request({
     baseURL: '/publicapply',
     url: `/bidcoll/getLabel?t=${Date.now()}`,
@@ -56,7 +56,7 @@ export function getBidCollTagList () {
 }
 
 // 新增自定义标签
-export function createBidTag (data) {
+export function createBidTag(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/publicapply',
@@ -79,7 +79,7 @@ export function createBidTag (data) {
   2:lids不为空;laction=”S”;binfo数组不为空->收藏信息绑定标签
   3:lids不为空;laction=”D”;->删除标签 并解绑收藏的信息
 */
-export function saveBidCollAddTag (data) {
+export function saveBidCollAddTag(data) {
   return request({
     baseURL: '/publicapply',
     url: '/bidcoll/label',
@@ -89,7 +89,7 @@ export function saveBidCollAddTag (data) {
 }
 
 // 检查是否收藏
-export function checkBidsIsColl (data) {
+export function checkBidsIsColl(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/publicapply',
@@ -100,7 +100,7 @@ export function checkBidsIsColl (data) {
 }
 
 // 获取身份列表
-export function getIdentityList () {
+export function getIdentityList() {
   return request({
     timeout: 5000,
     baseURL: '/publicapply',
@@ -110,7 +110,7 @@ export function getIdentityList () {
 }
 
 // 校验密码
-export function passwordCheck (data) {
+export function passwordCheck(data) {
   return request({
     baseURL: '/publicapply',
     url: '/password/check',
@@ -120,7 +120,7 @@ export function passwordCheck (data) {
 }
 
 // 修改密码
-export function passwordUpdate (data) {
+export function passwordUpdate(data) {
   return request({
     baseURL: '/publicapply',
     url: '/password/update',
@@ -130,7 +130,7 @@ export function passwordUpdate (data) {
 }
 
 // 身份信息维护 - 查询
-export function getUserIdentity (data) {
+export function getUserIdentity(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/publicapply',
@@ -140,7 +140,7 @@ export function getUserIdentity (data) {
   })
 }
 // 身份信息维护 - 编辑
-export function editUserIdentity (data) {
+export function editUserIdentity(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/publicapply',
@@ -151,7 +151,7 @@ export function editUserIdentity (data) {
 }
 
 // 获取活动配置信息
-export function getActivityConfig (data) {
+export function getActivityConfig(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/publicapply',
@@ -162,7 +162,7 @@ export function getActivityConfig (data) {
 }
 
 // 业主监控采购单位已读接口
-export function setReadStatus (data) {
+export function setReadStatus(data) {
   // data = qs.stringify(data)
   return request({
     baseURL: '/publicapply',

+ 9 - 9
apps/bigmember_pc/src/api/modules/report.js

@@ -2,7 +2,7 @@ import request from '@/api'
 import qs from 'qs'
 
 // 周报详情
-export function getReportDetail (data) {
+export function getReportDetail(data) {
   data = qs.stringify(data)
   return request({
     url: '/report/detail',
@@ -12,7 +12,7 @@ export function getReportDetail (data) {
 }
 
 // 首页接口
-export function getReportIndex (data) {
+export function getReportIndex(data) {
   data = qs.stringify(data)
   return request({
     url: '/report/index',
@@ -22,7 +22,7 @@ export function getReportIndex (data) {
 }
 
 // 获取第一个周报月报的时间接口
-export function getReportStartTime (data) {
+export function getReportStartTime(data) {
   data = qs.stringify(data)
   return request({
     url: '/report/starttime',
@@ -32,7 +32,7 @@ export function getReportStartTime (data) {
 }
 
 // 获取市场分析报告历史记录
-export function getReportHistoryList (data) {
+export function getReportHistoryList(data) {
   data = qs.stringify(data)
   return request({
     url: '/marketAnalysis/analysisHistory',
@@ -42,7 +42,7 @@ export function getReportHistoryList (data) {
 }
 
 // 定制化报告开始分析
-export function doReportAnalysis (data) {
+export function doReportAnalysis(data) {
   data = qs.stringify(data)
   return request({
     url: '/marketAnalysis/doAnalysis',
@@ -52,7 +52,7 @@ export function doReportAnalysis (data) {
 }
 
 // 定制化报告闲情
-export function getReportAnalysisInfo (data) {
+export function getReportAnalysisInfo(data) {
   data = qs.stringify(data)
   return request({
     url: '/marketAnalysis/getAnalysisResult',
@@ -62,7 +62,7 @@ export function getReportAnalysisInfo (data) {
 }
 
 // 取消指定报告分析操作
-export function cancelReportAnalysis (data) {
+export function cancelReportAnalysis(data) {
   data = qs.stringify(data)
   return request({
     url: '/marketAnalysis/cancel',
@@ -72,7 +72,7 @@ export function cancelReportAnalysis (data) {
 }
 
 // 删除报告
-export function deleteReportItem (data) {
+export function deleteReportItem(data) {
   data = qs.stringify(data)
   return request({
     url: '/marketAnalysis/delete',
@@ -82,7 +82,7 @@ export function deleteReportItem (data) {
 }
 
 // 查看报告--是否离线查询
-export function isOfflineReport (data) {
+export function isOfflineReport(data) {
   data = qs.stringify(data)
   return request({
     url: '/marketAnalysis/isOffline',

+ 25 - 25
apps/bigmember_pc/src/api/modules/subscribe.js

@@ -2,7 +2,7 @@ import request from '@/api'
 import qs from 'qs'
 
 // 获取大会员信息(订阅设置)
-export function getBigMemberInfo () {
+export function getBigMemberInfo() {
   return request({
     url: '/use/info?t=' + Date.now(),
     method: 'get'
@@ -10,7 +10,7 @@ export function getBigMemberInfo () {
 }
 
 // 获取订阅关键词(市场分析报告
-export function getAnalysisrKeyInfo () {
+export function getAnalysisrKeyInfo() {
   return request({
     url: '/marketAnalysis/analysisKeyWord?t=' + Date.now(),
     method: 'get'
@@ -18,7 +18,7 @@ export function getAnalysisrKeyInfo () {
 }
 
 // 修改关键词
-export function updateKey (data) {
+export function updateKey(data) {
   // data = qs.stringify(data)
   return request({
     url: '/subscribe/key/update',
@@ -28,7 +28,7 @@ export function updateKey (data) {
 }
 
 // 修改区域设置
-export function updateArea (data) {
+export function updateArea(data) {
   return request({
     url: '/subscribe/area/update',
     method: 'post',
@@ -37,7 +37,7 @@ export function updateArea (data) {
 }
 
 // 修改信息类型
-export function updateInfoType (data) {
+export function updateInfoType(data) {
   return request({
     url: '/subscribe/infotype/update',
     method: 'post',
@@ -46,7 +46,7 @@ export function updateInfoType (data) {
 }
 
 // 修改采购单位行业
-export function updateBuyClass (data) {
+export function updateBuyClass(data) {
   return request({
     url: '/subscribe/buyerclass/update',
     method: 'post',
@@ -55,7 +55,7 @@ export function updateBuyClass (data) {
 }
 
 // 修改项目匹配
-export function updateProjectMatch (data) {
+export function updateProjectMatch(data) {
   data = qs.stringify(data)
   return request({
     url: '/subscribe/projectmatch/update',
@@ -65,7 +65,7 @@ export function updateProjectMatch (data) {
 }
 
 // 修改”其他“采购单位按钮
-export function updateOtherBuyClass (data) {
+export function updateOtherBuyClass(data) {
   data = qs.stringify(data)
   return request({
     url: '/subscribe/otherbuyclass/update',
@@ -75,7 +75,7 @@ export function updateOtherBuyClass (data) {
 }
 
 // 修改匹配方式
-export function updateMatchType (data) {
+export function updateMatchType(data) {
   data = qs.stringify(data)
   return request({
     url: '/subscribe/matchtype/update',
@@ -85,7 +85,7 @@ export function updateMatchType (data) {
 }
 
 // 订阅地区、采购单位行业修改
-export function setAreaBuyer (data) {
+export function setAreaBuyer(data) {
   data.vSwitch = 'm'
   data = qs.stringify(data)
   return request({
@@ -97,7 +97,7 @@ export function setAreaBuyer (data) {
 }
 
 // 订阅修改(换成超级订阅)
-export function setUserInfoVip (data) {
+export function setUserInfoVip(data) {
   data.vSwitch = 'm'
   data = qs.stringify(data)
   return request({
@@ -109,7 +109,7 @@ export function setUserInfoVip (data) {
 }
 
 // 相似订阅推荐
-export function getRecommend (data) {
+export function getRecommend(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/member',
@@ -120,7 +120,7 @@ export function getRecommend (data) {
 }
 
 // 关键词近30天推送数量查询
-export function getPushCount (data) {
+export function getPushCount(data) {
   data.vt = 'm'
   data = qs.stringify(data)
   return request({
@@ -132,7 +132,7 @@ export function getPushCount (data) {
 }
 
 // 超级订阅订阅设置-推送设置
-export function getPushSetDetail (data) {
+export function getPushSetDetail(data) {
   data = qs.stringify(data)
   return request({
     url: '/pushset/detail',
@@ -142,7 +142,7 @@ export function getPushSetDetail (data) {
 }
 
 // 超级订阅订阅设置-修改订阅设置(全量提交,新增接口)
-export function updateVipSubscribe (data) {
+export function updateVipSubscribe(data) {
   return request({
     baseURL: '/jyapi/jybx',
     url: '/subscribe/vType/update',
@@ -159,7 +159,7 @@ const vtMap = {
   q: 'eType' // 企业订阅-也需调商机管理订阅信息接口,定义q为了区分企业订阅和个人订阅(商机管理)所传参数
 }
 // 企业订阅查询状态
-export function getViewStatus (vt, data) {
+export function getViewStatus(vt, data) {
   return request({
     baseURL: '/jyapi/jybx',
     url: `/subscribe/${vtMap[vt]}/viewStatus`,
@@ -169,7 +169,7 @@ export function getViewStatus (vt, data) {
 }
 
 // 企业订阅接收人员获取
-export function getDistributor (vt, data) {
+export function getDistributor(vt, data) {
   return request({
     baseURL: '/jyapi/jybx',
     url: `/subscribe/${vtMap[vt]}/distributor`,
@@ -179,7 +179,7 @@ export function getDistributor (vt, data) {
 }
 
 // 订阅手动分发
-export function getMsgDistributor (data) {
+export function getMsgDistributor(data) {
   return request({
     baseURL: '/jyapi/jybx',
     url: '/subscribe/msgDistributor',
@@ -189,7 +189,7 @@ export function getMsgDistributor (data) {
 }
 
 // 用户绑定信息获取
-export function getUserBindInfo (data) {
+export function getUserBindInfo(data) {
   return request({
     baseURL: '/jyapi/jybx',
     url: '/subscribe/getUser',
@@ -199,7 +199,7 @@ export function getUserBindInfo (data) {
 }
 
 // 用户绑定信息获取
-export function setUserBindInfo (data) {
+export function setUserBindInfo(data) {
   return request({
     baseURL: '/jyapi/jybx',
     url: '/subscribe/setUser',
@@ -209,7 +209,7 @@ export function setUserBindInfo (data) {
 }
 
 // 用户推送设置信息获取
-export function getUserPushInfo (data) {
+export function getUserPushInfo(data) {
   return request({
     baseURL: '/jyapi/jybx',
     url: '/subscribe/getPushSet?t=' + Date.now(),
@@ -219,7 +219,7 @@ export function getUserPushInfo (data) {
 }
 
 // 用户推送设置信息设置
-export function setUserPushInfo (data) {
+export function setUserPushInfo(data) {
   return request({
     baseURL: '/jyapi/jybx',
     url: '/subscribe/setPushSet',
@@ -229,7 +229,7 @@ export function setUserPushInfo (data) {
 }
 
 // 查询用户订阅列表
-export function getStaffSubscribeList (data) {
+export function getStaffSubscribeList(data) {
   return request({
     baseURL: '/jyapi/jybx',
     url: '/subscribe/getStaffSubscribe',
@@ -239,7 +239,7 @@ export function getStaffSubscribeList (data) {
 }
 
 // 查询用户订阅详情
-export function getStaffSubscribeDetail (data) {
+export function getStaffSubscribeDetail(data) {
   return request({
     baseURL: '/jyapi/jybx',
     url: '/subscribe/getStaffSubscribeDetail',
@@ -248,7 +248,7 @@ export function getStaffSubscribeDetail (data) {
   })
 }
 // 采购单位详情未登录右侧数据
-export function relatesInformation (data) {
+export function relatesInformation(data) {
   return request({
     baseURL: '/jyapi/jybx',
     url: '/buyer/relates/information',

+ 6 - 6
apps/bigmember_pc/src/api/modules/svip.js

@@ -2,7 +2,7 @@ import request from '@/api'
 import qs from 'qs'
 
 // 获取用户超级订阅购买信息
-export function getSVIPBuyInfo (data) {
+export function getSVIPBuyInfo(data) {
   // 免登录获取信息
   if (data && data.token) {
     data = qs.stringify(data)
@@ -22,7 +22,7 @@ export function getSVIPBuyInfo (data) {
 }
 
 // 获取超级订阅价格表
-export function getGoodsPrice (data) {
+export function getGoodsPrice(data) {
   if (data && data.token) {
     // 免登录状态查询
     data = qs.stringify(data)
@@ -42,7 +42,7 @@ export function getGoodsPrice (data) {
 }
 
 // 获取超级订阅价格
-export function getSelectPrice (data) {
+export function getSelectPrice(data) {
   if (data && data.token) {
     data = qs.stringify(data)
     return request({
@@ -63,7 +63,7 @@ export function getSelectPrice (data) {
 }
 
 // 超级订阅购买
-export function createSVIPOrder (data) {
+export function createSVIPOrder(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/subscribepay',
@@ -74,7 +74,7 @@ export function createSVIPOrder (data) {
 }
 
 // 超级订阅升级
-export function svipUpgrade (data) {
+export function svipUpgrade(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/subscribepay',
@@ -85,7 +85,7 @@ export function svipUpgrade (data) {
 }
 
 // 统一下单接口
-export function createCommonOrder (data) {
+export function createCommonOrder(data) {
   if (data && data.token) {
     return request({
       baseURL: '/jypay',

+ 15 - 15
apps/bigmember_pc/src/api/modules/user.js

@@ -1,7 +1,7 @@
 import request from '@/api'
 import qs from 'qs'
 
-export function getEntApi (typeobj) {
+export function getEntApi(typeobj) {
   if (typeobj && typeobj.noIntercept) {
     return request({
       baseURL: '/entnicheNew',
@@ -19,14 +19,14 @@ export function getEntApi (typeobj) {
   }
 }
 
-export function getUserPower () {
+export function getUserPower() {
   return request({
     url: '/use/isAdd',
     method: 'get'
   })
 }
 
-export function getUserAccountInfo () {
+export function getUserAccountInfo() {
   return request({
     baseURL: '/jypay',
     url: '/user/getAccountInfo',
@@ -35,7 +35,7 @@ export function getUserAccountInfo () {
 }
 
 // 获取entSearch权限信息
-export function getEntSearchPower () {
+export function getEntSearchPower() {
   return request({
     baseURL: '/publicapply',
     url: '/bidcoll/power',
@@ -44,7 +44,7 @@ export function getEntSearchPower () {
 }
 
 // 获取标讯收藏列表
-export function getEntCollectionList (data) {
+export function getEntCollectionList(data) {
   return request({
     baseURL: '/publicapply',
     url: '/bidcoll/list',
@@ -54,7 +54,7 @@ export function getEntCollectionList (data) {
 }
 
 // 获取广告位图片和链接
-export function getAdList (data) {
+export function getAdList(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/jypay',
@@ -65,7 +65,7 @@ export function getAdList (data) {
 }
 
 // 获取大会员用户套餐信息
-export function getUseEquity (data) {
+export function getUseEquity(data) {
   data = qs.stringify(data)
   return request({
     url: '/use/equity',
@@ -75,7 +75,7 @@ export function getUseEquity (data) {
 }
 
 // 获取所有用户可用功能接口
-export function getAllFunctions (data) {
+export function getAllFunctions(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/publicapply',
@@ -85,7 +85,7 @@ export function getAllFunctions (data) {
   })
 }
 
-export function getMedicalIndustry (data) {
+export function getMedicalIndustry(data) {
   return request({
     baseURL: '/publicapply',
     url: '/userbase/medical/industryTag',
@@ -95,7 +95,7 @@ export function getMedicalIndustry (data) {
 }
 
 // 获取用户当前常用功能
-export function getCanUseFunctions (data) {
+export function getCanUseFunctions(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/publicapply',
@@ -106,7 +106,7 @@ export function getCanUseFunctions (data) {
 }
 
 // 保存用户常用功能
-export function saveCommonFunctions (data) {
+export function saveCommonFunctions(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/publicapply',
@@ -117,7 +117,7 @@ export function saveCommonFunctions (data) {
 }
 
 // PC端大会员侧边栏菜单
-export function getLeftMenu (data) {
+export function getLeftMenu(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/publicapply',
@@ -128,7 +128,7 @@ export function getLeftMenu (data) {
 }
 
 // 大会员首页消息展示
-export function latestNews () {
+export function latestNews() {
   return request({
     baseURL: '/jymessageCenter',
     url: '/latestNews',
@@ -141,7 +141,7 @@ export function latestNews () {
  * @param data
  * @returns {*}
  */
-export function clickMessage (data) {
+export function clickMessage(data) {
   return request({
     baseURL: '/jyapi/messageCenter',
     url: '/msgOpenLog',
@@ -155,7 +155,7 @@ export function clickMessage (data) {
  * @param data
  * @returns {*}
  */
-export function readMark (data) {
+export function readMark(data) {
   return request({
     baseURL: '/jyapi/messageCenter/',
     url: '/markRead',

+ 9 - 9
apps/bigmember_pc/src/api/modules/workspace.js

@@ -13,7 +13,7 @@ const actionModeMap = {
   list: 'commonlyList',
   mode: 'menuMode'
 }
-export function workspaceCommonUse (type, data) {
+export function workspaceCommonUse(type, data) {
   const actionMode = actionModeMap[type]
   if (!actionMode) {
     return console.warn('未知类型type')
@@ -27,7 +27,7 @@ export function workspaceCommonUse (type, data) {
 }
 
 // 获取工作桌面菜单
-export function getWorkspaceMenu () {
+export function getWorkspaceMenu() {
   return request({
     baseURL: '/userCenter',
     url: '/workDesktop/menuInfo',
@@ -36,7 +36,7 @@ export function getWorkspaceMenu () {
 }
 
 // 商机管理 - 我的客户
-export function customerQuery (data) {
+export function customerQuery(data) {
   return request({
     baseURL: '/entnicheNew',
     url: '/customer/query',
@@ -46,7 +46,7 @@ export function customerQuery (data) {
 }
 
 // 商机管理 - 客户关注列表
-export function entNewFollowClientList (params) {
+export function entNewFollowClientList(params) {
   return request({
     baseURL: '/entnicheNew',
     url: '/customer/list',
@@ -56,7 +56,7 @@ export function entNewFollowClientList (params) {
 }
 
 // 商机管理 - 过程数据看板 - 数据概览 - 个人数据概览
-export function getEmployeeDataOverview (data) {
+export function getEmployeeDataOverview(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/entnicheNew',
@@ -66,7 +66,7 @@ export function getEmployeeDataOverview (data) {
   })
 }
 // 商机管理 - 过程数据看板 - 数据概览 - 部门数据概览
-export function getDepDataOverview (data) {
+export function getDepDataOverview(data) {
   data = qs.stringify(data)
   return request({
     baseURL: '/entnicheNew',
@@ -77,7 +77,7 @@ export function getDepDataOverview (data) {
 }
 
 // 商机管理 - 查询用户关键词列表
-export function getEntNicheSubKeyList () {
+export function getEntNicheSubKeyList() {
   return request({
     baseURL: '/entnicheNew',
     url: '/subscribe/key/get',
@@ -86,7 +86,7 @@ export function getEntNicheSubKeyList () {
 }
 
 // 消息中心 - 消息列表查询
-export function getMessageCenterList (data) {
+export function getMessageCenterList(data) {
   return request({
     baseURL: '/jyapi/messageCenter',
     url: '/MessageList',
@@ -96,7 +96,7 @@ export function getMessageCenterList (data) {
 }
 
 // 获工作台介绍
-export function getWhatIsWorkspace () {
+export function getWhatIsWorkspace() {
   return request({
     baseURL: '/front',
     url: '/bootstrap/specification',

Fișier diff suprimat deoarece este prea mare
+ 0 - 0
apps/bigmember_pc/src/assets/js/china-n.json


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
apps/bigmember_pc/src/assets/js/china.json


+ 5581 - 6078
apps/bigmember_pc/src/assets/js/china_area.js

@@ -4,6286 +4,5789 @@
  * @edit 区县数据替换为从剑鱼数据导出的最新区县数据,替换方法为循环当前json数据与数据库导出的json数据对比,城市名成相同 则替换对应区县
  */
 /* eslint-disable */
-const chinaMapJSON =[
+const chinaMapJSON = [
   {
-    "ProID": 1,
-    "name": "北京市",
-    "ProSort": 1,
-    "ProRemark": "直辖市",
-    "city": [
-      {
-        "CityID": 1,
-        "name": "北京市",
-        "ProID": 1,
-        "CitySort": 1,
-        "area": [
-          "东城区",
-          "西城区",
-          "朝阳区",
-          "丰台区",
-          "石景山区",
-          "海淀区",
-          "门头沟区",
-          "房山区",
-          "通州区",
-          "顺义区",
-          "昌平区",
-          "大兴区",
-          "怀柔区",
-          "平谷区",
-          "密云区",
-          "延庆区"
+    ProID: 1,
+    name: '北京市',
+    ProSort: 1,
+    ProRemark: '直辖市',
+    city: [
+      {
+        CityID: 1,
+        name: '北京市',
+        ProID: 1,
+        CitySort: 1,
+        area: [
+          '东城区',
+          '西城区',
+          '朝阳区',
+          '丰台区',
+          '石景山区',
+          '海淀区',
+          '门头沟区',
+          '房山区',
+          '通州区',
+          '顺义区',
+          '昌平区',
+          '大兴区',
+          '怀柔区',
+          '平谷区',
+          '密云区',
+          '延庆区'
         ]
       }
     ]
   },
   {
-    "ProID": 2,
-    "name": "天津市",
-    "ProSort": 2,
-    "ProRemark": "直辖市",
-    "city": [
-      {
-        "CityID": 2,
-        "name": "天津市",
-        "ProID": 2,
-        "CitySort": 2,
-        "area": [
-          "和平区",
-          "河东区",
-          "河西区",
-          "南开区",
-          "河北区",
-          "红桥区",
-          "东丽区",
-          "西青区",
-          "津南区",
-          "北辰区",
-          "武清区",
-          "宝坻区",
-          "滨海新区",
-          "宁河区",
-          "静海区",
-          "蓟州区"
+    ProID: 2,
+    name: '天津市',
+    ProSort: 2,
+    ProRemark: '直辖市',
+    city: [
+      {
+        CityID: 2,
+        name: '天津市',
+        ProID: 2,
+        CitySort: 2,
+        area: [
+          '和平区',
+          '河东区',
+          '河西区',
+          '南开区',
+          '河北区',
+          '红桥区',
+          '东丽区',
+          '西青区',
+          '津南区',
+          '北辰区',
+          '武清区',
+          '宝坻区',
+          '滨海新区',
+          '宁河区',
+          '静海区',
+          '蓟州区'
         ]
       }
     ]
   },
   {
-    "ProID": 3,
-    "name": "河北省",
-    "ProSort": 5,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 5,
-        "name": "邯郸市",
-        "ProID": 3,
-        "CitySort": 5,
-        "area": [
-          "邯山区",
-          "丛台区",
-          "复兴区",
-          "峰峰矿区",
-          "肥乡区",
-          "永年区",
-          "临漳县",
-          "成安县",
-          "大名县",
-          "涉县",
-          "磁县",
-          "邱县",
-          "鸡泽县",
-          "广平县",
-          "馆陶县",
-          "魏县",
-          "曲周县",
-          "邯郸经济技术开发区",
-          "邯郸冀南新区",
-          "武安市"
-        ]
-      },
-      {
-        "CityID": 6,
-        "name": "石家庄市",
-        "ProID": 3,
-        "CitySort": 6,
-        "area": [
-          "长安区",
-          "桥西区",
-          "新华区",
-          "井陉矿区",
-          "裕华区",
-          "藁城区",
-          "鹿泉区",
-          "栾城区",
-          "井陉县",
-          "正定县",
-          "行唐县",
-          "灵寿县",
-          "高邑县",
-          "深泽县",
-          "赞皇县",
-          "无极县",
-          "平山县",
-          "元氏县",
-          "赵县",
-          "石家庄高新技术产业开发区",
-          "石家庄循环化工园区",
-          "辛集市",
-          "晋州市",
-          "新乐市"
-        ]
-      },
-      {
-        "CityID": 666,
-        "name": "秦皇岛市",
-        "ProID": 3,
-        "CitySort": 666,
-        "area": [
-          "海港区",
-          "山海关区",
-          "北戴河区",
-          "抚宁区",
-          "青龙满族自治县",
-          "昌黎县",
-          "卢龙县",
-          "秦皇岛市经济技术开发区",
-          "北戴河新区"
-        ]
-      },
-      {
-        "CityID": 7,
-        "name": "保定市",
-        "ProID": 3,
-        "CitySort": 7,
-        "area": [
-          "竞秀区",
-          "莲池区",
-          "满城区",
-          "清苑区",
-          "徐水区",
-          "涞水县",
-          "阜平县",
-          "定兴县",
-          "唐县",
-          "高阳县",
-          "容城县",
-          "涞源县",
-          "望都县",
-          "安新县",
-          "易县",
-          "曲阳县",
-          "蠡县",
-          "顺平县",
-          "博野县",
-          "雄县",
-          "保定高新技术产业开发区",
-          "保定白沟新城",
-          "涿州市",
-          "定州市",
-          "安国市",
-          "高碑店市"
-        ]
-      },
-      {
-        "CityID": 8,
-        "name": "张家口市",
-        "ProID": 3,
-        "CitySort": 8,
-        "area": [
-          "桥东区",
-          "桥西区",
-          "宣化区",
-          "下花园区",
-          "万全区",
-          "崇礼区",
-          "张北县",
-          "康保县",
-          "沽源县",
-          "尚义县",
-          "蔚县",
-          "阳原县",
-          "怀安县",
-          "怀来县",
-          "涿鹿县",
-          "赤城县",
-          "张家口经济开发区",
-          "张家口市察北管理区",
-          "张家口市塞北管理区"
-        ]
-      },
-      {
-        "CityID": 9,
-        "name": "承德市",
-        "ProID": 3,
-        "CitySort": 9,
-        "area": [
-          "双桥区",
-          "双滦区",
-          "鹰手营子矿区",
-          "承德县",
-          "兴隆县",
-          "滦平县",
-          "隆化县",
-          "丰宁满族自治县",
-          "宽城满族自治县",
-          "围场满族蒙古族自治县",
-          "承德高新技术产业开发区",
-          "平泉市"
-        ]
-      },
-      {
-        "CityID": 10,
-        "name": "唐山市",
-        "ProID": 3,
-        "CitySort": 10,
-        "area": [
-          "路南区",
-          "路北区",
-          "古冶区",
-          "开平区",
-          "丰南区",
-          "丰润区",
-          "曹妃甸区",
-          "滦南县",
-          "乐亭县",
-          "迁西县",
-          "玉田县",
-          "河北唐山芦台经济开发区",
-          "唐山市汉沽管理区",
-          "唐山高新技术产业开发区",
-          "河北唐山海港经济开发区",
-          "遵化市",
-          "迁安市",
-          "滦州市"
-        ]
-      },
-      {
-        "CityID": 11,
-        "name": "廊坊市",
-        "ProID": 3,
-        "CitySort": 11,
-        "area": [
-          "安次区",
-          "广阳区",
-          "固安县",
-          "永清县",
-          "香河县",
-          "大城县",
-          "文安县",
-          "大厂回族自治县",
-          "廊坊经济技术开发区",
-          "霸州市",
-          "三河市"
-        ]
-      },
-      {
-        "CityID": 12,
-        "name": "沧州市",
-        "ProID": 3,
-        "CitySort": 12,
-        "area": [
-          "新华区",
-          "运河区",
-          "沧县",
-          "青县",
-          "东光县",
-          "海兴县",
-          "盐山县",
-          "肃宁县",
-          "南皮县",
-          "吴桥县",
-          "献县",
-          "孟村回族自治县",
-          "河北沧州经济开发区",
-          "沧州高新技术产业开发区",
-          "沧州渤海新区",
-          "泊头市",
-          "任丘市",
-          "黄骅市",
-          "河间市"
-        ]
-      },
-      {
-        "CityID": 13,
-        "name": "衡水市",
-        "ProID": 3,
-        "CitySort": 13,
-        "area": [
-          "桃城区",
-          "冀州区",
-          "枣强县",
-          "武邑县",
-          "武强县",
-          "饶阳县",
-          "安平县",
-          "故城县",
-          "景县",
-          "阜城县",
-          "河北衡水高新技术产业开发区",
-          "衡水滨湖新区",
-          "深州市"
-        ]
-      },
-      {
-        "CityID": 14,
-        "name": "邢台市",
-        "ProID": 3,
-        "CitySort": 14,
-        "area": [
-          "襄都区",
-          "信都区",
-          "任泽区",
-          "南和区",
-          "临城县",
-          "内丘县",
-          "柏乡县",
-          "隆尧县",
-          "宁晋县",
-          "巨鹿县",
-          "新河县",
-          "广宗县",
-          "平乡县",
-          "威县",
-          "清河县",
-          "临西县",
-          "河北邢台经济开发区",
-          "南宫市",
-          "沙河市"
+    ProID: 3,
+    name: '河北省',
+    ProSort: 5,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 5,
+        name: '邯郸市',
+        ProID: 3,
+        CitySort: 5,
+        area: [
+          '邯山区',
+          '丛台区',
+          '复兴区',
+          '峰峰矿区',
+          '肥乡区',
+          '永年区',
+          '临漳县',
+          '成安县',
+          '大名县',
+          '涉县',
+          '磁县',
+          '邱县',
+          '鸡泽县',
+          '广平县',
+          '馆陶县',
+          '魏县',
+          '曲周县',
+          '邯郸经济技术开发区',
+          '邯郸冀南新区',
+          '武安市'
+        ]
+      },
+      {
+        CityID: 6,
+        name: '石家庄市',
+        ProID: 3,
+        CitySort: 6,
+        area: [
+          '长安区',
+          '桥西区',
+          '新华区',
+          '井陉矿区',
+          '裕华区',
+          '藁城区',
+          '鹿泉区',
+          '栾城区',
+          '井陉县',
+          '正定县',
+          '行唐县',
+          '灵寿县',
+          '高邑县',
+          '深泽县',
+          '赞皇县',
+          '无极县',
+          '平山县',
+          '元氏县',
+          '赵县',
+          '石家庄高新技术产业开发区',
+          '石家庄循环化工园区',
+          '辛集市',
+          '晋州市',
+          '新乐市'
+        ]
+      },
+      {
+        CityID: 666,
+        name: '秦皇岛市',
+        ProID: 3,
+        CitySort: 666,
+        area: [
+          '海港区',
+          '山海关区',
+          '北戴河区',
+          '抚宁区',
+          '青龙满族自治县',
+          '昌黎县',
+          '卢龙县',
+          '秦皇岛市经济技术开发区',
+          '北戴河新区'
+        ]
+      },
+      {
+        CityID: 7,
+        name: '保定市',
+        ProID: 3,
+        CitySort: 7,
+        area: [
+          '竞秀区',
+          '莲池区',
+          '满城区',
+          '清苑区',
+          '徐水区',
+          '涞水县',
+          '阜平县',
+          '定兴县',
+          '唐县',
+          '高阳县',
+          '容城县',
+          '涞源县',
+          '望都县',
+          '安新县',
+          '易县',
+          '曲阳县',
+          '蠡县',
+          '顺平县',
+          '博野县',
+          '雄县',
+          '保定高新技术产业开发区',
+          '保定白沟新城',
+          '涿州市',
+          '定州市',
+          '安国市',
+          '高碑店市'
+        ]
+      },
+      {
+        CityID: 8,
+        name: '张家口市',
+        ProID: 3,
+        CitySort: 8,
+        area: [
+          '桥东区',
+          '桥西区',
+          '宣化区',
+          '下花园区',
+          '万全区',
+          '崇礼区',
+          '张北县',
+          '康保县',
+          '沽源县',
+          '尚义县',
+          '蔚县',
+          '阳原县',
+          '怀安县',
+          '怀来县',
+          '涿鹿县',
+          '赤城县',
+          '张家口经济开发区',
+          '张家口市察北管理区',
+          '张家口市塞北管理区'
+        ]
+      },
+      {
+        CityID: 9,
+        name: '承德市',
+        ProID: 3,
+        CitySort: 9,
+        area: [
+          '双桥区',
+          '双滦区',
+          '鹰手营子矿区',
+          '承德县',
+          '兴隆县',
+          '滦平县',
+          '隆化县',
+          '丰宁满族自治县',
+          '宽城满族自治县',
+          '围场满族蒙古族自治县',
+          '承德高新技术产业开发区',
+          '平泉市'
+        ]
+      },
+      {
+        CityID: 10,
+        name: '唐山市',
+        ProID: 3,
+        CitySort: 10,
+        area: [
+          '路南区',
+          '路北区',
+          '古冶区',
+          '开平区',
+          '丰南区',
+          '丰润区',
+          '曹妃甸区',
+          '滦南县',
+          '乐亭县',
+          '迁西县',
+          '玉田县',
+          '河北唐山芦台经济开发区',
+          '唐山市汉沽管理区',
+          '唐山高新技术产业开发区',
+          '河北唐山海港经济开发区',
+          '遵化市',
+          '迁安市',
+          '滦州市'
+        ]
+      },
+      {
+        CityID: 11,
+        name: '廊坊市',
+        ProID: 3,
+        CitySort: 11,
+        area: [
+          '安次区',
+          '广阳区',
+          '固安县',
+          '永清县',
+          '香河县',
+          '大城县',
+          '文安县',
+          '大厂回族自治县',
+          '廊坊经济技术开发区',
+          '霸州市',
+          '三河市'
+        ]
+      },
+      {
+        CityID: 12,
+        name: '沧州市',
+        ProID: 3,
+        CitySort: 12,
+        area: [
+          '新华区',
+          '运河区',
+          '沧县',
+          '青县',
+          '东光县',
+          '海兴县',
+          '盐山县',
+          '肃宁县',
+          '南皮县',
+          '吴桥县',
+          '献县',
+          '孟村回族自治县',
+          '河北沧州经济开发区',
+          '沧州高新技术产业开发区',
+          '沧州渤海新区',
+          '泊头市',
+          '任丘市',
+          '黄骅市',
+          '河间市'
+        ]
+      },
+      {
+        CityID: 13,
+        name: '衡水市',
+        ProID: 3,
+        CitySort: 13,
+        area: [
+          '桃城区',
+          '冀州区',
+          '枣强县',
+          '武邑县',
+          '武强县',
+          '饶阳县',
+          '安平县',
+          '故城县',
+          '景县',
+          '阜城县',
+          '河北衡水高新技术产业开发区',
+          '衡水滨湖新区',
+          '深州市'
+        ]
+      },
+      {
+        CityID: 14,
+        name: '邢台市',
+        ProID: 3,
+        CitySort: 14,
+        area: [
+          '襄都区',
+          '信都区',
+          '任泽区',
+          '南和区',
+          '临城县',
+          '内丘县',
+          '柏乡县',
+          '隆尧县',
+          '宁晋县',
+          '巨鹿县',
+          '新河县',
+          '广宗县',
+          '平乡县',
+          '威县',
+          '清河县',
+          '临西县',
+          '河北邢台经济开发区',
+          '南宫市',
+          '沙河市'
         ]
       }
     ]
   },
   {
-    "ProID": 4,
-    "name": "山西省",
-    "ProSort": 6,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 16,
-        "name": "朔州市",
-        "ProID": 4,
-        "CitySort": 16,
-        "area": [
-          "朔城区",
-          "平鲁区",
-          "山阴县",
-          "应县",
-          "右玉县",
-          "山西朔州经济开发区",
-          "怀仁市"
-        ]
-      },
-      {
-        "CityID": 17,
-        "name": "忻州市",
-        "ProID": 4,
-        "CitySort": 17,
-        "area": [
-          "忻府区",
-          "定襄县",
-          "五台县",
-          "代县",
-          "繁峙县",
-          "宁武县",
-          "静乐县",
-          "神池县",
-          "五寨县",
-          "岢岚县",
-          "河曲县",
-          "保德县",
-          "偏关县",
-          "五台山风景名胜区",
-          "原平市"
-        ]
-      },
-      {
-        "CityID": 18,
-        "name": "太原市",
-        "ProID": 4,
-        "CitySort": 18,
-        "area": [
-          "小店区",
-          "迎泽区",
-          "杏花岭区",
-          "尖草坪区",
-          "万柏林区",
-          "晋源区",
-          "清徐县",
-          "阳曲县",
-          "娄烦县",
-          "山西转型综合改革示范区",
-          "古交市"
-        ]
-      },
-      {
-        "CityID": 19,
-        "name": "大同市",
-        "ProID": 4,
-        "CitySort": 19,
-        "area": [
-          "新荣区",
-          "平城区",
-          "云冈区",
-          "云州区",
-          "阳高县",
-          "天镇县",
-          "广灵县",
-          "灵丘县",
-          "浑源县",
-          "左云县",
-          "山西大同经济开发区"
-        ]
-      },
-      {
-        "CityID": 20,
-        "name": "阳泉市",
-        "ProID": 4,
-        "CitySort": 20,
-        "area": [
-          "城区",
-          "矿区",
-          "郊区",
-          "平定县",
-          "盂县"
-        ]
-      },
-      {
-        "CityID": 21,
-        "name": "晋中市",
-        "ProID": 4,
-        "CitySort": 21,
-        "area": [
-          "榆次区",
-          "太谷区",
-          "榆社县",
-          "左权县",
-          "和顺县",
-          "昔阳县",
-          "寿阳县",
-          "祁县",
-          "平遥县",
-          "灵石县",
-          "介休市"
-        ]
-      },
-      {
-        "CityID": 22,
-        "name": "长治市",
-        "ProID": 4,
-        "CitySort": 22,
-        "area": [
-          "潞州区",
-          "上党区",
-          "屯留区",
-          "潞城区",
-          "襄垣县",
-          "平顺县",
-          "黎城县",
-          "壶关县",
-          "长子县",
-          "武乡县",
-          "沁县",
-          "沁源县",
-          "山西长治高新技术产业园区"
-        ]
-      },
-      {
-        "CityID": 23,
-        "name": "晋城市",
-        "ProID": 4,
-        "CitySort": 23,
-        "area": [
-          "城区",
-          "沁水县",
-          "阳城县",
-          "陵川县",
-          "泽州县",
-          "高平市"
-        ]
-      },
-      {
-        "CityID": 24,
-        "name": "临汾市",
-        "ProID": 4,
-        "CitySort": 24,
-        "area": [
-          "尧都区",
-          "曲沃县",
-          "翼城县",
-          "襄汾县",
-          "洪洞县",
-          "古县",
-          "安泽县",
-          "浮山县",
-          "吉县",
-          "乡宁县",
-          "大宁县",
-          "隰县",
-          "永和县",
-          "蒲县",
-          "汾西县",
-          "侯马市",
-          "霍州市"
-        ]
-      },
-      {
-        "CityID": 25,
-        "name": "吕梁市",
-        "ProID": 4,
-        "CitySort": 25,
-        "area": [
-          "离石区",
-          "文水县",
-          "交城县",
-          "兴县",
-          "临县",
-          "柳林县",
-          "石楼县",
-          "岚县",
-          "方山县",
-          "中阳县",
-          "交口县",
-          "孝义市",
-          "汾阳市"
-        ]
-      },
-      {
-        "CityID": 26,
-        "name": "运城市",
-        "ProID": 4,
-        "CitySort": 26,
-        "area": [
-          "盐湖区",
-          "临猗县",
-          "万荣县",
-          "闻喜县",
-          "稷山县",
-          "新绛县",
-          "绛县",
-          "垣曲县",
-          "夏县",
-          "平陆县",
-          "芮城县",
-          "永济市",
-          "河津市"
+    ProID: 4,
+    name: '山西省',
+    ProSort: 6,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 16,
+        name: '朔州市',
+        ProID: 4,
+        CitySort: 16,
+        area: [
+          '朔城区',
+          '平鲁区',
+          '山阴县',
+          '应县',
+          '右玉县',
+          '山西朔州经济开发区',
+          '怀仁市'
+        ]
+      },
+      {
+        CityID: 17,
+        name: '忻州市',
+        ProID: 4,
+        CitySort: 17,
+        area: [
+          '忻府区',
+          '定襄县',
+          '五台县',
+          '代县',
+          '繁峙县',
+          '宁武县',
+          '静乐县',
+          '神池县',
+          '五寨县',
+          '岢岚县',
+          '河曲县',
+          '保德县',
+          '偏关县',
+          '五台山风景名胜区',
+          '原平市'
+        ]
+      },
+      {
+        CityID: 18,
+        name: '太原市',
+        ProID: 4,
+        CitySort: 18,
+        area: [
+          '小店区',
+          '迎泽区',
+          '杏花岭区',
+          '尖草坪区',
+          '万柏林区',
+          '晋源区',
+          '清徐县',
+          '阳曲县',
+          '娄烦县',
+          '山西转型综合改革示范区',
+          '古交市'
+        ]
+      },
+      {
+        CityID: 19,
+        name: '大同市',
+        ProID: 4,
+        CitySort: 19,
+        area: [
+          '新荣区',
+          '平城区',
+          '云冈区',
+          '云州区',
+          '阳高县',
+          '天镇县',
+          '广灵县',
+          '灵丘县',
+          '浑源县',
+          '左云县',
+          '山西大同经济开发区'
+        ]
+      },
+      {
+        CityID: 20,
+        name: '阳泉市',
+        ProID: 4,
+        CitySort: 20,
+        area: ['城区', '矿区', '郊区', '平定县', '盂县']
+      },
+      {
+        CityID: 21,
+        name: '晋中市',
+        ProID: 4,
+        CitySort: 21,
+        area: [
+          '榆次区',
+          '太谷区',
+          '榆社县',
+          '左权县',
+          '和顺县',
+          '昔阳县',
+          '寿阳县',
+          '祁县',
+          '平遥县',
+          '灵石县',
+          '介休市'
+        ]
+      },
+      {
+        CityID: 22,
+        name: '长治市',
+        ProID: 4,
+        CitySort: 22,
+        area: [
+          '潞州区',
+          '上党区',
+          '屯留区',
+          '潞城区',
+          '襄垣县',
+          '平顺县',
+          '黎城县',
+          '壶关县',
+          '长子县',
+          '武乡县',
+          '沁县',
+          '沁源县',
+          '山西长治高新技术产业园区'
+        ]
+      },
+      {
+        CityID: 23,
+        name: '晋城市',
+        ProID: 4,
+        CitySort: 23,
+        area: ['城区', '沁水县', '阳城县', '陵川县', '泽州县', '高平市']
+      },
+      {
+        CityID: 24,
+        name: '临汾市',
+        ProID: 4,
+        CitySort: 24,
+        area: [
+          '尧都区',
+          '曲沃县',
+          '翼城县',
+          '襄汾县',
+          '洪洞县',
+          '古县',
+          '安泽县',
+          '浮山县',
+          '吉县',
+          '乡宁县',
+          '大宁县',
+          '隰县',
+          '永和县',
+          '蒲县',
+          '汾西县',
+          '侯马市',
+          '霍州市'
+        ]
+      },
+      {
+        CityID: 25,
+        name: '吕梁市',
+        ProID: 4,
+        CitySort: 25,
+        area: [
+          '离石区',
+          '文水县',
+          '交城县',
+          '兴县',
+          '临县',
+          '柳林县',
+          '石楼县',
+          '岚县',
+          '方山县',
+          '中阳县',
+          '交口县',
+          '孝义市',
+          '汾阳市'
+        ]
+      },
+      {
+        CityID: 26,
+        name: '运城市',
+        ProID: 4,
+        CitySort: 26,
+        area: [
+          '盐湖区',
+          '临猗县',
+          '万荣县',
+          '闻喜县',
+          '稷山县',
+          '新绛县',
+          '绛县',
+          '垣曲县',
+          '夏县',
+          '平陆县',
+          '芮城县',
+          '永济市',
+          '河津市'
         ]
       }
     ]
   },
   {
-    "ProID": 5,
-    "name": "内蒙古自治区",
-    "ProSort": 32,
-    "ProRemark": "自治区",
-    "city": [
-      {
-        "CityID": 351,
-        "name": "呼伦贝尔市",
-        "ProID": 5,
-        "CitySort": 351,
-        "area": [
-          "海拉尔区",
-          "扎赉诺尔区",
-          "阿荣旗",
-          "莫力达瓦达斡尔族自治旗",
-          "鄂伦春自治旗",
-          "鄂温克族自治旗",
-          "陈巴尔虎旗",
-          "新巴尔虎左旗",
-          "新巴尔虎右旗",
-          "满洲里市",
-          "牙克石市",
-          "扎兰屯市",
-          "额尔古纳市",
-          "根河市"
-        ]
-      },
-      {
-        "CityID": 352,
-        "name": "呼和浩特市",
-        "ProID": 5,
-        "CitySort": 352,
-        "area": [
-          "新城区",
-          "回民区",
-          "玉泉区",
-          "赛罕区",
-          "土默特左旗",
-          "托克托县",
-          "和林格尔县",
-          "清水河县",
-          "武川县",
-          "呼和浩特经济技术开发区"
-        ]
-      },
-      {
-        "CityID": 353,
-        "name": "包头市",
-        "ProID": 5,
-        "CitySort": 353,
-        "area": [
-          "东河区",
-          "昆都仑区",
-          "青山区",
-          "石拐区",
-          "白云鄂博矿区",
-          "九原区",
-          "土默特右旗",
-          "固阳县",
-          "达尔罕茂明安联合旗",
-          "包头稀土高新技术产业开发区"
-        ]
-      },
-      {
-        "CityID": 354,
-        "name": "乌海市",
-        "ProID": 5,
-        "CitySort": 354,
-        "area": [
-          "海勃湾区",
-          "海南区",
-          "乌达区"
-        ]
-      },
-      {
-        "CityID": 355,
-        "name": "乌兰察布市",
-        "ProID": 5,
-        "CitySort": 355,
-        "area": [
-          "集宁区",
-          "卓资县",
-          "化德县",
-          "商都县",
-          "兴和县",
-          "凉城县",
-          "察哈尔右翼前旗",
-          "察哈尔右翼中旗",
-          "察哈尔右翼后旗",
-          "四子王旗",
-          "丰镇市"
-        ]
-      },
-      {
-        "CityID": 356,
-        "name": "通辽市",
-        "ProID": 5,
-        "CitySort": 356,
-        "area": [
-          "科尔沁区",
-          "科尔沁左翼中旗",
-          "科尔沁左翼后旗",
-          "开鲁县",
-          "库伦旗",
-          "奈曼旗",
-          "扎鲁特旗",
-          "通辽经济技术开发区",
-          "霍林郭勒市"
-        ]
-      },
-      {
-        "CityID": 357,
-        "name": "赤峰市",
-        "ProID": 5,
-        "CitySort": 357,
-        "area": [
-          "红山区",
-          "元宝山区",
-          "松山区",
-          "阿鲁科尔沁旗",
-          "巴林左旗",
-          "巴林右旗",
-          "林西县",
-          "克什克腾旗",
-          "翁牛特旗",
-          "喀喇沁旗",
-          "宁城县",
-          "敖汉旗"
-        ]
-      },
-      {
-        "CityID": 358,
-        "name": "鄂尔多斯市",
-        "ProID": 5,
-        "CitySort": 358,
-        "area": [
-          "东胜区",
-          "康巴什区",
-          "达拉特旗",
-          "准格尔旗",
-          "鄂托克前旗",
-          "鄂托克旗",
-          "杭锦旗",
-          "乌审旗",
-          "伊金霍洛旗"
-        ]
-      },
-      {
-        "CityID": 359,
-        "name": "巴彦淖尔市",
-        "ProID": 5,
-        "CitySort": 359,
-        "area": [
-          "临河区",
-          "五原县",
-          "磴口县",
-          "乌拉特前旗",
-          "乌拉特中旗",
-          "乌拉特后旗",
-          "杭锦后旗"
-        ]
-      },
-      {
-        "CityID": 360,
-        "name": "锡林郭勒盟",
-        "ProID": 5,
-        "CitySort": 360,
-        "area": [
-          "二连浩特市",
-          "锡林浩特市",
-          "阿巴嘎旗",
-          "苏尼特左旗",
-          "苏尼特右旗",
-          "东乌珠穆沁旗",
-          "西乌珠穆沁旗",
-          "太仆寺旗",
-          "镶黄旗",
-          "正镶白旗",
-          "正蓝旗",
-          "多伦县",
-          "乌拉盖管委会"
-        ]
-      },
-      {
-        "CityID": 361,
-        "name": "兴安盟",
-        "ProID": 5,
-        "CitySort": 361,
-        "area": [
-          "乌兰浩特市",
-          "阿尔山市",
-          "科尔沁右翼前旗",
-          "科尔沁右翼中旗",
-          "扎赉特旗",
-          "突泉县"
-        ]
-      },
-      {
-        "CityID": 362,
-        "name": "阿拉善盟",
-        "ProID": 5,
-        "CitySort": 362,
-        "area": [
-          "阿拉善左旗",
-          "阿拉善右旗",
-          "额济纳旗",
-          "内蒙古阿拉善经济开发区"
-        ]
+    ProID: 5,
+    name: '内蒙古自治区',
+    ProSort: 32,
+    ProRemark: '自治区',
+    city: [
+      {
+        CityID: 351,
+        name: '呼伦贝尔市',
+        ProID: 5,
+        CitySort: 351,
+        area: [
+          '海拉尔区',
+          '扎赉诺尔区',
+          '阿荣旗',
+          '莫力达瓦达斡尔族自治旗',
+          '鄂伦春自治旗',
+          '鄂温克族自治旗',
+          '陈巴尔虎旗',
+          '新巴尔虎左旗',
+          '新巴尔虎右旗',
+          '满洲里市',
+          '牙克石市',
+          '扎兰屯市',
+          '额尔古纳市',
+          '根河市'
+        ]
+      },
+      {
+        CityID: 352,
+        name: '呼和浩特市',
+        ProID: 5,
+        CitySort: 352,
+        area: [
+          '新城区',
+          '回民区',
+          '玉泉区',
+          '赛罕区',
+          '土默特左旗',
+          '托克托县',
+          '和林格尔县',
+          '清水河县',
+          '武川县',
+          '呼和浩特经济技术开发区'
+        ]
+      },
+      {
+        CityID: 353,
+        name: '包头市',
+        ProID: 5,
+        CitySort: 353,
+        area: [
+          '东河区',
+          '昆都仑区',
+          '青山区',
+          '石拐区',
+          '白云鄂博矿区',
+          '九原区',
+          '土默特右旗',
+          '固阳县',
+          '达尔罕茂明安联合旗',
+          '包头稀土高新技术产业开发区'
+        ]
+      },
+      {
+        CityID: 354,
+        name: '乌海市',
+        ProID: 5,
+        CitySort: 354,
+        area: ['海勃湾区', '海南区', '乌达区']
+      },
+      {
+        CityID: 355,
+        name: '乌兰察布市',
+        ProID: 5,
+        CitySort: 355,
+        area: [
+          '集宁区',
+          '卓资县',
+          '化德县',
+          '商都县',
+          '兴和县',
+          '凉城县',
+          '察哈尔右翼前旗',
+          '察哈尔右翼中旗',
+          '察哈尔右翼后旗',
+          '四子王旗',
+          '丰镇市'
+        ]
+      },
+      {
+        CityID: 356,
+        name: '通辽市',
+        ProID: 5,
+        CitySort: 356,
+        area: [
+          '科尔沁区',
+          '科尔沁左翼中旗',
+          '科尔沁左翼后旗',
+          '开鲁县',
+          '库伦旗',
+          '奈曼旗',
+          '扎鲁特旗',
+          '通辽经济技术开发区',
+          '霍林郭勒市'
+        ]
+      },
+      {
+        CityID: 357,
+        name: '赤峰市',
+        ProID: 5,
+        CitySort: 357,
+        area: [
+          '红山区',
+          '元宝山区',
+          '松山区',
+          '阿鲁科尔沁旗',
+          '巴林左旗',
+          '巴林右旗',
+          '林西县',
+          '克什克腾旗',
+          '翁牛特旗',
+          '喀喇沁旗',
+          '宁城县',
+          '敖汉旗'
+        ]
+      },
+      {
+        CityID: 358,
+        name: '鄂尔多斯市',
+        ProID: 5,
+        CitySort: 358,
+        area: [
+          '东胜区',
+          '康巴什区',
+          '达拉特旗',
+          '准格尔旗',
+          '鄂托克前旗',
+          '鄂托克旗',
+          '杭锦旗',
+          '乌审旗',
+          '伊金霍洛旗'
+        ]
+      },
+      {
+        CityID: 359,
+        name: '巴彦淖尔市',
+        ProID: 5,
+        CitySort: 359,
+        area: [
+          '临河区',
+          '五原县',
+          '磴口县',
+          '乌拉特前旗',
+          '乌拉特中旗',
+          '乌拉特后旗',
+          '杭锦后旗'
+        ]
+      },
+      {
+        CityID: 360,
+        name: '锡林郭勒盟',
+        ProID: 5,
+        CitySort: 360,
+        area: [
+          '二连浩特市',
+          '锡林浩特市',
+          '阿巴嘎旗',
+          '苏尼特左旗',
+          '苏尼特右旗',
+          '东乌珠穆沁旗',
+          '西乌珠穆沁旗',
+          '太仆寺旗',
+          '镶黄旗',
+          '正镶白旗',
+          '正蓝旗',
+          '多伦县',
+          '乌拉盖管委会'
+        ]
+      },
+      {
+        CityID: 361,
+        name: '兴安盟',
+        ProID: 5,
+        CitySort: 361,
+        area: [
+          '乌兰浩特市',
+          '阿尔山市',
+          '科尔沁右翼前旗',
+          '科尔沁右翼中旗',
+          '扎赉特旗',
+          '突泉县'
+        ]
+      },
+      {
+        CityID: 362,
+        name: '阿拉善盟',
+        ProID: 5,
+        CitySort: 362,
+        area: ['阿拉善左旗', '阿拉善右旗', '额济纳旗', '内蒙古阿拉善经济开发区']
       }
     ]
   },
   {
-    "ProID": 6,
-    "name": "辽宁省",
-    "ProSort": 8,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 27,
-        "name": "沈阳市",
-        "ProID": 6,
-        "CitySort": 27,
-        "area": [
-          "和平区",
-          "沈河区",
-          "大东区",
-          "皇姑区",
-          "铁西区",
-          "苏家屯区",
-          "浑南区",
-          "沈北新区",
-          "于洪区",
-          "辽中区",
-          "康平县",
-          "法库县",
-          "新民市"
-        ]
-      },
-      {
-        "CityID": 28,
-        "name": "铁岭市",
-        "ProID": 6,
-        "CitySort": 28,
-        "area": [
-          "银州区",
-          "清河区",
-          "铁岭县",
-          "西丰县",
-          "昌图县",
-          "调兵山市",
-          "开原市"
-        ]
-      },
-      {
-        "CityID": 29,
-        "name": "大连市",
-        "ProID": 6,
-        "CitySort": 29,
-        "area": [
-          "中山区",
-          "西岗区",
-          "沙河口区",
-          "甘井子区",
-          "旅顺口区",
-          "金州区",
-          "普兰店区",
-          "长海县",
-          "瓦房店市",
-          "庄河市"
-        ]
-      },
-      {
-        "CityID": 30,
-        "name": "鞍山市",
-        "ProID": 6,
-        "CitySort": 30,
-        "area": [
-          "铁东区",
-          "铁西区",
-          "立山区",
-          "千山区",
-          "台安县",
-          "岫岩满族自治县",
-          "海城市"
-        ]
-      },
-      {
-        "CityID": 31,
-        "name": "抚顺市",
-        "ProID": 6,
-        "CitySort": 31,
-        "area": [
-          "新抚区",
-          "东洲区",
-          "望花区",
-          "顺城区",
-          "抚顺县",
-          "新宾满族自治县",
-          "清原满族自治县"
-        ]
-      },
-      {
-        "CityID": 32,
-        "name": "本溪市",
-        "ProID": 6,
-        "CitySort": 32,
-        "area": [
-          "平山区",
-          "溪湖区",
-          "明山区",
-          "南芬区",
-          "本溪满族自治县",
-          "桓仁满族自治县"
-        ]
-      },
-      {
-        "CityID": 33,
-        "name": "丹东市",
-        "ProID": 6,
-        "CitySort": 33,
-        "area": [
-          "元宝区",
-          "振兴区",
-          "振安区",
-          "宽甸满族自治县",
-          "东港市",
-          "凤城市"
-        ]
-      },
-      {
-        "CityID": 34,
-        "name": "锦州市",
-        "ProID": 6,
-        "CitySort": 34,
-        "area": [
-          "古塔区",
-          "凌河区",
-          "太和区",
-          "黑山县",
-          "义县",
-          "凌海市",
-          "北镇市"
-        ]
-      },
-      {
-        "CityID": 35,
-        "name": "营口市",
-        "ProID": 6,
-        "CitySort": 35,
-        "area": [
-          "站前区",
-          "西市区",
-          "鲅鱼圈区",
-          "老边区",
-          "盖州市",
-          "大石桥市"
-        ]
-      },
-      {
-        "CityID": 36,
-        "name": "阜新市",
-        "ProID": 6,
-        "CitySort": 36,
-        "area": [
-          "海州区",
-          "新邱区",
-          "太平区",
-          "清河门区",
-          "细河区",
-          "阜新蒙古族自治县",
-          "彰武县"
-        ]
-      },
-      {
-        "CityID": 37,
-        "name": "辽阳市",
-        "ProID": 6,
-        "CitySort": 37,
-        "area": [
-          "白塔区",
-          "文圣区",
-          "宏伟区",
-          "弓长岭区",
-          "太子河区",
-          "辽阳县",
-          "灯塔市"
-        ]
-      },
-      {
-        "CityID": 38,
-        "name": "朝阳市",
-        "ProID": 6,
-        "CitySort": 38,
-        "area": [
-          "双塔区",
-          "龙城区",
-          "朝阳县",
-          "建平县",
-          "喀喇沁左翼蒙古族自治县",
-          "北票市",
-          "凌源市"
-        ]
-      },
-      {
-        "CityID": 39,
-        "name": "盘锦市",
-        "ProID": 6,
-        "CitySort": 39,
-        "area": [
-          "双台子区",
-          "兴隆台区",
-          "大洼区",
-          "盘山县"
-        ]
-      },
-      {
-        "CityID": 40,
-        "name": "葫芦岛市",
-        "ProID": 6,
-        "CitySort": 40,
-        "area": [
-          "连山区",
-          "龙港区",
-          "南票区",
-          "绥中县",
-          "建昌县",
-          "兴城市"
-        ]
+    ProID: 6,
+    name: '辽宁省',
+    ProSort: 8,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 27,
+        name: '沈阳市',
+        ProID: 6,
+        CitySort: 27,
+        area: [
+          '和平区',
+          '沈河区',
+          '大东区',
+          '皇姑区',
+          '铁西区',
+          '苏家屯区',
+          '浑南区',
+          '沈北新区',
+          '于洪区',
+          '辽中区',
+          '康平县',
+          '法库县',
+          '新民市'
+        ]
+      },
+      {
+        CityID: 28,
+        name: '铁岭市',
+        ProID: 6,
+        CitySort: 28,
+        area: [
+          '银州区',
+          '清河区',
+          '铁岭县',
+          '西丰县',
+          '昌图县',
+          '调兵山市',
+          '开原市'
+        ]
+      },
+      {
+        CityID: 29,
+        name: '大连市',
+        ProID: 6,
+        CitySort: 29,
+        area: [
+          '中山区',
+          '西岗区',
+          '沙河口区',
+          '甘井子区',
+          '旅顺口区',
+          '金州区',
+          '普兰店区',
+          '长海县',
+          '瓦房店市',
+          '庄河市'
+        ]
+      },
+      {
+        CityID: 30,
+        name: '鞍山市',
+        ProID: 6,
+        CitySort: 30,
+        area: [
+          '铁东区',
+          '铁西区',
+          '立山区',
+          '千山区',
+          '台安县',
+          '岫岩满族自治县',
+          '海城市'
+        ]
+      },
+      {
+        CityID: 31,
+        name: '抚顺市',
+        ProID: 6,
+        CitySort: 31,
+        area: [
+          '新抚区',
+          '东洲区',
+          '望花区',
+          '顺城区',
+          '抚顺县',
+          '新宾满族自治县',
+          '清原满族自治县'
+        ]
+      },
+      {
+        CityID: 32,
+        name: '本溪市',
+        ProID: 6,
+        CitySort: 32,
+        area: [
+          '平山区',
+          '溪湖区',
+          '明山区',
+          '南芬区',
+          '本溪满族自治县',
+          '桓仁满族自治县'
+        ]
+      },
+      {
+        CityID: 33,
+        name: '丹东市',
+        ProID: 6,
+        CitySort: 33,
+        area: [
+          '元宝区',
+          '振兴区',
+          '振安区',
+          '宽甸满族自治县',
+          '东港市',
+          '凤城市'
+        ]
+      },
+      {
+        CityID: 34,
+        name: '锦州市',
+        ProID: 6,
+        CitySort: 34,
+        area: [
+          '古塔区',
+          '凌河区',
+          '太和区',
+          '黑山县',
+          '义县',
+          '凌海市',
+          '北镇市'
+        ]
+      },
+      {
+        CityID: 35,
+        name: '营口市',
+        ProID: 6,
+        CitySort: 35,
+        area: ['站前区', '西市区', '鲅鱼圈区', '老边区', '盖州市', '大石桥市']
+      },
+      {
+        CityID: 36,
+        name: '阜新市',
+        ProID: 6,
+        CitySort: 36,
+        area: [
+          '海州区',
+          '新邱区',
+          '太平区',
+          '清河门区',
+          '细河区',
+          '阜新蒙古族自治县',
+          '彰武县'
+        ]
+      },
+      {
+        CityID: 37,
+        name: '辽阳市',
+        ProID: 6,
+        CitySort: 37,
+        area: [
+          '白塔区',
+          '文圣区',
+          '宏伟区',
+          '弓长岭区',
+          '太子河区',
+          '辽阳县',
+          '灯塔市'
+        ]
+      },
+      {
+        CityID: 38,
+        name: '朝阳市',
+        ProID: 6,
+        CitySort: 38,
+        area: [
+          '双塔区',
+          '龙城区',
+          '朝阳县',
+          '建平县',
+          '喀喇沁左翼蒙古族自治县',
+          '北票市',
+          '凌源市'
+        ]
+      },
+      {
+        CityID: 39,
+        name: '盘锦市',
+        ProID: 6,
+        CitySort: 39,
+        area: ['双台子区', '兴隆台区', '大洼区', '盘山县']
+      },
+      {
+        CityID: 40,
+        name: '葫芦岛市',
+        ProID: 6,
+        CitySort: 40,
+        area: ['连山区', '龙港区', '南票区', '绥中县', '建昌县', '兴城市']
       }
     ]
   },
   {
-    "ProID": 7,
-    "name": "吉林省",
-    "ProSort": 9,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 41,
-        "name": "长春市",
-        "ProID": 7,
-        "CitySort": 41,
-        "area": [
-          "南关区",
-          "宽城区",
-          "朝阳区",
-          "二道区",
-          "绿园区",
-          "双阳区",
-          "九台区",
-          "农安县",
-          "长春经济技术开发区",
-          "长春净月高新技术产业开发区",
-          "长春高新技术产业开发区",
-          "长春汽车经济技术开发区",
-          "榆树市",
-          "德惠市",
-          "公主岭市"
-        ]
-      },
-      {
-        "CityID": 42,
-        "name": "吉林市",
-        "ProID": 7,
-        "CitySort": 42,
-        "area": [
-          "昌邑区",
-          "龙潭区",
-          "船营区",
-          "丰满区",
-          "永吉县",
-          "吉林经济开发区",
-          "吉林高新技术产业开发区",
-          "吉林中国新加坡食品区",
-          "蛟河市",
-          "桦甸市",
-          "舒兰市",
-          "磐石市"
-        ]
-      },
-      {
-        "CityID": 43,
-        "name": "延边朝鲜族自治州",
-        "ProID": 7,
-        "CitySort": 43,
-        "area": [
-          "延吉市",
-          "图们市",
-          "敦化市",
-          "珲春市",
-          "龙井市",
-          "和龙市",
-          "汪清县",
-          "安图县"
-        ]
-      },
-      {
-        "CityID": 44,
-        "name": "四平市",
-        "ProID": 7,
-        "CitySort": 44,
-        "area": [
-          "铁西区",
-          "铁东区",
-          "梨树县",
-          "伊通满族自治县",
-          "双辽市"
-        ]
-      },
-      {
-        "CityID": 45,
-        "name": "通化市",
-        "ProID": 7,
-        "CitySort": 45,
-        "area": [
-          "东昌区",
-          "二道江区",
-          "通化县",
-          "辉南县",
-          "柳河县",
-          "梅河口市",
-          "集安市"
-        ]
-      },
-      {
-        "CityID": 46,
-        "name": "白城市",
-        "ProID": 7,
-        "CitySort": 46,
-        "area": [
-          "洮北区",
-          "镇赉县",
-          "通榆县",
-          "吉林白城经济开发区",
-          "洮南市",
-          "大安市"
-        ]
-      },
-      {
-        "CityID": 47,
-        "name": "辽源市",
-        "ProID": 7,
-        "CitySort": 47,
-        "area": [
-          "龙山区",
-          "西安区",
-          "东丰县",
-          "东辽县"
-        ]
-      },
-      {
-        "CityID": 48,
-        "name": "松原市",
-        "ProID": 7,
-        "CitySort": 48,
-        "area": [
-          "宁江区",
-          "前郭尔罗斯蒙古族自治县",
-          "长岭县",
-          "乾安县",
-          "吉林松原经济开发区",
-          "扶余市"
-        ]
-      },
-      {
-        "CityID": 49,
-        "name": "白山市",
-        "ProID": 7,
-        "CitySort": 49,
-        "area": [
-          "浑江区",
-          "江源区",
-          "抚松县",
-          "靖宇县",
-          "长白朝鲜族自治县",
-          "临江市"
+    ProID: 7,
+    name: '吉林省',
+    ProSort: 9,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 41,
+        name: '长春市',
+        ProID: 7,
+        CitySort: 41,
+        area: [
+          '南关区',
+          '宽城区',
+          '朝阳区',
+          '二道区',
+          '绿园区',
+          '双阳区',
+          '九台区',
+          '农安县',
+          '长春经济技术开发区',
+          '长春净月高新技术产业开发区',
+          '长春高新技术产业开发区',
+          '长春汽车经济技术开发区',
+          '榆树市',
+          '德惠市',
+          '公主岭市'
+        ]
+      },
+      {
+        CityID: 42,
+        name: '吉林市',
+        ProID: 7,
+        CitySort: 42,
+        area: [
+          '昌邑区',
+          '龙潭区',
+          '船营区',
+          '丰满区',
+          '永吉县',
+          '吉林经济开发区',
+          '吉林高新技术产业开发区',
+          '吉林中国新加坡食品区',
+          '蛟河市',
+          '桦甸市',
+          '舒兰市',
+          '磐石市'
+        ]
+      },
+      {
+        CityID: 43,
+        name: '延边朝鲜族自治州',
+        ProID: 7,
+        CitySort: 43,
+        area: [
+          '延吉市',
+          '图们市',
+          '敦化市',
+          '珲春市',
+          '龙井市',
+          '和龙市',
+          '汪清县',
+          '安图县'
+        ]
+      },
+      {
+        CityID: 44,
+        name: '四平市',
+        ProID: 7,
+        CitySort: 44,
+        area: ['铁西区', '铁东区', '梨树县', '伊通满族自治县', '双辽市']
+      },
+      {
+        CityID: 45,
+        name: '通化市',
+        ProID: 7,
+        CitySort: 45,
+        area: [
+          '东昌区',
+          '二道江区',
+          '通化县',
+          '辉南县',
+          '柳河县',
+          '梅河口市',
+          '集安市'
+        ]
+      },
+      {
+        CityID: 46,
+        name: '白城市',
+        ProID: 7,
+        CitySort: 46,
+        area: [
+          '洮北区',
+          '镇赉县',
+          '通榆县',
+          '吉林白城经济开发区',
+          '洮南市',
+          '大安市'
+        ]
+      },
+      {
+        CityID: 47,
+        name: '辽源市',
+        ProID: 7,
+        CitySort: 47,
+        area: ['龙山区', '西安区', '东丰县', '东辽县']
+      },
+      {
+        CityID: 48,
+        name: '松原市',
+        ProID: 7,
+        CitySort: 48,
+        area: [
+          '宁江区',
+          '前郭尔罗斯蒙古族自治县',
+          '长岭县',
+          '乾安县',
+          '吉林松原经济开发区',
+          '扶余市'
+        ]
+      },
+      {
+        CityID: 49,
+        name: '白山市',
+        ProID: 7,
+        CitySort: 49,
+        area: [
+          '浑江区',
+          '江源区',
+          '抚松县',
+          '靖宇县',
+          '长白朝鲜族自治县',
+          '临江市'
         ]
       }
     ]
   },
   {
-    "ProID": 8,
-    "name": "黑龙江省",
-    "ProSort": 10,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 50,
-        "name": "哈尔滨市",
-        "ProID": 8,
-        "CitySort": 50,
-        "area": [
-          "宾县",
-          "巴彦县",
-          "木兰县",
-          "通河县",
-          "延寿县",
-          "尚志市",
-          "五常市",
-          "道里区",
-          "南岗区",
-          "道外区",
-          "平房区",
-          "松北区",
-          "香坊区",
-          "呼兰区",
-          "阿城区",
-          "双城区",
-          "依兰县",
-          "方正县"
-        ]
-      },
-      {
-        "CityID": 51,
-        "name": "齐齐哈尔市",
-        "ProID": 8,
-        "CitySort": 51,
-        "area": [
-          "龙沙区",
-          "建华区",
-          "铁锋区",
-          "昂昂溪区",
-          "富拉尔基区",
-          "碾子山区",
-          "梅里斯达斡尔族区",
-          "龙江县",
-          "依安县",
-          "泰来县",
-          "甘南县",
-          "富裕县",
-          "克山县",
-          "克东县",
-          "拜泉县",
-          "讷河市"
-        ]
-      },
-      {
-        "CityID": 52,
-        "name": "鸡西市",
-        "ProID": 8,
-        "CitySort": 52,
-        "area": [
-          "鸡冠区",
-          "恒山区",
-          "滴道区",
-          "梨树区",
-          "城子河区",
-          "麻山区",
-          "鸡东县",
-          "虎林市",
-          "密山市"
-        ]
-      },
-      {
-        "CityID": 53,
-        "name": "牡丹江市",
-        "ProID": 8,
-        "CitySort": 53,
-        "area": [
-          "东安区",
-          "阳明区",
-          "爱民区",
-          "西安区",
-          "林口县",
-          "牡丹江经济技术开发区",
-          "绥芬河市",
-          "海林市",
-          "宁安市",
-          "穆棱市",
-          "东宁市"
-        ]
-      },
-      {
-        "CityID": 54,
-        "name": "七台河市",
-        "ProID": 8,
-        "CitySort": 54,
-        "area": [
-          "新兴区",
-          "桃山区",
-          "茄子河区",
-          "勃利县"
-        ]
-      },
-      {
-        "CityID": 55,
-        "name": "佳木斯市",
-        "ProID": 8,
-        "CitySort": 55,
-        "area": [
-          "向阳区",
-          "前进区",
-          "东风区",
-          "郊区",
-          "桦南县",
-          "桦川县",
-          "汤原县",
-          "同江市",
-          "富锦市",
-          "抚远市"
-        ]
-      },
-      {
-        "CityID": 56,
-        "name": "鹤岗市",
-        "ProID": 8,
-        "CitySort": 56,
-        "area": [
-          "向阳区",
-          "工农区",
-          "南山区",
-          "兴安区",
-          "东山区",
-          "兴山区",
-          "萝北县",
-          "绥滨县"
-        ]
-      },
-      {
-        "CityID": 57,
-        "name": "双鸭山市",
-        "ProID": 8,
-        "CitySort": 57,
-        "area": [
-          "尖山区",
-          "岭东区",
-          "四方台区",
-          "宝山区",
-          "集贤县",
-          "友谊县",
-          "宝清县",
-          "饶河县"
-        ]
-      },
-      {
-        "CityID": 58,
-        "name": "绥化市",
-        "ProID": 8,
-        "CitySort": 58,
-        "area": [
-          "北林区",
-          "望奎县",
-          "兰西县",
-          "青冈县",
-          "庆安县",
-          "明水县",
-          "绥棱县",
-          "安达市",
-          "肇东市",
-          "海伦市"
-        ]
-      },
-      {
-        "CityID": 59,
-        "name": "黑河市",
-        "ProID": 8,
-        "CitySort": 59,
-        "area": [
-          "爱辉区",
-          "逊克县",
-          "孙吴县",
-          "北安市",
-          "五大连池市",
-          "嫩江市"
-        ]
-      },
-      {
-        "CityID": 60,
-        "name": "大兴安岭地区",
-        "ProID": 8,
-        "CitySort": 60,
-        "area": [
-          "漠河市",
-          "呼玛县",
-          "塔河县",
-          "加格达奇区",
-          "松岭区",
-          "新林区",
-          "呼中区"
-        ]
-      },
-      {
-        "CityID": 61,
-        "name": "伊春市",
-        "ProID": 8,
-        "CitySort": 61,
-        "area": [
-          "伊美区",
-          "乌翠区",
-          "友好区",
-          "嘉荫县",
-          "汤旺县",
-          "丰林县",
-          "大箐山县",
-          "南岔县",
-          "金林区",
-          "铁力市"
-        ]
-      },
-      {
-        "CityID": 62,
-        "name": "大庆市",
-        "ProID": 8,
-        "CitySort": 62,
-        "area": [
-          "萨尔图区",
-          "龙凤区",
-          "让胡路区",
-          "红岗区",
-          "大同区",
-          "肇州县",
-          "肇源县",
-          "林甸县",
-          "杜尔伯特蒙古族自治县",
-          "大庆高新技术产业开发区"
+    ProID: 8,
+    name: '黑龙江省',
+    ProSort: 10,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 50,
+        name: '哈尔滨市',
+        ProID: 8,
+        CitySort: 50,
+        area: [
+          '宾县',
+          '巴彦县',
+          '木兰县',
+          '通河县',
+          '延寿县',
+          '尚志市',
+          '五常市',
+          '道里区',
+          '南岗区',
+          '道外区',
+          '平房区',
+          '松北区',
+          '香坊区',
+          '呼兰区',
+          '阿城区',
+          '双城区',
+          '依兰县',
+          '方正县'
+        ]
+      },
+      {
+        CityID: 51,
+        name: '齐齐哈尔市',
+        ProID: 8,
+        CitySort: 51,
+        area: [
+          '龙沙区',
+          '建华区',
+          '铁锋区',
+          '昂昂溪区',
+          '富拉尔基区',
+          '碾子山区',
+          '梅里斯达斡尔族区',
+          '龙江县',
+          '依安县',
+          '泰来县',
+          '甘南县',
+          '富裕县',
+          '克山县',
+          '克东县',
+          '拜泉县',
+          '讷河市'
+        ]
+      },
+      {
+        CityID: 52,
+        name: '鸡西市',
+        ProID: 8,
+        CitySort: 52,
+        area: [
+          '鸡冠区',
+          '恒山区',
+          '滴道区',
+          '梨树区',
+          '城子河区',
+          '麻山区',
+          '鸡东县',
+          '虎林市',
+          '密山市'
+        ]
+      },
+      {
+        CityID: 53,
+        name: '牡丹江市',
+        ProID: 8,
+        CitySort: 53,
+        area: [
+          '东安区',
+          '阳明区',
+          '爱民区',
+          '西安区',
+          '林口县',
+          '牡丹江经济技术开发区',
+          '绥芬河市',
+          '海林市',
+          '宁安市',
+          '穆棱市',
+          '东宁市'
+        ]
+      },
+      {
+        CityID: 54,
+        name: '七台河市',
+        ProID: 8,
+        CitySort: 54,
+        area: ['新兴区', '桃山区', '茄子河区', '勃利县']
+      },
+      {
+        CityID: 55,
+        name: '佳木斯市',
+        ProID: 8,
+        CitySort: 55,
+        area: [
+          '向阳区',
+          '前进区',
+          '东风区',
+          '郊区',
+          '桦南县',
+          '桦川县',
+          '汤原县',
+          '同江市',
+          '富锦市',
+          '抚远市'
+        ]
+      },
+      {
+        CityID: 56,
+        name: '鹤岗市',
+        ProID: 8,
+        CitySort: 56,
+        area: [
+          '向阳区',
+          '工农区',
+          '南山区',
+          '兴安区',
+          '东山区',
+          '兴山区',
+          '萝北县',
+          '绥滨县'
+        ]
+      },
+      {
+        CityID: 57,
+        name: '双鸭山市',
+        ProID: 8,
+        CitySort: 57,
+        area: [
+          '尖山区',
+          '岭东区',
+          '四方台区',
+          '宝山区',
+          '集贤县',
+          '友谊县',
+          '宝清县',
+          '饶河县'
+        ]
+      },
+      {
+        CityID: 58,
+        name: '绥化市',
+        ProID: 8,
+        CitySort: 58,
+        area: [
+          '北林区',
+          '望奎县',
+          '兰西县',
+          '青冈县',
+          '庆安县',
+          '明水县',
+          '绥棱县',
+          '安达市',
+          '肇东市',
+          '海伦市'
+        ]
+      },
+      {
+        CityID: 59,
+        name: '黑河市',
+        ProID: 8,
+        CitySort: 59,
+        area: ['爱辉区', '逊克县', '孙吴县', '北安市', '五大连池市', '嫩江市']
+      },
+      {
+        CityID: 60,
+        name: '大兴安岭地区',
+        ProID: 8,
+        CitySort: 60,
+        area: [
+          '漠河市',
+          '呼玛县',
+          '塔河县',
+          '加格达奇区',
+          '松岭区',
+          '新林区',
+          '呼中区'
+        ]
+      },
+      {
+        CityID: 61,
+        name: '伊春市',
+        ProID: 8,
+        CitySort: 61,
+        area: [
+          '伊美区',
+          '乌翠区',
+          '友好区',
+          '嘉荫县',
+          '汤旺县',
+          '丰林县',
+          '大箐山县',
+          '南岔县',
+          '金林区',
+          '铁力市'
+        ]
+      },
+      {
+        CityID: 62,
+        name: '大庆市',
+        ProID: 8,
+        CitySort: 62,
+        area: [
+          '萨尔图区',
+          '龙凤区',
+          '让胡路区',
+          '红岗区',
+          '大同区',
+          '肇州县',
+          '肇源县',
+          '林甸县',
+          '杜尔伯特蒙古族自治县',
+          '大庆高新技术产业开发区'
         ]
       }
     ]
   },
   {
-    "ProID": 9,
-    "name": "上海市",
-    "ProSort": 3,
-    "ProRemark": "直辖市",
-    "city": [
-      {
-        "CityID": 3,
-        "name": "上海市",
-        "ProID": 9,
-        "CitySort": 3,
-        "area": [
-          "黄浦区",
-          "徐汇区",
-          "长宁区",
-          "静安区",
-          "普陀区",
-          "虹口区",
-          "杨浦区",
-          "闵行区",
-          "宝山区",
-          "嘉定区",
-          "浦东新区",
-          "金山区",
-          "松江区",
-          "青浦区",
-          "奉贤区",
-          "崇明区"
+    ProID: 9,
+    name: '上海市',
+    ProSort: 3,
+    ProRemark: '直辖市',
+    city: [
+      {
+        CityID: 3,
+        name: '上海市',
+        ProID: 9,
+        CitySort: 3,
+        area: [
+          '黄浦区',
+          '徐汇区',
+          '长宁区',
+          '静安区',
+          '普陀区',
+          '虹口区',
+          '杨浦区',
+          '闵行区',
+          '宝山区',
+          '嘉定区',
+          '浦东新区',
+          '金山区',
+          '松江区',
+          '青浦区',
+          '奉贤区',
+          '崇明区'
         ]
       }
     ]
   },
   {
-    "ProID": 10,
-    "name": "江苏省",
-    "ProSort": 11,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 63,
-        "name": "南京市",
-        "ProID": 10,
-        "CitySort": 63,
-        "area": [
-          "玄武区",
-          "秦淮区",
-          "建邺区",
-          "鼓楼区",
-          "浦口区",
-          "栖霞区",
-          "雨花台区",
-          "江宁区",
-          "六合区",
-          "溧水区",
-          "高淳区"
-        ]
-      },
-      {
-        "CityID": 64,
-        "name": "无锡市",
-        "ProID": 10,
-        "CitySort": 64,
-        "area": [
-          "锡山区",
-          "惠山区",
-          "滨湖区",
-          "梁溪区",
-          "新吴区",
-          "江阴市",
-          "宜兴市"
-        ]
-      },
-      {
-        "CityID": 65,
-        "name": "镇江市",
-        "ProID": 10,
-        "CitySort": 65,
-        "area": [
-          "京口区",
-          "润州区",
-          "丹徒区",
-          "镇江新区",
-          "丹阳市",
-          "扬中市",
-          "句容市"
-        ]
-      },
-      {
-        "CityID": 66,
-        "name": "苏州市",
-        "ProID": 10,
-        "CitySort": 66,
-        "area": [
-          "虎丘区",
-          "吴中区",
-          "相城区",
-          "姑苏区",
-          "吴江区",
-          "苏州工业园区",
-          "常熟市",
-          "张家港市",
-          "昆山市",
-          "太仓市"
-        ]
-      },
-      {
-        "CityID": 67,
-        "name": "南通市",
-        "ProID": 10,
-        "CitySort": 67,
-        "area": [
-          "崇川区",
-          "港闸区",
-          "通州区",
-          "如东县",
-          "南通经济技术开发区",
-          "启东市",
-          "如皋市",
-          "海门市",
-          "海安市"
-        ]
-      },
-      {
-        "CityID": 68,
-        "name": "扬州市",
-        "ProID": 10,
-        "CitySort": 68,
-        "area": [
-          "广陵区",
-          "邗江区",
-          "江都区",
-          "宝应县",
-          "扬州经济技术开发区",
-          "仪征市",
-          "高邮市"
-        ]
-      },
-      {
-        "CityID": 69,
-        "name": "盐城市",
-        "ProID": 10,
-        "CitySort": 69,
-        "area": [
-          "亭湖区",
-          "盐都区",
-          "大丰区",
-          "响水县",
-          "滨海县",
-          "阜宁县",
-          "射阳县",
-          "建湖县",
-          "盐城经济技术开发区",
-          "东台市"
-        ]
-      },
-      {
-        "CityID": 70,
-        "name": "徐州市",
-        "ProID": 10,
-        "CitySort": 70,
-        "area": [
-          "鼓楼区",
-          "云龙区",
-          "贾汪区",
-          "泉山区",
-          "铜山区",
-          "丰县",
-          "沛县",
-          "睢宁县",
-          "徐州经济技术开发区",
-          "新沂市",
-          "邳州市"
-        ]
-      },
-      {
-        "CityID": 71,
-        "name": "淮安市",
-        "ProID": 10,
-        "CitySort": 71,
-        "area": [
-          "淮安区",
-          "淮阴区",
-          "清江浦区",
-          "洪泽区",
-          "涟水县",
-          "盱眙县",
-          "金湖县",
-          "淮安经济技术开发区"
-        ]
-      },
-      {
-        "CityID": 72,
-        "name": "连云港市",
-        "ProID": 10,
-        "CitySort": 72,
-        "area": [
-          "连云区",
-          "海州区",
-          "赣榆区",
-          "东海县",
-          "灌云县",
-          "灌南县",
-          "连云港经济技术开发区",
-          "连云港高新技术产业开发区"
-        ]
-      },
-      {
-        "CityID": 73,
-        "name": "常州市",
-        "ProID": 10,
-        "CitySort": 73,
-        "area": [
-          "天宁区",
-          "钟楼区",
-          "新北区",
-          "武进区",
-          "金坛区",
-          "溧阳市"
-        ]
-      },
-      {
-        "CityID": 74,
-        "name": "泰州市",
-        "ProID": 10,
-        "CitySort": 74,
-        "area": [
-          "海陵区",
-          "高港区",
-          "姜堰区",
-          "泰州医药高新技术产业开发区",
-          "兴化市",
-          "靖江市",
-          "泰兴市"
-        ]
-      },
-      {
-        "CityID": 75,
-        "name": "宿迁市",
-        "ProID": 10,
-        "CitySort": 75,
-        "area": [
-          "宿城区",
-          "宿豫区",
-          "沭阳县",
-          "泗阳县",
-          "泗洪县",
-          "宿迁经济技术开发区"
+    ProID: 10,
+    name: '江苏省',
+    ProSort: 11,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 63,
+        name: '南京市',
+        ProID: 10,
+        CitySort: 63,
+        area: [
+          '玄武区',
+          '秦淮区',
+          '建邺区',
+          '鼓楼区',
+          '浦口区',
+          '栖霞区',
+          '雨花台区',
+          '江宁区',
+          '六合区',
+          '溧水区',
+          '高淳区'
+        ]
+      },
+      {
+        CityID: 64,
+        name: '无锡市',
+        ProID: 10,
+        CitySort: 64,
+        area: [
+          '锡山区',
+          '惠山区',
+          '滨湖区',
+          '梁溪区',
+          '新吴区',
+          '江阴市',
+          '宜兴市'
+        ]
+      },
+      {
+        CityID: 65,
+        name: '镇江市',
+        ProID: 10,
+        CitySort: 65,
+        area: [
+          '京口区',
+          '润州区',
+          '丹徒区',
+          '镇江新区',
+          '丹阳市',
+          '扬中市',
+          '句容市'
+        ]
+      },
+      {
+        CityID: 66,
+        name: '苏州市',
+        ProID: 10,
+        CitySort: 66,
+        area: [
+          '虎丘区',
+          '吴中区',
+          '相城区',
+          '姑苏区',
+          '吴江区',
+          '苏州工业园区',
+          '常熟市',
+          '张家港市',
+          '昆山市',
+          '太仓市'
+        ]
+      },
+      {
+        CityID: 67,
+        name: '南通市',
+        ProID: 10,
+        CitySort: 67,
+        area: [
+          '崇川区',
+          '港闸区',
+          '通州区',
+          '如东县',
+          '南通经济技术开发区',
+          '启东市',
+          '如皋市',
+          '海门市',
+          '海安市'
+        ]
+      },
+      {
+        CityID: 68,
+        name: '扬州市',
+        ProID: 10,
+        CitySort: 68,
+        area: [
+          '广陵区',
+          '邗江区',
+          '江都区',
+          '宝应县',
+          '扬州经济技术开发区',
+          '仪征市',
+          '高邮市'
+        ]
+      },
+      {
+        CityID: 69,
+        name: '盐城市',
+        ProID: 10,
+        CitySort: 69,
+        area: [
+          '亭湖区',
+          '盐都区',
+          '大丰区',
+          '响水县',
+          '滨海县',
+          '阜宁县',
+          '射阳县',
+          '建湖县',
+          '盐城经济技术开发区',
+          '东台市'
+        ]
+      },
+      {
+        CityID: 70,
+        name: '徐州市',
+        ProID: 10,
+        CitySort: 70,
+        area: [
+          '鼓楼区',
+          '云龙区',
+          '贾汪区',
+          '泉山区',
+          '铜山区',
+          '丰县',
+          '沛县',
+          '睢宁县',
+          '徐州经济技术开发区',
+          '新沂市',
+          '邳州市'
+        ]
+      },
+      {
+        CityID: 71,
+        name: '淮安市',
+        ProID: 10,
+        CitySort: 71,
+        area: [
+          '淮安区',
+          '淮阴区',
+          '清江浦区',
+          '洪泽区',
+          '涟水县',
+          '盱眙县',
+          '金湖县',
+          '淮安经济技术开发区'
+        ]
+      },
+      {
+        CityID: 72,
+        name: '连云港市',
+        ProID: 10,
+        CitySort: 72,
+        area: [
+          '连云区',
+          '海州区',
+          '赣榆区',
+          '东海县',
+          '灌云县',
+          '灌南县',
+          '连云港经济技术开发区',
+          '连云港高新技术产业开发区'
+        ]
+      },
+      {
+        CityID: 73,
+        name: '常州市',
+        ProID: 10,
+        CitySort: 73,
+        area: ['天宁区', '钟楼区', '新北区', '武进区', '金坛区', '溧阳市']
+      },
+      {
+        CityID: 74,
+        name: '泰州市',
+        ProID: 10,
+        CitySort: 74,
+        area: [
+          '海陵区',
+          '高港区',
+          '姜堰区',
+          '泰州医药高新技术产业开发区',
+          '兴化市',
+          '靖江市',
+          '泰兴市'
+        ]
+      },
+      {
+        CityID: 75,
+        name: '宿迁市',
+        ProID: 10,
+        CitySort: 75,
+        area: [
+          '宿城区',
+          '宿豫区',
+          '沭阳县',
+          '泗阳县',
+          '泗洪县',
+          '宿迁经济技术开发区'
         ]
       }
     ]
   },
   {
-    "ProID": 11,
-    "name": "浙江省",
-    "ProSort": 12,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 76,
-        "name": "舟山市",
-        "ProID": 11,
-        "CitySort": 76,
-        "area": [
-          "定海区",
-          "普陀区",
-          "岱山县",
-          "嵊泗县"
-        ]
-      },
-      {
-        "CityID": 77,
-        "name": "衢州市",
-        "ProID": 11,
-        "CitySort": 77,
-        "area": [
-          "柯城区",
-          "衢江区",
-          "常山县",
-          "开化县",
-          "龙游县",
-          "江山市"
-        ]
-      },
-      {
-        "CityID": 78,
-        "name": "杭州市",
-        "ProID": 11,
-        "CitySort": 78,
-        "area": [
-          "上城区",
-          "下城区",
-          "江干区",
-          "拱墅区",
-          "西湖区",
-          "滨江区",
-          "萧山区",
-          "余杭区",
-          "富阳区",
-          "临安区",
-          "桐庐县",
-          "淳安县",
-          "建德市"
-        ]
-      },
-      {
-        "CityID": 79,
-        "name": "湖州市",
-        "ProID": 11,
-        "CitySort": 79,
-        "area": [
-          "吴兴区",
-          "南浔区",
-          "德清县",
-          "长兴县",
-          "安吉县"
-        ]
-      },
-      {
-        "CityID": 80,
-        "name": "嘉兴市",
-        "ProID": 11,
-        "CitySort": 80,
-        "area": [
-          "南湖区",
-          "秀洲区",
-          "嘉善县",
-          "海盐县",
-          "海宁市",
-          "平湖市",
-          "桐乡市"
-        ]
-      },
-      {
-        "CityID": 81,
-        "name": "宁波市",
-        "ProID": 11,
-        "CitySort": 81,
-        "area": [
-          "海曙区",
-          "江北区",
-          "北仑区",
-          "镇海区",
-          "鄞州区",
-          "奉化区",
-          "象山县",
-          "宁海县",
-          "余姚市",
-          "慈溪市"
-        ]
-      },
-      {
-        "CityID": 82,
-        "name": "绍兴市",
-        "ProID": 11,
-        "CitySort": 82,
-        "area": [
-          "越城区",
-          "柯桥区",
-          "上虞区",
-          "新昌县",
-          "诸暨市",
-          "嵊州市"
-        ]
-      },
-      {
-        "CityID": 83,
-        "name": "温州市",
-        "ProID": 11,
-        "CitySort": 83,
-        "area": [
-          "鹿城区",
-          "龙湾区",
-          "瓯海区",
-          "洞头区",
-          "永嘉县",
-          "平阳县",
-          "苍南县",
-          "文成县",
-          "泰顺县",
-          "温州经济技术开发区",
-          "瑞安市",
-          "乐清市",
-          "龙港市"
-        ]
-      },
-      {
-        "CityID": 84,
-        "name": "丽水市",
-        "ProID": 11,
-        "CitySort": 84,
-        "area": [
-          "莲都区",
-          "青田县",
-          "缙云县",
-          "遂昌县",
-          "松阳县",
-          "云和县",
-          "庆元县",
-          "景宁畲族自治县",
-          "龙泉市"
-        ]
-      },
-      {
-        "CityID": 85,
-        "name": "金华市",
-        "ProID": 11,
-        "CitySort": 85,
-        "area": [
-          "婺城区",
-          "金东区",
-          "武义县",
-          "浦江县",
-          "磐安县",
-          "兰溪市",
-          "义乌市",
-          "东阳市",
-          "永康市"
-        ]
-      },
-      {
-        "CityID": 86,
-        "name": "台州市",
-        "ProID": 11,
-        "CitySort": 86,
-        "area": [
-          "椒江区",
-          "黄岩区",
-          "路桥区",
-          "三门县",
-          "天台县",
-          "仙居县",
-          "温岭市",
-          "临海市",
-          "玉环市"
+    ProID: 11,
+    name: '浙江省',
+    ProSort: 12,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 76,
+        name: '舟山市',
+        ProID: 11,
+        CitySort: 76,
+        area: ['定海区', '普陀区', '岱山县', '嵊泗县']
+      },
+      {
+        CityID: 77,
+        name: '衢州市',
+        ProID: 11,
+        CitySort: 77,
+        area: ['柯城区', '衢江区', '常山县', '开化县', '龙游县', '江山市']
+      },
+      {
+        CityID: 78,
+        name: '杭州市',
+        ProID: 11,
+        CitySort: 78,
+        area: [
+          '上城区',
+          '下城区',
+          '江干区',
+          '拱墅区',
+          '西湖区',
+          '滨江区',
+          '萧山区',
+          '余杭区',
+          '富阳区',
+          '临安区',
+          '桐庐县',
+          '淳安县',
+          '建德市'
+        ]
+      },
+      {
+        CityID: 79,
+        name: '湖州市',
+        ProID: 11,
+        CitySort: 79,
+        area: ['吴兴区', '南浔区', '德清县', '长兴县', '安吉县']
+      },
+      {
+        CityID: 80,
+        name: '嘉兴市',
+        ProID: 11,
+        CitySort: 80,
+        area: [
+          '南湖区',
+          '秀洲区',
+          '嘉善县',
+          '海盐县',
+          '海宁市',
+          '平湖市',
+          '桐乡市'
+        ]
+      },
+      {
+        CityID: 81,
+        name: '宁波市',
+        ProID: 11,
+        CitySort: 81,
+        area: [
+          '海曙区',
+          '江北区',
+          '北仑区',
+          '镇海区',
+          '鄞州区',
+          '奉化区',
+          '象山县',
+          '宁海县',
+          '余姚市',
+          '慈溪市'
+        ]
+      },
+      {
+        CityID: 82,
+        name: '绍兴市',
+        ProID: 11,
+        CitySort: 82,
+        area: ['越城区', '柯桥区', '上虞区', '新昌县', '诸暨市', '嵊州市']
+      },
+      {
+        CityID: 83,
+        name: '温州市',
+        ProID: 11,
+        CitySort: 83,
+        area: [
+          '鹿城区',
+          '龙湾区',
+          '瓯海区',
+          '洞头区',
+          '永嘉县',
+          '平阳县',
+          '苍南县',
+          '文成县',
+          '泰顺县',
+          '温州经济技术开发区',
+          '瑞安市',
+          '乐清市',
+          '龙港市'
+        ]
+      },
+      {
+        CityID: 84,
+        name: '丽水市',
+        ProID: 11,
+        CitySort: 84,
+        area: [
+          '莲都区',
+          '青田县',
+          '缙云县',
+          '遂昌县',
+          '松阳县',
+          '云和县',
+          '庆元县',
+          '景宁畲族自治县',
+          '龙泉市'
+        ]
+      },
+      {
+        CityID: 85,
+        name: '金华市',
+        ProID: 11,
+        CitySort: 85,
+        area: [
+          '婺城区',
+          '金东区',
+          '武义县',
+          '浦江县',
+          '磐安县',
+          '兰溪市',
+          '义乌市',
+          '东阳市',
+          '永康市'
+        ]
+      },
+      {
+        CityID: 86,
+        name: '台州市',
+        ProID: 11,
+        CitySort: 86,
+        area: [
+          '椒江区',
+          '黄岩区',
+          '路桥区',
+          '三门县',
+          '天台县',
+          '仙居县',
+          '温岭市',
+          '临海市',
+          '玉环市'
         ]
       }
     ]
   },
   {
-    "ProID": 12,
-    "name": "安徽省",
-    "ProSort": 13,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 87,
-        "name": "合肥市",
-        "ProID": 12,
-        "CitySort": 87,
-        "area": [
-          "瑶海区",
-          "庐阳区",
-          "蜀山区",
-          "包河区",
-          "长丰县",
-          "肥东县",
-          "肥西县",
-          "庐江县",
-          "合肥高新技术产业开发区",
-          "合肥经济技术开发区",
-          "合肥新站高新技术产业开发区",
-          "巢湖市"
-        ]
-      },
-      {
-        "CityID": 88,
-        "name": "芜湖市",
-        "ProID": 12,
-        "CitySort": 88,
-        "area": [
-          "镜湖区",
-          "弋江区",
-          "鸠江区",
-          "三山区",
-          "芜湖县",
-          "繁昌县",
-          "南陵县",
-          "芜湖经济技术开发区",
-          "安徽芜湖长江大桥经济开发区",
-          "无为市"
-        ]
-      },
-      {
-        "CityID": 89,
-        "name": "蚌埠市",
-        "ProID": 12,
-        "CitySort": 89,
-        "area": [
-          "龙子湖区",
-          "蚌山区",
-          "禹会区",
-          "淮上区",
-          "怀远县",
-          "五河县",
-          "固镇县",
-          "蚌埠市高新技术开发区",
-          "蚌埠市经济开发区"
-        ]
-      },
-      {
-        "CityID": 90,
-        "name": "淮南市",
-        "ProID": 12,
-        "CitySort": 90,
-        "area": [
-          "大通区",
-          "田家庵区",
-          "谢家集区",
-          "八公山区",
-          "潘集区",
-          "凤台县",
-          "寿县"
-        ]
-      },
-      {
-        "CityID": 91,
-        "name": "马鞍山市",
-        "ProID": 12,
-        "CitySort": 91,
-        "area": [
-          "花山区",
-          "雨山区",
-          "博望区",
-          "当涂县",
-          "含山县",
-          "和县"
-        ]
-      },
-      {
-        "CityID": 92,
-        "name": "淮北市",
-        "ProID": 12,
-        "CitySort": 92,
-        "area": [
-          "杜集区",
-          "相山区",
-          "烈山区",
-          "濉溪县"
-        ]
-      },
-      {
-        "CityID": 93,
-        "name": "铜陵市",
-        "ProID": 12,
-        "CitySort": 93,
-        "area": [
-          "铜官区",
-          "义安区",
-          "郊区",
-          "枞阳县"
-        ]
-      },
-      {
-        "CityID": 94,
-        "name": "安庆市",
-        "ProID": 12,
-        "CitySort": 94,
-        "area": [
-          "迎江区",
-          "大观区",
-          "宜秀区",
-          "怀宁县",
-          "太湖县",
-          "宿松县",
-          "望江县",
-          "岳西县",
-          "安徽安庆经济开发区",
-          "桐城市",
-          "潜山市"
-        ]
-      },
-      {
-        "CityID": 95,
-        "name": "黄山市",
-        "ProID": 12,
-        "CitySort": 95,
-        "area": [
-          "屯溪区",
-          "黄山区",
-          "徽州区",
-          "歙县",
-          "休宁县",
-          "黟县",
-          "祁门县"
-        ]
-      },
-      {
-        "CityID": 96,
-        "name": "滁州市",
-        "ProID": 12,
-        "CitySort": 96,
-        "area": [
-          "琅琊区",
-          "南谯区",
-          "来安县",
-          "全椒县",
-          "定远县",
-          "凤阳县",
-          "苏滁现代产业园",
-          "滁州经济技术开发区",
-          "天长市",
-          "明光市"
-        ]
-      },
-      {
-        "CityID": 97,
-        "name": "阜阳市",
-        "ProID": 12,
-        "CitySort": 97,
-        "area": [
-          "颍州区",
-          "颍东区",
-          "颍泉区",
-          "临泉县",
-          "太和县",
-          "阜南县",
-          "颍上县",
-          "阜阳合肥现代产业园区",
-          "阜阳经济技术开发区",
-          "界首市"
-        ]
-      },
-      {
-        "CityID": 98,
-        "name": "宿州市",
-        "ProID": 12,
-        "CitySort": 98,
-        "area": [
-          "埇桥区",
-          "砀山县",
-          "萧县",
-          "灵璧县",
-          "泗县",
-          "宿州马鞍山现代产业园区",
-          "宿州经济技术开发区"
-        ]
-      },
-      {
-        "CityID": 100,
-        "name": "六安市",
-        "ProID": 12,
-        "CitySort": 100,
-        "area": [
-          "金安区",
-          "裕安区",
-          "叶集区",
-          "霍邱县",
-          "舒城县",
-          "金寨县",
-          "霍山县"
-        ]
-      },
-      {
-        "CityID": 101,
-        "name": "亳州市",
-        "ProID": 12,
-        "CitySort": 101,
-        "area": [
-          "谯城区",
-          "涡阳县",
-          "蒙城县",
-          "利辛县"
-        ]
-      },
-      {
-        "CityID": 102,
-        "name": "池州市",
-        "ProID": 12,
-        "CitySort": 102,
-        "area": [
-          "贵池区",
-          "东至县",
-          "石台县",
-          "青阳县"
-        ]
-      },
-      {
-        "CityID": 103,
-        "name": "宣城市",
-        "ProID": 12,
-        "CitySort": 103,
-        "area": [
-          "宣州区",
-          "郎溪县",
-          "泾县",
-          "绩溪县",
-          "旌德县",
-          "宣城市经济开发区",
-          "宁国市",
-          "广德市"
+    ProID: 12,
+    name: '安徽省',
+    ProSort: 13,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 87,
+        name: '合肥市',
+        ProID: 12,
+        CitySort: 87,
+        area: [
+          '瑶海区',
+          '庐阳区',
+          '蜀山区',
+          '包河区',
+          '长丰县',
+          '肥东县',
+          '肥西县',
+          '庐江县',
+          '合肥高新技术产业开发区',
+          '合肥经济技术开发区',
+          '合肥新站高新技术产业开发区',
+          '巢湖市'
+        ]
+      },
+      {
+        CityID: 88,
+        name: '芜湖市',
+        ProID: 12,
+        CitySort: 88,
+        area: [
+          '镜湖区',
+          '弋江区',
+          '鸠江区',
+          '三山区',
+          '芜湖县',
+          '繁昌县',
+          '南陵县',
+          '芜湖经济技术开发区',
+          '安徽芜湖长江大桥经济开发区',
+          '无为市'
+        ]
+      },
+      {
+        CityID: 89,
+        name: '蚌埠市',
+        ProID: 12,
+        CitySort: 89,
+        area: [
+          '龙子湖区',
+          '蚌山区',
+          '禹会区',
+          '淮上区',
+          '怀远县',
+          '五河县',
+          '固镇县',
+          '蚌埠市高新技术开发区',
+          '蚌埠市经济开发区'
+        ]
+      },
+      {
+        CityID: 90,
+        name: '淮南市',
+        ProID: 12,
+        CitySort: 90,
+        area: [
+          '大通区',
+          '田家庵区',
+          '谢家集区',
+          '八公山区',
+          '潘集区',
+          '凤台县',
+          '寿县'
+        ]
+      },
+      {
+        CityID: 91,
+        name: '马鞍山市',
+        ProID: 12,
+        CitySort: 91,
+        area: ['花山区', '雨山区', '博望区', '当涂县', '含山县', '和县']
+      },
+      {
+        CityID: 92,
+        name: '淮北市',
+        ProID: 12,
+        CitySort: 92,
+        area: ['杜集区', '相山区', '烈山区', '濉溪县']
+      },
+      {
+        CityID: 93,
+        name: '铜陵市',
+        ProID: 12,
+        CitySort: 93,
+        area: ['铜官区', '义安区', '郊区', '枞阳县']
+      },
+      {
+        CityID: 94,
+        name: '安庆市',
+        ProID: 12,
+        CitySort: 94,
+        area: [
+          '迎江区',
+          '大观区',
+          '宜秀区',
+          '怀宁县',
+          '太湖县',
+          '宿松县',
+          '望江县',
+          '岳西县',
+          '安徽安庆经济开发区',
+          '桐城市',
+          '潜山市'
+        ]
+      },
+      {
+        CityID: 95,
+        name: '黄山市',
+        ProID: 12,
+        CitySort: 95,
+        area: ['屯溪区', '黄山区', '徽州区', '歙县', '休宁县', '黟县', '祁门县']
+      },
+      {
+        CityID: 96,
+        name: '滁州市',
+        ProID: 12,
+        CitySort: 96,
+        area: [
+          '琅琊区',
+          '南谯区',
+          '来安县',
+          '全椒县',
+          '定远县',
+          '凤阳县',
+          '苏滁现代产业园',
+          '滁州经济技术开发区',
+          '天长市',
+          '明光市'
+        ]
+      },
+      {
+        CityID: 97,
+        name: '阜阳市',
+        ProID: 12,
+        CitySort: 97,
+        area: [
+          '颍州区',
+          '颍东区',
+          '颍泉区',
+          '临泉县',
+          '太和县',
+          '阜南县',
+          '颍上县',
+          '阜阳合肥现代产业园区',
+          '阜阳经济技术开发区',
+          '界首市'
+        ]
+      },
+      {
+        CityID: 98,
+        name: '宿州市',
+        ProID: 12,
+        CitySort: 98,
+        area: [
+          '埇桥区',
+          '砀山县',
+          '萧县',
+          '灵璧县',
+          '泗县',
+          '宿州马鞍山现代产业园区',
+          '宿州经济技术开发区'
+        ]
+      },
+      {
+        CityID: 100,
+        name: '六安市',
+        ProID: 12,
+        CitySort: 100,
+        area: [
+          '金安区',
+          '裕安区',
+          '叶集区',
+          '霍邱县',
+          '舒城县',
+          '金寨县',
+          '霍山县'
+        ]
+      },
+      {
+        CityID: 101,
+        name: '亳州市',
+        ProID: 12,
+        CitySort: 101,
+        area: ['谯城区', '涡阳县', '蒙城县', '利辛县']
+      },
+      {
+        CityID: 102,
+        name: '池州市',
+        ProID: 12,
+        CitySort: 102,
+        area: ['贵池区', '东至县', '石台县', '青阳县']
+      },
+      {
+        CityID: 103,
+        name: '宣城市',
+        ProID: 12,
+        CitySort: 103,
+        area: [
+          '宣州区',
+          '郎溪县',
+          '泾县',
+          '绩溪县',
+          '旌德县',
+          '宣城市经济开发区',
+          '宁国市',
+          '广德市'
         ]
       }
     ]
   },
   {
-    "ProID": 13,
-    "name": "福建省",
-    "ProSort": 14,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 104,
-        "name": "福州市",
-        "ProID": 13,
-        "CitySort": 104,
-        "area": [
-          "鼓楼区",
-          "台江区",
-          "仓山区",
-          "马尾区",
-          "晋安区",
-          "长乐区",
-          "闽侯县",
-          "连江县",
-          "罗源县",
-          "闽清县",
-          "永泰县",
-          "平潭县",
-          "福清市"
-        ]
-      },
-      {
-        "CityID": 105,
-        "name": "厦门市",
-        "ProID": 13,
-        "CitySort": 105,
-        "area": [
-          "思明区",
-          "海沧区",
-          "湖里区",
-          "集美区",
-          "同安区",
-          "翔安区"
-        ]
-      },
-      {
-        "CityID": 106,
-        "name": "宁德市",
-        "ProID": 13,
-        "CitySort": 106,
-        "area": [
-          "蕉城区",
-          "霞浦县",
-          "古田县",
-          "屏南县",
-          "寿宁县",
-          "周宁县",
-          "柘荣县",
-          "福安市",
-          "福鼎市"
-        ]
-      },
-      {
-        "CityID": 107,
-        "name": "莆田市",
-        "ProID": 13,
-        "CitySort": 107,
-        "area": [
-          "城厢区",
-          "涵江区",
-          "荔城区",
-          "秀屿区",
-          "仙游县"
-        ]
-      },
-      {
-        "CityID": 108,
-        "name": "泉州市",
-        "ProID": 13,
-        "CitySort": 108,
-        "area": [
-          "金门县",
-          "鲤城区",
-          "丰泽区",
-          "洛江区",
-          "泉港区",
-          "惠安县",
-          "安溪县",
-          "永春县",
-          "德化县",
-          "石狮市",
-          "晋江市",
-          "南安市"
-        ]
-      },
-      {
-        "CityID": 109,
-        "name": "漳州市",
-        "ProID": 13,
-        "CitySort": 109,
-        "area": [
-          "芗城区",
-          "龙文区",
-          "云霄县",
-          "漳浦县",
-          "诏安县",
-          "长泰县",
-          "东山县",
-          "南靖县",
-          "平和县",
-          "华安县",
-          "龙海市"
-        ]
-      },
-      {
-        "CityID": 110,
-        "name": "龙岩市",
-        "ProID": 13,
-        "CitySort": 110,
-        "area": [
-          "新罗区",
-          "永定区",
-          "长汀县",
-          "上杭县",
-          "武平县",
-          "连城县",
-          "漳平市"
-        ]
-      },
-      {
-        "CityID": 111,
-        "name": "三明市",
-        "ProID": 13,
-        "CitySort": 111,
-        "area": [
-          "梅列区",
-          "三元区",
-          "明溪县",
-          "清流县",
-          "宁化县",
-          "大田县",
-          "尤溪县",
-          "沙县",
-          "将乐县",
-          "泰宁县",
-          "建宁县",
-          "永安市"
-        ]
-      },
-      {
-        "CityID": 112,
-        "name": "南平市",
-        "ProID": 13,
-        "CitySort": 112,
-        "area": [
-          "延平区",
-          "建阳区",
-          "顺昌县",
-          "浦城县",
-          "光泽县",
-          "松溪县",
-          "政和县",
-          "邵武市",
-          "武夷山市",
-          "建瓯市"
+    ProID: 13,
+    name: '福建省',
+    ProSort: 14,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 104,
+        name: '福州市',
+        ProID: 13,
+        CitySort: 104,
+        area: [
+          '鼓楼区',
+          '台江区',
+          '仓山区',
+          '马尾区',
+          '晋安区',
+          '长乐区',
+          '闽侯县',
+          '连江县',
+          '罗源县',
+          '闽清县',
+          '永泰县',
+          '平潭县',
+          '福清市'
+        ]
+      },
+      {
+        CityID: 105,
+        name: '厦门市',
+        ProID: 13,
+        CitySort: 105,
+        area: ['思明区', '海沧区', '湖里区', '集美区', '同安区', '翔安区']
+      },
+      {
+        CityID: 106,
+        name: '宁德市',
+        ProID: 13,
+        CitySort: 106,
+        area: [
+          '蕉城区',
+          '霞浦县',
+          '古田县',
+          '屏南县',
+          '寿宁县',
+          '周宁县',
+          '柘荣县',
+          '福安市',
+          '福鼎市'
+        ]
+      },
+      {
+        CityID: 107,
+        name: '莆田市',
+        ProID: 13,
+        CitySort: 107,
+        area: ['城厢区', '涵江区', '荔城区', '秀屿区', '仙游县']
+      },
+      {
+        CityID: 108,
+        name: '泉州市',
+        ProID: 13,
+        CitySort: 108,
+        area: [
+          '金门县',
+          '鲤城区',
+          '丰泽区',
+          '洛江区',
+          '泉港区',
+          '惠安县',
+          '安溪县',
+          '永春县',
+          '德化县',
+          '石狮市',
+          '晋江市',
+          '南安市'
+        ]
+      },
+      {
+        CityID: 109,
+        name: '漳州市',
+        ProID: 13,
+        CitySort: 109,
+        area: [
+          '芗城区',
+          '龙文区',
+          '云霄县',
+          '漳浦县',
+          '诏安县',
+          '长泰县',
+          '东山县',
+          '南靖县',
+          '平和县',
+          '华安县',
+          '龙海市'
+        ]
+      },
+      {
+        CityID: 110,
+        name: '龙岩市',
+        ProID: 13,
+        CitySort: 110,
+        area: [
+          '新罗区',
+          '永定区',
+          '长汀县',
+          '上杭县',
+          '武平县',
+          '连城县',
+          '漳平市'
+        ]
+      },
+      {
+        CityID: 111,
+        name: '三明市',
+        ProID: 13,
+        CitySort: 111,
+        area: [
+          '梅列区',
+          '三元区',
+          '明溪县',
+          '清流县',
+          '宁化县',
+          '大田县',
+          '尤溪县',
+          '沙县',
+          '将乐县',
+          '泰宁县',
+          '建宁县',
+          '永安市'
+        ]
+      },
+      {
+        CityID: 112,
+        name: '南平市',
+        ProID: 13,
+        CitySort: 112,
+        area: [
+          '延平区',
+          '建阳区',
+          '顺昌县',
+          '浦城县',
+          '光泽县',
+          '松溪县',
+          '政和县',
+          '邵武市',
+          '武夷山市',
+          '建瓯市'
         ]
       }
     ]
   },
   {
-    "ProID": 14,
-    "name": "江西省",
-    "ProSort": 15,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 113,
-        "name": "鹰潭市",
-        "ProID": 14,
-        "CitySort": 113,
-        "area": [
-          "月湖区",
-          "余江区",
-          "贵溪市"
-        ]
-      },
-      {
-        "CityID": 114,
-        "name": "新余市",
-        "ProID": 14,
-        "CitySort": 114,
-        "area": [
-          "渝水区",
-          "分宜县"
-        ]
-      },
-      {
-        "CityID": 115,
-        "name": "南昌市",
-        "ProID": 14,
-        "CitySort": 115,
-        "area": [
-          "东湖区",
-          "西湖区",
-          "青云谱区",
-          "青山湖区",
-          "新建区",
-          "红谷滩区",
-          "南昌县",
-          "安义县",
-          "进贤县"
-        ]
-      },
-      {
-        "CityID": 116,
-        "name": "九江市",
-        "ProID": 14,
-        "CitySort": 116,
-        "area": [
-          "濂溪区",
-          "浔阳区",
-          "柴桑区",
-          "武宁县",
-          "修水县",
-          "永修县",
-          "德安县",
-          "都昌县",
-          "湖口县",
-          "彭泽县",
-          "瑞昌市",
-          "共青城市",
-          "庐山市"
-        ]
-      },
-      {
-        "CityID": 117,
-        "name": "上饶市",
-        "ProID": 14,
-        "CitySort": 117,
-        "area": [
-          "信州区",
-          "广丰区",
-          "广信区",
-          "玉山县",
-          "铅山县",
-          "横峰县",
-          "弋阳县",
-          "余干县",
-          "鄱阳县",
-          "万年县",
-          "婺源县",
-          "德兴市"
-        ]
-      },
-      {
-        "CityID": 118,
-        "name": "抚州市",
-        "ProID": 14,
-        "CitySort": 118,
-        "area": [
-          "临川区",
-          "东乡区",
-          "南城县",
-          "黎川县",
-          "南丰县",
-          "崇仁县",
-          "乐安县",
-          "宜黄县",
-          "金溪县",
-          "资溪县",
-          "广昌县"
-        ]
-      },
-      {
-        "CityID": 119,
-        "name": "宜春市",
-        "ProID": 14,
-        "CitySort": 119,
-        "area": [
-          "袁州区",
-          "奉新县",
-          "万载县",
-          "上高县",
-          "宜丰县",
-          "靖安县",
-          "铜鼓县",
-          "丰城市",
-          "樟树市",
-          "高安市"
-        ]
-      },
-      {
-        "CityID": 120,
-        "name": "吉安市",
-        "ProID": 14,
-        "CitySort": 120,
-        "area": [
-          "吉州区",
-          "青原区",
-          "吉安县",
-          "吉水县",
-          "峡江县",
-          "新干县",
-          "永丰县",
-          "泰和县",
-          "遂川县",
-          "万安县",
-          "安福县",
-          "永新县",
-          "井冈山市"
-        ]
-      },
-      {
-        "CityID": 121,
-        "name": "赣州市",
-        "ProID": 14,
-        "CitySort": 121,
-        "area": [
-          "章贡区",
-          "南康区",
-          "赣县区",
-          "信丰县",
-          "大余县",
-          "上犹县",
-          "崇义县",
-          "安远县",
-          "定南县",
-          "全南县",
-          "宁都县",
-          "于都县",
-          "兴国县",
-          "会昌县",
-          "寻乌县",
-          "石城县",
-          "瑞金市",
-          "龙南市"
-        ]
-      },
-      {
-        "CityID": 122,
-        "name": "景德镇市",
-        "ProID": 14,
-        "CitySort": 122,
-        "area": [
-          "昌江区",
-          "珠山区",
-          "浮梁县",
-          "乐平市"
-        ]
-      },
-      {
-        "CityID": 123,
-        "name": "萍乡市",
-        "ProID": 14,
-        "CitySort": 123,
-        "area": [
-          "安源区",
-          "湘东区",
-          "莲花县",
-          "上栗县",
-          "芦溪县"
-        ]
+    ProID: 14,
+    name: '江西省',
+    ProSort: 15,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 113,
+        name: '鹰潭市',
+        ProID: 14,
+        CitySort: 113,
+        area: ['月湖区', '余江区', '贵溪市']
+      },
+      {
+        CityID: 114,
+        name: '新余市',
+        ProID: 14,
+        CitySort: 114,
+        area: ['渝水区', '分宜县']
+      },
+      {
+        CityID: 115,
+        name: '南昌市',
+        ProID: 14,
+        CitySort: 115,
+        area: [
+          '东湖区',
+          '西湖区',
+          '青云谱区',
+          '青山湖区',
+          '新建区',
+          '红谷滩区',
+          '南昌县',
+          '安义县',
+          '进贤县'
+        ]
+      },
+      {
+        CityID: 116,
+        name: '九江市',
+        ProID: 14,
+        CitySort: 116,
+        area: [
+          '濂溪区',
+          '浔阳区',
+          '柴桑区',
+          '武宁县',
+          '修水县',
+          '永修县',
+          '德安县',
+          '都昌县',
+          '湖口县',
+          '彭泽县',
+          '瑞昌市',
+          '共青城市',
+          '庐山市'
+        ]
+      },
+      {
+        CityID: 117,
+        name: '上饶市',
+        ProID: 14,
+        CitySort: 117,
+        area: [
+          '信州区',
+          '广丰区',
+          '广信区',
+          '玉山县',
+          '铅山县',
+          '横峰县',
+          '弋阳县',
+          '余干县',
+          '鄱阳县',
+          '万年县',
+          '婺源县',
+          '德兴市'
+        ]
+      },
+      {
+        CityID: 118,
+        name: '抚州市',
+        ProID: 14,
+        CitySort: 118,
+        area: [
+          '临川区',
+          '东乡区',
+          '南城县',
+          '黎川县',
+          '南丰县',
+          '崇仁县',
+          '乐安县',
+          '宜黄县',
+          '金溪县',
+          '资溪县',
+          '广昌县'
+        ]
+      },
+      {
+        CityID: 119,
+        name: '宜春市',
+        ProID: 14,
+        CitySort: 119,
+        area: [
+          '袁州区',
+          '奉新县',
+          '万载县',
+          '上高县',
+          '宜丰县',
+          '靖安县',
+          '铜鼓县',
+          '丰城市',
+          '樟树市',
+          '高安市'
+        ]
+      },
+      {
+        CityID: 120,
+        name: '吉安市',
+        ProID: 14,
+        CitySort: 120,
+        area: [
+          '吉州区',
+          '青原区',
+          '吉安县',
+          '吉水县',
+          '峡江县',
+          '新干县',
+          '永丰县',
+          '泰和县',
+          '遂川县',
+          '万安县',
+          '安福县',
+          '永新县',
+          '井冈山市'
+        ]
+      },
+      {
+        CityID: 121,
+        name: '赣州市',
+        ProID: 14,
+        CitySort: 121,
+        area: [
+          '章贡区',
+          '南康区',
+          '赣县区',
+          '信丰县',
+          '大余县',
+          '上犹县',
+          '崇义县',
+          '安远县',
+          '定南县',
+          '全南县',
+          '宁都县',
+          '于都县',
+          '兴国县',
+          '会昌县',
+          '寻乌县',
+          '石城县',
+          '瑞金市',
+          '龙南市'
+        ]
+      },
+      {
+        CityID: 122,
+        name: '景德镇市',
+        ProID: 14,
+        CitySort: 122,
+        area: ['昌江区', '珠山区', '浮梁县', '乐平市']
+      },
+      {
+        CityID: 123,
+        name: '萍乡市',
+        ProID: 14,
+        CitySort: 123,
+        area: ['安源区', '湘东区', '莲花县', '上栗县', '芦溪县']
       }
     ]
   },
   {
-    "ProID": 15,
-    "name": "山东省",
-    "ProSort": 16,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 124,
-        "name": "菏泽市",
-        "ProID": 15,
-        "CitySort": 124,
-        "area": [
-          "牡丹区",
-          "定陶区",
-          "曹县",
-          "单县",
-          "成武县",
-          "巨野县",
-          "郓城县",
-          "鄄城县",
-          "东明县",
-          "菏泽经济技术开发区",
-          "菏泽高新技术开发区"
-        ]
-      },
-      {
-        "CityID": 125,
-        "name": "济南市",
-        "ProID": 15,
-        "CitySort": 125,
-        "area": [
-          "历下区",
-          "市中区",
-          "槐荫区",
-          "天桥区",
-          "历城区",
-          "长清区",
-          "章丘区",
-          "济阳区",
-          "莱芜区",
-          "钢城区",
-          "平阴县",
-          "商河县",
-          "济南高新技术产业开发区"
-        ]
-      },
-      {
-        "CityID": 126,
-        "name": "青岛市",
-        "ProID": 15,
-        "CitySort": 126,
-        "area": [
-          "市南区",
-          "市北区",
-          "黄岛区",
-          "崂山区",
-          "李沧区",
-          "城阳区",
-          "即墨区",
-          "青岛高新技术产业开发区",
-          "胶州市",
-          "平度市",
-          "莱西市"
-        ]
-      },
-      {
-        "CityID": 127,
-        "name": "淄博市",
-        "ProID": 15,
-        "CitySort": 127,
-        "area": [
-          "淄川区",
-          "张店区",
-          "博山区",
-          "临淄区",
-          "周村区",
-          "桓台县",
-          "高青县",
-          "沂源县"
-        ]
-      },
-      {
-        "CityID": 128,
-        "name": "德州市",
-        "ProID": 15,
-        "CitySort": 128,
-        "area": [
-          "德城区",
-          "陵城区",
-          "宁津县",
-          "庆云县",
-          "临邑县",
-          "齐河县",
-          "平原县",
-          "夏津县",
-          "武城县",
-          "德州经济技术开发区",
-          "德州运河经济开发区",
-          "乐陵市",
-          "禹城市"
-        ]
-      },
-      {
-        "CityID": 129,
-        "name": "烟台市",
-        "ProID": 15,
-        "CitySort": 129,
-        "area": [
-          "芝罘区",
-          "福山区",
-          "牟平区",
-          "莱山区",
-          "蓬莱区",
-          "烟台高新技术产业开发区",
-          "烟台经济技术开发区",
-          "龙口市",
-          "莱阳市",
-          "莱州市",
-          "招远市",
-          "栖霞市",
-          "海阳市"
-        ]
-      },
-      {
-        "CityID": 130,
-        "name": "潍坊市",
-        "ProID": 15,
-        "CitySort": 130,
-        "area": [
-          "潍城区",
-          "寒亭区",
-          "坊子区",
-          "奎文区",
-          "临朐县",
-          "昌乐县",
-          "潍坊滨海经济技术开发区",
-          "青州市",
-          "诸城市",
-          "寿光市",
-          "安丘市",
-          "高密市",
-          "昌邑市"
-        ]
-      },
-      {
-        "CityID": 131,
-        "name": "济宁市",
-        "ProID": 15,
-        "CitySort": 131,
-        "area": [
-          "任城区",
-          "兖州区",
-          "微山县",
-          "鱼台县",
-          "金乡县",
-          "嘉祥县",
-          "汶上县",
-          "泗水县",
-          "梁山县",
-          "济宁高新技术产业开发区",
-          "曲阜市",
-          "邹城市"
-        ]
-      },
-      {
-        "CityID": 132,
-        "name": "泰安市",
-        "ProID": 15,
-        "CitySort": 132,
-        "area": [
-          "泰山区",
-          "岱岳区",
-          "宁阳县",
-          "东平县",
-          "新泰市",
-          "肥城市"
-        ]
-      },
-      {
-        "CityID": 133,
-        "name": "临沂市",
-        "ProID": 15,
-        "CitySort": 133,
-        "area": [
-          "兰山区",
-          "罗庄区",
-          "河东区",
-          "沂南县",
-          "郯城县",
-          "沂水县",
-          "兰陵县",
-          "费县",
-          "平邑县",
-          "莒南县",
-          "蒙阴县",
-          "临沭县",
-          "临沂高新技术产业开发区"
-        ]
-      },
-      {
-        "CityID": 134,
-        "name": "滨州市",
-        "ProID": 15,
-        "CitySort": 134,
-        "area": [
-          "滨城区",
-          "沾化区",
-          "惠民县",
-          "阳信县",
-          "无棣县",
-          "博兴县",
-          "邹平市"
-        ]
-      },
-      {
-        "CityID": 135,
-        "name": "东营市",
-        "ProID": 15,
-        "CitySort": 135,
-        "area": [
-          "东营区",
-          "河口区",
-          "垦利区",
-          "利津县",
-          "广饶县",
-          "东营经济技术开发区",
-          "东营港经济开发区"
-        ]
-      },
-      {
-        "CityID": 136,
-        "name": "威海市",
-        "ProID": 15,
-        "CitySort": 136,
-        "area": [
-          "环翠区",
-          "文登区",
-          "威海火炬高技术产业开发区",
-          "威海经济技术开发区",
-          "威海临港经济技术开发区",
-          "荣成市",
-          "乳山市"
-        ]
-      },
-      {
-        "CityID": 137,
-        "name": "枣庄市",
-        "ProID": 15,
-        "CitySort": 137,
-        "area": [
-          "市中区",
-          "薛城区",
-          "峄城区",
-          "台儿庄区",
-          "山亭区",
-          "滕州市"
-        ]
-      },
-      {
-        "CityID": 138,
-        "name": "日照市",
-        "ProID": 15,
-        "CitySort": 138,
-        "area": [
-          "东港区",
-          "岚山区",
-          "五莲县",
-          "莒县",
-          "日照经济技术开发区"
-        ]
-      },
-      {
-        "CityID": 140,
-        "name": "聊城市",
-        "ProID": 15,
-        "CitySort": 140,
-        "area": [
-          "东昌府区",
-          "茌平区",
-          "阳谷县",
-          "莘县",
-          "东阿县",
-          "冠县",
-          "高唐县",
-          "临清市"
+    ProID: 15,
+    name: '山东省',
+    ProSort: 16,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 124,
+        name: '菏泽市',
+        ProID: 15,
+        CitySort: 124,
+        area: [
+          '牡丹区',
+          '定陶区',
+          '曹县',
+          '单县',
+          '成武县',
+          '巨野县',
+          '郓城县',
+          '鄄城县',
+          '东明县',
+          '菏泽经济技术开发区',
+          '菏泽高新技术开发区'
+        ]
+      },
+      {
+        CityID: 125,
+        name: '济南市',
+        ProID: 15,
+        CitySort: 125,
+        area: [
+          '历下区',
+          '市中区',
+          '槐荫区',
+          '天桥区',
+          '历城区',
+          '长清区',
+          '章丘区',
+          '济阳区',
+          '莱芜区',
+          '钢城区',
+          '平阴县',
+          '商河县',
+          '济南高新技术产业开发区'
+        ]
+      },
+      {
+        CityID: 126,
+        name: '青岛市',
+        ProID: 15,
+        CitySort: 126,
+        area: [
+          '市南区',
+          '市北区',
+          '黄岛区',
+          '崂山区',
+          '李沧区',
+          '城阳区',
+          '即墨区',
+          '青岛高新技术产业开发区',
+          '胶州市',
+          '平度市',
+          '莱西市'
+        ]
+      },
+      {
+        CityID: 127,
+        name: '淄博市',
+        ProID: 15,
+        CitySort: 127,
+        area: [
+          '淄川区',
+          '张店区',
+          '博山区',
+          '临淄区',
+          '周村区',
+          '桓台县',
+          '高青县',
+          '沂源县'
+        ]
+      },
+      {
+        CityID: 128,
+        name: '德州市',
+        ProID: 15,
+        CitySort: 128,
+        area: [
+          '德城区',
+          '陵城区',
+          '宁津县',
+          '庆云县',
+          '临邑县',
+          '齐河县',
+          '平原县',
+          '夏津县',
+          '武城县',
+          '德州经济技术开发区',
+          '德州运河经济开发区',
+          '乐陵市',
+          '禹城市'
+        ]
+      },
+      {
+        CityID: 129,
+        name: '烟台市',
+        ProID: 15,
+        CitySort: 129,
+        area: [
+          '芝罘区',
+          '福山区',
+          '牟平区',
+          '莱山区',
+          '蓬莱区',
+          '烟台高新技术产业开发区',
+          '烟台经济技术开发区',
+          '龙口市',
+          '莱阳市',
+          '莱州市',
+          '招远市',
+          '栖霞市',
+          '海阳市'
+        ]
+      },
+      {
+        CityID: 130,
+        name: '潍坊市',
+        ProID: 15,
+        CitySort: 130,
+        area: [
+          '潍城区',
+          '寒亭区',
+          '坊子区',
+          '奎文区',
+          '临朐县',
+          '昌乐县',
+          '潍坊滨海经济技术开发区',
+          '青州市',
+          '诸城市',
+          '寿光市',
+          '安丘市',
+          '高密市',
+          '昌邑市'
+        ]
+      },
+      {
+        CityID: 131,
+        name: '济宁市',
+        ProID: 15,
+        CitySort: 131,
+        area: [
+          '任城区',
+          '兖州区',
+          '微山县',
+          '鱼台县',
+          '金乡县',
+          '嘉祥县',
+          '汶上县',
+          '泗水县',
+          '梁山县',
+          '济宁高新技术产业开发区',
+          '曲阜市',
+          '邹城市'
+        ]
+      },
+      {
+        CityID: 132,
+        name: '泰安市',
+        ProID: 15,
+        CitySort: 132,
+        area: ['泰山区', '岱岳区', '宁阳县', '东平县', '新泰市', '肥城市']
+      },
+      {
+        CityID: 133,
+        name: '临沂市',
+        ProID: 15,
+        CitySort: 133,
+        area: [
+          '兰山区',
+          '罗庄区',
+          '河东区',
+          '沂南县',
+          '郯城县',
+          '沂水县',
+          '兰陵县',
+          '费县',
+          '平邑县',
+          '莒南县',
+          '蒙阴县',
+          '临沭县',
+          '临沂高新技术产业开发区'
+        ]
+      },
+      {
+        CityID: 134,
+        name: '滨州市',
+        ProID: 15,
+        CitySort: 134,
+        area: [
+          '滨城区',
+          '沾化区',
+          '惠民县',
+          '阳信县',
+          '无棣县',
+          '博兴县',
+          '邹平市'
+        ]
+      },
+      {
+        CityID: 135,
+        name: '东营市',
+        ProID: 15,
+        CitySort: 135,
+        area: [
+          '东营区',
+          '河口区',
+          '垦利区',
+          '利津县',
+          '广饶县',
+          '东营经济技术开发区',
+          '东营港经济开发区'
+        ]
+      },
+      {
+        CityID: 136,
+        name: '威海市',
+        ProID: 15,
+        CitySort: 136,
+        area: [
+          '环翠区',
+          '文登区',
+          '威海火炬高技术产业开发区',
+          '威海经济技术开发区',
+          '威海临港经济技术开发区',
+          '荣成市',
+          '乳山市'
+        ]
+      },
+      {
+        CityID: 137,
+        name: '枣庄市',
+        ProID: 15,
+        CitySort: 137,
+        area: ['市中区', '薛城区', '峄城区', '台儿庄区', '山亭区', '滕州市']
+      },
+      {
+        CityID: 138,
+        name: '日照市',
+        ProID: 15,
+        CitySort: 138,
+        area: ['东港区', '岚山区', '五莲县', '莒县', '日照经济技术开发区']
+      },
+      {
+        CityID: 140,
+        name: '聊城市',
+        ProID: 15,
+        CitySort: 140,
+        area: [
+          '东昌府区',
+          '茌平区',
+          '阳谷县',
+          '莘县',
+          '东阿县',
+          '冠县',
+          '高唐县',
+          '临清市'
         ]
       }
     ]
   },
   {
-    "ProID": 16,
-    "name": "河南省",
-    "ProSort": 17,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 141,
-        "name": "商丘市",
-        "ProID": 16,
-        "CitySort": 141,
-        "area": [
-          "梁园区",
-          "睢阳区",
-          "民权县",
-          "睢县",
-          "宁陵县",
-          "柘城县",
-          "虞城县",
-          "夏邑县",
-          "豫东综合物流产业聚集区",
-          "河南商丘经济开发区",
-          "永城市"
-        ]
-      },
-      {
-        "CityID": 142,
-        "name": "郑州市",
-        "ProID": 16,
-        "CitySort": 142,
-        "area": [
-          "中原区",
-          "二七区",
-          "管城回族区",
-          "金水区",
-          "上街区",
-          "惠济区",
-          "中牟县",
-          "郑州经济技术开发区",
-          "郑州高新技术产业开发区",
-          "郑州航空港经济综合实验区",
-          "巩义市",
-          "荥阳市",
-          "新密市",
-          "新郑市",
-          "登封市"
-        ]
-      },
-      {
-        "CityID": 143,
-        "name": "安阳市",
-        "ProID": 16,
-        "CitySort": 143,
-        "area": [
-          "文峰区",
-          "北关区",
-          "殷都区",
-          "龙安区",
-          "安阳县",
-          "汤阴县",
-          "滑县",
-          "内黄县",
-          "安阳高新技术产业开发区",
-          "林州市"
-        ]
-      },
-      {
-        "CityID": 144,
-        "name": "新乡市",
-        "ProID": 16,
-        "CitySort": 144,
-        "area": [
-          "红旗区",
-          "卫滨区",
-          "凤泉区",
-          "牧野区",
-          "新乡县",
-          "获嘉县",
-          "原阳县",
-          "延津县",
-          "封丘县",
-          "新乡高新技术产业开发区",
-          "新乡经济技术开发区",
-          "新乡市平原城乡一体化示范区",
-          "卫辉市",
-          "辉县市",
-          "长垣市"
-        ]
-      },
-      {
-        "CityID": 145,
-        "name": "许昌市",
-        "ProID": 16,
-        "CitySort": 145,
-        "area": [
-          "魏都区",
-          "建安区",
-          "鄢陵县",
-          "襄城县",
-          "许昌经济技术开发区",
-          "禹州市",
-          "长葛市"
-        ]
-      },
-      {
-        "CityID": 146,
-        "name": "平顶山市",
-        "ProID": 16,
-        "CitySort": 146,
-        "area": [
-          "新华区",
-          "卫东区",
-          "石龙区",
-          "湛河区",
-          "宝丰县",
-          "叶县",
-          "鲁山县",
-          "郏县",
-          "平顶山高新技术产业开发区",
-          "平顶山市城乡一体化示范区",
-          "舞钢市",
-          "汝州市"
-        ]
-      },
-      {
-        "CityID": 147,
-        "name": "信阳市",
-        "ProID": 16,
-        "CitySort": 147,
-        "area": [
-          "浉河区",
-          "平桥区",
-          "罗山县",
-          "光山县",
-          "新县",
-          "商城县",
-          "固始县",
-          "潢川县",
-          "淮滨县",
-          "息县",
-          "信阳高新技术产业开发区"
-        ]
-      },
-      {
-        "CityID": 148,
-        "name": "南阳市",
-        "ProID": 16,
-        "CitySort": 148,
-        "area": [
-          "宛城区",
-          "卧龙区",
-          "南召县",
-          "方城县",
-          "西峡县",
-          "镇平县",
-          "内乡县",
-          "淅川县",
-          "社旗县",
-          "唐河县",
-          "新野县",
-          "桐柏县",
-          "南阳高新技术产业开发区",
-          "南阳市城乡一体化示范区",
-          "邓州市"
-        ]
-      },
-      {
-        "CityID": 149,
-        "name": "开封市",
-        "ProID": 16,
-        "CitySort": 149,
-        "area": [
-          "龙亭区",
-          "顺河回族区",
-          "鼓楼区",
-          "禹王台区",
-          "祥符区",
-          "杞县",
-          "通许县",
-          "尉氏县",
-          "兰考县"
-        ]
-      },
-      {
-        "CityID": 150,
-        "name": "洛阳市",
-        "ProID": 16,
-        "CitySort": 150,
-        "area": [
-          "老城区",
-          "西工区",
-          "瀍河回族区",
-          "涧西区",
-          "吉利区",
-          "洛龙区",
-          "孟津县",
-          "新安县",
-          "栾川县",
-          "嵩县",
-          "汝阳县",
-          "宜阳县",
-          "洛宁县",
-          "伊川县",
-          "洛阳高新技术产业开发区",
-          "偃师市"
-        ]
-      },
-      {
-        "CityID": 151,
-        "name": "济源市",
-        "ProID": 16,
-        "CitySort": 151,
-        "area": []
-      },
-      {
-        "CityID": 152,
-        "name": "焦作市",
-        "ProID": 16,
-        "CitySort": 152,
-        "area": [
-          "解放区",
-          "中站区",
-          "马村区",
-          "山阳区",
-          "修武县",
-          "博爱县",
-          "武陟县",
-          "温县",
-          "焦作城乡一体化示范区",
-          "沁阳市",
-          "孟州市"
-        ]
-      },
-      {
-        "CityID": 153,
-        "name": "鹤壁市",
-        "ProID": 16,
-        "CitySort": 153,
-        "area": [
-          "鹤山区",
-          "山城区",
-          "淇滨区",
-          "浚县",
-          "淇县",
-          "鹤壁经济技术开发区"
-        ]
-      },
-      {
-        "CityID": 154,
-        "name": "濮阳市",
-        "ProID": 16,
-        "CitySort": 154,
-        "area": [
-          "华龙区",
-          "清丰县",
-          "南乐县",
-          "范县",
-          "台前县",
-          "濮阳县",
-          "河南濮阳工业园区",
-          "濮阳经济技术开发区"
-        ]
-      },
-      {
-        "CityID": 155,
-        "name": "周口市",
-        "ProID": 16,
-        "CitySort": 155,
-        "area": [
-          "川汇区",
-          "淮阳区",
-          "扶沟县",
-          "西华县",
-          "商水县",
-          "沈丘县",
-          "郸城县",
-          "太康县",
-          "鹿邑县",
-          "河南周口经济开发区",
-          "项城市"
-        ]
-      },
-      {
-        "CityID": 156,
-        "name": "漯河市",
-        "ProID": 16,
-        "CitySort": 156,
-        "area": [
-          "源汇区",
-          "郾城区",
-          "召陵区",
-          "舞阳县",
-          "临颍县",
-          "漯河经济技术开发区"
-        ]
-      },
-      {
-        "CityID": 157,
-        "name": "驻马店市",
-        "ProID": 16,
-        "CitySort": 157,
-        "area": [
-          "驿城区",
-          "西平县",
-          "上蔡县",
-          "平舆县",
-          "正阳县",
-          "确山县",
-          "泌阳县",
-          "汝南县",
-          "遂平县",
-          "新蔡县",
-          "河南驻马店经济开发区"
-        ]
-      },
-      {
-        "CityID": 158,
-        "name": "三门峡市",
-        "ProID": 16,
-        "CitySort": 158,
-        "area": [
-          "湖滨区",
-          "陕州区",
-          "渑池县",
-          "卢氏县",
-          "河南三门峡经济开发区",
-          "义马市",
-          "灵宝市"
+    ProID: 16,
+    name: '河南省',
+    ProSort: 17,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 141,
+        name: '商丘市',
+        ProID: 16,
+        CitySort: 141,
+        area: [
+          '梁园区',
+          '睢阳区',
+          '民权县',
+          '睢县',
+          '宁陵县',
+          '柘城县',
+          '虞城县',
+          '夏邑县',
+          '豫东综合物流产业聚集区',
+          '河南商丘经济开发区',
+          '永城市'
+        ]
+      },
+      {
+        CityID: 142,
+        name: '郑州市',
+        ProID: 16,
+        CitySort: 142,
+        area: [
+          '中原区',
+          '二七区',
+          '管城回族区',
+          '金水区',
+          '上街区',
+          '惠济区',
+          '中牟县',
+          '郑州经济技术开发区',
+          '郑州高新技术产业开发区',
+          '郑州航空港经济综合实验区',
+          '巩义市',
+          '荥阳市',
+          '新密市',
+          '新郑市',
+          '登封市'
+        ]
+      },
+      {
+        CityID: 143,
+        name: '安阳市',
+        ProID: 16,
+        CitySort: 143,
+        area: [
+          '文峰区',
+          '北关区',
+          '殷都区',
+          '龙安区',
+          '安阳县',
+          '汤阴县',
+          '滑县',
+          '内黄县',
+          '安阳高新技术产业开发区',
+          '林州市'
+        ]
+      },
+      {
+        CityID: 144,
+        name: '新乡市',
+        ProID: 16,
+        CitySort: 144,
+        area: [
+          '红旗区',
+          '卫滨区',
+          '凤泉区',
+          '牧野区',
+          '新乡县',
+          '获嘉县',
+          '原阳县',
+          '延津县',
+          '封丘县',
+          '新乡高新技术产业开发区',
+          '新乡经济技术开发区',
+          '新乡市平原城乡一体化示范区',
+          '卫辉市',
+          '辉县市',
+          '长垣市'
+        ]
+      },
+      {
+        CityID: 145,
+        name: '许昌市',
+        ProID: 16,
+        CitySort: 145,
+        area: [
+          '魏都区',
+          '建安区',
+          '鄢陵县',
+          '襄城县',
+          '许昌经济技术开发区',
+          '禹州市',
+          '长葛市'
+        ]
+      },
+      {
+        CityID: 146,
+        name: '平顶山市',
+        ProID: 16,
+        CitySort: 146,
+        area: [
+          '新华区',
+          '卫东区',
+          '石龙区',
+          '湛河区',
+          '宝丰县',
+          '叶县',
+          '鲁山县',
+          '郏县',
+          '平顶山高新技术产业开发区',
+          '平顶山市城乡一体化示范区',
+          '舞钢市',
+          '汝州市'
+        ]
+      },
+      {
+        CityID: 147,
+        name: '信阳市',
+        ProID: 16,
+        CitySort: 147,
+        area: [
+          '浉河区',
+          '平桥区',
+          '罗山县',
+          '光山县',
+          '新县',
+          '商城县',
+          '固始县',
+          '潢川县',
+          '淮滨县',
+          '息县',
+          '信阳高新技术产业开发区'
+        ]
+      },
+      {
+        CityID: 148,
+        name: '南阳市',
+        ProID: 16,
+        CitySort: 148,
+        area: [
+          '宛城区',
+          '卧龙区',
+          '南召县',
+          '方城县',
+          '西峡县',
+          '镇平县',
+          '内乡县',
+          '淅川县',
+          '社旗县',
+          '唐河县',
+          '新野县',
+          '桐柏县',
+          '南阳高新技术产业开发区',
+          '南阳市城乡一体化示范区',
+          '邓州市'
+        ]
+      },
+      {
+        CityID: 149,
+        name: '开封市',
+        ProID: 16,
+        CitySort: 149,
+        area: [
+          '龙亭区',
+          '顺河回族区',
+          '鼓楼区',
+          '禹王台区',
+          '祥符区',
+          '杞县',
+          '通许县',
+          '尉氏县',
+          '兰考县'
+        ]
+      },
+      {
+        CityID: 150,
+        name: '洛阳市',
+        ProID: 16,
+        CitySort: 150,
+        area: [
+          '老城区',
+          '西工区',
+          '瀍河回族区',
+          '涧西区',
+          '吉利区',
+          '洛龙区',
+          '孟津县',
+          '新安县',
+          '栾川县',
+          '嵩县',
+          '汝阳县',
+          '宜阳县',
+          '洛宁县',
+          '伊川县',
+          '洛阳高新技术产业开发区',
+          '偃师市'
+        ]
+      },
+      {
+        CityID: 151,
+        name: '济源市',
+        ProID: 16,
+        CitySort: 151,
+        area: []
+      },
+      {
+        CityID: 152,
+        name: '焦作市',
+        ProID: 16,
+        CitySort: 152,
+        area: [
+          '解放区',
+          '中站区',
+          '马村区',
+          '山阳区',
+          '修武县',
+          '博爱县',
+          '武陟县',
+          '温县',
+          '焦作城乡一体化示范区',
+          '沁阳市',
+          '孟州市'
+        ]
+      },
+      {
+        CityID: 153,
+        name: '鹤壁市',
+        ProID: 16,
+        CitySort: 153,
+        area: [
+          '鹤山区',
+          '山城区',
+          '淇滨区',
+          '浚县',
+          '淇县',
+          '鹤壁经济技术开发区'
+        ]
+      },
+      {
+        CityID: 154,
+        name: '濮阳市',
+        ProID: 16,
+        CitySort: 154,
+        area: [
+          '华龙区',
+          '清丰县',
+          '南乐县',
+          '范县',
+          '台前县',
+          '濮阳县',
+          '河南濮阳工业园区',
+          '濮阳经济技术开发区'
+        ]
+      },
+      {
+        CityID: 155,
+        name: '周口市',
+        ProID: 16,
+        CitySort: 155,
+        area: [
+          '川汇区',
+          '淮阳区',
+          '扶沟县',
+          '西华县',
+          '商水县',
+          '沈丘县',
+          '郸城县',
+          '太康县',
+          '鹿邑县',
+          '河南周口经济开发区',
+          '项城市'
+        ]
+      },
+      {
+        CityID: 156,
+        name: '漯河市',
+        ProID: 16,
+        CitySort: 156,
+        area: [
+          '源汇区',
+          '郾城区',
+          '召陵区',
+          '舞阳县',
+          '临颍县',
+          '漯河经济技术开发区'
+        ]
+      },
+      {
+        CityID: 157,
+        name: '驻马店市',
+        ProID: 16,
+        CitySort: 157,
+        area: [
+          '驿城区',
+          '西平县',
+          '上蔡县',
+          '平舆县',
+          '正阳县',
+          '确山县',
+          '泌阳县',
+          '汝南县',
+          '遂平县',
+          '新蔡县',
+          '河南驻马店经济开发区'
+        ]
+      },
+      {
+        CityID: 158,
+        name: '三门峡市',
+        ProID: 16,
+        CitySort: 158,
+        area: [
+          '湖滨区',
+          '陕州区',
+          '渑池县',
+          '卢氏县',
+          '河南三门峡经济开发区',
+          '义马市',
+          '灵宝市'
         ]
       }
     ]
   },
   {
-    "ProID": 17,
-    "name": "湖北省",
-    "ProSort": 18,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 159,
-        "name": "武汉市",
-        "ProID": 17,
-        "CitySort": 159,
-        "area": [
-          "江岸区",
-          "江汉区",
-          "硚口区",
-          "汉阳区",
-          "武昌区",
-          "青山区",
-          "洪山区",
-          "东西湖区",
-          "汉南区",
-          "蔡甸区",
-          "江夏区",
-          "黄陂区",
-          "新洲区"
-        ]
-      },
-      {
-        "CityID": 160,
-        "name": "襄阳市",
-        "ProID": 17,
-        "CitySort": 160,
-        "area": [
-          "枣阳市",
-          "宜城市",
-          "襄城区",
-          "樊城区",
-          "襄州区",
-          "南漳县",
-          "谷城县",
-          "保康县",
-          "老河口市"
-        ]
-      },
-      {
-        "CityID": 161,
-        "name": "鄂州市",
-        "ProID": 17,
-        "CitySort": 161,
-        "area": [
-          "梁子湖区",
-          "华容区",
-          "鄂城区"
-        ]
-      },
-      {
-        "CityID": 162,
-        "name": "孝感市",
-        "ProID": 17,
-        "CitySort": 162,
-        "area": [
-          "孝南区",
-          "孝昌县",
-          "大悟县",
-          "云梦县",
-          "应城市",
-          "安陆市",
-          "汉川市"
-        ]
-      },
-      {
-        "CityID": 163,
-        "name": "黄冈市",
-        "ProID": 17,
-        "CitySort": 163,
-        "area": [
-          "黄州区",
-          "团风县",
-          "红安县",
-          "罗田县",
-          "英山县",
-          "浠水县",
-          "蕲春县",
-          "黄梅县",
-          "龙感湖管理区",
-          "麻城市",
-          "武穴市"
-        ]
-      },
-      {
-        "CityID": 164,
-        "name": "黄石市",
-        "ProID": 17,
-        "CitySort": 164,
-        "area": [
-          "黄石港区",
-          "西塞山区",
-          "下陆区",
-          "铁山区",
-          "阳新县",
-          "大冶市"
-        ]
-      },
-      {
-        "CityID": 165,
-        "name": "咸宁市",
-        "ProID": 17,
-        "CitySort": 165,
-        "area": [
-          "咸安区",
-          "嘉鱼县",
-          "通城县",
-          "崇阳县",
-          "通山县",
-          "赤壁市"
-        ]
-      },
-      {
-        "CityID": 166,
-        "name": "荆州市",
-        "ProID": 17,
-        "CitySort": 166,
-        "area": [
-          "沙市区",
-          "荆州区",
-          "公安县",
-          "监利县",
-          "江陵县",
-          "荆州经济技术开发区",
-          "石首市",
-          "洪湖市",
-          "松滋市"
-        ]
-      },
-      {
-        "CityID": 167,
-        "name": "宜昌市",
-        "ProID": 17,
-        "CitySort": 167,
-        "area": [
-          "西陵区",
-          "伍家岗区",
-          "点军区",
-          "猇亭区",
-          "夷陵区",
-          "远安县",
-          "兴山县",
-          "秭归县",
-          "长阳土家族自治县",
-          "五峰土家族自治县",
-          "宜都市",
-          "当阳市",
-          "枝江市"
-        ]
-      },
-      {
-        "CityID": 168,
-        "name": "恩施土家族苗族自治州",
-        "ProID": 17,
-        "CitySort": 168,
-        "area": [
-          "恩施市",
-          "利川市",
-          "建始县",
-          "巴东县",
-          "宣恩县",
-          "咸丰县",
-          "来凤县",
-          "鹤峰县"
-        ]
-      },
-      {
-        "CityID": 169,
-        "name": "神农架林区",
-        "ProID": 17,
-        "CitySort": 169,
-        "area": []
-      },
-      {
-        "CityID": 170,
-        "name": "十堰市",
-        "ProID": 17,
-        "CitySort": 170,
-        "area": [
-          "茅箭区",
-          "张湾区",
-          "郧阳区",
-          "郧西县",
-          "竹山县",
-          "竹溪县",
-          "房县",
-          "丹江口市"
-        ]
-      },
-      {
-        "CityID": 171,
-        "name": "随州市",
-        "ProID": 17,
-        "CitySort": 171,
-        "area": [
-          "曾都区",
-          "随县",
-          "广水市"
-        ]
-      },
-      {
-        "CityID": 172,
-        "name": "荆门市",
-        "ProID": 17,
-        "CitySort": 172,
-        "area": [
-          "东宝区",
-          "掇刀区",
-          "沙洋县",
-          "钟祥市",
-          "京山市"
-        ]
-      },
-      {
-        "CityID": 173,
-        "name": "仙桃市",
-        "ProID": 17,
-        "CitySort": 173,
-        "area": []
-      },
-      {
-        "CityID": 174,
-        "name": "天门市",
-        "ProID": 17,
-        "CitySort": 174,
-        "area": []
-      },
-      {
-        "CityID": 175,
-        "name": "潜江市",
-        "ProID": 17,
-        "CitySort": 175,
-        "area": []
+    ProID: 17,
+    name: '湖北省',
+    ProSort: 18,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 159,
+        name: '武汉市',
+        ProID: 17,
+        CitySort: 159,
+        area: [
+          '江岸区',
+          '江汉区',
+          '硚口区',
+          '汉阳区',
+          '武昌区',
+          '青山区',
+          '洪山区',
+          '东西湖区',
+          '汉南区',
+          '蔡甸区',
+          '江夏区',
+          '黄陂区',
+          '新洲区'
+        ]
+      },
+      {
+        CityID: 160,
+        name: '襄阳市',
+        ProID: 17,
+        CitySort: 160,
+        area: [
+          '枣阳市',
+          '宜城市',
+          '襄城区',
+          '樊城区',
+          '襄州区',
+          '南漳县',
+          '谷城县',
+          '保康县',
+          '老河口市'
+        ]
+      },
+      {
+        CityID: 161,
+        name: '鄂州市',
+        ProID: 17,
+        CitySort: 161,
+        area: ['梁子湖区', '华容区', '鄂城区']
+      },
+      {
+        CityID: 162,
+        name: '孝感市',
+        ProID: 17,
+        CitySort: 162,
+        area: [
+          '孝南区',
+          '孝昌县',
+          '大悟县',
+          '云梦县',
+          '应城市',
+          '安陆市',
+          '汉川市'
+        ]
+      },
+      {
+        CityID: 163,
+        name: '黄冈市',
+        ProID: 17,
+        CitySort: 163,
+        area: [
+          '黄州区',
+          '团风县',
+          '红安县',
+          '罗田县',
+          '英山县',
+          '浠水县',
+          '蕲春县',
+          '黄梅县',
+          '龙感湖管理区',
+          '麻城市',
+          '武穴市'
+        ]
+      },
+      {
+        CityID: 164,
+        name: '黄石市',
+        ProID: 17,
+        CitySort: 164,
+        area: ['黄石港区', '西塞山区', '下陆区', '铁山区', '阳新县', '大冶市']
+      },
+      {
+        CityID: 165,
+        name: '咸宁市',
+        ProID: 17,
+        CitySort: 165,
+        area: ['咸安区', '嘉鱼县', '通城县', '崇阳县', '通山县', '赤壁市']
+      },
+      {
+        CityID: 166,
+        name: '荆州市',
+        ProID: 17,
+        CitySort: 166,
+        area: [
+          '沙市区',
+          '荆州区',
+          '公安县',
+          '监利县',
+          '江陵县',
+          '荆州经济技术开发区',
+          '石首市',
+          '洪湖市',
+          '松滋市'
+        ]
+      },
+      {
+        CityID: 167,
+        name: '宜昌市',
+        ProID: 17,
+        CitySort: 167,
+        area: [
+          '西陵区',
+          '伍家岗区',
+          '点军区',
+          '猇亭区',
+          '夷陵区',
+          '远安县',
+          '兴山县',
+          '秭归县',
+          '长阳土家族自治县',
+          '五峰土家族自治县',
+          '宜都市',
+          '当阳市',
+          '枝江市'
+        ]
+      },
+      {
+        CityID: 168,
+        name: '恩施土家族苗族自治州',
+        ProID: 17,
+        CitySort: 168,
+        area: [
+          '恩施市',
+          '利川市',
+          '建始县',
+          '巴东县',
+          '宣恩县',
+          '咸丰县',
+          '来凤县',
+          '鹤峰县'
+        ]
+      },
+      {
+        CityID: 169,
+        name: '神农架林区',
+        ProID: 17,
+        CitySort: 169,
+        area: []
+      },
+      {
+        CityID: 170,
+        name: '十堰市',
+        ProID: 17,
+        CitySort: 170,
+        area: [
+          '茅箭区',
+          '张湾区',
+          '郧阳区',
+          '郧西县',
+          '竹山县',
+          '竹溪县',
+          '房县',
+          '丹江口市'
+        ]
+      },
+      {
+        CityID: 171,
+        name: '随州市',
+        ProID: 17,
+        CitySort: 171,
+        area: ['曾都区', '随县', '广水市']
+      },
+      {
+        CityID: 172,
+        name: '荆门市',
+        ProID: 17,
+        CitySort: 172,
+        area: ['东宝区', '掇刀区', '沙洋县', '钟祥市', '京山市']
+      },
+      {
+        CityID: 173,
+        name: '仙桃市',
+        ProID: 17,
+        CitySort: 173,
+        area: []
+      },
+      {
+        CityID: 174,
+        name: '天门市',
+        ProID: 17,
+        CitySort: 174,
+        area: []
+      },
+      {
+        CityID: 175,
+        name: '潜江市',
+        ProID: 17,
+        CitySort: 175,
+        area: []
       }
     ]
   },
   {
-    "ProID": 18,
-    "name": "湖南省",
-    "ProSort": 19,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 176,
-        "name": "岳阳市",
-        "ProID": 18,
-        "CitySort": 176,
-        "area": [
-          "岳阳楼区",
-          "云溪区",
-          "君山区",
-          "岳阳县",
-          "华容县",
-          "湘阴县",
-          "平江县",
-          "岳阳市屈原管理区",
-          "汨罗市",
-          "临湘市"
-        ]
-      },
-      {
-        "CityID": 177,
-        "name": "长沙市",
-        "ProID": 18,
-        "CitySort": 177,
-        "area": [
-          "芙蓉区",
-          "天心区",
-          "岳麓区",
-          "开福区",
-          "雨花区",
-          "望城区",
-          "长沙县",
-          "浏阳市",
-          "宁乡市"
-        ]
-      },
-      {
-        "CityID": 178,
-        "name": "湘潭市",
-        "ProID": 18,
-        "CitySort": 178,
-        "area": [
-          "雨湖区",
-          "岳塘区",
-          "湘潭县",
-          "湖南湘潭高新技术产业园区",
-          "湘潭昭山示范区",
-          "湘潭九华示范区",
-          "湘乡市",
-          "韶山市"
-        ]
-      },
-      {
-        "CityID": 179,
-        "name": "株洲市",
-        "ProID": 18,
-        "CitySort": 179,
-        "area": [
-          "荷塘区",
-          "芦淞区",
-          "石峰区",
-          "天元区",
-          "渌口区",
-          "攸县",
-          "茶陵县",
-          "炎陵县",
-          "云龙示范区",
-          "醴陵市"
-        ]
-      },
-      {
-        "CityID": 180,
-        "name": "衡阳市",
-        "ProID": 18,
-        "CitySort": 180,
-        "area": [
-          "珠晖区",
-          "雁峰区",
-          "石鼓区",
-          "蒸湘区",
-          "南岳区",
-          "衡阳县",
-          "衡南县",
-          "衡山县",
-          "衡东县",
-          "祁东县",
-          "衡阳综合保税区",
-          "湖南衡阳高新技术产业园区",
-          "湖南衡阳松木经济开发区",
-          "耒阳市",
-          "常宁市"
-        ]
-      },
-      {
-        "CityID": 181,
-        "name": "郴州市",
-        "ProID": 18,
-        "CitySort": 181,
-        "area": [
-          "北湖区",
-          "苏仙区",
-          "桂阳县",
-          "宜章县",
-          "永兴县",
-          "嘉禾县",
-          "临武县",
-          "汝城县",
-          "桂东县",
-          "安仁县",
-          "资兴市"
-        ]
-      },
-      {
-        "CityID": 182,
-        "name": "常德市",
-        "ProID": 18,
-        "CitySort": 182,
-        "area": [
-          "武陵区",
-          "鼎城区",
-          "安乡县",
-          "汉寿县",
-          "澧县",
-          "临澧县",
-          "桃源县",
-          "石门县",
-          "常德市西洞庭管理区",
-          "津市市"
-        ]
-      },
-      {
-        "CityID": 183,
-        "name": "益阳市",
-        "ProID": 18,
-        "CitySort": 183,
-        "area": [
-          "资阳区",
-          "赫山区",
-          "南县",
-          "桃江县",
-          "安化县",
-          "益阳市大通湖管理区",
-          "湖南益阳高新技术产业园区",
-          "沅江市"
-        ]
-      },
-      {
-        "CityID": 184,
-        "name": "娄底市",
-        "ProID": 18,
-        "CitySort": 184,
-        "area": [
-          "娄星区",
-          "双峰县",
-          "新化县",
-          "冷水江市",
-          "涟源市"
-        ]
-      },
-      {
-        "CityID": 185,
-        "name": "邵阳市",
-        "ProID": 18,
-        "CitySort": 185,
-        "area": [
-          "双清区",
-          "大祥区",
-          "北塔区",
-          "新邵县",
-          "邵阳县",
-          "隆回县",
-          "洞口县",
-          "绥宁县",
-          "新宁县",
-          "城步苗族自治县",
-          "武冈市",
-          "邵东市"
-        ]
-      },
-      {
-        "CityID": 186,
-        "name": "湘西土家族苗族自治州",
-        "ProID": 18,
-        "CitySort": 186,
-        "area": [
-          "吉首市",
-          "泸溪县",
-          "凤凰县",
-          "花垣县",
-          "保靖县",
-          "古丈县",
-          "永顺县",
-          "龙山县"
-        ]
-      },
-      {
-        "CityID": 187,
-        "name": "张家界市",
-        "ProID": 18,
-        "CitySort": 187,
-        "area": [
-          "永定区",
-          "武陵源区",
-          "慈利县",
-          "桑植县"
-        ]
-      },
-      {
-        "CityID": 188,
-        "name": "怀化市",
-        "ProID": 18,
-        "CitySort": 188,
-        "area": [
-          "鹤城区",
-          "中方县",
-          "沅陵县",
-          "辰溪县",
-          "溆浦县",
-          "会同县",
-          "麻阳苗族自治县",
-          "新晃侗族自治县",
-          "芷江侗族自治县",
-          "靖州苗族侗族自治县",
-          "通道侗族自治县",
-          "怀化市洪江管理区",
-          "洪江市"
-        ]
-      },
-      {
-        "CityID": 189,
-        "name": "永州市",
-        "ProID": 18,
-        "CitySort": 189,
-        "area": [
-          "零陵区",
-          "冷水滩区",
-          "祁阳县",
-          "东安县",
-          "双牌县",
-          "道县",
-          "江永县",
-          "宁远县",
-          "蓝山县",
-          "新田县",
-          "江华瑶族自治县",
-          "永州经济技术开发区",
-          "永州市金洞管理区",
-          "永州市回龙圩管理区"
+    ProID: 18,
+    name: '湖南省',
+    ProSort: 19,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 176,
+        name: '岳阳市',
+        ProID: 18,
+        CitySort: 176,
+        area: [
+          '岳阳楼区',
+          '云溪区',
+          '君山区',
+          '岳阳县',
+          '华容县',
+          '湘阴县',
+          '平江县',
+          '岳阳市屈原管理区',
+          '汨罗市',
+          '临湘市'
+        ]
+      },
+      {
+        CityID: 177,
+        name: '长沙市',
+        ProID: 18,
+        CitySort: 177,
+        area: [
+          '芙蓉区',
+          '天心区',
+          '岳麓区',
+          '开福区',
+          '雨花区',
+          '望城区',
+          '长沙县',
+          '浏阳市',
+          '宁乡市'
+        ]
+      },
+      {
+        CityID: 178,
+        name: '湘潭市',
+        ProID: 18,
+        CitySort: 178,
+        area: [
+          '雨湖区',
+          '岳塘区',
+          '湘潭县',
+          '湖南湘潭高新技术产业园区',
+          '湘潭昭山示范区',
+          '湘潭九华示范区',
+          '湘乡市',
+          '韶山市'
+        ]
+      },
+      {
+        CityID: 179,
+        name: '株洲市',
+        ProID: 18,
+        CitySort: 179,
+        area: [
+          '荷塘区',
+          '芦淞区',
+          '石峰区',
+          '天元区',
+          '渌口区',
+          '攸县',
+          '茶陵县',
+          '炎陵县',
+          '云龙示范区',
+          '醴陵市'
+        ]
+      },
+      {
+        CityID: 180,
+        name: '衡阳市',
+        ProID: 18,
+        CitySort: 180,
+        area: [
+          '珠晖区',
+          '雁峰区',
+          '石鼓区',
+          '蒸湘区',
+          '南岳区',
+          '衡阳县',
+          '衡南县',
+          '衡山县',
+          '衡东县',
+          '祁东县',
+          '衡阳综合保税区',
+          '湖南衡阳高新技术产业园区',
+          '湖南衡阳松木经济开发区',
+          '耒阳市',
+          '常宁市'
+        ]
+      },
+      {
+        CityID: 181,
+        name: '郴州市',
+        ProID: 18,
+        CitySort: 181,
+        area: [
+          '北湖区',
+          '苏仙区',
+          '桂阳县',
+          '宜章县',
+          '永兴县',
+          '嘉禾县',
+          '临武县',
+          '汝城县',
+          '桂东县',
+          '安仁县',
+          '资兴市'
+        ]
+      },
+      {
+        CityID: 182,
+        name: '常德市',
+        ProID: 18,
+        CitySort: 182,
+        area: [
+          '武陵区',
+          '鼎城区',
+          '安乡县',
+          '汉寿县',
+          '澧县',
+          '临澧县',
+          '桃源县',
+          '石门县',
+          '常德市西洞庭管理区',
+          '津市市'
+        ]
+      },
+      {
+        CityID: 183,
+        name: '益阳市',
+        ProID: 18,
+        CitySort: 183,
+        area: [
+          '资阳区',
+          '赫山区',
+          '南县',
+          '桃江县',
+          '安化县',
+          '益阳市大通湖管理区',
+          '湖南益阳高新技术产业园区',
+          '沅江市'
+        ]
+      },
+      {
+        CityID: 184,
+        name: '娄底市',
+        ProID: 18,
+        CitySort: 184,
+        area: ['娄星区', '双峰县', '新化县', '冷水江市', '涟源市']
+      },
+      {
+        CityID: 185,
+        name: '邵阳市',
+        ProID: 18,
+        CitySort: 185,
+        area: [
+          '双清区',
+          '大祥区',
+          '北塔区',
+          '新邵县',
+          '邵阳县',
+          '隆回县',
+          '洞口县',
+          '绥宁县',
+          '新宁县',
+          '城步苗族自治县',
+          '武冈市',
+          '邵东市'
+        ]
+      },
+      {
+        CityID: 186,
+        name: '湘西土家族苗族自治州',
+        ProID: 18,
+        CitySort: 186,
+        area: [
+          '吉首市',
+          '泸溪县',
+          '凤凰县',
+          '花垣县',
+          '保靖县',
+          '古丈县',
+          '永顺县',
+          '龙山县'
+        ]
+      },
+      {
+        CityID: 187,
+        name: '张家界市',
+        ProID: 18,
+        CitySort: 187,
+        area: ['永定区', '武陵源区', '慈利县', '桑植县']
+      },
+      {
+        CityID: 188,
+        name: '怀化市',
+        ProID: 18,
+        CitySort: 188,
+        area: [
+          '鹤城区',
+          '中方县',
+          '沅陵县',
+          '辰溪县',
+          '溆浦县',
+          '会同县',
+          '麻阳苗族自治县',
+          '新晃侗族自治县',
+          '芷江侗族自治县',
+          '靖州苗族侗族自治县',
+          '通道侗族自治县',
+          '怀化市洪江管理区',
+          '洪江市'
+        ]
+      },
+      {
+        CityID: 189,
+        name: '永州市',
+        ProID: 18,
+        CitySort: 189,
+        area: [
+          '零陵区',
+          '冷水滩区',
+          '祁阳县',
+          '东安县',
+          '双牌县',
+          '道县',
+          '江永县',
+          '宁远县',
+          '蓝山县',
+          '新田县',
+          '江华瑶族自治县',
+          '永州经济技术开发区',
+          '永州市金洞管理区',
+          '永州市回龙圩管理区'
         ]
       }
     ]
   },
   {
-    "ProID": 19,
-    "name": "广东省",
-    "ProSort": 20,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 190,
-        "name": "广州市",
-        "ProID": 19,
-        "CitySort": 190,
-        "area": [
-          "荔湾区",
-          "越秀区",
-          "海珠区",
-          "天河区",
-          "白云区",
-          "黄埔区",
-          "番禺区",
-          "花都区",
-          "南沙区",
-          "从化区",
-          "增城区"
-        ]
-      },
-      {
-        "CityID": 191,
-        "name": "汕尾市",
-        "ProID": 19,
-        "CitySort": 191,
-        "area": [
-          "城区",
-          "海丰县",
-          "陆河县",
-          "陆丰市"
-        ]
-      },
-      {
-        "CityID": 192,
-        "name": "阳江市",
-        "ProID": 19,
-        "CitySort": 192,
-        "area": [
-          "江城区",
-          "阳东区",
-          "阳西县",
-          "阳春市"
-        ]
-      },
-      {
-        "CityID": 193,
-        "name": "揭阳市",
-        "ProID": 19,
-        "CitySort": 193,
-        "area": [
-          "榕城区",
-          "揭东区",
-          "揭西县",
-          "惠来县",
-          "普宁市"
-        ]
-      },
-      {
-        "CityID": 194,
-        "name": "茂名市",
-        "ProID": 19,
-        "CitySort": 194,
-        "area": [
-          "茂南区",
-          "电白区",
-          "高州市",
-          "化州市",
-          "信宜市"
-        ]
-      },
-      {
-        "CityID": 195,
-        "name": "惠州市",
-        "ProID": 19,
-        "CitySort": 195,
-        "area": [
-          "惠城区",
-          "惠阳区",
-          "博罗县",
-          "惠东县",
-          "龙门县"
-        ]
-      },
-      {
-        "CityID": 196,
-        "name": "江门市",
-        "ProID": 19,
-        "CitySort": 196,
-        "area": [
-          "蓬江区",
-          "江海区",
-          "新会区",
-          "台山市",
-          "开平市",
-          "鹤山市",
-          "恩平市"
-        ]
-      },
-      {
-        "CityID": 197,
-        "name": "韶关市",
-        "ProID": 19,
-        "CitySort": 197,
-        "area": [
-          "武江区",
-          "浈江区",
-          "曲江区",
-          "始兴县",
-          "仁化县",
-          "翁源县",
-          "乳源瑶族自治县",
-          "新丰县",
-          "乐昌市",
-          "南雄市"
-        ]
-      },
-      {
-        "CityID": 198,
-        "name": "梅州市",
-        "ProID": 19,
-        "CitySort": 198,
-        "area": [
-          "梅江区",
-          "梅县区",
-          "大埔县",
-          "丰顺县",
-          "五华县",
-          "平远县",
-          "蕉岭县",
-          "兴宁市"
-        ]
-      },
-      {
-        "CityID": 199,
-        "name": "汕头市",
-        "ProID": 19,
-        "CitySort": 199,
-        "area": [
-          "龙湖区",
-          "金平区",
-          "濠江区",
-          "潮阳区",
-          "潮南区",
-          "澄海区",
-          "南澳县"
-        ]
-      },
-      {
-        "CityID": 200,
-        "name": "深圳市",
-        "ProID": 19,
-        "CitySort": 200,
-        "area": [
-          "罗湖区",
-          "福田区",
-          "南山区",
-          "宝安区",
-          "龙岗区",
-          "盐田区",
-          "龙华区",
-          "坪山区",
-          "光明区"
-        ]
-      },
-      {
-        "CityID": 201,
-        "name": "珠海市",
-        "ProID": 19,
-        "CitySort": 201,
-        "area": [
-          "香洲区",
-          "斗门区",
-          "金湾区"
-        ]
-      },
-      {
-        "CityID": 202,
-        "name": "佛山市",
-        "ProID": 19,
-        "CitySort": 202,
-        "area": [
-          "禅城区",
-          "南海区",
-          "顺德区",
-          "三水区",
-          "高明区"
-        ]
-      },
-      {
-        "CityID": 203,
-        "name": "肇庆市",
-        "ProID": 19,
-        "CitySort": 203,
-        "area": [
-          "端州区",
-          "鼎湖区",
-          "高要区",
-          "广宁县",
-          "怀集县",
-          "封开县",
-          "德庆县",
-          "四会市"
-        ]
-      },
-      {
-        "CityID": 204,
-        "name": "湛江市",
-        "ProID": 19,
-        "CitySort": 204,
-        "area": [
-          "赤坎区",
-          "霞山区",
-          "坡头区",
-          "麻章区",
-          "遂溪县",
-          "徐闻县",
-          "廉江市",
-          "雷州市",
-          "吴川市"
-        ]
-      },
-      {
-        "CityID": 205,
-        "name": "中山市",
-        "ProID": 19,
-        "CitySort": 205,
-        "area": []
-      },
-      {
-        "CityID": 206,
-        "name": "河源市",
-        "ProID": 19,
-        "CitySort": 206,
-        "area": [
-          "源城区",
-          "紫金县",
-          "龙川县",
-          "连平县",
-          "和平县",
-          "东源县"
-        ]
-      },
-      {
-        "CityID": 207,
-        "name": "清远市",
-        "ProID": 19,
-        "CitySort": 207,
-        "area": [
-          "清城区",
-          "清新区",
-          "佛冈县",
-          "阳山县",
-          "连山壮族瑶族自治县",
-          "连南瑶族自治县",
-          "英德市",
-          "连州市"
-        ]
-      },
-      {
-        "CityID": 208,
-        "name": "云浮市",
-        "ProID": 19,
-        "CitySort": 208,
-        "area": [
-          "云城区",
-          "云安区",
-          "新兴县",
-          "郁南县",
-          "罗定市"
-        ]
-      },
-      {
-        "CityID": 209,
-        "name": "潮州市",
-        "ProID": 19,
-        "CitySort": 209,
-        "area": [
-          "湘桥区",
-          "潮安区",
-          "饶平县"
-        ]
-      },
-      {
-        "CityID": 210,
-        "name": "东莞市",
-        "ProID": 19,
-        "CitySort": 210,
-        "area": []
+    ProID: 19,
+    name: '广东省',
+    ProSort: 20,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 190,
+        name: '广州市',
+        ProID: 19,
+        CitySort: 190,
+        area: [
+          '荔湾区',
+          '越秀区',
+          '海珠区',
+          '天河区',
+          '白云区',
+          '黄埔区',
+          '番禺区',
+          '花都区',
+          '南沙区',
+          '从化区',
+          '增城区'
+        ]
+      },
+      {
+        CityID: 191,
+        name: '汕尾市',
+        ProID: 19,
+        CitySort: 191,
+        area: ['城区', '海丰县', '陆河县', '陆丰市']
+      },
+      {
+        CityID: 192,
+        name: '阳江市',
+        ProID: 19,
+        CitySort: 192,
+        area: ['江城区', '阳东区', '阳西县', '阳春市']
+      },
+      {
+        CityID: 193,
+        name: '揭阳市',
+        ProID: 19,
+        CitySort: 193,
+        area: ['榕城区', '揭东区', '揭西县', '惠来县', '普宁市']
+      },
+      {
+        CityID: 194,
+        name: '茂名市',
+        ProID: 19,
+        CitySort: 194,
+        area: ['茂南区', '电白区', '高州市', '化州市', '信宜市']
+      },
+      {
+        CityID: 195,
+        name: '惠州市',
+        ProID: 19,
+        CitySort: 195,
+        area: ['惠城区', '惠阳区', '博罗县', '惠东县', '龙门县']
+      },
+      {
+        CityID: 196,
+        name: '江门市',
+        ProID: 19,
+        CitySort: 196,
+        area: [
+          '蓬江区',
+          '江海区',
+          '新会区',
+          '台山市',
+          '开平市',
+          '鹤山市',
+          '恩平市'
+        ]
+      },
+      {
+        CityID: 197,
+        name: '韶关市',
+        ProID: 19,
+        CitySort: 197,
+        area: [
+          '武江区',
+          '浈江区',
+          '曲江区',
+          '始兴县',
+          '仁化县',
+          '翁源县',
+          '乳源瑶族自治县',
+          '新丰县',
+          '乐昌市',
+          '南雄市'
+        ]
+      },
+      {
+        CityID: 198,
+        name: '梅州市',
+        ProID: 19,
+        CitySort: 198,
+        area: [
+          '梅江区',
+          '梅县区',
+          '大埔县',
+          '丰顺县',
+          '五华县',
+          '平远县',
+          '蕉岭县',
+          '兴宁市'
+        ]
+      },
+      {
+        CityID: 199,
+        name: '汕头市',
+        ProID: 19,
+        CitySort: 199,
+        area: [
+          '龙湖区',
+          '金平区',
+          '濠江区',
+          '潮阳区',
+          '潮南区',
+          '澄海区',
+          '南澳县'
+        ]
+      },
+      {
+        CityID: 200,
+        name: '深圳市',
+        ProID: 19,
+        CitySort: 200,
+        area: [
+          '罗湖区',
+          '福田区',
+          '南山区',
+          '宝安区',
+          '龙岗区',
+          '盐田区',
+          '龙华区',
+          '坪山区',
+          '光明区'
+        ]
+      },
+      {
+        CityID: 201,
+        name: '珠海市',
+        ProID: 19,
+        CitySort: 201,
+        area: ['香洲区', '斗门区', '金湾区']
+      },
+      {
+        CityID: 202,
+        name: '佛山市',
+        ProID: 19,
+        CitySort: 202,
+        area: ['禅城区', '南海区', '顺德区', '三水区', '高明区']
+      },
+      {
+        CityID: 203,
+        name: '肇庆市',
+        ProID: 19,
+        CitySort: 203,
+        area: [
+          '端州区',
+          '鼎湖区',
+          '高要区',
+          '广宁县',
+          '怀集县',
+          '封开县',
+          '德庆县',
+          '四会市'
+        ]
+      },
+      {
+        CityID: 204,
+        name: '湛江市',
+        ProID: 19,
+        CitySort: 204,
+        area: [
+          '赤坎区',
+          '霞山区',
+          '坡头区',
+          '麻章区',
+          '遂溪县',
+          '徐闻县',
+          '廉江市',
+          '雷州市',
+          '吴川市'
+        ]
+      },
+      {
+        CityID: 205,
+        name: '中山市',
+        ProID: 19,
+        CitySort: 205,
+        area: []
+      },
+      {
+        CityID: 206,
+        name: '河源市',
+        ProID: 19,
+        CitySort: 206,
+        area: ['源城区', '紫金县', '龙川县', '连平县', '和平县', '东源县']
+      },
+      {
+        CityID: 207,
+        name: '清远市',
+        ProID: 19,
+        CitySort: 207,
+        area: [
+          '清城区',
+          '清新区',
+          '佛冈县',
+          '阳山县',
+          '连山壮族瑶族自治县',
+          '连南瑶族自治县',
+          '英德市',
+          '连州市'
+        ]
+      },
+      {
+        CityID: 208,
+        name: '云浮市',
+        ProID: 19,
+        CitySort: 208,
+        area: ['云城区', '云安区', '新兴县', '郁南县', '罗定市']
+      },
+      {
+        CityID: 209,
+        name: '潮州市',
+        ProID: 19,
+        CitySort: 209,
+        area: ['湘桥区', '潮安区', '饶平县']
+      },
+      {
+        CityID: 210,
+        name: '东莞市',
+        ProID: 19,
+        CitySort: 210,
+        area: []
       }
     ]
   },
   {
-    "ProID": 20,
-    "name": "海南省",
-    "ProSort": 24,
-    "ProRemark": "省份",
-    "city": [
+    ProID: 20,
+    name: '海南省',
+    ProSort: 24,
+    ProRemark: '省份',
+    city: [
       {
-        "CityID": 255,
-        "name": "海口市",
-        "ProID": 20,
-        "CitySort": 255,
-        "area": [
-          "秀英区",
-          "龙华区",
-          "琼山区",
-          "美兰区"
-        ]
+        CityID: 255,
+        name: '海口市',
+        ProID: 20,
+        CitySort: 255,
+        area: ['秀英区', '龙华区', '琼山区', '美兰区']
       },
       {
-        "CityID": 256,
-        "name": "三亚市",
-        "ProID": 20,
-        "CitySort": 256,
-        "area": [
-          "海棠区",
-          "吉阳区",
-          "天涯区",
-          "崖州区"
-        ]
+        CityID: 256,
+        name: '三亚市',
+        ProID: 20,
+        CitySort: 256,
+        area: ['海棠区', '吉阳区', '天涯区', '崖州区']
       },
       {
-        "CityID": 257,
-        "name": "五指山市",
-        "ProID": 20,
-        "CitySort": 257,
-        "area": []
+        CityID: 257,
+        name: '五指山市',
+        ProID: 20,
+        CitySort: 257,
+        area: []
       },
       {
-        "CityID": 258,
-        "name": "琼海市",
-        "ProID": 20,
-        "CitySort": 258,
-        "area": []
+        CityID: 258,
+        name: '琼海市',
+        ProID: 20,
+        CitySort: 258,
+        area: []
       },
       {
-        "CityID": 259,
-        "name": "儋州市",
-        "ProID": 20,
-        "CitySort": 259,
-        "area": []
+        CityID: 259,
+        name: '儋州市',
+        ProID: 20,
+        CitySort: 259,
+        area: []
       },
       {
-        "CityID": 260,
-        "name": "文昌市",
-        "ProID": 20,
-        "CitySort": 260,
-        "area": []
+        CityID: 260,
+        name: '文昌市',
+        ProID: 20,
+        CitySort: 260,
+        area: []
       },
       {
-        "CityID": 261,
-        "name": "万宁市",
-        "ProID": 20,
-        "CitySort": 261,
-        "area": []
+        CityID: 261,
+        name: '万宁市',
+        ProID: 20,
+        CitySort: 261,
+        area: []
       },
       {
-        "CityID": 262,
-        "name": "东方市",
-        "ProID": 20,
-        "CitySort": 262,
-        "area": []
+        CityID: 262,
+        name: '东方市',
+        ProID: 20,
+        CitySort: 262,
+        area: []
       },
       {
-        "CityID": 263,
-        "name": "澄迈县",
-        "ProID": 20,
-        "CitySort": 263,
-        "area": []
+        CityID: 263,
+        name: '澄迈县',
+        ProID: 20,
+        CitySort: 263,
+        area: []
       },
       {
-        "CityID": 264,
-        "name": "定安县",
-        "ProID": 20,
-        "CitySort": 264,
-        "area": []
+        CityID: 264,
+        name: '定安县',
+        ProID: 20,
+        CitySort: 264,
+        area: []
       },
       {
-        "CityID": 265,
-        "name": "屯昌县",
-        "ProID": 20,
-        "CitySort": 265,
-        "area": []
+        CityID: 265,
+        name: '屯昌县',
+        ProID: 20,
+        CitySort: 265,
+        area: []
       },
       {
-        "CityID": 266,
-        "name": "临高县",
-        "ProID": 20,
-        "CitySort": 266,
-        "area": []
+        CityID: 266,
+        name: '临高县',
+        ProID: 20,
+        CitySort: 266,
+        area: []
       },
       {
-        "CityID": 267,
-        "name": "白沙黎族自治县",
-        "ProID": 20,
-        "CitySort": 267,
-        "area": []
+        CityID: 267,
+        name: '白沙黎族自治县',
+        ProID: 20,
+        CitySort: 267,
+        area: []
       },
       {
-        "CityID": 268,
-        "name": "昌江黎族自治县",
-        "ProID": 20,
-        "CitySort": 268,
-        "area": []
+        CityID: 268,
+        name: '昌江黎族自治县',
+        ProID: 20,
+        CitySort: 268,
+        area: []
       },
       {
-        "CityID": 269,
-        "name": "乐东黎族自治县",
-        "ProID": 20,
-        "CitySort": 269,
-        "area": []
+        CityID: 269,
+        name: '乐东黎族自治县',
+        ProID: 20,
+        CitySort: 269,
+        area: []
       },
       {
-        "CityID": 270,
-        "name": "陵水黎族自治县",
-        "ProID": 20,
-        "CitySort": 270,
-        "area": []
+        CityID: 270,
+        name: '陵水黎族自治县',
+        ProID: 20,
+        CitySort: 270,
+        area: []
       },
       {
-        "CityID": 271,
-        "name": "保亭黎族苗族自治县",
-        "ProID": 20,
-        "CitySort": 271,
-        "area": []
+        CityID: 271,
+        name: '保亭黎族苗族自治县',
+        ProID: 20,
+        CitySort: 271,
+        area: []
       },
       {
-        "CityID": 272,
-        "name": "琼中黎族苗族自治县",
-        "ProID": 20,
-        "CitySort": 272,
-        "area": []
+        CityID: 272,
+        name: '琼中黎族苗族自治县',
+        ProID: 20,
+        CitySort: 272,
+        area: []
       },
       {
-        "CityID": 272,
-        "name": "三沙市",
-        "ProID": 20,
-        "CitySort": 272,
-        "area": [
-          "西沙群岛",
-          "南沙群岛",
-          "中沙群岛的岛礁及其海域"
-        ]
+        CityID: 272,
+        name: '三沙市',
+        ProID: 20,
+        CitySort: 272,
+        area: ['西沙群岛', '南沙群岛', '中沙群岛的岛礁及其海域']
       }
     ]
   },
   {
-    "ProID": 21,
-    "name": "广西壮族自治区",
-    "ProSort": 28,
-    "ProRemark": "自治区",
-    "city": [
-      {
-        "CityID": 307,
-        "name": "防城港市",
-        "ProID": 21,
-        "CitySort": 307,
-        "area": [
-          "港口区",
-          "防城区",
-          "上思县",
-          "东兴市"
-        ]
-      },
-      {
-        "CityID": 308,
-        "name": "南宁市",
-        "ProID": 21,
-        "CitySort": 308,
-        "area": [
-          "兴宁区",
-          "青秀区",
-          "江南区",
-          "西乡塘区",
-          "良庆区",
-          "邕宁区",
-          "武鸣区",
-          "隆安县",
-          "马山县",
-          "上林县",
-          "宾阳县",
-          "横县"
-        ]
-      },
-      {
-        "CityID": 309,
-        "name": "崇左市",
-        "ProID": 21,
-        "CitySort": 309,
-        "area": [
-          "江州区",
-          "扶绥县",
-          "宁明县",
-          "龙州县",
-          "大新县",
-          "天等县",
-          "凭祥市"
-        ]
-      },
-      {
-        "CityID": 310,
-        "name": "来宾市",
-        "ProID": 21,
-        "CitySort": 310,
-        "area": [
-          "兴宾区",
-          "忻城县",
-          "象州县",
-          "武宣县",
-          "金秀瑶族自治县",
-          "合山市"
-        ]
-      },
-      {
-        "CityID": 311,
-        "name": "柳州市",
-        "ProID": 21,
-        "CitySort": 311,
-        "area": [
-          "城中区",
-          "鱼峰区",
-          "柳南区",
-          "柳北区",
-          "柳江区",
-          "柳城县",
-          "鹿寨县",
-          "融安县",
-          "融水苗族自治县",
-          "三江侗族自治县"
-        ]
-      },
-      {
-        "CityID": 312,
-        "name": "桂林市",
-        "ProID": 21,
-        "CitySort": 312,
-        "area": [
-          "秀峰区",
-          "叠彩区",
-          "象山区",
-          "七星区",
-          "雁山区",
-          "临桂区",
-          "阳朔县",
-          "灵川县",
-          "全州县",
-          "兴安县",
-          "永福县",
-          "灌阳县",
-          "龙胜各族自治县",
-          "资源县",
-          "平乐县",
-          "恭城瑶族自治县",
-          "荔浦市"
-        ]
-      },
-      {
-        "CityID": 313,
-        "name": "梧州市",
-        "ProID": 21,
-        "CitySort": 313,
-        "area": [
-          "万秀区",
-          "长洲区",
-          "龙圩区",
-          "苍梧县",
-          "藤县",
-          "蒙山县",
-          "岑溪市"
-        ]
-      },
-      {
-        "CityID": 314,
-        "name": "贺州市",
-        "ProID": 21,
-        "CitySort": 314,
-        "area": [
-          "八步区",
-          "平桂区",
-          "昭平县",
-          "钟山县",
-          "富川瑶族自治县"
-        ]
-      },
-      {
-        "CityID": 315,
-        "name": "贵港市",
-        "ProID": 21,
-        "CitySort": 315,
-        "area": [
-          "港北区",
-          "港南区",
-          "覃塘区",
-          "平南县",
-          "桂平市"
-        ]
-      },
-      {
-        "CityID": 316,
-        "name": "玉林市",
-        "ProID": 21,
-        "CitySort": 316,
-        "area": [
-          "玉州区",
-          "福绵区",
-          "容县",
-          "陆川县",
-          "博白县",
-          "兴业县",
-          "北流市"
-        ]
-      },
-      {
-        "CityID": 317,
-        "name": "百色市",
-        "ProID": 21,
-        "CitySort": 317,
-        "area": [
-          "右江区",
-          "田阳区",
-          "田东县",
-          "德保县",
-          "那坡县",
-          "凌云县",
-          "乐业县",
-          "田林县",
-          "西林县",
-          "隆林各族自治县",
-          "靖西市",
-          "平果市"
-        ]
-      },
-      {
-        "CityID": 318,
-        "name": "钦州市",
-        "ProID": 21,
-        "CitySort": 318,
-        "area": [
-          "钦南区",
-          "钦北区",
-          "灵山县",
-          "浦北县"
-        ]
-      },
-      {
-        "CityID": 319,
-        "name": "河池市",
-        "ProID": 21,
-        "CitySort": 319,
-        "area": [
-          "金城江区",
-          "宜州区",
-          "南丹县",
-          "天峨县",
-          "凤山县",
-          "东兰县",
-          "罗城仫佬族自治县",
-          "环江毛南族自治县",
-          "巴马瑶族自治县",
-          "都安瑶族自治县",
-          "大化瑶族自治县"
-        ]
-      },
-      {
-        "CityID": 320,
-        "name": "北海市",
-        "ProID": 21,
-        "CitySort": 320,
-        "area": [
-          "海城区",
-          "银海区",
-          "铁山港区",
-          "合浦县"
-        ]
+    ProID: 21,
+    name: '广西壮族自治区',
+    ProSort: 28,
+    ProRemark: '自治区',
+    city: [
+      {
+        CityID: 307,
+        name: '防城港市',
+        ProID: 21,
+        CitySort: 307,
+        area: ['港口区', '防城区', '上思县', '东兴市']
+      },
+      {
+        CityID: 308,
+        name: '南宁市',
+        ProID: 21,
+        CitySort: 308,
+        area: [
+          '兴宁区',
+          '青秀区',
+          '江南区',
+          '西乡塘区',
+          '良庆区',
+          '邕宁区',
+          '武鸣区',
+          '隆安县',
+          '马山县',
+          '上林县',
+          '宾阳县',
+          '横县'
+        ]
+      },
+      {
+        CityID: 309,
+        name: '崇左市',
+        ProID: 21,
+        CitySort: 309,
+        area: [
+          '江州区',
+          '扶绥县',
+          '宁明县',
+          '龙州县',
+          '大新县',
+          '天等县',
+          '凭祥市'
+        ]
+      },
+      {
+        CityID: 310,
+        name: '来宾市',
+        ProID: 21,
+        CitySort: 310,
+        area: [
+          '兴宾区',
+          '忻城县',
+          '象州县',
+          '武宣县',
+          '金秀瑶族自治县',
+          '合山市'
+        ]
+      },
+      {
+        CityID: 311,
+        name: '柳州市',
+        ProID: 21,
+        CitySort: 311,
+        area: [
+          '城中区',
+          '鱼峰区',
+          '柳南区',
+          '柳北区',
+          '柳江区',
+          '柳城县',
+          '鹿寨县',
+          '融安县',
+          '融水苗族自治县',
+          '三江侗族自治县'
+        ]
+      },
+      {
+        CityID: 312,
+        name: '桂林市',
+        ProID: 21,
+        CitySort: 312,
+        area: [
+          '秀峰区',
+          '叠彩区',
+          '象山区',
+          '七星区',
+          '雁山区',
+          '临桂区',
+          '阳朔县',
+          '灵川县',
+          '全州县',
+          '兴安县',
+          '永福县',
+          '灌阳县',
+          '龙胜各族自治县',
+          '资源县',
+          '平乐县',
+          '恭城瑶族自治县',
+          '荔浦市'
+        ]
+      },
+      {
+        CityID: 313,
+        name: '梧州市',
+        ProID: 21,
+        CitySort: 313,
+        area: [
+          '万秀区',
+          '长洲区',
+          '龙圩区',
+          '苍梧县',
+          '藤县',
+          '蒙山县',
+          '岑溪市'
+        ]
+      },
+      {
+        CityID: 314,
+        name: '贺州市',
+        ProID: 21,
+        CitySort: 314,
+        area: ['八步区', '平桂区', '昭平县', '钟山县', '富川瑶族自治县']
+      },
+      {
+        CityID: 315,
+        name: '贵港市',
+        ProID: 21,
+        CitySort: 315,
+        area: ['港北区', '港南区', '覃塘区', '平南县', '桂平市']
+      },
+      {
+        CityID: 316,
+        name: '玉林市',
+        ProID: 21,
+        CitySort: 316,
+        area: [
+          '玉州区',
+          '福绵区',
+          '容县',
+          '陆川县',
+          '博白县',
+          '兴业县',
+          '北流市'
+        ]
+      },
+      {
+        CityID: 317,
+        name: '百色市',
+        ProID: 21,
+        CitySort: 317,
+        area: [
+          '右江区',
+          '田阳区',
+          '田东县',
+          '德保县',
+          '那坡县',
+          '凌云县',
+          '乐业县',
+          '田林县',
+          '西林县',
+          '隆林各族自治县',
+          '靖西市',
+          '平果市'
+        ]
+      },
+      {
+        CityID: 318,
+        name: '钦州市',
+        ProID: 21,
+        CitySort: 318,
+        area: ['钦南区', '钦北区', '灵山县', '浦北县']
+      },
+      {
+        CityID: 319,
+        name: '河池市',
+        ProID: 21,
+        CitySort: 319,
+        area: [
+          '金城江区',
+          '宜州区',
+          '南丹县',
+          '天峨县',
+          '凤山县',
+          '东兰县',
+          '罗城仫佬族自治县',
+          '环江毛南族自治县',
+          '巴马瑶族自治县',
+          '都安瑶族自治县',
+          '大化瑶族自治县'
+        ]
+      },
+      {
+        CityID: 320,
+        name: '北海市',
+        ProID: 21,
+        CitySort: 320,
+        area: ['海城区', '银海区', '铁山港区', '合浦县']
       }
     ]
   },
   {
-    "ProID": 22,
-    "name": "甘肃省",
-    "ProSort": 21,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 211,
-        "name": "兰州市",
-        "ProID": 22,
-        "CitySort": 211,
-        "area": [
-          "城关区",
-          "七里河区",
-          "西固区",
-          "安宁区",
-          "红古区",
-          "永登县",
-          "皋兰县",
-          "榆中县",
-          "兰州新区"
-        ]
-      },
-      {
-        "CityID": 212,
-        "name": "金昌市",
-        "ProID": 22,
-        "CitySort": 212,
-        "area": [
-          "金川区",
-          "永昌县"
-        ]
-      },
-      {
-        "CityID": 213,
-        "name": "白银市",
-        "ProID": 22,
-        "CitySort": 213,
-        "area": [
-          "白银区",
-          "平川区",
-          "靖远县",
-          "会宁县",
-          "景泰县"
-        ]
-      },
-      {
-        "CityID": 214,
-        "name": "天水市",
-        "ProID": 22,
-        "CitySort": 214,
-        "area": [
-          "秦州区",
-          "麦积区",
-          "清水县",
-          "秦安县",
-          "甘谷县",
-          "武山县",
-          "张家川回族自治县"
-        ]
-      },
-      {
-        "CityID": 215,
-        "name": "嘉峪关市",
-        "ProID": 22,
-        "CitySort": 215,
-        "area": [
-          "嘉峪关市"
-        ]
-      },
-      {
-        "CityID": 216,
-        "name": "武威市",
-        "ProID": 22,
-        "CitySort": 216,
-        "area": [
-          "凉州区",
-          "民勤县",
-          "古浪县",
-          "天祝藏族自治县"
-        ]
-      },
-      {
-        "CityID": 217,
-        "name": "张掖市",
-        "ProID": 22,
-        "CitySort": 217,
-        "area": [
-          "甘州区",
-          "肃南裕固族自治县",
-          "民乐县",
-          "临泽县",
-          "高台县",
-          "山丹县"
-        ]
-      },
-      {
-        "CityID": 218,
-        "name": "平凉市",
-        "ProID": 22,
-        "CitySort": 218,
-        "area": [
-          "崆峒区",
-          "泾川县",
-          "灵台县",
-          "崇信县",
-          "庄浪县",
-          "静宁县",
-          "华亭市"
-        ]
-      },
-      {
-        "CityID": 219,
-        "name": "酒泉市",
-        "ProID": 22,
-        "CitySort": 219,
-        "area": [
-          "肃州区",
-          "金塔县",
-          "瓜州县",
-          "肃北蒙古族自治县",
-          "阿克塞哈萨克族自治县",
-          "玉门市",
-          "敦煌市"
-        ]
-      },
-      {
-        "CityID": 220,
-        "name": "庆阳市",
-        "ProID": 22,
-        "CitySort": 220,
-        "area": [
-          "西峰区",
-          "庆城县",
-          "环县",
-          "华池县",
-          "合水县",
-          "正宁县",
-          "宁县",
-          "镇原县"
-        ]
-      },
-      {
-        "CityID": 221,
-        "name": "定西市",
-        "ProID": 22,
-        "CitySort": 221,
-        "area": [
-          "安定区",
-          "通渭县",
-          "陇西县",
-          "渭源县",
-          "临洮县",
-          "漳县",
-          "岷县"
-        ]
-      },
-      {
-        "CityID": 222,
-        "name": "陇南市",
-        "ProID": 22,
-        "CitySort": 222,
-        "area": [
-          "武都区",
-          "成县",
-          "文县",
-          "宕昌县",
-          "康县",
-          "西和县",
-          "礼县",
-          "徽县",
-          "两当县"
-        ]
-      },
-      {
-        "CityID": 223,
-        "name": "临夏回族自治州",
-        "ProID": 22,
-        "CitySort": 223,
-        "area": [
-          "临夏市",
-          "临夏县",
-          "康乐县",
-          "永靖县",
-          "广河县",
-          "和政县",
-          "东乡族自治县",
-          "积石山保安族东乡族撒拉族自治县"
-        ]
-      },
-      {
-        "CityID": 224,
-        "name": "甘南藏族自治州",
-        "ProID": 22,
-        "CitySort": 224,
-        "area": [
-          "合作市",
-          "临潭县",
-          "卓尼县",
-          "舟曲县",
-          "迭部县",
-          "玛曲县",
-          "碌曲县",
-          "夏河县"
+    ProID: 22,
+    name: '甘肃省',
+    ProSort: 21,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 211,
+        name: '兰州市',
+        ProID: 22,
+        CitySort: 211,
+        area: [
+          '城关区',
+          '七里河区',
+          '西固区',
+          '安宁区',
+          '红古区',
+          '永登县',
+          '皋兰县',
+          '榆中县',
+          '兰州新区'
+        ]
+      },
+      {
+        CityID: 212,
+        name: '金昌市',
+        ProID: 22,
+        CitySort: 212,
+        area: ['金川区', '永昌县']
+      },
+      {
+        CityID: 213,
+        name: '白银市',
+        ProID: 22,
+        CitySort: 213,
+        area: ['白银区', '平川区', '靖远县', '会宁县', '景泰县']
+      },
+      {
+        CityID: 214,
+        name: '天水市',
+        ProID: 22,
+        CitySort: 214,
+        area: [
+          '秦州区',
+          '麦积区',
+          '清水县',
+          '秦安县',
+          '甘谷县',
+          '武山县',
+          '张家川回族自治县'
+        ]
+      },
+      {
+        CityID: 215,
+        name: '嘉峪关市',
+        ProID: 22,
+        CitySort: 215,
+        area: ['嘉峪关市']
+      },
+      {
+        CityID: 216,
+        name: '武威市',
+        ProID: 22,
+        CitySort: 216,
+        area: ['凉州区', '民勤县', '古浪县', '天祝藏族自治县']
+      },
+      {
+        CityID: 217,
+        name: '张掖市',
+        ProID: 22,
+        CitySort: 217,
+        area: [
+          '甘州区',
+          '肃南裕固族自治县',
+          '民乐县',
+          '临泽县',
+          '高台县',
+          '山丹县'
+        ]
+      },
+      {
+        CityID: 218,
+        name: '平凉市',
+        ProID: 22,
+        CitySort: 218,
+        area: [
+          '崆峒区',
+          '泾川县',
+          '灵台县',
+          '崇信县',
+          '庄浪县',
+          '静宁县',
+          '华亭市'
+        ]
+      },
+      {
+        CityID: 219,
+        name: '酒泉市',
+        ProID: 22,
+        CitySort: 219,
+        area: [
+          '肃州区',
+          '金塔县',
+          '瓜州县',
+          '肃北蒙古族自治县',
+          '阿克塞哈萨克族自治县',
+          '玉门市',
+          '敦煌市'
+        ]
+      },
+      {
+        CityID: 220,
+        name: '庆阳市',
+        ProID: 22,
+        CitySort: 220,
+        area: [
+          '西峰区',
+          '庆城县',
+          '环县',
+          '华池县',
+          '合水县',
+          '正宁县',
+          '宁县',
+          '镇原县'
+        ]
+      },
+      {
+        CityID: 221,
+        name: '定西市',
+        ProID: 22,
+        CitySort: 221,
+        area: ['安定区', '通渭县', '陇西县', '渭源县', '临洮县', '漳县', '岷县']
+      },
+      {
+        CityID: 222,
+        name: '陇南市',
+        ProID: 22,
+        CitySort: 222,
+        area: [
+          '武都区',
+          '成县',
+          '文县',
+          '宕昌县',
+          '康县',
+          '西和县',
+          '礼县',
+          '徽县',
+          '两当县'
+        ]
+      },
+      {
+        CityID: 223,
+        name: '临夏回族自治州',
+        ProID: 22,
+        CitySort: 223,
+        area: [
+          '临夏市',
+          '临夏县',
+          '康乐县',
+          '永靖县',
+          '广河县',
+          '和政县',
+          '东乡族自治县',
+          '积石山保安族东乡族撒拉族自治县'
+        ]
+      },
+      {
+        CityID: 224,
+        name: '甘南藏族自治州',
+        ProID: 22,
+        CitySort: 224,
+        area: [
+          '合作市',
+          '临潭县',
+          '卓尼县',
+          '舟曲县',
+          '迭部县',
+          '玛曲县',
+          '碌曲县',
+          '夏河县'
         ]
       }
     ]
   },
   {
-    "ProID": 23,
-    "name": "陕西省",
-    "ProSort": 27,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 297,
-        "name": "西安市",
-        "ProID": 23,
-        "CitySort": 297,
-        "area": [
-          "新城区",
-          "碑林区",
-          "莲湖区",
-          "灞桥区",
-          "未央区",
-          "雁塔区",
-          "阎良区",
-          "临潼区",
-          "长安区",
-          "高陵区",
-          "鄠邑区",
-          "蓝田县",
-          "周至县"
-        ]
-      },
-      {
-        "CityID": 298,
-        "name": "咸阳市",
-        "ProID": 23,
-        "CitySort": 298,
-        "area": [
-          "秦都区",
-          "杨陵区",
-          "渭城区",
-          "三原县",
-          "泾阳县",
-          "乾县",
-          "礼泉县",
-          "永寿县",
-          "长武县",
-          "旬邑县",
-          "淳化县",
-          "武功县",
-          "兴平市",
-          "彬州市"
-        ]
-      },
-      {
-        "CityID": 299,
-        "name": "延安市",
-        "ProID": 23,
-        "CitySort": 299,
-        "area": [
-          "宝塔区",
-          "安塞区",
-          "延长县",
-          "延川县",
-          "志丹县",
-          "吴起县",
-          "甘泉县",
-          "富县",
-          "洛川县",
-          "宜川县",
-          "黄龙县",
-          "黄陵县",
-          "子长市"
-        ]
-      },
-      {
-        "CityID": 300,
-        "name": "榆林市",
-        "ProID": 23,
-        "CitySort": 300,
-        "area": [
-          "定边县",
-          "绥德县",
-          "米脂县",
-          "佳县",
-          "吴堡县",
-          "清涧县",
-          "子洲县",
-          "神木市",
-          "榆阳区",
-          "横山区",
-          "府谷县",
-          "靖边县"
-        ]
-      },
-      {
-        "CityID": 301,
-        "name": "渭南市",
-        "ProID": 23,
-        "CitySort": 301,
-        "area": [
-          "临渭区",
-          "华州区",
-          "潼关县",
-          "大荔县",
-          "合阳县",
-          "澄城县",
-          "蒲城县",
-          "白水县",
-          "富平县",
-          "韩城市",
-          "华阴市"
-        ]
-      },
-      {
-        "CityID": 302,
-        "name": "商洛市",
-        "ProID": 23,
-        "CitySort": 302,
-        "area": [
-          "商州区",
-          "洛南县",
-          "丹凤县",
-          "商南县",
-          "山阳县",
-          "镇安县",
-          "柞水县"
-        ]
-      },
-      {
-        "CityID": 303,
-        "name": "安康市",
-        "ProID": 23,
-        "CitySort": 303,
-        "area": [
-          "汉滨区",
-          "汉阴县",
-          "石泉县",
-          "宁陕县",
-          "紫阳县",
-          "岚皋县",
-          "平利县",
-          "镇坪县",
-          "旬阳县",
-          "白河县"
-        ]
-      },
-      {
-        "CityID": 304,
-        "name": "汉中市",
-        "ProID": 23,
-        "CitySort": 304,
-        "area": [
-          "汉台区",
-          "南郑区",
-          "城固县",
-          "洋县",
-          "西乡县",
-          "勉县",
-          "宁强县",
-          "略阳县",
-          "镇巴县",
-          "留坝县",
-          "佛坪县"
-        ]
-      },
-      {
-        "CityID": 305,
-        "name": "宝鸡市",
-        "ProID": 23,
-        "CitySort": 305,
-        "area": [
-          "渭滨区",
-          "金台区",
-          "陈仓区",
-          "凤翔县",
-          "岐山县",
-          "扶风县",
-          "眉县",
-          "陇县",
-          "千阳县",
-          "麟游县",
-          "凤县",
-          "太白县"
-        ]
-      },
-      {
-        "CityID": 306,
-        "name": "铜川市",
-        "ProID": 23,
-        "CitySort": 306,
-        "area": [
-          "王益区",
-          "印台区",
-          "耀州区",
-          "宜君县"
-        ]
+    ProID: 23,
+    name: '陕西省',
+    ProSort: 27,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 297,
+        name: '西安市',
+        ProID: 23,
+        CitySort: 297,
+        area: [
+          '新城区',
+          '碑林区',
+          '莲湖区',
+          '灞桥区',
+          '未央区',
+          '雁塔区',
+          '阎良区',
+          '临潼区',
+          '长安区',
+          '高陵区',
+          '鄠邑区',
+          '蓝田县',
+          '周至县'
+        ]
+      },
+      {
+        CityID: 298,
+        name: '咸阳市',
+        ProID: 23,
+        CitySort: 298,
+        area: [
+          '秦都区',
+          '杨陵区',
+          '渭城区',
+          '三原县',
+          '泾阳县',
+          '乾县',
+          '礼泉县',
+          '永寿县',
+          '长武县',
+          '旬邑县',
+          '淳化县',
+          '武功县',
+          '兴平市',
+          '彬州市'
+        ]
+      },
+      {
+        CityID: 299,
+        name: '延安市',
+        ProID: 23,
+        CitySort: 299,
+        area: [
+          '宝塔区',
+          '安塞区',
+          '延长县',
+          '延川县',
+          '志丹县',
+          '吴起县',
+          '甘泉县',
+          '富县',
+          '洛川县',
+          '宜川县',
+          '黄龙县',
+          '黄陵县',
+          '子长市'
+        ]
+      },
+      {
+        CityID: 300,
+        name: '榆林市',
+        ProID: 23,
+        CitySort: 300,
+        area: [
+          '定边县',
+          '绥德县',
+          '米脂县',
+          '佳县',
+          '吴堡县',
+          '清涧县',
+          '子洲县',
+          '神木市',
+          '榆阳区',
+          '横山区',
+          '府谷县',
+          '靖边县'
+        ]
+      },
+      {
+        CityID: 301,
+        name: '渭南市',
+        ProID: 23,
+        CitySort: 301,
+        area: [
+          '临渭区',
+          '华州区',
+          '潼关县',
+          '大荔县',
+          '合阳县',
+          '澄城县',
+          '蒲城县',
+          '白水县',
+          '富平县',
+          '韩城市',
+          '华阴市'
+        ]
+      },
+      {
+        CityID: 302,
+        name: '商洛市',
+        ProID: 23,
+        CitySort: 302,
+        area: [
+          '商州区',
+          '洛南县',
+          '丹凤县',
+          '商南县',
+          '山阳县',
+          '镇安县',
+          '柞水县'
+        ]
+      },
+      {
+        CityID: 303,
+        name: '安康市',
+        ProID: 23,
+        CitySort: 303,
+        area: [
+          '汉滨区',
+          '汉阴县',
+          '石泉县',
+          '宁陕县',
+          '紫阳县',
+          '岚皋县',
+          '平利县',
+          '镇坪县',
+          '旬阳县',
+          '白河县'
+        ]
+      },
+      {
+        CityID: 304,
+        name: '汉中市',
+        ProID: 23,
+        CitySort: 304,
+        area: [
+          '汉台区',
+          '南郑区',
+          '城固县',
+          '洋县',
+          '西乡县',
+          '勉县',
+          '宁强县',
+          '略阳县',
+          '镇巴县',
+          '留坝县',
+          '佛坪县'
+        ]
+      },
+      {
+        CityID: 305,
+        name: '宝鸡市',
+        ProID: 23,
+        CitySort: 305,
+        area: [
+          '渭滨区',
+          '金台区',
+          '陈仓区',
+          '凤翔县',
+          '岐山县',
+          '扶风县',
+          '眉县',
+          '陇县',
+          '千阳县',
+          '麟游县',
+          '凤县',
+          '太白县'
+        ]
+      },
+      {
+        CityID: 306,
+        name: '铜川市',
+        ProID: 23,
+        CitySort: 306,
+        area: ['王益区', '印台区', '耀州区', '宜君县']
       }
     ]
   },
   {
-    "ProID": 24,
-    "name": "新疆维吾尔自治区",
-    "ProSort": 31,
-    "ProRemark": "自治区",
-    "city": [
-      {
-        "CityID": 333,
-        "name": "塔城地区",
-        "ProID": 24,
-        "CitySort": 333,
-        "area": [
-          "塔城市",
-          "乌苏市",
-          "额敏县",
-          "沙湾县",
-          "托里县",
-          "裕民县",
-          "和布克赛尔蒙古自治县"
-        ]
-      },
-      {
-        "CityID": 334,
-        "name": "哈密市",
-        "ProID": 24,
-        "CitySort": 334,
-        "area": [
-          "伊州区",
-          "巴里坤哈萨克自治县",
-          "伊吾县"
-        ]
-      },
-      {
-        "CityID": 335,
-        "name": "和田地区",
-        "ProID": 24,
-        "CitySort": 335,
-        "area": [
-          "和田市",
-          "和田县",
-          "墨玉县",
-          "皮山县",
-          "洛浦县",
-          "策勒县",
-          "于田县",
-          "民丰县"
-        ]
-      },
-      {
-        "CityID": 336,
-        "name": "阿勒泰地区",
-        "ProID": 24,
-        "CitySort": 336,
-        "area": [
-          "阿勒泰市",
-          "布尔津县",
-          "富蕴县",
-          "福海县",
-          "哈巴河县",
-          "青河县",
-          "吉木乃县"
-        ]
-      },
-      {
-        "CityID": 337,
-        "name": "克孜勒苏柯尔克孜自治州",
-        "ProID": 24,
-        "CitySort": 337,
-        "area": [
-          "阿图什市",
-          "阿克陶县",
-          "阿合奇县",
-          "乌恰县"
-        ]
-      },
-      {
-        "CityID": 338,
-        "name": "博尔塔拉蒙古自治州",
-        "ProID": 24,
-        "CitySort": 338,
-        "area": [
-          "博乐市",
-          "阿拉山口市",
-          "精河县",
-          "温泉县"
-        ]
-      },
-      {
-        "CityID": 339,
-        "name": "克拉玛依市",
-        "ProID": 24,
-        "CitySort": 339,
-        "area": [
-          "独山子区",
-          "克拉玛依区",
-          "白碱滩区",
-          "乌尔禾区"
-        ]
-      },
-      {
-        "CityID": 340,
-        "name": "乌鲁木齐市",
-        "ProID": 24,
-        "CitySort": 340,
-        "area": [
-          "天山区",
-          "沙依巴克区",
-          "新市区",
-          "水磨沟区",
-          "头屯河区",
-          "达坂城区",
-          "米东区",
-          "乌鲁木齐县"
-        ]
-      },
-      {
-        "CityID": 341,
-        "name": "石河子市",
-        "ProID": 24,
-        "CitySort": 341,
-        "area": []
-      },
-      {
-        "CityID": 342,
-        "name": "昌吉回族自治州",
-        "ProID": 24,
-        "CitySort": 342,
-        "area": [
-          "昌吉市",
-          "阜康市",
-          "呼图壁县",
-          "玛纳斯县",
-          "奇台县",
-          "吉木萨尔县",
-          "木垒哈萨克自治县"
-        ]
-      },
-      {
-        "CityID": 343,
-        "name": "五家渠市",
-        "ProID": 24,
-        "CitySort": 343,
-        "area": []
-      },
-      {
-        "CityID": 344,
-        "name": "吐鲁番市",
-        "ProID": 24,
-        "CitySort": 344,
-        "area": [
-          "高昌区",
-          "鄯善县",
-          "托克逊县"
-        ]
-      },
-      {
-        "CityID": 345,
-        "name": "巴音郭楞蒙古自治州",
-        "ProID": 24,
-        "CitySort": 345,
-        "area": [
-          "库尔勒市",
-          "轮台县",
-          "尉犁县",
-          "若羌县",
-          "且末县",
-          "焉耆回族自治县",
-          "和静县",
-          "和硕县",
-          "博湖县",
-          "库尔勒经济技术开发区"
-        ]
-      },
-      {
-        "CityID": 346,
-        "name": "阿克苏地区",
-        "ProID": 24,
-        "CitySort": 346,
-        "area": [
-          "阿克苏市",
-          "库车市",
-          "温宿县",
-          "沙雅县",
-          "新和县",
-          "拜城县",
-          "乌什县",
-          "阿瓦提县",
-          "柯坪县"
-        ]
-      },
-      {
-        "CityID": 347,
-        "name": "阿拉尔市",
-        "ProID": 24,
-        "CitySort": 347,
-        "area": []
-      },
-      {
-        "CityID": 348,
-        "name": "喀什地区",
-        "ProID": 24,
-        "CitySort": 348,
-        "area": [
-          "喀什市",
-          "疏附县",
-          "疏勒县",
-          "英吉沙县",
-          "泽普县",
-          "莎车县",
-          "叶城县",
-          "麦盖提县",
-          "岳普湖县",
-          "伽师县",
-          "巴楚县",
-          "塔什库尔干塔吉克自治县"
-        ]
-      },
-      {
-        "CityID": 349,
-        "name": "图木舒克市",
-        "ProID": 24,
-        "CitySort": 349,
-        "area": []
-      },
-      {
-        "CityID": 350,
-        "name": "伊犁哈萨克自治州",
-        "ProID": 24,
-        "CitySort": 350,
-        "area": [
-          "伊宁市",
-          "奎屯市",
-          "霍尔果斯市",
-          "伊宁县",
-          "察布查尔锡伯自治县",
-          "霍城县",
-          "巩留县",
-          "新源县",
-          "昭苏县",
-          "特克斯县",
-          "尼勒克县"
-        ]
-      },
-      {
-        "CityID": 381,
-        "name": "北屯市",
-        "ProID": 24,
-        "CitySort": 381,
-        "area": []
-      },
-      {
-        "CityID": 382,
-        "name": "铁门关市",
-        "ProID": 24,
-        "CitySort": 382,
-        "area": []
-      },
-      {
-        "CityID": 383,
-        "name": "双河市",
-        "ProID": 24,
-        "CitySort": 383,
-        "area": []
-      },
-      {
-        "CityID": 384,
-        "name": "可克达拉市",
-        "ProID": 24,
-        "CitySort": 384,
-        "area": []
-      },
-      {
-        "CityID": 385,
-        "name": "昆玉市",
-        "ProID": 24,
-        "CitySort": 385,
-        "area": []
-      },
-      {
-        "CityID": 386,
-        "name": "胡杨河市",
-        "ProID": 24,
-        "CitySort": 386,
-        "area": []
-      },
-      {
-        "CityID": 387,
-        "name": "新星市",
-        "ProID": 24,
-        "CitySort": 387,
-        "area": []
+    ProID: 24,
+    name: '新疆维吾尔自治区',
+    ProSort: 31,
+    ProRemark: '自治区',
+    city: [
+      {
+        CityID: 333,
+        name: '塔城地区',
+        ProID: 24,
+        CitySort: 333,
+        area: [
+          '塔城市',
+          '乌苏市',
+          '额敏县',
+          '沙湾县',
+          '托里县',
+          '裕民县',
+          '和布克赛尔蒙古自治县'
+        ]
+      },
+      {
+        CityID: 334,
+        name: '哈密市',
+        ProID: 24,
+        CitySort: 334,
+        area: ['伊州区', '巴里坤哈萨克自治县', '伊吾县']
+      },
+      {
+        CityID: 335,
+        name: '和田地区',
+        ProID: 24,
+        CitySort: 335,
+        area: [
+          '和田市',
+          '和田县',
+          '墨玉县',
+          '皮山县',
+          '洛浦县',
+          '策勒县',
+          '于田县',
+          '民丰县'
+        ]
+      },
+      {
+        CityID: 336,
+        name: '阿勒泰地区',
+        ProID: 24,
+        CitySort: 336,
+        area: [
+          '阿勒泰市',
+          '布尔津县',
+          '富蕴县',
+          '福海县',
+          '哈巴河县',
+          '青河县',
+          '吉木乃县'
+        ]
+      },
+      {
+        CityID: 337,
+        name: '克孜勒苏柯尔克孜自治州',
+        ProID: 24,
+        CitySort: 337,
+        area: ['阿图什市', '阿克陶县', '阿合奇县', '乌恰县']
+      },
+      {
+        CityID: 338,
+        name: '博尔塔拉蒙古自治州',
+        ProID: 24,
+        CitySort: 338,
+        area: ['博乐市', '阿拉山口市', '精河县', '温泉县']
+      },
+      {
+        CityID: 339,
+        name: '克拉玛依市',
+        ProID: 24,
+        CitySort: 339,
+        area: ['独山子区', '克拉玛依区', '白碱滩区', '乌尔禾区']
+      },
+      {
+        CityID: 340,
+        name: '乌鲁木齐市',
+        ProID: 24,
+        CitySort: 340,
+        area: [
+          '天山区',
+          '沙依巴克区',
+          '新市区',
+          '水磨沟区',
+          '头屯河区',
+          '达坂城区',
+          '米东区',
+          '乌鲁木齐县'
+        ]
+      },
+      {
+        CityID: 341,
+        name: '石河子市',
+        ProID: 24,
+        CitySort: 341,
+        area: []
+      },
+      {
+        CityID: 342,
+        name: '昌吉回族自治州',
+        ProID: 24,
+        CitySort: 342,
+        area: [
+          '昌吉市',
+          '阜康市',
+          '呼图壁县',
+          '玛纳斯县',
+          '奇台县',
+          '吉木萨尔县',
+          '木垒哈萨克自治县'
+        ]
+      },
+      {
+        CityID: 343,
+        name: '五家渠市',
+        ProID: 24,
+        CitySort: 343,
+        area: []
+      },
+      {
+        CityID: 344,
+        name: '吐鲁番市',
+        ProID: 24,
+        CitySort: 344,
+        area: ['高昌区', '鄯善县', '托克逊县']
+      },
+      {
+        CityID: 345,
+        name: '巴音郭楞蒙古自治州',
+        ProID: 24,
+        CitySort: 345,
+        area: [
+          '库尔勒市',
+          '轮台县',
+          '尉犁县',
+          '若羌县',
+          '且末县',
+          '焉耆回族自治县',
+          '和静县',
+          '和硕县',
+          '博湖县',
+          '库尔勒经济技术开发区'
+        ]
+      },
+      {
+        CityID: 346,
+        name: '阿克苏地区',
+        ProID: 24,
+        CitySort: 346,
+        area: [
+          '阿克苏市',
+          '库车市',
+          '温宿县',
+          '沙雅县',
+          '新和县',
+          '拜城县',
+          '乌什县',
+          '阿瓦提县',
+          '柯坪县'
+        ]
+      },
+      {
+        CityID: 347,
+        name: '阿拉尔市',
+        ProID: 24,
+        CitySort: 347,
+        area: []
+      },
+      {
+        CityID: 348,
+        name: '喀什地区',
+        ProID: 24,
+        CitySort: 348,
+        area: [
+          '喀什市',
+          '疏附县',
+          '疏勒县',
+          '英吉沙县',
+          '泽普县',
+          '莎车县',
+          '叶城县',
+          '麦盖提县',
+          '岳普湖县',
+          '伽师县',
+          '巴楚县',
+          '塔什库尔干塔吉克自治县'
+        ]
+      },
+      {
+        CityID: 349,
+        name: '图木舒克市',
+        ProID: 24,
+        CitySort: 349,
+        area: []
+      },
+      {
+        CityID: 350,
+        name: '伊犁哈萨克自治州',
+        ProID: 24,
+        CitySort: 350,
+        area: [
+          '伊宁市',
+          '奎屯市',
+          '霍尔果斯市',
+          '伊宁县',
+          '察布查尔锡伯自治县',
+          '霍城县',
+          '巩留县',
+          '新源县',
+          '昭苏县',
+          '特克斯县',
+          '尼勒克县'
+        ]
+      },
+      {
+        CityID: 381,
+        name: '北屯市',
+        ProID: 24,
+        CitySort: 381,
+        area: []
+      },
+      {
+        CityID: 382,
+        name: '铁门关市',
+        ProID: 24,
+        CitySort: 382,
+        area: []
+      },
+      {
+        CityID: 383,
+        name: '双河市',
+        ProID: 24,
+        CitySort: 383,
+        area: []
+      },
+      {
+        CityID: 384,
+        name: '可克达拉市',
+        ProID: 24,
+        CitySort: 384,
+        area: []
+      },
+      {
+        CityID: 385,
+        name: '昆玉市',
+        ProID: 24,
+        CitySort: 385,
+        area: []
+      },
+      {
+        CityID: 386,
+        name: '胡杨河市',
+        ProID: 24,
+        CitySort: 386,
+        area: []
+      },
+      {
+        CityID: 387,
+        name: '新星市',
+        ProID: 24,
+        CitySort: 387,
+        area: []
       }
     ]
   },
   {
-    "ProID": 25,
-    "name": "青海省",
-    "ProSort": 26,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 289,
-        "name": "海北藏族自治州",
-        "ProID": 25,
-        "CitySort": 289,
-        "area": [
-          "门源回族自治县",
-          "祁连县",
-          "海晏县",
-          "刚察县"
-        ]
-      },
-      {
-        "CityID": 290,
-        "name": "西宁市",
-        "ProID": 25,
-        "CitySort": 290,
-        "area": [
-          "城东区",
-          "城中区",
-          "城西区",
-          "城北区",
-          "湟中区",
-          "大通回族土族自治县",
-          "湟源县"
-        ]
-      },
-      {
-        "CityID": 291,
-        "name": "海东市",
-        "ProID": 25,
-        "CitySort": 291,
-        "area": [
-          "乐都区",
-          "平安区",
-          "民和回族土族自治县",
-          "互助土族自治县",
-          "化隆回族自治县",
-          "循化撒拉族自治县"
-        ]
-      },
-      {
-        "CityID": 292,
-        "name": "黄南藏族自治州",
-        "ProID": 25,
-        "CitySort": 292,
-        "area": [
-          "同仁县",
-          "尖扎县",
-          "泽库县",
-          "河南蒙古族自治县"
-        ]
-      },
-      {
-        "CityID": 293,
-        "name": "海南藏族自治州",
-        "ProID": 25,
-        "CitySort": 293,
-        "area": [
-          "共和县",
-          "同德县",
-          "贵德县",
-          "兴海县",
-          "贵南县"
-        ]
-      },
-      {
-        "CityID": 294,
-        "name": "果洛藏族自治州",
-        "ProID": 25,
-        "CitySort": 294,
-        "area": [
-          "玛沁县",
-          "班玛县",
-          "甘德县",
-          "达日县",
-          "久治县",
-          "玛多县"
-        ]
-      },
-      {
-        "CityID": 295,
-        "name": "玉树藏族自治州",
-        "ProID": 25,
-        "CitySort": 295,
-        "area": [
-          "玉树市",
-          "杂多县",
-          "称多县",
-          "治多县",
-          "囊谦县",
-          "曲麻莱县"
-        ]
-      },
-      {
-        "CityID": 296,
-        "name": "海西蒙古族藏族自治州",
-        "ProID": 25,
-        "CitySort": 296,
-        "area": [
-          "格尔木市",
-          "德令哈市",
-          "茫崖市",
-          "乌兰县",
-          "都兰县",
-          "天峻县",
-          "大柴旦行政委员会"
+    ProID: 25,
+    name: '青海省',
+    ProSort: 26,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 289,
+        name: '海北藏族自治州',
+        ProID: 25,
+        CitySort: 289,
+        area: ['门源回族自治县', '祁连县', '海晏县', '刚察县']
+      },
+      {
+        CityID: 290,
+        name: '西宁市',
+        ProID: 25,
+        CitySort: 290,
+        area: [
+          '城东区',
+          '城中区',
+          '城西区',
+          '城北区',
+          '湟中区',
+          '大通回族土族自治县',
+          '湟源县'
+        ]
+      },
+      {
+        CityID: 291,
+        name: '海东市',
+        ProID: 25,
+        CitySort: 291,
+        area: [
+          '乐都区',
+          '平安区',
+          '民和回族土族自治县',
+          '互助土族自治县',
+          '化隆回族自治县',
+          '循化撒拉族自治县'
+        ]
+      },
+      {
+        CityID: 292,
+        name: '黄南藏族自治州',
+        ProID: 25,
+        CitySort: 292,
+        area: ['同仁县', '尖扎县', '泽库县', '河南蒙古族自治县']
+      },
+      {
+        CityID: 293,
+        name: '海南藏族自治州',
+        ProID: 25,
+        CitySort: 293,
+        area: ['共和县', '同德县', '贵德县', '兴海县', '贵南县']
+      },
+      {
+        CityID: 294,
+        name: '果洛藏族自治州',
+        ProID: 25,
+        CitySort: 294,
+        area: ['玛沁县', '班玛县', '甘德县', '达日县', '久治县', '玛多县']
+      },
+      {
+        CityID: 295,
+        name: '玉树藏族自治州',
+        ProID: 25,
+        CitySort: 295,
+        area: ['玉树市', '杂多县', '称多县', '治多县', '囊谦县', '曲麻莱县']
+      },
+      {
+        CityID: 296,
+        name: '海西蒙古族藏族自治州',
+        ProID: 25,
+        CitySort: 296,
+        area: [
+          '格尔木市',
+          '德令哈市',
+          '茫崖市',
+          '乌兰县',
+          '都兰县',
+          '天峻县',
+          '大柴旦行政委员会'
         ]
       }
     ]
   },
   {
-    "ProID": 26,
-    "name": "宁夏回族自治区",
-    "ProSort": 30,
-    "ProRemark": "自治区",
-    "city": [
-      {
-        "CityID": 328,
-        "name": "银川市",
-        "ProID": 26,
-        "CitySort": 328,
-        "area": [
-          "兴庆区",
-          "西夏区",
-          "金凤区",
-          "永宁县",
-          "贺兰县",
-          "灵武市"
-        ]
-      },
-      {
-        "CityID": 329,
-        "name": "石嘴山市",
-        "ProID": 26,
-        "CitySort": 329,
-        "area": [
-          "大武口区",
-          "惠农区",
-          "平罗县"
-        ]
-      },
-      {
-        "CityID": 330,
-        "name": "吴忠市",
-        "ProID": 26,
-        "CitySort": 330,
-        "area": [
-          "利通区",
-          "红寺堡区",
-          "盐池县",
-          "同心县",
-          "青铜峡市"
-        ]
-      },
-      {
-        "CityID": 331,
-        "name": "固原市",
-        "ProID": 26,
-        "CitySort": 331,
-        "area": [
-          "原州区",
-          "西吉县",
-          "隆德县",
-          "泾源县",
-          "彭阳县"
-        ]
-      },
-      {
-        "CityID": 332,
-        "name": "中卫市",
-        "ProID": 26,
-        "CitySort": 332,
-        "area": [
-          "沙坡头区",
-          "中宁县",
-          "海原县"
-        ]
+    ProID: 26,
+    name: '宁夏回族自治区',
+    ProSort: 30,
+    ProRemark: '自治区',
+    city: [
+      {
+        CityID: 328,
+        name: '银川市',
+        ProID: 26,
+        CitySort: 328,
+        area: ['兴庆区', '西夏区', '金凤区', '永宁县', '贺兰县', '灵武市']
+      },
+      {
+        CityID: 329,
+        name: '石嘴山市',
+        ProID: 26,
+        CitySort: 329,
+        area: ['大武口区', '惠农区', '平罗县']
+      },
+      {
+        CityID: 330,
+        name: '吴忠市',
+        ProID: 26,
+        CitySort: 330,
+        area: ['利通区', '红寺堡区', '盐池县', '同心县', '青铜峡市']
+      },
+      {
+        CityID: 331,
+        name: '固原市',
+        ProID: 26,
+        CitySort: 331,
+        area: ['原州区', '西吉县', '隆德县', '泾源县', '彭阳县']
+      },
+      {
+        CityID: 332,
+        name: '中卫市',
+        ProID: 26,
+        CitySort: 332,
+        area: ['沙坡头区', '中宁县', '海原县']
       }
     ]
   },
   {
-    "ProID": 27,
-    "name": "重庆市",
-    "ProSort": 4,
-    "ProRemark": "直辖市",
-    "city": [
-      {
-        "CityID": 4,
-        "name": "重庆市",
-        "ProID": 27,
-        "CitySort": 4,
-        "area": [
-          "城口县",
-          "丰都县",
-          "垫江县",
-          "忠县",
-          "云阳县",
-          "奉节县",
-          "巫山县",
-          "巫溪县",
-          "石柱土家族自治县",
-          "秀山土家族苗族自治县",
-          "酉阳土家族苗族自治县",
-          "彭水苗族土家族自治县",
-          "万州区",
-          "涪陵区",
-          "渝中区",
-          "大渡口区",
-          "江北区",
-          "沙坪坝区",
-          "九龙坡区",
-          "南岸区",
-          "北碚区",
-          "綦江区",
-          "大足区",
-          "渝北区",
-          "巴南区",
-          "黔江区",
-          "长寿区",
-          "江津区",
-          "合川区",
-          "永川区",
-          "南川区",
-          "璧山区",
-          "铜梁区",
-          "潼南区",
-          "荣昌区",
-          "开州区",
-          "梁平区",
-          "武隆区"
+    ProID: 27,
+    name: '重庆市',
+    ProSort: 4,
+    ProRemark: '直辖市',
+    city: [
+      {
+        CityID: 4,
+        name: '重庆市',
+        ProID: 27,
+        CitySort: 4,
+        area: [
+          '城口县',
+          '丰都县',
+          '垫江县',
+          '忠县',
+          '云阳县',
+          '奉节县',
+          '巫山县',
+          '巫溪县',
+          '石柱土家族自治县',
+          '秀山土家族苗族自治县',
+          '酉阳土家族苗族自治县',
+          '彭水苗族土家族自治县',
+          '万州区',
+          '涪陵区',
+          '渝中区',
+          '大渡口区',
+          '江北区',
+          '沙坪坝区',
+          '九龙坡区',
+          '南岸区',
+          '北碚区',
+          '綦江区',
+          '大足区',
+          '渝北区',
+          '巴南区',
+          '黔江区',
+          '长寿区',
+          '江津区',
+          '合川区',
+          '永川区',
+          '南川区',
+          '璧山区',
+          '铜梁区',
+          '潼南区',
+          '荣昌区',
+          '开州区',
+          '梁平区',
+          '武隆区'
         ]
       }
     ]
   },
   {
-    "ProID": 28,
-    "name": "四川省",
-    "ProSort": 22,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 225,
-        "name": "成都市",
-        "ProID": 28,
-        "CitySort": 225,
-        "area": [
-          "锦江区",
-          "青羊区",
-          "金牛区",
-          "武侯区",
-          "成华区",
-          "龙泉驿区",
-          "青白江区",
-          "新都区",
-          "温江区",
-          "双流区",
-          "郫都区",
-          "新津区",
-          "金堂县",
-          "大邑县",
-          "蒲江县",
-          "都江堰市",
-          "彭州市",
-          "邛崃市",
-          "崇州市",
-          "简阳市"
-        ]
-      },
-      {
-        "CityID": 226,
-        "name": "攀枝花市",
-        "ProID": 28,
-        "CitySort": 226,
-        "area": [
-          "东区",
-          "西区",
-          "仁和区",
-          "米易县",
-          "盐边县"
-        ]
-      },
-      {
-        "CityID": 227,
-        "name": "自贡市",
-        "ProID": 28,
-        "CitySort": 227,
-        "area": [
-          "自流井区",
-          "贡井区",
-          "大安区",
-          "沿滩区",
-          "荣县",
-          "富顺县"
-        ]
-      },
-      {
-        "CityID": 228,
-        "name": "绵阳市",
-        "ProID": 28,
-        "CitySort": 228,
-        "area": [
-          "涪城区",
-          "游仙区",
-          "安州区",
-          "三台县",
-          "盐亭县",
-          "梓潼县",
-          "北川羌族自治县",
-          "平武县",
-          "江油市"
-        ]
-      },
-      {
-        "CityID": 229,
-        "name": "南充市",
-        "ProID": 28,
-        "CitySort": 229,
-        "area": [
-          "顺庆区",
-          "高坪区",
-          "嘉陵区",
-          "南部县",
-          "营山县",
-          "蓬安县",
-          "仪陇县",
-          "西充县",
-          "阆中市"
-        ]
-      },
-      {
-        "CityID": 230,
-        "name": "达州市",
-        "ProID": 28,
-        "CitySort": 230,
-        "area": [
-          "通川区",
-          "达川区",
-          "宣汉县",
-          "开江县",
-          "大竹县",
-          "渠县",
-          "达州经济开发区",
-          "万源市"
-        ]
-      },
-      {
-        "CityID": 231,
-        "name": "遂宁市",
-        "ProID": 28,
-        "CitySort": 231,
-        "area": [
-          "船山区",
-          "安居区",
-          "蓬溪县",
-          "大英县",
-          "射洪市"
-        ]
-      },
-      {
-        "CityID": 232,
-        "name": "广安市",
-        "ProID": 28,
-        "CitySort": 232,
-        "area": [
-          "广安区",
-          "前锋区",
-          "岳池县",
-          "武胜县",
-          "邻水县",
-          "华蓥市"
-        ]
-      },
-      {
-        "CityID": 233,
-        "name": "巴中市",
-        "ProID": 28,
-        "CitySort": 233,
-        "area": [
-          "巴州区",
-          "恩阳区",
-          "通江县",
-          "南江县",
-          "平昌县",
-          "巴中经济开发区"
-        ]
-      },
-      {
-        "CityID": 234,
-        "name": "泸州市",
-        "ProID": 28,
-        "CitySort": 234,
-        "area": [
-          "江阳区",
-          "纳溪区",
-          "龙马潭区",
-          "泸县",
-          "合江县",
-          "叙永县",
-          "古蔺县"
-        ]
-      },
-      {
-        "CityID": 235,
-        "name": "宜宾市",
-        "ProID": 28,
-        "CitySort": 235,
-        "area": [
-          "翠屏区",
-          "南溪区",
-          "叙州区",
-          "江安县",
-          "长宁县",
-          "高县",
-          "珙县",
-          "筠连县",
-          "兴文县",
-          "屏山县"
-        ]
-      },
-      {
-        "CityID": 236,
-        "name": "资阳市",
-        "ProID": 28,
-        "CitySort": 236,
-        "area": [
-          "雁江区",
-          "安岳县",
-          "乐至县"
-        ]
-      },
-      {
-        "CityID": 237,
-        "name": "内江市",
-        "ProID": 28,
-        "CitySort": 237,
-        "area": [
-          "市中区",
-          "东兴区",
-          "威远县",
-          "资中县",
-          "内江经济开发区",
-          "隆昌市"
-        ]
-      },
-      {
-        "CityID": 238,
-        "name": "乐山市",
-        "ProID": 28,
-        "CitySort": 238,
-        "area": [
-          "市中区",
-          "沙湾区",
-          "五通桥区",
-          "金口河区",
-          "犍为县",
-          "井研县",
-          "夹江县",
-          "沐川县",
-          "峨边彝族自治县",
-          "马边彝族自治县",
-          "峨眉山市"
-        ]
-      },
-      {
-        "CityID": 239,
-        "name": "眉山市",
-        "ProID": 28,
-        "CitySort": 239,
-        "area": [
-          "东坡区",
-          "彭山区",
-          "仁寿县",
-          "洪雅县",
-          "丹棱县",
-          "青神县"
-        ]
-      },
-      {
-        "CityID": 240,
-        "name": "凉山彝族自治州",
-        "ProID": 28,
-        "CitySort": 240,
-        "area": [
-          "西昌市",
-          "木里藏族自治县",
-          "盐源县",
-          "德昌县",
-          "会理县",
-          "会东县",
-          "宁南县",
-          "普格县",
-          "布拖县",
-          "金阳县",
-          "昭觉县",
-          "喜德县",
-          "冕宁县",
-          "越西县",
-          "甘洛县",
-          "美姑县",
-          "雷波县"
-        ]
-      },
-      {
-        "CityID": 241,
-        "name": "雅安市",
-        "ProID": 28,
-        "CitySort": 241,
-        "area": [
-          "雨城区",
-          "名山区",
-          "荥经县",
-          "汉源县",
-          "石棉县",
-          "天全县",
-          "芦山县",
-          "宝兴县"
-        ]
-      },
-      {
-        "CityID": 242,
-        "name": "甘孜藏族自治州",
-        "ProID": 28,
-        "CitySort": 242,
-        "area": [
-          "康定市",
-          "泸定县",
-          "丹巴县",
-          "九龙县",
-          "雅江县",
-          "道孚县",
-          "炉霍县",
-          "甘孜县",
-          "新龙县",
-          "德格县",
-          "白玉县",
-          "石渠县",
-          "色达县",
-          "理塘县",
-          "巴塘县",
-          "乡城县",
-          "稻城县",
-          "得荣县"
-        ]
-      },
-      {
-        "CityID": 243,
-        "name": "阿坝藏族羌族自治州",
-        "ProID": 28,
-        "CitySort": 243,
-        "area": [
-          "马尔康市",
-          "汶川县",
-          "理县",
-          "茂县",
-          "松潘县",
-          "九寨沟县",
-          "金川县",
-          "小金县",
-          "黑水县",
-          "壤塘县",
-          "阿坝县",
-          "若尔盖县",
-          "红原县"
-        ]
-      },
-      {
-        "CityID": 244,
-        "name": "德阳市",
-        "ProID": 28,
-        "CitySort": 244,
-        "area": [
-          "旌阳区",
-          "罗江区",
-          "中江县",
-          "广汉市",
-          "什邡市",
-          "绵竹市"
-        ]
-      },
-      {
-        "CityID": 245,
-        "name": "广元市",
-        "ProID": 28,
-        "CitySort": 245,
-        "area": [
-          "利州区",
-          "昭化区",
-          "朝天区",
-          "旺苍县",
-          "青川县",
-          "剑阁县",
-          "苍溪县"
+    ProID: 28,
+    name: '四川省',
+    ProSort: 22,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 225,
+        name: '成都市',
+        ProID: 28,
+        CitySort: 225,
+        area: [
+          '锦江区',
+          '青羊区',
+          '金牛区',
+          '武侯区',
+          '成华区',
+          '龙泉驿区',
+          '青白江区',
+          '新都区',
+          '温江区',
+          '双流区',
+          '郫都区',
+          '新津区',
+          '金堂县',
+          '大邑县',
+          '蒲江县',
+          '都江堰市',
+          '彭州市',
+          '邛崃市',
+          '崇州市',
+          '简阳市'
+        ]
+      },
+      {
+        CityID: 226,
+        name: '攀枝花市',
+        ProID: 28,
+        CitySort: 226,
+        area: ['东区', '西区', '仁和区', '米易县', '盐边县']
+      },
+      {
+        CityID: 227,
+        name: '自贡市',
+        ProID: 28,
+        CitySort: 227,
+        area: ['自流井区', '贡井区', '大安区', '沿滩区', '荣县', '富顺县']
+      },
+      {
+        CityID: 228,
+        name: '绵阳市',
+        ProID: 28,
+        CitySort: 228,
+        area: [
+          '涪城区',
+          '游仙区',
+          '安州区',
+          '三台县',
+          '盐亭县',
+          '梓潼县',
+          '北川羌族自治县',
+          '平武县',
+          '江油市'
+        ]
+      },
+      {
+        CityID: 229,
+        name: '南充市',
+        ProID: 28,
+        CitySort: 229,
+        area: [
+          '顺庆区',
+          '高坪区',
+          '嘉陵区',
+          '南部县',
+          '营山县',
+          '蓬安县',
+          '仪陇县',
+          '西充县',
+          '阆中市'
+        ]
+      },
+      {
+        CityID: 230,
+        name: '达州市',
+        ProID: 28,
+        CitySort: 230,
+        area: [
+          '通川区',
+          '达川区',
+          '宣汉县',
+          '开江县',
+          '大竹县',
+          '渠县',
+          '达州经济开发区',
+          '万源市'
+        ]
+      },
+      {
+        CityID: 231,
+        name: '遂宁市',
+        ProID: 28,
+        CitySort: 231,
+        area: ['船山区', '安居区', '蓬溪县', '大英县', '射洪市']
+      },
+      {
+        CityID: 232,
+        name: '广安市',
+        ProID: 28,
+        CitySort: 232,
+        area: ['广安区', '前锋区', '岳池县', '武胜县', '邻水县', '华蓥市']
+      },
+      {
+        CityID: 233,
+        name: '巴中市',
+        ProID: 28,
+        CitySort: 233,
+        area: [
+          '巴州区',
+          '恩阳区',
+          '通江县',
+          '南江县',
+          '平昌县',
+          '巴中经济开发区'
+        ]
+      },
+      {
+        CityID: 234,
+        name: '泸州市',
+        ProID: 28,
+        CitySort: 234,
+        area: [
+          '江阳区',
+          '纳溪区',
+          '龙马潭区',
+          '泸县',
+          '合江县',
+          '叙永县',
+          '古蔺县'
+        ]
+      },
+      {
+        CityID: 235,
+        name: '宜宾市',
+        ProID: 28,
+        CitySort: 235,
+        area: [
+          '翠屏区',
+          '南溪区',
+          '叙州区',
+          '江安县',
+          '长宁县',
+          '高县',
+          '珙县',
+          '筠连县',
+          '兴文县',
+          '屏山县'
+        ]
+      },
+      {
+        CityID: 236,
+        name: '资阳市',
+        ProID: 28,
+        CitySort: 236,
+        area: ['雁江区', '安岳县', '乐至县']
+      },
+      {
+        CityID: 237,
+        name: '内江市',
+        ProID: 28,
+        CitySort: 237,
+        area: [
+          '市中区',
+          '东兴区',
+          '威远县',
+          '资中县',
+          '内江经济开发区',
+          '隆昌市'
+        ]
+      },
+      {
+        CityID: 238,
+        name: '乐山市',
+        ProID: 28,
+        CitySort: 238,
+        area: [
+          '市中区',
+          '沙湾区',
+          '五通桥区',
+          '金口河区',
+          '犍为县',
+          '井研县',
+          '夹江县',
+          '沐川县',
+          '峨边彝族自治县',
+          '马边彝族自治县',
+          '峨眉山市'
+        ]
+      },
+      {
+        CityID: 239,
+        name: '眉山市',
+        ProID: 28,
+        CitySort: 239,
+        area: ['东坡区', '彭山区', '仁寿县', '洪雅县', '丹棱县', '青神县']
+      },
+      {
+        CityID: 240,
+        name: '凉山彝族自治州',
+        ProID: 28,
+        CitySort: 240,
+        area: [
+          '西昌市',
+          '木里藏族自治县',
+          '盐源县',
+          '德昌县',
+          '会理县',
+          '会东县',
+          '宁南县',
+          '普格县',
+          '布拖县',
+          '金阳县',
+          '昭觉县',
+          '喜德县',
+          '冕宁县',
+          '越西县',
+          '甘洛县',
+          '美姑县',
+          '雷波县'
+        ]
+      },
+      {
+        CityID: 241,
+        name: '雅安市',
+        ProID: 28,
+        CitySort: 241,
+        area: [
+          '雨城区',
+          '名山区',
+          '荥经县',
+          '汉源县',
+          '石棉县',
+          '天全县',
+          '芦山县',
+          '宝兴县'
+        ]
+      },
+      {
+        CityID: 242,
+        name: '甘孜藏族自治州',
+        ProID: 28,
+        CitySort: 242,
+        area: [
+          '康定市',
+          '泸定县',
+          '丹巴县',
+          '九龙县',
+          '雅江县',
+          '道孚县',
+          '炉霍县',
+          '甘孜县',
+          '新龙县',
+          '德格县',
+          '白玉县',
+          '石渠县',
+          '色达县',
+          '理塘县',
+          '巴塘县',
+          '乡城县',
+          '稻城县',
+          '得荣县'
+        ]
+      },
+      {
+        CityID: 243,
+        name: '阿坝藏族羌族自治州',
+        ProID: 28,
+        CitySort: 243,
+        area: [
+          '马尔康市',
+          '汶川县',
+          '理县',
+          '茂县',
+          '松潘县',
+          '九寨沟县',
+          '金川县',
+          '小金县',
+          '黑水县',
+          '壤塘县',
+          '阿坝县',
+          '若尔盖县',
+          '红原县'
+        ]
+      },
+      {
+        CityID: 244,
+        name: '德阳市',
+        ProID: 28,
+        CitySort: 244,
+        area: ['旌阳区', '罗江区', '中江县', '广汉市', '什邡市', '绵竹市']
+      },
+      {
+        CityID: 245,
+        name: '广元市',
+        ProID: 28,
+        CitySort: 245,
+        area: [
+          '利州区',
+          '昭化区',
+          '朝天区',
+          '旺苍县',
+          '青川县',
+          '剑阁县',
+          '苍溪县'
         ]
       }
     ]
   },
   {
-    "ProID": 29,
-    "name": "贵州省",
-    "ProSort": 23,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 246,
-        "name": "贵阳市",
-        "ProID": 29,
-        "CitySort": 246,
-        "area": [
-          "南明区",
-          "云岩区",
-          "花溪区",
-          "乌当区",
-          "白云区",
-          "观山湖区",
-          "开阳县",
-          "息烽县",
-          "修文县",
-          "清镇市"
-        ]
-      },
-      {
-        "CityID": 247,
-        "name": "遵义市",
-        "ProID": 29,
-        "CitySort": 247,
-        "area": [
-          "红花岗区",
-          "汇川区",
-          "播州区",
-          "桐梓县",
-          "绥阳县",
-          "正安县",
-          "道真仡佬族苗族自治县",
-          "务川仡佬族苗族自治县",
-          "凤冈县",
-          "湄潭县",
-          "余庆县",
-          "习水县",
-          "赤水市",
-          "仁怀市"
-        ]
-      },
-      {
-        "CityID": 248,
-        "name": "安顺市",
-        "ProID": 29,
-        "CitySort": 248,
-        "area": [
-          "西秀区",
-          "平坝区",
-          "普定县",
-          "镇宁布依族苗族自治县",
-          "关岭布依族苗族自治县",
-          "紫云苗族布依族自治县"
-        ]
-      },
-      {
-        "CityID": 249,
-        "name": "黔南布依族苗族自治州",
-        "ProID": 29,
-        "CitySort": 249,
-        "area": [
-          "都匀市",
-          "福泉市",
-          "荔波县",
-          "贵定县",
-          "瓮安县",
-          "独山县",
-          "平塘县",
-          "罗甸县",
-          "长顺县",
-          "龙里县",
-          "惠水县",
-          "三都水族自治县"
-        ]
-      },
-      {
-        "CityID": 250,
-        "name": "黔东南苗族侗族自治州",
-        "ProID": 29,
-        "CitySort": 250,
-        "area": [
-          "凯里市",
-          "黄平县",
-          "施秉县",
-          "三穗县",
-          "镇远县",
-          "岑巩县",
-          "天柱县",
-          "锦屏县",
-          "剑河县",
-          "台江县",
-          "黎平县",
-          "榕江县",
-          "从江县",
-          "雷山县",
-          "麻江县",
-          "丹寨县"
-        ]
-      },
-      {
-        "CityID": 251,
-        "name": "铜仁市",
-        "ProID": 29,
-        "CitySort": 251,
-        "area": [
-          "碧江区",
-          "万山区",
-          "江口县",
-          "玉屏侗族自治县",
-          "石阡县",
-          "思南县",
-          "印江土家族苗族自治县",
-          "德江县",
-          "沿河土家族自治县",
-          "松桃苗族自治县"
-        ]
-      },
-      {
-        "CityID": 252,
-        "name": "毕节市",
-        "ProID": 29,
-        "CitySort": 252,
-        "area": [
-          "七星关区",
-          "大方县",
-          "黔西县",
-          "金沙县",
-          "织金县",
-          "纳雍县",
-          "威宁彝族回族苗族自治县",
-          "赫章县"
-        ]
-      },
-      {
-        "CityID": 253,
-        "name": "六盘水市",
-        "ProID": 29,
-        "CitySort": 253,
-        "area": [
-          "钟山区",
-          "六枝特区",
-          "水城县",
-          "盘州市"
-        ]
-      },
-      {
-        "CityID": 254,
-        "name": "黔西南布依族苗族自治州",
-        "ProID": 29,
-        "CitySort": 254,
-        "area": [
-          "兴义市",
-          "兴仁市",
-          "普安县",
-          "晴隆县",
-          "贞丰县",
-          "望谟县",
-          "册亨县",
-          "安龙县"
+    ProID: 29,
+    name: '贵州省',
+    ProSort: 23,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 246,
+        name: '贵阳市',
+        ProID: 29,
+        CitySort: 246,
+        area: [
+          '南明区',
+          '云岩区',
+          '花溪区',
+          '乌当区',
+          '白云区',
+          '观山湖区',
+          '开阳县',
+          '息烽县',
+          '修文县',
+          '清镇市'
+        ]
+      },
+      {
+        CityID: 247,
+        name: '遵义市',
+        ProID: 29,
+        CitySort: 247,
+        area: [
+          '红花岗区',
+          '汇川区',
+          '播州区',
+          '桐梓县',
+          '绥阳县',
+          '正安县',
+          '道真仡佬族苗族自治县',
+          '务川仡佬族苗族自治县',
+          '凤冈县',
+          '湄潭县',
+          '余庆县',
+          '习水县',
+          '赤水市',
+          '仁怀市'
+        ]
+      },
+      {
+        CityID: 248,
+        name: '安顺市',
+        ProID: 29,
+        CitySort: 248,
+        area: [
+          '西秀区',
+          '平坝区',
+          '普定县',
+          '镇宁布依族苗族自治县',
+          '关岭布依族苗族自治县',
+          '紫云苗族布依族自治县'
+        ]
+      },
+      {
+        CityID: 249,
+        name: '黔南布依族苗族自治州',
+        ProID: 29,
+        CitySort: 249,
+        area: [
+          '都匀市',
+          '福泉市',
+          '荔波县',
+          '贵定县',
+          '瓮安县',
+          '独山县',
+          '平塘县',
+          '罗甸县',
+          '长顺县',
+          '龙里县',
+          '惠水县',
+          '三都水族自治县'
+        ]
+      },
+      {
+        CityID: 250,
+        name: '黔东南苗族侗族自治州',
+        ProID: 29,
+        CitySort: 250,
+        area: [
+          '凯里市',
+          '黄平县',
+          '施秉县',
+          '三穗县',
+          '镇远县',
+          '岑巩县',
+          '天柱县',
+          '锦屏县',
+          '剑河县',
+          '台江县',
+          '黎平县',
+          '榕江县',
+          '从江县',
+          '雷山县',
+          '麻江县',
+          '丹寨县'
+        ]
+      },
+      {
+        CityID: 251,
+        name: '铜仁市',
+        ProID: 29,
+        CitySort: 251,
+        area: [
+          '碧江区',
+          '万山区',
+          '江口县',
+          '玉屏侗族自治县',
+          '石阡县',
+          '思南县',
+          '印江土家族苗族自治县',
+          '德江县',
+          '沿河土家族自治县',
+          '松桃苗族自治县'
+        ]
+      },
+      {
+        CityID: 252,
+        name: '毕节市',
+        ProID: 29,
+        CitySort: 252,
+        area: [
+          '七星关区',
+          '大方县',
+          '黔西县',
+          '金沙县',
+          '织金县',
+          '纳雍县',
+          '威宁彝族回族苗族自治县',
+          '赫章县'
+        ]
+      },
+      {
+        CityID: 253,
+        name: '六盘水市',
+        ProID: 29,
+        CitySort: 253,
+        area: ['钟山区', '六枝特区', '水城县', '盘州市']
+      },
+      {
+        CityID: 254,
+        name: '黔西南布依族苗族自治州',
+        ProID: 29,
+        CitySort: 254,
+        area: [
+          '兴义市',
+          '兴仁市',
+          '普安县',
+          '晴隆县',
+          '贞丰县',
+          '望谟县',
+          '册亨县',
+          '安龙县'
         ]
       }
     ]
   },
   {
-    "ProID": 30,
-    "name": "云南省",
-    "ProSort": 25,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 273,
-        "name": "西双版纳傣族自治州",
-        "ProID": 30,
-        "CitySort": 273,
-        "area": [
-          "景洪市",
-          "勐海县",
-          "勐腊县"
-        ]
-      },
-      {
-        "CityID": 274,
-        "name": "德宏傣族景颇族自治州",
-        "ProID": 30,
-        "CitySort": 274,
-        "area": [
-          "瑞丽市",
-          "芒市",
-          "梁河县",
-          "盈江县",
-          "陇川县"
-        ]
-      },
-      {
-        "CityID": 275,
-        "name": "昭通市",
-        "ProID": 30,
-        "CitySort": 275,
-        "area": [
-          "昭阳区",
-          "鲁甸县",
-          "巧家县",
-          "盐津县",
-          "大关县",
-          "永善县",
-          "绥江县",
-          "镇雄县",
-          "彝良县",
-          "威信县",
-          "水富市"
-        ]
-      },
-      {
-        "CityID": 276,
-        "name": "昆明市",
-        "ProID": 30,
-        "CitySort": 276,
-        "area": [
-          "五华区",
-          "盘龙区",
-          "官渡区",
-          "西山区",
-          "东川区",
-          "呈贡区",
-          "晋宁区",
-          "富民县",
-          "宜良县",
-          "石林彝族自治县",
-          "嵩明县",
-          "禄劝彝族苗族自治县",
-          "寻甸回族彝族自治县",
-          "安宁市"
-        ]
-      },
-      {
-        "CityID": 277,
-        "name": "大理白族自治州",
-        "ProID": 30,
-        "CitySort": 277,
-        "area": [
-          "大理市",
-          "漾濞彝族自治县",
-          "祥云县",
-          "宾川县",
-          "弥渡县",
-          "南涧彝族自治县",
-          "巍山彝族回族自治县",
-          "永平县",
-          "云龙县",
-          "洱源县",
-          "剑川县",
-          "鹤庆县"
-        ]
-      },
-      {
-        "CityID": 278,
-        "name": "红河哈尼族彝族自治州",
-        "ProID": 30,
-        "CitySort": 278,
-        "area": [
-          "个旧市",
-          "开远市",
-          "蒙自市",
-          "弥勒市",
-          "屏边苗族自治县",
-          "建水县",
-          "石屏县",
-          "泸西县",
-          "元阳县",
-          "红河县",
-          "金平苗族瑶族傣族自治县",
-          "绿春县",
-          "河口瑶族自治县"
-        ]
-      },
-      {
-        "CityID": 279,
-        "name": "曲靖市",
-        "ProID": 30,
-        "CitySort": 279,
-        "area": [
-          "麒麟区",
-          "沾益区",
-          "马龙区",
-          "陆良县",
-          "师宗县",
-          "罗平县",
-          "富源县",
-          "会泽县",
-          "宣威市"
-        ]
-      },
-      {
-        "CityID": 280,
-        "name": "保山市",
-        "ProID": 30,
-        "CitySort": 280,
-        "area": [
-          "隆阳区",
-          "施甸县",
-          "龙陵县",
-          "昌宁县",
-          "腾冲市"
-        ]
-      },
-      {
-        "CityID": 281,
-        "name": "文山壮族苗族自治州",
-        "ProID": 30,
-        "CitySort": 281,
-        "area": [
-          "文山市",
-          "砚山县",
-          "西畴县",
-          "麻栗坡县",
-          "马关县",
-          "丘北县",
-          "广南县",
-          "富宁县"
-        ]
-      },
-      {
-        "CityID": 282,
-        "name": "玉溪市",
-        "ProID": 30,
-        "CitySort": 282,
-        "area": [
-          "红塔区",
-          "江川区",
-          "通海县",
-          "华宁县",
-          "易门县",
-          "峨山彝族自治县",
-          "新平彝族傣族自治县",
-          "元江哈尼族彝族傣族自治县",
-          "澄江市"
-        ]
-      },
-      {
-        "CityID": 283,
-        "name": "楚雄彝族自治州",
-        "ProID": 30,
-        "CitySort": 283,
-        "area": [
-          "楚雄市",
-          "双柏县",
-          "牟定县",
-          "南华县",
-          "姚安县",
-          "大姚县",
-          "永仁县",
-          "元谋县",
-          "武定县",
-          "禄丰县"
-        ]
-      },
-      {
-        "CityID": 284,
-        "name": "普洱市",
-        "ProID": 30,
-        "CitySort": 284,
-        "area": [
-          "思茅区",
-          "宁洱哈尼族彝族自治县",
-          "墨江哈尼族自治县",
-          "景东彝族自治县",
-          "景谷傣族彝族自治县",
-          "镇沅彝族哈尼族拉祜族自治县",
-          "江城哈尼族彝族自治县",
-          "孟连傣族拉祜族佤族自治县",
-          "澜沧拉祜族自治县",
-          "西盟佤族自治县"
-        ]
-      },
-      {
-        "CityID": 285,
-        "name": "临沧市",
-        "ProID": 30,
-        "CitySort": 285,
-        "area": [
-          "临翔区",
-          "凤庆县",
-          "云县",
-          "永德县",
-          "镇康县",
-          "双江拉祜族佤族布朗族傣族自治县",
-          "耿马傣族佤族自治县",
-          "沧源佤族自治县"
-        ]
-      },
-      {
-        "CityID": 286,
-        "name": "怒江傈僳族自治州",
-        "ProID": 30,
-        "CitySort": 286,
-        "area": [
-          "泸水市",
-          "福贡县",
-          "贡山独龙族怒族自治县",
-          "兰坪白族普米族自治县"
-        ]
-      },
-      {
-        "CityID": 287,
-        "name": "迪庆藏族自治州",
-        "ProID": 30,
-        "CitySort": 287,
-        "area": [
-          "香格里拉市",
-          "德钦县",
-          "维西傈僳族自治县"
-        ]
-      },
-      {
-        "CityID": 288,
-        "name": "丽江市",
-        "ProID": 30,
-        "CitySort": 288,
-        "area": [
-          "古城区",
-          "玉龙纳西族自治县",
-          "永胜县",
-          "华坪县",
-          "宁蒗彝族自治县"
+    ProID: 30,
+    name: '云南省',
+    ProSort: 25,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 273,
+        name: '西双版纳傣族自治州',
+        ProID: 30,
+        CitySort: 273,
+        area: ['景洪市', '勐海县', '勐腊县']
+      },
+      {
+        CityID: 274,
+        name: '德宏傣族景颇族自治州',
+        ProID: 30,
+        CitySort: 274,
+        area: ['瑞丽市', '芒市', '梁河县', '盈江县', '陇川县']
+      },
+      {
+        CityID: 275,
+        name: '昭通市',
+        ProID: 30,
+        CitySort: 275,
+        area: [
+          '昭阳区',
+          '鲁甸县',
+          '巧家县',
+          '盐津县',
+          '大关县',
+          '永善县',
+          '绥江县',
+          '镇雄县',
+          '彝良县',
+          '威信县',
+          '水富市'
+        ]
+      },
+      {
+        CityID: 276,
+        name: '昆明市',
+        ProID: 30,
+        CitySort: 276,
+        area: [
+          '五华区',
+          '盘龙区',
+          '官渡区',
+          '西山区',
+          '东川区',
+          '呈贡区',
+          '晋宁区',
+          '富民县',
+          '宜良县',
+          '石林彝族自治县',
+          '嵩明县',
+          '禄劝彝族苗族自治县',
+          '寻甸回族彝族自治县',
+          '安宁市'
+        ]
+      },
+      {
+        CityID: 277,
+        name: '大理白族自治州',
+        ProID: 30,
+        CitySort: 277,
+        area: [
+          '大理市',
+          '漾濞彝族自治县',
+          '祥云县',
+          '宾川县',
+          '弥渡县',
+          '南涧彝族自治县',
+          '巍山彝族回族自治县',
+          '永平县',
+          '云龙县',
+          '洱源县',
+          '剑川县',
+          '鹤庆县'
+        ]
+      },
+      {
+        CityID: 278,
+        name: '红河哈尼族彝族自治州',
+        ProID: 30,
+        CitySort: 278,
+        area: [
+          '个旧市',
+          '开远市',
+          '蒙自市',
+          '弥勒市',
+          '屏边苗族自治县',
+          '建水县',
+          '石屏县',
+          '泸西县',
+          '元阳县',
+          '红河县',
+          '金平苗族瑶族傣族自治县',
+          '绿春县',
+          '河口瑶族自治县'
+        ]
+      },
+      {
+        CityID: 279,
+        name: '曲靖市',
+        ProID: 30,
+        CitySort: 279,
+        area: [
+          '麒麟区',
+          '沾益区',
+          '马龙区',
+          '陆良县',
+          '师宗县',
+          '罗平县',
+          '富源县',
+          '会泽县',
+          '宣威市'
+        ]
+      },
+      {
+        CityID: 280,
+        name: '保山市',
+        ProID: 30,
+        CitySort: 280,
+        area: ['隆阳区', '施甸县', '龙陵县', '昌宁县', '腾冲市']
+      },
+      {
+        CityID: 281,
+        name: '文山壮族苗族自治州',
+        ProID: 30,
+        CitySort: 281,
+        area: [
+          '文山市',
+          '砚山县',
+          '西畴县',
+          '麻栗坡县',
+          '马关县',
+          '丘北县',
+          '广南县',
+          '富宁县'
+        ]
+      },
+      {
+        CityID: 282,
+        name: '玉溪市',
+        ProID: 30,
+        CitySort: 282,
+        area: [
+          '红塔区',
+          '江川区',
+          '通海县',
+          '华宁县',
+          '易门县',
+          '峨山彝族自治县',
+          '新平彝族傣族自治县',
+          '元江哈尼族彝族傣族自治县',
+          '澄江市'
+        ]
+      },
+      {
+        CityID: 283,
+        name: '楚雄彝族自治州',
+        ProID: 30,
+        CitySort: 283,
+        area: [
+          '楚雄市',
+          '双柏县',
+          '牟定县',
+          '南华县',
+          '姚安县',
+          '大姚县',
+          '永仁县',
+          '元谋县',
+          '武定县',
+          '禄丰县'
+        ]
+      },
+      {
+        CityID: 284,
+        name: '普洱市',
+        ProID: 30,
+        CitySort: 284,
+        area: [
+          '思茅区',
+          '宁洱哈尼族彝族自治县',
+          '墨江哈尼族自治县',
+          '景东彝族自治县',
+          '景谷傣族彝族自治县',
+          '镇沅彝族哈尼族拉祜族自治县',
+          '江城哈尼族彝族自治县',
+          '孟连傣族拉祜族佤族自治县',
+          '澜沧拉祜族自治县',
+          '西盟佤族自治县'
+        ]
+      },
+      {
+        CityID: 285,
+        name: '临沧市',
+        ProID: 30,
+        CitySort: 285,
+        area: [
+          '临翔区',
+          '凤庆县',
+          '云县',
+          '永德县',
+          '镇康县',
+          '双江拉祜族佤族布朗族傣族自治县',
+          '耿马傣族佤族自治县',
+          '沧源佤族自治县'
+        ]
+      },
+      {
+        CityID: 286,
+        name: '怒江傈僳族自治州',
+        ProID: 30,
+        CitySort: 286,
+        area: [
+          '泸水市',
+          '福贡县',
+          '贡山独龙族怒族自治县',
+          '兰坪白族普米族自治县'
+        ]
+      },
+      {
+        CityID: 287,
+        name: '迪庆藏族自治州',
+        ProID: 30,
+        CitySort: 287,
+        area: ['香格里拉市', '德钦县', '维西傈僳族自治县']
+      },
+      {
+        CityID: 288,
+        name: '丽江市',
+        ProID: 30,
+        CitySort: 288,
+        area: [
+          '古城区',
+          '玉龙纳西族自治县',
+          '永胜县',
+          '华坪县',
+          '宁蒗彝族自治县'
         ]
       }
     ]
   },
   {
-    "ProID": 31,
-    "name": "西藏自治区",
-    "ProSort": 29,
-    "ProRemark": "自治区",
-    "city": [
-      {
-        "CityID": 321,
-        "name": "拉萨市",
-        "ProID": 31,
-        "CitySort": 321,
-        "area": [
-          "城关区",
-          "堆龙德庆区",
-          "达孜区",
-          "林周县",
-          "当雄县",
-          "尼木县",
-          "曲水县",
-          "墨竹工卡县",
-          "格尔木藏青工业园区",
-          "拉萨经济技术开发区",
-          "西藏文化旅游创意园区",
-          "达孜工业园区"
-        ]
-      },
-      {
-        "CityID": 322,
-        "name": "日喀则市",
-        "ProID": 31,
-        "CitySort": 322,
-        "area": [
-          "桑珠孜区",
-          "南木林县",
-          "江孜县",
-          "定日县",
-          "萨迦县",
-          "拉孜县",
-          "昂仁县",
-          "谢通门县",
-          "白朗县",
-          "仁布县",
-          "康马县",
-          "定结县",
-          "仲巴县",
-          "亚东县",
-          "吉隆县",
-          "聂拉木县",
-          "萨嘎县",
-          "岗巴县"
-        ]
-      },
-      {
-        "CityID": 323,
-        "name": "山南市",
-        "ProID": 31,
-        "CitySort": 323,
-        "area": [
-          "乃东区",
-          "扎囊县",
-          "贡嘎县",
-          "桑日县",
-          "琼结县",
-          "曲松县",
-          "措美县",
-          "洛扎县",
-          "加查县",
-          "隆子县",
-          "错那县",
-          "浪卡子县"
-        ]
-      },
-      {
-        "CityID": 324,
-        "name": "林芝市",
-        "ProID": 31,
-        "CitySort": 324,
-        "area": [
-          "巴宜区",
-          "工布江达县",
-          "米林县",
-          "墨脱县",
-          "波密县",
-          "察隅县",
-          "朗县"
-        ]
-      },
-      {
-        "CityID": 325,
-        "name": "昌都市",
-        "ProID": 31,
-        "CitySort": 325,
-        "area": [
-          "卡若区",
-          "江达县",
-          "贡觉县",
-          "类乌齐县",
-          "丁青县",
-          "察雅县",
-          "八宿县",
-          "左贡县",
-          "芒康县",
-          "洛隆县",
-          "边坝县"
-        ]
-      },
-      {
-        "CityID": 326,
-        "name": "那曲市",
-        "ProID": 31,
-        "CitySort": 326,
-        "area": [
-          "色尼区",
-          "嘉黎县",
-          "比如县",
-          "聂荣县",
-          "安多县",
-          "申扎县",
-          "索县",
-          "班戈县",
-          "巴青县",
-          "尼玛县",
-          "双湖县"
-        ]
-      },
-      {
-        "CityID": 327,
-        "name": "阿里地区",
-        "ProID": 31,
-        "CitySort": 327,
-        "area": [
-          "普兰县",
-          "札达县",
-          "噶尔县",
-          "日土县",
-          "革吉县",
-          "改则县",
-          "措勤县"
+    ProID: 31,
+    name: '西藏自治区',
+    ProSort: 29,
+    ProRemark: '自治区',
+    city: [
+      {
+        CityID: 321,
+        name: '拉萨市',
+        ProID: 31,
+        CitySort: 321,
+        area: [
+          '城关区',
+          '堆龙德庆区',
+          '达孜区',
+          '林周县',
+          '当雄县',
+          '尼木县',
+          '曲水县',
+          '墨竹工卡县',
+          '格尔木藏青工业园区',
+          '拉萨经济技术开发区',
+          '西藏文化旅游创意园区',
+          '达孜工业园区'
+        ]
+      },
+      {
+        CityID: 322,
+        name: '日喀则市',
+        ProID: 31,
+        CitySort: 322,
+        area: [
+          '桑珠孜区',
+          '南木林县',
+          '江孜县',
+          '定日县',
+          '萨迦县',
+          '拉孜县',
+          '昂仁县',
+          '谢通门县',
+          '白朗县',
+          '仁布县',
+          '康马县',
+          '定结县',
+          '仲巴县',
+          '亚东县',
+          '吉隆县',
+          '聂拉木县',
+          '萨嘎县',
+          '岗巴县'
+        ]
+      },
+      {
+        CityID: 323,
+        name: '山南市',
+        ProID: 31,
+        CitySort: 323,
+        area: [
+          '乃东区',
+          '扎囊县',
+          '贡嘎县',
+          '桑日县',
+          '琼结县',
+          '曲松县',
+          '措美县',
+          '洛扎县',
+          '加查县',
+          '隆子县',
+          '错那县',
+          '浪卡子县'
+        ]
+      },
+      {
+        CityID: 324,
+        name: '林芝市',
+        ProID: 31,
+        CitySort: 324,
+        area: [
+          '巴宜区',
+          '工布江达县',
+          '米林县',
+          '墨脱县',
+          '波密县',
+          '察隅县',
+          '朗县'
+        ]
+      },
+      {
+        CityID: 325,
+        name: '昌都市',
+        ProID: 31,
+        CitySort: 325,
+        area: [
+          '卡若区',
+          '江达县',
+          '贡觉县',
+          '类乌齐县',
+          '丁青县',
+          '察雅县',
+          '八宿县',
+          '左贡县',
+          '芒康县',
+          '洛隆县',
+          '边坝县'
+        ]
+      },
+      {
+        CityID: 326,
+        name: '那曲市',
+        ProID: 31,
+        CitySort: 326,
+        area: [
+          '色尼区',
+          '嘉黎县',
+          '比如县',
+          '聂荣县',
+          '安多县',
+          '申扎县',
+          '索县',
+          '班戈县',
+          '巴青县',
+          '尼玛县',
+          '双湖县'
+        ]
+      },
+      {
+        CityID: 327,
+        name: '阿里地区',
+        ProID: 31,
+        CitySort: 327,
+        area: [
+          '普兰县',
+          '札达县',
+          '噶尔县',
+          '日土县',
+          '革吉县',
+          '改则县',
+          '措勤县'
         ]
       }
     ]
   },
   {
-    "ProID": 32,
-    "name": "台湾",
-    "ProSort": 7,
-    "ProRemark": "省份",
-    "city": [
-      {
-        "CityID": 327,
-        "name": "台湾省",
-        "ProID": 31,
-        "CitySort": 327,
-        "area": [
-          "台北市",
-          "高雄市",
-          "台北县",
-          "桃园县",
-          "新竹县",
-          "苗栗县",
-          "台中县",
-          "彰化县",
-          "南投县",
-          "云林县",
-          "嘉义县",
-          "台南县",
-          "高雄县",
-          "屏东县",
-          "宜兰县",
-          "花莲县",
-          "台东县",
-          "澎湖县",
-          "基隆市",
-          "新竹市",
-          "台中市",
-          "嘉义市",
-          "台南市",
-          "其他"
+    ProID: 32,
+    name: '台湾',
+    ProSort: 7,
+    ProRemark: '省份',
+    city: [
+      {
+        CityID: 327,
+        name: '台湾省',
+        ProID: 31,
+        CitySort: 327,
+        area: [
+          '台北市',
+          '高雄市',
+          '台北县',
+          '桃园县',
+          '新竹县',
+          '苗栗县',
+          '台中县',
+          '彰化县',
+          '南投县',
+          '云林县',
+          '嘉义县',
+          '台南县',
+          '高雄县',
+          '屏东县',
+          '宜兰县',
+          '花莲县',
+          '台东县',
+          '澎湖县',
+          '基隆市',
+          '新竹市',
+          '台中市',
+          '嘉义市',
+          '台南市',
+          '其他'
         ]
       }
     ]
   },
   {
-    "ProID": 33,
-    "name": "澳门特别行政区",
-    "ProSort": 33,
-    "ProRemark": "特别行政区",
-    "city": [
-      {
-        "CityID": 370,
-        "name": "澳门",
-        "ProID": 33,
-        "CitySort": 370,
-        "area": [
-          "花地玛堂区",
-          "圣安多尼堂区",
-          "大堂区",
-          "望德堂区",
-          "风顺堂区",
-          "嘉模堂区",
-          "圣方济各堂区",
-          "路凼",
-          "其他"
+    ProID: 33,
+    name: '澳门特别行政区',
+    ProSort: 33,
+    ProRemark: '特别行政区',
+    city: [
+      {
+        CityID: 370,
+        name: '澳门',
+        ProID: 33,
+        CitySort: 370,
+        area: [
+          '花地玛堂区',
+          '圣安多尼堂区',
+          '大堂区',
+          '望德堂区',
+          '风顺堂区',
+          '嘉模堂区',
+          '圣方济各堂区',
+          '路凼',
+          '其他'
         ]
       }
     ]
   },
   {
-    "ProID": 34,
-    "name": "香港特别行政区",
-    "ProSort": 34,
-    "ProRemark": "特别行政区",
-    "city": [
-      {
-        "CityID": 371,
-        "name": "香港",
-        "ProID": 34,
-        "CitySort": 371,
-        "area": [
-          "中西区",
-          "湾仔区",
-          "东区",
-          "南区",
-          "深水埗区",
-          "油尖旺区",
-          "九龙城区",
-          "黄大仙区",
-          "观塘区",
-          "北区",
-          "大埔区",
-          "沙田区",
-          "西贡区",
-          "元朗区",
-          "屯门区",
-          "荃湾区",
-          "葵青区",
-          "离岛区",
-          "其他"
+    ProID: 34,
+    name: '香港特别行政区',
+    ProSort: 34,
+    ProRemark: '特别行政区',
+    city: [
+      {
+        CityID: 371,
+        name: '香港',
+        ProID: 34,
+        CitySort: 371,
+        area: [
+          '中西区',
+          '湾仔区',
+          '东区',
+          '南区',
+          '深水埗区',
+          '油尖旺区',
+          '九龙城区',
+          '黄大仙区',
+          '观塘区',
+          '北区',
+          '大埔区',
+          '沙田区',
+          '西贡区',
+          '元朗区',
+          '屯门区',
+          '荃湾区',
+          '葵青区',
+          '离岛区',
+          '其他'
         ]
       }
     ]
   },
   {
-    "ProID": 35,
-    "name": "钓鱼岛",
-    "ProSort": 35,
-    "ProRemark": "特别行政区",
-    "city": [
-      {
-        "CityID": 372,
-        "name": "钓鱼岛",
-        "ProID": 35,
-        "CitySort": 372,
-        "area": [
-          "钓鱼岛"
-        ]
+    ProID: 35,
+    name: '钓鱼岛',
+    ProSort: 35,
+    ProRemark: '特别行政区',
+    city: [
+      {
+        CityID: 372,
+        name: '钓鱼岛',
+        ProID: 35,
+        CitySort: 372,
+        area: ['钓鱼岛']
       }
     ]
   },
   {
-    "ProID": 36,
-    "name": " 海外",
-    "ProSort": 35,
-    "ProRemark": "特别行政区",
-    "city": [
-      {
-        "CityID": 372,
-        "name": "海外",
-        "ProID": 35,
-        "CitySort": 372,
-        "area": [
-          "美国",
-          "加拿大",
-          "澳大利亚",
-          "新西兰",
-          "英国",
-          "法国",
-          "德国",
-          "捷克",
-          "荷兰",
-          "瑞士",
-          "希腊",
-          "挪威",
-          "瑞典",
-          "丹麦",
-          "芬兰",
-          "爱尔兰",
-          "奥地利",
-          "意大利",
-          "乌克兰",
-          "俄罗斯",
-          "西班牙",
-          "韩国",
-          "新加坡",
-          "马来西亚",
-          "印度",
-          "泰国",
-          "日本",
-          "巴西",
-          "阿根廷",
-          "南非",
-          "埃及"
+    ProID: 36,
+    name: ' 海外',
+    ProSort: 35,
+    ProRemark: '特别行政区',
+    city: [
+      {
+        CityID: 372,
+        name: '海外',
+        ProID: 35,
+        CitySort: 372,
+        area: [
+          '美国',
+          '加拿大',
+          '澳大利亚',
+          '新西兰',
+          '英国',
+          '法国',
+          '德国',
+          '捷克',
+          '荷兰',
+          '瑞士',
+          '希腊',
+          '挪威',
+          '瑞典',
+          '丹麦',
+          '芬兰',
+          '爱尔兰',
+          '奥地利',
+          '意大利',
+          '乌克兰',
+          '俄罗斯',
+          '西班牙',
+          '韩国',
+          '新加坡',
+          '马来西亚',
+          '印度',
+          '泰国',
+          '日本',
+          '巴西',
+          '阿根廷',
+          '南非',
+          '埃及'
         ]
       }
     ]

+ 133 - 89
apps/bigmember_pc/src/assets/js/selector.js

@@ -36,12 +36,32 @@ export const cateListMapExp = {
   P: ['批发零售'],
   Q: ['气象'],
   R: ['人行', '人社', '人大'],
-  S: ['税务', '水利', '市政', '审计', '商务', '司法', '社会团体', '市场监管', '生态环境'],
+  S: [
+    '税务',
+    '水利',
+    '市政',
+    '审计',
+    '商务',
+    '司法',
+    '社会团体',
+    '市场监管',
+    '生态环境'
+  ],
   T: ['统计', '统战', '体育'],
   W: ['文旅', '卫健委'],
   X: ['学校', '宣传', '信息技术'],
   Y: ['医疗', '银保监', '运输物流', '应急管理'],
-  Z: ['组织', '政协', '住建', '证监', '政府办', '制造业', '政务中心', '住宿餐饮', '自然资源']
+  Z: [
+    '组织',
+    '政协',
+    '住建',
+    '证监',
+    '政府办',
+    '制造业',
+    '政务中心',
+    '住宿餐饮',
+    '自然资源'
+  ]
 }
 
 // 信息类型数据
@@ -138,7 +158,7 @@ export const infoTypeListExp = [
         name: '变更',
         value: '变更',
         level: 2
-      },
+      }
       // {
       //   name: '其它',
       //   value: '其它',
@@ -200,46 +220,13 @@ export const infoTypeListExp = [
 // 行业分类数据
 // 在[@/components/selector/IndustrySelectorCard.vue]中使用
 export const industryListMapExp = {
-  '建筑工程': [
-    '勘察设计',
-    '工程施工',
-    '监理咨询',
-    '材料设备',
-    '机电安装'
-  ],
-  '水利水电': [
-    '水利工程',
-    '发电工程',
-    '航运工程',
-    '其他工程'
-  ],
-  '能源化工': [
-    '原材料',
-    '仪器仪表',
-    '新能源',
-    '设备物资',
-    '化工产品',
-    '设备'
-  ],
-  '弱电安防': [
-    '综合布线',
-    '智能系统',
-    '智能家居'
-  ],
-  '信息技术': [
-    '系统集成及安全',
-    '软件开发',
-    '运维服务',
-    '其他'
-  ],
-  '行政办公': [
-    '办公家具',
-    '通用办公设备',
-    '专业设备',
-    '办公用品',
-    '生活用品'
-  ],
-  '机械设备': [
+  建筑工程: ['勘察设计', '工程施工', '监理咨询', '材料设备', '机电安装'],
+  水利水电: ['水利工程', '发电工程', '航运工程', '其他工程'],
+  能源化工: ['原材料', '仪器仪表', '新能源', '设备物资', '化工产品', '设备'],
+  弱电安防: ['综合布线', '智能系统', '智能家居'],
+  信息技术: ['系统集成及安全', '软件开发', '运维服务', '其他'],
+  行政办公: ['办公家具', '通用办公设备', '专业设备', '办公用品', '生活用品'],
+  机械设备: [
     '矿山机械',
     '工程机械',
     '机械零部件',
@@ -247,25 +234,10 @@ export const industryListMapExp = {
     '车辆',
     '其他机械设备'
   ],
-  '交通工程': [
-    '道路',
-    '轨道',
-    '桥梁',
-    '隧道',
-    '其他'
-  ],
-  '医疗卫生': [
-    '设备',
-    '耗材',
-    '药品'
-  ],
-  '市政设施': [
-    '道路',
-    '绿化',
-    '线路管网',
-    '综合项目'
-  ],
-  '服务采购': [
+  交通工程: ['道路', '轨道', '桥梁', '隧道', '其他'],
+  医疗卫生: ['设备', '耗材', '药品'],
+  市政设施: ['道路', '绿化', '线路管网', '综合项目'],
+  服务采购: [
     '法律咨询',
     '会计',
     '物业',
@@ -275,17 +247,79 @@ export const industryListMapExp = {
     '广告宣传印刷',
     '其他'
   ],
-  '农林牧渔': [
-    '生产物资',
-    '生产设备',
-    '相关服务'
-  ]
+  农林牧渔: ['生产物资', '生产设备', '相关服务']
 }
 
 // 采购单位类型
 export const buyerclassListMapExp = {
-  "党政机关事业单位": ['人大', '政协', '党委办', '组织', '宣传', '统战', '纪委', '政府办', '发改', '财政', '教育', '科技', '工信', '民政', '民宗', '人社', '公安', '检察院', '法院', '司法', '应急管理', '军队', '自然资源', '生态环境', '住建', '市政', '城管', '交通', '水利', '农业', '气象', '文旅', '卫健委', '医疗', '学校', '档案', '体育', '政务中心', '机关事务', '国资委', '海关', '税务', '市场监管', '商务', '人行', '银保监', '证监', '审计', '出版广电', '统计', '公共资源交易', '社会团体'],
-  "企业": ['传媒', '采矿业', '电信行业', '金融业', '建筑业', '能源化工', '农林牧渔', '批发零售', '信息技术', '运输物流', '制造业', '住宿餐饮']
+  党政机关事业单位: [
+    '人大',
+    '政协',
+    '党委办',
+    '组织',
+    '宣传',
+    '统战',
+    '纪委',
+    '政府办',
+    '发改',
+    '财政',
+    '教育',
+    '科技',
+    '工信',
+    '民政',
+    '民宗',
+    '人社',
+    '公安',
+    '检察院',
+    '法院',
+    '司法',
+    '应急管理',
+    '军队',
+    '自然资源',
+    '生态环境',
+    '住建',
+    '市政',
+    '城管',
+    '交通',
+    '水利',
+    '农业',
+    '气象',
+    '文旅',
+    '卫健委',
+    '医疗',
+    '学校',
+    '档案',
+    '体育',
+    '政务中心',
+    '机关事务',
+    '国资委',
+    '海关',
+    '税务',
+    '市场监管',
+    '商务',
+    '人行',
+    '银保监',
+    '证监',
+    '审计',
+    '出版广电',
+    '统计',
+    '公共资源交易',
+    '社会团体'
+  ],
+  企业: [
+    '传媒',
+    '采矿业',
+    '电信行业',
+    '金融业',
+    '建筑业',
+    '能源化工',
+    '农林牧渔',
+    '批发零售',
+    '信息技术',
+    '运输物流',
+    '制造业',
+    '住宿餐饮'
+  ]
 }
 
 // 行业
@@ -391,7 +425,7 @@ export const industryJson = [
       { name: '办公用品设备' },
       { name: '工艺品/收藏品' },
       { name: '家具/家居/家电' },
-      { name: '贸易/进出口代理' },
+      { name: '贸易/进出口代理' }
     ]
   },
   {
@@ -485,21 +519,12 @@ export const industryJson = [
   },
   {
     name: '农/林/牧/渔',
-    children: [
-      { name: '农/林/牧/渔' }
-    ]
+    children: [{ name: '农/林/牧/渔' }]
   }
 ]
 
 // 职位
-export const jobJson = [
-  '总裁',
-  '总经理',
-  '总监',
-  '经理',
-  '主管',
-  '职员'
-]
+export const jobJson = ['总裁', '总经理', '总监', '经理', '主管', '职员']
 
 // 公司规模
 export const companyScaleJson = [
@@ -512,13 +537,7 @@ export const companyScaleJson = [
 ]
 
 // 部门
-export const branchJson = [
-  '市场',
-  '产品',
-  '销售',
-  '渠道',
-  '其他'
-]
+export const branchJson = ['市场', '产品', '销售', '渠道', '其他']
 
 // 医疗机构经营性质
 export const hospitalNatureExp = [
@@ -549,7 +568,32 @@ export const hospitalNatureExp = [
 ]
 
 // 24小时数组
-export const hoursData = ['00:00', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00', '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00']
+export const hoursData = [
+  '00:00',
+  '01:00',
+  '02:00',
+  '03:00',
+  '04:00',
+  '05:00',
+  '06:00',
+  '07:00',
+  '08:00',
+  '09:00',
+  '10:00',
+  '11:00',
+  '12:00',
+  '13:00',
+  '14:00',
+  '15:00',
+  '16:00',
+  '17:00',
+  '18:00',
+  '19:00',
+  '20:00',
+  '21:00',
+  '22:00',
+  '23:00'
+]
 
 // 推送功能
 export const pushFunctionData = [

+ 5 - 5
apps/bigmember_pc/src/assets/style/_mixin.scss

@@ -1,4 +1,4 @@
-@import "@jianyu/easy-fix-sub-app/lib/in-app";
+@import '@jianyu/easy-fix-sub-app/lib/in-app';
 // 公用函数
 @function addPx($a, $b) {
   @return $a + $b;
@@ -12,9 +12,9 @@
   @return $footerHeight + $a;
 }
 
-@mixin diy-icon ($name, $width: 24, $height: 24) {
+@mixin diy-icon($name, $width: 24, $height: 24) {
   ::v-deep .el-icon-jy-#{$name} {
-    background: url("~@/assets/images/icon/#{$name}.png") no-repeat;
+    background: url('~@/assets/images/icon/#{$name}.png') no-repeat;
     background-size: cover;
     display: inline-block;
     width: #{$width}px;
@@ -22,11 +22,11 @@
   }
 }
 
-@mixin ellipsis ($lines: 1) {
+@mixin ellipsis($lines: 1) {
   overflow: hidden;
   text-overflow: ellipsis;
   display: -webkit-box;
   -webkit-line-clamp: #{$lines};
   -webkit-box-orient: vertical;
-  text-align: justify
+  text-align: justify;
 }

+ 13 - 13
apps/bigmember_pc/src/assets/style/_variables.scss

@@ -4,24 +4,24 @@ $topNavHeight: 77px;
 // 底部栏
 $footerHeight: 364px;
 
-$color_main: #2CB7CA;
+$color_main: #2cb7ca;
 
-$bg-retrieve: #010C28;
-$bg-button--default: linear-gradient(84deg, #AF9552 0%, #EFDA98 100%);
-$bg-card--default: linear-gradient(#031242 0%, #010E36 100%);
-$bg-button--tran: linear-gradient(#53F1DD 0%, #07907E 100%);
-$bg-color-1: linear-gradient(90deg, #9F1B89 0%, #BB36A5 100%);
-$bg-color-2: linear-gradient(90deg, #46B5D1 0%, #8CD5E4 100%);
-$bg-color-3: linear-gradient(90deg, #F5AB48 0%, #F4CE8F 100%);
-$bg-color-4: linear-gradient(90deg, #F83F4F 0%, #F38797 100%);
-$bg-color-5: linear-gradient(90deg, #41AF92 0%, #84CEB7 100%);
-$bg-color-6: linear-gradient(90deg, #7446A0 0%, #A380C4 100%);
+$bg-retrieve: #010c28;
+$bg-button--default: linear-gradient(84deg, #af9552 0%, #efda98 100%);
+$bg-card--default: linear-gradient(#031242 0%, #010e36 100%);
+$bg-button--tran: linear-gradient(#53f1dd 0%, #07907e 100%);
+$bg-color-1: linear-gradient(90deg, #9f1b89 0%, #bb36a5 100%);
+$bg-color-2: linear-gradient(90deg, #46b5d1 0%, #8cd5e4 100%);
+$bg-color-3: linear-gradient(90deg, #f5ab48 0%, #f4ce8f 100%);
+$bg-color-4: linear-gradient(90deg, #f83f4f 0%, #f38797 100%);
+$bg-color-5: linear-gradient(90deg, #41af92 0%, #84ceb7 100%);
+$bg-color-6: linear-gradient(90deg, #7446a0 0%, #a380c4 100%);
 
 $font-text--title: 17px;
 
-$color-text--default: #1D1D1D;
+$color-text--default: #1d1d1d;
 $color-text--active: $color_main;
-$color-input--default: #1D1D1D;
+$color-input--default: #1d1d1d;
 $color-text--highlight: $color_main;
 
 $bg-main-color: #fff;

+ 9 - 9
apps/bigmember_pc/src/assets/style/common.scss

@@ -6,7 +6,7 @@ html {
 }
 
 body {
-  background-color: #F2F2F4;
+  background-color: #f2f2f4;
 }
 
 .highlight-text {
@@ -17,7 +17,7 @@ body {
   cursor: pointer;
 }
 
-[class*=no-select] {
+[class*='no-select'] {
   user-select: none;
 }
 
@@ -25,7 +25,7 @@ body {
   overflow: hidden;
   text-overflow: ellipsis;
   white-space: nowrap;
-  text-align: justify
+  text-align: justify;
 }
 
 @for $i from 2 through 5 {
@@ -41,7 +41,7 @@ body {
   display: -webkit-box;
   -webkit-line-clamp: 2;
   -webkit-box-orient: vertical;
-  text-align: justify
+  text-align: justify;
 }
 
 /* 超过3行省略号显示 */
@@ -60,7 +60,7 @@ body {
 ::-webkit-scrollbar-thumb {
   /*滚动条里面小方块*/
   border-radius: 3px;
-  background-color: #ECECEC;
+  background-color: #ececec;
   opacity: 0.15;
 }
 .scrollbar {
@@ -71,7 +71,7 @@ body {
   &::-webkit-scrollbar-thumb {
     /*滚动条里面小方块*/
     border-radius: 3px;
-    background-color: #ECECEC;
+    background-color: #ececec;
     opacity: 0.15;
   }
 }
@@ -133,10 +133,10 @@ input[type='number'] {
   }
 }
 .f-share {
-  padding: 6px 4px!important;
+  padding: 6px 4px !important;
   box-shadow: 0px 0px 28px 0px #999;
-  border: none!important;
+  border: none !important;
   .popper__arrow {
-    border: none!important;
+    border: none !important;
   }
 }

+ 1 - 1
apps/bigmember_pc/src/assets/style/component/verify-code-form-common.scss

@@ -16,7 +16,7 @@
       }
     }
     .el-input__inner {
-      background-color: #F3F6F7;
+      background-color: #f3f6f7;
     }
   }
 }

+ 191 - 192
apps/bigmember_pc/src/assets/style/iconfont.css

@@ -1,12 +1,12 @@
 @font-face {
-  font-family: "iconfont"; /* Project id 624651 */
+  font-family: 'iconfont'; /* Project id 624651 */
   src: url('../fonts/iconfont.woff2?t=1706074759422') format('woff2'),
-       url('../fonts/iconfont.woff?t=1706074759422') format('woff'),
-       url('../fonts/iconfont.ttf?t=1706074759422') format('truetype');
+    url('../fonts/iconfont.woff?t=1706074759422') format('woff'),
+    url('../fonts/iconfont.ttf?t=1706074759422') format('truetype');
 }
 
 .iconfont {
-  font-family: "iconfont" !important;
+  font-family: 'iconfont' !important;
   font-size: 16px;
   font-style: normal;
   -webkit-font-smoothing: antialiased;
@@ -14,750 +14,749 @@
 }
 
 .icon-jiankong:before {
-  content: "\e6f8";
+  content: '\e6f8';
 }
 
 .icon-yijiankong:before {
-  content: "\e6f9";
+  content: '\e6f9';
 }
 
 .icon-shenfenweihu:before {
-  content: "\e6f7";
+  content: '\e6f7';
 }
 
 .icon-a-Property1shujudingzhiProperty2normal-wodezichan:before {
-  content: "\e645";
+  content: '\e645';
 }
 
 .icon-a-Property1shufuProperty2grey:before {
-  content: "\e644";
+  content: '\e644';
 }
 
 .icon-renwuguanli:before {
-  content: "\e6f3";
+  content: '\e6f3';
 }
 
 .icon-renwufupan:before {
-  content: "\e6f4";
+  content: '\e6f4';
 }
 
 .icon-renwugenjin:before {
-  content: "\e6f5";
+  content: '\e6f5';
 }
 
 .icon-yingxiao:before {
-  content: "\e6f6";
+  content: '\e6f6';
 }
 
 .icon-a-Property1hulve:before {
-  content: "\e643";
+  content: '\e643';
 }
 
 .icon-chuangjianxiaoshoujihui:before {
-  content: "\e638";
+  content: '\e638';
 }
 
 .icon-chuangjianxiaoshouxiansuo:before {
-  content: "\e63b";
+  content: '\e63b';
 }
 
 .icon-a-Property1shoulu:before {
-  content: "\e63f";
+  content: '\e63f';
 }
 
 .icon-a-Property1yishoulu:before {
-  content: "\e640";
+  content: '\e640';
 }
 
 .icon-a-Property1yihulve:before {
-  content: "\e641";
+  content: '\e641';
 }
 
 .icon-chuangjiankehu:before {
-  content: "\e642";
+  content: '\e642';
 }
 
 .icon-biyan:before {
-  content: "\e633";
+  content: '\e633';
 }
 
 .icon-a-Property1gray2:before {
-  content: "\e6ef";
+  content: '\e6ef';
 }
 
 .icon-a-Property1gray:before {
-  content: "\e6f0";
+  content: '\e6f0';
 }
 
 .icon-weixin_miam1:before {
-  content: "\e6f1";
+  content: '\e6f1';
 }
 
 .icon-a-Property1gray1:before {
-  content: "\e6f2";
+  content: '\e6f2';
 }
 
 .icon-caigoudanwei:before {
-  content: "\e632";
+  content: '\e632';
 }
 
 .icon-fenxiang:before {
-  content: "\e705";
+  content: '\e705';
 }
 
 .icon-ren:before {
-  content: "\e706";
+  content: '\e706';
 }
 
 .icon-remenzhaobiao:before {
-  content: "\e6ec";
+  content: '\e6ec';
 }
 
 .icon-shiyongtuijian:before {
-  content: "\e6ed";
+  content: '\e6ed';
 }
 
 .icon-biaodewu:before {
-  content: "\e6eb";
+  content: '\e6eb';
 }
 
 .icon-canbiao:before {
-  content: "\e704";
+  content: '\e704';
 }
 
 .icon-yuangongdingyuezonglan:before {
-  content: "\e6ea";
+  content: '\e6ea';
 }
 
 .icon-xiansuoguanli:before {
-  content: "\e701";
+  content: '\e701';
 }
 
 .icon-xiaoshou:before {
-  content: "\e702";
+  content: '\e702';
 }
 
 .icon-zuoxidianxiao:before {
-  content: "\e703";
+  content: '\e703';
 }
 
 .icon-tuisongshezhi:before {
-  content: "\e6fc";
+  content: '\e6fc';
 }
 
 .icon-dianzan:before {
-  content: "\e659";
+  content: '\e659';
 }
 
 .icon-icon:before {
-  content: "\e6e9";
+  content: '\e6e9';
 }
 
 .icon-shuju:before {
-  content: "\e6e7";
+  content: '\e6e7';
 }
 
 .icon-shoudongfenfa:before {
-  content: "\e6e6";
+  content: '\e6e6';
 }
 
 .icon-tishi:before {
-  content: "\e6e5";
+  content: '\e6e5';
 }
 
 .icon-hangyezhanhui:before {
-  content: "\e6ee";
+  content: '\e6ee';
 }
 
 .icon-a-Property1fuwushang:before {
-  content: "\e629";
+  content: '\e629';
 }
 
 .icon-a-Property1gongzuozhuomianProperty2huaxiangfenxi1:before {
-  content: "\e6e4";
+  content: '\e6e4';
 }
 
 .icon-a-Property1gongzuozhuomianProperty2jigouguanli1:before {
-  content: "\e628";
+  content: '\e628';
 }
 
 .icon-a-Property1gongzuozhuomianProperty2wodezichan2:before {
-  content: "\e636";
+  content: '\e636';
 }
 
 .icon-a-Property1gongzuozhuomianProperty2fuwushangzhuanxiang1:before {
-  content: "\e619";
+  content: '\e619';
 }
 
 .icon-shichangfenxi:before {
-  content: "\e630";
+  content: '\e630';
 }
 
 .icon-tableBox_null:before {
-  content: "\e6e8";
+  content: '\e6e8';
 }
 
 .icon-a-Property1gongzuozhuomianProperty2jiaoyiguanli:before {
-  content: "\e62f";
+  content: '\e62f';
 }
 
 .icon-a-Property1Default:before {
-  content: "\e621";
+  content: '\e621';
 }
 
 .icon-a-Property1gongzuozhuomianProperty2wenku:before {
-  content: "\e622";
+  content: '\e622';
 }
 
 .icon-a-Property1gongzuozhuomianProperty2biaoshuzhizuo:before {
-  content: "\e624";
+  content: '\e624';
 }
 
 .icon-a-Property1gongzuozhuomianProperty2kechengpeixun:before {
-  content: "\e627";
+  content: '\e627';
 }
 
 .icon-a-yiliaolingyuhuablack:before {
-  content: "\e610";
+  content: '\e610';
 }
 
 .icon-a-Property1gongzuozhuomianProperty2juecefenxi:before {
-  content: "\e612";
+  content: '\e612';
 }
 
 .icon-a-Property1gongzuozhuomianProperty2shujukanban:before {
-  content: "\e618";
+  content: '\e618';
 }
 
 .icon-a-Property1gongzuozhuomianProperty2shangjiwajue:before {
-  content: "\e609";
+  content: '\e609';
 }
 
 .icon-a-Property1gongzuozhuomianProperty2shujushichang:before {
-  content: "\e607";
+  content: '\e607';
 }
 
 .icon-a-Property1gongzuozhuomianProperty2xiaoxizhongxinProperty3grey:before {
-  content: "\e606";
+  content: '\e606';
 }
 
 .icon-a-Property1fuwuProperty2grey:before {
-  content: "\e605";
+  content: '\e605';
 }
 
 .icon-a-lingyuhuagray:before {
-  content: "\e603";
+  content: '\e603';
 }
 
 .icon-yiban:before {
-  content: "\e6de";
+  content: '\e6de';
 }
 
 .icon-bumanyi-cai:before {
-  content: "\e6df";
+  content: '\e6df';
 }
 
 .icon-yiban-cai:before {
-  content: "\e6e0";
+  content: '\e6e0';
 }
 
 .icon-manyi-cai:before {
-  content: "\e6e1";
+  content: '\e6e1';
 }
 
 .icon-henmanyi-cai:before {
-  content: "\e6e2";
+  content: '\e6e2';
 }
 
 .icon-henbumanyi-cai:before {
-  content: "\e6e3";
+  content: '\e6e3';
 }
 
 .icon-bumanyi:before {
-  content: "\e6da";
+  content: '\e6da';
 }
 
 .icon-manyi:before {
-  content: "\e6db";
+  content: '\e6db';
 }
 
 .icon-henmanyi:before {
-  content: "\e6dc";
+  content: '\e6dc';
 }
 
 .icon-henbumanyi:before {
-  content: "\e6dd";
+  content: '\e6dd';
 }
 
 .icon-green:before {
-  content: "\e6d9";
+  content: '\e6d9';
 }
 
 .icon-fangda:before {
-  content: "\e6d6";
+  content: '\e6d6';
 }
 
 .icon-zanting:before {
-  content: "\e6d7";
+  content: '\e6d7';
 }
 
 .icon-bofang:before {
-  content: "\e6d8";
+  content: '\e6d8';
 }
 
 .icon-huo:before {
-  content: "\e6d5";
+  content: '\e6d5';
 }
 
 .icon-wenku_excel:before {
-  content: "\e6d1";
+  content: '\e6d1';
 }
 
 .icon-wenku_word:before {
-  content: "\e6d2";
+  content: '\e6d2';
 }
 
 .icon-wenku_pdf:before {
-  content: "\e6d3";
+  content: '\e6d3';
 }
 
 .icon-wenku_ppt:before {
-  content: "\e6d4";
+  content: '\e6d4';
 }
 
 .icon-houtui:before {
-  content: "\e6d0";
+  content: '\e6d0';
 }
 
 .icon-danxuan_yixuan:before {
-  content: "\e6cf";
+  content: '\e6cf';
 }
 
 .icon-jiaru_hover:before {
-  content: "\e6cd";
+  content: '\e6cd';
 }
 
 .icon-tuihui_hover:before {
-  content: "\e6ce";
+  content: '\e6ce';
 }
 
 .icon-jiaru:before {
-  content: "\e6cb";
+  content: '\e6cb';
 }
 
 .icon-tuihui:before {
-  content: "\e6cc";
+  content: '\e6cc';
 }
 
 .icon-Setting:before {
-  content: "\e6c7";
+  content: '\e6c7';
 }
 
 .icon-xiala:before {
-  content: "\e6c6";
+  content: '\e6c6';
 }
 
 .icon-dizhi:before {
-  content: "\e6c5";
+  content: '\e6c5';
 }
 
 .icon-danweileixing:before {
-  content: "\e6c4";
+  content: '\e6c4';
 }
 
 .icon-chakanhuaxiang:before {
-  content: "\e6c3";
+  content: '\e6c3';
 }
 
 .icon-a-kaiguanon:before {
-  content: "\e6c2";
+  content: '\e6c2';
 }
 
 .icon-a-kaiguanoff:before {
-  content: "\e6c1";
+  content: '\e6c1';
 }
 
 .icon-shujudaochu:before {
-  content: "\e6be";
+  content: '\e6be';
 }
 
 .icon-biaoge:before {
-  content: "\e6bf";
+  content: '\e6bf';
 }
 
 .icon-liebiao:before {
-  content: "\e6c0";
+  content: '\e6c0';
 }
 
 .icon-telphone_mian:before {
-  content: "\e6bb";
+  content: '\e6bb';
 }
 
 .icon-weixin_miam:before {
-  content: "\e6bc";
+  content: '\e6bc';
 }
 
 .icon-telphone_line:before {
-  content: "\e6bd";
+  content: '\e6bd';
 }
 
 .icon-weixin_line:before {
-  content: "\e6ba";
+  content: '\e6ba';
 }
 
 .icon-close:before {
-  content: "\e6b9";
+  content: '\e6b9';
 }
 
 .icon-search:before {
-  content: "\e6b8";
+  content: '\e6b8';
 }
 
 .icon-shouqikuang:before {
-  content: "\e6b6";
+  content: '\e6b6';
 }
 
 .icon-zhankaikuang:before {
-  content: "\e6b7";
+  content: '\e6b7';
 }
 
 .icon-time:before {
-  content: "\e69f";
+  content: '\e69f';
 }
 
 .icon-qiehuan:before {
-  content: "\e6b5";
+  content: '\e6b5';
 }
 
 .icon-guanzhu_yiguanzhu:before {
-  content: "\e67d";
+  content: '\e67d';
 }
 
 .icon-guanzhu_jiaguanzhu:before {
-  content: "\e67e";
+  content: '\e67e';
 }
 
 .icon-guanzhu_weiguanzhu:before {
-  content: "\e67f";
+  content: '\e67f';
 }
 
 .icon-renling_yirenling:before {
-  content: "\e672";
+  content: '\e672';
 }
 
 .icon-renling_weirenling:before {
-  content: "\e673";
+  content: '\e673';
 }
 
 .icon-shoucang:before {
-  content: "\e684";
+  content: '\e684';
 }
 
 .icon-shoucang_weishoucang:before {
-  content: "\e685";
+  content: '\e685';
 }
 
 .icon-top:before {
-  content: "\e6b4";
+  content: '\e6b4';
 }
 
 .icon-code:before {
-  content: "\e6a4";
+  content: '\e6a4';
 }
 
 .icon-byEmail:before {
-  content: "\e6a5";
+  content: '\e6a5';
 }
 
 .icon-date:before {
-  content: "\e6a6";
+  content: '\e6a6';
 }
 
 .icon-shouqi2:before {
-  content: "\e6a7";
+  content: '\e6a7';
 }
 
 .icon-delete:before {
-  content: "\e6a8";
+  content: '\e6a8';
 }
 
 .icon-jiangxu:before {
-  content: "\e6a9";
+  content: '\e6a9';
 }
 
 .icon-more:before {
-  content: "\e6aa";
+  content: '\e6aa';
 }
 
 .icon-name:before {
-  content: "\e6ab";
+  content: '\e6ab';
 }
 
 .icon-shengxu:before {
-  content: "\e6ac";
+  content: '\e6ac';
 }
 
 .icon-zhankai:before {
-  content: "\e6ad";
+  content: '\e6ad';
 }
 
 .icon-phone:before {
-  content: "\e6ae";
+  content: '\e6ae';
 }
 
 .icon-password:before {
-  content: "\e6af";
+  content: '\e6af';
 }
 
 .icon-help:before {
-  content: "\e6b0";
+  content: '\e6b0';
 }
 
 .icon-edit:before {
-  content: "\e6b1";
+  content: '\e6b1';
 }
 
 .icon-zhengyan:before {
-  content: "\e6b2";
+  content: '\e6b2';
 }
 
 .icon-company:before {
-  content: "\e6b3";
+  content: '\e6b3';
 }
 
 .icon-kefu_xian:before {
-  content: "\e6a2";
+  content: '\e6a2';
 }
 
 .icon-kefu_mian:before {
-  content: "\e6a3";
+  content: '\e6a3';
 }
 
 .icon-hui10:before {
-  content: "\e65f";
+  content: '\e65f';
 }
 
 .icon-hui9:before {
-  content: "\e65e";
+  content: '\e65e';
 }
 
 .icon-hui8:before {
-  content: "\e65b";
+  content: '\e65b';
 }
 
 .icon-a-Property1xiazaixiangmubaogaoProperty2nor:before {
-  content: "\e65a";
+  content: '\e65a';
 }
 
 .icon-duihao:before {
-  content: "\e658";
+  content: '\e658';
 }
 
 .icon-box:before {
-  content: "\e6c8";
+  content: '\e6c8';
 }
 
 .icon-home:before {
-  content: "\e6c9";
+  content: '\e6c9';
 }
 
 .icon-book:before {
-  content: "\e6ca";
+  content: '\e6ca';
 }
 
 .icon-shouqi1:before {
-  content: "\e657";
+  content: '\e657';
 }
 
 .icon-a-zhankai1:before {
-  content: "\e656";
+  content: '\e656';
 }
 
 .icon-a-Frame380:before {
-  content: "\e655";
+  content: '\e655';
 }
 
 .icon-hui7:before {
-  content: "\e654";
+  content: '\e654';
 }
 
 .icon-hui6:before {
-  content: "\e653";
+  content: '\e653';
 }
 
 .icon-hui5:before {
-  content: "\e652";
+  content: '\e652';
 }
 
 .icon-hui4:before {
-  content: "\e651";
+  content: '\e651';
 }
 
 .icon-hui3:before {
-  content: "\e650";
+  content: '\e650';
 }
 
 .icon-hui2:before {
-  content: "\e64f";
+  content: '\e64f';
 }
 
 .icon-hui1:before {
-  content: "\e64e";
+  content: '\e64e';
 }
 
 .icon-hui:before {
-  content: "\e64d";
+  content: '\e64d';
 }
 
 .icon-cuowutishi:before {
-  content: "\e63e";
+  content: '\e63e';
 }
 
 .icon-zhengquetishi:before {
-  content: "\e63d";
+  content: '\e63d';
 }
 
 .icon-zhifubao:before {
-  content: "\e63c";
+  content: '\e63c';
 }
 
 .icon-logo:before {
-  content: "\e639";
+  content: '\e639';
 }
 
 .icon-warning:before {
-  content: "\e63a";
+  content: '\e63a';
 }
 
 .icon-zhifuwancheng:before {
-  content: "\e637";
+  content: '\e637';
 }
 
 .icon-76:before {
-  content: "\e686";
+  content: '\e686';
 }
 
 .icon-windows2:before {
-  content: "\e600";
+  content: '\e600';
 }
 
 .icon-weixinzhifu:before {
-  content: "\e635";
+  content: '\e635';
 }
 
 .icon-shaixuan-xuanzhong:before {
-  content: "\e634";
+  content: '\e634';
 }
 
 .icon-huangguan:before {
-  content: "\e604";
+  content: '\e604';
 }
 
 .icon-tianjia:before {
-  content: "\e631";
+  content: '\e631';
 }
 
 .icon-yixuan:before {
-  content: "\e62d";
+  content: '\e62d';
 }
 
 .icon-yulan:before {
-  content: "\e62e";
+  content: '\e62e';
 }
 
 .icon-zishangxianyilai:before {
-  content: "\e62a";
+  content: '\e62a';
 }
 
 .icon-jintian:before {
-  content: "\e62b";
+  content: '\e62b';
 }
 
 .icon-zuijinsanshitian:before {
-  content: "\e62c";
+  content: '\e62c';
 }
 
 .icon-hangye:before {
-  content: "\e613";
+  content: '\e613';
 }
 
 .icon-zhaobiaodingyue:before {
-  content: "\e614";
+  content: '\e614';
 }
 
 .icon-xiangmuguanzhu:before {
-  content: "\e615";
+  content: '\e615';
 }
 
 .icon-nijianxiangmu:before {
-  content: "\e616";
+  content: '\e616';
 }
 
 .icon-zhaobiaoshequ:before {
-  content: "\e617";
+  content: '\e617';
 }
 
 .icon-shujuguizeziyoudingyi:before {
-  content: "\e61a";
+  content: '\e61a';
 }
 
 .icon-shujukaifang:before {
-  content: "\e61b";
+  content: '\e61b';
 }
 
 .icon-mianfei:before {
-  content: "\e61c";
+  content: '\e61c';
 }
 
 .icon-APIjiekou:before {
-  content: "\e61d";
+  content: '\e61d';
 }
 
 .icon-chakanyuanwen:before {
-  content: "\e61e";
+  content: '\e61e';
 }
 
 .icon-xiayiye:before {
-  content: "\e61f";
+  content: '\e61f';
 }
 
 .icon-shangyiye:before {
-  content: "\e620";
+  content: '\e620';
 }
 
 .icon-shouqi:before {
-  content: "\e623";
+  content: '\e623';
 }
 
 .icon-gengduo:before {
-  content: "\e625";
+  content: '\e625';
 }
 
 .icon-shiyanshi:before {
-  content: "\e626";
+  content: '\e626';
 }
 
 .icon-zhidingarrow:before {
-  content: "\e60b";
+  content: '\e60b';
 }
 
 .icon-iOS:before {
-  content: "\e60c";
+  content: '\e60c';
 }
 
 .icon-erweima:before {
-  content: "\e60d";
+  content: '\e60d';
 }
 
 .icon-anzhuo:before {
-  content: "\e60e";
+  content: '\e60e';
 }
 
 .icon-QQ:before {
-  content: "\e60f";
+  content: '\e60f';
 }
 
 .icon-weixin:before {
-  content: "\e611";
+  content: '\e611';
 }
-

+ 40 - 41
apps/bigmember_pc/src/assets/style/reset-ele.scss

@@ -46,8 +46,6 @@
     }
   }
 
-
-
   .el-button--main {
     font-family: Microsoft YaHei, Microsoft YaHei-Regular;
     border-color: $color-text--highlight;
@@ -59,7 +57,8 @@
     font-weight: 400;
     color: #fff;
     line-height: 24px;
-    &:hover, &:focus {
+    &:hover,
+    &:focus {
       border-color: $color-text--highlight;
       background: $color-text--highlight;
       color: #fff;
@@ -67,7 +66,7 @@
   }
 
   .el-link {
-    &.el-link--default{
+    &.el-link--default {
       &:hover {
         color: $color-text--highlight;
       }
@@ -79,9 +78,9 @@
   }
 }
 .custom-message-box {
-  width: 380px!important;
+  width: 380px !important;
   border-radius: 8px;
-  .custom-confirm-btn{
+  .custom-confirm-btn {
     margin-top: 12px;
     width: 132px;
     height: 36px;
@@ -94,78 +93,78 @@
     }
   }
   .el-message-box__message,
-  .message-text{
+  .message-text {
     font-size: 14px;
     color: #686868;
     line-height: 24px;
   }
 }
 .el-popper {
-  li{
+  li {
     float: none;
   }
 }
 
-.el-pagination__jump{
-  color: #686868!important;
+.el-pagination__jump {
+  color: #686868 !important;
 }
-.el-pagination.is-background  .el-pagination__confirm{
+.el-pagination.is-background .el-pagination__confirm {
   width: 52px;
   text-align: center;
-  color: #1D1D1D;
+  color: #1d1d1d;
 }
 
 // 分页组件页码选择select下拉框样式
-.pagination-custom-select{
-  top: -138px!important;
-  left: 4px!important;
-  min-width: 100px!important;
-  margin-top: 0px!important;
-  border-radius: 2px!important;
-  transform-origin: center bottom!important;
-  .el-scrollbar{
+.pagination-custom-select {
+  top: -138px !important;
+  left: 4px !important;
+  min-width: 100px !important;
+  margin-top: 0px !important;
+  border-radius: 2px !important;
+  transform-origin: center bottom !important;
+  .el-scrollbar {
     height: 136px;
     border-radius: 2px;
   }
-  .el-scrollbar__wrap{
-    height: 136px!important;
-    overflow: unset!important;
+  .el-scrollbar__wrap {
+    height: 136px !important;
+    overflow: unset !important;
   }
-  .el-select-dropdown__list{
+  .el-select-dropdown__list {
     padding: 0;
-    max-width: 100px!important;
+    max-width: 100px !important;
   }
-  .el-select-dropdown__item{
+  .el-select-dropdown__item {
     width: 100%;
     text-align: center;
     color: #1d1d1d;
-    border-bottom: 1px solid #ECECEC;
-    text-overflow: unset!important;
+    border-bottom: 1px solid #ececec;
+    text-overflow: unset !important;
   }
-  .el-select-dropdown__item.selected{
+  .el-select-dropdown__item.selected {
     color: #2cb7ca;
   }
   .el-select-dropdown__item.hover,
-  .el-select-dropdown__item:hover{
+  .el-select-dropdown__item:hover {
     background: #2cb7ca;
     color: #fff;
   }
-  .el-scrollbar__bar.is-horizontal{
+  .el-scrollbar__bar.is-horizontal {
     height: 0;
   }
-  .popper__arrow{
-    display: none!important;
+  .popper__arrow {
+    display: none !important;
   }
-  .el-select-dropdown__item.selected{
+  .el-select-dropdown__item.selected {
     color: #2cb7ca;
   }
   .el-select-dropdown__item.hover,
-  .el-select-dropdown__item:hover{
+  .el-select-dropdown__item:hover {
     background: #2cb7ca;
     color: #fff;
   }
-  .el-select-dropdown__wrap{
-    margin-bottom: -18px!important;
+  .el-select-dropdown__wrap {
+    margin-bottom: -18px !important;
   }
 }
 
@@ -190,7 +189,7 @@
   .el-radio__inner::after {
     width: 9px;
     height: 9px;
-    background-color: #2ABED1;
+    background-color: #2abed1;
   }
 }
 
@@ -199,13 +198,13 @@
   $min-width: 204px;
 
   position: relative;
-  > .el-popper[x-placement^=bottom] {
+  > .el-popper[x-placement^='bottom'] {
     margin-top: 0;
   }
   > .el-popover,
   > .el-select-dropdown {
     padding: 0;
-    left: 0!important;
+    left: 0 !important;
     border-color: $color_main;
 
     .el-cascader-menu__wrap {
@@ -223,7 +222,7 @@
   }
 
   .popper__arrow {
-    display: none!important;
+    display: none !important;
   }
   .el-cascader-panel.is-bordered {
     border: none;

+ 0 - 1
apps/bigmember_pc/src/assets/style/selector-cascader-common.scss

@@ -13,4 +13,3 @@
     }
   }
 }
-

+ 22 - 16
apps/bigmember_pc/src/components/account/AccountAuthCard.vue

@@ -12,7 +12,8 @@
     @confirm="onFormConfirm"
     confirmText="下一步"
     @cancel="onFormCancel"
-    :getVerifyCodePayload="getVerifyCodePayload">
+    :getVerifyCodePayload="getVerifyCodePayload"
+  >
     <el-form-item class="auth-form" slot="account">
       <div class="auth-tip">
         <p>为了保证您的账号安全,请验证身份。</p>
@@ -52,12 +53,12 @@ export default {
     accountType: {
       type: String,
       default: 'phone',
-      validator (value) {
+      validator(value) {
         return ['phone', 'email'].includes(value)
       }
     }
   },
-  data () {
+  data() {
     return {
       loading: {
         confirm: false
@@ -72,12 +73,12 @@ export default {
   },
   computed: {
     ...mapState({
-      accountInfo: state => state.user.userAccountInfo
+      accountInfo: (state) => state.user.userAccountInfo
     }),
-    someText () {
+    someText() {
       return accountTypeMap[this.accountType] || {}
     },
-    accountNumber () {
+    accountNumber() {
       const { account } = this.form
       if (this.accountType === 'phone') {
         return addConfusionForTel(account)
@@ -85,36 +86,37 @@ export default {
         return account
       }
     },
-    needPicCode () {
+    needPicCode() {
       return this.accountType === 'phone'
     }
   },
-  created () {
+  created() {
     // 页面前置调用过了,这里不在调用
     // this.getUserAccountInfo()
     this.calcAccount()
   },
   methods: {
-    async getUserAccountInfo () { // 获取手机号
+    async getUserAccountInfo() {
+      // 获取手机号
       const { data, error_code: code } = await getUserAccountInfo()
       if (code === 0) {
         this.$set(this, 'userInfo', data)
         this.calcAccount()
       }
     },
-    calcAccount () {
+    calcAccount() {
       if (this.accountType === 'phone') {
         this.form.account = this.accountInfo.phone
       } else if (this.accountType === 'email') {
         this.form.account = this.accountInfo.email
       }
     },
-    getVerifyCodePayload () {
+    getVerifyCodePayload() {
       return {
         [this.accountType]: this.form.account
       }
     },
-    async doVerify (callback) {
+    async doVerify(callback) {
       this.loading.confirm = true
 
       const accountType = this.accountType
@@ -131,7 +133,11 @@ export default {
         request = accountAuth(payload, 'mail')
       }
       try {
-        const { data = {}, error_code: code, error_msg: msg = '' } = await request
+        const {
+          data = {},
+          error_code: code,
+          error_msg: msg = ''
+        } = await request
         if (code === 0 && data && data.state) {
           callback && callback(data)
         } else {
@@ -151,10 +157,10 @@ export default {
         this.emitSuccess()
       })
     },
-    emitSuccess () {
+    emitSuccess() {
       this.$emit('success', { type: this.accountType })
     },
-    onFormCancel () {
+    onFormCancel() {
       this.$emit('cancel')
     }
   }
@@ -174,7 +180,7 @@ export default {
 .auth-account {
   margin-top: 8px;
   font-size: 18px;
-  color: #1D1D1D;
+  color: #1d1d1d;
   line-height: 28px;
   text-align: center;
 }

+ 12 - 8
apps/bigmember_pc/src/components/account/Countdown.vue

@@ -1,5 +1,7 @@
 <template>
-  <el-button type="text" :disabled="buttonDisabled" v-on="$listeners">{{ buttonText }}</el-button>
+  <el-button type="text" :disabled="buttonDisabled" v-on="$listeners">{{
+    buttonText
+  }}</el-button>
 </template>
 
 <script>
@@ -25,7 +27,7 @@ export default {
       default: '重新获取'
     }
   },
-  data () {
+  data() {
     return {
       state: {
         timerId: 0,
@@ -35,17 +37,19 @@ export default {
     }
   },
   computed: {
-    buttonText () {
+    buttonText() {
       const dText = this.defaultButtonValue
-      return this.state.count <= 0 ? dText : `${this.counterButtonValue}(${this.state.count}s)`
+      return this.state.count <= 0
+        ? dText
+        : `${this.counterButtonValue}(${this.state.count}s)`
     },
-    buttonDisabled () {
+    buttonDisabled() {
       return this.state.count > 0 || this.disabled
     }
   },
   methods: {
     // 开启定时器
-    start (t) {
+    start(t) {
       this.state.count = t || this.state.timeStartDefault
       if (this.state.timerId) {
         clearInterval(this.state.timerId)
@@ -60,11 +64,11 @@ export default {
         }
       }, 1000)
     },
-    reset () {
+    reset() {
       clearInterval(this.state.timerId)
       Object.assign(this.state, this.$options.data().state)
     },
-    onEnded () {
+    onEnded() {
       this.$emit('ended')
     }
   }

+ 27 - 20
apps/bigmember_pc/src/components/account/EmailBindCard.vue

@@ -9,9 +9,14 @@
     :accountRegPass="accountRegPass"
     @confirm="onFormConfirm"
     @cancel="onFormCancel"
-    :getVerifyCodePayload="getVerifyCodePayload">
+    :getVerifyCodePayload="getVerifyCodePayload"
+  >
     <el-form-item slot="account" :error="errorMessage.email">
-      <el-input v-model="form.email" :placeholder="someText.placeholder" @blur="checkAccountRegPass">
+      <el-input
+        v-model="form.email"
+        :placeholder="someText.placeholder"
+        @blur="checkAccountRegPass"
+      >
         <JyIcon size="18px" slot="prefix" name="byEmail"></JyIcon>
       </el-input>
     </el-form-item>
@@ -56,12 +61,12 @@ export default {
     actionType: {
       type: String,
       default: 'bind',
-      validator (value) {
+      validator(value) {
         return ['bind', 'change'].includes(value)
       }
     }
   },
-  data () {
+  data() {
     return {
       loading: {
         confirm: false
@@ -80,33 +85,33 @@ export default {
   },
   computed: {
     ...mapState({
-      accountInfo: state => state.user.userAccountInfo
+      accountInfo: (state) => state.user.userAccountInfo
     }),
-    someText () {
+    someText() {
       return actionTypeMap[this.actionType] || {}
     },
-    toastText () {
+    toastText() {
       return `${this.someText.text}成功`
     },
-    accountRegPass () {
+    accountRegPass() {
       return this.checkEmailRegPass()
     }
   },
-  created () {
+  created() {
     this.calcDefaultEmail()
   },
   methods: {
-    calcDefaultEmail () {
+    calcDefaultEmail() {
       if (this.autoFillEmail && this.actionType === 'bind') {
         if (this.accountInfo.otherMail) {
           this.form.email = this.accountInfo.otherMail
         }
       }
     },
-    checkEmailRegPass () {
+    checkEmailRegPass() {
       return reg.email.test(this.form.email)
     },
-    checkAccountRegPass () {
+    checkAccountRegPass() {
       const pass = this.checkEmailRegPass()
       if (this.form.email) {
         if (pass) {
@@ -119,12 +124,12 @@ export default {
       }
       return pass
     },
-    getVerifyCodePayload () {
+    getVerifyCodePayload() {
       return {
         mail: this.form.email
       }
     },
-    async setEmail (callback) {
+    async setEmail(callback) {
       var pass = this.checkAccountRegPass()
       if (!pass) return
 
@@ -137,7 +142,11 @@ export default {
         step: 2
       }
       try {
-        const { data = {}, error_code: code, error_msg: msg = '' } = await emailBind(payload, actionType)
+        const {
+          data = {},
+          error_code: code,
+          error_msg: msg = ''
+        } = await emailBind(payload, actionType)
         if (code === 0 && data && data.state) {
           this.$toast(this.toastText)
           callback && callback(data)
@@ -166,19 +175,17 @@ export default {
         })
       }
     },
-    emitSuccess () {
+    emitSuccess() {
       this.$emit('success', {
         type: this.actionType,
         msg: this.toastText
       })
     },
-    onFormCancel () {
+    onFormCancel() {
       this.$emit('cancel')
     }
   }
 }
 </script>
 
-<style scoped lang="scss">
-
-</style>
+<style scoped lang="scss"></style>

+ 32 - 21
apps/bigmember_pc/src/components/account/PhoneBindCard.vue

@@ -8,9 +8,15 @@
     :accountRegPass="accountRegPass"
     @confirm="onFormConfirm"
     @cancel="onFormCancel"
-    :getVerifyCodePayload="getVerifyCodePayload">
+    :getVerifyCodePayload="getVerifyCodePayload"
+  >
     <el-form-item slot="account" :error="errorMessage.phone">
-      <el-input v-model.number="form.phone" maxlength="11" :placeholder="someText.placeholder" @blur="checkAccountRegPass">
+      <el-input
+        v-model.number="form.phone"
+        maxlength="11"
+        :placeholder="someText.placeholder"
+        @blur="checkAccountRegPass"
+      >
         <JyIcon size="18px" slot="prefix" name="phone"></JyIcon>
       </el-input>
     </el-form-item>
@@ -50,12 +56,12 @@ export default {
     actionType: {
       type: String,
       default: 'bind',
-      validator (value) {
+      validator(value) {
         return ['bind', 'change'].includes(value)
       }
     }
   },
-  data () {
+  data() {
     return {
       loading: {
         confirm: false
@@ -73,22 +79,22 @@ export default {
     }
   },
   computed: {
-    someText () {
+    someText() {
       return actionTypeMap[this.actionType] || {}
     },
-    toastText () {
+    toastText() {
       return `${this.someText.text}成功`
     },
-    accountRegPass () {
+    accountRegPass() {
       return this.checkPhoneRegPass()
     }
   },
-  created () {},
+  created() {},
   methods: {
-    checkPhoneRegPass () {
+    checkPhoneRegPass() {
       return reg.phone.test(this.form.phone)
     },
-    checkAccountRegPass () {
+    checkAccountRegPass() {
       const pass = this.checkPhoneRegPass()
       if (this.form.phone) {
         if (pass) {
@@ -101,12 +107,12 @@ export default {
       }
       return pass
     },
-    getVerifyCodePayload () {
+    getVerifyCodePayload() {
       return {
         phone: this.form.phone
       }
     },
-    async setPhone (callback) {
+    async setPhone(callback) {
       var pass = this.checkAccountRegPass()
       if (!pass) return
 
@@ -123,7 +129,11 @@ export default {
       }
 
       try {
-        const { data = {}, error_code: code, error_msg: msg = '' } = await phoneBind(payload, actionType)
+        const {
+          data = {},
+          error_code: code,
+          error_msg: msg = ''
+        } = await phoneBind(payload, actionType)
         if (code === 0 && data && data.state) {
           this.$toast(this.toastText)
           callback && callback(data)
@@ -143,7 +153,8 @@ export default {
         // 绑定手机号完成后,刷新页面数据
         // checkNeedGoNewUserSettingPage()
         if (data.needMerge) {
-          location.href = '/swordfish/frontPage/userMerge/sess/merge?token=' + data.mergeToken
+          location.href =
+            '/swordfish/frontPage/userMerge/sess/merge?token=' + data.mergeToken
         } else {
           // checkNeedGoNewUserSettingPage()
           // 绑定成功,关闭弹窗,刷新页面数据
@@ -151,14 +162,16 @@ export default {
         }
       } else if (data.state === 2) {
         // 去账号合并
-        location.replace(`/swordfish/frontPage/userMerge/sess/merge?token=${data.token}`)
+        location.replace(
+          `/swordfish/frontPage/userMerge/sess/merge?token=${data.token}`
+        )
       }
     },
     onFormConfirm: function () {
       const actionType = this.actionType
       if (actionType === 'bind') {
         console.log('绑定手机号...')
-        this.setPhone(data => {
+        this.setPhone((data) => {
           this.bindPhoneSuccess(data)
         })
       } else if (actionType === 'change') {
@@ -168,19 +181,17 @@ export default {
         })
       }
     },
-    emitSuccess () {
+    emitSuccess() {
       this.$emit('success', {
         type: this.actionType,
         msg: this.toastText
       })
     },
-    onFormCancel () {
+    onFormCancel() {
       this.$emit('cancel')
     }
   }
 }
 </script>
 
-<style scoped lang="scss">
-
-</style>
+<style scoped lang="scss"></style>

+ 63 - 25
apps/bigmember_pc/src/components/account/SendVerifyCodeForm.vue

@@ -8,33 +8,58 @@
           </el-input>
         </el-form-item> -->
       </slot>
-      <el-form-item v-show="picCodeShow" prop="picCode" :error="errorMessage.picCode">
-        <el-input :value="picCodeValue" @input="onPicCodeInput" maxlength="4" :placeholder="placeholder.picCode">
+      <el-form-item
+        v-show="picCodeShow"
+        prop="picCode"
+        :error="errorMessage.picCode"
+      >
+        <el-input
+          :value="picCodeValue"
+          @input="onPicCodeInput"
+          maxlength="4"
+          :placeholder="placeholder.picCode"
+        >
           <JyIcon slot="prefix" size="18px" name="code"></JyIcon>
           <template #suffix>
             <!-- 图形验证码 -->
-            <div class="verify-img" @click="refreshCaptcha" v-loading="loading.captcha">
-              <img :src="imgBase64Complete" alt="图形验证码">
+            <div
+              class="verify-img"
+              @click="refreshCaptcha"
+              v-loading="loading.captcha"
+            >
+              <img :src="imgBase64Complete" alt="图形验证码" />
             </div>
           </template>
         </el-input>
       </el-form-item>
       <!-- <JyIcon slot="prefix" name="icon-byEmail"></JyIcon> -->
       <el-form-item prop="code" :error="errorMessage.code">
-        <el-input :value="codeValue" @input="onCodeInput" maxlength="6" :placeholder="codePlaceholder">
+        <el-input
+          :value="codeValue"
+          @input="onCodeInput"
+          maxlength="6"
+          :placeholder="codePlaceholder"
+        >
           <JyIcon slot="prefix" size="18px" name="code"></JyIcon>
           <template #suffix>
             <Countdown
               ref="countdown"
               :disabled="countdownDisabled"
               @ended="onCountdownEnd"
-              @click="sendVerifyCode"></Countdown>
+              @click="sendVerifyCode"
+            ></Countdown>
           </template>
         </el-input>
       </el-form-item>
     </el-form>
     <div class="form-action-button-group">
-      <button class="form-action-button confirm" @click="onSubmit" :disabled="confirmButtonDisabled">{{ confirmText }}</button>
+      <button
+        class="form-action-button confirm"
+        @click="onSubmit"
+        :disabled="confirmButtonDisabled"
+      >
+        {{ confirmText }}
+      </button>
       <button class="form-action-button cancel" @click="onCancel">取消</button>
     </div>
   </section>
@@ -43,7 +68,12 @@
 <script>
 // 账号绑定/更换组件
 import { Form, FormItem, Button, Input } from 'element-ui'
-import { getPhoneCaptcha, phoneBind, emailBind, accountAuth } from '@/api/modules/'
+import {
+  getPhoneCaptcha,
+  phoneBind,
+  emailBind,
+  accountAuth
+} from '@/api/modules/'
 import Countdown from './Countdown.vue'
 
 export default {
@@ -59,14 +89,14 @@ export default {
     accountType: {
       type: String,
       default: 'phone',
-      validator (value) {
+      validator(value) {
         return ['phone', 'email'].includes(value)
       }
     },
     actionType: {
       type: String,
       default: 'bind',
-      validator (value) {
+      validator(value) {
         return ['bind', 'change', 'auth'].includes(value)
       }
     },
@@ -101,7 +131,7 @@ export default {
       required: true
     }
   },
-  data () {
+  data() {
     return {
       loading: {
         captcha: false,
@@ -127,13 +157,13 @@ export default {
     }
   },
   computed: {
-    imgBase64Complete () {
+    imgBase64Complete() {
       return 'data:image/png;base64,' + this.picCode.imgBase64
     },
-    picCodeShow () {
+    picCodeShow() {
       return this.picCode.show
     },
-    countdownDisabled () {
+    countdownDisabled() {
       const accountNoPass = !this.accountRegPass
       let imgCodeNoPass = false
       if (this.picCodeShow) {
@@ -141,7 +171,7 @@ export default {
       }
       return accountNoPass || imgCodeNoPass
     },
-    confirmButtonDisabled () {
+    confirmButtonDisabled() {
       let hasEmpty = false
       if (this.picCodeShow) {
         hasEmpty = !this.accountRegPass || !this.codeValue || !this.picCodeValue
@@ -152,28 +182,28 @@ export default {
       return hasEmpty || !pass
     }
   },
-  created () {
+  created() {
     if (this.needPicCode) {
       this.getImgCaptcha()
     }
   },
   methods: {
-    onPicCodeInput (e) {
+    onPicCodeInput(e) {
       this.$emit('update:picCodeValue', e)
     },
-    onCodeInput (e) {
+    onCodeInput(e) {
       this.$emit('update:codeValue', e)
     },
-    checkAccountRegPass () {
+    checkAccountRegPass() {
       return this.accountRegPass
     },
-    refreshCaptcha () {
+    refreshCaptcha() {
       // this.conf.verifyImgSrc = `${this.conf.verifyImgUrl}?v=${Date.now()}`
       this.picCode.imgBase64 = ''
       this.getImgCaptcha()
     },
     // 倒计时结束,刷新验证码
-    onCountdownEnd () {
+    onCountdownEnd() {
       if (this.picCode.cacheImgBase64) {
         this.picCode.show = this.picCode.cacheShow
         this.picCode.imgBase64 = this.picCode.cacheImgBase64
@@ -182,7 +212,7 @@ export default {
         this.refreshCaptcha()
       }
     },
-    async getImgCaptcha (needCache) {
+    async getImgCaptcha(needCache) {
       if (this.picCode.cacheImgBase64) {
         this.picCode.show = this.picCode.cacheShow
         this.picCode.imgBase64 = this.picCode.cacheImgBase64
@@ -192,7 +222,11 @@ export default {
 
       this.loading.captcha = true
       try {
-        const { data, error_code: code, error_msg: msg = '' } = await getPhoneCaptcha()
+        const {
+          data,
+          error_code: code,
+          error_msg: msg = ''
+        } = await getPhoneCaptcha()
         if (code === 0 && data) {
           // 是否缓存图片
           if (needCache === 'cache') {
@@ -215,7 +249,7 @@ export default {
       }
     },
     // 发送短信验证码
-    async sendVerifyCode () {
+    async sendVerifyCode() {
       const pass = this.checkAccountRegPass()
       if (!pass) return
       const p = this.getVerifyCodePayload() || {}
@@ -247,7 +281,11 @@ export default {
             request = emailBind(payload, actionType)
           }
         }
-        const { data = {}, error_code: code, error_msg: msg = '' } = await request
+        const {
+          data = {},
+          error_code: code,
+          error_msg: msg = ''
+        } = await request
         if (code === 0 && data && data.state === 1) {
           this.$toast('验证码发送成功')
           if (this.needPicCode) {

+ 32 - 24
apps/bigmember_pc/src/components/ad/activity-dialog.vue

@@ -5,14 +5,17 @@
     @close="onDialogClose"
     :visible.sync="visible"
     :close-on-click-modal="false"
-    :show-close="false">
-    <div class="activity-content-container"
+    :show-close="false"
+  >
+    <div
+      class="activity-content-container"
       :class="{ pointer: pointer }"
       :style="{
         width: getStyle.width,
         height: getStyle.height
       }"
-      @click.stop="openAD">
+      @click.stop="openAD"
+    >
       <SvgaSupport
         v-if="isSvgaType"
         :style="{
@@ -31,9 +34,10 @@
           width: getStyle.width,
           height: getStyle.height
         }"
-        alt="">
+        alt=""
+      />
       <div class="close-icon pointer" @click.stop="showDialog(false)">
-        <img src="@/assets/images/icon/close-purple2x.png" alt="">
+        <img src="@/assets/images/icon/close-purple2x.png" alt="" />
       </div>
     </div>
   </el-dialog>
@@ -62,7 +66,7 @@ export default {
     },
     config: {
       type: Object,
-      default () {
+      default() {
         return {
           pic: '',
           link: '',
@@ -76,7 +80,7 @@ export default {
       }
     }
   },
-  data () {
+  data() {
     return {
       dateInfo: {
         week: 0
@@ -86,10 +90,10 @@ export default {
     }
   },
   computed: {
-    hasAdPic () {
+    hasAdPic() {
       return this.info && this.info.pic
     },
-    getConfig () {
+    getConfig() {
       const hasInfo = this.info?.pic || this.info?.link
       if (this.ad && hasInfo) {
         return this.info
@@ -97,23 +101,23 @@ export default {
         return this.config
       }
     },
-    getConfigExtend () {
+    getConfigExtend() {
       if (this.getConfig && this.getConfig.extend) {
         return this.getConfig.extend
       } else {
         return {}
       }
     },
-    isSvgaType () {
+    isSvgaType() {
       return this.getConfig?.pic?.indexOf('.svga') !== -1
     },
-    isFullType () {
+    isFullType() {
       return this.getConfigExtend?.theme === '1'
     },
-    pointer () {
+    pointer() {
       return this.info?.link
     },
-    getStyle () {
+    getStyle() {
       const w = this.getConfig?.extend?.width
       const h = this.getConfig?.extend?.height
       return {
@@ -122,16 +126,16 @@ export default {
       }
     }
   },
-  created () {
+  created() {
     this.initPageInfo()
     this.getActivityInfo()
   },
   methods: {
-    initPageInfo () {
+    initPageInfo() {
       const now = new Date()
       this.dateInfo.week = now.getDay() // 星期日为 0,星期一为 1,依此类推。
     },
-    async getActivityInfo () {
+    async getActivityInfo() {
       const codes = [this.ad]
 
       if (!this.ad) {
@@ -149,8 +153,12 @@ export default {
         console.warn('获取广告位信息异常:', e)
       }
     },
-    async getAdInfoFromRequest (codes) {
-      const { data = {}, error_code: code, error_msg: msg = '' } = await getCommonAdList({ codes })
+    async getAdInfoFromRequest(codes) {
+      const {
+        data = {},
+        error_code: code,
+        error_msg: msg = ''
+      } = await getCommonAdList({ codes })
       if (code === 0 && data) {
         const info = adConfigFormatter(Object.values(data).flat()[0])
         return { info }
@@ -158,7 +166,7 @@ export default {
         console.warn(msg)
       }
     },
-    checkDialogShow () {
+    checkDialogShow() {
       const { week } = this.dateInfo
       const { storageKey } = this
       let needShowDialog = false
@@ -171,7 +179,7 @@ export default {
       }
       return needShowDialog
     },
-    async openAD () {
+    async openAD() {
       if (this.beforeOpen) {
         const prevent = await this.beforeOpen()
         // 返回true可以继续往下走,返回false阻止跳转
@@ -189,13 +197,13 @@ export default {
         this.onDialogClose()
       }
     },
-    showDialog (f = false) {
+    showDialog(f = false) {
       this.visible = f
     },
-    loadSuccess () {
+    loadSuccess() {
       this.$emit('loaded')
     },
-    onDialogClose () {
+    onDialogClose() {
       // 刷新localStorage的值
       const { week } = this.dateInfo
       const { storageKey } = this

+ 41 - 24
apps/bigmember_pc/src/components/ad/guide-intro-dialog.vue

@@ -4,12 +4,16 @@
     @close="onDialogClose"
     :visible.sync="visible"
     :close-on-click-modal="false"
-    :show-close="false">
+    :show-close="false"
+  >
     <div class="guide-content-container">
-      <el-carousel class="carousel-list" height="100%" arrow="always" :interval="2000">
-        <el-carousel-item
-          v-for="(item, index) in imageList"
-          :key="index">
+      <el-carousel
+        class="carousel-list"
+        height="100%"
+        arrow="always"
+        :interval="2000"
+      >
+        <el-carousel-item v-for="(item, index) in imageList" :key="index">
           <img
             :class="{ pointer: calcPointer(item) }"
             :src="item.pic"
@@ -49,7 +53,7 @@ export default {
       default: 'READ_GUIDE-login-clear'
     }
   },
-  data () {
+  data() {
     return {
       conf: {
         ad: 'pc-guide'
@@ -60,15 +64,15 @@ export default {
     }
   },
   computed: {
-    ad () {
+    ad() {
       return this.conf.ad
     }
   },
-  created () {
+  created() {
     this.checkHasStorage()
   },
   methods: {
-    async getActivityInfo () {
+    async getActivityInfo() {
       const codes = [this.ad]
 
       if (!this.ad) {
@@ -83,18 +87,22 @@ export default {
         console.warn('获取广告位信息异常:', e)
       }
     },
-    async getAdInfoFromRequest (codes) {
-      const { data = {}, error_code: code, error_msg: msg = '' } = await getCommonAdList({ codes })
+    async getAdInfoFromRequest(codes) {
+      const {
+        data = {},
+        error_code: code,
+        error_msg: msg = ''
+      } = await getCommonAdList({ codes })
       if (code === 0 && data && Array.isArray(data[this.ad])) {
         const adList = data[this.ad]
-        const info = adList.map(item => adConfigFormatter(item))
+        const info = adList.map((item) => adConfigFormatter(item))
         return { info }
       } else {
         console.warn(msg)
       }
     },
     // 判断是否存在访问记录
-    checkHasStorage () {
+    checkHasStorage() {
       const hasRecord = this.checkHasGuideRecord()
       if (hasRecord) {
         this.showDialog(false)
@@ -106,7 +114,7 @@ export default {
      * 保存引导页访问记录,是否需要持久化存储
      * @param long
      */
-    saveStorage (long = true) {
+    saveStorage(long = true) {
       const GUIDE_CACHE_KEY = this.storageKey
       const now = Date.now()
       if (long) {
@@ -115,14 +123,18 @@ export default {
         sessionStorage.setItem(GUIDE_CACHE_KEY, now)
       }
     },
-    checkHasGuideRecord () {
+    checkHasGuideRecord() {
       const GUIDE_CACHE_KEY = this.storageKey
-      return sessionStorage.getItem(GUIDE_CACHE_KEY) || localStorage.getItem(GUIDE_CACHE_KEY) || false
+      return (
+        sessionStorage.getItem(GUIDE_CACHE_KEY) ||
+        localStorage.getItem(GUIDE_CACHE_KEY) ||
+        false
+      )
     },
-    calcPointer (ad) {
+    calcPointer(ad) {
       return ad.info?.link
     },
-    calcStyle (ad) {
+    calcStyle(ad) {
       const w = ad.getConfig?.extend?.width
       const h = ad.getConfig?.extend?.height
       return {
@@ -130,14 +142,14 @@ export default {
         height: h ? `${h}px` : ''
       }
     },
-    showDialog (f = false) {
+    showDialog(f = false) {
       this.visible = f
     },
     // 跳过
-    skip () {
+    skip() {
       this.showDialog(false)
     },
-    onDialogClose () {
+    onDialogClose() {
       this.saveStorage(this.needRecord)
     }
   }
@@ -146,12 +158,17 @@ export default {
 
 <style scoped lang="scss">
 .guide-intro-dialog {
-  z-index: 2050!important;
+  z-index: 2050 !important;
   ::v-deep {
     .el-dialog {
       width: 440px;
       height: 520px;
-      background: linear-gradient(167.96deg, #FFFFFF 0%, #E2FDFF 48.02%, #EFFEFF 100%);
+      background: linear-gradient(
+        167.96deg,
+        #ffffff 0%,
+        #e2fdff 48.02%,
+        #effeff 100%
+      );
       box-shadow: none;
       border-radius: 8px;
     }
@@ -211,7 +228,7 @@ export default {
       &.is-active {
         width: 20px;
         .el-carousel__button {
-          background: #2ABED1;
+          background: #2abed1;
         }
       }
     }

+ 21 - 8
apps/bigmember_pc/src/components/ad/svga-support/index.vue

@@ -1,5 +1,10 @@
 <template>
-  <div class="svga-container" ref="svga-container" v-bind="$props" v-on="$listeners">
+  <div
+    class="svga-container"
+    ref="svga-container"
+    v-bind="$props"
+    v-on="$listeners"
+  >
     <canvas ref="svga-canvas"></canvas>
   </div>
 </template>
@@ -17,7 +22,7 @@ export default {
       type: String
     }
   },
-  mounted () {
+  mounted() {
     try {
       this.init()
     } catch (e) {
@@ -30,24 +35,32 @@ export default {
      * @param text
      * @returns {number}
      */
-    getPureNumber (text) {
+    getPureNumber(text) {
       const result = Number(String(text).replace(FilterNumberRegExp, ''))
       if (isNaN(result)) {
         return 0
       }
       return result
     },
-    async init () {
+    async init() {
       const parser = new Parser()
       const svga = await parser.load(this.svgaLink)
       const player = new Player(this.$refs['svga-canvas'])
 
-      const scaleX = this.getPureNumber(this.$refs['svga-container'].style.width) / svga.size.width
-      const scaleY = this.getPureNumber(this.$refs['svga-container'].style.height) / svga.size.height
+      const scaleX =
+        this.getPureNumber(this.$refs['svga-container'].style.width) /
+        svga.size.width
+      const scaleY =
+        this.getPureNumber(this.$refs['svga-container'].style.height) /
+        svga.size.height
       const scaleRatio = Number((scaleX > scaleY ? scaleX : scaleY).toFixed(3))
 
-      this.$refs['svga-canvas'].style['-webkit-transform'] = `scale(${scaleRatio}, ${scaleRatio})`
-      this.$refs['svga-canvas'].style.transform = `scale(${scaleRatio}, ${scaleRatio})`
+      this.$refs['svga-canvas'].style[
+        '-webkit-transform'
+      ] = `scale(${scaleRatio}, ${scaleRatio})`
+      this.$refs[
+        'svga-canvas'
+      ].style.transform = `scale(${scaleRatio}, ${scaleRatio})`
 
       await player.mount(svga)
       player.start()

+ 349 - 237
apps/bigmember_pc/src/components/article-item/ArticleItem.vue

@@ -1,32 +1,68 @@
 <template>
-  <div class="article-item" :class="{'style-for-gray': config.gray, 'style-for-table': config.table }">
+  <div
+    class="article-item"
+    :class="{ 'style-for-gray': config.gray, 'style-for-table': config.table }"
+  >
     <div class="flex-center">
-      <input v-if="config.collect" @change="changeCheck($event)" @click.stop class="custom-checkbox title-text-checkbox" name="bid-list" type="checkbox" :dataid="article._id">
+      <input
+        v-if="config.collect"
+        @change="changeCheck($event)"
+        @click.stop
+        class="custom-checkbox title-text-checkbox"
+        name="bid-list"
+        type="checkbox"
+        :dataid="article._id"
+      />
       <div class="a-i-con">
         <div class="content-item">
-          <div v-html="calcTitle" class="a-i-left  ellipsis visited-hd" @click="onClick"></div>
+          <div
+            v-html="calcTitle"
+            class="a-i-left ellipsis visited-hd"
+            @click="onClick"
+          ></div>
         </div>
         <div class="time-container">
           <span class="el-icon-jy-time" v-if="!config.gray"></span>
           <span class="time-text">
-            <slot name="right-time">{{ dateFromNow(article.publishtime * 1000) }}</slot>
+            <slot name="right-time">{{
+              dateFromNow(article.publishtime * 1000)
+            }}</slot>
           </span>
         </div>
       </div>
     </div>
     <div class="a-i-right">
       <div class="tags">
-        <span class="tag tag-user" v-if="article.site === '剑鱼信息发布平台' || article.spidercode === 'a_jyxxfbpt_gg'">用户发布</span>
-        <span class="tag tag-own" v-if="buySubject && article.source === 1">个人订阅</span>
-        <span class="tag tag-ent" v-if="buySubject && article.source === 2">企业自动分发</span>
-        <span class="tag tag-ent" v-if="buySubject && article.source === 3">企业手动分发</span>
+        <span
+          class="tag tag-user"
+          v-if="
+            article.site === '剑鱼信息发布平台' ||
+            article.spidercode === 'a_jyxxfbpt_gg'
+          "
+          >用户发布</span
+        >
+        <span class="tag tag-own" v-if="buySubject && article.source === 1"
+          >个人订阅</span
+        >
+        <span class="tag tag-ent" v-if="buySubject && article.source === 2"
+          >企业自动分发</span
+        >
+        <span class="tag tag-ent" v-if="buySubject && article.source === 3"
+          >企业手动分发</span
+        >
         <span class="tag" v-if="article.area">{{ article.area }}</span>
         <span class="tag orange" v-if="article.type">{{ article.type }}</span>
-        <span class="tag green" v-if="article.buyerclass">{{ article.buyerclass }}</span>
-        <span class="tag dpink" v-if="calcBudget && calcBudget !== '0元'">{{ calcBudget }}</span>
-        <span v-if="config.gray&&article.ca_fileExists" class="haveFile">有附件</span>
+        <span class="tag green" v-if="article.buyerclass">{{
+          article.buyerclass
+        }}</span>
+        <span class="tag dpink" v-if="calcBudget && calcBudget !== '0元'">{{
+          calcBudget
+        }}</span>
+        <span v-if="config.gray && article.ca_fileExists" class="haveFile"
+          >有附件</span
+        >
       </div>
-      <div style="display:flex;align-items:center;">
+      <div style="display: flex; align-items: center">
         <el-popover
           popper-class="statusPopover"
           placement="left"
@@ -34,36 +70,81 @@
           :append-to-body="false"
           v-if="vt === 'q'"
           @show="setShow"
-          trigger="hover">
+          trigger="hover"
+        >
           <el-table maxHeight="288px" :border="true" :data="gridData">
-            <el-table-column align="center" width="88" prop="name" label="员工姓名"></el-table-column>
-            <el-table-column align="center" width="120" prop="phone" label="手机号"></el-table-column>
-            <!-- 信息来源 -->
             <el-table-column
-              label="信息来源"
               align="center"
-              width="112">
-              <template slot-scope="scope"> {{ formatSource(scope.row.source) || '-' }} </template>
+              width="88"
+              prop="name"
+              label="员工姓名"
+            ></el-table-column>
+            <el-table-column
+              align="center"
+              width="120"
+              prop="phone"
+              label="手机号"
+            ></el-table-column>
+            <!-- 信息来源 -->
+            <el-table-column label="信息来源" align="center" width="112">
+              <template slot-scope="scope">
+                {{ formatSource(scope.row.source) || '-' }}
+              </template>
             </el-table-column>
-            <el-table-column class-name="pushTime" align="center" width="136" prop="date" label="推送时间"></el-table-column>
-            <el-table-column align="center" width="96" prop="isvisit" label="查看状态"></el-table-column>
-            <el-table-column class-name="viewTime" align="center" width="136" prop="visittime" label="最近一次查看时间"></el-table-column>
+            <el-table-column
+              class-name="pushTime"
+              align="center"
+              width="136"
+              prop="date"
+              label="推送时间"
+            ></el-table-column>
+            <el-table-column
+              align="center"
+              width="96"
+              prop="isvisit"
+              label="查看状态"
+            ></el-table-column>
+            <el-table-column
+              class-name="viewTime"
+              align="center"
+              width="136"
+              prop="visittime"
+              label="最近一次查看时间"
+            ></el-table-column>
           </el-table>
           <span slot="reference" class="view-status">查看状态</span>
         </el-popover>
         <slot name="right-handle-container"></slot>
-        <div class="right-actions" v-if="config.collect" @click.stop="collectChange($event)">
-          <i class="icon-collect" :class="{'checked': article.collection}" :dataid="article._id"></i>
-          <span name="right-action" style="font-size: 14px;margin-left:4px;">{{ article.collection ? '已收藏' : '收藏' }}</span>
+        <div
+          class="right-actions"
+          v-if="config.collect"
+          @click.stop="collectChange($event)"
+        >
+          <i
+            class="icon-collect"
+            :class="{ checked: article.collection }"
+            :dataid="article._id"
+          ></i>
+          <span name="right-action" style="font-size: 14px; margin-left: 4px">{{
+            article.collection ? '已收藏' : '收藏'
+          }}</span>
         </div>
       </div>
     </div>
     <div class="list-detail" v-show="showDetailModel">
-      <p class="l-d-item" v-if="article.buyer || article.buyerTel || article.budget">
+      <p
+        class="l-d-item"
+        v-if="article.buyer || article.buyerTel || article.budget"
+      >
         <span v-if="article.buyer">
           <i class="l-d-item-label">采购单位:</i>
-          <em v-for="(buyer, b) in formatBuyer(article.buyer)" :key="b" @click="goPortrayal('buyerDesc', buyer)" class="highlight-text pointer">
-            {{buyer}}
+          <em
+            v-for="(buyer, b) in formatBuyer(article.buyer)"
+            :key="b"
+            @click="goPortrayal('buyerDesc', buyer)"
+            class="highlight-text pointer"
+          >
+            {{ buyer }}
             <em v-if="b != formatBuyer(article.buyer).length - 1">、</em>
           </em>
         </span>
@@ -72,7 +153,12 @@
           {{ article.buyerPerson }}
           <em v-if="article.buyerPerson">,</em>
           {{ article.buyerTel }}
-          <em class="more-tel" v-if="article.buyerTel" @click="goPortrayal('buyerDesc', article.buyer, 'contact')">获取更多</em>
+          <em
+            class="more-tel"
+            v-if="article.buyerTel"
+            @click="goPortrayal('buyerDesc', article.buyer, 'contact')"
+            >获取更多</em
+          >
         </span>
         <span v-if="article.budget">
           <i class="l-d-item-label">预算金额:</i>
@@ -86,14 +172,26 @@
         </span>
         <span v-if="article.agencyTel">
           <i class="l-d-item-label">代理机构联系方式:</i>
-          {{ article.agencyPerson }}<em v-if="article.agencyPerson">,</em>{{ article.agencyTel }}</span>
+          {{ article.agencyPerson }}<em v-if="article.agencyPerson">,</em
+          >{{ article.agencyTel }}</span
+        >
       </p>
-      <p class="l-d-item" v-if="article.winner || article.winnerTel || article.bidAmount">
+      <p
+        class="l-d-item"
+        v-if="article.winner || article.winnerTel || article.bidAmount"
+      >
         <span v-if="article.winnerInfo && article.winnerInfo.length > 0">
           <i class="l-d-item-label">中标单位:</i>
-          <em v-for="(w, i) in article.winnerInfo" :key="w.winnerId" @click="goPortrayal('entDesc', w.winnerId)" class="highlight-text pointer">
-            {{w.winner}}
-            <em v-if="i != article.winnerInfo.length - 1" :key="i + '_1'">、</em>
+          <em
+            v-for="(w, i) in article.winnerInfo"
+            :key="w.winnerId"
+            @click="goPortrayal('entDesc', w.winnerId)"
+            class="highlight-text pointer"
+          >
+            {{ w.winner }}
+            <em v-if="i != article.winnerInfo.length - 1" :key="i + '_1'"
+              >、</em
+            >
           </em>
         </span>
         <span v-if="article.winnerTel">
@@ -101,14 +199,21 @@
           {{ article.winnerPerson }}
           <em v-if="article.winnerPerson">,</em>
           {{ article.winnerTel }}
-          <em v-if="article.winnerInfo && article.winnerInfo.length > 1" @click="goPortrayal('entDesc', w.winnerId, 'contact')">获取更多</em>
+          <em
+            v-if="article.winnerInfo && article.winnerInfo.length > 1"
+            @click="goPortrayal('entDesc', w.winnerId, 'contact')"
+            >获取更多</em
+          >
         </span>
         <span v-if="article.bidAmount">
           <i class="l-d-item-label">中标金额:</i>
           {{ moneyUnit(article.bidAmount) }}
         </span>
       </p>
-      <p class="l-d-item" v-if="article.signendTime || article.bidendTime || article.bidOpenTime">
+      <p
+        class="l-d-item"
+        v-if="article.signendTime || article.bidendTime || article.bidOpenTime"
+      >
         <span v-if="article.signendTime">
           <i class="l-d-item-label">报名截止日期:</i>
           {{ dateFromNow(article.signendTime * 1000) }}
@@ -119,7 +224,7 @@
         </span>
         <span v-if="article.bidOpenTime">
           <i class="l-d-item-label">开标日期:</i>
-          {{  dateFromNow(article.bidOpenTime * 1000) }}
+          {{ dateFromNow(article.bidOpenTime * 1000) }}
         </span>
       </p>
     </div>
@@ -142,13 +247,13 @@ export default {
   props: {
     gridData: {
       type: Array,
-      default () {
+      default() {
         return [
-        // {
-        //   visittime: '2016-05-02',
-        //   name: '王小虎',
-        //   isvisit: 0
-        // }
+          // {
+          //   visittime: '2016-05-02',
+          //   name: '王小虎',
+          //   isvisit: 0
+          // }
         ]
       }
     },
@@ -158,7 +263,7 @@ export default {
     },
     config: {
       type: Object,
-      default () {
+      default() {
         return {
           gray: false,
           table: false,
@@ -168,7 +273,7 @@ export default {
     },
     article: {
       type: Object,
-      default () {
+      default() {
         return {
           title: '', // 标题
           area: '', // 区域
@@ -189,19 +294,19 @@ export default {
   },
   computed: {
     ...mapState({
-      entInfo: state => state.user.entInfo
+      entInfo: (state) => state.user.entInfo
     }),
-    ...mapGetters('user', [
-      'isVipBefore',
-      'bigmember',
-      'entniche'
-    ]),
+    ...mapGetters('user', ['isVipBefore', 'bigmember', 'entniche']),
     // 购买主体是企业 1:是
-    buySubject () {
-      const { vip_power: vipPower, member_power: memberPower, user_power: entPower } = this.entInfo
-      return (vipPower === 1 || memberPower === 1 || entPower === 1)
+    buySubject() {
+      const {
+        vip_power: vipPower,
+        member_power: memberPower,
+        user_power: entPower
+      } = this.entInfo
+      return vipPower === 1 || memberPower === 1 || entPower === 1
     },
-    calcBudget () {
+    calcBudget() {
       if (this.article.budget) {
         return moneyUnit(this.article.budget)
       } else if (this.article.bidAmount) {
@@ -210,15 +315,20 @@ export default {
         return this.article.budget
       }
     },
-    calcTitle () {
-      const hightLightedTitle = replaceKeyword(this.article.title, this.article.matchKeys, ['<span class="highlight-text">', '</span>'])
+    calcTitle() {
+      const hightLightedTitle = replaceKeyword(
+        this.article.title,
+        this.article.matchKeys,
+        ['<span class="highlight-text">', '</span>']
+      )
       return `${this.index}. ${hightLightedTitle}`
     },
-    showDetailModel () {
+    showDetailModel() {
       const isOldVip = this.isVipBefore
       const isMember = this.bigmember
       const entNiche = this.entniche
-      const subtypeFlag = this.article.type === '拟建' || this.article.type === '采购意向'
+      const subtypeFlag =
+        this.article.type === '拟建' || this.article.type === '采购意向'
       // 信息类型是“采购意向”和“拟建项目”,无采购意向和拟建项目权限的超级订阅用户(老超级订阅用户),即使选择详细列表,也按照精简列表展示
       // 大会员、商机管理、超级订阅老用户有权限
       if (isOldVip || isMember || entNiche) {
@@ -228,7 +338,7 @@ export default {
       }
     }
   },
-  data () {
+  data() {
     return {
       sourceMap: {
         1: '个人订阅',
@@ -239,10 +349,10 @@ export default {
   },
   methods: {
     dateFromNow,
-    formatSource (v) {
+    formatSource(v) {
       return this.sourceMap[v]
     },
-    moneyUnit (val) {
+    moneyUnit(val) {
       if (!val) return
       if (moneyUnit(val).indexOf('元') > -1) {
         return moneyUnit(val)
@@ -250,10 +360,10 @@ export default {
         return moneyUnit(val) + '元'
       }
     },
-    onClick () {
+    onClick() {
       this.$emit('onClick')
     },
-    changeCheck (e) {
+    changeCheck(e) {
       // eslint-disable-next-line camelcase
       const { _id, area, ca_index } = this.article
       const payload = {
@@ -264,22 +374,22 @@ export default {
       }
       this.$emit('changeCheck', payload)
     },
-    collectChange (e) {
+    collectChange(e) {
       this.$emit('onCollect', {
         item: this.article,
         event: e
       })
     },
-    setShow () {
+    setShow() {
       this.$emit('setShow')
     },
-    goPortrayal (type, item, position) {
+    goPortrayal(type, item, position) {
       // position: 锚点定位参数
       const { url } = getPowerUrl(type, { id: item })
       const params = position ? '?position=' + position : ''
       window.open(url + params)
     },
-    formatBuyer (data) {
+    formatBuyer(data) {
       if (!data) return []
       const arr = data.split('、')
       return arr
@@ -289,25 +399,26 @@ export default {
 </script>
 
 <style lang="scss">
-.statusPopover{
-  padding: 0!important;
+.statusPopover {
+  padding: 0 !important;
   border-radius: 8px;
   overflow: hidden;
   .has-gutter th {
-    background: #F5F6F7;
-    color: #1D1D1D;
+    background: #f5f6f7;
+    color: #1d1d1d;
   }
   .el-table.el-table--border {
     border-radius: 4px;
   }
-  .el-table--scrollable-x .el-table__body-wrapper{
+  .el-table--scrollable-x .el-table__body-wrapper {
     overflow-x: hidden;
   }
-  .el-table tr td.pushTime, .el-table tr td.viewTime {
+  .el-table tr td.pushTime,
+  .el-table tr td.viewTime {
     padding: 12px 14px;
   }
 }
-.custom-toast .toast-container{
+.custom-toast .toast-container {
   /* display: none; */
   position: fixed;
   top: 50%;
@@ -322,222 +433,223 @@ export default {
   z-index: 99;
 }
 /* 附件标识样式 */
-.haveFile{
+.haveFile {
   flex-shrink: 0;
   display: inline-block;
-  padding:0 8px;
+  padding: 0 8px;
   // margin: 0 8px 0 12px;
   height: 20px;
   border-radius: 4px;
-  border: 1px solid #2CB7CA;
+  border: 1px solid #2cb7ca;
   font-size: 12px;
   font-weight: 400;
-  color: #2CB7CA;
+  color: #2cb7ca;
   line-height: 18px;
   flex-shrink: 0;
 }
 </style>
 <style lang="scss" scoped>
-  $border-color: #ECECEC;
-  @include diy-icon('time', 20, 20);
-  .article-item {
-    // display: flex;
-    // align-items: center;
-    // justify-content: space-between;
-    padding: 16px;
-    border-bottom: 1px solid $border-color;
+$border-color: #ececec;
+@include diy-icon('time', 20, 20);
+.article-item {
+  // display: flex;
+  // align-items: center;
+  // justify-content: space-between;
+  padding: 16px;
+  border-bottom: 1px solid $border-color;
 
-    &:first-of-type,
-    &:border-top {
-      border-top: 1px solid $border-color;
-    }
-
-    &.style-for-gray {
-      .custom-checkbox {
-        margin-top: 0;
-        flex-shrink: 0;
-      }
-      .icon-collect{
-        display: inline-block;
-        width: 20px;
-        height: 20px;
-        margin-left: 6px;
-        background: transparent url(https://cdn-ali.jianyu360.com/images/collect.png) center no-repeat;
-        background-size: contain;
-        cursor: pointer;
-        vertical-align: sub;
-        ::before{
-          content: ''!important;
-        }
-      }
-      .icon-collect.checked{
-        background: transparent url(https://cdn-ali.jianyu360.com/images/collected.png) center no-repeat;
-        background-size: contain;
-        ::before{
-          content: ''!important;
-        }
-      }
+  &:first-of-type,
+  &:border-top {
+    border-top: 1px solid $border-color;
+  }
 
-      .tag,
-      .orange.tag,
-      .green.tag,
-      .dpink.tag {
-        background: #f5f5fb;
-        border: 1px solid #ececec;
-        border-radius: 4px;
-        font-size: 12px;
-        font-family: Microsoft YaHei, Microsoft YaHei-Regular;
-        font-weight: 400;
-        text-align: center;
-        color: #686868;
-        line-height: 20px;
-        height: 22px;
-        padding: 0 8px;
-        flex-shrink: 0;
-      }
-      .tag-ent{
-        background: #FFF9F0;
-        color: #B1700E;
-        border: 0;
-      }
-      .tag-own{
-        background: rgba(42, 190, 209, 0.08);
-        color: #2ABED1;
-        border: 0;
+  &.style-for-gray {
+    .custom-checkbox {
+      margin-top: 0;
+      flex-shrink: 0;
+    }
+    .icon-collect {
+      display: inline-block;
+      width: 20px;
+      height: 20px;
+      margin-left: 6px;
+      background: transparent
+        url(https://cdn-ali.jianyu360.com/images/collect.png) center no-repeat;
+      background-size: contain;
+      cursor: pointer;
+      vertical-align: sub;
+      ::before {
+        content: '' !important;
       }
-      .tag-user{
-        background-color: rgba(254, 115, 122, 0.16);
-        border-radius: 4px;
-        color: #FF3A20;
-        margin-right: 10px;
+    }
+    .icon-collect.checked {
+      background: transparent
+        url(https://cdn-ali.jianyu360.com/images/collected.png) center no-repeat;
+      background-size: contain;
+      ::before {
+        content: '' !important;
       }
     }
-    &.style-for-table {
 
+    .tag,
+    .orange.tag,
+    .green.tag,
+    .dpink.tag {
+      background: #f5f5fb;
+      border: 1px solid #ececec;
+      border-radius: 4px;
+      font-size: 12px;
+      font-family: Microsoft YaHei, Microsoft YaHei-Regular;
+      font-weight: 400;
+      text-align: center;
+      color: #686868;
+      line-height: 20px;
+      height: 22px;
+      padding: 0 8px;
+      flex-shrink: 0;
     }
-    .flex-center{
-      display: flex;
-      align-items: center;
-    }
-    .a-i-con{
-      width: calc(100% - 32px);
-      flex: 1;
-      display: flex;
-      justify-content: space-between;
-    }
-    .content-item {
-      display: flex;
-      flex-direction: row;
-      align-items: center;
-      // flex: 1;
-      width: calc(100% - 84px);
-      line-height: 24px;
-    }
-    .a-i-left {
-      display: inline-block;
-      margin-right: 60px;
-      cursor: pointer;
-      // max-width: 650px;
-      // @media only screen and (max-width: 1280px) {
-      //   max-width: 440px;
-      // }
+    .tag-ent {
+      background: #fff9f0;
+      color: #b1700e;
+      border: 0;
     }
-    .a-i-right,
-    .tags,
-    .time-container {
-      display: flex;
-      align-items: center;
-      justify-content: space-between;
+    .tag-own {
+      background: rgba(42, 190, 209, 0.08);
+      color: #2abed1;
+      border: 0;
     }
-    .a-i-right{
-      padding: 8px 0 0 30px;
+    .tag-user {
+      background-color: rgba(254, 115, 122, 0.16);
+      border-radius: 4px;
+      color: #ff3a20;
+      margin-right: 10px;
     }
-    .time-container{
-      flex-shrink: 0;
+  }
+  &.style-for-table {
+  }
+  .flex-center {
+    display: flex;
+    align-items: center;
+  }
+  .a-i-con {
+    width: calc(100% - 32px);
+    flex: 1;
+    display: flex;
+    justify-content: space-between;
+  }
+  .content-item {
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+    // flex: 1;
+    width: calc(100% - 84px);
+    line-height: 24px;
+  }
+  .a-i-left {
+    display: inline-block;
+    margin-right: 60px;
+    cursor: pointer;
+    // max-width: 650px;
+    // @media only screen and (max-width: 1280px) {
+    //   max-width: 440px;
+    // }
+  }
+  .a-i-right,
+  .tags,
+  .time-container {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+  }
+  .a-i-right {
+    padding: 8px 0 0 30px;
+  }
+  .time-container {
+    flex-shrink: 0;
+  }
+  .view-status {
+    margin-right: 8px;
+    margin-left: 14px;
+    font-family: 'Microsoft YaHei';
+    font-style: normal;
+    font-weight: 400;
+    font-size: 14px;
+    color: #1d1d1d;
+    cursor: pointer;
+    &:hover {
+      color: #2abed1;
     }
-    .view-status{
+  }
+
+  .tag {
+    display: flex;
+    align-items: center;
+    padding: 1px 6px;
+    margin-right: 14px;
+    color: #fff;
+    font-size: 13px;
+    line-height: 20px;
+    background-color: #2cb7ca;
+    border-radius: 3px;
+    &:not(:last-of-type) {
       margin-right: 8px;
-      margin-left: 14px;
-      font-family: 'Microsoft YaHei';
-      font-style: normal;
-      font-weight: 400;
-      font-size: 14px;
-      color: #1D1D1D;
-      cursor: pointer;
-      &:hover {
-        color: #2ABED1;
-      }
     }
 
-    .tag {
-      display: flex;
-      align-items: center;
-      padding: 1px 6px;
-      margin-right: 14px;
-      color: #fff;
-      font-size: 13px;
-      line-height: 20px;
-      background-color: #2CB7CA;
-      border-radius: 3px;
-      &:not(:last-of-type) {
-        margin-right: 8px;
-      }
-
-      &.orange {
-        background-color: #FFBA00;
-      }
-      &.green {
-        background-color: #25C78C;
-      }
-      &.dpink {
-        background-color: #FF878D;
-      }
+    &.orange {
+      background-color: #ffba00;
     }
-
-    .time-text {
-      margin-left: 6px;
-      font-size: 12px;
-      color: #999;
-      line-height: 18px;
-      flex-shrink: 0;
+    &.green {
+      background-color: #25c78c;
     }
+    &.dpink {
+      background-color: #ff878d;
+    }
+  }
+
+  .time-text {
+    margin-left: 6px;
+    font-size: 12px;
+    color: #999;
+    line-height: 18px;
+    flex-shrink: 0;
   }
+}
 .right-actions {
   display: flex;
   align-items: center;
   cursor: pointer;
 }
-.list-detail{
+.list-detail {
   padding: 0 0 0 32px;
-  .l-d-item{
+  .l-d-item {
     margin-top: 8px;
     font-size: 14px;
     line-height: 22px;
     color: #1d1d1d;
-    &:nth-child(1){
+    &:nth-child(1) {
       margin-top: 16px;
     }
-    span{
+    span {
       margin-right: 32px;
-      .l-d-item-label{
+      .l-d-item-label {
         color: #686868;
       }
-      a{
+      a {
         &:hover,
-        &:focus{
-          color: #2CB7CA;
+        &:focus {
+          color: #2cb7ca;
         }
       }
     }
   }
-  .more-tel{
+  .more-tel {
     margin-left: 8px;
     font-size: 14px;
     line-height: 22px;
-    color: #2ABED1;
+    color: #2abed1;
     cursor: pointer;
   }
-  .pointer{
+  .pointer {
     cursor: pointer;
   }
 }

+ 25 - 16
apps/bigmember_pc/src/components/article-item/ProjectItem.vue

@@ -15,7 +15,8 @@
             v-for="(tag, index) in tagList"
             v-show="tag.value"
             :key="index"
-            class="tag">
+            class="tag"
+          >
             {{ tag.value }}
           </span>
         </div>
@@ -31,7 +32,9 @@
               <el-link
                 :underline="false"
                 type="primary"
-                @click.prevent.stop="goPortrayal(buyer, 'buyer')">{{ buyer }}</el-link>
+                @click.prevent.stop="goPortrayal(buyer, 'buyer')"
+                >{{ buyer }}</el-link
+              >
             </template>
             <template v-else>--</template>
           </span>
@@ -52,7 +55,8 @@
                 type="primary"
                 v-for="(w, i) in winners"
                 :key="i"
-                @click.prevent.stop="goPortrayal(w.id, 'winner')">
+                @click.prevent.stop="goPortrayal(w.id, 'winner')"
+              >
                 {{ w.name }}
               </el-link>
             </template>
@@ -60,7 +64,9 @@
           </span>
           <span class="p-bd-d-item">
             <i class="p-bd-d-item-label">中标金额:</i>
-            <em>{{ bidAmount ? formatMoney(bidAmount, { level: 1 }) : '--' }}</em>
+            <em>{{
+              bidAmount ? formatMoney(bidAmount, { level: 1 }) : '--'
+            }}</em>
           </span>
         </p>
         <p class="p-bd-d-item-list" v-if="showReviewers">
@@ -94,7 +100,7 @@ export default {
     // 匹配高亮的关键词
     matchKeys: {
       type: Array,
-      default () {
+      default() {
         return [
           // 'xxx'
         ]
@@ -102,7 +108,7 @@ export default {
     },
     tagList: {
       type: Array,
-      default () {
+      default() {
         return [
           // {
           //   value: '北京'
@@ -132,7 +138,7 @@ export default {
     // 评标专家
     reviewers: {
       type: Array,
-      default () {
+      default() {
         return [
           // {
           //   name: '张xx',
@@ -145,7 +151,7 @@ export default {
     },
     winners: {
       type: Array,
-      default () {
+      default() {
         return [
           // {
           //   name: '中国电子科技集团公司电子科学研究院',
@@ -165,25 +171,28 @@ export default {
     }
   },
   computed: {
-    reviewersText () {
+    reviewersText() {
       if (Array.isArray(this.reviewers) && this.reviewers.length) {
-        return this.reviewers.map(r => r.name).join(',')
+        return this.reviewers.map((r) => r.name).join(',')
       } else {
         return '--'
       }
     },
-    calcTitle () {
-      const hightLightedTitle = replaceKeyword(this.title, this.matchKeys, ['<span class="highlight-text">', '</span>'])
+    calcTitle() {
+      const hightLightedTitle = replaceKeyword(this.title, this.matchKeys, [
+        '<span class="highlight-text">',
+        '</span>'
+      ])
       return `${hightLightedTitle}`
     }
   },
   methods: {
     dateFromNow,
     formatMoney,
-    clickTitle () {
+    clickTitle() {
       this.$emit('clickTitle')
     },
-    goPortrayal (id, type) {
+    goPortrayal(id, type) {
       let goLink = ''
       if (type === 'winner') {
         goLink = `/ent_portrait/${id}`
@@ -206,7 +215,7 @@ export default {
 }
 .project-item {
   padding: 16px 20px;
-  color: #1D1D1D;
+  color: #1d1d1d;
   &-hd {
     display: flex;
     align-items: center;
@@ -286,7 +295,7 @@ export default {
     position: absolute;
     right: 0;
     top: 50%;
-    transform: translate(0,-50%);
+    transform: translate(0, -50%);
   }
 }
 </style>

+ 20 - 17
apps/bigmember_pc/src/components/chart/BarLineChart.vue

@@ -13,7 +13,7 @@
     :extend="defaultOptions"
     :events="{ click: clickHandler.bind(this) }"
     @ready="ready"
-    >
+  >
   </ve-histogram>
 </template>
 <script>
@@ -33,7 +33,7 @@ export default {
   components: {
     VeHistogram
   },
-  data () {
+  data() {
     return {
       defaultOptions: {
         grid: {
@@ -53,7 +53,7 @@ export default {
             color: '#9B9CA3'
           }
         },
-        yAxis (item) {
+        yAxis(item) {
           item[0].splitLine = {
             lineStyle: {
               type: 'dashed',
@@ -95,7 +95,8 @@ export default {
             fontSize: 12
           },
           padding: [7, 12],
-          extraCssText: 'box-shadow: 0px 4px 16px rgba(8, 31, 38, 0.08);transform: translate3d(0,0,0)'
+          extraCssText:
+            'box-shadow: 0px 4px 16px rgba(8, 31, 38, 0.08);transform: translate3d(0,0,0)'
         },
         legend: {
           orient: 'horizontal',
@@ -133,26 +134,28 @@ export default {
     }
   },
   methods: {
-    extend (chart) {
+    extend(chart) {
       chart.setOption({
-        series: [{
-          type: 'bar',
-          barMaxWidth: 20
-        }, {
-          type: 'line',
-          smooth: false,
-          symbol: 'none'
-        }]
+        series: [
+          {
+            type: 'bar',
+            barMaxWidth: 20
+          },
+          {
+            type: 'line',
+            smooth: false,
+            symbol: 'none'
+          }
+        ]
       })
     },
-    ready (e) {
+    ready(e) {
       this.$emit('ready', e)
     },
-    clickHandler (e) {
+    clickHandler(e) {
       this.$emit('clickChart', e)
     }
   }
 }
 </script>
-<style lang="scss" scoped>
-</style>
+<style lang="scss" scoped></style>

+ 52 - 32
apps/bigmember_pc/src/components/chart/BlueProgressChart.vue

@@ -2,23 +2,36 @@
   <div class="progess-chart">
     <div class="client-list">
       <div class="c-thead">
-          <strong class="c-name"></strong>
-          <span class="c-count" v-if="from == 'unit'">项目数量</span>
-          <span class="c-time" v-if="from == 'unit'">最近合作日期</span>
-          <span class="c-time text-right" v-if="from == 'result'">参评项目数量(个)</span>
-        </div>
-        <div class="progress-bar-container">
-          <div class="progress-bar-item" v-for="(item,index) in datas" :key="index">
-            <div class="item-label">
-              <span class="item-name">{{item.name}}</span>
-              <span class="item-count" :class="from == 'result'? 'text-right' : ''">{{item.count}}个</span>
-              <span class="item-time" v-if="from == 'unit'">{{item.time}}</span>
-            </div>
-            <div class="item-progress">
-              <span class="item-progress-count active-progress" :style="{width: item.parent}"></span>
-            </div>
+        <strong class="c-name"></strong>
+        <span class="c-count" v-if="from == 'unit'">项目数量</span>
+        <span class="c-time" v-if="from == 'unit'">最近合作日期</span>
+        <span class="c-time text-right" v-if="from == 'result'"
+          >参评项目数量(个)</span
+        >
+      </div>
+      <div class="progress-bar-container">
+        <div
+          class="progress-bar-item"
+          v-for="(item, index) in datas"
+          :key="index"
+        >
+          <div class="item-label">
+            <span class="item-name">{{ item.name }}</span>
+            <span
+              class="item-count"
+              :class="from == 'result' ? 'text-right' : ''"
+              >{{ item.count }}个</span
+            >
+            <span class="item-time" v-if="from == 'unit'">{{ item.time }}</span>
+          </div>
+          <div class="item-progress">
+            <span
+              class="item-progress-count active-progress"
+              :style="{ width: item.parent }"
+            ></span>
           </div>
         </div>
+      </div>
     </div>
   </div>
 </template>
@@ -30,47 +43,54 @@ export default {
     // 传入的数据
     datas: Array
   },
-  data () {
+  data() {
     return {}
   },
   computed: {},
   watch: {},
-  mounted () {},
+  mounted() {},
   methods: {}
 }
 </script>
 <style lang="scss" scoped>
-.client-list{
+.client-list {
   background-color: #fff;
-  .c-thead{
+  .c-thead {
     display: flex;
     justify-content: space-between;
     align-items: center;
     line-height: 22px;
   }
-  .c-name,.item-name{
+  .c-name,
+  .item-name {
     font-size: 14px;
-    color: #1D1D1D;
+    color: #1d1d1d;
     flex: 7;
   }
-  .c-count,.item-count,.c-time,.item-time{
+  .c-count,
+  .item-count,
+  .c-time,
+  .item-time {
     flex: 1;
     min-width: 100px;
     font-size: 12px;
     text-align: center;
     white-space: nowrap;
   }
-  .c-rate,.item-rate{
+  .c-rate,
+  .item-rate {
     font-size: 12px;
     text-align: center;
   }
-  .c-name{
+  .c-name {
     font-weight: bold;
     font-size: 16px;
     line-height: 40px;
-    color: #1D1D1D;
+    color: #1d1d1d;
   }
-  .c-count,.c-rate,.c-time{
+  .c-count,
+  .c-rate,
+  .c-time {
     color: #686868;
     white-space: nowrap;
   }
@@ -101,16 +121,16 @@ export default {
     position: relative;
     height: 20px;
     line-height: 20px;
-    background-color: #EDEFF2;
+    background-color: #edeff2;
     border-radius: 0 10px 10px 0;
     overflow: hidden;
   }
-  .item-money{
+  .item-money {
     position: absolute;
     left: 16px;
     top: 50%;
     transform: translateY(-50%);
-    color: #8F5828;
+    color: #8f5828;
     font-size: 14px;
     z-index: 10;
   }
@@ -122,10 +142,10 @@ export default {
     border-radius: 0 10px 10px 0;
     z-index: 9;
   }
-  .active-progress{
-    background: linear-gradient(270deg, #2ABED1 0.81%, #8DE0EB 100%);
+  .active-progress {
+    background: linear-gradient(270deg, #2abed1 0.81%, #8de0eb 100%);
   }
-  .text-right{
+  .text-right {
     text-align: right;
   }
 }

+ 64 - 52
apps/bigmember_pc/src/components/chart/ColumnBarChart.vue

@@ -8,7 +8,7 @@
     :after-config="options.config"
     :extend="defaultOptions"
     @ready="options.onReady"
-    >
+  >
   </ve-histogram>
 </template>
 <script>
@@ -28,7 +28,7 @@ export default {
   components: {
     VeHistogram
   },
-  data () {
+  data() {
     return {
       barChartMarkPoint: {
         symbol: 'circle',
@@ -119,60 +119,62 @@ export default {
             type: 'group',
             bottom: 10,
             left: 32,
-            children: [{
-              type: 'circle',
-              z: 100,
-              top: 'middle',
-              style: {
-                fill: '#FB483D'
+            children: [
+              {
+                type: 'circle',
+                z: 100,
+                top: 'middle',
+                style: {
+                  fill: '#FB483D'
+                },
+                shape: {
+                  cx: 0,
+                  cy: 0,
+                  r: 4
+                }
               },
-              shape: {
-                cx: 0,
-                cy: 0,
-                r: 4
+              {
+                type: 'text',
+                z: 100,
+                top: 'middle',
+                style: {
+                  fill: '#333',
+                  text: '当前项目标书编制周期',
+                  font: '12px Microsoft YaHei',
+                  x: 8
+                }
               }
-            },
-            {
-              type: 'text',
-              z: 100,
-              top: 'middle',
-              style: {
-                fill: '#333',
-                text: '当前项目标书编制周期',
-                font: '12px Microsoft YaHei',
-                x: 8
-              }
-            }
             ]
           },
           {
             type: 'group',
             bottom: 10,
             right: 20,
-            children: [{
-              type: 'circle',
-              z: 100,
-              top: 'middle',
-              style: {
-                fill: '#3399FF'
+            children: [
+              {
+                type: 'circle',
+                z: 100,
+                top: 'middle',
+                style: {
+                  fill: '#3399FF'
+                },
+                shape: {
+                  cx: 0,
+                  cy: 0,
+                  r: 4
+                }
               },
-              shape: {
-                cx: 0,
-                cy: 0,
-                r: 4
+              {
+                type: 'text',
+                z: 100,
+                top: 'middle',
+                style: {
+                  fill: '#333',
+                  text: '同类项目标书编制周期',
+                  font: '12px Microsoft YaHei',
+                  x: 8
+                }
               }
-            },
-            {
-              type: 'text',
-              z: 100,
-              top: 'middle',
-              style: {
-                fill: '#333',
-                text: '同类项目标书编制周期',
-                font: '12px Microsoft YaHei',
-                x: 8
-              }
-            }
             ]
           }
         ],
@@ -193,9 +195,20 @@ export default {
           formatter: (params) => {
             let tip = ''
             for (var i = 0; i < params.length; i++) {
-              params[i].value === undefined ? params[i].value = 0 : params[i].value // eslint-disable-line
+              params[i].value === undefined
+                ? (params[i].value = 0)
+                : params[i].value // eslint-disable-line
               if (params[i].seriesName === '项目数量') {
-                tip = tip + '编制周期:' + params[i].name + '<br/>' + params[i].seriesName + ':' + params[i].value + '个' + '<br/>'
+                tip =
+                  tip +
+                  '编制周期:' +
+                  params[i].name +
+                  '<br/>' +
+                  params[i].seriesName +
+                  ':' +
+                  params[i].value +
+                  '个' +
+                  '<br/>'
               }
             }
             return tip
@@ -206,10 +219,9 @@ export default {
   },
   computed: {},
   watch: {},
-  mounted () {},
+  mounted() {},
   methods: {},
-  beforeDestroy () {}
+  beforeDestroy() {}
 }
 </script>
-<style lang="scss" scoped>
-</style>
+<style lang="scss" scoped></style>

+ 98 - 61
apps/bigmember_pc/src/components/chart/DoubleBarChart.vue

@@ -1,44 +1,78 @@
 <template>
   <div class="double-bar">
     <div class="bar-content">
-      <div class="rate-item"
+      <div
+        class="rate-item"
         v-for="(item, index) in datas"
         :key="item.type"
-        @mouseover="tooltipShow(item,index)"
+        @mouseover="tooltipShow(item, index)"
         @mouseout="tooltipHide"
       >
-        <div class="item-label">{{item.type}}</div>
+        <div class="item-label">{{ item.type }}</div>
         <div class="item-chart">
           <div class="left-chart">
             <div class="item-progress" v-if="item.lPercent > 30">
-              <span class="blue-progress-bg blue-padding" :style="{width: item.lPercent + '%'}">{{item.num}}({{item.numShare  + '%'}})</span>
+              <span
+                class="blue-progress-bg blue-padding"
+                :style="{ width: item.lPercent + '%' }"
+                >{{ item.num }}({{ item.numShare + '%' }})</span
+              >
             </div>
             <div class="item-progress" v-else>
-              <span class="blue-progress-text">{{item.num}}({{item.numShare  + '%'}})</span>
-              <span class="blue-progress-bg" :style="{width: item.lPercent + '%'}"></span>
+              <span class="blue-progress-text"
+                >{{ item.num }}({{ item.numShare + '%' }})</span
+              >
+              <span
+                class="blue-progress-bg"
+                :style="{ width: item.lPercent + '%' }"
+              ></span>
             </div>
           </div>
           <div class="right-chart">
             <div class="item-progress" v-if="item.rPercent > 30">
-              <span class="yellow-progress-bg yellow-padding" :style="{width: item.rPercent + '%'}">{{item.money}}({{item.moneyShare + '%'}})</span>
+              <span
+                class="yellow-progress-bg yellow-padding"
+                :style="{ width: item.rPercent + '%' }"
+                >{{ item.money }}({{ item.moneyShare + '%' }})</span
+              >
             </div>
             <div class="item-progress" v-else>
-              <span class="yellow-progress-bg" :style="{width: item.rPercent + '%'}"></span>
-              <span class="yellow-progress-text">{{item.money}}({{item.moneyShare + '%'}})</span>
+              <span
+                class="yellow-progress-bg"
+                :style="{ width: item.rPercent + '%' }"
+              ></span>
+              <span class="yellow-progress-text"
+                >{{ item.money }}({{ item.moneyShare + '%' }})</span
+              >
             </div>
           </div>
         </div>
       </div>
-      <div class="custom-tooltip" v-show="doubleBar.showTooltip" :style="{left: doubleBar.info.positionLeft, top:doubleBar.info.positionTop}">
-          <div class="tooltip-item">
-            <span class="tooltip-circle blue-circle"></span>
-            <span>数量(个)及占比:{{doubleBar.info.num}}({{doubleBar.info.numShare + '%'}})</span>
-          </div>
-          <div class="tooltip-item">
-            <span class="tooltip-circle yellow-circle"></span>
-            <span>金额(万元)及占比:{{doubleBar.info.money}}({{doubleBar.info.moneyShare + '%'}})</span>
-          </div>
-          <div class="tooltip-name">- {{doubleBar.info.type}} -</div>
+      <div
+        class="custom-tooltip"
+        v-show="doubleBar.showTooltip"
+        :style="{
+          left: doubleBar.info.positionLeft,
+          top: doubleBar.info.positionTop
+        }"
+      >
+        <div class="tooltip-item">
+          <span class="tooltip-circle blue-circle"></span>
+          <span
+            >数量(个)及占比:{{ doubleBar.info.num }}({{
+              doubleBar.info.numShare + '%'
+            }})</span
+          >
+        </div>
+        <div class="tooltip-item">
+          <span class="tooltip-circle yellow-circle"></span>
+          <span
+            >金额(万元)及占比:{{ doubleBar.info.money }}({{
+              doubleBar.info.moneyShare + '%'
+            }})</span
+          >
+        </div>
+        <div class="tooltip-name">- {{ doubleBar.info.type }} -</div>
       </div>
       <div class="custom-legend">
         <div class="legend-item">
@@ -63,7 +97,7 @@ export default {
   components: {
     [Popover.name]: Popover
   },
-  data () {
+  data() {
     return {
       doubleBar: {
         info: {},
@@ -74,21 +108,21 @@ export default {
   computed: {},
   watch: {
     datas: {
-      handler (newVal, oldVal) {
+      handler(newVal, oldVal) {
         this.datas = newVal
       },
       deep: true
     }
   },
-  mounted () {},
+  mounted() {},
   methods: {
-    tooltipShow (item, index) {
+    tooltipShow(item, index) {
       this.doubleBar.showTooltip = true
       item.positionLeft = Math.random() * 500 + 'px'
       item.positionTop = (index + 1) * 20 + 'px'
       this.doubleBar.info = item
     },
-    tooltipHide () {
+    tooltipHide() {
       this.doubleBar.showTooltip = false
       this.doubleBar.info = {}
     }
@@ -96,28 +130,28 @@ export default {
 }
 </script>
 <style lang="scss" scoped>
-.double-bar{
-  .bar-content{
+.double-bar {
+  .bar-content {
     position: relative;
     background: #fff;
   }
-  .rate-item{
+  .rate-item {
     display: flex;
     justify-content: space-between;
     align-items: center;
     margin-top: 12px;
   }
-  .item-label{
+  .item-label {
     width: 80px;
     height: 20px;
     line-height: 20px;
     white-space: nowrap;
     text-align: right;
     font-size: 12px;
-    color: #5F5E64;
+    color: #5f5e64;
     margin-right: 8px;
   }
-  .item-chart{
+  .item-chart {
     position: relative;
     flex: 1;
     height: 20px;
@@ -125,7 +159,7 @@ export default {
     align-items: center;
     justify-content: space-between;
   }
-  .item-progress{
+  .item-progress {
     position: relative;
     flex: 1;
     width: 100%;
@@ -137,103 +171,106 @@ export default {
     justify-content: flex-end;
     cursor: pointer;
   }
-  .left-chart,.right-chart{
+  .left-chart,
+  .right-chart {
     flex: 1;
     height: 100%;
     overflow: hidden;
   }
-  .left-chart{
+  .left-chart {
     margin-right: 2px;
   }
-  .right-chart{
-    & .item-progress{
+  .right-chart {
+    & .item-progress {
       justify-content: flex-start;
     }
   }
-  .blue-progress-bg,.yellow-progress-bg{
+  .blue-progress-bg,
+  .yellow-progress-bg {
     color: #fff;
     overflow: hidden;
     white-space: nowrap;
     text-overflow: ellipsis;
     box-sizing: border-box;
   }
-  .blue-progress-bg{
-    background: #05A6F3;
+  .blue-progress-bg {
+    background: #05a6f3;
   }
-  .yellow-progress-bg{
+  .yellow-progress-bg {
     text-align: right;
-    background: #FF9F40;
+    background: #ff9f40;
   }
-  .blue-padding{
+  .blue-padding {
     padding-left: 8px;
   }
-  .yellow-padding{
+  .yellow-padding {
     padding-right: 8px;
   }
-  .blue-progress-text{
+  .blue-progress-text {
     padding-right: 8px;
-    color: #05A6F3;
+    color: #05a6f3;
   }
-  .yellow-progress-text{
+  .yellow-progress-text {
     padding-left: 8px;
-    color: #FF9F40;
+    color: #ff9f40;
   }
-  .custom-tooltip{
+  .custom-tooltip {
     position: absolute;
     display: block;
     white-space: nowrap;
     z-index: 9999999;
-    transition: left 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s, top 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s;
+    transition: left 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s,
+      top 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s;
     background-color: rgb(255, 255, 255);
-    border: 2px solid #F5F6F7;
+    border: 2px solid #f5f6f7;
     box-sizing: border-box;
     border-radius: 4px;
     color: rgb(23, 24, 38);
-    font: 12px / 18px "Microsoft YaHei";
+    font: 12px / 18px 'Microsoft YaHei';
     padding: 7px 12px;
     box-shadow: 0px 4px 16px rgba(8, 31, 38, 0.08);
     pointer-events: none;
   }
-  .tooltip-item{
+  .tooltip-item {
     display: flex;
     align-items: center;
     font-size: 12px;
     color: #171826;
     line-height: 20px;
   }
-  .tooltip-circle{
+  .tooltip-circle {
     display: inline-block;
     width: 8px;
     height: 8px;
     border-radius: 8px;
     margin-right: 4px;
   }
-  .custom-legend{
+  .custom-legend {
     display: flex;
     align-items: center;
     justify-content: center;
     margin-top: 16px;
     padding: 0 8px 0 80px;
   }
-  .tooltip-name{
+  .tooltip-name {
     text-align: center;
-    color: #9B9CA3;
+    color: #9b9ca3;
     font-size: 12px;
     margin-top: 4px;
   }
-  .legend-item{
+  .legend-item {
     display: flex;
     align-items: center;
     margin: 0 40px;
     font-size: 12px;
-    color: #5F5E64;
+    color: #5f5e64;
     line-height: 20px;
   }
-  .blue-circle{
-    background-color: #05A6F3;
+  .blue-circle {
+    background-color: #05a6f3;
   }
-  .yellow-circle{
-    background-color: #FF9F40;
+  .yellow-circle {
+    background-color: #ff9f40;
   }
 }
 </style>

+ 58 - 34
apps/bigmember_pc/src/components/chart/DuoToneChart.vue

@@ -1,18 +1,35 @@
 <template>
   <div class="progess-chart">
     <div class="progress-bar-container">
-      <div class="progress-bar-item pointer" :class="{ hover: itemClickable }" v-for="(item,index) in list" :key="index" @click.stop="clickItem(item)">
+      <div
+        class="progress-bar-item pointer"
+        :class="{ hover: itemClickable }"
+        v-for="(item, index) in list"
+        :key="index"
+        @click.stop="clickItem(item)"
+      >
         <div class="item-label">
-          <span class="item-name" :class="{ 'link-text': titleClickable }" @click.stop="clickTitle(item)">{{item.name}}</span>
-          <span class="item-count text-right">{{item.value}}</span>
+          <span
+            class="item-name"
+            :class="{ 'link-text': titleClickable }"
+            @click.stop="clickTitle(item)"
+            >{{ item.name }}</span
+          >
+          <span class="item-count text-right">{{ item.value }}</span>
         </div>
         <div class="item-progress">
-          <span class="item-progress-count" :class="index > 2 || single ? 'blue-progress' : 'yellow-progress'" :style="{width: item.parent}"></span>
+          <span
+            class="item-progress-count"
+            :class="index > 2 || single ? 'blue-progress' : 'yellow-progress'"
+            :style="{ width: item.parent }"
+          ></span>
         </div>
       </div>
     </div>
     <div class="progress-chart-footer">
-      <button class="see-more-button" v-if="showSeeMoreButton" @click="seeMore">查看更多</button>
+      <button class="see-more-button" v-if="showSeeMoreButton" @click="seeMore">
+        查看更多
+      </button>
     </div>
   </div>
 </template>
@@ -22,7 +39,7 @@ export default {
   props: {
     datas: {
       type: Array,
-      default () {
+      default() {
         return []
       }
     },
@@ -44,19 +61,19 @@ export default {
       default: false
     }
   },
-  data () {
+  data() {
     return {
       showAllControl: false
     }
   },
   computed: {
-    showAll () {
+    showAll() {
       return !this.defaultOnlyShowSome || this.showAllControl
     },
-    showSeeMoreButton () {
+    showSeeMoreButton() {
       return this.datas.length > 5 && !this.showAll
     },
-    list () {
+    list() {
       if (this.showAll) {
         return this.datas
       } else {
@@ -65,55 +82,58 @@ export default {
     }
   },
   methods: {
-    seeMore () {
+    seeMore() {
       this.showAllControl = true
     },
-    clickItem (item) {
+    clickItem(item) {
       this.$emit('clickItem', item)
     },
-    clickTitle (item) {
+    clickTitle(item) {
       this.$emit('clickTitle', item)
     }
   }
 }
 </script>
 <style lang="scss" scoped>
-.progess-chart{
+.progess-chart {
   background-color: #fff;
-  .c-thead{
+  .c-thead {
     display: flex;
     justify-content: space-between;
     align-items: center;
     line-height: 22px;
   }
   .c-name,
-  .item-name{
+  .item-name {
     font-size: 14px;
-    color: #1D1D1D;
+    color: #1d1d1d;
     max-width: 70%;
     // flex: 7;
   }
   .c-count,
   .item-count,
   .c-time,
-  .item-time{
+  .item-time {
     // flex: 1;
     min-width: 100px;
     font-size: 12px;
     text-align: center;
     white-space: nowrap;
   }
-  .c-rate,.item-rate{
+  .c-rate,
+  .item-rate {
     font-size: 12px;
     text-align: center;
   }
-  .c-name{
+  .c-name {
     font-weight: bold;
     font-size: 16px;
     line-height: 40px;
-    color: #1D1D1D;
+    color: #1d1d1d;
   }
-  .c-count,.c-rate,.c-time{
+  .c-count,
+  .c-rate,
+  .c-time {
     color: #686868;
     white-space: nowrap;
   }
@@ -132,7 +152,11 @@ export default {
     }
     &.hover {
       &:hover {
-        background: linear-gradient(180deg, rgba(44, 183, 202, 0.1) 0%, rgba(255, 255, 255, 0.1) 100%);
+        background: linear-gradient(
+          180deg,
+          rgba(44, 183, 202, 0.1) 0%,
+          rgba(255, 255, 255, 0.1) 100%
+        );
       }
     }
   }
@@ -161,16 +185,16 @@ export default {
     position: relative;
     height: 20px;
     line-height: 20px;
-    background-color: #EDEFF2;
+    background-color: #edeff2;
     border-radius: 0 10px 10px 0;
     overflow: hidden;
   }
-  .item-money{
+  .item-money {
     position: absolute;
     left: 16px;
     top: 50%;
     transform: translateY(-50%);
-    color: #8F5828;
+    color: #8f5828;
     font-size: 14px;
     z-index: 10;
   }
@@ -182,17 +206,17 @@ export default {
     border-radius: 0 10px 10px 0;
     z-index: 9;
   }
-  .active-progress{
-    background: linear-gradient(270deg, #2ABED1 0.81%, #8DE0EB 100%);
+  .active-progress {
+    background: linear-gradient(270deg, #2abed1 0.81%, #8de0eb 100%);
   }
-  .text-right{
+  .text-right {
     text-align: right;
   }
-  .yellow-progress{
-    background: linear-gradient(to right,#FAE7CA, #F1D090);
+  .yellow-progress {
+    background: linear-gradient(to right, #fae7ca, #f1d090);
   }
-  .blue-progress{
-    background: linear-gradient(to right,#8DE0EB, #2ABED1);
+  .blue-progress {
+    background: linear-gradient(to right, #8de0eb, #2abed1);
   }
 }
 .progress-chart-footer {
@@ -203,6 +227,6 @@ export default {
   font-size: 14px;
   line-height: 22px;
   background-color: #fff;
-  color: #2ABED1;
+  color: #2abed1;
 }
 </style>

+ 217 - 150
apps/bigmember_pc/src/components/chart/HotChart.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="hot-chart" :style="{'height': heatHeight}"></div>
+  <div class="hot-chart" :style="{ height: heatHeight }"></div>
 </template>
 <script>
 import { bSort } from '@/utils/'
@@ -7,7 +7,7 @@ export default {
   name: 'hot-chart',
   props: {
     datas: {
-      type: Array,
+      type: [Array, Object],
       default: () => ({})
     },
     cycle: {
@@ -26,7 +26,7 @@ export default {
       default: false
     }
   },
-  data () {
+  data() {
     return {
       myChart: null,
       minusRows: null,
@@ -70,7 +70,18 @@ export default {
         yAxis: [
           {
             type: 'category',
-            data: ['0', '1万', '10万', '50万', '100万', '500万', '1000万', '5000万', '1亿', '10亿以上'].reverse(),
+            data: [
+              '0',
+              '1万',
+              '10万',
+              '50万',
+              '100万',
+              '500万',
+              '1000万',
+              '5000万',
+              '1亿',
+              '10亿以上'
+            ].reverse(),
             splitArea: {
               show: false
             },
@@ -90,9 +101,21 @@ export default {
               fontSize: 12,
               margin: 4
             }
-          }, {
+          },
+          {
             type: 'category',
-            data: ['1万', '10万', '50万', '100万', '500万', '1000万', '5000万', '1亿', '10亿', ''].reverse(),
+            data: [
+              '1万',
+              '10万',
+              '50万',
+              '100万',
+              '500万',
+              '1000万',
+              '5000万',
+              '1亿',
+              '10亿',
+              ''
+            ].reverse(),
             splitArea: {
               show: false
             },
@@ -118,17 +141,19 @@ export default {
           {
             type: 'group',
             bottom: 40,
-            children: [{
-              type: 'text',
-              z: 100,
-              left: 50,
-              top: 'middle',
-              style: {
-                fill: '#333',
-                text: '同类项目数量(个)',
-                font: '12px Microsoft YaHei'
+            children: [
+              {
+                type: 'text',
+                z: 100,
+                left: 50,
+                top: 'middle',
+                style: {
+                  fill: '#333',
+                  text: '同类项目数量(个)',
+                  font: '12px Microsoft YaHei'
+                }
               }
-            }]
+            ]
           },
           {
             type: 'rect',
@@ -156,139 +181,148 @@ export default {
             width: 150,
             bottom: 0,
             left: 50,
-            children: [{
-              type: 'text',
-              z: 100,
-              left: 'left',
-              top: 'middle',
-              style: {
-                fill: '#333',
-                font: '12px Microsoft YaHei'
-              }
-            },
-            {
-              type: 'text',
-              z: 100,
-              left: 'right',
-              top: 'middle',
-              style: {
-                fill: '#333',
-                text: '0',
-                font: '12px Microsoft YaHei'
+            children: [
+              {
+                type: 'text',
+                z: 100,
+                left: 'left',
+                top: 'middle',
+                style: {
+                  fill: '#333',
+                  font: '12px Microsoft YaHei'
+                }
+              },
+              {
+                type: 'text',
+                z: 100,
+                left: 'right',
+                top: 'middle',
+                style: {
+                  fill: '#333',
+                  text: '0',
+                  font: '12px Microsoft YaHei'
+                }
               }
-            }]
+            ]
           },
           {
             type: 'group',
             bottom: 20,
             right: 50,
-            children: [{
-              type: 'circle',
-              z: 100,
-              top: 'middle',
-              style: {
-                fill: '#2ABED1'
+            children: [
+              {
+                type: 'circle',
+                z: 100,
+                top: 'middle',
+                style: {
+                  fill: '#2ABED1'
+                },
+                shape: {
+                  cx: 0,
+                  cy: 0,
+                  r: 4
+                }
               },
-              shape: {
-                cx: 0,
-                cy: 0,
-                r: 4
+              {
+                type: 'text',
+                z: 100,
+                top: 'middle',
+                style: {
+                  fill: '#333',
+                  text: '当前项目预算所在区间',
+                  font: '12px Microsoft YaHei',
+                  x: 12
+                }
               }
-            },
-            {
-              type: 'text',
-              z: 100,
-              top: 'middle',
-              style: {
-                fill: '#333',
-                text: '当前项目预算所在区间',
-                font: '12px Microsoft YaHei',
-                x: 12
-              }
-            }]
+            ]
           }
         ],
-        visualMap: [{
-          show: false,
-          type: 'piecewise',
-          splitNumber: 5,
-          showLabel: false,
-          itemWidth: 16,
-          itemHeight: 12,
-          itemGap: 0,
-          inverse: true,
-          min: 0,
-          dimension: 3,
-          seriesIndex: [0],
-          orient: 'horizontal',
-          left: '5%',
-          bottom: '5%',
-          inRange: {
-            color: ['#FFE7CF', '#FFCF9F', '#FFB366', '#F48A5D', '#F06326']
-          },
-          outOfRange: {
-            color: ['#FFF4EB']
-          }
-        }],
-        series: [{
-          name: '同类项目数量',
-          type: 'heatmap',
-          label: {
-            show: false
-          },
-          itemStyle: {
-            normal: {
-              color: '#fff',
-              borderWidth: 1,
-              borderColor: '#fff'
+        visualMap: [
+          {
+            show: false,
+            type: 'piecewise',
+            splitNumber: 5,
+            showLabel: false,
+            itemWidth: 16,
+            itemHeight: 12,
+            itemGap: 0,
+            inverse: true,
+            min: 0,
+            dimension: 3,
+            seriesIndex: [0],
+            orient: 'horizontal',
+            left: '5%',
+            bottom: '5%',
+            inRange: {
+              color: ['#FFE7CF', '#FFCF9F', '#FFB366', '#F48A5D', '#F06326']
             },
-            emphasis: {
-              borderWidth: 1,
-              borderColor: '#f75441'
+            outOfRange: {
+              color: ['#FFF4EB']
             }
-          },
-          zlevel: 2,
-          tooltip: {
-            confine: true,
-            formatter: this.options.tooltip.formatter
           }
-        }, {
-          name: '当前项目预算所在区间',
-          type: 'effectScatter',
-          showEffectOn: 'render',
-          rippleEffect: {
-            brushType: 'stroke',
-            color: '#2CB7CA'
-          },
-          emphasis: {
+        ],
+        series: [
+          {
+            name: '同类项目数量',
+            type: 'heatmap',
+            label: {
+              show: false
+            },
             itemStyle: {
-              color: '#2ABED1'
+              normal: {
+                color: '#fff',
+                borderWidth: 1,
+                borderColor: '#fff'
+              },
+              emphasis: {
+                borderWidth: 1,
+                borderColor: '#f75441'
+              }
+            },
+            zlevel: 2,
+            tooltip: {
+              confine: true,
+              formatter: this.options.tooltip.formatter
             }
           },
-          effectType: 'ripple',
-          coordinateSystem: 'cartesian2d',
-          hoverAnimation: true,
-          itemStyle: {
-            color: '#2ABED1',
-            shadowBlur: 8,
-            shadowColor: '#2ABED1'
-          },
-          zlevel: 3,
-          symbol: 'circle',
-          symbolSize: 8,
-          data: [],
-          tooltip: {
-            confine: true,
-            formatter: (params) => {
-              return params
+          {
+            name: '当前项目预算所在区间',
+            type: 'effectScatter',
+            showEffectOn: 'render',
+            rippleEffect: {
+              brushType: 'stroke',
+              color: '#2CB7CA'
+            },
+            emphasis: {
+              itemStyle: {
+                color: '#2ABED1'
+              }
+            },
+            effectType: 'ripple',
+            coordinateSystem: 'cartesian2d',
+            hoverAnimation: true,
+            itemStyle: {
+              color: '#2ABED1',
+              shadowBlur: 8,
+              shadowColor: '#2ABED1'
+            },
+            zlevel: 3,
+            symbol: 'circle',
+            symbolSize: 8,
+            data: [],
+            tooltip: {
+              confine: true,
+              formatter: (params) => {
+                return params
+              }
             }
           }
-        }]
+        ]
       }
     }
   },
   computed: {
-    heatHeight () {
+    heatHeight() {
       if (!this.minusRows) return
       return 500 - 48 * this.minusRows + 'px'
     }
@@ -301,23 +335,23 @@ export default {
     //   },
     //   deep: true
     // },
-    cycle () {
+    cycle() {
       this.updateChartView()
     },
     minusRows: {
-      handler (newVal, oldVal) {
+      handler(newVal, oldVal) {
         this.minusRows = newVal
         this.myChart.resize()
       },
       deep: true
     }
   },
-  created () {},
-  mounted () {
+  created() {},
+  mounted() {
     this.updateChartView()
   },
   methods: {
-    updateChartView () {
+    updateChartView() {
       this.myChart = this.$echarts.init(this.$el)
       if (!this.myChart) return
       this.formatHotOptions()
@@ -326,7 +360,7 @@ export default {
         // this.myChart.resize()
       })
     },
-    rectGroup (left, color) {
+    rectGroup(left, color) {
       return {
         type: 'rect',
         z: 90,
@@ -341,7 +375,7 @@ export default {
         }
       }
     },
-    formatHotOptions () {
+    formatHotOptions() {
       const data = this.datas
       const options = this.defaultOptions
       const yAxis = options.yAxis
@@ -352,7 +386,9 @@ export default {
       const curBudget = this.cycle
       for (var i = 9; i > -1; i--) {
         var nowArr = data.slice(i * 10, (i + 1) * 10)
-        var nowDelStatus = nowArr.filter((v) => { return v[3] > 0 })
+        var nowDelStatus = nowArr.filter((v) => {
+          return v[3] > 0
+        })
         if (nowDelStatus.length > 0) {
           break
         } else {
@@ -362,18 +398,29 @@ export default {
           yAxis[1].data.splice(0, 1)
         }
       }
-      data.map(v => {
+      data.map((v) => {
         v[1] = v[1] - waitDelCount
         return v
       })
       this.minusRows = waitDelCount
       this.myChart.getDom().style.height = 500 - 48 * waitDelCount + 'px'
       series[0].data = data
-      series[1].data = this.cycle && this.cycle !== 0 ? [this.getCoordinateInfo(data, this.cycle)] : []
-      const maxNum = Math.max.apply(Math, series[0].data.map((o) => { return o[3] }))
+      series[1].data =
+        this.cycle && this.cycle !== 0
+          ? [this.getCoordinateInfo(data, this.cycle)]
+          : []
+      const maxNum = Math.max.apply(
+        Math,
+        series[0].data.map((o) => {
+          return o[3]
+        })
+      )
       visualMap.max = maxNum < 10 ? 10 : maxNum
-      graphic[graphic.length - 2].children[0].style.text = maxNum > 10 ? maxNum.toString() : '10'
-      graphic[0].children[0].style.text = this.showCycle ? '同类项目数量(个)' : '项目数量(个)'
+      graphic[graphic.length - 2].children[0].style.text =
+        maxNum > 10 ? maxNum.toString() : '10'
+      graphic[0].children[0].style.text = this.showCycle
+        ? '同类项目数量(个)'
+        : '项目数量(个)'
       const pj = Math.floor((visualMap.max / 5) * 100) / 100
       visualMap[0].pieces = [
         { min: 0, max: 0, color: '#FFF4EB', symbol: 'rect' },
@@ -391,11 +438,32 @@ export default {
         series[1].tooltip.formatter = (params) => {
           const arr = series[1].data[0] // 蓝点数据
           let tip = ''
-          params.marker = '<span style="display:inline-block;margin-right:5px;border-radius:8px;width:8px;height:8px;background-color:' + params.color + '"></span>'
-          const count = '<span style="padding-left:13px;">同类项目数量:' + arr[3] + '个</span></br>'
-          const rate = (typeof arr[2] === 'number' && !isNaN(arr[2])) ? '<span style="padding-left:13px;">平均折扣率:' + (arr[2] * 100).fixed(2) + '%</span></br>' : ''
-          const budget = '<span style="padding-left:13px;">同类项目预算:' + arr[4] + '</span></br>'
-          tip = params.marker + '当前项目预算:' + (curBudget / 10000).fixed(2) + '万元<br/>' + budget + count + rate
+          params.marker =
+            '<span style="display:inline-block;margin-right:5px;border-radius:8px;width:8px;height:8px;background-color:' +
+            params.color +
+            '"></span>'
+          const count =
+            '<span style="padding-left:13px;">同类项目数量:' +
+            arr[3] +
+            '个</span></br>'
+          const rate =
+            typeof arr[2] === 'number' && !isNaN(arr[2])
+              ? '<span style="padding-left:13px;">平均折扣率:' +
+                (arr[2] * 100).fixed(2) +
+                '%</span></br>'
+              : ''
+          const budget =
+            '<span style="padding-left:13px;">同类项目预算:' +
+            arr[4] +
+            '</span></br>'
+          tip =
+            params.marker +
+            '当前项目预算:' +
+            (curBudget / 10000).fixed(2) +
+            '万元<br/>' +
+            budget +
+            count +
+            rate
           return tip
         }
       }
@@ -432,7 +500,7 @@ export default {
       })
     },
     // 求最大项目数量
-    getMaxProjectCount (analysisArr) {
+    getMaxProjectCount(analysisArr) {
       if (!analysisArr || !$.isArray(analysisArr)) return
       const itemMaxKey = 3 // 每一项中要比较大小的索引
       const arr = JSON.parse(JSON.stringify(analysisArr))
@@ -446,7 +514,7 @@ export default {
       })
       return maxIndex
     },
-    getCoordinateInfo (analysisArr, cMoney) {
+    getCoordinateInfo(analysisArr, cMoney) {
       if (!analysisArr || !$.isArray(analysisArr)) return
       if (!cMoney) cMoney = 0
       var arr = JSON.parse(JSON.stringify(analysisArr))
@@ -476,12 +544,11 @@ export default {
       return analysisArr[cIndex]
     }
   },
-  beforeDestroy () {
+  beforeDestroy() {
     if (this.myChart) {
       this.myChart.dispose()
     }
   }
 }
 </script>
-<style lang="scss" scoped>
-</style>
+<style lang="scss" scoped></style>

+ 13 - 9
apps/bigmember_pc/src/components/chart/LineChart.vue

@@ -1,5 +1,10 @@
 <template>
-  <ve-line :data="datas" :height="options.height" :after-config="options.config" :extend="defaultOption"></ve-line>
+  <ve-line
+    :data="datas"
+    :height="options.height"
+    :after-config="options.config"
+    :extend="defaultOption"
+  ></ve-line>
 </template>
 <script>
 import { VeLine } from 'v-charts'
@@ -18,7 +23,7 @@ export default {
     },
     extend: {
       type: Object,
-      default () {
+      default() {
         return {}
       }
     }
@@ -26,7 +31,7 @@ export default {
   components: {
     VeLine
   },
-  data () {
+  data() {
     return {
       defaultOption: {
         color: this.options.colors,
@@ -121,18 +126,18 @@ export default {
   computed: {},
   watch: {
     datas: {
-      handler (newVal, oldVal) {
+      handler(newVal, oldVal) {
         this.datas = newVal
       },
       immediate: true,
       deep: true
     }
   },
-  mounted () {
+  mounted() {
     this.mergeExtendOptions()
   },
   methods: {
-    xAxisFormatter (params) {
+    xAxisFormatter(params) {
       var arr = params.split('~')
       if (arr.length === 2) {
         return arr.join('\n~')
@@ -140,11 +145,10 @@ export default {
         return params
       }
     },
-    mergeExtendOptions () {
+    mergeExtendOptions() {
       _.merge(this.defaultOption, this.extend)
     }
   }
 }
 </script>
-<style lang="scss" scoped>
-</style>
+<style lang="scss" scoped></style>

+ 70 - 53
apps/bigmember_pc/src/components/chart/MapChart.vue

@@ -1,19 +1,20 @@
 <template>
-    <ve-map
-      :height="options.height || defaultProps.height"
-      :after-config="options.config"
-      :data="datas"
-      :init-options="initRendererSvg"
-      :settings="defaultSettings"
-      :events="{ click: clickHandler.bind(this) }"
-      @ready="ready"
-      :extend="defaultOptionsComputed">
-    </ve-map>
+  <ve-map
+    :height="options.height || defaultProps.height"
+    :after-config="options.config"
+    :data="datas"
+    :init-options="initRendererSvg"
+    :settings="defaultSettings"
+    :events="{ click: clickHandler.bind(this) }"
+    @ready="ready"
+    :extend="defaultOptionsComputed"
+  >
+  </ve-map>
 </template>
 <script>
 import { VeMap } from 'v-charts'
 import { merge } from 'lodash'
-import mapJson from '../../assets/js/china-n.json';
+import mapJson from '../../assets/js/china-n.json'
 
 export default {
   name: 'chart',
@@ -22,7 +23,7 @@ export default {
     datas: Object,
     customDefaultOptions: {
       type: Object,
-      default () {
+      default() {
         return {}
       }
     },
@@ -36,7 +37,7 @@ export default {
   components: {
     VeMap
   },
-  data () {
+  data() {
     return {
       defaultProps: {
         height: '800px'
@@ -83,7 +84,11 @@ export default {
           padding: [8, 12],
           extraCssText: 'box-shadow: 0px 4px 16px rgba(8, 31, 38, 0.08)',
           formatter: (params, ticket, callback) => {
-            if (params.data === null || params.data === undefined || isNaN(params.data)) {
+            if (
+              params.data === null ||
+              params.data === undefined ||
+              isNaN(params.data)
+            ) {
               return // eslint-disable-line
             } else {
               return params.name + ':' + params.value
@@ -132,7 +137,8 @@ export default {
                   text: '市场分布数量',
                   font: '12px Microsoft YaHei'
                 }
-              }]
+              }
+            ]
           },
           {
             type: 'rect',
@@ -160,33 +166,42 @@ export default {
             width: 150,
             bottom: 0,
             left: 0,
-            children: [{
-              type: 'text',
-              z: 100,
-              left: 'left',
-              top: 'middle',
-              style: {
-                fill: '#333',
-                font: '12px Microsoft YaHei'
-              }
-            },
-            {
-              type: 'text',
-              z: 100,
-              left: 'right',
-              top: 'middle',
-              style: {
-                fill: '#333',
-                text: '0',
-                font: '12px Microsoft YaHei'
+            children: [
+              {
+                type: 'text',
+                z: 100,
+                left: 'left',
+                top: 'middle',
+                style: {
+                  fill: '#333',
+                  font: '12px Microsoft YaHei'
+                }
+              },
+              {
+                type: 'text',
+                z: 100,
+                left: 'right',
+                top: 'middle',
+                style: {
+                  fill: '#333',
+                  text: '0',
+                  font: '12px Microsoft YaHei'
+                }
               }
-            }]
+            ]
           }
         ],
         visualMap: {
           show: false,
           inRange: {
-            color: ['#FFF4EB', '#FFE7CF', '#FFCF9F', '#FFB366', '#F48A5D', '#F06326']
+            color: [
+              '#FFF4EB',
+              '#FFE7CF',
+              '#FFCF9F',
+              '#FFB366',
+              '#F48A5D',
+              '#F06326'
+            ]
           },
           outOfRange: {
             color: ['#F06326']
@@ -196,26 +211,29 @@ export default {
     }
   },
   computed: {
-    defaultOptionsComputed () {
+    defaultOptionsComputed() {
       return merge(this.defaultOptions, this.customDefaultOptions)
     }
   },
   watch: {},
-  mounted () {},
+  mounted() {},
   methods: {
-    extend (chart) {
+    extend(chart) {
       chart.setOption({
-        series: [{
-          type: 'bar',
-          barWidth: 20
-        }, {
-          type: 'line',
-          smooth: false,
-          symbol: 'none'
-        }]
+        series: [
+          {
+            type: 'bar',
+            barWidth: 20
+          },
+          {
+            type: 'line',
+            smooth: false,
+            symbol: 'none'
+          }
+        ]
       })
     },
-    rectGroup (left, color) {
+    rectGroup(left, color) {
       return {
         type: 'rect',
         z: 90,
@@ -230,15 +248,14 @@ export default {
         }
       }
     },
-    ready (e) {
+    ready(e) {
       this.$emit('ready', e)
     },
-    clickHandler (e) {
+    clickHandler(e) {
       this.$emit('clickChart', e)
     }
   },
-  beforeDestroy () {}
+  beforeDestroy() {}
 }
 </script>
-<style lang="scss" scoped>
-</style>
+<style lang="scss" scoped></style>

+ 23 - 15
apps/bigmember_pc/src/components/chart/PieChart.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="pie-chart" :style="{'height': height}"></div>
+  <div class="pie-chart" :style="{ height: height }"></div>
 </template>
 <script>
 import { merge } from 'lodash'
@@ -21,7 +21,7 @@ export default {
       default: () => ({})
     }
   },
-  data () {
+  data() {
     const roseType = this.rose ? 'area' : undefined
     return {
       myChart: null,
@@ -93,7 +93,20 @@ export default {
           itemStyle: {
             normal: {
               color: (params) => {
-                const colorList = ['#05A6F3', '#0BD991', '#8E6DF2', '#5B6E96', '#F06326', '#FF8040', '#FF9F40', '#FFCF9F', '#67E5B9', '#67C7F5', '#CEC2F2', '#C3CAD9']
+                const colorList = [
+                  '#05A6F3',
+                  '#0BD991',
+                  '#8E6DF2',
+                  '#5B6E96',
+                  '#F06326',
+                  '#FF8040',
+                  '#FF9F40',
+                  '#FFCF9F',
+                  '#67E5B9',
+                  '#67C7F5',
+                  '#CEC2F2',
+                  '#C3CAD9'
+                ]
                 return colorList[params.dataIndex]
               },
               borderWidth: 1,
@@ -122,18 +135,18 @@ export default {
   watch: {
     // 监听父组件传入数据, 有变化则重新渲染图表实例
     datas: {
-      handler (newVal, oldVal) {
+      handler(newVal, oldVal) {
         this.defaultOptions.dataset.source = newVal
         this.updateChartView()
       },
       deep: true
     }
   },
-  mounted () {
+  mounted() {
     this.updateChartView()
   },
   methods: {
-    updateChartView () {
+    updateChartView() {
       this.myChart = this.$echarts.init(this.$el)
       if (!this.myChart) return
       const fullOption = this.mergeOptionFn()
@@ -143,20 +156,15 @@ export default {
       })
     },
     // 通过js工具库的merge方法合并传入的配置和默认配置
-    mergeOptionFn () {
-      return merge(
-        {},
-        this.defaultOptions,
-        this.options
-      )
+    mergeOptionFn() {
+      return merge({}, this.defaultOptions, this.options)
     }
   },
-  beforeDestroy () {
+  beforeDestroy() {
     if (this.myChart) {
       this.myChart.dispose()
     }
   }
 }
 </script>
-<style lang="scss" scoped>
-</style>
+<style lang="scss" scoped></style>

+ 149 - 115
apps/bigmember_pc/src/components/chart/ProChart.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="progess-chart">
-    <div class="client-list" >
+    <div class="client-list">
       <div class="c-thead" v-if="type == 'unit'">
         <span class="c-name">企业名称</span>
         <span class="c-count">行业</span>
@@ -16,27 +16,52 @@
         <span class="c-time">最近合作日期</span>
       </div>
       <div class="progress-bar-container">
-        <div class="progress-bar-item" v-for="(item,i) in datas" :key="i">
+        <div class="progress-bar-item" v-for="(item, i) in datas" :key="i">
           <div class="item-label" v-if="type == 'unit'">
-            <span :class="!ishref ? 'no-href' : ''" class="ellipsis-2 item-name" @click="goEnt(item.id)">{{item.name}}</span>
-            <span class="item-count">{{item.business?item.business:"--"}}</span>
-            <span class="item-count">{{item.total}}个</span>
+            <span
+              :class="!ishref ? 'no-href' : ''"
+              class="ellipsis-2 item-name"
+              @click="goEnt(item.id)"
+              >{{ item.name }}</span
+            >
+            <span class="item-count">{{
+              item.business ? item.business : '--'
+            }}</span>
+            <span class="item-count">{{ item.total }}个</span>
             <span v-if="item.rate == 0" class="item-count">0%</span>
-            <span v-else class="item-count">{{item.rate?(item.rate * 100).toFixed(2)+"%":"--"}}</span>
-            <span class="item-time">{{item.lastTime}}</span>
+            <span v-else class="item-count">{{
+              item.rate ? (item.rate * 100).toFixed(2) + '%' : '--'
+            }}</span>
+            <span class="item-time">{{ item.lastTime }}</span>
           </div>
           <div class="item-label" v-if="type == 'ent'">
-            <span :class="!ishref ? 'no-href' : ''" class="ellipsis-2 item-name" @click="goEnt(item.id)">{{item.name}}</span>
-            <span class="item-count">{{item.business?item.business:"--"}}</span>
-            <span class="item-count">{{item.total}}个</span>
+            <span
+              :class="!ishref ? 'no-href' : ''"
+              class="ellipsis-2 item-name"
+              @click="goEnt(item.id)"
+              >{{ item.name }}</span
+            >
+            <span class="item-count">{{
+              item.business ? item.business : '--'
+            }}</span>
+            <span class="item-count">{{ item.total }}个</span>
             <span v-if="item.rate == 0" class="item-count">0%</span>
-            <span v-else class="item-count">{{item.rate?(item.rate * 100).toFixed(2)+"%":"--"}}</span>
-            <span class="item-time">{{item.lastTime}}</span>
+            <span v-else class="item-count">{{
+              item.rate ? (item.rate * 100).toFixed(2) + '%' : '--'
+            }}</span>
+            <span class="item-time">{{ item.lastTime }}</span>
           </div>
           <div class="item-progress">
-            <span class="item-money" v-if="item.amount">中标金额:{{moneyFormat(item.amount)}}</span>
-            <span class="item-money" v-if="item.money">{{moneyFormat(item.money)}}</span>
-            <span class="item-progress-count active-progress" :style="{width: item.parent}"></span>
+            <span class="item-money" v-if="item.amount"
+              >中标金额:{{ moneyFormat(item.amount) }}</span
+            >
+            <span class="item-money" v-if="item.money">{{
+              moneyFormat(item.money)
+            }}</span>
+            <span
+              class="item-progress-count active-progress"
+              :style="{ width: item.parent }"
+            ></span>
           </div>
         </div>
       </div>
@@ -54,17 +79,17 @@ export default {
     datas: Array,
     ishref: {
       type: Boolean,
-      default () {
+      default() {
         return true
       }
     }
   },
-  data () {
+  data() {
     return {}
   },
   computed: {
     ...mapState({
-      info: state => state.user.info
+      info: (state) => state.user.info
     })
     // computedClientList () {
     //   return this.datas.map((v) => {
@@ -78,15 +103,17 @@ export default {
     // }
   },
   watch: {},
-  mounted () {},
+  mounted() {},
   methods: {
-    moneyFormat (money) {
+    moneyFormat(money) {
       return moneyUnit(money)
     },
-    goEntInfo (name) {
-      window.open('/swordfish/page_big_pc/unit_portrayal/' + encodeURIComponent(name))
+    goEntInfo(name) {
+      window.open(
+        '/swordfish/page_big_pc/unit_portrayal/' + encodeURIComponent(name)
+      )
     },
-    goEnt (id) {
+    goEnt(id) {
       if (!this.ishref) return
       if (this.info.power.indexOf(5) > -1) {
         window.open('/swordfish/page_big_pc/ent_portrait/' + id)
@@ -98,99 +125,106 @@ export default {
 }
 </script>
 <style lang="scss" scoped>
-.client-list{
+.client-list {
   margin-top: 16px;
   background-color: #fff;
-.c-thead{
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  line-height: 22px;
-}
-.c-name,.item-name{
-  font-size: 14px;
-  color: #1D1D1D;
-  flex: 7;
-}
-.item-name{
-  cursor: pointer;
-}
-.no-href {
-  text-decoration: none!important;
-  cursor: auto;
-}
-.c-count,.item-count,.c-time,.item-time{
-  flex: 1;
-  min-width: 100px;
-  font-size: 12px;
-  text-align: center;
-  white-space: nowrap;
-}
-.c-rate,.item-rate{
-  font-size: 12px;
-  text-align: center;
-}
-.c-name{
-  /*font-weight: bold;*/
-  font-size: 12px;
-  line-height: 40px;
-  color: #686868;
-}
-.c-count,.c-rate,.c-time{
-  color: #686868;
-  white-space: nowrap;
-}
-.progress-bar-container {
-  background-color: #fff;
-}
-.progress-bar-item {
-  display: flex;
-  flex-direction: column;
-  justify-content: space-around;
-  margin-bottom: 14px;
-}
-.item-label {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  line-height: 20px;
-  padding-bottom: 6px;
-}
-.item-name {
-  color: #171826;
-  text-decoration: underline;
-}
-.item-count {
-  font-size: 12px;
-  color: #171826;
-}
-.item-progress {
-  position: relative;
-  height: 20px;
-  line-height: 20px;
-  background-color: #EDEFF2;
-  border-radius: 0 10px 10px 0;
-  overflow: hidden;
-}
-.item-money{
-  position: absolute;
-  left: 16px;
-  top: 50%;
-  transform: translateY(-50%);
-  color: #8F5828;
-  font-size: 14px;
-  z-index: 10;
-}
-.item-progress-count {
-  position: absolute;
-  top: 0;
-  left: 0;
-  height: 100%;
-  border-radius: 0 10px 10px 0;
-  z-index: 9;
-}
-.active-progress{
-  background: #FAE7CA;
-}
+  .c-thead {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    line-height: 22px;
+  }
+  .c-name,
+  .item-name {
+    font-size: 14px;
+    color: #1d1d1d;
+    flex: 7;
+  }
+  .item-name {
+    cursor: pointer;
+  }
+  .no-href {
+    text-decoration: none !important;
+    cursor: auto;
+  }
+  .c-count,
+  .item-count,
+  .c-time,
+  .item-time {
+    flex: 1;
+    min-width: 100px;
+    font-size: 12px;
+    text-align: center;
+    white-space: nowrap;
+  }
+  .c-rate,
+  .item-rate {
+    font-size: 12px;
+    text-align: center;
+  }
+  .c-name {
+    /*font-weight: bold;*/
+    font-size: 12px;
+    line-height: 40px;
+    color: #686868;
+  }
+  .c-count,
+  .c-rate,
+  .c-time {
+    color: #686868;
+    white-space: nowrap;
+  }
+  .progress-bar-container {
+    background-color: #fff;
+  }
+  .progress-bar-item {
+    display: flex;
+    flex-direction: column;
+    justify-content: space-around;
+    margin-bottom: 14px;
+  }
+  .item-label {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    line-height: 20px;
+    padding-bottom: 6px;
+  }
+  .item-name {
+    color: #171826;
+    text-decoration: underline;
+  }
+  .item-count {
+    font-size: 12px;
+    color: #171826;
+  }
+  .item-progress {
+    position: relative;
+    height: 20px;
+    line-height: 20px;
+    background-color: #edeff2;
+    border-radius: 0 10px 10px 0;
+    overflow: hidden;
+  }
+  .item-money {
+    position: absolute;
+    left: 16px;
+    top: 50%;
+    transform: translateY(-50%);
+    color: #8f5828;
+    font-size: 14px;
+    z-index: 10;
+  }
+  .item-progress-count {
+    position: absolute;
+    top: 0;
+    left: 0;
+    height: 100%;
+    border-radius: 0 10px 10px 0;
+    z-index: 9;
+  }
+  .active-progress {
+    background: #fae7ca;
+  }
 }
 </style>

+ 99 - 43
apps/bigmember_pc/src/components/chart/ProgressChart.vue

@@ -1,11 +1,21 @@
 <template>
   <div class="progess-chart">
-    <div class="client-list" v-for="(c,i) in datas" :key="i">
+    <div class="client-list" v-for="(c, i) in datas" :key="i">
       <div class="c-top">
         <strong class="c-itemName">{{ c.buyerclass }}</strong>
         <div class="top-switch">
-          <div :class="{active: !showLabels[c.buyerclass]}" @click="toggleShow(c,false)">重点客户</div>
-          <div :class="{active: showLabels[c.buyerclass]}" @click="toggleShow(c,true)">首次合作客户</div>
+          <div
+            :class="{ active: !showLabels[c.buyerclass] }"
+            @click="toggleShow(c, false)"
+          >
+            重点客户
+          </div>
+          <div
+            :class="{ active: showLabels[c.buyerclass] }"
+            @click="toggleShow(c, true)"
+          >
+            首次合作客户
+          </div>
         </div>
       </div>
       <div class="progress-bar-container" v-show="!showLabels[c.buyerclass]">
@@ -15,39 +25,75 @@
           <span class="c-count">平均折扣率</span>
           <span class="c-time">最近合作日期</span>
         </div>
-        <div class="progress-bar-item" v-for="(item,index) in c.topData" :key="index">
+        <div
+          class="progress-bar-item"
+          v-for="(item, index) in c.topData"
+          :key="index"
+        >
           <div class="item-label">
-            <span @click="goEntInfo(item.name)" class="ellipsis-2 item-name">{{ item.name }}</span>
-            <span class="item-count">{{ item.count ? item.count + '个' : item.count }}</span>
-            <span class="item-count">{{ (item.rate != null) ? item.rate + '%' : '--' }}</span>
+            <span @click="goEntInfo(item.name)" class="ellipsis-2 item-name">{{
+              item.name
+            }}</span>
+            <span class="item-count">{{
+              item.count ? item.count + '个' : item.count
+            }}</span>
+            <span class="item-count">{{
+              item.rate != null ? item.rate + '%' : '--'
+            }}</span>
             <span class="item-time">{{ item.time }}</span>
           </div>
           <div class="item-progress">
-            <span class="item-money" v-if="item.countMoney">{{ moneyFormat(item.countMoney) }}</span>
-            <span class="item-money" v-if="item.money">{{ moneyFormat(item.money) }}</span>
-            <span class="item-progress-count active-progress" :style="{width: item.parent}"></span>
+            <span class="item-money" v-if="item.countMoney">{{
+              moneyFormat(item.countMoney)
+            }}</span>
+            <span class="item-money" v-if="item.money">{{
+              moneyFormat(item.money)
+            }}</span>
+            <span
+              class="item-progress-count active-progress"
+              :style="{ width: item.parent }"
+            ></span>
           </div>
         </div>
       </div>
       <div class="progress-bar-container" v-show="showLabels[c.buyerclass]">
-        <div v-if="c.firstData&&c.firstData.length>0">
+        <div v-if="c.firstData && c.firstData.length > 0">
           <div class="c-thead">
             <span class="c-name">客户名称</span>
             <span class="c-count">中标数量</span>
             <span class="c-count">平均折扣率</span>
             <span class="c-time">最近合作日期</span>
           </div>
-          <div class="progress-bar-item" v-for="(item,index) in c.firstData" :key="index">
+          <div
+            class="progress-bar-item"
+            v-for="(item, index) in c.firstData"
+            :key="index"
+          >
             <div class="item-label">
-              <span @click="goEntInfo(item.name)" class="ellipsis-2 item-name">{{ item.name }}</span>
-              <span class="item-count">{{ item.count ? item.count + '个' : item.count }}</span>
-              <span class="item-count">{{ (item.rate != null) ? item.rate + '%' : '--' }}</span>
+              <span
+                @click="goEntInfo(item.name)"
+                class="ellipsis-2 item-name"
+                >{{ item.name }}</span
+              >
+              <span class="item-count">{{
+                item.count ? item.count + '个' : item.count
+              }}</span>
+              <span class="item-count">{{
+                item.rate != null ? item.rate + '%' : '--'
+              }}</span>
               <span class="item-time">{{ item.time }}</span>
             </div>
             <div class="item-progress">
-              <span class="item-money" v-if="item.countMoney">{{ moneyFormat(item.countMoney) }}</span>
-              <span class="item-money" v-if="item.money">{{ moneyFormat(item.money) }}</span>
-              <span class="item-progress-count active-progress" :style="{width: item.parent}"></span>
+              <span class="item-money" v-if="item.countMoney">{{
+                moneyFormat(item.countMoney)
+              }}</span>
+              <span class="item-money" v-if="item.money">{{
+                moneyFormat(item.money)
+              }}</span>
+              <span
+                class="item-progress-count active-progress"
+                :style="{ width: item.parent }"
+              ></span>
             </div>
           </div>
         </div>
@@ -76,43 +122,44 @@ export default {
     datas: Array,
     ishref: {
       type: Boolean,
-      default () {
+      default() {
         return true
       }
     }
   },
-  data () {
+  data() {
     return {
       showLabels: {}
     }
   },
   computed: {
     ...mapState({
-      info: state => state.user.info
+      info: (state) => state.user.info
     }),
-    computedClientList () {
+    computedClientList() {
       return this.datas.filter(function (v, i) {
         return v.topData.length
       })
     }
   },
   watch: {},
-  mounted () {
-  },
+  mounted() {},
   methods: {
-    toggleShow (c, type) {
+    toggleShow(c, type) {
       this.$set(this.showLabels, c.buyerclass, type)
     },
-    moneyFormat (money) {
+    moneyFormat(money) {
       return moneyUnit(money)
     },
-    goEntInfo (name) {
+    goEntInfo(name) {
       if (name === '') {
         return
       }
-      window.open('/swordfish/page_big_pc/unit_portrayal/' + encodeURIComponent(name))
+      window.open(
+        '/swordfish/page_big_pc/unit_portrayal/' + encodeURIComponent(name)
+      )
     },
-    goEnt (id) {
+    goEnt(id) {
       if (!this.ishref) return
       if (this.info.power.indexOf(5) > -1) {
         window.open('/swordfish/page_big_pc/ent_portrait/' + id)
@@ -136,9 +183,10 @@ export default {
     margin-top: 12px;
   }
 
-  .c-name, .item-name {
+  .c-name,
+  .item-name {
     font-size: 14px;
-    color: #1D1D1D;
+    color: #1d1d1d;
     flex: 7;
   }
 
@@ -151,7 +199,10 @@ export default {
     cursor: auto;
   }
 
-  .c-count, .item-count, .c-time, .item-time {
+  .c-count,
+  .item-count,
+  .c-time,
+  .item-time {
     flex: 1;
     min-width: 100px;
     font-size: 12px;
@@ -159,12 +210,14 @@ export default {
     white-space: nowrap;
   }
 
-  .c-rate, .item-rate {
+  .c-rate,
+  .item-rate {
     font-size: 12px;
     text-align: center;
   }
 
-  .c-top, .top-switch {
+  .c-top,
+  .top-switch {
     display: flex;
     flex-direction: row;
     font-size: 16px;
@@ -188,22 +241,25 @@ export default {
   }
 
   .top-switch div.active {
-    background: #2CB7CA;
-    color: #FFFFFF;
+    background: #2cb7ca;
+    color: #ffffff;
   }
 
   .top-switch div:not(active) {
-    border: 1px solid #E0E0E0;
-    color: #1D1D1D;
+    border: 1px solid #e0e0e0;
+    color: #1d1d1d;
   }
 
   .c-itemName {
     font-weight: bold;
 
-    color: #1D1D1D;
+    color: #1d1d1d;
   }
 
-  .c-count, .c-rate, .c-time, .c-name {
+  .c-count,
+  .c-rate,
+  .c-time,
+  .c-name {
     color: #686868;
     white-space: nowrap;
   }
@@ -241,7 +297,7 @@ export default {
     position: relative;
     height: 20px;
     line-height: 20px;
-    background-color: #EDEFF2;
+    background-color: #edeff2;
     border-radius: 0 10px 10px 0;
     overflow: hidden;
   }
@@ -251,7 +307,7 @@ export default {
     left: 16px;
     top: 50%;
     transform: translateY(-50%);
-    color: #8F5828;
+    color: #8f5828;
     font-size: 14px;
     z-index: 10;
   }
@@ -266,7 +322,7 @@ export default {
   }
 
   .active-progress {
-    background: #FAE7CA;
+    background: #fae7ca;
   }
 
   .empty-container.mtb60 {

+ 10 - 10
apps/bigmember_pc/src/components/chart/RectTreeMapChart.vue

@@ -20,7 +20,7 @@ export default {
       default: 'min-height: 400px'
     }
   },
-  data () {
+  data() {
     return {
       myChart: null,
       height: '500px',
@@ -55,7 +55,8 @@ export default {
             breadcrumb: {
               show: false
             },
-            label: { // 描述了每个矩形中,文本标签的样式。
+            label: {
+              // 描述了每个矩形中,文本标签的样式。
               normal: {
                 show: true,
                 position: ['10%', '40%']
@@ -93,11 +94,11 @@ export default {
     }
   },
   watch: {},
-  mounted () {
+  mounted() {
     this.updateChartView()
   },
   methods: {
-    updateChartView () {
+    updateChartView() {
       this.myChart = this.$echarts.init(this.$el, 'light')
       if (!this.myChart) return
       this.mergeOptions()
@@ -107,26 +108,25 @@ export default {
         // this.myChart.resize()
       })
     },
-    clickChart (e) {
+    clickChart(e) {
       this.$emit('clickChart', e)
     },
-    mergeOptions () {
+    mergeOptions() {
       // 设置数据
       this.defaultOptions.series[0].data = this.datas
       // 设置图例?
-      this.defaultOptions.legend.data = this.datas.map(item => {
+      this.defaultOptions.legend.data = this.datas.map((item) => {
         return item.name
       })
 
       _.merge(this.defaultOptions, this.options)
     }
   },
-  beforeDestroy () {
+  beforeDestroy() {
     if (this.myChart) {
       this.myChart.dispose()
     }
   }
 }
 </script>
-<style lang="scss" scoped>
-</style>
+<style lang="scss" scoped></style>

+ 28 - 16
apps/bigmember_pc/src/components/chart/SimpleHistogramChart.vue

@@ -9,7 +9,7 @@
     :after-config="options.config"
     :after-set-option="extend"
     :extend="defaultOptions"
-    >
+  >
   </ve-histogram>
 </template>
 <script>
@@ -26,7 +26,7 @@ export default {
     },
     data: {
       type: Object,
-      default () {
+      default() {
         return {
           // columns: ['项目规模', '项目总金额占比', '项目总数占比'],
           // rows: [
@@ -55,7 +55,7 @@ export default {
       }
     }
   },
-  data () {
+  data() {
     return {
       options: {
         colors: ['#FF9F3F', '#05A5F2'],
@@ -81,7 +81,7 @@ export default {
             color: '#9B9CA3'
           }
         },
-        yAxis (item) {
+        yAxis(item) {
           Object.assign(item[0], {
             splitLine: {
               lineStyle: {
@@ -92,7 +92,8 @@ export default {
             axisLabel: {
               margin: 2,
               fontSize: 12,
-              formatter: (value, index) => value.toString().replace(/,/, '') + '%'
+              formatter: (value, index) =>
+                value.toString().replace(/,/, '') + '%'
             }
           })
 
@@ -124,7 +125,8 @@ export default {
             fontSize: 12
           },
           padding: [7, 12],
-          extraCssText: 'box-shadow: 0px 4px 16px rgba(8, 31, 38, 0.08);transform: translate3d(0,0,0)',
+          extraCssText:
+            'box-shadow: 0px 4px 16px rgba(8, 31, 38, 0.08);transform: translate3d(0,0,0)',
           formatter: this.tooltipFormatter
         },
         legend: {
@@ -154,16 +156,16 @@ export default {
               }
             }
           },
-          formatter: name => name
+          formatter: (name) => name
         }
       }
     }
   },
   computed: {},
   watch: {},
-  mounted () {},
+  mounted() {},
   methods: {
-    extend (chart) {
+    extend(chart) {
       chart.setOption({
         series: [
           {
@@ -177,24 +179,34 @@ export default {
         ]
       })
     },
-    tooltipFormatter (params) {
+    tooltipFormatter(params) {
       let tip = `<div style="padding-top:2px;color:#9B9CA3;">${params[0].name}</div>`
       for (let i = 0; i < params.length; i++) {
         if (params[i].value === undefined || params[i].value === '') {
           params[i].value = 0
         }
         if (i === 0) {
-          tip = tip + params[i].marker + params[i].seriesName + ':' + params[i].value + '%<br/>'
+          tip =
+            tip +
+            params[i].marker +
+            params[i].seriesName +
+            ':' +
+            params[i].value +
+            '%<br/>'
         } else if (i === 1) {
-          tip = tip + params[i].marker + params[i].seriesName + ':' + params[i].value + '%<br/>'
+          tip =
+            tip +
+            params[i].marker +
+            params[i].seriesName +
+            ':' +
+            params[i].value +
+            '%<br/>'
         }
       }
       return tip
     }
   },
-  beforeDestroy () {}
+  beforeDestroy() {}
 }
 </script>
-<style lang="scss" scoped>
-
-</style>
+<style lang="scss" scoped></style>

Fișier diff suprimat deoarece este prea mare
+ 390 - 196
apps/bigmember_pc/src/components/collect-info/CollectInfo.vue


+ 27 - 15
apps/bigmember_pc/src/components/common/AssociationInput.vue

@@ -7,17 +7,25 @@
       :placeholder="placeholder"
       :suffix-icon="suffixIcon"
       :clearable="clearable"
-      @focus="preSearch.focus=true"
+      @focus="preSearch.focus = true"
       @blur="onBlur"
       @input="onInput"
     ></el-input>
-    <div class="pre-search-list" :style="{ top: preSearch.top + 'px' }" v-show="preSearchListShow" @mouseout="preSearch.hover=false" @mouseover="preSearch.hover=true">
+    <div
+      class="pre-search-list"
+      :style="{ top: preSearch.top + 'px' }"
+      v-show="preSearchListShow"
+      @mouseout="preSearch.hover = false"
+      @mouseover="preSearch.hover = true"
+    >
       <div
         class="pre-search-item ellipsis"
-        v-for="(item,index) in preSearch.list"
+        v-for="(item, index) in preSearch.list"
         :key="index"
         @click="selectSearchItem(item)"
-        >{{ item.value }}</div>
+      >
+        {{ item.value }}
+      </div>
     </div>
   </div>
 </template>
@@ -57,7 +65,7 @@ export default {
       default: ''
     }
   },
-  data () {
+  data() {
     return {
       preSearch: {
         top: 0,
@@ -68,28 +76,32 @@ export default {
     }
   },
   computed: {
-    preSearchListShow () {
-      return this.value.trim().length >= 2 && this.preSearch.list.length && (this.preSearch.focus || this.preSearch.hover)
+    preSearchListShow() {
+      return (
+        this.value.trim().length >= 2 &&
+        this.preSearch.list.length &&
+        (this.preSearch.focus || this.preSearch.hover)
+      )
     }
   },
-  created () {
+  created() {
     if (this.immediateAssociation) {
       this.preSearchList()
     }
   },
-  mounted () {
+  mounted() {
     this.calcPreSearchTop()
   },
   methods: {
-    calcPreSearchTop () {
+    calcPreSearchTop() {
       const { association } = this.$refs
       this.preSearch.top = association.clientHeight + 2
     },
-    onInput (e) {
+    onInput(e) {
       this.$emit('input', e)
       this.preSearchList(e)
     },
-    onBlur (e) {
+    onBlur(e) {
       this.$emit('blur', e)
       this.$nextTick(() => {
         this.preSearch.focus = false
@@ -114,7 +126,7 @@ export default {
       }
       this.preSearch.list = list
     }, 300),
-    selectSearchItem (item) {
+    selectSearchItem(item) {
       this.$emit('select', item)
       // 选择后马上关闭备选列表
       this.$nextTick(() => {
@@ -148,7 +160,7 @@ export default {
   z-index: 6;
   width: 100%;
   background: #fff;
-  box-shadow: 0 0 10px rgb(0,0,0,0.1);
+  box-shadow: 0 0 10px rgb(0, 0, 0, 0.1);
   border-radius: 4px;
   overflow: hidden;
 }
@@ -159,7 +171,7 @@ export default {
   line-height: 34px;
   color: #606266;
   box-sizing: border-box;
-  transition: all .3s;
+  transition: all 0.3s;
   cursor: pointer;
 }
 .pre-search-item:hover {

+ 85 - 76
apps/bigmember_pc/src/components/common/BigMemberEmpty.vue

@@ -1,7 +1,13 @@
 <template>
-  <div class="empty-index-container" :class="classfuncType?'reportempty':''">
+  <div
+    class="empty-index-container"
+    :class="classfuncType ? 'reportempty' : ''"
+  >
     <div class="empty-content-position">
-      <el-image v-if="imgShow" :src="import('@/assets/images/bmempty.png')"></el-image>
+      <el-image
+        v-if="imgShow"
+        :src="import('@/assets/images/bmempty.png')"
+      ></el-image>
       <div class="empty-main">
         <slot class="default">
           <slot name="tipText">{{ tip }}</slot>
@@ -34,17 +40,20 @@ export default {
     }
   },
   computed: {
-    classfuncType () {
+    classfuncType() {
       return this.functype === 'week' || this.functype === 'month'
     }
   },
-  data () {
+  data() {
     return {
       imgShow: true
     }
   },
-  created () {
-    if (this.setpageshow === 'model-week' || this.setpageshow === 'model-month') {
+  created() {
+    if (
+      this.setpageshow === 'model-week' ||
+      this.setpageshow === 'model-month'
+    ) {
       this.imgShow = false
     }
   }
@@ -52,88 +61,88 @@ export default {
 </script>
 
 <style lang="scss" scoped>
-  .empty-index-container {
+.empty-index-container {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex: 1;
+  padding: 16px;
+  box-sizing: border-box;
+  &.mtb60 {
+    margin: 60px auto;
+  }
+
+  .empty-content-position {
     display: flex;
     align-items: center;
     justify-content: center;
-    flex: 1;
-    padding: 16px;
-    box-sizing: border-box;
-    &.mtb60 {
-      margin: 60px auto;
-    }
-
-    .empty-content-position {
-      display: flex;
-      align-items: center;
-      justify-content: center;
-    }
+  }
 
-    .mt50 {
-      margin-top: -50px;
-    }
+  .mt50 {
+    margin-top: -50px;
+  }
 
-    .empty-main {
-      .default{
-        @extend .empty-content-position;
-        display: flex;
-        flex-direction: column;
-        align-items: flex-start;
-        font-family: Microsoft YaHei, Microsoft YaHei-Regular;
-        margin-top: 13px;
+  .empty-main {
+    .default {
+      @extend .empty-content-position;
+      display: flex;
+      flex-direction: column;
+      align-items: flex-start;
+      font-family: Microsoft YaHei, Microsoft YaHei-Regular;
+      margin-top: 13px;
+      font-size: 14px;
+      font-weight: 400;
+      color: #999999;
+      line-height: 22px;
+      // 默认文字按钮组合样式
+      span + button {
+        margin-top: 32px;
+      }
+      ::v-deep.el-icon-plus {
+        font-weight: bold;
+      }
+      .el-button [class*='el-icon-'] + span {
+        margin-left: 9px;
+      }
+      .setbtn {
+        margin-top: 12px;
+        padding: 4px 12px;
+        background: #2cb7ca;
+        border-radius: 4px;
         font-size: 14px;
+        font-family: Microsoft YaHei, Microsoft YaHei-Regular;
         font-weight: 400;
-        color: #999999;
-        line-height: 22px;
-        // 默认文字按钮组合样式
-        span + button {
-          margin-top: 32px;
-        }
-        ::v-deep.el-icon-plus {
-          font-weight: bold;
-        }
-        .el-button [class*=el-icon-]+span {
-          margin-left: 9px;
-        }
-        .setbtn{
-          margin-top: 12px;
-          padding: 4px 12px;
-          background: #2cb7ca;
-          border-radius: 4px;
-          font-size: 14px;
-          font-family: Microsoft YaHei, Microsoft YaHei-Regular;
-          font-weight: 400;
-          text-align: CENTER;
-          color: #ffffff;
-        }
+        text-align: CENTER;
+        color: #ffffff;
       }
     }
+  }
 
+  .el-image {
+    margin-right: 16px;
+    width: 148px;
+    height: 148px;
+  }
+}
+.reportempty {
+  background: #ffffff;
+  height: 591px;
+  align-items: flex-start;
+  .empty-content-position {
+    margin-top: 80px;
+    flex-direction: column;
     .el-image {
-      margin-right: 16px;
-      width: 148px;
-      height: 148px;
+      width: 200px;
+      height: 200px;
     }
-  }
-  .reportempty{
-    background: #ffffff;
-    height: 591px;
-    align-items: flex-start;
-    .empty-content-position{
-      margin-top: 80px;
-      flex-direction: column;
-      .el-image{
-        width: 200px;
-        height: 200px;
-      }
-      .empty-main{
-        font-size: 14px;
-        font-family: Microsoft YaHei, Microsoft YaHei-Regular;
-        font-weight: 400;
-        text-align: center;
-        color: #999999;
-        line-height: 22px;
-      }
+    .empty-main {
+      font-size: 14px;
+      font-family: Microsoft YaHei, Microsoft YaHei-Regular;
+      font-weight: 400;
+      text-align: center;
+      color: #999999;
+      line-height: 22px;
     }
   }
+}
 </style>

+ 26 - 12
apps/bigmember_pc/src/components/common/ContentLayout.vue

@@ -6,9 +6,17 @@
     <div class="content-right ad-container" :class="{ nothing: adShow }">
       <slot name="right">
         <slot name="right-top"></slot>
-        <div class="ad-list" :id="(adCodeMap[routerName] || routerName)">
-          <div class="ad-item-container" v-for="(item, index) in adList" :key="index">
-            <a :href="item.s_link" target="_blank" :id="(adCodeMap[routerName] || routerName) + '-' + index">
+        <div class="ad-list" :id="adCodeMap[routerName] || routerName">
+          <div
+            class="ad-item-container"
+            v-for="(item, index) in adList"
+            :key="index"
+          >
+            <a
+              :href="item.s_link"
+              target="_blank"
+              :id="(adCodeMap[routerName] || routerName) + '-' + index"
+            >
               <img :src="item.s_pic" />
             </a>
           </div>
@@ -43,16 +51,21 @@ export default {
   },
   computed: {
     ...mapState({
-      loginFlag: state => state.user.loginFlag
+      loginFlag: (state) => state.user.loginFlag
     }),
-    conentCenter () { // 已登录广告位无数据则隐藏右侧广告位布局并整体居中,未登录则右侧布局常在可插入相关内容
-      return this.adList.length === 0 && this.contentWithState === 'center' && this.loginFlag
+    conentCenter() {
+      // 已登录广告位无数据则隐藏右侧广告位布局并整体居中,未登录则右侧布局常在可插入相关内容
+      return (
+        this.adList.length === 0 &&
+        this.contentWithState === 'center' &&
+        this.loginFlag
+      )
     },
-    adShow () {
+    adShow() {
       return this.adList.length === 0 && this.contentWithState && this.loginFlag
     }
   },
-  data () {
+  data() {
     return {
       routerName: '',
       adCodeMap: {
@@ -72,7 +85,7 @@ export default {
       ]
     }
   },
-  created () {
+  created() {
     this.routerName = this.$route.name
     if (this.needAd) {
       this.getAdvertisementList()
@@ -80,12 +93,13 @@ export default {
   },
   methods: {
     getRandomString,
-    async getAdvertisementList () {
+    async getAdvertisementList() {
       const params = {
         code: this.adCode
       }
 
-      if (!params.code) { // 先从props中取出参数,如果没取到,就从map中取
+      if (!params.code) {
+        // 先从props中取出参数,如果没取到,就从map中取
         const routeName = this.routerName
         params.code = this.adCodeMap[routeName]
       }
@@ -121,7 +135,7 @@ export default {
   .content-main {
     width: 100%;
     flex: 1;
-    transition: .1s;
+    transition: 0.1s;
   }
 
   .content-right {

+ 27 - 26
apps/bigmember_pc/src/components/common/Dialog.vue

@@ -11,11 +11,13 @@
       @before-close="beforeClose"
       @close="setCancel"
       :center="center"
-      >
+    >
       <slot></slot>
       <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="setConfirm">{{confirmText}}</el-button>
-        <el-button @click="setCancel">{{cancelText}}</el-button>
+        <el-button type="primary" @click="setConfirm">{{
+          confirmText
+        }}</el-button>
+        <el-button @click="setCancel">{{ cancelText }}</el-button>
       </span>
     </el-dialog>
   </div>
@@ -82,7 +84,7 @@ export default {
     }
   },
   computed: {
-    setClass () {
+    setClass() {
       if (this.title === '') {
         return `${this.customClass} noHeader`
       } else {
@@ -90,23 +92,22 @@ export default {
       }
     }
   },
-  data () {
-    return {
-    }
+  data() {
+    return {}
   },
   methods: {
     // 确认
-    setConfirm () {
+    setConfirm() {
       console.log('setConfirm')
       this.$emit('setConfirm')
     },
     // 取消,关闭弹窗
-    setCancel () {
+    setCancel() {
       console.log('setCancel')
       this.$emit('setCancel')
     },
     // 关闭前的回调, 暂停关闭
-    beforeClose () {
+    beforeClose() {
       console.log('beforeClose')
       this.$emit('beforeClose')
     }
@@ -115,33 +116,33 @@ export default {
 </script>
 
 <style lang="scss" scoped>
-.common-dialog{
+.common-dialog {
   width: 100%;
   height: 100%;
-  ::v-deep .el-dialog__wrapper{
+  ::v-deep .el-dialog__wrapper {
     // position: inherit;
-    .el-dialog__header{
+    .el-dialog__header {
       padding: 0 20px 20px;
     }
-    .noHeader{
-      .el-dialog__header{
+    .noHeader {
+      .el-dialog__header {
         display: none;
       }
     }
-    .el-dialog{
-      width: 380px!important;
+    .el-dialog {
+      width: 380px !important;
       padding: 32px;
-      background: #FFFFFF;
+      background: #ffffff;
       border-radius: 8px;
-      .el-dialog__body{
+      .el-dialog__body {
         padding: 0;
         font-size: 14px;
         line-height: 22px;
       }
-      .el-dialog__footer{
+      .el-dialog__footer {
         margin-top: 32px;
         padding: 0;
-        .dialog-footer{
+        .dialog-footer {
           display: flex;
           justify-content: space-between;
         }
@@ -149,16 +150,16 @@ export default {
           padding: 0;
           width: 132px;
           height: 36px;
-          background: #2ABED1;
+          background: #2abed1;
           border-radius: 6px;
           font-size: 16px;
           font-weight: 400;
-          color: #FFFFFF;
+          color: #ffffff;
           line-height: 36px;
-          &.el-button--default{
-            border: 1px solid #E0E0E0;
+          &.el-button--default {
+            border: 1px solid #e0e0e0;
             color: #686868;
-            background: #FFFFFF;
+            background: #ffffff;
           }
         }
       }

+ 5 - 5
apps/bigmember_pc/src/components/common/Empty.vue

@@ -26,7 +26,7 @@ export default {
     direction: {
       type: String,
       default: 'column',
-      validator (v) {
+      validator(v) {
         return ['row', 'column'].includes(v)
       }
     },
@@ -36,17 +36,17 @@ export default {
     },
     images: {
       type: String,
-      default () {
+      default() {
         return 'jy-back.png'
       }
     }
   },
   computed: {
     // 对row、column包装,避免与bootstrap类名冲突
-    directions () {
+    directions() {
       return `v-${this.direction}`
     },
-    imgURL () {
+    imgURL() {
       return getAssetsFile(`empty/${this.images}`)
     }
   }
@@ -100,7 +100,7 @@ export default {
   ::v-deep.el-icon-plus {
     font-weight: bold;
   }
-  .el-button [class*=el-icon-]+span {
+  .el-button [class*='el-icon-'] + span {
     margin-left: 9px;
   }
 }

+ 42 - 24
apps/bigmember_pc/src/components/common/Monitor.vue

@@ -1,19 +1,39 @@
 <template>
   <div class="monitor-page">
     <ul class="monitor-ul">
-      <li :class="{'first-bottom': showList.length && showList.includes(1)}" v-show="showList.length && showList.includes(1)">监控业主一旦发布与“我的订阅”相关的招标动态,会推送业主的招标项目、时间等公告信息。</li>
-      <li :class="{'border-2': !showList.includes(1)}" v-show="showList.length && showList.includes(2)" @click="$emit('monitorStatus')">查看监控动态</li>
+      <li
+        :class="{ 'first-bottom': showList.length && showList.includes(1) }"
+        v-show="showList.length && showList.includes(1)"
+      >
+        监控业主一旦发布与“我的订阅”相关的招标动态,会推送业主的招标项目、时间等公告信息。
+      </li>
+      <li
+        :class="{ 'border-2': !showList.includes(1) }"
+        v-show="showList.length && showList.includes(2)"
+        @click="$emit('monitorStatus')"
+      >
+        查看监控动态
+      </li>
       <li v-show="showList.length && showList.includes(3)">
         <div class="list-top" @click="monitorList">
           <span>查看监控列表</span>
           <i class="el-icon-arrow-right"></i>
         </div>
         <div class="list-center">
-          已监控 <span style="color: #2ABED1;font-weight: 700;">{{alreadyNum}}</span> 个,剩余 <span style="color: #2ABED1;font-weight: 700;">{{remainNum}}</span> 个
+          已监控
+          <span style="color: #2abed1; font-weight: 700">{{ alreadyNum }}</span>
+          个,剩余
+          <span style="color: #2abed1; font-weight: 700">{{ remainNum }}</span>
+          个
         </div>
         <div class="list-bottom" @click="monitorApply">申请监控更多业主></div>
       </li>
-      <li @click="$emit('monitorCancel')" v-show="showList.length && showList.includes(4)">取消监控</li>
+      <li
+        @click="$emit('monitorCancel')"
+        v-show="showList.length && showList.includes(4)"
+      >
+        取消监控
+      </li>
     </ul>
   </div>
 </template>
@@ -36,26 +56,24 @@ export default {
       default: 0
     }
   },
-  data () {
+  data() {
     return {
-      monitor: {
-      }
+      monitor: {}
     }
   },
   computed: {
     ...mapState({
-      info: state => state.user.info
+      info: (state) => state.user.info
     })
   },
-  mounted () {
-  },
+  mounted() {},
   methods: {
     // 查看监控列表
-    monitorList () {
+    monitorList() {
       window.open('/swordfish/page_big_pc/my_client')
     },
     // 申请监控更多业主
-    monitorApply () {
+    monitorApply() {
       if (this.info.vipStatus > 0) {
         this.$emit('showNeedSubmit')
       } else {
@@ -67,34 +85,34 @@ export default {
 </script>
 
 <style lang="scss" scoped>
-.monitor-page{
-  .monitor-ul{
+.monitor-page {
+  .monitor-ul {
     li {
       padding: 12px 0;
-      border-top: 1px solid #ECECEC;
+      border-top: 1px solid #ececec;
       font-size: 16px;
-      color: #1D1D1D;
+      color: #1d1d1d;
       cursor: pointer;
-      &:first-child{
+      &:first-child {
         border: none;
         padding: 0 0 12px;
         font-size: 14px;
         color: #686868;
       }
-      &.first-bottom{
+      &.first-bottom {
         padding: 0;
       }
-      &:last-child{
+      &:last-child {
         padding: 12px 0 0;
       }
-      &.border-2{
+      &.border-2 {
         border: none;
       }
-      .list-top{
+      .list-top {
         display: flex;
         justify-content: space-between;
         align-items: center;
-        color: #2ABED1;
+        color: #2abed1;
       }
       .list-center {
         margin: 8px 0;
@@ -107,9 +125,9 @@ export default {
         align-items: center;
         width: 100%;
         height: 32px;
-        color: #2ABED1;
+        color: #2abed1;
         font-size: 14px;
-        background-color: #EAF8FA;
+        background-color: #eaf8fa;
       }
     }
   }

+ 147 - 94
apps/bigmember_pc/src/components/common/Popper.vue

@@ -3,7 +3,12 @@
     <div class="tags-inputs">
       <div class="tag-input">
         <div class="tag-labels"></div>
-        <input type="text" class="clear-input" maxlength="5" oninput="this.value=this.value.replace(/\s+/g,'')">
+        <input
+          type="text"
+          class="clear-input"
+          maxlength="5"
+          oninput="this.value=this.value.replace(/\s+/g,'')"
+        />
         <div class="tag-placeholder">新增标签回车保存</div>
       </div>
       <div class="add-tag-button">添加并使用</div>
@@ -18,38 +23,46 @@
 
 <script>
 import { getEventTarget } from '@/utils/jq-help'
-import { getEntUserTags, renLingCustomerAddTags, customerAddLabel } from '@/api/modules'
+import {
+  getEntUserTags,
+  renLingCustomerAddTags,
+  customerAddLabel
+} from '@/api/modules'
 export default {
-  data () {
+  data() {
     return {
       datas: [],
       industry: ''
     }
   },
-  mounted () {
+  mounted() {
     this.initCollectEvent()
   },
   methods: {
-    tagsRenShow (data) {
+    tagsRenShow(data) {
       this.datas = data.data
       this.industry = data.industry ? data.industry : ''
       var top = data.liHeight * (data.i + 1) + 'px'
       const $ = this.$querySelector.bind(this)
       if (data.show) {
         // baiduEvent('列表页认领') // 百度统计代码
-        this.$querySelector('.tags-box-renling').slideToggle(function () {
-          window.renlingActiveTags = []
-          $('.tags-box-renling .tag-labels').empty()
-          $('.tags-box-renling .clear-input').val('')
-          $('.tags-box-renling .tags-list').find('.tags-item').removeClass('tags-active')
-          $('.tags-box-renling .tag-placeholder').show()
-        }).css({
-          top: top,
-          right: 0
-        })
+        this.$querySelector('.tags-box-renling')
+          .slideToggle(function () {
+            window.renlingActiveTags = []
+            $('.tags-box-renling .tag-labels').empty()
+            $('.tags-box-renling .clear-input').val('')
+            $('.tags-box-renling .tags-list')
+              .find('.tags-item')
+              .removeClass('tags-active')
+            $('.tags-box-renling .tag-placeholder').show()
+          })
+          .css({
+            top: top,
+            right: 0
+          })
       }
     },
-    initCollectEvent () {
+    initCollectEvent() {
       const _this = this
       const $ = this.$querySelector.bind(this)
       // 自定义标签
@@ -74,100 +87,134 @@ export default {
       })
       // 标签输入框失去焦点事件
       $('.tags-box-renling .tag-input .clear-input').blur(function () {
-        if ($('.tags-box-renling .tag-labels').children().length === 0 && $(this).val() === '') {
+        if (
+          $('.tags-box-renling .tag-labels').children().length === 0 &&
+          $(this).val() === ''
+        ) {
           $('.tags-box-renling .tag-placeholder').show()
         }
       })
       // 添加标签按钮事件
-      $('.tags-box-renling .tags-inputs .add-tag-button').on('click', function () {
-        var input = $('.tags-box-renling .tag-input .clear-input')
-        if (input.val().length >= 2 && input.val().length < 6) {
-          // ajax提交自定义标签
-          addTagsAjax(input.val())
+      $('.tags-box-renling .tags-inputs .add-tag-button').on(
+        'click',
+        function () {
+          var input = $('.tags-box-renling .tag-input .clear-input')
+          if (input.val().length >= 2 && input.val().length < 6) {
+            // ajax提交自定义标签
+            addTagsAjax(input.val())
+          }
         }
-      })
+      )
       // 点击确定按钮,绑定标签
-      $('.tags-box-renling .tags-footer .button-confirm').on('click', function () {
-        if (!$('.tags-box-renling').is(':hidden')) {
-          var lids = ''
-          var lname = ''
-          $('.tags-box-renling .tags-item.tags-active').each(function () {
-            if ($(this).attr('data-id')) {
-              if (lids !== '') {
-                lids += ','
-              }
-              if (lname !== '') {
-                lname += ','
+      $('.tags-box-renling .tags-footer .button-confirm').on(
+        'click',
+        function () {
+          if (!$('.tags-box-renling').is(':hidden')) {
+            var lids = ''
+            var lname = ''
+            $('.tags-box-renling .tags-item.tags-active').each(function () {
+              if ($(this).attr('data-id')) {
+                if (lids !== '') {
+                  lids += ','
+                }
+                if (lname !== '') {
+                  lname += ','
+                }
+                lids += $(this).attr('data-id')
+                lname += $(this).text()
               }
-              lids += $(this).attr('data-id')
-              lname += $(this).text()
+            })
+            var params = {
+              name: _this.datas,
+              mold: 1,
+              D: false,
+              label: lids,
+              industry: _this.industry
             }
-          })
-          var params = {
-            name: _this.datas,
-            mold: 1,
-            D: false,
-            label: lids,
-            industry: _this.industry
+            // 执行保存绑定标签操作
+            saveChooseTags(params, function () {
+              $('.tags-box-renling').slideToggle()
+            })
           }
-          // 执行保存绑定标签操作
-          saveChooseTags(params, function () {
-            $('.tags-box-renling').slideToggle()
+        }
+      )
+
+      $('.tags-box-renling .tags-footer .button-cancel').on(
+        'click',
+        function () {
+          $('.tags-box-renling').slideToggle(function () {
+            // 标签弹框消失时 清除上次选择的标签分类
+            window.renlingActiveTags = []
+            $('.tags-box-renling .tag-labels').empty()
+            $('.tags-box-renling .clear-input').val('')
+            $('.tags-box-renling .tags-list')
+              .find('.tags-item')
+              .removeClass('tags-active')
+            $('.tags-box-renling .tag-placeholder').show()
           })
         }
-      })
-
-      $('.tags-box-renling .tags-footer .button-cancel').on('click', function () {
-        $('.tags-box-renling').slideToggle(function () {
-          // 标签弹框消失时 清除上次选择的标签分类
-          window.renlingActiveTags = []
-          $('.tags-box-renling .tag-labels').empty()
-          $('.tags-box-renling .clear-input').val('')
-          $('.tags-box-renling .tags-list').find('.tags-item').removeClass('tags-active')
-          $('.tags-box-renling .tag-placeholder').show()
-        })
-      })
+      )
 
       window.renlingActiveTags = [] // 选中的自定义标签 作为全局变量使用
       // 解绑自定义标签
-      function deleteInputTag (item) {
+      function deleteInputTag(item) {
         var index = $(item).parent().attr('data-index')
         var id = $(item).parent().attr('data-id')
         window.renlingActiveTags.splice(index, 1)
         inputTagList()
-        $('.tags-box-renling .tags-item[data-id="' + id + '"]').removeClass('tags-active')
+        $('.tags-box-renling .tags-item[data-id="' + id + '"]').removeClass(
+          'tags-active'
+        )
       }
 
-      function inputTagList () {
+      function inputTagList() {
         var ht = ''
         $('.tags-box-renling .tag-labels').html(ht)
         window.renlingActiveTags.forEach(function (v, i) {
-          ht += '<span class="tag-label" data-index=' + i + ' data-id="' + v.lid + '">'
+          ht +=
+            '<span class="tag-label" data-index=' +
+            i +
+            ' data-id="' +
+            v.lid +
+            '">'
           ht += '<em>' + v.lname + '</em>'
           ht += '<i class="tag-close"></i>'
           ht += '</span>'
         })
         $('.tags-box-renling .tag-labels').html(ht)
-        $('.tags-box-renling .tag-labels').off('click').on('click', '.tag-close', function (e) {
-          const target = getEventTarget(e)
-          deleteInputTag(target)
-        })
-        if ($('.tags-box-renling .tag-labels').children('.tag-label').length > 0) {
+        $('.tags-box-renling .tag-labels')
+          .off('click')
+          .on('click', '.tag-close', function (e) {
+            const target = getEventTarget(e)
+            deleteInputTag(target)
+          })
+        if (
+          $('.tags-box-renling .tag-labels').children('.tag-label').length > 0
+        ) {
           $('.tags-box-renling .tag-placeholder').hide()
         }
         checkTagDisabled()
       }
 
       // 渲染标签列表数据
-      function renderTagsList (data) {
+      function renderTagsList(data) {
         if (data && data.length > 0) {
           var ht = ''
           data.forEach(function (v, i) {
-            ht += '<span class="tags-item" data-count=' + v.count + ' data-id=' + v.lid + '>' + v.lanme + '</span>'
+            ht +=
+              '<span class="tags-item" data-count=' +
+              v.count +
+              ' data-id=' +
+              v.lid +
+              '>' +
+              v.lanme +
+              '</span>'
           })
           $('.tags-box-renling .tags-list').html(ht)
           window.renlingActiveTags.forEach(function (s, j) {
-            $('.tags-box-renling .tags-list .tags-item[data-id="' + s.lid + '"]').addClass('tags-active')
+            $(
+              '.tags-box-renling .tags-list .tags-item[data-id="' + s.lid + '"]'
+            ).addClass('tags-active')
           })
           $('.tags-box-renling .tags-item').click(function (e) {
             e.stopPropagation()
@@ -195,8 +242,8 @@ export default {
       }
 
       // 获取用户自定义标签
-      function getUserTags () {
-        getEntUserTags().then(r => {
+      function getUserTags() {
+        getEntUserTags().then((r) => {
           if (r.error_code === 0 && Array.isArray(r.data)) {
             renderTagsList(r.data.reverse())
           }
@@ -205,8 +252,8 @@ export default {
 
       _this.getUserTags = getUserTags
       // 添加标签后认领接口
-      function saveChooseTags (params, callback) {
-        renLingCustomerAddTags(params).then(r => {
+      function saveChooseTags(params, callback) {
+        renLingCustomerAddTags(params).then((r) => {
           if (r.error_code === 0 && r.data) {
             _this.$toast('认领成功!')
             _this.$emit('getClientList', true)
@@ -220,8 +267,8 @@ export default {
       }
 
       // 新增标签
-      function addTagsAjax (name) {
-        customerAddLabel({ name }).then(r => {
+      function addTagsAjax(name) {
+        customerAddLabel({ name }).then((r) => {
           if (r.data) {
             $('.tags-box-renling .tag-input .clear-input').val('')
             // 添加标签成功后 绑定标签
@@ -238,13 +285,17 @@ export default {
         })
       }
 
-      function checkTagDisabled () {
+      function checkTagDisabled() {
         if (window.renlingActiveTags.length >= 3) {
           // 禁用标签
-          $('.tags-box-renling .tags-list').find('.tags-item:not(.tags-active)').addClass('disabled')
+          $('.tags-box-renling .tags-list')
+            .find('.tags-item:not(.tags-active)')
+            .addClass('disabled')
         } else {
           // 解除禁用
-          $('.tags-box-renling .tags-list').find('.disabled').removeClass('disabled')
+          $('.tags-box-renling .tags-list')
+            .find('.disabled')
+            .removeClass('disabled')
         }
       }
       _this.getUserTags()
@@ -261,8 +312,8 @@ export default {
   right: 0;
   width: 332px;
   padding: 20px 16px;
-  background: #FFFFFF;
-  border: 1px solid #ECECEC;
+  background: #ffffff;
+  border: 1px solid #ececec;
   box-sizing: border-box;
   border-radius: 8px;
   box-shadow: 0px 0px 28px 0px rgba(0, 0, 0, 0.08);
@@ -296,7 +347,7 @@ export default {
 
 .tags-inputs .tag-input::-webkit-scrollbar-thumb {
   border-radius: 4px;
-  background-color: #ECECEC;
+  background-color: #ececec;
 }
 
 .tag-input > .tag-labels {
@@ -328,11 +379,11 @@ export default {
   line-height: 1.2;
   margin: 5px;
   cursor: pointer;
-  border: 1px solid #ECECEC;
+  border: 1px solid #ececec;
   box-sizing: border-box;
   border-radius: 4px;
-  background: #F5F6F7;
-  color: #1D1D1D;
+  background: #f5f6f7;
+  color: #1d1d1d;
 }
 
 .tag-close {
@@ -366,7 +417,7 @@ export default {
 
 .tags-box-renling .tags-list::-webkit-scrollbar-thumb {
   border-radius: 4px;
-  background-color: #ECECEC;
+  background-color: #ececec;
 }
 
 .tags-box-renling .tags-list .tags-item {
@@ -377,27 +428,29 @@ export default {
   height: 24px;
   line-height: 24px;
   border-radius: 4px;
-  border: 1px solid #ECECEC;
+  border: 1px solid #ececec;
   box-sizing: border-box;
-  color: #1D1D1D;
+  color: #1d1d1d;
   text-align: center;
   font-size: 14px;
-  background: #F5F6F7;
+  background: #f5f6f7;
   cursor: pointer;
 }
 
 .tags-box-renling .tags-list .tags-active {
   padding: 0 8px 0 24px !important;
-  background: #2CB7CA url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADPSURBVHgB7ZNREcIwDIYjYRImYRLmZHPAHAwHlUAdIAEJSKiESgjpEY7Qg7uFdXnKd5eXdMmfpX8BHMdxDEDEgSJQ9GANiU4UGZ9cwBISXPFNGWIAKyrxZLr+suq/xdkwV4oFlFBNR3ET4veS0zaJosGoqOtZ8EVUi4tGWbM+rklC/Ax7KH++dY18ZbmZuGi8iKbhxzdTJT5DSyo/LNXZSZxljV80A3T4aayR86vIJTzyjX8xZTATF0NIU24y5xFDSFNGU3ExxNzsmTmO4zAPYEiZdz83IV0AAAAASUVORK5CYII=) no-repeat 6px center !important;
+  background: #2cb7ca
+    url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADPSURBVHgB7ZNREcIwDIYjYRImYRLmZHPAHAwHlUAdIAEJSKiESgjpEY7Qg7uFdXnKd5eXdMmfpX8BHMdxDEDEgSJQ9GANiU4UGZ9cwBISXPFNGWIAKyrxZLr+suq/xdkwV4oFlFBNR3ET4veS0zaJosGoqOtZ8EVUi4tGWbM+rklC/Ax7KH++dY18ZbmZuGi8iKbhxzdTJT5DSyo/LNXZSZxljV80A3T4aayR86vIJTzyjX8xZTATF0NIU24y5xFDSFNGU3ExxNzsmTmO4zAPYEiZdz83IV0AAAAASUVORK5CYII=)
+    no-repeat 6px center !important;
   color: #fff !important;
   background-size: 16px !important;
   border: 0 !important;
 }
 
 .tags-item.disabled {
-  color: #8E8E8E !important;
-  border-color: #ECECEC!important;
-  cursor: not-allowed!important;
+  color: #8e8e8e !important;
+  border-color: #ececec !important;
+  cursor: not-allowed !important;
 }
 
 .tag-label em {
@@ -438,7 +491,7 @@ export default {
   border-color: #2cb7ca;
 }
 
-.custom-toast .toast-container{
+.custom-toast .toast-container {
   position: fixed;
   top: 50%;
   left: 50%;

+ 2 - 4
apps/bigmember_pc/src/components/common/SpecCard.vue

@@ -7,11 +7,10 @@
       </slot>
     </span>
     <slot name="default"></slot>
-</div>
+  </div>
 </template>
 
 <script>
-
 export default {
   name: 'spec-card-active',
   props: {
@@ -38,11 +37,10 @@ export default {
     activeClass: {
       type: String,
       default: ''
-
     }
   },
   methods: {
-    clickCard () {
+    clickCard() {
       this.$emit('onClick')
     }
   }

+ 67 - 27
apps/bigmember_pc/src/components/common/TabHeader.vue

@@ -2,17 +2,56 @@
   <div class="bid-tab-header">
     <div class="tab-header-container">
       <div class="tab-content" v-if="actived === 'rival' || actived === 'ent'">
-        <router-link class="tab-link" :class="actived === 'ent' ? 'active' : ''" to="/free/ent_follow" replace>企业情报监控</router-link>
-        <router-link class="tab-link" :class="actived === 'rival' ? 'active' : ''" @click.native="goPotentialR" to="" replace>潜在竞争对手/合作伙伴挖掘</router-link>
+        <router-link
+          class="tab-link"
+          :class="actived === 'ent' ? 'active' : ''"
+          to="/free/ent_follow"
+          replace
+          >企业情报监控</router-link
+        >
+        <router-link
+          class="tab-link"
+          :class="actived === 'rival' ? 'active' : ''"
+          @click.native="goPotentialR"
+          to=""
+          replace
+          >潜在竞争对手/合作伙伴挖掘</router-link
+        >
       </div>
-      <div class="tab-content" v-else-if="actived === 'cor' || actived === 'client'">
-        <router-link class="tab-link" :class="actived === 'cor' ? 'active' : ''" to="" @click.native="toPotential" replace>潜在客户挖掘</router-link>
-        <router-link class="tab-link" :class="actived === 'client' ? 'active' : ''" to="/my_client" replace>业主监控</router-link>
+      <div
+        class="tab-content"
+        v-else-if="actived === 'cor' || actived === 'client'"
+      >
+        <router-link
+          class="tab-link"
+          :class="actived === 'cor' ? 'active' : ''"
+          to=""
+          @click.native="toPotential"
+          replace
+          >潜在客户挖掘</router-link
+        >
+        <router-link
+          class="tab-link"
+          :class="actived === 'client' ? 'active' : ''"
+          to="/my_client"
+          replace
+          >业主监控</router-link
+        >
       </div>
     </div>
-    <common-dialog @close="showNoPower7 = false" :show-close="true" center custom-class="monitor-class" width="380px" :visible="showNoPower7" title="暂无权限">
+    <common-dialog
+      @close="showNoPower7 = false"
+      :show-close="true"
+      center
+      custom-class="monitor-class"
+      width="380px"
+      :visible="showNoPower7"
+      title="暂无权限"
+    >
       <template #footer>
-        <button class="action-button confirm" @click="getMoreInfo">了解更多</button>
+        <button class="action-button confirm" @click="getMoreInfo">
+          了解更多
+        </button>
       </template>
       结合历史招标采购信息、用户业务范围,生成潜在客户名录,获取销售机会。
     </common-dialog>
@@ -37,20 +76,20 @@ export default {
   },
   computed: {
     ...mapState({
-      power: state => state.user.info.power
+      power: (state) => state.user.info.power
     })
   },
-  data () {
+  data() {
     return {
       showNoPower7: false
     }
   },
   methods: {
-    getMoreInfo () {
+    getMoreInfo() {
       this.showNoPower7 = false
       location.href = '/big/page/yw'
     },
-    goPotentialR () {
+    goPotentialR() {
       if (this.power.indexOf(8) === -1) {
         this.showNoPowerMessageTip()
         // MessageBox.confirm('您未购买此服务,如需使用请联系您的销售人员或客服升级套餐,谢谢!', '提示信息', {
@@ -67,7 +106,7 @@ export default {
         this.$router.replace('/potential_rival_list/r')
       }
     },
-    toPotential () {
+    toPotential() {
       if (this.power.indexOf(7) === -1) {
         // this.showNoPowerMessageTip()
         this.showNoPower7 = true
@@ -80,44 +119,44 @@ export default {
 }
 </script>
 <style lang="scss" scoped>
-::v-deep{
-  .dialog-footer{
+::v-deep {
+  .dialog-footer {
     justify-content: center;
   }
 }
 
-.action-button.confirm{
+.action-button.confirm {
   flex: none;
   width: 132px;
 }
 </style>
 <style lang="scss">
-.bid-tab-header{
+.bid-tab-header {
   position: absolute;
   top: 100px;
   width: 100%;
-  .tab-header-container{
+  .tab-header-container {
     width: 1200px;
     margin: 0 auto;
   }
-  .tab-content{
+  .tab-content {
     display: flex;
     align-items: center;
-    .tab-link{
+    .tab-link {
       margin-right: 48px;
       font-size: 18px;
       line-height: 28px;
       color: rgba(255, 255, 255, 0.8);
       text-decoration: none;
-      &.active{
+      &.active {
         position: relative;
         font-size: 30px;
         line-height: 36px;
         text-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15);
         color: #fff;
         font-weight: bold;
-        &::after{
-          content: "";
+        &::after {
+          content: '';
           position: absolute;
           bottom: -8px;
           left: 50%;
@@ -125,7 +164,8 @@ export default {
           height: 3px;
           border-radius: 3px;
           background-color: #fff;
-          transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
+          transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1),
+            -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
           list-style: none;
           z-index: 1;
           transform: translateX(-50%);
@@ -134,10 +174,10 @@ export default {
     }
   }
 }
-.custom-message-box{
-  width: 380px!important;
+.custom-message-box {
+  width: 380px !important;
   border-radius: 8px;
-  .custom-confirm-btn{
+  .custom-confirm-btn {
     margin-top: 12px;
     width: 132px;
     height: 36px;
@@ -147,7 +187,7 @@ export default {
     font-size: 16px;
   }
   .el-message-box__message,
-  .message-text{
+  .message-text {
     font-size: 14px;
     color: #686868;
     line-height: 24px;

+ 10 - 8
apps/bigmember_pc/src/components/common/Tips.vue

@@ -1,7 +1,9 @@
 <template>
   <div class="more-ent">
     <div class="l-words"><i class="el-icon-jy-tip"></i>{{ tipText }}</div>
-    <el-button class="r-btn" type="plain" @click="openCustomer">联系客服</el-button>
+    <el-button class="r-btn" type="plain" @click="openCustomer"
+      >联系客服</el-button
+    >
   </div>
 </template>
 
@@ -17,11 +19,11 @@ export default {
       default: '解锁关注更多'
     }
   },
-  mounted () {
+  mounted() {
     window.openCustomer = this.openCustomer
   },
   methods: {
-    openCustomer () {
+    openCustomer() {
       this.contactCustomer(this)
     }
   }
@@ -36,13 +38,13 @@ export default {
   width: 100%;
   height: 40px;
   padding: 0 20px;
-  background: rgba(51,182,202,0.1);
+  background: rgba(51, 182, 202, 0.1);
   border-radius: 4px;
   .l-words {
     display: flex;
     align-items: center;
     font-size: 14px;
-    color: #2CB7CA;
+    color: #2cb7ca;
     line-height: 22px;
     .el-icon-jy-tip {
       margin-right: 9px;
@@ -51,17 +53,17 @@ export default {
   ::v-deep .r-btn {
     margin-left: 83px;
     padding: 3px 20px;
-    border: 1px solid #2CB7CA;
+    border: 1px solid #2cb7ca;
     background: none;
     span {
       display: block;
       font-size: 14px;
-      color: #2CB7CA;
+      color: #2cb7ca;
       line-height: 22px;
     }
   }
   .r-btn:hover {
-    background: rgba(44,183,202,0.10);
+    background: rgba(44, 183, 202, 0.1);
   }
 }
 </style>

+ 3 - 3
apps/bigmember_pc/src/components/common/WorkspaceContentCard.vue

@@ -17,10 +17,10 @@
 <script>
 export default {
   name: 'workSpaceContentCard',
-  data () {
+  data() {
     return {}
   },
-  created () {},
+  created() {},
   methods: {}
 }
 </script>
@@ -37,7 +37,7 @@ export default {
   .work-space-content-card-title {
     font-size: 24px;
     line-height: 36px;
-    color: #1D1D1D;
+    color: #1d1d1d;
   }
   .work-space-content-bd {
     width: 100%;

+ 8 - 13
apps/bigmember_pc/src/components/common/classCard.vue

@@ -7,7 +7,7 @@
     <div class="content">
       <div class="left">
         <div class="img">
-          <img :src="info.imgurl" alt="">
+          <img :src="info.imgurl" alt="" />
         </div>
         <div class="info">
           <div class="item">
@@ -56,20 +56,16 @@ export default {
       }
     }
   },
-  data () {
-    return {
-
-    }
+  data() {
+    return {}
   },
-  created () { },
-  mounted () { },
-  beforeDestroy () { },
+  created() {},
+  mounted() {},
+  beforeDestroy() {},
   filters: {},
   computed: {},
   watch: {},
-  methods: {
-
-  }
+  methods: {}
 }
 </script>
 
@@ -99,7 +95,6 @@ export default {
     border-bottom: 3px solid #f7f7f7;
     font-size: 14px;
   }
-
 }
 
 .content {
@@ -110,7 +105,7 @@ export default {
   min-height: 106px;
   padding-top: 24px;
   padding: 24px 0;
-  border-bottom: 1px solid #E0E0E0;
+  border-bottom: 1px solid #e0e0e0;
 
   .left {
     width: 970px;

+ 55 - 54
apps/bigmember_pc/src/components/common/informationSuccess.vue

@@ -1,20 +1,21 @@
 <template>
-    <el-dialog
-      title="温馨提示"
-      :visible.sync="passVisible"
-      width="380px"
-      :show-close="false"
-      :lock-scroll="false"
-      custom-class="no-pass-alert"
-      :close-on-click-modal="false"
-      center>
-      <!-- <span>恭喜留资成功,您可拨打客服电话 400-108-6670 或在线<i @click="openCustomer">联系客服</i>开通,谢谢!</span> -->
-      <span>恭喜留资成功,客户经理将在工作日24h内联系您,谢谢!</span>
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="know">我知道了</el-button>
-      </span>
-    </el-dialog>
-  </template>
+  <el-dialog
+    title="温馨提示"
+    :visible.sync="passVisible"
+    width="380px"
+    :show-close="false"
+    :lock-scroll="false"
+    custom-class="no-pass-alert"
+    :close-on-click-modal="false"
+    center
+  >
+    <!-- <span>恭喜留资成功,您可拨打客服电话 400-108-6670 或在线<i @click="openCustomer">联系客服</i>开通,谢谢!</span> -->
+    <span>恭喜留资成功,客户经理将在工作日24h内联系您,谢谢!</span>
+    <span slot="footer" class="dialog-footer">
+      <el-button type="primary" @click="know">我知道了</el-button>
+    </span>
+  </el-dialog>
+</template>
 
 <script>
 import { Dialog, Button } from 'element-ui'
@@ -23,19 +24,19 @@ export default {
     [Dialog.name]: Dialog,
     [Button.name]: Button
   },
-  data () {
+  data() {
     return {
       passVisible: false
     }
   },
-  mounted () {
+  mounted() {
     window.openCustomer = this.openCustomer
   },
   methods: {
-    openCustomer () {
+    openCustomer() {
       this.contactCustomer(this)
     },
-    know () {
+    know() {
       this.passVisible = false
       this.$emit('know') // 点击我知道了回调
     }
@@ -43,44 +44,44 @@ export default {
 }
 </script>
 
-  <style lang="scss" scoped>
-  ::v-deep .no-pass-alert {
+<style lang="scss" scoped>
+::v-deep .no-pass-alert {
+  padding: 0;
+  padding: 32px;
+  .el-dialog__header {
     padding: 0;
-    padding: 32px;
-    .el-dialog__header {
-      padding: 0;
-      .el-dialog__title {
-        font-size: 18px;
-        color: $color-input--default;
-        line-height: 28px;
-      }
+    .el-dialog__title {
+      font-size: 18px;
+      color: $color-input--default;
+      line-height: 28px;
     }
-    .el-dialog__body {
-      text-align: center;
-      padding: 0;
-      padding: 20px 0 32px 0;
-      span {
-        font-size: 14px;
-        color: #686868;
-        line-height: 22px;
-        i {
-          color: $color_main;
-          cursor: pointer;
-        }
+  }
+  .el-dialog__body {
+    text-align: center;
+    padding: 0;
+    padding: 20px 0 32px 0;
+    span {
+      font-size: 14px;
+      color: #686868;
+      line-height: 22px;
+      i {
+        color: $color_main;
+        cursor: pointer;
       }
     }
-    .el-dialog__footer {
-      padding: 0;
-      .el-button--primary {
-        background: $color_main;
-        padding: 8px 34px;
-        border: none;
-        span {
-          font-size: 16px;
-          line-height: 20px;
-          color: #fff;
-        }
+  }
+  .el-dialog__footer {
+    padding: 0;
+    .el-button--primary {
+      background: $color_main;
+      padding: 8px 34px;
+      border: none;
+      span {
+        font-size: 16px;
+        line-height: 20px;
+        color: #fff;
       }
     }
   }
-  </style>
+}
+</style>

+ 14 - 6
apps/bigmember_pc/src/components/common/noPass.vue

@@ -7,10 +7,18 @@
     :show-close="false"
     :lock-scroll="false"
     custom-class="no-pass-alert"
-    center>
-    <span>您尚未购买此服务,如需使用,您可拨打客服电话 400-108-6670 或在线<i @click="openCustomer">联系客服</i>,谢谢!</span>
+    center
+  >
+    <span
+      >您尚未购买此服务,如需使用,您可拨打客服电话 400-108-6670 或在线<i
+        @click="openCustomer"
+        >联系客服</i
+      >,谢谢!</span
+    >
     <span slot="footer" class="dialog-footer">
-      <el-button type="primary" @click="passVisible = false">我知道了</el-button>
+      <el-button type="primary" @click="passVisible = false"
+        >我知道了</el-button
+      >
     </span>
   </el-dialog>
 </template>
@@ -22,16 +30,16 @@ export default {
     [Dialog.name]: Dialog,
     [Button.name]: Button
   },
-  data () {
+  data() {
     return {
       passVisible: false
     }
   },
-  mounted () {
+  mounted() {
     window.openCustomer = this.openCustomer
   },
   methods: {
-    openCustomer () {
+    openCustomer() {
       this.contactCustomer(this)
     }
   }

+ 59 - 40
apps/bigmember_pc/src/components/common/popupBox.vue

@@ -1,12 +1,22 @@
 <template>
   <div id="popupBox">
     <div class="warn_box" v-if="appendtoBody">
-      <el-dialog custom-class="popupBox_" :title="title" :visible.sync="isshow" :lock-scroll="false" :show-close="false" v-component-change-mount="{ selector: '.drawer-dialog' }"
-        :close-on-click-modal="false"  center >
+      <el-dialog
+        custom-class="popupBox_"
+        :title="title"
+        :visible.sync="isshow"
+        :lock-scroll="false"
+        :show-close="false"
+        v-component-change-mount="{ selector: '.drawer-dialog' }"
+        :close-on-click-modal="false"
+        center
+      >
         <div class="conts limit-footer" v-if="btnNum == 1">
           <p>{{ text }}</p>
           <span slot="footer" class="dialog-footer">
-            <el-button type="primary" class="d_active" @click="knowed">我知道了</el-button>
+            <el-button type="primary" class="d_active" @click="knowed"
+              >我知道了</el-button
+            >
           </span>
         </div>
         <div class="conts" v-if="btnNum == 2">
@@ -14,19 +24,31 @@
             <p>{{ text }}</p>
           </div>
           <span slot="footer" class="dialog-footer">
-            <el-button type="primary" @click="confirmed" :loading="isLoading">确 定</el-button>
+            <el-button type="primary" @click="confirmed" :loading="isLoading"
+              >确 定</el-button
+            >
             <el-button @click="canceled">取 消</el-button>
           </span>
         </div>
       </el-dialog>
     </div>
     <div class="warn_box" v-else>
-      <el-dialog custom-class="popupBox_" :title="title" :visible.sync="isshow" :lock-scroll="false" :show-close="false"
-        :close-on-click-modal="false" center v-component-change-mount="{ selector: '.drawer-dialog' }">
+      <el-dialog
+        custom-class="popupBox_"
+        :title="title"
+        :visible.sync="isshow"
+        :lock-scroll="false"
+        :show-close="false"
+        :close-on-click-modal="false"
+        center
+        v-component-change-mount="{ selector: '.drawer-dialog' }"
+      >
         <div class="conts limit-footer" v-if="btnNum == 1">
           <p>{{ text }}</p>
           <span slot="footer" class="dialog-footer">
-            <el-button type="primary" class="d_active" @click="knowed">我知道了</el-button>
+            <el-button type="primary" class="d_active" @click="knowed"
+              >我知道了</el-button
+            >
           </span>
         </div>
         <div class="conts" v-if="btnNum == 2">
@@ -34,14 +56,15 @@
             <p>{{ text }}</p>
           </div>
           <span slot="footer" class="dialog-footer">
-            <el-button type="primary" @click="confirmed" :loading="isLoading">确 定</el-button>
+            <el-button type="primary" @click="confirmed" :loading="isLoading"
+              >确 定</el-button
+            >
             <el-button @click="canceled">取 消</el-button>
           </span>
         </div>
       </el-dialog>
     </div>
   </div>
-
 </template>
 <script>
 import { Dialog, Button } from 'element-ui'
@@ -73,63 +96,60 @@ export default {
       type: Boolean,
       default: false
     }
-
   },
-  data () {
+  data() {
     return {
       isshow: false,
       isLoading: false
-
     }
   },
-  computed: {
-
-  },
+  computed: {},
   methods: {
-    confirmed () {
+    confirmed() {
       this.confirmedCallback()
     },
-    canceled () {
+    canceled() {
       this.isshow = false
     },
-    knowed () {
+    knowed() {
       this.isshow = false
     }
   }
 }
 </script>
 <style lang="scss" scoped>
- ::v-deep .popupBox_{
-    width: 380px !important;
-    min-height: 220px !important;
-    position: absolute;
-    top: 50%;
-    left: 50%;
-    margin-left: -190px;
-    margin-top: -134px !important;
-    border-radius: 6px;
- .el-button{
+::v-deep .popupBox_ {
+  width: 380px !important;
+  min-height: 220px !important;
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  margin-left: -190px;
+  margin-top: -134px !important;
+  border-radius: 6px;
+  .el-button {
     padding: 9px 50px;
     margin-top: 40px;
     border-radius: 6px;
-  }.el-button span {
+  }
+  .el-button span {
     font-size: 16px;
   }
-   .el-dialog__title {
+  .el-dialog__title {
     color: #1d1d1d;
   }
-   .el-dialog__header {
+  .el-dialog__header {
     padding: 32px 20px 0 20px;
   }
- .el-dialog__body {
+  .el-dialog__body {
     text-align: center;
     font-size: 14px;
     line-height: 24px;
     color: #686868;
   }
-  }
-  ::v-deep #popupBox {
-   .warn_box .el-dialog {
+}
+::v-deep #popupBox {
+  .warn_box .el-dialog {
     width: 380px !important;
     min-height: 220px !important;
     position: absolute;
@@ -145,24 +165,23 @@ export default {
     border-radius: 6px;
   }
 
-   .warn_box .el-dialog .el-button span {
+  .warn_box .el-dialog .el-button span {
     font-size: 16px;
   }
 
-   .el-dialog__title {
+  .el-dialog__title {
     color: #1d1d1d;
   }
 
-   .warn_box .el-dialog .el-dialog__header {
+  .warn_box .el-dialog .el-dialog__header {
     padding: 32px 20px 0 20px;
   }
 
-   .warn_box .el-dialog .el-dialog__body {
+  .warn_box .el-dialog .el-dialog__body {
     text-align: center;
     font-size: 14px;
     line-height: 24px;
     color: #686868;
   }
-
 }
 </style>

+ 16 - 12
apps/bigmember_pc/src/components/common/tabs.vue

@@ -1,8 +1,13 @@
 <template>
   <div>
     <div class="tabs">
-      <div class="tab_item" v-for="(item, index) in list" :key="index" :class="{ active: active === index }"
-        @click="tab_click(item, index)">
+      <div
+        class="tab_item"
+        v-for="(item, index) in list"
+        :key="index"
+        :class="{ active: active === index }"
+        @click="tab_click(item, index)"
+      >
         <div class="text">
           {{ item.name }}
           <div class="line" v-show="active === index"></div>
@@ -24,20 +29,19 @@ export default {
       }
     }
   },
-  data () {
+  data() {
     return {
       active: 0
-
     }
   },
-  created () { },
-  mounted () { },
-  beforeDestroy () { },
+  created() {},
+  mounted() {},
+  beforeDestroy() {},
   filters: {},
   computed: {},
   watch: {},
   methods: {
-    tab_click (item, index) {
+    tab_click(item, index) {
       if (index === this.active) {
         return
       }
@@ -48,12 +52,12 @@ export default {
 }
 </script>
 
-<style lang='scss' scoped>
+<style lang="scss" scoped>
 .tabs {
   display: flex;
 }
-.tab_item.active .text{
-  color: #2ABED1;
+.tab_item.active .text {
+  color: #2abed1;
 }
 .tab_item {
   padding: 12px 20px;
@@ -66,7 +70,7 @@ export default {
     .line {
       width: 100%;
       height: 2px;
-      background-color: #2ABED1;
+      background-color: #2abed1;
       position: relative;
       top: 10px;
     }

+ 103 - 69
apps/bigmember_pc/src/components/contact-info/ContactInfo.vue

@@ -1,39 +1,62 @@
 <template>
   <div class="contact">
-    <div class="d-title" :class="{unit: titlename === '采购单位通讯录'}">
+    <div class="d-title" :class="{ unit: titlename === '采购单位通讯录' }">
       <span>
         {{ titlename }}
         <!-- <span class="data_length">{{ total }}</span> -->
       </span>
       <div class="d-right">
-        <el-input @keyup.enter.native="getNewData" maxlength="50" class="d-r-ipt" v-model="searchText" placeholder="输入联系人姓名或来源"></el-input>
+        <el-input
+          @keyup.enter.native="getNewData"
+          maxlength="50"
+          class="d-r-ipt"
+          v-model="searchText"
+          placeholder="输入联系人姓名或来源"
+        ></el-input>
         <el-button @click="getNewData" class="d-r-search">搜索</el-button>
       </div>
     </div>
-    <div class="d-content" v-if="showContact && (currentShowList&&currentShowList.length>0)">
+    <div
+      class="d-content"
+      v-if="showContact && currentShowList && currentShowList.length > 0"
+    >
       <table>
         <thead>
-        <tr>
-          <td>序号</td>
-          <td>联系人</td>
-          <td>联系方式</td>
-          <td>来源</td>
-          <td>发布时间</td>
-        </tr>
+          <tr>
+            <td>序号</td>
+            <td>联系人</td>
+            <td>联系方式</td>
+            <td>来源</td>
+            <td>发布时间</td>
+          </tr>
         </thead>
         <tbody>
-        <tr v-for="(item,index) in currentShowList" :key="index">
-          <td>{{ (currentPage - 1) * pageSize + index + 1 }}</td>
-          <td><span v-if="item.persion">{{ item.persion }}</span></td>
-          <td><span v-if="item.contacts">{{ item.contacts }}</span></td>
-          <td :class="item.source==='企业公示'?'noclick':''">
-            <div style="display:flex">
-              <span class="source-style" :class="item.source==='企业公示'?'source-red':''" v-if="item.source"> {{ item.source }} </span>
-              <div style="flex:1" @click="toDetail(item.id)">{{ item.projectname || '--' }}</div>
-            </div>
-          </td>
-          <td><span>{{ item.date || '--' }}</span></td>
-        </tr>
+          <tr v-for="(item, index) in currentShowList" :key="index">
+            <td>{{ (currentPage - 1) * pageSize + index + 1 }}</td>
+            <td>
+              <span v-if="item.persion">{{ item.persion }}</span>
+            </td>
+            <td>
+              <span v-if="item.contacts">{{ item.contacts }}</span>
+            </td>
+            <td :class="item.source === '企业公示' ? 'noclick' : ''">
+              <div style="display: flex">
+                <span
+                  class="source-style"
+                  :class="item.source === '企业公示' ? 'source-red' : ''"
+                  v-if="item.source"
+                >
+                  {{ item.source }}
+                </span>
+                <div style="flex: 1" @click="toDetail(item.id)">
+                  {{ item.projectname || '--' }}
+                </div>
+              </div>
+            </td>
+            <td>
+              <span>{{ item.date || '--' }}</span>
+            </td>
+          </tr>
         </tbody>
       </table>
       <div class="pages" v-if="total > 0">
@@ -53,10 +76,13 @@
       </div>
     </div>
     <!-- 搜索 重构dom img会有短暂白底占位因此不使用v-else使用v-show -->
-    <div class="nodata" v-show="!showContact || (!currentShowList || currentShowList.length === 0)">
-      <Empty  images="jy-back.png" style="margin-bottom: 0;">
-        <div slot="default" style="text-align:center">
-          <span>{{emptyText}}</span>
+    <div
+      class="nodata"
+      v-show="!showContact || !currentShowList || currentShowList.length === 0"
+    >
+      <Empty images="jy-back.png" style="margin-bottom: 0">
+        <div slot="default" style="text-align: center">
+          <span>{{ emptyText }}</span>
         </div>
       </Empty>
     </div>
@@ -94,7 +120,7 @@ export default {
       default: ''
     }
   },
-  data () {
+  data() {
     return {
       showContact: false,
       total: 0,
@@ -107,34 +133,39 @@ export default {
     }
   },
   watch: {
-    entName (newval, oldVal) {
+    entName(newval, oldVal) {
       this.getContactList()
     }
   },
   computed: {
     ...mapState({
-      userInfo: state => state.user.info
+      userInfo: (state) => state.user.info
     }),
-    currentShowList () {
-      return this.allList.slice((this.currentPage - 1) * this.pageSize, this.currentPage * this.pageSize)
+    currentShowList() {
+      return this.allList.slice(
+        (this.currentPage - 1) * this.pageSize,
+        this.currentPage * this.pageSize
+      )
     }
   },
-  created () {
+  created() {
     this.getContactList()
   },
-  mounted () {
-  },
+  mounted() {},
   methods: {
-    getNewData () {
+    getNewData() {
       if (this.showContact) {
-        this.allList = this.allSpareList.filter(item => {
+        this.allList = this.allSpareList.filter((item) => {
           if (!item.projectname) {
             item.projectname = ''
           }
           if (!item.persion) {
             item.persion = ''
           }
-          return item.projectname.indexOf(this.searchText) !== -1 || item.persion.indexOf(this.searchText) !== -1
+          return (
+            item.projectname.indexOf(this.searchText) !== -1 ||
+            item.persion.indexOf(this.searchText) !== -1
+          )
         })
         this.total = this.allList.length
       }
@@ -146,7 +177,7 @@ export default {
       }
       this.currentPage = 1
     },
-    async getContactList () {
+    async getContactList() {
       if (!this.entName) return
       const params = {}
       if (this.name === 'buyer') {
@@ -158,7 +189,10 @@ export default {
       }
       let res = {}
       if (this.name === 'buyer') {
-        if (this.userInfo.memberStatus > 0 && this.userInfo.power.indexOf(5) > -1) {
+        if (
+          this.userInfo.memberStatus > 0 &&
+          this.userInfo.power.indexOf(5) > -1
+        ) {
           // 大会员用户采购单位通讯录
           res = await getBuyerHistoryContact(params)
         } else {
@@ -193,22 +227,23 @@ export default {
         this.showContact = false
       }
     },
-    handleSizeChange (val) {
+    handleSizeChange(val) {
       this.pageSize = val
       this.currentPage = 1
     },
-    handleCurrentChange (currentPage) {
+    handleCurrentChange(currentPage) {
       this.currentPage = currentPage
     },
-    toDetail (id) {
+    toDetail(id) {
       if (!id) return
       window.open(`/nologin/content/${id}.html`)
     },
-    scrollViewComponent () {
+    scrollViewComponent() {
       // 判断有无需要滚动到通讯录组件锚点位置的参数 有则在 通讯录组件加载完后滚动到可视区位置
       if (this.position === 'contact' && this.showContact) {
         this.$nextTick(() => {
-          document.documentElement.scrollTop = document.querySelector('.contact').offsetTop
+          document.documentElement.scrollTop =
+            document.querySelector('.contact').offsetTop
         })
       }
     }
@@ -230,31 +265,31 @@ export default {
     color: #1d1d1d;
     line-height: 28px;
     font-family: Microsoft YaHei, Microsoft YaHei-Regular;
-    .data_length{
+    .data_length {
       margin-left: 4px;
-      color: #2CB7CA;
+      color: #2cb7ca;
     }
-    .d-right{
+    .d-right {
       display: flex;
       justify-content: space-between;
       align-items: center;
-      .d-r-ipt{
+      .d-r-ipt {
         width: 368px;
         height: 30px;
         border-radius: 4px 4px 4px 4px;
         // border: 1px solid #E0E0E0;
-        ::v-deep .el-input__inner{
+        ::v-deep .el-input__inner {
           height: 100%;
         }
       }
-      .d-r-search{
+      .d-r-search {
         display: flex;
         justify-content: space-between;
         align-items: center;
         margin-left: 12px;
         width: 72px;
         height: 30px;
-        background: #2ABED1;
+        background: #2abed1;
         border-radius: 4px;
         color: #fff;
         font-size: 14px;
@@ -262,11 +297,11 @@ export default {
       }
     }
   }
-  .d-title.unit::after{
+  .d-title.unit::after {
     left: 0;
   }
-  .d-title::after{
-    content: "";
+  .d-title::after {
+    content: '';
     position: absolute;
     left: -32px;
     width: 3px;
@@ -279,13 +314,13 @@ export default {
 
     table {
       font-family: Microsoft YaHei, Microsoft YaHei-Regular;
-      border-right: 1px solid #ECECEC;
-      border-bottom: 1px solid #ECECEC;
+      border-right: 1px solid #ececec;
+      border-bottom: 1px solid #ececec;
       margin: 0 auto;
 
       td {
-        border-left: 1px solid #ECECEC;
-        border-top: 1px solid #ECECEC;
+        border-left: 1px solid #ececec;
+        border-top: 1px solid #ececec;
         border-spacing: 0;
         text-align: center;
       }
@@ -296,7 +331,7 @@ export default {
           font-weight: 400;
           line-height: 48px;
           font-size: 14px;
-          background: #F9FAFB;
+          background: #f9fafb;
           color: #686868;
         }
 
@@ -326,37 +361,37 @@ export default {
           min-height: 22px;
           font-size: 14px;
           font-weight: 400;
-          color: #1D1D1D;
+          color: #1d1d1d;
           line-height: 22px;
           padding: 13px;
           display: table-cell;
           vertical-align: middle;
           cursor: pointer;
-          &.noclick{
+          &.noclick {
             cursor: default;
           }
-          .source-style{
+          .source-style {
             height: 20px;
             width: 72px;
             margin-right: 8px;
-            background: #EEF9FB;
+            background: #eef9fb;
             font-size: 12px;
             text-align: center;
             border-radius: 4px;
             font-family: Microsoft YaHei-Regular, Microsoft YaHei;
             font-weight: 400;
-            color: #2ABED1;
+            color: #2abed1;
             line-height: 18px;
-            &.source-red{
-              background: #FFF7F0;
-              color: #F56500;
+            &.source-red {
+              background: #fff7f0;
+              color: #f56500;
               cursor: default;
             }
           }
         }
 
         td:nth-child(3) {
-          color: #2CB7CA;
+          color: #2cb7ca;
         }
 
         td:nth-child(4) {
@@ -375,6 +410,5 @@ export default {
     margin-top: 16px;
     text-align: center;
   }
-
 }
 </style>

+ 43 - 21
apps/bigmember_pc/src/components/coupon/BuySubmit.vue

@@ -31,18 +31,34 @@
                 :key="index"
                 target="_black"
                 :underline="linkUnderline"
-                :href="link.url">{{ link.label }}</el-link>
+                :href="link.url"
+                >{{ link.label }}</el-link
+              >
             </div>
           </el-checkbox>
         </div>
         <div class="price-submit-container">
-          <el-button plain class="submit-button preview-button" @click="onCancel" v-show="plainButtonText">{{ plainButtonText }}</el-button>
-          <el-button type="primary" class="submit-button price-submit" :disabled="confirmButtonDisabled" :loading="loading" @click="buySubmit">
-            <div class="confirm-button-text">{{submitText}}</div>
+          <el-button
+            plain
+            class="submit-button preview-button"
+            @click="onCancel"
+            v-show="plainButtonText"
+            >{{ plainButtonText }}</el-button
+          >
+          <el-button
+            type="primary"
+            class="submit-button price-submit"
+            :disabled="confirmButtonDisabled"
+            :loading="loading"
+            @click="buySubmit"
+          >
+            <div class="confirm-button-text">{{ submitText }}</div>
             <!-- <div class="confirm-button-tip-text" v-if="submitTipText">{{submitTipText}}</div> -->
           </el-button>
         </div>
-        <div class="confirm-button-tip-text in-page" v-if="submitTipText">完成支付后可在【我的订单】中开电子发票</div>
+        <div class="confirm-button-tip-text in-page" v-if="submitTipText">
+          完成支付后可在【我的订单】中开电子发票
+        </div>
       </div>
     </div>
     <BuySubmitSticky
@@ -127,21 +143,27 @@ export default {
     }
   },
   computed: {
-    calcTotal () {
-      return this.useFormatPrice ? this.formatPrice(this.productionTotal, -1, true) : this.productionTotal
+    calcTotal() {
+      return this.useFormatPrice
+        ? this.formatPrice(this.productionTotal, -1, true)
+        : this.productionTotal
     },
-    calcDiscount () {
-      return this.useFormatPrice ? this.formatPrice(this.productionDiscount, -1, true) : this.productionDiscount
+    calcDiscount() {
+      return this.useFormatPrice
+        ? this.formatPrice(this.productionDiscount, -1, true)
+        : this.productionDiscount
     },
-    calcPay () {
-      return this.useFormatPrice ? this.formatPrice(this.productionPay, -1, true) : this.productionPay
+    calcPay() {
+      return this.useFormatPrice
+        ? this.formatPrice(this.productionPay, -1, true)
+        : this.productionPay
     },
-    confirmButtonDisabled () {
+    confirmButtonDisabled() {
       const state = this.pass && this.agreement
       return !state
     }
   },
-  data () {
+  data() {
     return {
       agreementLinks: [
         {
@@ -154,10 +176,10 @@ export default {
   },
   methods: {
     formatPrice,
-    onCancel () {
+    onCancel() {
       this.$emit('cancel')
     },
-    buySubmit () {
+    buySubmit() {
       this.$emit('submit')
     }
   }
@@ -165,7 +187,7 @@ export default {
 </script>
 
 <style lang="scss" scoped>
-$main: #2CB7CA;
+$main: #2cb7ca;
 .buy-submit {
   padding: 12px 0 40px;
   .price-buy-info-group {
@@ -179,13 +201,13 @@ $main: #2CB7CA;
     flex-direction: column;
     align-items: flex-end;
     padding: 22px;
-    background-color: #F5F5FB;
-    border-top: 1px solid #E0E0E0;
+    background-color: #f5f5fb;
+    border-top: 1px solid #e0e0e0;
     .preview-item {
       display: flex;
       align-items: center;
       justify-content: space-between;
-      color: #1D1D1D;
+      color: #1d1d1d;
       min-width: 400px;
       .p- {
         &label {
@@ -203,7 +225,7 @@ $main: #2CB7CA;
       &.pay .p-value {
         font-weight: bold;
         font-size: 36px;
-        color: #FF3A20;
+        color: #ff3a20;
         line-height: 36px;
       }
     }
@@ -288,7 +310,7 @@ $main: #2CB7CA;
     background-color: $color-text--highlight;
   }
   .el-checkbox__label,
-  .el-checkbox__input.is-checked+.el-checkbox__label {
+  .el-checkbox__input.is-checked + .el-checkbox__label {
     color: #888;
   }
 }

+ 35 - 19
apps/bigmember_pc/src/components/coupon/BuySubmitSticky.vue

@@ -14,7 +14,9 @@
               :key="index"
               target="_black"
               :underline="linkUnderline"
-              :href="link.url">{{ link.label }}</el-link>
+              :href="link.url"
+              >{{ link.label }}</el-link
+            >
           </div>
         </el-checkbox>
       </div>
@@ -31,11 +33,25 @@
         </slot>
       </div>
       <div class="price-submit-container">
-        <el-button plain class="submit-button preview-button" @click="onCancel" v-show="plainButtonText">{{ plainButtonText }}</el-button>
-        <el-button type="primary" class="submit-button price-submit" :disabled="confirmButtonDisabled" :loading="loading" @click="buySubmit">
+        <el-button
+          plain
+          class="submit-button preview-button"
+          @click="onCancel"
+          v-show="plainButtonText"
+          >{{ plainButtonText }}</el-button
+        >
+        <el-button
+          type="primary"
+          class="submit-button price-submit"
+          :disabled="confirmButtonDisabled"
+          :loading="loading"
+          @click="buySubmit"
+        >
           <div class="button-content">
-            <div class="confirm-button-text">{{submitText}}</div>
-            <div class="confirm-button-tip-text" v-if="submitTipText">{{submitTipText}}</div>
+            <div class="confirm-button-text">{{ submitText }}</div>
+            <div class="confirm-button-tip-text" v-if="submitTipText">
+              {{ submitTipText }}
+            </div>
           </div>
         </el-button>
       </div>
@@ -89,7 +105,7 @@ export default {
     },
     agreementLinks: {
       type: Array,
-      default () {
+      default() {
         return []
       }
     },
@@ -110,7 +126,7 @@ export default {
       default: false
     }
   },
-  mounted () {
+  mounted() {
     this.windowScrollFn()
     this.calcStickyFooterMaxWitch()
     this.$on('hook:mounted', () => {
@@ -139,7 +155,7 @@ export default {
         }
       }
     }, 50),
-    appendDomToContainer (el, selector) {
+    appendDomToContainer(el, selector) {
       var container
       if (selector) {
         container = this.$root.$el.querySelector(selector) || this.$root.$el
@@ -149,7 +165,7 @@ export default {
       }
       container.appendChild(el)
     },
-    removeDomFromContainer (el, selector) {
+    removeDomFromContainer(el, selector) {
       var container
       if (selector) {
         container = this.$root.$el.querySelector(selector)
@@ -164,7 +180,7 @@ export default {
       }
     },
     // 是否某个dom有部分离开当前屏
-    isDOMLeave (el) {
+    isDOMLeave(el) {
       if (!el) return
       const x = 64 // 头部偏移
       const offset = el.getBoundingClientRect()
@@ -185,7 +201,7 @@ export default {
       return leave
     },
     // 是否在el的一部分在可视区域
-    isInViewport (el) {
+    isInViewport(el) {
       if (!el) return
       const offset = el.getBoundingClientRect()
       const x = 64 // 头部偏移
@@ -227,13 +243,13 @@ export default {
         stickyFooter.hide()
       }
     }, 300),
-    agreeCheckboxChange (f) {
+    agreeCheckboxChange(f) {
       this.$emit('change', f)
     },
-    onCancel () {
+    onCancel() {
       this.$emit('cancel')
     },
-    buySubmit () {
+    buySubmit() {
       this.$emit('submit')
     }
   }
@@ -241,7 +257,7 @@ export default {
 </script>
 
 <style lang="scss" scoped>
-$color_main: #2CB7CA;
+$color_main: #2cb7ca;
 
 .sticky-footer {
   position: fixed;
@@ -250,7 +266,7 @@ $color_main: #2CB7CA;
   width: 100%;
   background-color: #fff;
   box-shadow: 0px -4px 8px 1px rgba(0, 0, 0, 0.05);
-  transition: max-width,width 0.5s ease;
+  transition: max-width, width 0.5s ease;
 }
 .confirm-button-tip-text {
   margin-top: 2px;
@@ -273,7 +289,7 @@ $color_main: #2CB7CA;
       display: flex;
       align-items: center;
       justify-content: space-between;
-      color: #1D1D1D;
+      color: #1d1d1d;
       &:not(:last-of-type) {
         margin-right: 16px;
       }
@@ -290,7 +306,7 @@ $color_main: #2CB7CA;
           }
           &value {
             font-size: 24px;
-            color: #FF3A20;
+            color: #ff3a20;
             line-height: 24px;
           }
         }
@@ -382,7 +398,7 @@ $color_main: #2CB7CA;
     background-color: $color_main;
   }
   .el-checkbox__label,
-  .el-checkbox__input.is-checked+.el-checkbox__label {
+  .el-checkbox__input.is-checked + .el-checkbox__label {
     color: #888;
   }
 }

+ 14 - 9
apps/bigmember_pc/src/components/coupon/CheckPhone.vue

@@ -6,8 +6,13 @@
         maxlength="13"
         :size="size"
         placeholder="请输入手机号码"
-        @input="onInput">
-        <i v-show="showRightIcon" slot="suffix" class="el-input__icon el-icon-success"></i>
+        @input="onInput"
+      >
+        <i
+          v-show="showRightIcon"
+          slot="suffix"
+          class="el-input__icon el-icon-success"
+        ></i>
       </el-input>
     </el-form-item>
   </el-form>
@@ -40,29 +45,29 @@ export default {
     }
   },
   computed: {
-    showRightIcon () {
+    showRightIcon() {
       return this.needShowRightIcon && this.required && this.pass
     }
   },
   watch: {
-    value (newVal) {
+    value(newVal) {
       this.regPhone(newVal)
     }
   },
-  data () {
+  data() {
     return {
       pass: false,
       error: ''
     }
   },
-  mounted () {
+  mounted() {
     this.regPhone()
   },
   methods: {
-    onInput (val) {
+    onInput(val) {
       this.$emit('input', val)
     },
-    regPhone (val) {
+    regPhone(val) {
       if (val) {
         const reg = /^[1][3-9][0-9]{9}$/
         if (reg.test(val)) {
@@ -74,7 +79,7 @@ export default {
         this.error = ''
       }
 
-      const pass = this.required ? (val && !this.error) : !this.error
+      const pass = this.required ? val && !this.error : !this.error
       this.pass = !!pass
       this.$emit('update:pass', !!pass)
     }

+ 149 - 78
apps/bigmember_pc/src/components/coupon/CouponCardList.vue

@@ -1,79 +1,153 @@
 <template>
   <div class="spec-list">
-    <SpecCard v-for="coupon in couponList" :key="coupon.id" :class="{
-      [coupon.className]: true,
-      disabled: !coupon.available
-    }" :showFloatTip="true" :defaultFloatTipText="coupon.lotteryAttribute"
-      :active="coupon[activeType] === active && coupon.available" :defaulticon="false" @onClick="clickItem(coupon)">
+    <SpecCard
+      v-for="coupon in couponList"
+      :key="coupon.id"
+      :class="{
+        [coupon.className]: true,
+        disabled: !coupon.available
+      }"
+      :showFloatTip="true"
+      :defaultFloatTipText="coupon.lotteryAttribute"
+      :active="coupon[activeType] === active && coupon.available"
+      :defaulticon="false"
+      @onClick="clickItem(coupon)"
+    >
       <div class="spec-content flex-r-c">
         <div class="s-c-info content">
           <!-- 减免 -->
           <span class="info-denomination" v-if="coupon.type == 0">
             <span class="s-c-yen">&yen;</span>
-            <span class="s-c-num" style="margin-left: 4px">{{ coupon.reduce | fen2Yuan }}</span>
+            <span class="s-c-num" style="margin-left: 4px">{{
+              coupon.reduce | fen2Yuan
+            }}</span>
           </span>
           <!-- 折扣 -->
           <span class="info-denomination" v-else-if="coupon.type == 1">
-            <span class="s-c-num">{{ (coupon.discount * 10) | formatNumber }}</span>
+            <span class="s-c-num">{{
+              (coupon.discount * 10) | formatNumber
+            }}</span>
             <span class="s-c-yen"> 折</span>
           </span>
           <!-- 赠品 -->
-          <span class="info-denomination" v-else-if="coupon.lotteryAttribute.indexOf('赠品') != -1">
+          <span
+            class="info-denomination"
+            v-else-if="coupon.lotteryAttribute.indexOf('赠品') != -1"
+          >
             <span class="s-c-yen">送 </span>
             <span class="s-c-num">{{ coupon.time }}</span>
-            <span class="s-c-yen" v-if="coupon.timeType == '1' || coupon.timeType == '2' || coupon.timeType == '3'">{{
-              coupon.timeType | unitConversion }}</span>
-            <span class="s-c-yen" v-if="coupon.timeType == '4' || coupon.timeType == '5'"> 条</span>
+            <span
+              class="s-c-yen"
+              v-if="
+                coupon.timeType == '1' ||
+                coupon.timeType == '2' ||
+                coupon.timeType == '3'
+              "
+              >{{ coupon.timeType | unitConversion }}</span
+            >
+            <span
+              class="s-c-yen"
+              v-if="coupon.timeType == '4' || coupon.timeType == '5'"
+            >
+              条</span
+            >
           </span>
           <!-- 限时 -->
-          <span class="info-denomination" v-else-if="coupon.lotteryAttribute.indexOf('限时') != -1">
-            <span class="s-c-yen" v-if='coupon.type == 5'>减 </span>
-            <span class="s-c-yen" v-if='coupon.type == 3'>&yen; </span>
-            <span class="s-c-num" v-if='coupon.type == 5'>{{ coupon.reduce | fen2Yuan }}</span>
-            <span class="s-c-num" v-if='coupon.type == 3'>{{ coupon.promotionalPrice | fen2Yuan }}</span>
-            <span class="s-c-num" v-if='coupon.type == 4'>{{ (coupon.discount * 10) | formatNumber }}</span>
-            <span class="s-c-yen" v-if='coupon.type == 4'> 折</span>
-            <span class="s-c-yen" v-if='coupon.type == 5'> 元</span>
-            <span class="s-c-yen" v-if='coupon.type == 3'> 特惠价</span>
+          <span
+            class="info-denomination"
+            v-else-if="coupon.lotteryAttribute.indexOf('限时') != -1"
+          >
+            <span class="s-c-yen" v-if="coupon.type == 5">减 </span>
+            <span class="s-c-yen" v-if="coupon.type == 3">&yen; </span>
+            <span class="s-c-num" v-if="coupon.type == 5">{{
+              coupon.reduce | fen2Yuan
+            }}</span>
+            <span class="s-c-num" v-if="coupon.type == 3">{{
+              coupon.promotionalPrice | fen2Yuan
+            }}</span>
+            <span class="s-c-num" v-if="coupon.type == 4">{{
+              (coupon.discount * 10) | formatNumber
+            }}</span>
+            <span class="s-c-yen" v-if="coupon.type == 4"> 折</span>
+            <span class="s-c-yen" v-if="coupon.type == 5"> 元</span>
+            <span class="s-c-yen" v-if="coupon.type == 3"> 特惠价</span>
           </span>
-          <span class="info-condition" v-if="coupon.type == 1 || coupon.type == 0">满{{
-            coupon.full | fen2Yuan
-          }}可用</span>
+          <span
+            class="info-condition"
+            v-if="coupon.type == 1 || coupon.type == 0"
+            >满{{ coupon.full | fen2Yuan }}可用</span
+          >
         </div>
       </div>
       <!-- 非限时可用 -->
       <div class="spec-footer">
-        <template v-if="coupon.available && coupon.lotteryAttribute.indexOf('限时') === -1">
+        <template
+          v-if="
+            coupon.available && coupon.lotteryAttribute.indexOf('限时') === -1
+          "
+        >
           <span class="spec-time">
-            <span class="spec-start">{{ dateFormatter(coupon.lotteryBeginDate, 'yyyy.MM.dd') }}</span>
+            <span class="spec-start">{{
+              dateFormatter(coupon.lotteryBeginDate, 'yyyy.MM.dd')
+            }}</span>
             <span class="spec-split">-</span>
-            <span class="spec-end">{{ dateFormatter(coupon.lotteryEndDate, 'yyyy.MM.dd') }}</span>
+            <span class="spec-end">{{
+              dateFormatter(coupon.lotteryEndDate, 'yyyy.MM.dd')
+            }}</span>
           </span>
           <!-- <span class="spec-right spec-available" v-if="!coupon.available">暂不可用</span> -->
-          <span class="spec-right spec-expire" v-if="coupon.expireTime">{{ coupon.expireTime }}</span>
+          <span class="spec-right spec-expire" v-if="coupon.expireTime">{{
+            coupon.expireTime
+          }}</span>
         </template>
         <!-- 活动未开始  不可用-->
-        <div class="down-time" v-if="!coupon.available && Date.now() < coupon.lotteryBeginDate">
-          <LimitedCountDown :endTime="coupon.lotteryBeginDate" :showStartText="true" :startText="'活动开始倒计时:'"
-            @over="updataTime">
+        <div
+          class="down-time"
+          v-if="!coupon.available && Date.now() < coupon.lotteryBeginDate"
+        >
+          <LimitedCountDown
+            :endTime="coupon.lotteryBeginDate"
+            :showStartText="true"
+            :startText="'活动开始倒计时:'"
+            @over="updataTime"
+          >
           </LimitedCountDown>
         </div>
         <!-- 活动结束 不可用 -->
         <template
-          v-if="!coupon.available && Date.now() > coupon.lotteryBeginDate && coupon.lotteryAttribute.indexOf('限时') === -1">
+          v-if="
+            !coupon.available &&
+            Date.now() > coupon.lotteryBeginDate &&
+            coupon.lotteryAttribute.indexOf('限时') === -1
+          "
+        >
           <span class="spec-time">
-            <span class="spec-start">{{ dateFormatter(coupon.lotteryBeginDate, 'yyyy.MM.dd') }}</span>
+            <span class="spec-start">{{
+              dateFormatter(coupon.lotteryBeginDate, 'yyyy.MM.dd')
+            }}</span>
             <span class="spec-split">-</span>
-            <span class="spec-end">{{ dateFormatter(coupon.lotteryEndDate, 'yyyy.MM.dd') }}</span>
+            <span class="spec-end">{{
+              dateFormatter(coupon.lotteryEndDate, 'yyyy.MM.dd')
+            }}</span>
           </span>
-          <span class="spec-right spec-available" v-if="!coupon.available">暂不可用</span>
+          <span class="spec-right spec-available" v-if="!coupon.available"
+            >暂不可用</span
+          >
         </template>
 
         <template v-if="coupon.lotteryAttribute.indexOf('限时') !== -1">
-          <span class="spec-warm" v-if="coupon.stockNumber && coupon.available">剩余优惠名额:{{
-            coupon.stockNumber }}个,欲购从速!</span>
-          <span class="spec-warm-red"
-            v-if="!coupon.stockNumber && !coupon.available && Date.now() > coupon.lotteryBeginDate">优惠名额已抢空</span>
+          <span class="spec-warm" v-if="coupon.stockNumber && coupon.available"
+            >剩余优惠名额:{{ coupon.stockNumber }}个,欲购从速!</span
+          >
+          <span
+            class="spec-warm-red"
+            v-if="
+              !coupon.stockNumber &&
+              !coupon.available &&
+              Date.now() > coupon.lotteryBeginDate
+            "
+            >优惠名额已抢空</span
+          >
         </template>
       </div>
     </SpecCard>
@@ -81,13 +155,10 @@
 </template>
 
 <script>
-
 import SpecCard from '@/components/common/SpecCard.vue'
 import LimitedCountDown from '@/components/limited-countdown'
 import { dateFormatter, formatMoney } from '@/utils/'
-import {
-  getCouponList
-} from '@/api/modules/'
+import { getCouponList } from '@/api/modules/'
 export default {
   name: 'coupon-list',
   components: {
@@ -106,12 +177,12 @@ export default {
     },
     list: {
       type: Array,
-      default () {
+      default() {
         return []
       }
     }
   },
-  data () {
+  data() {
     return {
       active: '',
       loading: false,
@@ -120,20 +191,20 @@ export default {
     }
   },
   computed: {
-    activeItem () {
+    activeItem() {
       return this.getActiveItem()
     }
   },
   watch: {
-    price () {
+    price() {
       this.getCouponList()
     },
-    list () {
+    list() {
       this.getCouponList('havelist')
     }
   },
   filters: {
-    unitConversion (val) {
+    unitConversion(val) {
       if (val === 1) {
         return ' 天'
       } else if (val === 2) {
@@ -146,27 +217,27 @@ export default {
         return ' 高级'
       }
     },
-    formatNumber (number) {
+    formatNumber(number) {
       return formatMoney(number, { type: 'number' })
     }
   },
-  created () {
+  created() {
     this.getToken()
   },
   methods: {
     dateFormatter,
-    getToken () {
+    getToken() {
       const { token } = this.$route.query
       if (token) {
         this.token = token
       }
     },
     // 获取优惠券
-    async getCouponList (type) {
+    async getCouponList(type) {
       if (type === 'havelist') {
         const couponList = []
         const list = JSON.parse(JSON.stringify(this.list))
-        list.forEach(ele => {
+        list.forEach((ele) => {
           let item = {}
           if (ele.choosed) {
             this.active = ele.lotteryId
@@ -218,9 +289,9 @@ export default {
       }
       this.couponListLoaded(this.couponList.length)
     },
-    resortList (list) {
+    resortList(list) {
       if (!Array.isArray(list)) return []
-      return list.map(c => {
+      return list.map((c) => {
         const expireTime = this.getExpireTime(c)
         return {
           ...c,
@@ -229,7 +300,7 @@ export default {
         }
       })
     },
-    getClassName (item) {
+    getClassName(item) {
       var type = item.lotteryAttribute
       if (type.includes('折扣券')) {
         return 'orange'
@@ -243,9 +314,10 @@ export default {
         return 'blue'
       }
     },
-    clickItem (item) {
+    clickItem(item) {
       if (!item.available) return
-      if (this.active === item[this.activeType]) { // 点击已选中卡券则取消选中
+      if (this.active === item[this.activeType]) {
+        // 点击已选中卡券则取消选中
         this.active = ''
         this.$emit('change', {}, item)
         return
@@ -253,10 +325,10 @@ export default {
       this.active = item[this.activeType]
       this.$emit('change', item)
     },
-    getActiveItem () {
-      return this.couponList.find(c => c[this.activeType] === this.active)
+    getActiveItem() {
+      return this.couponList.find((c) => c[this.activeType] === this.active)
     },
-    getExpireTime ({ lotteryEndDate: end }) {
+    getExpireTime({ lotteryEndDate: end }) {
       // replace(/-/g, '/')
       const endStamp = +new Date(end)
       const nowStamp = Date.now()
@@ -268,11 +340,11 @@ export default {
         return ''
       }
     },
-    couponListLoaded (length) {
+    couponListLoaded(length) {
       //  券列表加载完成 回传卡券数量
       this.$emit('loaded', { data: length })
     },
-    updataTime () {
+    updataTime() {
       this.$emit('updateCallback')
     }
   }
@@ -322,7 +394,7 @@ export default {
 
   &-desc {
     .font-red {
-      color: #FF3A20;
+      color: #ff3a20;
     }
   }
 }
@@ -385,19 +457,19 @@ export default {
     height: 30px;
     line-height: 30px;
     text-align: center;
-    color: #FF3A20;
+    color: #ff3a20;
   }
 
   .spec-warm {
     font-size: 12px;
     line-height: 30px;
-    color: #FC43CA;
+    color: #fc43ca;
   }
 
   .spec-warm-red {
     font-size: 12px;
     line-height: 30px;
-    color: #FF3A20;
+    color: #ff3a20;
   }
 
   .spec-right {
@@ -410,61 +482,60 @@ export default {
   }
 
   .spec-expire {
-    color: #FF3A20;
+    color: #ff3a20;
   }
 }
 
 .blue {
   ::v-deep {
     .float-tip {
-      color: #0DA6BB;
+      color: #0da6bb;
       background-color: rgba(255, 255, 255, 0.6);
     }
   }
 
   .spec-content {
-    background: linear-gradient(315deg, #27C0E2 0%, #5ED4E3 99%);
+    background: linear-gradient(315deg, #27c0e2 0%, #5ed4e3 99%);
   }
 }
 
 .orange {
   ::v-deep {
     .float-tip {
-      color: #FF9F3F;
+      color: #ff9f3f;
       background-color: rgba(255, 255, 255, 0.6);
     }
   }
 
   .spec-content {
-    background: linear-gradient(313deg, #FF9F3F 0%, #FFC046 100%);
+    background: linear-gradient(313deg, #ff9f3f 0%, #ffc046 100%);
   }
 }
 
 .red {
   ::v-deep {
     .float-tip {
-      color: #FC43CA;
+      color: #fc43ca;
       background-color: rgba(255, 255, 255, 0.6);
     }
   }
 
   .spec-content {
-    background: linear-gradient(315deg, #FF6161 0%, #FC6AFF 100%);
+    background: linear-gradient(315deg, #ff6161 0%, #fc6aff 100%);
   }
 }
 
 .violet {
   ::v-deep {
     .float-tip {
-      color: #8A38FF;
+      color: #8a38ff;
       background-color: rgba(255, 255, 255, 0.6);
     }
   }
 
   .spec-content {
-    background: linear-gradient(315deg, #6070FD 0%, #FC63FF 100%);
+    background: linear-gradient(315deg, #6070fd 0%, #fc63ff 100%);
   }
-
 }
 
 .disabled {
@@ -476,7 +547,7 @@ export default {
   }
 
   .spec-content {
-    background: #C9CACC;
+    background: #c9cacc;
   }
 }
 </style>

+ 48 - 34
apps/bigmember_pc/src/components/coupon/CouponCardListOld.vue

@@ -10,14 +10,23 @@
       :showFloatTip="true"
       :defaultFloatTipText="coupon.lotteryAttribute"
       :active="coupon[activeType] === active && coupon.available"
-      @onClick="clickItem(coupon)">
+      @onClick="clickItem(coupon)"
+    >
       <div class="spec-content flex-r-c center">
         <div class="s-c-info">
-          <span class="info-denomination" v-if="coupon.lotteryAttribute.indexOf('满减') != -1">
+          <span
+            class="info-denomination"
+            v-if="coupon.lotteryAttribute.indexOf('满减') != -1"
+          >
             <span class="s-c-yen">&yen;</span>
-            <span class="s-c-num" style="margin-left: 4px">{{ coupon.reduce }}</span>
+            <span class="s-c-num" style="margin-left: 4px">{{
+              coupon.reduce
+            }}</span>
           </span>
-          <span class="info-denomination" v-else-if="coupon.lotteryAttribute.indexOf('折扣') != -1">
+          <span
+            class="info-denomination"
+            v-else-if="coupon.lotteryAttribute.indexOf('折扣') != -1"
+          >
             <span class="s-c-num">{{ coupon.disCount }}</span>
             <span class="s-c-yen">折</span>
           </span>
@@ -26,12 +35,20 @@
       </div>
       <div class="spec-footer">
         <span class="spec-time">
-          <span class="spec-start">{{ dateFormatter(coupon.lotteryBeginDate, 'yyyy.MM.dd') }}</span>
+          <span class="spec-start">{{
+            dateFormatter(coupon.lotteryBeginDate, 'yyyy.MM.dd')
+          }}</span>
           <span class="spec-split">-</span>
-          <span class="spec-end">{{ dateFormatter(coupon.lotteryEndDate, 'yyyy.MM.dd') }}</span>
+          <span class="spec-end">{{
+            dateFormatter(coupon.lotteryEndDate, 'yyyy.MM.dd')
+          }}</span>
         </span>
-        <span class="spec-right spec-available" v-if="!coupon.available">暂不可用</span>
-        <span class="spec-right spec-expire" v-else-if="coupon.expireTime">{{ coupon.expireTime }}</span>
+        <span class="spec-right spec-available" v-if="!coupon.available"
+          >暂不可用</span
+        >
+        <span class="spec-right spec-expire" v-else-if="coupon.expireTime">{{
+          coupon.expireTime
+        }}</span>
       </div>
     </SpecCard>
   </div>
@@ -40,10 +57,7 @@
 <script>
 import SpecCard from '@/components/common/SpecCard.vue'
 import { dateFormatter } from '@/utils/'
-import {
-  getCouponList,
-  optimalCoupon
-} from '@/api/modules/'
+import { getCouponList, optimalCoupon } from '@/api/modules/'
 export default {
   name: 'coupon-list',
   components: {
@@ -60,7 +74,7 @@ export default {
       default: 'lotteryId'
     }
   },
-  data () {
+  data() {
     return {
       active: '',
       loading: false,
@@ -69,28 +83,28 @@ export default {
     }
   },
   computed: {
-    activeItem () {
+    activeItem() {
       return this.getActiveItem()
     }
   },
   watch: {
-    price () {
+    price() {
       this.getCouponList()
     }
   },
-  created () {
+  created() {
     this.getToken()
   },
   methods: {
     dateFormatter,
-    getToken () {
+    getToken() {
       const { token } = this.$route.query
       if (token) {
         this.token = token
       }
     },
     // 获取优惠券
-    async getCouponList () {
+    async getCouponList() {
       var info = {
         pId: this.productionId,
         price: this.price,
@@ -112,7 +126,7 @@ export default {
       this.couponListLoaded(this.couponList.length)
     },
     // 优惠券最优
-    async optCoupon () {
+    async optCoupon() {
       var info = {
         pId: this.productionId,
         price: this.price,
@@ -122,9 +136,9 @@ export default {
       const { data, error_code: code } = await optimalCoupon(info)
       console.log(data, code)
     },
-    resortList (list) {
+    resortList(list) {
       if (!Array.isArray(list)) return []
-      return list.map(c => {
+      return list.map((c) => {
         const expireTime = this.getExpireTime(c)
         return {
           ...c,
@@ -133,7 +147,7 @@ export default {
         }
       })
     },
-    getClassName (item) {
+    getClassName(item) {
       var type = item.lotteryAttribute
       if (type.includes('折扣')) {
         return 'orange'
@@ -141,15 +155,15 @@ export default {
         return 'blue'
       }
     },
-    clickItem (item) {
+    clickItem(item) {
       if (!item.available) return
       this.active = item[this.activeType]
       this.$emit('change', item)
     },
-    getActiveItem () {
-      return this.couponList.find(c => c[this.activeType] === this.active)
+    getActiveItem() {
+      return this.couponList.find((c) => c[this.activeType] === this.active)
     },
-    getExpireTime ({ lotteryEndDate: end }) {
+    getExpireTime({ lotteryEndDate: end }) {
       const endStamp = +new Date(end.replace(/-/g, '/'))
       const nowStamp = Date.now()
       const diffStamp = endStamp - nowStamp
@@ -160,7 +174,7 @@ export default {
         return ''
       }
     },
-    couponListLoaded (length) {
+    couponListLoaded(length) {
       this.$emit('loaded', { data: length })
     }
   }
@@ -204,7 +218,7 @@ export default {
   }
   &-desc {
     .font-red {
-      color: #FF3A20;
+      color: #ff3a20;
     }
   }
 }
@@ -260,31 +274,31 @@ export default {
     color: #999;
   }
   .spec-expire {
-    color: #FF3A20;
+    color: #ff3a20;
   }
 }
 
 .blue {
   ::v-deep {
     .float-tip {
-      color: #0DA6BB;
+      color: #0da6bb;
       background-color: rgba(255, 255, 255, 0.6);
     }
   }
   .spec-content {
-    background: linear-gradient(315deg, #27C0E2 0%, #5ED4E3 99%);
+    background: linear-gradient(315deg, #27c0e2 0%, #5ed4e3 99%);
   }
 }
 
 .orange {
   ::v-deep {
     .float-tip {
-      color: #FF9F3F;
+      color: #ff9f3f;
       background-color: rgba(255, 255, 255, 0.6);
     }
   }
   .spec-content {
-    background: linear-gradient(313deg, #FF9F3F 0%, #FFC046 100%);
+    background: linear-gradient(313deg, #ff9f3f 0%, #ffc046 100%);
   }
 }
 
@@ -296,7 +310,7 @@ export default {
     }
   }
   .spec-content {
-    background: #C9CACC;
+    background: #c9cacc;
   }
 }
 </style>

+ 26 - 16
apps/bigmember_pc/src/components/coupon/CouponGiftList.vue

@@ -5,7 +5,8 @@
       :key="spec.id"
       :tipText="spec.tipText"
       :active="spec[activeType] === active"
-      @onClick="clickSpec(spec)">
+      @onClick="clickSpec(spec)"
+    >
       <div class="spec-c-label">{{ spec.name }}</div>
       <div class="spec-c-desc"></div>
     </SpecCard>
@@ -27,7 +28,7 @@ export default {
       default: 'id'
     }
   },
-  data () {
+  data() {
     return {
       active: '',
       token: '', // 用户无身份查询接口
@@ -35,33 +36,33 @@ export default {
     }
   },
   watch: {
-    productionId () {
+    productionId() {
       this.getGiftList()
     }
   },
   computed: {
-    activeItem () {
+    activeItem() {
       return this.getActiveItem()
     }
   },
-  created () {
+  created() {
     this.getToken()
   },
   methods: {
-    getToken () {
+    getToken() {
       const { token } = this.$route.query
       if (token) {
         this.token = token
       }
     },
-    clickSpec (spec) {
+    clickSpec(spec) {
       this.active = spec[this.activeType]
       this.$emit('change', spec)
     },
-    getActiveItem () {
-      return this.giftList.find(spec => spec[this.activeType] === this.active)
+    getActiveItem() {
+      return this.giftList.find((spec) => spec[this.activeType] === this.active)
     },
-    async getGiftList () {
+    async getGiftList() {
       var info = {
         useProduct: this.productionId,
         token: this.token,
@@ -73,10 +74,19 @@ export default {
       this.giftList = []
       const { data } = await getGiftList(info)
       if (Array.isArray(data) && data.length > 0) {
-        this.giftList = data.map(item => {
-          item.preStartTime = item.preheatingTime && item.preheatingTime.toString().length === 10 ? item.preheatingTime * 1000 : item.preheatingTime
-          item.startTime = item.beginDate && item.beginDate.toString().length === 10 ? item.beginDate * 1000 : item.beginDate
-          item.endTime = item.endDate && item.endDate.toString().length === 10 ? item.endDate * 1000 : item.endDate
+        this.giftList = data.map((item) => {
+          item.preStartTime =
+            item.preheatingTime && item.preheatingTime.toString().length === 10
+              ? item.preheatingTime * 1000
+              : item.preheatingTime
+          item.startTime =
+            item.beginDate && item.beginDate.toString().length === 10
+              ? item.beginDate * 1000
+              : item.beginDate
+          item.endTime =
+            item.endDate && item.endDate.toString().length === 10
+              ? item.endDate * 1000
+              : item.endDate
           item.isReceive = item.IsReceive
           if (!item.stockNumber) {
             item.stockNumber = 0
@@ -92,7 +102,7 @@ export default {
       }
       this.giftListLoaded(this.giftList.length)
     },
-    sortGiftInfo (gift) {
+    sortGiftInfo(gift) {
       const info = gift
       let timeType = ''
       if (info.timeType === 1) {
@@ -104,7 +114,7 @@ export default {
       }
       return ''
     },
-    giftListLoaded (length) {
+    giftListLoaded(length) {
       this.$emit('loaded', { data: length, list: this.giftList })
     }
   }

+ 38 - 23
apps/bigmember_pc/src/components/coupon/SpecList.vue

@@ -2,20 +2,36 @@
   <div class="box">
     <div class="text" v-if="type === 'datapack' && specification.length !== 0">
       <p class="datapack-type">标准字段包</p>
-      <div class="unit_price"><span class="t-line">{{
-        specification[0].originalPrice
-      }}元/条</span><i class="green">{{ specification[0].discountPrice }}元/条</i></div>
+      <div class="unit_price">
+        <span class="t-line">{{ specification[0].originalPrice }}元/条</span
+        ><i class="green">{{ specification[0].discountPrice }}元/条</i>
+      </div>
     </div>
-    <div class="text top" v-if="type === 'datapack' && specification.length !== 0">
+    <div
+      class="text top"
+      v-if="type === 'datapack' && specification.length !== 0"
+    >
       <p class="datapack-type">高级字段包</p>
-      <div class="unit_price"><span class="t-line">{{
-        specification[1].originalPrice
-      }}元/条</span><i class="green">{{ specification[1].discountPrice }}元/条</i></div>
+      <div class="unit_price">
+        <span class="t-line">{{ specification[1].originalPrice }}元/条</span
+        ><i class="green">{{ specification[1].discountPrice }}元/条</i>
+      </div>
     </div>
     <div class="spec-list">
-      <SpecCard v-for="(spec, index ) in list" :key="spec.id" :showFloatTip="!!spec.tipText" floatTipClass="spec-c-tip"
-        :class="{ mt64: index > 2 && type === 'datapack', pt20: type === 'datapack' }" :defaultFloatTipText="spec.tipText"
-        :active="spec[activeType] === active" :Linebreaks="index" @onClick="clickSpec(spec)">
+      <SpecCard
+        v-for="(spec, index) in list"
+        :key="spec.id"
+        :showFloatTip="!!spec.tipText"
+        floatTipClass="spec-c-tip"
+        :class="{
+          mt64: index > 2 && type === 'datapack',
+          pt20: type === 'datapack'
+        }"
+        :defaultFloatTipText="spec.tipText"
+        :active="spec[activeType] === active"
+        :Linebreaks="index"
+        @onClick="clickSpec(spec)"
+      >
         <div class="spec-c-label">{{ spec.label }}</div>
         <div class="spec-c-price">
           <span>&yen;</span>
@@ -28,7 +44,6 @@
 </template>
 
 <script>
-
 import SpecCard from '@/components/common/SpecCard.vue'
 export default {
   name: 'spec-list',
@@ -46,9 +61,10 @@ export default {
       type: String,
       default: ''
     },
-    list: { // 列表
+    list: {
+      // 列表
       type: Array,
-      default () {
+      default() {
         return []
       }
     },
@@ -64,15 +80,14 @@ export default {
     prop: 'active',
     event: 'activeChange'
   },
-  data () {
+  data() {
     return {
       choose: '',
       timeout: null
-
     }
   },
   computed: {
-    activeItem () {
+    activeItem() {
       return this.getActiveItem()
     }
   },
@@ -83,11 +98,11 @@ export default {
       this.choose = val
     }
   },
-  created () {
+  created() {
     this.getActiveItem()
   },
   methods: {
-    clickSpec (spec) {
+    clickSpec(spec) {
       // v-model专用自定义事件
       this.$emit('activeChange', spec.id)
       // activeItem的值不能在此处获取,因为active的更新顺序问题
@@ -103,8 +118,8 @@ export default {
         this.$emit('onclick', spec)
       }, 200)
     },
-    getActiveItem () {
-      return this.list.find(spec => spec[this.activeType] === this.active)
+    getActiveItem() {
+      return this.list.find((spec) => spec[this.activeType] === this.active)
     }
   }
 }
@@ -140,7 +155,7 @@ export default {
 }
 
 .green {
-  color: #2ABED1;
+  color: #2abed1;
   margin-left: 4px;
   line-height: 22px;
   font-size: 14px;
@@ -189,7 +204,7 @@ export default {
     .spec-c-tip {
       top: -10px;
       border-radius: 9px 0;
-      background: linear-gradient(98deg, #FF7C32 0%, #F33838 100%);
+      background: linear-gradient(98deg, #ff7c32 0%, #f33838 100%);
     }
   }
 }
@@ -213,7 +228,7 @@ export default {
 
   &-desc {
     .font-red {
-      color: #FF3A20;
+      color: #ff3a20;
     }
   }
 }

+ 19 - 11
apps/bigmember_pc/src/components/coupon/validity.vue

@@ -1,7 +1,12 @@
 <template>
   <div>
-    <div class="spec-card" :class="{ active: active == item.name }" @click="clickCard(item)" v-for="(item , index) in list"
-      :key="index">
+    <div
+      class="spec-card"
+      :class="{ active: active == item.name }"
+      @click="clickCard(item)"
+      v-for="(item, index) in list"
+      :key="index"
+    >
       {{ item.name }}
     </div>
   </div>
@@ -12,31 +17,34 @@ export default {
   name: 'validity',
   components: {},
   props: {
-    deactive: { // 默认选中的 name
+    deactive: {
+      // 默认选中的 name
       type: String,
       default: '2年'
     },
-    list: { // 传入数据
+    list: {
+      // 传入数据
       type: Array,
-      default () {
+      default() {
         return []
       }
     }
-
   },
-  data () {
+  data() {
     return {
       active: ''
     }
   },
-  created () { this.active = this.deactive },
-  mounted () { },
-  beforeDestroy () { },
+  created() {
+    this.active = this.deactive
+  },
+  mounted() {},
+  beforeDestroy() {},
   filters: {},
   computed: {},
   watch: {},
   methods: {
-    clickCard (item) {
+    clickCard(item) {
       this.active = item.name
       //  回传当前选中数据
       this.$emit('onclick', item)

+ 13 - 10
apps/bigmember_pc/src/components/crm-info/IframeDialog.vue

@@ -1,10 +1,12 @@
 <template>
   <div class="Iframe-dialog">
-    <el-dialog
-      :visible.sync="dialogVisible"
-      width="50%"
-      >
-      <iframe :src="iframeSrc" width="100%" height="500" frameborder="0"></iframe>
+    <el-dialog :visible.sync="dialogVisible" width="50%">
+      <iframe
+        :src="iframeSrc"
+        width="100%"
+        height="500"
+        frameborder="0"
+      ></iframe>
     </el-dialog>
   </div>
 </template>
@@ -28,7 +30,7 @@ export default {
   },
   watch: {
     showDialog: {
-      handler (newval) {
+      handler(newval) {
         this.dialogVisible = newval
         if (!newval) {
           this.getEmployInfo()
@@ -36,22 +38,23 @@ export default {
       },
       immediate: true
     },
-    dialogVisible (newval) {
+    dialogVisible(newval) {
       this.$emit('setDialogStatus', newval)
     }
   },
-  data () {
+  data() {
     return {
       dialogVisible: false
     }
   },
   methods: {
-    getEmployInfo () {
+    getEmployInfo() {
       this.$emit('getEmployInfo')
     }
   }
 }
 </script>
 <style lang="scss" scoped>
-.Iframe-dialog{}
+.Iframe-dialog {
+}
 </style>

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff