[
  {
    "path": ".browserslistrc",
    "content": "> 1%\nlast 2 versions\nnot ie <= 8"
  },
  {
    "path": ".editorconfig",
    "content": "# http://editorconfig.org\n\nroot = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 2\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n[*.md]\ninsert_final_newline = false\ntrim_trailing_whitespace = false\n"
  },
  {
    "path": ".eslintrc.js",
    "content": "module.exports = {\n    root: true,\n    env: {\n        node: true\n    },\n    'extends': [\n        \"plugin:vue/essential\"\n    ],\n    rules: {\n        'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',\n        'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'\n    },\n    parserOptions: {\n        parser: 'babel-eslint'\n    }\n}"
  },
  {
    "path": ".gitignore",
    "content": ".DS_Store\nnode_modules\n/dist\n\n# local env files\n.env.local\n.env.*.local\n\n# Log files\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Editor directories and files\n.idea\n.vscode\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n"
  },
  {
    "path": ".postcssrc.js",
    "content": "module.exports = {\n  plugins: {\n    autoprefixer: {}\n  }\n}"
  },
  {
    "path": "CHANGELOG.sh",
    "content": "#!/bin/bash\n## Author LinkinStar\n\n# solve the space by IFS\nIFS=`echo -en \"\\n\\b\"`\necho -en $IFS\n\nif [ -f \"CHANGELOG.md\" ];then\n    rm -f CHANGELOG.md\n    touch CHANGELOG.md\nelse\n    touch CHANGELOG.md\nfi\n\nfunction printFeat(){\n    for i in ${feat[@]}\n    do\n        echo \"- \"$i >> CHANGELOG.md\n    done\n    echo >> CHANGELOG.md\n}\n\nfunction printFix(){\n    for i in ${fix[@]}\n    do\n        echo \"- \"$i >> CHANGELOG.md\n    done\n    echo >> CHANGELOG.md\n}\n\nfunction printOther(){\n    for i in ${other[@]}\n    do\n        echo \"- \"$i >> CHANGELOG.md\n    done\n    echo >> CHANGELOG.md\n}\n\nfunction checkLog(){\n    if [[ $1 == \"feat\"* ]]\n    then\n        feat[featIndex]=$1\n        let featIndex++\n    elif [[ $1 == \"fix\"* ]]\n    then\n        fix[fixIndex]=$1\n        let fixIndex++\n    else\n        other[otherIndex]=$1\n        let otherIndex++\n    fi\n}\n\nfunction printLog(){\n    if [[ $featIndex -ne 0 ]]; then\n        echo \"### Features\" >> CHANGELOG.md\n        printFeat\n    fi\n\n    if [[ $fixIndex -ne 0 ]]; then\n        echo \"### Bug Fixes\" >> CHANGELOG.md\n        printFix\n    fi\n\n    if [[ $otherIndex -ne 0 ]]; then\n        echo \"### Other Changes\" >> CHANGELOG.md\n        printOther\n    fi\n\n    feat=()\n    featIndex=0\n\n    fix=()\n    fixIndex=0\n\n    other=()\n    otherIndex=0\n}\n\ncurDate=\"\"\nfunction checkDate()\n{\n    if [[ $curDate = $1 ]]; then\n        return\n    fi\n    curDate=$1\n\n    printLog\n\n    echo >> CHANGELOG.md\n    echo \"## \"$curDate >> CHANGELOG.md\n}\n\ncommitMessageList=`git log --date=format:'%Y-%m-%d' --pretty=format:'%cd%n%s'`\n\nindex=0\n\nfor i in ${commitMessageList[@]}\ndo\n    if [[ $index%2 -eq 0 ]]\n    then\n        checkDate $i\n    else\n        #echo \"- \"$i >> CHANGELOG.md\n        checkLog $i\n    fi\n\n    let index++\ndone\n\nprintLog\n\n"
  },
  {
    "path": "LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "README.en.md",
    "content": "![输入图片说明](img/1.png)\n\n### Applicable scenarios:\n*Applicable to enterprises and teams, it provides online notes, knowledge precipitation, online product manuals, knowledge bases, online electronic tutorials and other functions.\n###Problems solved:\n-* * problem of data capitalization * *: without appropriate document management tools, it is difficult to transform the intangible knowledge of employees into tangible assets of the enterprise, resulting in a waste of a lot of resources in training, learning and display, and the effect is not satisfactory.\n-* * unified control of files * *: data files are scattered in employees' computers, so it is difficult to form effective unified control. Unstructured content needs to be managed from the whole process of file generation, use and flow\n-* * problem of knowledge flow * *: the flow speed of information is an important guarantee for the efficient operation of enterprises. The deconstructed data is managed by the business system, but the unstructured information is a reliable flow channel, which basically depends on roaring, USB flash disk and inquiry\n-* * information retrieval problem * *: because the file is not deconstructed, it is not easy to retrieve and find, which is the lack of an effective enterprise level \"Baidu\"\n-* * information security problems * *: the enterprise cannot effectively manage files at different levels, and there is a risk of information disclosure on the SaaS platform on the Internet. Privatization + internal authority control is the basis\n**Worry free · enterprise document = enterprise knowledge base + online editing tool set + enterprise search engine + content display platform**\n### Technology stack selection\n-Front end: Vue + element UI\n-Back end: Spring_ cloud_ alibaba、spring boot、Mybatis plus、Nacos、RabbitMq、Xxl-job\n-Data: MySQL, elasticsearch, redis, MariaDB (as appropriate)\n-Operation and maintenance: k8s + docker\n### Project value\n*When using low-cost products with more than 30 users, the cost is lower than SaaS products, and the number of useless households is limited\n*Information security, privatization deployment (physical server or private cloud). The core of privatization is data control. There is no data control and it belongs to a third party\n*Technology is open, using general technology stack, supporting 100% code opening, supporting secondary development, and will not be kidnapped by any service provider\n*Corporate operation. The project is a company level commercial operation project and an important guarantee for continuous iteration and support services of the project\n*Technical support, the team supporting the project promotion belongs to senior personnel in the industry\n*Expansibility thinking: the project is a part of the enterprise's digital transformation. It has learned a lot from the experience of nailing, flying book and other large platforms, made a lot of tailoring and adjustment to the Internet and C-end related capabilities, and absorbed a lot of ideas and experience of to B product design.\n### Core functions:\n*Integrate multiple file editors (rich text editor, online form, online brain map, online flow chart, etc., and the editor will continue to expand)\n*Preview and analysis of various files (preview of PDF, word, PPT, Excel and other files)\n*Collaborative editing of core documents (rich text and online forms)\n*Support teamwork ()\n*Provide enterprise search engine (title based, content-based)\n*Support document content comments and document collection\n*Support document sharing (password secondary verification setting)\n*Support document templates\n*Enterprise level organizational structure and authority management (rigid organization + flexible group)\n#### Corpus (knowledge base) management\n*The whole station intelligent search engine supports document level and content level retrieval\n*Addition, deletion, modification and query of Anthology\n*Collaboration of team members of the collection (viewable and editable)\n*Directory structured management of Anthology\n*Basic introduction of the anthology\n*Participants and collaborators of knowledge base\n*Support multi role collaboration (member, manager, owner)\n#### Document management:\n*Support rich text (word like), brain map (XMIND like) and flow chart (VISO like)\n*Addition, deletion, modification and query of documents, online editing of documents\n*Document sharing settings\n#### Rich text editing:\n*Text outline, subtitle navigation\n*Support WYSIWYG\n*Support form\n*Support rich text expression plug-ins such as pictures, tables, third-party applications, audio, video, etc\n*Support code block, reference\n*Support source code viewing\n## Project composition\nEnterprise documents are divided into business foreground and management background. The project is composed of business foreground and business background:\n-Business front end address: https://gitee.com/software-minister/jvs-knowledge-ui\n-Business front end address: https://gitee.com/software-minister/jvs-apply-document\n-Management background front end address: https://gitee.com/software-minister/jvs-ui\n-Back end address of management background: https://gitee.com/software-minister/jvs\n## Demo address\nDemo address: http://knowledge.bctools.cn/ \n\nTrial account: you can log in by scanning the wechat code. If you need to try the account password, please contact us with QR code\nPartial screenshot:\n![输入图片说明](img/2.png)\n![输入图片说明](img/3.png)\n-\n![输入图片说明](img/4.png)\n-\n![输入图片说明](img/5.png)\n-\n![输入图片说明](img/6.png)\n![输入图片说明](img/7.png)\n![输入图片说明](img/8.png)\n### Rapid deployment document\nhttps://gitee.com/software-minister/jvs-docker-compose/blob/master/readme.md\n### Use and authorization\nThe worry free enterprise document community version is 100% open source. Under the condition of compliance filing, it supports self-use and commercial use, and commercial use provides 100% source code.\n### Version Description:\nUse purpose | fee mode | use conditions | authorization time\n-|-|-|-\nIndividual study | free | free filing | permanent\nCommercial, secondary development | charge, code delivery | technical service contract + Commercial filing | permanent\n### Description of commercial expenses:\n>Technical service fee, required. Please contact the business department for the specific fee\n>Customized development fee, optional, 1500 yuan/person day\n>Deployment cost, optional, 500 yuan/time\n>Long term operation and maintenance, optional, negotiation\nFiling instructions: contact our business personnel for online filing. Filing content: project name, use mode (self use/commercial use), filing subject, filing contact personnel.\n### Prohibited behaviors (to ensure the product goes further):\n*Code distribution in any form (including but not limited to code copy, code disclosure, code open source, code sharing, etc.) is prohibited without our approval\n*It is prohibited to use without filing (including self use and commercial use)\n### Technical exchange and business support\n![输入图片说明] (img/image20220522.png)\n### Update history:\nV1.3  20211202 \n*Modify some UI display diagrams\n*Add online preview of multiple file formats\n*Add software introduction page\n*Add the view of personnel under the current tenant and within the organization\n*Add knowledge base background replacement\n*Fix some bugs\n### Current version\nV1.5\n*Support multi person online collaborative editing at the same time\n*Optimize drawing function\n*Document knowledge base sharing\n*Template management\n*Access WPS"
  },
  {
    "path": "README.md",
    "content": "![输入图片说明](img/1.png)\n\n### 适用场景：\n* 适用于企业、团队，提供在线笔记、知识沉淀、在线产品手册、知识库、在线电子教程等功能。\n\n### 解决的问题：\n-  **数据资产化的问题** ：没有合适的文件管理工具，很难对员工无形知识转化为企业的有形资产，导致培训、学习、展示上浪费了大量的资源，而且效果还不尽人意。\n-  **文件统一管控问题** ：数据文件分散在员工各自的电脑中，很难形成有效的统一管控，需要从文件的生成、使用、流动整个过程对 非结构化内容进行管理\n-  **知识流动的问题** ：信息的流动速度是企业高效运转的重要保障，解构化的数据由业务系统管理起来，但是非结构化的信息确实可靠的流动渠道，基本靠吼、靠U盘，靠问\n-  **信息的检索问题** ：文件由于没有解构化，所以不便于检索查找，是缺乏一个有效的企业级“百度”\n-  **信息安全的问题** ：企业内部无法有效的分级管理文件，放在互联网上的SaaS平台又存在信息泄露风险，私有化+内部权限管控是基础\n\n**无忧·企业文档=企业级知识库+在线编辑工具集+企业搜索引擎+内容展示平台**\n![输入图片说明](img/%E5%9C%BA%E6%99%AF%E5%9B%BE%E7%89%87%E4%BB%8B%E7%BB%8D.png)\n\n\n### 技术栈选择\n\n- 前端：VUE+Element-ui\n- 后端：spring_cloud_alibaba、spring boot、Mybatis plus、Nacos、RabbitMq、Xxl-job\n- 数据：Mysql、ElasticSearch、Redis、MariaDB（根据情况）\n- 运维：K8S+docker\n\n\n### 项目价值\n* 使用低成本，超过30个用户产品的使用时，成本低于SaaS产品，且无用户数的限制\n* 信息安全，私有化部署（实体服务器或者私有云），私有化的核心是数据可控，不存在数据控制归第三方\n* 技术开放，采用通用技术栈，支持100%代码开放，支持二次开发，不会被任何服务商绑架\n* 公司化运作，项目是公司级商业运营项目，是项目持续化迭代与支持服务的重要保障\n* 技术支持，支持项目推进的团队属于行业行业资深人员\n* 扩展性思考，项目属于企业数字化转型的其中一部分，吸取钉钉、飞书、等大平台的很多经验借鉴，且对互联网、C端相关的能力做了大量裁剪与调整，吸收了大量的to B的产品设计的思路与经验。\n\n\n### 核心功能：\n* 集成多种文件编辑器（富文本编辑器、在线表格、在线脑图、在线流程图等，编辑器将会持续扩展）\n* 多种文件的预览解析（PDF、Word、PPT、Excel等多种文件预览）\n* 核心文档的协同编辑（富文本与在线表格）\n* 支持团队化协同操作（）\n* 提供企业级搜索引擎（基于标题、基于内容）\n* 支持文档内容评论与文档收藏\n* 支持文档分享（密码二次校验设置）\n* 支持文档模板\n* 企业级组织构架与权限管理（刚性组织+柔性群组）\n#### 文集（知识库）管理\n* 全站智能搜索引擎，支持文档级、内容级检索\n* 文集的增删改查\n* 文集的团队成员协作（可查看、可编辑）\n* 文集的目录结构化管理\n* 文集的基础介绍\n* 知识库的参与协作人员\n* 支持多种角色协同（成员、管理者、所有者）\n#### 文档管理：\n* 支持富文本（类word）、脑图（类Xmind）、流程图（类viso）\n* 文档的增删改查、文档在线编辑\n* 文档的分享设置\n#### 富文本编辑：\n* 文本大纲，小标题导航\n* 支持所见即所得\n* 支持表格\n* 支持图片、表格、三方应用、音频、视频、等富文本表达插件\n* 支持代码块、引用、\n* 支持源代码查看\n\n\n\n\n## 项目组成\n企业文档分为业务前台与管理后台，项目由 业务前台与业务后台组成：\n\n- 业务前台前端地址：https://github.com/RKQF-JVS/jvs-knowledge-ui\n- 业务前台后端地址：https://github.com/RKQF-JVS/jvs-apply-document\n- 管理后台前端地址：https://github.com/RKQF-JVS/jvs-ui/tree/2.1.0/\n- 管理后台后端地址：https://github.com/RKQF-JVS/jvs/tree/2.1.0/\n\n## 部署视频  \nhttps://www.bilibili.com/video/BV1BN411q79Y\n\n\n### **体验地址与账号说明**\n![输入图片说明](img/image%E8%B4%A6%E5%8F%B7.png)\n账号说明：\n\n- 普通用户端：体验者自有微信扫码登录\n- 管理端(全网共享)：testadmin  123456\n- 管理端+应用编辑：联系运营微信号 ruanjbz，开设独立环境与独立账号\n- 管理端+平台配置+应用编辑：联系运营微信号 ruanjbz，获取私有化部署文档与安装包\n\n\n地址说明：\n![输入图片说明](img/jvs%E4%BA%A7%E5%93%81%E4%BD%93%E7%B3%BB.png)\n- 管理平台（含管理平台、低代码）：https://frame.bctools.cn/\n- 数据智仓（数据分析平台）：http://bi.bctools.cn/\n- 企业文档：http://knowledge.bctools.cn/\n- 企业计划（项目管理）：http://teamwork.bctools.cn/\n- 企业邮筒（Web邮箱客户端）：http://mailbox.bctools.cn/\n- 规则引擎：http://rules.bctools.cn/\n- 逻辑引擎：http://logic.bctools.cn/\n- 视频会议：http://meeting.bctools.cn/\n- APS（智能排产）：https://aps.bctools.cn/\n\n\n部分截图：\n\n![image](https://github.com/RKQF-JVS/jvs-knowledge-ui/assets/94048608/bcbbfb87-708c-43d6-91ff-51c4b28b94b5)\n-\n![image](https://github.com/RKQF-JVS/jvs-knowledge-ui/assets/94048608/64c35f5a-8883-4172-81af-b616d63358c1)\n-\n![image](https://github.com/RKQF-JVS/jvs-knowledge-ui/assets/94048608/f8db8da0-5b2a-44d5-a66b-2105932445f1)\n-\n![image](https://github.com/RKQF-JVS/jvs-knowledge-ui/assets/94048608/381bddbf-8a54-4ff0-9e55-73d83216c36a)\n-\n![image](https://github.com/RKQF-JVS/jvs-knowledge-ui/assets/94048608/9064a8c0-6654-4d18-92ce-3d0852cde622)\n-\n![image](https://github.com/RKQF-JVS/jvs-knowledge-ui/assets/94048608/b59eb016-e933-44a1-be57-1ef14875b2d9)\n-\n![image](https://github.com/RKQF-JVS/jvs-knowledge-ui/assets/94048608/b55a225a-4592-41b2-93f4-258487f47830)\n-\n![image](https://github.com/RKQF-JVS/jvs-knowledge-ui/assets/94048608/e2243775-9d0a-470e-b65a-bc13b7baf8f4)\n-\n![image](https://github.com/RKQF-JVS/jvs-knowledge-ui/assets/94048608/08bca2d9-b472-41a2-bcc2-0ac1afd6fe3f)\n\n-\n\n\n\n### 快速部署文档\nhttps://github.com/RKQF-JVS/jvs-docker-compose/blob/master/readme.md\n\n\n\n### 技术交流与商务支持\n\n<img width=\"261\" height=\"424\" alt=\"0b3c772279ce09b82231b8bae7812a24\" src=\"https://github.com/user-attachments/assets/aa641007-d0c1-4622-9de6-74a7f37d3f12\" />\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n如因人数限制无法加群时，可加运营同学拉入技术交流群\n\n![谭京](https://github.com/user-attachments/assets/53838ea6-d0c7-4bb1-abf2-cdfb99cb9743)\n\n\n\n### 历史更新记录：\nV1.3  20211202 \n\n* 修改部分UI展示图\n* 添加多种文件格式在线预览\n* 添加软件介绍页\n* 添加当前租户下与组织内人员查看\n* 添加知识库背景替换\n* 修复部分BUG\n\n### 当前版本\nV1.5\n* 支持多人在线同时协同编辑\n* 优化画图功能\n* 文档知识库分享\n* 模板管理\n* 接入WPS\n"
  },
  {
    "path": "babel.config.js",
    "content": "module.exports = {\n  presets: [\n    ['@vue/app', { useBuiltIns: \"entry\" }]\n  ]\n}\n"
  },
  {
    "path": "docker/Dockerfile",
    "content": "FROM nginx:1.15.4\nVOLUME /tmp\nENV LANG en_US.UTF-8\nCOPY dist  /usr/share/nginx/html/\nENV TZ=Asia/Shanghai\nRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone\n#这个地方一定要把之前的默认给替换掉，不然使用这个默认nginx的镜像会无法替换配置\nCOPY my.conf  /etc/nginx/conf.d/default.conf\nEXPOSE 80\nEXPOSE 443\n"
  },
  {
    "path": "docker/docker-compose.yml",
    "content": "version: '3'\nservices:\n  jvs-knowledge-ui:\n    build:\n      context: .\n    restart: always\n    container_name: jvs-knowledge-ui\n    image: jvs-knowledge-ui\n    networks:\n      - jvs_jvs\n    external_links:\n      - gateway\n    ports:\n      - 80:80\n\nnetworks:\n  jvs_jvs:\n    external: true\n"
  },
  {
    "path": "docker/my.conf",
    "content": "server {\n  listen 80;\n  server_name localhost;\n  add_header X-Content-Type-Options nosniff;\n  charset utf-8;\n  client_header_buffer_size 1024k;\n  large_client_header_buffers 4 1024k;\n  client_max_body_size 50m;\n  #前端\n  root /usr/share/nginx/html/;\n\n  # 跳转至登录页\n  location = / {\n      index index.html;\n      try_files /usr/share/nginx/html /jvs-knowledge-ui/index.html;\n  }\n\n  location ^~ /jvs-knowledge-ui/ {\n      index index.html ;\n      try_files $uri $uri/ /jvs-knowledge-ui/index.html;\n  }\n\n   #静态资源\n  location ^~ /static/ {\n      root /usr/share/nginx/html/;\n  }\n\n  location ^~ /jvs-ui-public/ {\n      root /usr/share/nginx/html/;\n  }\n\n  #其它路径全部代理到网关接口中\n  location /api/ {\n    proxy_cookie_path /jvs-knowledge-ui /jvs-knowledge-ui;\n    proxy_cookie_path / /;\n    proxy_redirect off;\n    proxy_set_header Host $host;\n    proxy_set_header X-real-ip $remote_addr;\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n    proxy_pass http://gateway:10000/api/;\n    proxy_http_version 1.1;\n    proxy_set_header Upgrade $http_upgrade;\n    proxy_set_header Connection  upgrade;\n  }\n\n   #其它路径全部代理到网关接口中\n  location / {\n    proxy_cookie_path /jvs-knowledge-ui /jvs-knowledge-ui;\n    proxy_cookie_path / /;\n    proxy_redirect off;\n    proxy_set_header Host $host;\n    proxy_set_header X-real-ip $remote_addr;\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n    proxy_set_header X-Forwarded-Proto http;\n    proxy_pass http://gateway:10000/;\n    proxy_http_version 1.1;\n    proxy_set_header Upgrade $http_upgrade;\n    proxy_set_header Connection  upgrade;\n  }\n}\n\n"
  },
  {
    "path": "expendPlugins/chart/chartmix.css",
    "content": ".luckysheet-datavisual-quick-menu{width:120px;overflow:auto;margin-top:15px}.luckysheet-datavisual-quick-menu::-webkit-scrollbar{display:none}.luckysheet-datavisual-quick-menu>div{text-align:left;padding:4px 4px;border-right:3px solid #fff;color:#777;cursor:pointer;line-height:1.4em;word-wrap:break-word}.luckysheet-datavisual-quick-menu>div:hover{color:#000}.luckysheet-datavisual-quick-menu>div i{width:15px}.luckysheet-datavisual-quick-menu>div:hover i{color:#ff7e7e}.luckysheet-datavisual-quick-menu>div.luckysheet-datavisual-quick-menu-active{border-right:3px solid #ff7e7e;color:#000;font-weight:700}.luckysheet-datavisual-quick-menu>div.luckysheet-datavisual-quick-menu-active:hover i{color:#000}.luckysheet-datavisual-quick-range{padding:5px 0}.luckysheet-datavisual-range-container{background:#fff;border:1px solid #d9d9d9;border-top:1px solid silver;min-width:20px;width:100%;max-width:200px;display:inline-block}.luckysheet-datavisual-range-container-focus{border:1px solid #4d90fe;box-shadow:inset 0 1px 2px rgba(0,0,0,.3);outline:none}.luckysheet-datavisual-range-input,.luckysheet-datavisual-range-input:focus{background:transparent!important;border:none!important;box-sizing:border-box;box-shadow:none;height:25px;margin:0;outline:none!important;padding:1px 8px!important;width:100%}.luckysheet-datavisual-range-button-container{overflow:hidden;padding:0 0 0 8px;text-align:right;width:21px}.luckysheet-datavisual-range-button-container div{padding:2px 10px 0 10px;font-size:18px;cursor:pointer;color:#6598f3}.luckysheet-datavisual-range-button-container div:hover{color:#ff7e7e}.luckysheet-datavisual-quick-m{margin-top:5px;min-height:500px;top:50px;font-size:12px}.luckysheet-datavisual-quick-list{left:110px;right:0;bottom:0;top:80px;position:absolute;overflow:auto;border-top:1px solid #e5e5e5;padding:5px 3px 35px 3px}.luckysheet-datavisual-quick-list-title{padding:4px 6px;background:#e5e5e5;margin-top:10px}.luckysheet-datavisual-quick-list-ul{overflow:hidden}.luckysheet-datavisual-quick-list-item{display:inline-block;margin:5px 8px;border:1px solid #dadada;width:100px;height:80px}.luckysheet-datavisual-quick-list-item:hover{border:1px solid #ff7e7e;box-shadow:0 0 20px #ff7e7e}.luckysheet-datavisual-quick-list-item img{display:inline-block;width:100px;height:80px}.luckysheet-datavisual-quick-list-item-active{border:1px solid #6598f3;box-shadow:0 0 20px #6598f3}.chart-base-slider .el-slider__runway.show-input{margin-right:72px}.chart-base-slider .el-slider__input.el-input-number--mini{width:56px}.chart-base-slider .input_content{margin:6px 0 0 5px}.title{font-weight:700}.el-row{font-size:12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chartSetting{width:100%;height:100%}"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"jvs-knowledge-ui\",\n  \"version\": \"2020.09.24\",\n  \"private\": true,\n  \"scripts\": {\n    \"pre\": \"cnpm install || yarn --registry https://registry.npm.taobao.org || npm install --registry https://registry.npm.taobao.org \",\n    \"dev\": \"vue-cli-service serve\",\n    \"build\": \"vue-cli-service build\",\n    \"lint\": \"vue-cli-service lint\",\n    \"connect\": \"node server/index.js\"\n  },\n  \"dependencies\": {\n    \"axios\": \"^0.19.0\",\n    \"babel-polyfill\": \"^6.26.0\",\n    \"classlist-polyfill\": \"^1.2.0\",\n    \"crypto-js\": \"^3.1.9-1\",\n    \"element-tiptap\": \"^1.26.2\",\n    \"element-ui\": \"^2.13.0\",\n    \"js-cookie\": \"^2.2.1\",\n    \"js-base64\": \"^3.6.1\",\n    \"luckyexcel\": \"^1.0.0\",\n    \"mind-elixir\": \"^0.14.0\",\n    \"nprogress\": \"^0.2.0\",\n    \"qrcodejs2\": \"^0.0.2\",\n    \"script-loader\": \"^0.7.2\",\n    \"topology-vue\": \"^0.5.22\",\n    \"uuid\": \"^8.3.2\",\n    \"vue\": \"^2.6.10\",\n    \"vue-axios\": \"^2.1.4\",\n    \"vue-clipboard2\": \"^0.3.1\",\n    \"vue-router\": \"^3.1.3\",\n    \"vuex\": \"^3.1.1\",\n    \"wangeditor\": \"^4.5.2\"\n  },\n  \"devDependencies\": {\n    \"@vue/cli-plugin-babel\": \"^3.11.0\",\n    \"@vue/cli-plugin-eslint\": \"^3.8.0\",\n    \"@vue/cli-service\": \"^3.11.0\",\n    \"chai\": \"^4.2.0\",\n    \"node-sass\": \"^4.13.1\",\n    \"sass-loader\": \"^8.0.0\",\n    \"sass-resources-loader\": \"^2.0.3\",\n    \"socket.io\": \"^2.3.0\",\n    \"socket.io-client\": \"^2.3.0\",\n    \"vue-json-viewer\": \"^2.2.12\",\n    \"vue-socket.io\": \"^2.1.1-a\",\n    \"vue-template-compiler\": \"^2.6.10\"\n  },\n  \"lint-staged\": {\n    \"*.js\": [\n      \"vue-cli-service lint\",\n      \"git add\"\n    ],\n    \"*.vue\": [\n      \"vue-cli-service lint\",\n      \"git add\"\n    ]\n  }\n}\n"
  },
  {
    "path": "public/index.html",
    "content": "<!DOCTYPE html>\n<html>\n\n<head>\n  <title>无忧 - 企业文档</title>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n  <meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0\">\n  <meta name=\"apple-mobile-web-app-capable\" content=\"yes\">\n  <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black\">\n  <meta name=\"format-detection\" content=\"telephone=no\">\n  <meta http-equiv=\"X-UA-Compatible\" content=\"chrome=1\" />\n  <meta name=\"referrer\" content=\"no-referrer\">\n  <link rel=\"stylesheet\" href=\"<%= BASE_URL %>jvs-ui-public/cdn/animate/3.5.2/animate.css\">\n  <link rel=\"stylesheet\" href=\"<%= BASE_URL %>jvs-ui-public/cdn/iconfont/1.0.0/index.css\">\n  <link rel=\"stylesheet\" href=\"<%= BASE_URL %>jvs-ui-public/cdn/jvs/jvs.css\">\n  <script src=\"<%= BASE_URL %>jvs-ui-public/jquery-3.4.1.min.js\"></script>\n  <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/css/pluginsCss.css' />\n  <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/plugins.css' />\n  <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/css/luckysheet.css' />\n  <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet/dist/assets/iconfont/iconfont.css' />\n  <script src=\"https://cdn.jsdelivr.net/npm/luckysheet/dist/plugins/js/plugin.js\"></script>\n  <script src=\"https://cdn.jsdelivr.net/npm/luckysheet/dist/luckysheet.umd.js\"></script>\n  <script src=\"https://cdn.jsdelivr.net/npm/mind-elixir@0.6.1/dist/mind-elixir.js\"></script>\n\n  <!-- 常用图标 -->\n  <link href=\"//at.alicdn.com/t/font_1331132_g7tv7fmj6c9.css\" rel=\"stylesheet\" />\n  <!-- 新通用图标topology-new -->\n  <link href=\"//at.alicdn.com/t/font_2030495_6tq2su2jmyx.css\" rel=\"stylesheet\" />\n  <!-- 老图标 -->\n  <link href=\"//at.alicdn.com/t/font_1331132_5lvbai88wkb.css\" rel=\"stylesheet\" />\n  <script src=\"http://topology.le5le.com/js/canvas2svg.js\"></script>\n  <script src=\"https://cdn.jsdelivr.net/npm/marked/marked.min.js\"></script>\n  <script src=\"https://cdn.bootcss.com/jszip/3.2.2/jszip.min.js\"></script>\n  <script src=\"https://cdn.bootcdn.net/ajax/libs/echarts/4.8.0/echarts.min.js\"></script>\n\n</head>\n\n<body>\n  <noscript>\n    <strong>很抱歉，如果没有 JavaScript 支持，网站将不能正常工作。请启用浏览器的 JavaScript 然后继续。</strong>\n  </noscript>\n  <div id=\"app\">\n    <div class=\"jvs-home\">\n      <div class=\"jvs-home__main\">\n        <img class=\"jvs-home__loading_gif\" src=\"<%= BASE_URL %>jvs-ui-public/img/loading.gif\" alt=\"\">\n        <!-- <img class=\"jvs-home__loading\" src=\"<%= BASE_URL %>jvs-ui-public/img/loading.png\" alt=\"loading\"> -->\n        <div class=\"jvs-home__title\">\n          正在加载资源\n        </div>\n        <div class=\"jvs-home__sub-title\">\n          初次加载资源可能需要较多时间 请耐心等待\n        </div>\n      </div>\n\n    </div>\n  </div>\n  <!-- built files will be auto injected -->\n  <script src=\"<%= BASE_URL %>jvs-ui-public/cdn/axios/1.0.0/axios.min.js\" charset=\"utf-8\"></script>\n</body>\n\n</html>\n"
  },
  {
    "path": "public/jvs-ui-public/cdn/animate/3.5.2/animate.css",
    "content": "@charset \"UTF-8\";\n\n/*!\n * animate.css -http://daneden.me/animate\n * Version - 3.5.1\n * Licensed under the MIT license - http://opensource.org/licenses/MIT\n *\n * Copyright (c) 2016 Daniel Eden\n */\n\n.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}.animated.bounceIn,.animated.bounceOut,.animated.flipOutX,.animated.flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounce{0%,20%,53%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}40%,43%,70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}70%{-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,20%,53%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}40%,43%,70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}70%{-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}.headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}.swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:none;transform:none}}@keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{0%,11.1%,to{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{0%,11.1%,to{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) rotateY(-1turn);transform:perspective(400px) rotateY(-1turn)}0%,40%{-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(-190deg);transform:perspective(400px) translateZ(150px) rotateY(-190deg)}50%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(-170deg);transform:perspective(400px) translateZ(150px) rotateY(-170deg)}50%,80%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95)}to{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) rotateY(-1turn);transform:perspective(400px) rotateY(-1turn)}0%,40%{-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(-190deg);transform:perspective(400px) translateZ(150px) rotateY(-190deg)}50%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(-170deg);transform:perspective(400px) translateZ(150px) rotateY(-170deg)}50%,80%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95)}to{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}0%,40%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg)}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}0%,40%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg)}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}0%,40%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg)}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}0%,40%{-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg)}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg)}60%,80%{opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg)}60%,80%{opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{transform-origin:center;-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}0%,to{-webkit-transform-origin:center}to{transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{0%{transform-origin:center;-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}0%,to{-webkit-transform-origin:center}to{transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{0%{transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{transform-origin:right bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{0%{transform-origin:right bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{0%{transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{transform-origin:right bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{0%{transform-origin:right bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{transform-origin:center;opacity:1}0%,to{-webkit-transform-origin:center}to{transform-origin:center;-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{transform-origin:center;opacity:1}0%,to{-webkit-transform-origin:center}to{transform-origin:center;-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{transform-origin:left bottom;opacity:1}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{transform-origin:left bottom;opacity:1}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{transform-origin:right bottom;opacity:1}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{transform-origin:right bottom;opacity:1}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{transform-origin:left bottom;opacity:1}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{transform-origin:left bottom;opacity:1}0%,to{-webkit-transform-origin:left bottom}to{transform-origin:left bottom;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{transform-origin:right bottom;opacity:1}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{transform-origin:right bottom;opacity:1}0%,to{-webkit-transform-origin:right bottom}to{transform-origin:right bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{transform-origin:top left}0%,20%,60%{-webkit-transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);transform-origin:top left}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{transform-origin:top left}0%,20%,60%{-webkit-transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);transform-origin:top left}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}@keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%,to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%,to{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}"
  },
  {
    "path": "public/jvs-ui-public/cdn/iconfont/1.0.0/index.css",
    "content": "\n[class^=\"icon-\"]{\n\tfont-family: \"iconfont\" !important;\n\t/* 以下内容参照第三方图标库本身的规则 */\n\tfont-size: 18px !important;\n\tfont-style: normal;\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n.jvs-icon-select__item i {\n  font-family: \"iconfont\" !important;\n  /* 以下内容参照第三方图标库本身的规则 */\n  font-size: 24px !important;\n  font-style: normal;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.el-menu-item [class^=icon-] {\n    margin-right: 5px;\n    width: 24px;\n    text-align: center;\n    font-size: 18px;\n    vertical-align: middle;\n}\n.el-submenu [class^=icon-] {\n    vertical-align: middle;\n    margin-right: 5px;\n    width: 24px;\n    text-align: center;\n    font-size: 18px;\n}\n"
  },
  {
    "path": "public/jvs-ui-public/cdn/jvs/jvs.css",
    "content": "html,\nbody,\n#app {\n    height: 100%;\n    margin: 0;\n    padding: 0;\n}\n\n.jvs-home {\n    /* background-color: #303133; */\n    background-color: #fff;\n    height: 100%;\n    display: flex;\n    flex-direction: column;\n}\n\n.jvs-home__main {\n    user-select: none;\n    width: 100%;\n    flex-grow: 1;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    flex-direction: column;\n    position: relative;\n}\n\n.jvs-home__footer {\n    width: 100%;\n    flex-grow: 0;\n    text-align: center;\n    padding: 1em 0;\n}\n\n.jvs-home__footer > a {\n    font-size: 12px;\n    color: #ABABAB;\n    text-decoration: none;\n}\n\n.jvs-home__loading {\n    height: 32px;\n    width: 32px;\n    margin-bottom: 20px;\n}\n\n.jvs-home__title {\n    /* color: #FFF; */\n    font-size: 14px;\n    margin-bottom: 10px;\n    color: #303133;\n    display: none;\n}\n\n.jvs-home__sub-title {\n    /* color: #ABABAB; */\n    font-size: 12px;\n    color: #303133;\n    display: none;\n}\n\n.jvs-home__loading {\n    height: 32px;\n    width: 32px;\n    margin-bottom: 20px;\n    color: #303133;\n    animation: loadingAll 1.5s linear infinite;\n    \n}\n@keyframes loadingAll{\n    0%{-webkit-transform:rotate(0deg);}\n    25%{-webkit-transform:rotate(90deg);}\n    50%{-webkit-transform:rotate(180deg);}\n    75%{-webkit-transform:rotate(270deg);}\n    100%{-webkit-transform:rotate(360deg);}\n}\n\n.jvs-home__loading_gif{\n    display:block;\n    width: 450px;\n    height: 360px;\n    /* position: absolute; */\n    /* top: 50px; */\n}"
  },
  {
    "path": "public/jvs-ui-public/cdn/store/1.3.20/store.js",
    "content": "'use strict'\n// Module export pattern from\n// https://github.com/umdjs/umd/blob/master/returnExports.js\n;(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define([], factory)\n  } else if (typeof exports === 'object') {\n    // Node. Does not work with strict CommonJS, but\n    // only CommonJS-like environments that support module.exports,\n    // like Node.\n    module.exports = factory()\n  } else {\n    // Browser globals (root is window)\n    root.store = factory()\n  }\n}(this, function () {\n  // Store.js\n  var store = {}\n\n  var win = (typeof window !== 'undefined' ? window : global)\n\n  var doc = win.document\n\n  var localStorageName = 'localStorage'\n\n  var scriptTag = 'script'\n\n  var storage\n\n  store.disabled = false\n  store.version = '1.3.20'\n  store.set = function (key, value) {}\n  store.get = function (key, defaultVal) {}\n  store.has = function (key) { return store.get(key) !== undefined }\n  store.remove = function (key) {}\n  store.clear = function () {}\n  store.transact = function (key, defaultVal, transactionFn) {\n    if (transactionFn == null) {\n      transactionFn = defaultVal\n      defaultVal = null\n    }\n    if (defaultVal == null) {\n      defaultVal = {}\n    }\n    var val = store.get(key, defaultVal)\n    transactionFn(val)\n    store.set(key, val)\n  }\n  store.getAll = function () {}\n  store.forEach = function () {}\n\n  store.serialize = function (value) {\n    return JSON.stringify(value)\n  }\n  store.deserialize = function (value) {\n    if (typeof value !== 'string') { return undefined }\n    try { return JSON.parse(value) } catch (e) { return value || undefined }\n  }\n\n  // Functions to encapsulate questionable FireFox 3.6.13 behavior\n  // when about.config::dom.storage.enabled === false\n  // See https://github.com/marcuswestin/store.js/issues#issue/13\n  function isLocalStorageNameSupported () {\n    try { return (localStorageName in win && win[localStorageName]) } catch (err) { return false }\n  }\n\n  if (isLocalStorageNameSupported()) {\n    storage = win[localStorageName]\n    store.set = function (key, val) {\n      if (val === undefined) { return store.remove(key) }\n      storage.setItem(key, store.serialize(val))\n      return val\n    }\n    store.get = function (key, defaultVal) {\n      var val = store.deserialize(storage.getItem(key))\n      return (val === undefined ? defaultVal : val)\n    }\n    store.remove = function (key) { storage.removeItem(key) }\n    store.clear = function () { storage.clear() }\n    store.getAll = function () {\n      var ret = {}\n      store.forEach(function (key, val) {\n        ret[key] = val\n      })\n      return ret\n    }\n    store.forEach = function (callback) {\n      for (var i = 0; i < storage.length; i++) {\n        var key = storage.key(i)\n        callback(key, store.get(key))\n      }\n    }\n  } else if (doc && doc.documentElement.addBehavior) {\n    var storageOwner,\n      storageContainer\n    // Since #userData storage applies only to specific paths, we need to\n    // somehow link our data to a specific path.  We choose /favicon.ico1\n    // as a pretty safe option, since all browsers already make a request to\n    // this URL anyway and being a 404 will not hurt us here.  We wrap an\n    // iframe pointing to the favicon in an ActiveXObject(htmlfile) object\n    // (see: http://msdn.microsoft.com/en-us/library/aa752574(v=VS.85).aspx)\n    // since the iframe access rules appear to allow direct access and\n    // manipulation of the document element, even for a 404 page.  This\n    // document can be used instead of the current document (which would\n    // have been limited to the current path) to perform #userData storage.\n    try {\n      storageContainer = new ActiveXObject('htmlfile')\n      storageContainer.open()\n      // storageContainer.write('<' + scriptTag + '>document.w=window</' + scriptTag + '><iframe src=\"/favicon.ico1\"></iframe>')\n      storageContainer.write('<' + scriptTag + '>document.w=window</' + scriptTag + '><iframe src=\"\"></iframe>')\n      storageContainer.close()\n      storageOwner = storageContainer.w.frames[0].document\n      storage = storageOwner.createElement('div')\n    } catch (e) {\n      // somehow ActiveXObject instantiation failed (perhaps some special\n      // security settings or otherwse), fall back to per-path storage\n      storage = doc.createElement('div')\n      storageOwner = doc.body\n    }\n    var withIEStorage = function (storeFunction) {\n      return function () {\n        var args = Array.prototype.slice.call(arguments, 0)\n        args.unshift(storage)\n        // See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx\n        // and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx\n        storageOwner.appendChild(storage)\n        storage.addBehavior('#default#userData')\n        storage.load(localStorageName)\n        var result = storeFunction.apply(store, args)\n        storageOwner.removeChild(storage)\n        return result\n      }\n    }\n\n    // In IE7, keys cannot start with a digit or contain certain chars.\n    // See https://github.com/marcuswestin/store.js/issues/40\n    // See https://github.com/marcuswestin/store.js/issues/83\n    var forbiddenCharsRegex = new RegExp(\"[!\\\"#$%&'()*+,/\\\\\\\\:;<=>?@[\\\\]^`{|}~]\", 'g')\n    var ieKeyFix = function (key) {\n      return key.replace(/^d/, '___$&').replace(forbiddenCharsRegex, '___')\n    }\n    store.set = withIEStorage(function (storage, key, val) {\n      key = ieKeyFix(key)\n      if (val === undefined) { return store.remove(key) }\n      storage.setAttribute(key, store.serialize(val))\n      storage.save(localStorageName)\n      return val\n    })\n    store.get = withIEStorage(function (storage, key, defaultVal) {\n      key = ieKeyFix(key)\n      var val = store.deserialize(storage.getAttribute(key))\n      return (val === undefined ? defaultVal : val)\n    })\n    store.remove = withIEStorage(function (storage, key) {\n      key = ieKeyFix(key)\n      storage.removeAttribute(key)\n      storage.save(localStorageName)\n    })\n    store.clear = withIEStorage(function (storage) {\n      var attributes = storage.XMLDocument.documentElement.attributes\n      storage.load(localStorageName)\n      for (var i = attributes.length - 1; i >= 0; i--) {\n        storage.removeAttribute(attributes[i].name)\n      }\n      storage.save(localStorageName)\n    })\n    store.getAll = function (storage) {\n      var ret = {}\n      store.forEach(function (key, val) {\n        ret[key] = val\n      })\n      return ret\n    }\n    store.forEach = withIEStorage(function (storage, callback) {\n      var attributes = storage.XMLDocument.documentElement.attributes\n      for (var i = 0, attr; attr = attributes[i]; ++i) {\n        callback(attr.name, store.deserialize(storage.getAttribute(attr.name)))\n      }\n    })\n  }\n\n  try {\n    var testKey = '__storejs__'\n    store.set(testKey, testKey)\n    if (store.get(testKey) != testKey) { store.disabled = true }\n    store.remove(testKey)\n  } catch (e) {\n    store.disabled = true\n  }\n  store.enabled = !store.disabled\n\n  return store\n}))\n"
  },
  {
    "path": "public/jvs-ui-public/icon.js",
    "content": "$(document).ready(function(){\n  htmlobj=$.ajax({url:\"/admin/mainPage/getMainIcon\",async:false,\n      success:function(data){\n      // console.log(data);\n        var link = document.createElement('link');\n        link.type = 'image/x-icon';\n        link.rel = 'shortcut icon';\n        link.src = 'data:image/jpg;base64,'+data.data;\n        document.getElementsByTagName('head')[0].appendChild(link);\n        console.log($(\"[rel='shortcut icon']\").attr(\"src\"));\n      }\n    });\n\n});\n"
  },
  {
    "path": "src/App.vue",
    "content": "<template>\n  <div id=\"app\">\n    <div class=\"basic-cont-box\">\n      <router-view />\n    </div>\n  </div>\n</template>\n\n<script>\n  import store from '@/store'\n  import {sendRouter, getToken} from '@/api/index'\n  // constants\n  import * as globalTypes from '@/store/types/global'\n  import icoImg from '@/styles/titleMg.png'\n  export default {\n    name: 'app',\n    data() {\n      return {\n        icoImgURL: icoImg\n      }\n    },\n    watch: {},\n    created() {\n      let routerList = JSON.parse(sessionStorage.getItem('routerList'))\n      // sendRouter(routerList) // 先暂时屏蔽发送本地路由\n      var link = document.createElement('link')\n      link.type = 'image/x-icon'\n      link.rel = 'shortcut icon'\n      link.href = this.icoImgURL\n      document.getElementsByTagName('head')[0].appendChild(link);\n    },\n    methods: {},\n    computed: {}\n  }\n</script>\n<style lang=\"scss\">\n  #app {\n    width: 100%;\n    height: 100vh;\n    overflow: hidden;\n  }\n  ul, li {\n    list-style: none;\n  }\n  .basic-cont-box{\n    // padding: 8px 10px;\n    position: relative;\n    height: 100%;\n    box-sizing: border-box;\n  }\n</style>\n<style lang=\"scss\" scoped>\n  .theme-text{\n    position: fixed;\n    right: 0;\n    top: 50%;\n    z-index: 9999999999999;\n  }\n  .theme-box {\n    width: 100%;\n    height: 100%;\n  }\n</style>\n"
  },
  {
    "path": "src/api/common.js",
    "content": "import request from '@/router/axios'\n\n// 公共的字典转换接口\nexport function byKeyDicData (url) {\n  return request({\n    url: url,\n    method: 'get'\n  })\n}\n\n// 部门人员树\nexport function getDeptUserTree(){\n  return request({\n    url: `/mgr/jvs-auth//dept/user/tree`,\n    method:'get'\n  })\n}\n\n// 搜索用户\nexport function searchUser(params){\n  return request({\n    url: `/mgr/jvs-auth//user/user/search`,\n    method:'get',\n    params: params\n  })\n}"
  },
  {
    "path": "src/api/index.js",
    "content": "import request from \"@/router/axios\"\n\n// 获取下拉列表\nexport const getSelectData = (str) => {\n  return request({\n      url: str,\n      method: 'get',\n  })\n}"
  },
  {
    "path": "src/api/login.js",
    "content": "import request from \"@/router/axios\";\nimport {scope, client_id, client_secret, grant_type} from '@/const/const'\n\nexport const loginByUsername = (username, password, code, randomStr) => {\n  return request({\n    url: `/auth/oauth/token`,\n    headers: {\n      isToken: false,\n    },\n    method: \"post\",\n    params: { username, password, grant_type, scope, client_id, client_secret }\n  });\n};\n\nexport const refreshToken = (refresh_token, tenantId) => {\n  const grant_type = \"refresh_token\";\n  return request({\n    url: \"/auth/oauth/token\",\n    headers: {\n      isToken: false,\n    },\n    method: \"post\",\n    params: { grant_type, scope, client_id, client_secret, refresh_token: refresh_token, switch: tenantId }\n  });\n};\n\nexport function getQRcode(params) {\n  return request({\n    url: \"/mgr/upms/oauth\",\n    method: \"get\",\n    params: params\n  });\n}\n\nexport function getCheck(data) {\n  return request({\n    url: \"/weixin/check\",\n    method: \"get\",\n    params: data,\n    // 设置超时时间,直接进行下一次请求\n    timeout: 30 * 1000\n  });\n}\n\n// 发送验证码\nexport function getPhone(data) {\n  return request({\n    url: `/auth/phone/sms/verification/${data.phone}`,\n    method: \"get\"\n  });\n}\n\n// 忘记密码---发送验证码\nexport function getPhoneCode(data) {\n  return request({\n    url: `/mgr/upms/reset/code/${data.phone}/${data.idStr}`, // /mgr/upms/user/phone/${data.phone}\n    method: \"get\"\n  });\n}\n\n// 验证码登录\nexport function codeLogin(data) {\n  return request({\n    url: \"/auth/login/other\",\n    method: \"get\",\n    headers: {\n      isToken: false,\n      // tenantId: store.getters.tenantId ? store.getters.tenantId : 0\n    },\n    params: { client_id, client_secret, login_other_auth_parameter: data }\n  });\n}\n// 微信登录\nexport function wxOpenidLogin(data) {\n  return request({\n    url: \"/auth/login/wx/token\",\n    method: \"get\",\n    headers: {\n      isToken: false,\n    },\n    params: data\n  });\n}\n// APP二维码登录\nexport function appQrLogin(data) {\n  return request({\n    url: \"/mgr/upms/app/oauth\",\n    method: \"get\",\n    headers: {\n      isToken: false,\n    },\n    params: data\n  });\n}\n\n// 检查APP扫码\nexport function appCheck(data){\n  return request({\n    url: `/mgr/upms/app/check/${data.uuid}`,\n    method: \"get\",\n    headers: {\n      isToken: false,\n    },\n    params: data\n  });\n}\n// app登录\nexport function appLogin(data) {\n  return request({\n    url: \"/auth/login/app/token\",\n    method: \"get\",\n    headers: {\n      isToken: false,\n    },\n    params: data\n  });\n}\n\n\nexport const resetPass = (data) => {\n  return request({\n    url: \"/mgr/upms/reset/verify/password\",\n    headers: {\n      isToken: false,\n      // Accept: \"application/x-www-form-urlencoded\"\n      \"Content-type\": \"text/plain\", // \"application/json\"\n    },\n    method: \"post\",\n    data, // {ciphertext: str}\n  });\n};\n\n// 退出登录\nexport const loginoutHandle = () => {\n  return request({\n    url: `/auth/token/logout`,\n    method: \"get\"\n  });\n};\n"
  },
  {
    "path": "src/api/newDesign.js",
    "content": "import request from '@/router/axios'\n\n// 默认请求\nexport const sendRequire = (url, method, data) => {\n  let obj = {\n    url: url,\n    method: method\n  }\n  if(data) {\n    if(method == 'get' || method == 'delete') {\n      obj.params = data\n    }else{\n      obj.data = data\n    }\n  }\n  return request(obj)\n}\n\n// 自定义请求\nexport const sendMyRequire = (http, data) => {\n  let obj = {\n    url: http.url,\n    method: http.httpMethod,\n    headers: {\n      'Content-Type': http.requestContentType\n    }\n  }\n  if(data) {\n    if(http.requestContentType == 'application/x-www-form-urlencoded') {\n      obj.params = data\n    }else{\n      obj.data = data\n    }\n  }\n  if(http.headers) {\n    obj.headers = Object.assign(http.headers, http.headers)\n  }\n  return request(obj)\n}\n\n// 绑定手机\nexport function bindPhone(data) {\n  return request({\n    url: \"/mgr/jvs-auth/index/bind/phone\",\n    method: \"put\",\n    params: data\n  });\n}\n\n// 发送手机验证码\nexport function sendPhoneCode(phone) {\n  return request({\n    url: `/auth/phone/sms/bind/${phone}`, // `/auth/phone/sms/verification/${phone}`,\n    method: \"get\",\n  });\n}\n"
  },
  {
    "path": "src/components/QRcode/index.vue",
    "content": "<!--  -->\n<template>\n  <div class='weixin'>\n    <div\n      class=\"weixincode\"\n      v-loading=\"URLLoading\"\n    >\n      <img\n        v-show=\"RQURL\"\n        :src=\"RQURL\"\n        @click=\"init\"\n      />\n      <!-- <template v-if=\"ReqType==='bind'\"> -->\n      <div class=\"tips-box\">\n        <div v-if=\"showContent.title\">{{showContent.title}}</div>\n        <div v-if=\"showContent.content\">{{bottomtext ? bottomtext :  showContent.content}}</div>\n      </div>\n      <!-- </template> -->\n    </div>\n  </div>\n</template>\n\n<script>\n// 这里可以导入其他文件（比如：组件，工具js，第三方插件js，json文件，图片文件等等）\n// 例如：import 《组件名称》 from '《组件路径》';\nimport { getQRcode, getCheck, appQrLogin, appCheck } from '@/api/login'\n\nexport default {\n  // import引入的组件需要注入到对象中才能使用\n  components: {},\n  props: {\n    loginType: { type: String, default: \"\" }, ReqType: { type: String, default: '' },\n    bottomtext: {\n      type: String,\n      default: ''\n    }\n  },\n  data () {\n    // 这里存放数据\n    return {\n      // 二维码拿到的\n      RQURL: '',\n      URLLoading: false,\n      isReq: false,\n      getStatusSetInterval: null,\n      UUID: '',\n      showContent: {\n        title: '',\n        content: '请使用微信扫码登录'\n      },\n      qrType: 'weixin'\n    }\n  },\n  // 监听属性 类似于data概念\n  computed: {},\n  // 监控data中的数据变化\n  watch: {},\n  // 方法集合\n  methods: {\n    clear () {\n      clearInterval(this.getStatusSetInterval)\n    },\n    init (type) {\n      if (type) {\n        this.qrType = type\n      }\n      this.showContent = {\n        title: '',\n        content: this.qrType == 'weixin' ? '请使用微信扫码登录' : '请使用APP扫码登录'\n      }\n      this.clear()\n      this.isReq = false\n      this.RQURL = '/auth/just/login/WECHAT_OPEN'\n      // this.getQRcodeUrl()\n    },\n    getQRcodeUrl () {\n      this.URLLoading = true\n      if (this.qrType == 'weixin') {\n        let query = {}\n        if(this.$route && this.$route.query) {\n          query = this.$route.query\n        }\n        getQRcode(query).then(res => {\n          this.URLLoading = false\n          if (res.data.code !== 500 && res.data.data) {\n            this.RQURL = res.data.data.imgData\n            this.UUID = res.data.data.wxUUID\n            this.getStatusSetInterval = setInterval(() => {\n              if (!this.isReq) {\n                this.getLoginStatus()\n              }\n            }, 1000)\n          }else{\n            this.RQURL = 'https://tool.oschina.net/action/qrcode/generate?data=http%3A%2F%2F10.0.1.127%2F%23%2Flogin&output=image%2Fgif&error=L&type=0&margin=0&size=4'\n          }\n        }).catch(res => {\n          console.log(res)\n        })\n      } else {\n        appQrLogin().then(res => {\n          this.URLLoading = false\n          if (res.data.code !== 500) {\n            this.RQURL = res.data.data.imgData\n            this.UUID = res.data.data.appUUID\n            this.getStatusSetInterval = setInterval(() => {\n              if (!this.isReq) {\n                this.getLoginStatus()\n              }\n            }, 3000)\n          }\n        })\n      }\n    },\n    CheckImgExists (imgurl) {\n      var ImgObj = new Image(); //判断图片是否存在  \n      ImgObj.src = imgurl;\n      //存在图片\n      if (ImgObj.fileSize > 0 || (ImgObj.width > 0 && ImgObj.height > 0)) {\n        return true;\n      } else {\n        return false;\n      }\n    },\n    getLoginStatus () {\n      this.isReq = true\n      if (this.qrType == 'weixin') {\n        let time = new Date().getTime()\n        getCheck({ uuid: this.UUID, '_': time }).then(res => {\n          if (res.data.status === 405) {\n            this.isReq = true\n            clearInterval(this.getStatusSetInterval)\n            this.$emit(\"submit\", res.data.result.code, 'weixin')\n          } if (res.data.status === 403) {\n            clearInterval(this.getStatusSetInterval)\n            this.init(this.qrType)\n          } else if (res.data.status === 404) {\n            this.showContent = res.data.msg\n            this.isReq = false\n          } else {\n            this.isReq = false\n          }\n        }).catch(res => {\n          this.isReq = false\n        })\n      } else {\n        appCheck({ uuid: this.UUID, }).then(res => {\n          // if (res.data.code == 0) {\n          if (res.data.data.code == 0) {\n            if (res.data.data.isLogin) {\n              clearInterval(this.getStatusSetInterval)\n              this.$emit(\"submit\", {\n                scanType: res.data.data.scanType,\n                // userId: res.data.data.userId,\n                uuid: this.UUID\n              }, 'app')\n            } else {\n              this.isReq = false\n            }\n          } else {\n            clearInterval(this.getStatusSetInterval)\n            this.init(this.qrType)\n          }\n        }).catch(res => {\n          this.isReq = false\n        })\n      }\n    }\n  },\n  // 生命周期 - 创建完成（可以访问当前this实例）\n  created () {\n\n  },\n  // 生命周期 - 挂载完成（可以访问DOM元素）\n  mounted () {\n\n  },\n  beforeCreate () { }, // 生命周期 - 创建之前\n  beforeMount () { }, // 生命周期 - 挂载之前\n  beforeUpdate () { }, // 生命周期 - 更新之前\n  updated () { }, // 生命周期 - 更新之后\n  beforeDestroy () { }, // 生命周期 - 销毁之前\n  destroyed () { }, // 生命周期 - 销毁完成\n  activated () { } // 如果页面有keep-alive缓存功能，这个函数会触发\n}\n</script>\n<style lang='scss' scoped>\n//@import url(); 引入公共css类\n.weixinlogin {\n  width: 0;\n  height: 0;\n  border-top: 100px solid #c0c4cc;\n  border-left: 100px solid transparent;\n  position: absolute;\n  top: 0;\n  right: 0;\n}\n.weixin {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  height: 340px;\n}\n.weixincode {\n  // height: 300px;\n  width: 300px;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n  img {\n    display: block;\n    width: 100%;\n    height: 100%;\n  }\n}\n.tips-box {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n  width: 100%;\n  // background-color: #aca9a9;\n  border-radius: 50px;\n  height: 50px;\n  box-sizing: border-box;\n  color: #999;\n}\n</style>"
  },
  {
    "path": "src/components/api.js",
    "content": "import request from '@/router/axios'\n\n// 用户列表\nexport function getUserList(query) {\n  return request({\n    url: \"/mgr/jvs-auth//user/page\",\n    method: \"get\",\n    params: query\n  });\n}\n// 所有用户\nexport function getUserAll(query) {\n  return request({\n    url: \"/mgr/jvs-auth//user/user/search\",\n    method: \"get\",\n    params: query\n  });\n}\n"
  },
  {
    "path": "src/components/basic-assembly/button.vue",
    "content": "<template>\n  <el-button\n    :size=\"size || defaultSet.size\"\n    :type=\"type || defaultSet.type\"\n    :plain=\"plain || defaultSet.plain\"\n    :round=\"round || defaultSet.round\"\n    :circle=\"circle || defaultSet.circle\"\n    :loading=\"loading || defaultSet.loading\"\n    :disabled=\"disabled || defaultSet.disabled\"\n    :icon=\"icon || defaultSet.icon\"\n    :autofocus=\"autofocus || defaultSet.autofocus\"\n    :native-type=\"nativeType || defaultSet.nativeType\"\n    v-if=\"$permissionMatch(permisionFlag)\"\n    @click=\"clickHandle\"\n  >\n    <span v-if=\"permisionFlag\">{{$permissionLabel(permisionFlag, defaultText)}}</span>\n    <slot></slot>\n    <!-- 其余插槽待拓展。。。。。。 -->\n  </el-button>\n</template>\n<script>\nexport default {\n  name: \"jvs-button\",\n  props: {\n    size: {\n      type: String,\n      default: ''\n    },\n    type: {\n      type: String,\n      default: ''\n    },\n    plain: {\n      type: Boolean,\n      default: false\n    },\n    round: {\n      type: Boolean,\n      default: false\n    },\n    circle: {\n      type: Boolean,\n      default: false\n    },\n    loading: {\n      type: Boolean,\n      default: false\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    icon: {\n      type: String,\n      default: ''\n    },\n    autofocus: {\n      type: Boolean,\n      default: false\n    },\n    nativeType: {\n      type: String,\n      default: 'button'\n    },\n    permisionFlag: {\n      type: String,\n      default: ''\n    },\n    defaultText: {\n      type: String,\n      default: ''\n    }\n  },\n  data () {\n    return {\n      defaultSet: {\n        size: 'mini', // 尺寸\n        type: '', // 类型\n        plain: false, // \t是否朴素按钮\n        round: false, // 是否圆角按钮\n        circle: false, // 是否圆形按钮\n        loading: false, // 是否加载中状态\n        disabled: false, // 是否禁用状态\n        icon: '', // 图标类名\n        autofocus: false, // 是否默认聚焦\n        nativeType: 'button',\n        permisionFlag: '', // 权限标识\n      },\n    }\n  },\n  created () {\n  },\n  methods: {\n    clickHandle () {\n      this.$emit('click', true)\n    }\n  }\n}\n</script>"
  },
  {
    "path": "src/components/basic-assembly/form.vue",
    "content": "<template>\n  <el-form\n    :model=\"formDatas\"\n    :ref=\"refs || defalutSet.refs\"\n    :option=\"option || defalutSet.option\"\n    :class=\"{'jvs-form': true, 'jvs-form-autoflexable': (option.labelWidth == 'auto' || option.labelwidth == 'auto' || option.formAuto )}\"\n    :size=\"$store.state.params.form.size || option.size || option.formsize || 'mini'\"\n    :inline=\"option.inline || defalutSet.option.inline\"\n    :label-position=\"option.formAlign || defalutSet.option.formAlign\"\n    :label-width=\"option.labelWidth || defalutSet.option.labelWidth\"\n    :disabled='option.disabled'\n    :validateOnRuleChange=\"false\"\n  >\n    <slot name=\"formTop\"></slot>\n    <el-row style=\"width:100%;\">\n      <!-- v-if=\"!option.isSearch || (option.isSearch && item.search == true)\" -->\n      <el-col\n        v-for=\"item in option.column\"\n        :key=\"item.prop\"\n        :span=\"isSearch==true?(item.searchSpan || option.searchSpan || 24):(item.span || option.span || 24)\"\n        v-show=\"item.display == false ? item.display : true\"\n        :class=\"{'no-label-form-item': item.hideLabel}\"\n      >\n        <el-form-item\n          :class='{\n            \"form-item-no-label\": ( (!item.label && item.type != \"tab\") || ([\"tableForm\",\"divider\",\"p\",\"section\"].indexOf(item.type) > -1) ),\n            \"form-item-no-label-tab\": (!item.label && item.type == \"tab\")\n          }'\n          :label='item.type == \"tableForm\" ? (item.editable ? item.label : \"\") : item.label'\n          :prop=\"item.prop\"\n          v-if=\"(item.prop !== freshDom) && (item.type !='title' && (!item.children || item.children.length == 0) || item.type == 'formbox') && $permissionMatch(item.permisionFlag) && (item.display == false ? item.display : true)\"\n          :rules=\"item.rules\"\n        >\n          <FormItem\n            v-if=\"!item.formSlot\"\n            :form=\"formDatas\"\n            :item=\"item\"\n            :originOption=\"option\"\n            :defalutSet=\"defalutSet\"\n            @formChange=\"formChange\"\n            :userList=\"userList\"\n            :rowData=\"rowData\"\n            :resetRadom=\"resetRadom\"\n            @validateHandle=\"validateHandle\"\n          />\n          <!-- 自定义列插槽 -->\n          <div v-if=\"item.formSlot\">\n            <slot :name=\"item.prop+'Form'\"></slot>\n            <!-- 右侧提示 -->\n            <el-tooltip\n              v-if=\"item.tips && item.tips.position == 'right' && item.tips.text\"\n              class=\"form-item-tooltip\"\n              effect=\"dark\"\n              :content=\"item.tips.text\"\n              placement=\"top\"\n            >\n              <i class=\"el-icon-question\"></i>\n            </el-tooltip>\n          </div>\n          <!-- 换行提示 -->\n          <el-row\n            v-if=\"item.tips && item.tips.position == 'bottom'\"\n            class=\"form-item-tips\"\n          >\n            <span v-html=\"item.tips.text\"></span>\n          </el-row>\n        </el-form-item>\n        <h5 v-if=\"item.type == 'title'\">{{item.label}}</h5>\n        <!-- 子表单项 -->\n        <el-row v-if=\"item.type != 'formbox' && item.children && item.children.length > 0\">\n          <el-form-item\n            :label=\"item.label\"\n            :prop=\"item.prop\"\n            :rules=\"item.rules\"\n            v-if=\"(item.prop !== freshDom) && (item.display == false ? item.display : true)\"\n            :class='(!item.label || ([\"tableForm\",\"divider\",\"p\",\"tab\",\"section\"].indexOf(item.type) > -1))? \"form-item-no-label\" : \"\"'\n          >\n            <FormItem\n              v-if=\"!item.formSlot\"\n              :form=\"formDatas\"\n              :item=\"item\"\n              :originOption=\"option\"\n              :defalutSet=\"defalutSet\"\n              @formChange=\"formChange\"\n              :userList=\"userList\"\n              :rowData=\"rowData\"\n              :resetRadom=\"resetRadom\"\n              @validateHandle=\"validateHandle\"\n            />\n            <!-- 自定义列插槽 -->\n            <div v-if=\"item.formSlot\">\n              <slot :name=\"item.prop+'Form'\"></slot>\n              <!-- 右侧提示 -->\n              <el-tooltip\n                v-if=\"item.tips && item.tips.position == 'right' && item.tips.text\"\n                class=\"form-item-tooltip\"\n                effect=\"dark\"\n                :content=\"item.tips.text\"\n                placement=\"top\"\n              >\n                <i class=\"el-icon-question\"></i>\n              </el-tooltip>\n            </div>\n            <!-- 换行提示 -->\n            <el-row\n              v-if=\"item.tips && item.tips.position == 'bottom'\"\n              class=\"form-item-tips\"\n            >\n              <span v-html=\"item.tips.text\"></span>\n            </el-row>\n          </el-form-item>\n          <el-col\n            v-for=\"it in item.children\"\n            :key=\"it.prop\"\n            :span=\"isSearch==true?(it.searchSpan || option.searchSpan || 24):(it.span || option.span || 24)\"\n            v-if=\"linkbindHandle(formDatas[item.prop], it.linkbind)\"\n          >\n            <el-form-item\n              :label=\"it.label\"\n              :prop=\"it.prop\"\n              v-if=\"(it.prop !== freshDom) && $permissionMatch(it.permisionFlag) && (!option.isSearch || (option.isSearch && it.search == true)) && (it.display == false ? it.display : true)\"\n              :rules=\"it.rules\"\n              :class='{\n                \"form-item-no-label\": (!it.label || ([\"tableForm\",\"divider\",\"p\",\"tab\",\"section\"].indexOf(it.type) > -1))\n              }'\n            >\n              <FormItem\n                v-if=\"!it.formSlot\"\n                :form=\"formDatas\"\n                :item=\"it\"\n                :formRef=\"refs || defalutSet.refs\"\n                :originOption=\"option\"\n                :defalutSet=\"defalutSet\"\n                @formChange=\"formChange\"\n                :userList=\"userList\"\n                :rowData=\"rowData\"\n                :resetRadom=\"resetRadom\"\n                @validateHandle=\"validateHandle\"\n              />\n              <!-- 自定义列插槽 -->\n              <div v-if=\"it.formSlot\">\n                <slot :name=\"it.prop+'Form'\"></slot>\n                <!-- 右侧提示 -->\n                <el-tooltip\n                  v-if=\"it.tips && it.tips.position == 'right' && it.tips.text\"\n                  class=\"form-item-tooltip\"\n                  effect=\"dark\"\n                  :content=\"it.tips.text\"\n                  placement=\"top\"\n                >\n                  <i class=\"el-icon-question\"></i>\n                </el-tooltip>\n              </div>\n              <!-- 换行提示 -->\n              <el-row\n                v-if=\"it.tips && it.tips.position == 'bottom'\"\n                class=\"form-item-tips\"\n              >\n                <span v-html=\"it.tips.text\"></span>\n              </el-row>\n            </el-form-item>\n          </el-col>\n        </el-row>\n      </el-col>\n      <el-col\n        :span=\"option.isSearch ? 6 :  24\"\n        v-if=\"option.column.length > 0 && option.btnHide!==true\"\n        class=\"form-item-btn\"\n      >\n        <el-form-item class=\"form-btn-bar\">\n          <template v-if=\"isSearch\">\n            <el-button\n              size=\"mini\"\n              v-if=\"!(option.searchBtn == false)\"\n              type=\"primary\"\n              @click=\"submitForm(refs || defalutSet.refs)\"\n              :loading=\"option.submitLoading\"\n            >{{option.searchBtnText || defalutSet.option.searchBtnText}}</el-button>\n            <el-button\n              size=\"mini\"\n              v-if=\"!(option.emptyBtn == false)\"\n              @click=\"resetForm(refs || defalutSet.refs)\"\n            >{{option.emptyBtnText || defalutSet.option.emptyBtnText}}</el-button>\n          </template>\n          <template v-if=\"!isSearch\">\n            <el-button\n              size=\"mini\"\n              v-if=\"!(option.submitBtn == false)\"\n              type=\"primary\"\n              @click=\"submitForm(refs || defalutSet.refs)\"\n              :loading=\"option.submitLoading\"\n            >{{option.submitBtnText || defalutSet.option.submitBtnText}}</el-button>\n            <el-button\n              size=\"mini\"\n              v-if=\"!(option.emptyBtn == false)\"\n              @click=\"resetForm(refs || defalutSet.refs)\"\n            >{{option.emptyBtnText || defalutSet.option.emptyBtnText}}</el-button>\n            <el-button\n              size=\"mini\"\n              v-if=\"!(option.cancal == false)\"\n              @click=\"$emit('cancalClick')\"\n            >{{option.cancalBtnText || defalutSet.option.cancalBtnText}}</el-button>\n          </template>\n          <slot name=\"formButton\"></slot>\n        </el-form-item>\n      </el-col>\n    </el-row>\n  </el-form>\n</template>\n\n<script>\nimport FormItem from './formitem'\nimport {getDeptList, getRoleList, getPostList} from '../api'\nexport default {\n  name: \"jvsForm\",\n  components: { FormItem },\n  props: {\n    // 是否为搜索表单\n    isSearch: {\n      type: Boolean,\n      default: false\n    },\n    // 表单绑定\n    refs: {\n      type: String,\n      default: 'ruleForm'\n    },\n    // 表单对象\n    formData: {\n      type: Object,\n      default: () => {\n        return {}\n      }\n    },\n    // 表单数据\n    defalutFormData: {\n      type: Object,\n      default: () => {\n        return {}\n      }\n    },\n    // 表单设置\n    option: {\n      type: Object,\n      default: () => {\n        return {\n          formAlign: 'right', //对其方式\n          inline: false, // 表单项是否可以同行,当垂直方向空间受限且表单较简单时，可以在一行内放置表单\n          labelWidth: 'auto', // label宽\n          searchBtn: true,\n          searchBtnText: '',\n          submitBtn: true, // 提交按钮是否显示，默认显示\n          submitBtnText: '保存', // 提交按钮文字，默认 提交\n          emptyBtn: true, // 重置按钮，默认显示\n          emptyBtnText: '', // 重置按钮文字，默认 重置\n          isSearch: false, // 是否为搜索表单\n          cancal: true, // 取消按钮， 默认显示\n          cancalBtnText: '取消',\n          column: [ // 字段\n            {\n              label: '', // 文字\n              prop: '', // 字段\n              type: '', // 文本类型，默认input\n              dicData: [], // 字典数据\n              span: 24, // 表单项栅格比，默认24\n              formSlot: false, // 是否自定义\n              permisionFlag: '', // 权限标识\n              rules: [], // 校验规则\n              linkbind: '', // 父级联动控制对应的表单值\n            }\n          ],\n        }\n      }\n    },\n    rowData: {\n      type: Object\n    }\n  },\n  computed: {\n    // formDatas: {\n    //   get: function () {\n    //     return this.formData\n    //   },\n    //   set: function () { }\n    // }\n  },\n  data () {\n    return {\n      formDatas: {}, // 表单对象\n      defalutSet: {\n        refs: 'ruleForm',\n        option: {\n          formAlign: 'right', //对其方式\n          inline: false, // 表单项是否可以同行,当垂直方向空间受限且表单较简单时，可以在一行内放置表单\n          labelWidth: 'auto', // label宽\n          searchBtn: true, // 搜索按钮是否显示，默认显示\n          searchBtnText: '查询', // 搜索按钮，默认查询\n          submitBtn: true, // 提交按钮是否显示，默认显示\n          submitBtnText: '提交', // 提交按钮文字，默认 提交\n          emptyBtn: true, // 重置按钮，默认显示\n          emptyBtnText: '重置', // 重置按钮文字，默认 重置\n          cancalBtnText: '取消', // 取消按钮文字， 默认 取消\n        }\n      },\n      userList: [], // 用户列表\n      clearAll: false, // 重置是否为初始对象{}\n      resetRadom: -1, // 通知子项重置随机数 -1不重置\n      resetData: \"\", // 原始数据，用于重置\n      freshDom: ''\n    }\n  },\n  created () {\n    this.resetData = JSON.stringify(this.formData)\n    this.formDatas = this.formData\n    if (this.defalutFormData) {\n      for (let i in this.defalutFormData) {\n        this.formDatas[i] = this.defalutFormData[i]\n      }\n    }\n    if(JSON.stringify(this.formDatas) == '{}') {\n      this.clearAll = true\n    }\n    this.getConst()\n  },\n  methods: {\n    submitForm (formName) {\n      this.$refs[formName].validate((valid) => {\n        if (valid) {\n          this.$emit('submit', this.formDatas)\n        } else {\n          console.log('error submit!!')\n          return false;\n        }\n      });\n    },\n    resetForm (formName) {\n      if (this.option.isSearch === true) {\n        this.formDatas = {}\n      } else {\n        if(this.clearAll) {\n          this.formDatas = {}\n        }else{\n          this.$refs[formName].resetFields()\n        }\n        this.resetRadom = Math.random()\n        if(this.resetData.startsWith('{')) {\n          this.$set(this, 'formDatas', JSON.parse(this.resetData))\n        }\n      }\n      this.$emit('reset', formName)\n    },\n    formChange (form) {\n      this.$emit('formChange', form)\n    },\n    async getConst () {\n      let deptBool = false\n      let roleBool = false\n      let postBool = false\n      // 优化：表单内无对应公共组件不发请求\n      for(let i in  this.option.column) {\n        if(this.option.column[i].type == 'department') {\n          deptBool = true\n        }\n        if(this.option.column[i].type == 'role') {\n          roleBool = true\n        }\n        if(this.option.column[i].type == 'post') {\n          postBool = true\n        }\n        // 加入自定义校验\n        if(this.option.column[i].regularExpression) {\n          let required = false\n          if(this.option.column[i].rules && this.option.column[i].rules[0].required) {\n            required = true\n          }\n          let str = '/' + this.option.column[i].regularExpression + '/'\n          let _this = this\n          this.option.column[i].rules.push({\n            validator: function(rule, value, callback) {\n              if(eval(str).test(value)) {\n                callback()\n              }else{\n                let msg = '正则校验不通过'\n                if(_this.option.column[i].regularMessage) {\n                  msg = _this.option.column[i].regularMessage\n                }\n                if(required == false && !value) {\n                  callback()\n                }else{\n                  callback(new Error(msg));\n                }\n              }\n            },\n            trigger: ['blur', 'change']\n          })\n        }\n\n        // 嵌套项包含公共组件\n        if(['tab', 'step'].indexOf(this.option.column[i].type) > -1) {\n          for(let ti in this.option.column[i].column) {\n            for(let tci in this.option.column[i].column[ti]) {\n              if(this.option.column[i].column[ti][tci].type == 'department') {\n                deptBool = true\n              }\n              if(this.option.column[i].column[ti][tci].type == 'role') {\n                roleBool = true\n              }\n              if(this.option.column[i].column[ti][tci].type == 'post') {\n                postBool = true\n              }\n            }\n          }\n        }\n        if((this.option.column[i].children && this.option.column[i].children.length > 0) || ['tableForm'].indexOf(this.option.column[i].type) > -1) {\n          let tl = []\n          if(['tableForm'].indexOf(this.option.column[i].type) > -1) {\n            tl = this.option.column[i].tableColumn\n          }else{\n            tl = this.option.column[i].children\n          }\n        }\n      }\n    },\n    // 联动控制\n    linkbindHandle (val, bind) {\n      let bool = true\n      if(bind && ['boolean', 'number'].indexOf(typeof bind) == -1) {\n        let arr = (bind instanceof Array) ? bind : bind.split(',')\n        if(val instanceof Array) {\n          let tb = false\n          for(let i in val) {\n            if(arr.indexOf(val[i]) > -1 || arr.indexOf((val[i] + '')) > -1) {\n              tb = true\n            }\n          }\n          bool = tb\n        }else{\n          if(arr.indexOf(val) > -1 || arr.indexOf((val + '')) > -1) {\n            bool = true\n          }else{\n            bool = false\n          }\n        }\n      }else{\n        if(bind || bind === 0 || bind === false) {\n          if(val || val === 0 || val === false) {\n            if(bind !== val) {\n              bool = false\n            }\n          }else{\n            bool = true\n          }\n        }else{\n          bool = true\n        }\n      }\n      return bool\n    },\n    validateHandle (data) {\n      let type = data.type\n      let item = data.item\n      this.freshDom = item.prop\n      if(type == 'clear') {\n        this.$refs[this.refs || this.defalutSet.refs].clearValidate(item.prop)\n      }else{\n        this.$refs[this.refs || this.defalutSet.refs].validateField(item.prop)\n      }\n      this.$nextTick( () => {\n        this.freshDom = ''\n      })\n      this.$forceUpdate()\n    }\n  }\n};\n</script>\n\n<style lang=\"scss\">\n.jvs-form {\n  h5 {\n    margin: 0;\n    padding: 0;\n    margin-bottom: 10px;\n  }\n  .el-form-item.form-btn-bar {\n    // margin: 10px;\n    .el-form-item__content {\n      text-align: center;\n      margin-left: 0 !important;\n    }\n  }\n  .no-label-form-item{\n    .el-form-item{\n      .el-form-item__content{\n        margin-left: 0!important;\n      }\n    }\n  }\n}\n.jvs-form-autoflexable {\n  .el-form-item {\n    display: flex;\n    margin: 0 10px;\n    .el-form-item__label-wrap {\n      margin-left: 0 !important;\n      word-break: keep-all;\n    }\n    .el-form-item__content {\n      margin-left: 0 !important;\n      flex: 1;\n      div {\n        .el-input,\n        .el-select {\n          width: 100%;\n        }\n      }\n    }\n  }\n}\n.form-item-tooltip {\n  display: inline-block;\n  margin: 0 10px;\n}\n.form-item-no-label-tab{\n  >.el-form-item__content{\n    margin-left: 0!important;\n  }\n}\n.form-item-no-label{\n  .el-form-item__content{\n    margin-left: 0!important;\n  }\n}\n.form-item-tips{\n  font-size: 12px;\n  color: #c3c3c3;\n  width: 100%;\n}\n</style>\n"
  },
  {
    "path": "src/components/basic-assembly/formcard.vue",
    "content": "<template>\n  <div class=\"form-card\">\n    <el-tabs :class=\"{'no-data-tab': (!tabData || tabData.length == 0)}\" v-model=\"activeName\" type=\"card\" editable @edit=\"handleTabsEdit\">\n      <el-tab-pane\n        v-for=\"(item, index) in tabData\"\n        :key=\"item.name\"\n        :label=\"item.title\"\n        :name=\"item.name\"\n      >\n      <el-form\n        v-if=\"forms && index < forms.length\"\n        :model=\"forms[index]\"\n        :ref=\"formRef || 'ruleForm'\"\n        class=\"demo-dynamic\"\n        size='mini'\n        :label-position=\"originOption.formAlign || defalutSet.option.formAlign\"\n        :label-width=\"originOption.labelWidth || defalutSet.option.labelWidth\"\n        :disabled='originOption.disabled'\n        >\n          <el-row v-if=\"formItem.children && formItem.children.length > 0\" style=\"width:100%;\">\n            <el-col\n              v-for=\"it in formItem.children\"\n              :key=\"'formcard'+index+it.prop\"\n              :span=\"it.span || 24\"\n              v-show=\"it.display == false ? it.display : true\"\n              :class=\"{'no-label-form-item': it.hideLabel}\"\n            >\n              <!-- 一般项 -->\n              <el-form-item\n                v-if=\"(it.type !='title' && (!it.children || it.children.length == 0) || it.type == 'formbox') && $permissionMatch(it.permisionFlag) && (it.display == false ? it.display : true)\"\n                :label=\"it.label\"\n                :prop='it.prop'\n                :rules='it.rules'\n                v-model=\"forms[index][it.prop]\"\n                :label-width=\"it.type==='iframe'?'0':(originOption.labelWidth || defalutSet.option.labelWidth)\"\n                :class='{\"form-item-no-label\": ( (!it.label && it.type != \"tab\") || ([\"tableForm\",\"divider\",\"p\",\"section\"].indexOf(it.type) > -1) ), \"form-item-no-label-tab\": (!it.label && it.type == \"tab\")}'\n              >\n                <FormItem\n                  :item=\"it\"\n                  :form=\"forms[index]\"\n                  :reinitFlag=\"reinitFlag\"\n                  :originOption=\"originOption\"\n                  :defalutSet=\"defalutSet\"\n                  :roleOption=\"roleOption\"\n                  :userList=\"userList\"\n                  :departmentList=\"departmentList\"\n                  :postList=\"postList\"\n                  :resetRadom=\"resetRadom\"\n                  @formChange=\"formChange\"\n                />\n              </el-form-item>\n              <!-- 子表单项 -->\n              <el-row v-if=\"it.type != 'formbox' && it.children && it.children.length > 0\">\n                <el-form-item\n                  :label=\"it.label\"\n                  :prop=\"it.prop\"\n                  :rules=\"it.rules\"\n                  v-if=\"(it.display == false ? it.display : true)\"\n                  v-model=\"forms[index][it.prop]\"\n                  :class='(!it.label || ([\"tableForm\",\"divider\",\"p\",\"tab\",\"section\"].indexOf(it.type) > -1))? \"form-item-no-label\" : \"\"'\n                >\n                  <FormItem\n                    v-if=\"!it.formSlot\"\n                    :form=\"forms[index]\"\n                    :reinitFlag=\"reinitFlag\"\n                    :item=\"it\"\n                    :originOption=\"originOption\"\n                    :defalutSet=\"defalutSet\"\n                    @formChange=\"formChange\"\n                    :roleOption=\"roleOption\"\n                    :userList=\"userList\"\n                    :departmentList=\"departmentList\"\n                    :postList=\"postList\"\n                    :resetRadom=\"resetRadom\"\n                  />\n                  <!-- 自定义列插槽 -->\n                  <div v-if=\"it.formSlot\">\n                    <slot :name=\"it.prop+'Form'\"></slot>\n                    <!-- 右侧提示 -->\n                    <el-tooltip\n                      v-if=\"it.tips && it.tips.position == 'right' && it.tips.text\"\n                      class=\"form-item-tooltip\"\n                      effect=\"dark\"\n                      :content=\"it.tips.text\"\n                      placement=\"top\"\n                    >\n                      <i class=\"el-icon-question\"></i>\n                    </el-tooltip>\n                  </div>\n                  <!-- 换行提示 -->\n                  <el-row\n                    v-if=\"it.tips && it.tips.position == 'bottom'\"\n                    class=\"form-item-tips\"\n                  >\n                    <span v-html=\"it.tips.text\"></span>\n                  </el-row>\n                </el-form-item>\n                <el-col\n                  v-for=\"itc in it.children\"\n                  :key=\"itc.prop+'formcard-contrl-item'\"\n                  :span=\"itc.span || originOption.span || 24\"\n                >\n                  <el-form-item\n                    :label=\"itc.label\"\n                    :prop=\"itc.prop\"\n                    v-if=\"itc.display === false ? false : linkbindHandle(forms[index][it.prop], itc.linkbind)\"\n                    :rules=\"itc.rules\"\n                    v-model=\"forms[index][itc.prop]\"\n                    :class='(!itc.label || ([\"tableForm\",\"divider\",\"p\",\"tab\",\"section\"].indexOf(itc.type) > -1))? \"form-item-no-label\" : \"\"'\n                  >\n                    <FormItem\n                      v-if=\"!itc.formSlot\"\n                      :form=\"forms[index]\"\n                      :item=\"itc\"\n                      :formRef=\"defalutSet.refs\"\n                      :originOption=\"originOption\"\n                      :defalutSet=\"defalutSet\"\n                      @formChange=\"formChange\"\n                      :roleOption=\"roleOption\"\n                      :userList=\"userList\"\n                      :departmentList=\"departmentList\"\n                      :postList=\"postList\"\n                      :resetRadom=\"resetRadom\"\n                    />\n                    <!-- 自定义列插槽 -->\n                    <div v-if=\"itc.formSlot\">\n                      <slot :name=\"itc.prop+'Form'\"></slot>\n                      <!-- 右侧提示 -->\n                      <el-tooltip\n                        v-if=\"itc.tips && itc.tips.position == 'right' && itc.tips.text\"\n                        class=\"form-item-tooltip\"\n                        effect=\"dark\"\n                        :content=\"itc.tips.text\"\n                        placement=\"top\"\n                      >\n                        <i class=\"el-icon-question\"></i>\n                      </el-tooltip>\n                    </div>\n                    <!-- 换行提示 -->\n                    <el-row\n                      v-if=\"itc.tips && itc.tips.position == 'bottom'\"\n                      class=\"form-item-tips\"\n                    >\n                      <span v-html=\"itc.tips.text\"></span>\n                    </el-row>\n                  </el-form-item>\n                </el-col>\n              </el-row>\n            </el-col>\n          </el-row>\n          <slot :name=\"item.name\"></slot>\n        </el-form>\n      </el-tab-pane>\n    </el-tabs>\n  </div>\n</template>\n<script>\nexport default {\n  name: 'card-form',\n  components: {\n    FormItem: () => import('@/components/basic-assembly/formitem')\n  },\n  props: {\n    // 表单传递对象\n    forms: {\n      type: Array,\n      default: () => {\n        return []\n      }\n    },\n    // 表单结构对象\n    formItem: {\n      type: Object,\n      default: () => {\n        return {}\n      }\n    },\n    formRef: {\n      type: String,\n      default: 'ruleForm'\n    },\n    originOption: {\n      type: Object\n    },\n    // 用户列表\n    userList : {\n      type: Array,\n      default: () => {\n        return []\n      }\n    },\n    // 角色列表\n    roleOption: {\n      type: Array,\n      default: () => {\n        return []\n      }\n    },\n    // 部门列表\n    departmentList: {\n      type: Array,\n      default: () => {\n        return []\n      }\n    },\n    // 岗位列表\n    postList: {\n      type: Array,\n      default: () => {\n        return []\n      }\n    },\n    resetRadom: {\n      type: Number\n    }\n  },\n  data() {\n    return {\n      activeName: '0',\n      tabIndex: 0,\n      tabData: [],\n      reinitFlag: -1,\n      defalutSet: {\n        refs: 'ruleForm',\n        option: {\n          formAlign: 'right', //对其方式\n          inline: false, // 表单项是否可以同行,当垂直方向空间受限且表单较简单时，可以在一行内放置表单\n          labelWidth: 'auto', // label宽\n          searchBtn: true, // 搜索按钮是否显示，默认显示\n          searchBtnText: '查询', // 搜索按钮，默认查询\n          submitBtn: true, // 提交按钮是否显示，默认显示\n          submitBtnText: '提交', // 提交按钮文字，默认 提交\n          emptyBtn: true, // 重置按钮，默认显示\n          emptyBtnText: '重置', // 重置按钮文字，默认 重置\n          cancalBtnText: '取消', // 取消按钮文字， 默认 取消\n        }\n      },\n    }\n  },\n  methods: {\n    handleTabsEdit(targetName, action) {\n      if (action === 'add') {\n        let newTabName = ++this.tabIndex + '';\n        this.tabData.push({\n          title: this.formItem.label ? (this.formItem.label + (this.tabData.length+1)) : ('表单卡片' + (this.tabData.length+1) ),\n          name: newTabName\n        });\n        this.activeName = newTabName;\n        this.forms.push({})\n        this.reinitFlag = Math.random()\n        this.$forceUpdate()\n      }\n      if (action === 'remove') {\n        let tabs = this.tabData;\n        let activeName = this.activeName;\n        if (activeName === targetName) {\n          tabs.forEach((tab, index) => {\n            if (tab.name === targetName) {\n              let nextTab = tabs[index + 1] || tabs[index - 1];\n              if (nextTab) {\n                activeName = nextTab.name;\n              }\n            }\n          });\n        }\n        this.activeName = activeName;\n        this.tabData = tabs.filter(tab => tab.name !== targetName);\n        for(let i in this.tabData) {\n          i = Number.parseInt(i)\n          this.tabData[i].title = this.formItem.label ? (this.formItem.label + (i+1)) : ('表单卡片' + (i+1) )\n        }\n      }\n    },\n    formChange (form) {\n      let index = -1\n      for(let i in this.tabData) {\n        if(this.tabData[i].name == this.activeName) {\n          index = i\n        }\n      }\n      if(index > -1) {\n        this.$set(this.forms, index, form)\n        this.$forceUpdate()\n        this.$emit('formChange', this.forms)\n      }\n    },\n    // 联动控制\n    linkbindHandle (val, bind) {\n      let bool = true\n      if(bind) {\n        if(val) {\n          let arr = bind.split(',')\n          if(val instanceof Array) {\n            let tb = false\n            for(let i in val) {\n              if(arr.indexOf(val[i]) > -1) {\n                tb = true\n              }\n            }\n            bool = tb\n          }else{\n            if(arr.indexOf(val) > -1) {\n              bool = true\n            }else{\n              bool = false\n            }\n          }\n        }\n      }\n      return bool\n    },\n    init () {\n      this.tabData = []\n      if(this.forms && this.forms.length > 0) {\n        for(let i in this.forms) {\n          this.tabData.push({\n            name: (Number.parseInt(i)+1) + \"\",\n            title: this.formItem.label ? (this.formItem.label + (Number.parseInt(i)+1)) : ('表单卡片' + (Number.parseInt(i)+1) )\n          })\n        }\n        this.activeName = '1'\n      }\n      let tcol = this.formItem.children\n      for(let t in tcol) {\n        if(tcol[t].regularExpression){\n          let required = false\n          if(tcol[t].rules && tcol[t].rules[0].required) {\n            required = true\n          }\n          let str = '/' + tcol[t].regularExpression + '/'\n          let _this = this\n          tcol[t].rules.push({\n            validator: function(rule, value, callback) {\n              if(eval(str).test(value)) {\n                callback()\n              }else{\n                let msg = '正则校验不通过'\n                if(tcol[t].regularMessage) {\n                  msg = tcol[t].regularMessage\n                }\n                if(required == false && !value) {\n                  callback()\n                }else{\n                  callback(new Error(msg));\n                }\n              }\n            },\n            trigger: ['blur', 'change']\n          })\n        }\n      }\n    }\n  },\n  created () {\n    this.init()\n  },\n  watch: {\n    resetRadom: {\n      handler (newVal , oldVal) {\n        if(newVal > -1) {\n          this.init()\n        }\n      }\n    }\n  }\n}\n</script>\n<style lang=\"scss\">\n.form-card{\n  width: 100%;\n  .el-tabs--card.no-data-tab>.el-tabs__header{\n    border-color: #fff;\n    .el-tabs__nav{\n      border-color: #fff;\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "src/components/basic-assembly/formitem.vue",
    "content": "<template>\n  <div class=\"jvs-form-item\" style=\"display:flex;align-items:center;\">\n    <el-input\n      v-model=\"forms[item.prop]\"\n      v-if='item.type===\"input\" || !item.type'\n      :show-word-limit=\"item.showwordlimit\"\n      :minlength=\"item.minlength\"\n      :maxlength=\"item.maxlength\"\n      :placeholder=\"item.placeholder || item.label\"\n      :clearable=\"item.clearable\"\n      :show-password=\"item.showpassword\"\n      :disabled=\"item.disabled\"\n      :prefix-icon=\"item.prefixicon\"\n      :suffix-icon=\"item.suffixicon\"\n      :size=\"$store.state.params.form.size || item.size || 'mini'\"\n      @blur=\"formChange\"\n    >\n      <template v-if='item.prepend' slot=\"prepend\">{{item.prepend}}</template>\n      <template v-if='item.append' slot=\"append\">{{item.append}}</template>\n    </el-input>\n    <span class=\"el-form-item__error\" v-if='errorShow'>{{item.regularMessage}}</span>\n    <el-input\n      v-model=\"forms[item.prop]\"\n      v-if='item.type===\"InputReadOnly\" || item.type===\"inputReadOnly\"'\n      :disabled=\"item.disabled || true\"\n      :placeholder=\"item.placeholder || item.label\"\n      :size=\"$store.state.params.form.size || item.size || 'mini'\"\n    ></el-input>\n    <el-input\n      type=\"textarea\"\n      v-if='item.type===\"textarea\"'\n      v-model=\"forms[item.prop]\"\n      :rows=\"item.rows\"\n      :show-word-limit=\"item.showwordlimit\"\n      :minlength=\"item.minlength\"\n      :maxlength=\"item.maxlength\"\n      :placeholder=\"item.placeholder || item.label\"\n      :clearable=\"item.clearable\"\n      :disabled=\"item.disabled\"\n      :size=\"$store.state.params.form.size || item.size || 'mini'\"\n      :autosize=\"item.autoSize || false\"\n      @blur=\"formChange\"\n    ></el-input>\n    <el-input\n      type=\"textarea\"\n      v-if='item.type===\"textareaReadOnly\"'\n      v-model=\"forms[item.prop]\"\n      rows=\"2\"\n      :placeholder=\"item.placeholder || item.label\"\n      :disabled=\"item.disabled || true\"\n      :size=\"$store.state.params.form.size || item.size || 'mini'\"\n    ></el-input>\n    <el-input-number\n      v-if='item.type===\"inputNumber\"'\n      v-model=\"forms[item.prop]\"\n      :min=\"item.min\"\n      :max=\"item.max\"\n      :step=\"item.step\"\n      :step-strictly=\"item.stepstrictly\"\n      :precision=\"item.precision\"\n      :disabled=\"item.disabled\"\n      :controls-position=\"item.controlsposition\"\n      :placeholder=\"item.placeholder || item.label\"\n      :size=\"$store.state.params.form.size || item.size || 'mini'\"\n      @change=\"formChange\"\n    ></el-input-number>\n\n    <el-select\n      v-if='item.type===\"select\"'\n      v-model=\"forms[item.prop]\"\n      :placeholder=\"item.placeholder || item.label\"\n      :multiple=\"item.multiple\"\n      :collapse-tags=\"!item.collapsetags\"\n      :disabled=\"item.disabled\"\n      :clearable=\"item.clearable\"\n      :filterable=\"item.filterable\"\n      :allow-create=\"item.allowcreate\"\n      :size=\"$store.state.params.form.size || item.size || 'mini'\"\n      @change=\"formChange\"\n    >\n      <el-option\n        v-for=\"(sitem) in selectOption\"\n        :key=\"sitem[(item.props && item.props.value) || 'value']+item.prop +Math.random() + Date.now().toString()\"\n        :label=\"sitem[(item.props && item.props.label) || 'label']\"\n        :value=\"sitem[(item.props && item.props.value) || 'value']\"\n      >\n        <span style=\"float: left\">{{ sitem[(item.props && item.props.label) || 'label'] }}</span>\n        <span v-if=\"sitem.tip\" style=\"float: right; color: #8492a6; font-size: 13px\">{{ sitem.tip }}</span>\n      </el-option>\n    </el-select>\n\n    <el-switch\n      v-if='item.type===\"switch\"'\n      v-model=\"forms[item.prop]\"\n      :disabled=\"item.disabled\"\n      :active-text=\"item.activetext\"\n      :inactive-text=\"item.inactivetext\"\n      :active-color=\"item.activecolor\"\n      :inactive-color=\"item.inactivecolor\"\n      :size=\"$store.state.params.form.size || item.size || 'mini'\"\n      @change=\"formChange\"\n    ></el-switch>\n\n    <el-slider\n      v-if='item.type===\"slider\"'\n      v-model=\"forms[item.prop]\"\n      :min=\"item.min\"\n      :max=\"item.max\"\n      :disabled=\"item.disabled\"\n      :step=\"item.step\"\n      :show-stops=\"item.showstops\"\n      :show-input=\"item.showinput\"\n      :range=\"item.range\"\n      :size=\"$store.state.params.form.size || item.size || 'mini'\"\n      @change=\"formChange\"\n    ></el-slider>\n\n    <el-time-select\n      v-if='item.type===\"timeSelect\"'\n      v-model=\"forms[item.prop]\"\n      :disabled=\"item.disabled\"\n      :clearable=\"item.clearable\"\n      :picker-options=\"item.pickeroptions\"\n      :placeholder=\"item.placeholder || item.label\"\n      :prefix-icon=\"item.prefixicon\"\n      value-format=\"HH:mm:ss\"\n      :default-value=\"item.defaultValue\"\n      :size=\"$store.state.params.form.size || item.size || 'mini'\"\n      @change=\"formChange\"\n    ></el-time-select>\n\n    <el-time-picker\n      v-if='item.type===\"timePicker\"'\n      v-model=\"forms[item.prop]\"\n      :disabled=\"item.disabled\"\n      :clearable=\"item.clearable\"\n      :placeholder=\"item.placeholder || item.label\"\n      :prefix-icon=\"item.prefixicon\"\n      :is-range=\"item.isrange\"\n      :start-placeholder=\"item.startplaceholder\"\n      :end-placeholder=\"item.endplaceholder\"\n      :range-separator=\"item.rangeseparator\"\n      value-format=\"HH:mm:ss\"\n      :default-value=\"item.defaultValue\"\n      :size=\"$store.state.params.form.size || item.size || 'mini'\"\n      @change=\"formChange\"\n    ></el-time-picker>\n\n    <el-date-picker\n      v-if='(item.type===\"datePicker\") && ( item.datetype==\"date\" || item.datetype==\"dates\" || item.datetype==\"daterange\")'\n      v-model=\"forms[item.prop]\"\n      :type=\"item.datetype\"\n      :placeholder=\"item.placeholder || item.label\"\n      :clearable=\"item.clearable\"\n      :disabled=\"item.disabled\"\n      :prefix-icon=\"item.prefixicon\"\n      value-format=\"yyyy-MM-dd\"\n      :start-placeholder=\"item.startplaceholder\"\n      :end-placeholder=\"item.endplaceholder\"\n      :range-separator=\"item.rangeseparator\"\n      :picker-options=\"startEndLimitHandle\"\n      :default-value=\"item.defaultValue\"\n      :size=\"$store.state.params.form.size || item.size || 'mini'\"\n      @change=\"formChange\"\n    ></el-date-picker>\n    <el-date-picker\n      v-if='(item.type===\"datePicker\") && item.datetype==\"week\"'\n      v-model=\"forms[item.prop]\"\n      type=\"week\"\n      format=\"yyyy 第 WW 周\"\n      value-format=\"yyyy-MM-dd\"\n      :placeholder=\"item.placeholder || item.label\"\n      :clearable=\"item.clearable\"\n      :disabled=\"item.disabled\"\n      :prefix-icon=\"item.prefixicon\"\n      :start-placeholder=\"item.startplaceholder\"\n      :end-placeholder=\"item.endplaceholder\"\n      :range-separator=\"item.rangeseparator\"\n      :picker-options=\"startEndLimitHandle\"\n      :default-value=\"item.defaultValue\"\n      :size=\"$store.state.params.form.size || item.size || 'mini'\"\n      @change=\"formChange\"\n    ></el-date-picker>\n    <el-date-picker\n      v-if='(item.type===\"datePicker\")&& ( item.datetype==\"month\"|| item.datetype==\"monthrange\" )'\n      v-model=\"forms[item.prop]\"\n      :type=\"item.datetype\"\n      :placeholder=\"item.placeholder || item.label\"\n      :clearable=\"item.clearable\"\n      :disabled=\"item.disabled\"\n      :prefix-icon=\"item.prefixicon\"\n      value-format=\"yyyy-MM\"\n      :start-placeholder=\"item.startplaceholder\"\n      :end-placeholder=\"item.endplaceholder\"\n      :range-separator=\"item.rangeseparator\"\n      :picker-options=\"startEndLimitHandle\"\n      :default-value=\"item.defaultValue\"\n      :size=\"$store.state.params.form.size || item.size || 'mini'\"\n      @change=\"formChange\"\n    ></el-date-picker>\n    <el-date-picker\n      v-if='(item.type===\"datePicker\") && item.datetype==\"year\"'\n      v-model=\"forms[item.prop]\"\n      type=\"year\"\n      :placeholder=\"item.placeholder || item.label\"\n      :clearable=\"item.clearable\"\n      :disabled=\"item.disabled\"\n      :prefix-icon=\"item.prefixicon\"\n      value-format=\"yyyy\"\n      :start-placeholder=\"item.startplaceholder\"\n      :end-placeholder=\"item.endplaceholder\"\n      :range-separator=\"item.rangeseparator\"\n      :picker-options=\"startEndLimitHandle\"\n      :default-value=\"item.defaultValue\"\n      :size=\"$store.state.params.form.size || item.size || 'mini'\"\n      @change=\"formChange\"\n    ></el-date-picker>\n    <el-date-picker\n      v-if='(item.type===\"datePicker\") && (item.datetype==\"datetime\" || item.datetype==\"datetimerange\")'\n      v-model=\"forms[item.prop]\"\n      :type=\"item.datetype\"\n      :placeholder=\"item.placeholder || item.label\"\n      :clearable=\"item.clearable\"\n      :disabled=\"item.disabled\"\n      :prefix-icon=\"item.prefixicon\"\n      value-format=\"yyyy-MM-dd HH:mm:ss\"\n      :start-placeholder=\"item.startplaceholder\"\n      :end-placeholder=\"item.endplaceholder\"\n      :range-separator=\"item.rangeseparator\"\n      :picker-options=\"startEndLimitHandle\"\n      :default-value=\"item.defaultValue\"\n      :size=\"$store.state.params.form.size || item.size || 'mini'\"\n      @change=\"formChange\"\n    ></el-date-picker>\n\n    <el-radio-group\n      v-if='(item.type===\"radio\")'\n      v-model=\"forms[item.prop]\"\n      :disabled=\"item.disabled\"\n      :size=\"$store.state.params.form.size || item.size || 'mini'\"\n      @change=\"formChange\"\n    >\n      <div v-if='item.radiotype===\"yuan\" || !item.radiotype'>\n        <el-radio\n          v-for=\"(item2) in selectOption\"\n          :key=\"item2[(item.props && item.props.value) || 'value']+item2[(item.props && item.props.label) || 'label']+'yuan'\"\n          :label=\"item2[(item.props && item.props.value) || 'value']\"\n        >{{item2[(item.props && item.props.label) || 'label']}}</el-radio>\n      </div>\n      <div v-if='item.radiotype===\"button\"'>\n        <el-radio-button\n          v-for=\"(item2) in selectOption\"\n          :key=\"item2[(item.props && item.props.value) || 'value'] + item2[(item.props && item.props.label) || 'label'] +'but'\"\n          :label=\"item2[(item.props && item.props.value) || 'value']\"\n        >{{item2[(item.props && item.props.label) || 'label']}}</el-radio-button>\n      </div>\n    </el-radio-group>\n\n    <el-checkbox-group\n      v-if='(item.type===\"checkbox\") && forms[item.prop]'\n      v-model=\"forms[item.prop]\"\n      :disabled=\"item.disabled\"\n      :border=\"item.border\"\n      :min=\"item.min\"\n      :max=\"item.max\"\n      :size=\"$store.state.params.form.size || item.size || 'mini'\"\n      @change=\"formChange\"\n    >\n      <div v-if='(item.checkboxtype=== \"fang\" || !item.checkboxtype) && selectOption && selectOption.length > 0'>\n        <el-checkbox\n          v-for=\"(item2) in selectOption\"\n          :key=\"item2[(item.props && item.props.value) || 'value']+item.label\"\n          :label=\"item2[(item.props && item.props.value) || 'value']\"\n        >{{item2[(item.props && item.props.label) || 'label']}}</el-checkbox>\n      </div>\n      <div v-if='item.checkboxtype=== \"button\" && selectOption && selectOption.length > 0'>\n        <el-checkbox-button\n          v-for=\"(item2) in selectOption\"\n          :key=\"'checkbut'+item2[(item.props && item.props.value) || 'value']+item.label\"\n          :label=\"item2[(item.props && item.props.value) || 'value']\"\n        >{{item2[(item.props && item.props.label) || 'label']}}</el-checkbox-button>\n      </div>\n    </el-checkbox-group>\n\n    <!-- 颜色选择器 -->\n    <el-color-picker v-if=\"(item.type == 'colorSelect')\" v-model=\"forms[item.prop]\" :placeholder=\"item.placeholder || item.label\" @change=\"formChange\"></el-color-picker>\n\n    <!-- 图片 -->\n    <ul\n      class=\"el-upload-list el-upload-list--picture-card\"\n      v-if='item.type===\"image\"'\n    >\n      <li\n        tabindex=\"0\"\n        class=\"el-upload-list__item is-success\"\n        v-for=\"mi in forms[item.prop]\"\n        :key=\"'image'+mi.url\"\n        @click=\"handlePictureCardPreview(mi.url)\"\n      >\n        <el-image style=\"width: 100%; height: 100%;\" :src=\"mi.url\" :fit=\"item.fit || 'contain'\">\n          <div slot=\"error\" class=\"image-slot loading-back\" style=\"position:absolute;\">\n            <i class=\"el-icon-loading\" style=\"font-size: 24px;color:#999;\"></i>\n          </div>\n        </el-image>\n      </li>\n      <li\n        tabindex=\"0\"\n        class=\"el-upload-list__item\"\n        v-if='!forms[item.prop] || forms[item.prop].length==0'\n      >\n        <el-image style=\"width: 100%; height: 100%;\" src :fit=\"item.fit || 'contain'\">\n          <div slot=\"error\" class=\"image-slot loading-back\" style=\"position:absolute;\">\n            <i class=\"el-icon-loading\" style=\"font-size: 24px;color:#999;\"></i>\n          </div>\n        </el-image>\n      </li>\n    </ul>\n\n    <!-- 上传图片 -->\n    <el-upload\n      v-if='(item.type === \"imageUpload\")'\n      :class=\"item.fileList.length < (item.limit ? item.limit : 5) ? 'form-list-upload-img' : 'form-list-upload-img-none'\"\n      :ref=\"'uploadImageBtn'+'_'+item.prop\"\n      :action=\"item.action || (item.uploadHttp && item.uploadHttp.url) || ''\"\n      :multiple=\"item.multipleUpload\"\n      :limit=\"item.limit || 5\"\n      :headers=\"item.headers || {}\"\n      :file-list=\"item.fileList || []\"\n      :size=\"$store.state.params.form.size || item.size || 'mini'\"\n      list-type=\"picture-card\"\n      :data=\"formatUploadData(item)\"\n      accept=\".jpg,.jpeg,.png,.gif,.bmp,.JPG,.JPEG,.PBG,.GIF,.BMP\"\n      :auto-upload=\"true\"\n      :on-success=\"handleSuccess\"\n      :on-error=\"item.handleError\"\n      :on-preview=\"handlePictureCardPreviewUpload\"\n      :on-remove=\"handleRemove\"\n      :on-change=\"uploadChangeHandle\"\n      :before-upload=\"beforeUpload\"\n    >\n      <i class=\"el-icon-plus\"></i>\n      <div v-if=\"imageValidate\" slot=\"tip\" class=\"el-upload__tip\" style=\"color: #F56C6C;font-size: 12px;\">只能上传图片，且不超过20M</div>\n    </el-upload>\n\n    <!-- 预览图片 -->\n    <el-dialog\n      v-if='item.type === \"imageUpload\" || item.type === \"image\"'\n      class=\"preViewDialog\"\n      :visible.sync=\"dialogVisible\"\n      append-to-body\n    >\n      <img width=\"100%\" :src=\"dialogImageUrl\" alt />\n    </el-dialog>\n\n    <!-- 上传文件 -->\n    <el-upload\n      v-if='item.type === \"fileUpload\"'\n      :class=\"item.fileList.length < (item.limit ? item.limit : 5) ? 'form-list-upload-file' : 'form-list-upload-file-none'\"\n      :ref=\"'uploadFileBtn'+'_'+item.prop\"\n      :action=\"item.action || (item.uploadHttp && item.uploadHttp.url) || ''\"\n      :multiple=\"item.multipleUpload\"\n      :limit=\"item.limit\"\n      :headers=\"item.headers\"\n      :file-list=\"item.fileList\"\n      :size=\"$store.state.params.form.size || item.size || 'mini'\"\n      :data=\"formatUploadData(item)\"\n      :auto-upload=\"true\"\n      :on-success=\"handleSuccess\"\n      :on-error=\"item.handleError\"\n      :on-remove=\"handleRemove\"\n      :on-change=\"uploadChangeHandle\"\n      :before-upload=\"beforeUpload\"\n    >\n      <el-button slot=\"trigger\" size=\"mini\" type=\"primary\">选取文件</el-button>\n      <div v-if=\"fileValidate\" slot=\"tip\" class=\"el-upload__tip\" style=\"color: #F56C6C;font-size: 12px;\">文件大小不超过20M</div>\n    </el-upload>\n\n    <!-- 文件列表 -->\n    <ul class=\"el-upload-list el-upload-list--text\" v-if=\"item.type==='file'\">\n      <li\n        class=\"el-upload-list__item is-success\"\n        v-for=\"fi in forms[item.prop]\"\n        :key=\"'file'+fi.url\"\n      >\n        <a\n          class=\"el-upload-list__item-name\"\n          target=\"_blank\"\n          :href=\"fi.url?fi.url:'javascript:void(0)'\"\n        >\n          <i class=\"el-icon-document\"></i>\n          {{fi.name}}\n        </a>\n        <label class=\"el-upload-list__item-status-label\">\n          <i class=\"el-icon-upload-success el-icon-circle-check\"></i>\n        </label>\n        <i class=\"el-icon-close\"></i>\n      </li>\n      <li class=\"el-upload-list__item\" v-if='!forms[item.prop] || forms[item.prop].length==0'>\n        <a class=\"el-upload-list__item-name\">\n          <i class=\"el-icon-document\"></i>\n          {{'文件名称'}}\n        </a>\n      </li>\n    </ul>\n\n    <!-- 选项卡 -->\n    <jvs-tab\n      style=\"width: 100%;\"\n      :originOption=\"originOption\"\n      :defalutSet=\"defalutSet\"\n      :formRef=\"formRef\"\n      v-if=\"item.type=='tab'\"\n      :active=\"item.activeName\"\n      :formItem=\"item\"\n      :forms=\"forms[item.prop]\"\n      :option=\"{type:'card', column: item.dicData}\"\n      :userList=\"userList\"\n      :resetRadom=\"resetRadom\"\n      @tab-click=\"tabClick\"\n      @formChange=\"tabFormchange\">\n    </jvs-tab>\n    <!-- <el-tabs v-model=\"item.activeName\" type=\"card\" @tab-click=\"item.handleClick(item.activeName)\" v-if=\"item.type==='tab'\">\n      <el-tab-pane v-for=\"ti in item.dicData\" :key=\"'tab'+ti.value\" :label=\"ti.label\" :name=\"ti.value\"></el-tab-pane>\n    </el-tabs> -->\n\n    <!-- 展示的表格 -->\n    <!-- <el-table\n      v-if=\"item.type==='TableReadOnly' || item.type==='tableReadOnly'\"\n      :data=\"forms[item.prop]\"\n      :border=\"item.border\"\n      highlight-current-row\n      class=\"tb-edit\"\n      align=\"center\"\n      style=\"width: 100%;cursor:pointer;\"\n    >\n      <el-table-column\n        v-for=\"(ti) in item.option\"\n        :key=\"''+ti.value+'table'\"\n        :prop=\"ti.value\"\n        :label=\"ti.label\"\n        style=\"text-align:center;\"\n      ></el-table-column>\n    </el-table> -->\n\n    <!-- 描述框 -->\n    <div\n      v-if=\"item.type==='box'\"\n      :style=\"'height: 32px;line-height:28px;text-align:'+item.contentposition+';font-size:'+item.fontsize+'px;color:'+item.textcolor+';font-weight:'+item.fontweight+';'\"\n    >\n      {{forms[item.prop]}}\n      <span v-if='!forms[item.prop]'>{{item.text}}</span>\n    </div>\n    <!-- 链接 -->\n    <a\n      v-if=\"item.type =='link'\"\n      :href=\"forms[item.prop]?forms[item.prop]:'javascript:void(0);'\"\n      :target=\"item.openType\"\n      :style=\"'height: 32px;line-height:28px;text-align:'+item.contentposition+';font-size:'+item.fontsize+'px;color:'+item.textcolor+';font-weight:'+item.fontweight+';text-decoration:'+item.textdecoration+';'\"\n    >{{item.text}}</a>\n    <!-- 嵌入页面 -->\n    <div v-if=\"item.type==='iframe'\" :style=\"'width:100%;height:'+item.iframeheight+';background:#ecf5ff;'\">\n      <iframe\n        :name=\"item.id\"\n        :id=\"item.prop\"\n        :src=\"item.iframeurl\"\n        frameborder=\"0\"\n        width=\"100%\"\n        height=\"100%\"\n        scrolling=\"scroll\"\n      ></iframe>\n    </div>\n\n    <!-- 图标选择器 -->\n     <div class=\"form-item-icon-selct\" style=\"position: relative;\" v-if=\"item.type == 'iconSelect'\" :id=\"'icon-select-item-'+item.prop\">\n       <el-popover\n          placement=\"bottom\"\n          :width=\"getWidth(item)\"\n          v-if=\"!item.disabled\"\n          trigger=\"click\">\n          <div class=\"icon-select-tool\">\n            <i v-for=\"(it, itx) in iconList\" :key=\"itx+it\" :class=\"it\" @click=\"checkIcon(item.prop, it)\"></i>\n          </div>\n          <div slot=\"reference\" style=\"display:flex;align-items: center;\">\n            <el-input v-model=\"forms[item.prop]\" placeholder=\"图标\" :disabled=\"item.disabled\"></el-input>\n            <i v-if=\"forms[item.prop]\" :class=\"forms[item.prop]\" style=\"margin-left:10px;\"></i>\n          </div>\n        </el-popover>\n        <div v-else style=\"display:flex;align-items: center;\">\n          <el-input v-model=\"forms[item.prop]\" placeholder=\"图标\" :disabled=\"item.disabled\"></el-input>\n          <i v-if=\"forms[item.prop]\" :class=\"forms[item.prop]\" style=\"margin-left:10px;\"></i>\n        </div>\n      </div>\n\n    <!-- p文字 -->\n    <p v-if=\"item.type === 'p'\"  :style=\"{'text-align': item.contentposition,'font-size':item.fontsize+'px',color:item.textcolor}\">{{item.text}}</p>\n\n    <!-- 分割线 -->\n    <el-divider v-if=\"item.type === 'divider'\" :content-position='item.contentposition'>{{item.text}}</el-divider>\n\n    <!-- 用户组件 -->\n    <userForm\n      v-if=\"item.type==='user'\"\n      :form=\"forms\"\n      :prop=\"item.prop\"\n      :selectable=\"item.multiple\"\n      :defaultValue=\"item.defaultValue\"\n      :enableinput=\"item.allowinput\"\n      :disabled=\"item.disabled\"\n      :resetRadom=\"resetRadom\"\n      @change=\"formChange\" /> <!-- @formChange=\"tabFormchange\" -->\n\n    <!-- 计数器   滑块   显示单位 -->\n    <span v-if=\"['inputNumber', 'slider'].indexOf(item.type) > -1 && item.unit\" style=\"padding-left: 5px;\">{{item.unit}}</span>\n\n    <!-- 地区选择 -->\n    <el-cascader\n      v-if=\"item.type==='chinaArea'\"\n      v-model=\"forms[item.prop]\"\n      size=\"mini\"\n      :options=\"chinaAreaList\"\n      clearable\n      :show-all-levels=\"item.showalllevels\"\n      :collapse-tags=\"!item.collapsetags\"\n      :disabled=\"item.disabled\"\n      :props=\"{\n        expandTrigger: 'hover',\n        multiple: item.multiple === false ? item.multiple : true,\n        label: 'name',\n        value: item.emitKey ? item.emitKey : 'code',\n        emitPath: item.emitPath\n      }\"\n      @change=\"formChange\"\n    >\n    </el-cascader>\n\n    <!-- 富文本 -->\n    <div v-if=\"item.type === 'htmlEditor'\" :id=\"item.prop+'-editor'\"></div>\n\n    <!-- 按钮 -->\n    <jvs-button v-if=\"item.type === 'button'\" :disabled=\"item.disabled\" :type=\"item.buttonType\" :round=\"item.buttonRound\" :size=\"item.size\" @click=\"btnClick\">{{item.text}}</jvs-button>\n\n    <!-- 级联选择 -->\n    <el-cascader\n      v-if=\"item.type==='cascader'\"\n      v-model=\"forms[item.prop]\"\n      size=\"mini\"\n      :options=\"cascaderList\"\n      clearable\n      :show-all-levels=\"item.showalllevels\"\n      :collapse-tags=\"!item.collapsetags\"\n      :disabled=\"item.disabled\"\n      :props=\"{\n        expandTrigger: 'hover',\n        multiple: item.multiple === false ? item.multiple : true,\n        label: 'name',\n        value: item.emitKey ? item.emitKey : 'value',\n        emitPath: item.emitPath\n      }\"\n      @change=\"formChange\"\n    >\n    </el-cascader>\n\n    <!-- 表单卡片 -->\n    <formCard\n      v-if=\"item.type == 'formbox'\"\n      :formItem=\"item\"\n      :forms=\"forms[item.prop]\"\n      :originOption=\"originOption\"\n      :defalutSet=\"defalutSet\"\n      :userList=\"userList\"\n      :resetRadom=\"resetRadom\"\n      @formChange=\"tabFormchange\"\n      >\n    </formCard>\n\n    <!-- 右侧提示 -->\n    <el-tooltip v-if=\"item.tips && item.tips.position == 'right' && item.tips.text\" class=\"form-item-tooltip\" effect=\"dark\" :content=\"item.tips.text\" placement=\"top\">\n      <i class=\"el-icon-question\"></i>\n    </el-tooltip>\n  </div>\n</template>\n\n<script>\nimport userForm from './userForm'\nimport iconList from '@/const/iconfont'\nimport systemIcon from '@/const/systemIcon'\nimport formCard from './formcard'\n// import {getSelectData, getFetchTable, getLineDataOfGet, getFormReviewData} from '../api/tableDesignsenior'\nimport {getSelectData} from '@/api/index'\nimport {areaList} from '@/const/chinaArea.js'\nimport E from 'wangeditor'\nimport {sendMyRequire} from '@/api/newDesign'\nexport default {\n  name: \"formitem\",\n  components: {\n    userForm,\n    formCard,\n  },\n  props: {\n    // 表单对象\n    form: {\n      type: Object,\n      default: () => {\n        return {}\n      }\n    },\n    // 表单内的组件对象\n    item: {\n      type: Object,\n      default: () => {\n        return {}\n      }\n    },\n    originOption: {\n      type: Object\n    },\n    defalutSet: {\n      type: Object\n    },\n    formRef: {\n      type: String,\n      default: 'ruleForm'\n    },\n    // 用户列表\n    userList : {\n      type: Array,\n      default: () => {\n        return []\n      }\n    },\n    // 是否需要刷新组件\n    freshBoolean: {\n      type: Boolean\n    },\n    // 是否需要重新初始化\n    reinitFlag: {\n      type: Number\n    },\n    // 表格行数据\n    rowData: {\n      type: Object\n    },\n    resetRadom: {\n      type: Number\n    }\n  },\n  computed: {\n    forms () {\n      return this.form\n    },\n  },\n  data () {\n    return {\n      selectOption: [],\n      startEndLimitHandle: {\n        disabledDate: time => {\n          let bool=false\n          if (!this.item.startLimit) {\n            let end=new Date(this.item.endLimit).getTime()\n            if (time.getTime()<=end) {\n              bool=false\n            } else {\n              bool=true\n            }\n          }\n          if (!this.item.endLimit) {\n            let start=new Date(this.item.startLimit).getTime()\n            if (time.getTime()>=start-8.64e7) {\n              bool=false\n            } else {\n              bool=true\n            }\n          }\n          if (!this.item.startLimit&&!this.item.endLimit) {\n            bool=false\n          }\n          if (this.item.startLimit&&this.item.endLimit) {\n            let start=new Date(this.item.startLimit).getTime()\n            let end=new Date(this.item.endLimit).getTime()\n            if (time.getTime()>=start-8.64e7&&time.getTime()<=end) {\n              bool=false\n            } else {\n              bool=true\n            }\n          }\n          return bool\n        }\n      },\n      errorShow: false, // 自定义验证提示错误\n      dialogVisible: false, // 预览图片弹框\n      dialogImageUrl: '', // 预览图片地址\n      iconList: [...iconList, ...systemIcon], // 图标列表\n      chinaAreaList: areaList,\n      cascaderList: [], // 级联选择数据\n      editor: null, // 富文本\n      pathArr: [], // 路径结果\n      imageValidate: false,\n      fileValidate: false,\n      eventList: ['button', 'input', 'textarea', 'inputNumber', 'select', 'slider', 'switch', 'datePicker', 'timeSelect', 'timePicker',\n      'radio', 'checkbox', 'imageUpload', 'fileUpload', 'htmlEditor', 'cascader', 'chinaArea', 'user'],\n      initHtml: '', // 记录富文本初始值\n    };\n  },\n  methods: {\n    changeHandle (val) {\n      this.$set(this.item, 'currVal', val)\n      this.$set(this.forms, this.item.prop, val)\n      this.formChange()\n      this.$forceUpdate()\n    },\n    uploadChangeHandle (file, fileList) {\n      // console.log('upload change.....')\n      // console.log(fileList)\n      this.$forceUpdate()\n      let obj={}\n      obj[this.item.prop]=fileList\n      this.$emit('currentValueHandle', obj)\n    },\n    beforeUpload (file) {\n      if(file.size > 20971520) {\n        if(this.item.type == 'imageUpload') {\n          this.imageValidate = true\n        }else{\n          this.fileValidate = true\n        }\n        return false\n      }else{\n        if(this.item.type == 'imageUpload') {\n          this.imageValidate = false\n        }else{\n          this.fileValidate = false\n        }\n      }\n    },\n    async initItem () {\n      if (!this.item.dicUrl && !this.item.url) {\n        if (this.item.dicData) {\n          this.selectOption=this.item.dicData\n        }\n      } else {\n        let url=this.item.dicUrl || this.item.url\n        if (!url) {\n          return false\n        }\n        getSelectData(url).then(res => {\n          if(res.data.code === 0) {\n            this.selectOption = []\n            for(let sitem in res.data.data){\n              if(typeof res.data.data[sitem] == 'string') {\n                this.selectOption.push({\n                  label: res.data.data[sitem],\n                  value: res.data.data[sitem]\n                })\n              }else{\n                // this.selectOption.push({\n                //   label: res.data.data[sitem][this.item.props.label ? this.item.props.label : 'label'],\n                //   value: res.data.data[sitem][this.item.props.value ? this.item.props.value : 'value']\n                // })\n                this.selectOption.push(res.data.data[sitem])\n              }\n            }\n          }\n        })\n      }\n      if(['checkbox', 'formbox'].indexOf(this.item.type) > -1) {\n        !this.forms[this.item.prop] && (this.$set(this.forms, this.item.prop, []))\n      }\n      // 下拉切换是否多选时，初始化数据类型\n      if(this.item.type == 'select') {\n        if(this.item.multiple) {\n          !this.forms[this.item.prop] && (this.$set(this.forms, this.item.prop, []))\n        }else{\n          if((!this.forms[this.item.prop] && this.forms[this.item.prop] !== 0 && this.forms[this.item.prop] !== false) || this.forms[this.item.prop] instanceof Array) {\n            this.$set(this.forms, this.item.prop, \"\")\n          }\n        }\n      }\n      // 滑块\n      if(this.item.type == 'slider') {\n        if(this.item.range) {\n          !this.forms[this.item.prop] && (this.$set(this.forms, this.item.prop, [0, this.item.max / 2]))\n        }else{\n          if(!this.forms[this.item.prop] || this.forms[this.item.prop] instanceof Array) {\n            this.$set(this.forms, this.item.prop, 0)\n          }\n        }\n      }\n      // 表单项默认值填充，权重小于表单初始化值\n      if(this.item.defaultValue || this.item.defaultValue === false || this.item.defaultValue === \"\") {\n        (!this.forms[this.item.prop] && this.forms[this.item.prop] !== false && this.forms[this.item.prop] !== 0) && (this.$set(this.forms, this.item.prop, this.item.defaultValue))\n      }\n      // tab选项卡  step步骤条\n      if(['tab'].indexOf(this.item.type) > -1) {\n        if(this.item.dicData && this.item.dicData.length > 0) {\n          !this.forms[this.item.prop] && (this.$set(this.forms, this.item.prop, {}))\n          for(let col in this.item.column) {\n            if(this.item.column[col] && this.item.column[col].length > 0) {\n              !this.forms[this.item.prop][col] && (this.$set(this.forms[this.item.prop], col, {}))\n            }\n          }\n        }\n      }\n      if(['imageUpload', 'fileUpload'].indexOf(this.item.type) > -1 && this.forms[this.item.prop]){\n        this.$set(this.item, 'fileList', this.forms[this.item.prop])\n      }\n      this.$forceUpdate()\n    },\n    handlePictureCardPreview (url) {\n      this.dialogImageUrl=url\n      this.dialogVisible=true\n    },\n    handlePictureCardPreviewUpload (file) {\n      this.dialogImageUrl=file.url\n      this.dialogVisible=true\n    },\n    checkIcon (key, icon) {\n      this.form[key] = icon\n      this.$forceUpdate()\n    },\n    // 字段值改变传出表单\n    formChange () {\n      this.$emit('formChange', this.form)\n      if(this.eventList.indexOf(this.item.type) > -1) {\n        this.eventRequireHandle()\n      }\n      if(this.item.type == 'user') {\n        if(this.item.rules && this.item.rules.length > 0) {\n          if(this.item.rules[0].required) {\n            if(this.item.multiple) {\n              if(this.form[this.item.prop].length > 0) {\n                this.$emit('validateHandle', {type: 'clear', item: this.item})\n              }else{\n                this.$emit('validateHandle', {type: 'validate', item: this.item})\n              }\n            }else{\n              if(this.form[this.item.prop]) {\n                this.$emit('validateHandle', {type: 'clear', item: this.item})\n              }else{\n                this.$emit('validateHandle', {type: 'validate', item: this.item})\n              }\n            }\n          }\n        }\n      }\n    },\n    // 选项卡formchange\n    tabFormchange (data) {\n      this.$set(this.form, this.item.prop, data)\n      this.formChange()\n      this.$forceUpdate()\n    },\n    addRowHandle () {\n      if(!this.forms[this.item.prop]) {\n        this.$set(this.forms, this.item.prop, [])\n      }\n      this.forms[this.item.prop].push({})\n    },\n    deleteRow (row, index) {\n      this.forms[this.item.prop].splice(index, 1)\n    },\n    // 同步表格数据\n    setTableHandle (data) {\n      this.$set(this.forms, this.item.prop, data)\n    },\n    // 获取宽度占比\n    getWidth (item) {\n      let w = 400\n      if(item.prop && document.getElementById('icon-select-item-'+item.prop)) {\n        w = document.getElementById('icon-select-item-'+item.prop).clientWidth\n      }\n      return w\n    },\n    // 初始化富文本\n    initEditor (prop) {\n      let that = this\n      this.$nextTick(() => {\n        let _this = that\n        if(_this.editor) {\n          _this.editor.destroy()\n        }\n        _this.editor = null\n        $('#' + prop + '-editor').html(\"\")\n        _this.editor = new E('#' + prop + '-editor')\n        _this.editor.config.height = 400\n        // _this.editor.config.uploadImgShowBase64 = true\n        _this.editor.config.menus = [\n          'head',\n          'bold',\n          'fontSize',\n          'fontName',\n          'italic',\n          'underline',\n          'strikeThrough',\n          'indent',\n          'lineHeight',\n          'foreColor',\n          'backColor',\n          'link',\n          'list',\n          'justify',\n          'quote',\n          'emoticon',\n          'image',\n          'table',\n          'code',\n          'splitLine',\n          'undo',\n          'redo',\n        ]\n        _this.editor.config.onblur = function (newHtml) {\n          let vb = false\n          if(!newHtml || JSON.stringify(newHtml) == '\" \"' || newHtml == '<p></p>' && newHtml == '<p><br></p>') {\n            _this.$set(_this.form, prop, \"\")\n            vb = false\n          }else{\n            _this.$set(_this.form, prop, newHtml)\n            vb = true\n          }\n          if(_this.item.rules && _this.item.rules.length > 0) {\n            if(_this.item.rules[0].required) {\n              if(vb) {\n                _this.$emit('validateHandle', {type: 'clear', item: _this.item})\n              }else{\n                _this.$emit('validateHandle', {type: 'validate', item: _this.item})\n              }\n            }\n          }\n          _this.eventRequireHandle()\n        }\n        _this.editor.config.onchange = function (newHtml) {\n          let vb = false\n          if(!newHtml || JSON.stringify(newHtml) == '\" \"' || newHtml == '<p></p>' && newHtml == '<p><br></p>') {\n            _this.$set(_this.form, prop, \"\")\n            vb = false\n          }else{\n            _this.$set(_this.form, prop, newHtml)\n            vb = true\n          }\n          if(_this.item.rules && _this.item.rules.length > 0) {\n            if(_this.item.rules[0].required) {\n              if(vb) {\n                _this.$emit('validateHandle', {type: 'clear', item: _this.item})\n              }else{\n                _this.$emit('validateHandle', {type: 'validate', item: _this.item})\n              }\n            }\n          }\n        }\n        // _this.editor.config.uploadImgServer = '/api/file/upload/jvshtmleditor'\n        _this.editor.config.uploadImgServer = '/mgr/document//upload/jvs-public'\n        _this.editor.config.uploadFileName = 'file'\n        _this.editor.config.uploadImgHooks = {\n          // 图片上传并返回了结果，图片插入已成功\n          success: function(xhr) {\n            console.log('success', xhr)\n          },\n          // 图片上传并返回了结果，但图片插入时出错了\n          fail: function(xhr, editor, resData) {\n            console.log('fail', resData)\n          },\n          // 上传图片出错，一般为 http 请求的错误\n          error: function(xhr, editor, resData) {\n            console.log('error', xhr, resData)\n          },\n          // 图片上传并返回了结果，想要自己把图片插入到编辑器中\n          // 例如服务器端返回的不是 { errno: 0, data: [...] } 这种格式，可使用 customInsert\n          customInsert: function(insertImgFn, result) {\n            // insertImgFn 可把图片插入到编辑器，传入图片 src ，执行函数即可\n            if(result.code == 0 && result.data && result.data.fileLink) {\n              // let url = result.data.filelink.indexOf('?') ? result.data.filelink.split('?')[0] : result.data.filelink\n              insertImgFn(result.data.fileLink)\n            }\n          }\n        }\n        _this.editor.create()\n        if(_this.form[prop]) {\n          _this.form[prop] = _this.form[prop].replace(/&lt;/g, \"<\")\n          _this.form[prop] = _this.form[prop].replace(/&gt;/g, \">\")\n          _this.editor.txt.html(_this.form[prop])\n          _this.initHtml = _this.form[prop]\n        }\n        if(_this.item.disabled) {\n          _this.editor.disable()\n        }else{\n          _this.editor.enable()\n        }\n      })\n      this.$forceUpdate()\n    },\n    tabClick (name) {\n      if(this.item.handleClick) {\n        this.item.handleClick(name)\n      }\n    },\n    // 按钮点击\n    btnClick () {\n      if(this.item.eventType == 'url') {\n        if(this.item.openUrl) {\n          this.$openUrl(this.item.openUrl, this.item.newWindowOpen ? '_blank' : '_self')\n        }\n      }else{\n        this.eventRequireHandle()\n      }\n    },\n    // 上传成功回调\n    handleSuccess (res, file, fileList) {\n      if(res.code === 0){\n        let obj = {\n          name: res.data.originalFileName,\n          url: res.data.filelink,\n          fileName: res.data.fileName\n        }\n        this.item.fileList.push(obj)\n        let temp = {\n          key: this.item.prop,\n          fileList: this.item.fileList\n        }\n        this.$emit('file', temp)\n        this.$set(this.forms, this.item.prop, this.item.fileList)\n        this.eventRequireHandle()\n      }\n    },\n    eventRequireHandle () {\n      if(this.item.eventHttp) {\n        let tp = JSON.parse(JSON.stringify(this.item.eventHttp))\n        if(this.$store.state.labelValue && this.$store.state.labelValue.requestContentType) {\n          tp.requestContentType = this.$store.state.labelValue.requestContentType[tp.requestContentType]\n        }\n        if(tp && tp.url) {\n          sendMyRequire(tp, this.form).then(res => {\n            if(res.data.code == 0) {\n              if(res.data.msg) {\n                this.$message.success(res.data.msg)\n                if(res.data.data) {\n                  for(let i in res.data.data) {\n                    this.$set(this.form, i, res.data.data[i])\n                  }\n                  this.$emit('formChange', this.form)\n                }\n              }\n            }\n          }).catch(e => {})\n        }\n      }\n    },\n    // 处理上传参数\n    formatUploadData (item) {\n      let obj = {}\n      if(item.uploadHttp) {\n        obj = item.uploadHttp.parameters\n      }\n      return obj\n    },\n    // 删除\n    handleRemove (file, fileList) {\n      for(let i in this.item.fileList) {\n        if(this.item.fileList[i].uid == file.uid) {\n          this.item.fileList.splice(i, 1)\n          let temp = {\n            key: this.item.prop,\n            fileList: this.item.fileList\n          }\n          this.$emit('file', temp)\n          this.$set(this.forms, this.item.prop, this.item.fileList)\n        }\n      }\n    }\n  },\n  watch: {\n    item: {\n      handler () {\n        this.initItem()\n        // 下拉框 单选 自定义选择\n        if(this.item.currVal) {\n          if(this.item.multiple) {\n            if(this.item.currVal instanceof Array !== true) {\n              this.$set(this.forms, this.item.prop, [])\n            }else{\n              this.$set(this.forms, this.item.prop, this.item.currVal)\n            }\n          }else{\n            if(this.item.currVal instanceof Array !== true) {\n              this.$set(this.forms, this.item.prop, this.item.currVal)\n            }else{\n              this.$set(this.forms, this.item.prop, \"\")\n            }\n          }\n        }\n        if(this.item.type == 'htmlEditor') {\n          $('#' + this.item.prop + '-editor').html(\"\")\n          this.initEditor(this.item.prop)\n        }\n        if(['imageUpload', 'fileUpload'].indexOf(this.item.type) > -1) {\n          if(this.item.rules && this.item.rules.length > 0) {\n            if(this.item.rules[0].required) {\n              if(this.forms[this.item.prop].length > 0) {\n                this.$emit('validateHandle', {type: 'clear', item: this.item})\n              }else{\n                this.$emit('validateHandle', {type: 'validate', item: this.item})\n              }\n            }\n          }\n        }\n      },\n      deep: true\n    },\n    freshBoolean: {\n      handler(newVal, oldVal) {\n        if(this.item.type == 'htmlEditor') {\n          $('#' + this.item.prop + '-editor').html(\"\")\n          this.initEditor(this.item.prop)\n        }else{\n          $('#' + this.item.prop + '-editor').html(\"\")\n          this.editor.destroy()\n        }\n      }\n    },\n    reinitFlag: {\n      handler(newVal, oldVal) {\n        if(newVal != -1) {\n          this.initItem()\n        }\n      }\n    },\n    resetRadom: {\n      handler (newVal, oldVal) {\n        if(newVal > -1) {\n          if(this.item.type == 'htmlEditor') {\n            this.editor.txt.html(this.initHtml)\n          }\n          if(this.item.type == 'checkbox') {\n            if(!this.forms[this.item.prop]) {\n              this.$set(this.forms, this.item.prop, [])\n            }\n          }\n        }\n      }\n    }\n  },\n  created () {\n    this.initItem()\n  },\n  mounted () {\n    if(this.item.type == 'htmlEditor') {\n      $('#' + this.item.prop + '-editor').html(\"\")\n      this.initEditor(this.item.prop)\n    }\n  }\n};\n</script>\n\n<style lang=\"scss\">\n.loading-back {\n  width: 100%;\n  height: 100%;\n  background: #f5f7fa;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n.form-list-upload-img {\n  .el-upload--picture-card {\n    display: inline-block;\n  }\n}\n.form-list-upload-img-none {\n  .el-upload--picture-card {\n    display: none;\n  }\n}\n.form-list-upload-file {\n  .el-upload--text {\n    display: inline-block;\n  }\n}\n.form-list-upload-file-none {\n  .el-upload--text {\n    display: none;\n  }\n}\n.icon-select-tool{\n  // margin-top: 10px;\n  display: flex;\n  flex-wrap: wrap;\n  height: 200px;\n  scrollbar-width: none; /* firefox */\n  -ms-overflow-style: none; /* IE 10+ */\n  overflow-x: hidden;\n  overflow-y: auto;\n  // box-shadow: 0 0 10px #ccc;\n  i{\n    margin: 10px;\n    display: block;\n    width: 20px;\n    height: 20px;\n    line-height: 20px;\n    cursor: pointer;\n  }\n  i:hover{\n    color: #409EFF;\n  }\n}\n.icon-select-tool::-webkit-scrollbar {\n  display: none; /* Chrome Safari */\n}\n.icon-select-tool-position{\n  position: absolute;\n  height: 158px;\n  top: 45px;\n  margin: 0;\n  z-index: 9;\n}\n.jvs-form-item{\n  min-height: 32px;\n  .el-slider, p, .el-input-number, .el-select, .el-date-editor, .form-item-icon-selct, .el-tabs, .el-cascader, .user-info-list{\n    flex: 1;\n  }\n  .el-input-number{\n    .el-input__inner{\n      text-align: left;\n    }\n  }\n  .el-input-number.is-disabled{\n    flex: none;\n    width: auto;\n    .el-input{\n      width: auto;\n      .el-input__inner{\n        padding-right: 0;\n      }\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "src/components/basic-assembly/levelForm.vue",
    "content": "<template>\n  <jvs-tab :active=\"activeName\" type=\"card\" :option=\"levelFormOption\">\n    <template v-for=\"item in levelFormOption.column\" :slot=\"item.name\">\n      <jvs-form v-if=\"item.formOption\" :key=\"item.name+'level'\" :defalutFormData=\"item.defaultData\" :option=\"item.formOption\"></jvs-form>\n    </template>\n  </jvs-tab>\n</template>\n<script>\nexport default {\n  name: 'jvs-form-level',\n  props: {\n    active: {\n      type: String,\n      default: ''\n    },\n    // 选项卡配置\n    option: {\n      type: Object,\n      default: () => {\n        return {}\n      }\n    }\n  },\n  data () {\n    return {\n      activeName: 'form1',\n      levelFormOption: {},\n      defaultSet: {\n        column: [\n          {\n            label: '表单一',\n            name: 'form1',\n            defaultData: {}, // 表单默认值\n            formOption: {\n              column: [\n                {\n                  label: '文本框',\n                  prop: 'input'\n                }\n              ]\n            }\n          }\n        ]\n      }\n    }\n  },\n  created () {\n    if(this.active) {\n      this.activeName = this.active\n    }\n    if(this.option) {\n      this.levelFormOption = this.option\n      this.activeName = this.option.column[0].name\n    }else{\n      this.levelFormOption = this.defaultSet\n      this.activeName = this.option.column[0].name\n    }\n  },\n}\n</script>\n<style lang=\"scss\">\n</style>"
  },
  {
    "path": "src/components/basic-assembly/stepForm.vue",
    "content": "<template>\n  <jvs-tab :active=\"activeName\" type=\"card\" :option=\"stepFormOption\" @tab-click=\"tabClick\">\n    <template v-for=\"(item, index) in stepFormOption.column\" :slot=\"item.name\">\n      <jvs-form v-if=\"item.formOption\" :key=\"item.name+'level'\" :defalutFormData=\"item.defaultData\" :option=\"item.formOption\" @submit=\"submitHandle\">\n        <template slot=\"formButton\">\n          <jvs-button v-if=\"index > 0\" @click=\"lastStep(index)\">上一步</jvs-button>\n        </template>\n      </jvs-form>\n    </template>\n  </jvs-tab>\n</template>\n<script>\nexport default {\n  name: 'jvs-form-step',\n  props: {\n    active: {\n      type: String,\n      default: ''\n    },\n    // 选项卡配置\n    option: {\n      type: Object,\n      default: () => {\n        return {}\n      }\n    }\n  },\n  data () {\n    return {\n      activeName: '',\n      stepFormOption: {},\n      defaultSet: {\n        column: [\n          {\n            label: '表单一',\n            name: 'form1',\n            defaultData: {}, // 表单默认值\n            formOption: {\n              column: [\n                {\n                  label: '文本框',\n                  prop: 'input'\n                }\n              ]\n            }\n          }\n        ]\n      }\n    }\n  },\n  created () {\n    if(this.active) {\n      this.activeName = this.active\n    }\n    if(this.option) {\n      this.stepFormOption = this.option\n      this.activeName = this.option.column[0].name\n    }else{\n      this.stepFormOption = this.defaultSet\n      this.activeName = this.defaultSet.column[0].name\n    }\n    // 全部设置disable\n    for(let i in this.stepFormOption.column) {\n      this.stepFormOption.column[i].disabled = true\n    }\n  },\n  methods: {\n    // tab切换\n    tabClick (tab) {\n      this.activeName = tab\n    },\n    // 上一步\n    lastStep (index) {\n      index = Number.parseInt(index)\n      this.activeName = this.stepFormOption.column[index-1].name\n      this.$forceUpdate()\n    },\n    // 提交，下一步\n    submitHandle (form) {\n      if(form) {\n        // 数据操作\n        // 下一步\n        let index = this.getIndexOfForm(this.activeName)\n        this.stepFormOption.column[index].disabled = false\n        if(index == this.stepFormOption.column.length - 1) {\n          this.activeName = this.stepFormOption.column[index].name\n        }else{\n          this.activeName = this.stepFormOption.column[index+1].name\n        }\n      }\n    },\n    getIndexOfForm (active) {\n      for(let i in this.stepFormOption.column) {\n        if(this.stepFormOption.column[i].name == active) {\n          return Number.parseInt(i)\n        }\n      }\n      return -1\n    }\n  }\n}\n</script>\n<style lang=\"scss\">\n</style>"
  },
  {
    "path": "src/components/basic-assembly/tab.vue",
    "content": "<template>\n  <el-tabs\n    v-model=\"activeName\"\n    :type=\"option.type || defaultOption.type\"\n    :tab-position=\"option.tabPosition || defaultOption.tabPosition\"\n    :stretch=\"option.stretch || defaultOption.stretch\"\n    @tab-click=\"handleClick\"\n  >\n    <el-tab-pane\n      v-for=\"item in option.column\"\n      :key=\"item.name\"\n      :label=\"item.label\"\n      :disabled=\"item.disabled\"\n      :name=\"item.name\"\n      :lazy=\"item.lazy\"\n    >\n      <el-form\n        :model=\"forms[item.name]\"\n        :ref=\"formRef || 'ruleForm'\"\n        class=\"demo-dynamic\"\n        size='mini'\n        :label-position=\"(originOption && originOption.formAlign) || defalutSet.option.formAlign\"\n        :label-width=\"(originOption && originOption.labelWidth) || defalutSet.option.labelWidth\"\n        :disabled='(originOption && originOption.disabled)'\n      >\n        <el-row v-if=\"formItem.column && formItem.column[item.name] && formItem.column[item.name].length > 0\" style=\"width:100%;\">\n          <el-col\n            v-for=\"it in formItem.column[item.name]\"\n            :key=\"it.prop\"\n            :span=\"it.span || 24\"\n            v-show=\"it.display == false ? it.display : true\"\n            :class=\"{'no-label-form-item': it.hideLabel}\"\n          >\n            <!-- 一般项 -->\n            <el-form-item\n              v-if=\"(it.type !='title' && (!it.children || it.children.length == 0) || it.type == 'formbox') && $permissionMatch(it.permisionFlag) && (it.display == false ? it.display : true)\"\n              :label=\"it.label\"\n              :prop='it.prop'\n              :rules='it.rules'\n              v-model=\"forms[item.name][it.prop]\"\n              :label-width=\"it.type==='iframe'?'0':((originOption && originOption.labelWidth) || defalutSet.option.labelWidth)\"\n              :class='{\"form-item-no-label\": ( (!it.label && it.type != \"tab\") || ([\"tableForm\",\"divider\",\"p\",\"section\"].indexOf(it.type) > -1) ), \"form-item-no-label-tab\": (!it.label && it.type == \"tab\")}'\n            >\n              <FormItem  :item=\"it\" :form=\"forms[item.name]\"\n                :originOption=\"originOption\"\n                :defalutSet=\"defalutSet\"\n                :userList=\"userList\"\n                :resetRadom=\"resetRadom\"\n                @formChange=\"formChange\" />\n            </el-form-item>\n            <!-- 子表单项 -->\n            <el-row v-if=\"it.type != 'formbox' && it.children && it.children.length > 0\">\n              <el-form-item\n                :label=\"it.label\"\n                :prop=\"it.prop\"\n                :rules=\"it.rules\"\n                v-if=\"(it.display == false ? it.display : true)\"\n                v-model=\"forms[item.name][it.prop]\"\n                :class='(!it.label || ([\"tableForm\",\"divider\",\"p\",\"tab\",\"section\"].indexOf(it.type) > -1))? \"form-item-no-label\" : \"\"'\n              >\n                <FormItem\n                  v-if=\"!it.formSlot\"\n                  :form=\"forms[item.name]\"\n                  :item=\"it\"\n                  :originOption=\"originOption\"\n                  :defalutSet=\"defalutSet\"\n                  @formChange=\"formChange\"\n                  :userList=\"userList\"\n                  :resetRadom=\"resetRadom\"\n                />\n                <!-- 自定义列插槽 -->\n                <div v-if=\"it.formSlot\">\n                  <slot :name=\"it.prop+'Form'\"></slot>\n                  <!-- 右侧提示 -->\n                  <el-tooltip\n                    v-if=\"it.tips && it.tips.position == 'right' && it.tips.text\"\n                    class=\"form-item-tooltip\"\n                    effect=\"dark\"\n                    :content=\"it.tips.text\"\n                    placement=\"top\"\n                  >\n                    <i class=\"el-icon-question\"></i>\n                  </el-tooltip>\n                </div>\n                <!-- 换行提示 -->\n                <el-row\n                  v-if=\"it.tips && it.tips.position == 'bottom'\"\n                  class=\"form-item-tips\"\n                >\n                  <span v-html=\"it.tips.text\"></span>\n                </el-row>\n              </el-form-item>\n              <el-col\n                v-for=\"itc in it.children\"\n                :key=\"itc.prop\"\n                :span=\"itc.span || originOption.span || 24\"\n              >\n                <el-form-item\n                  :label=\"itc.label\"\n                  :prop=\"itc.prop\"\n                  v-if=\"itc.display === false ? false : linkbindHandle(forms[item.name][it.prop], itc.linkbind)\"\n                  :rules=\"itc.rules\"\n                  v-model=\"forms[item.name][itc.prop]\"\n                  :class='{\"form-item-no-label\": (!itc.label || ([\"tableForm\",\"divider\",\"p\",\"tab\",\"section\"].indexOf(itc.type) > -1))}'\n                >\n                  <FormItem\n                    v-if=\"!itc.formSlot\"\n                    :form=\"forms[item.name]\"\n                    :item=\"itc\"\n                    :formRef=\"defalutSet.refs\"\n                    :originOption=\"originOption\"\n                    :defalutSet=\"defalutSet\"\n                    @formChange=\"formChange\"\n                    :userList=\"userList\"\n                    :resetRadom=\"resetRadom\"\n                  />\n                  <!-- 自定义列插槽 -->\n                  <div v-if=\"itc.formSlot\">\n                    <slot :name=\"itc.prop+'Form'\"></slot>\n                    <!-- 右侧提示 -->\n                    <el-tooltip\n                      v-if=\"itc.tips && itc.tips.position == 'right' && itc.tips.text\"\n                      class=\"form-item-tooltip\"\n                      effect=\"dark\"\n                      :content=\"itc.tips.text\"\n                      placement=\"top\"\n                    >\n                      <i class=\"el-icon-question\"></i>\n                    </el-tooltip>\n                  </div>\n                  <!-- 换行提示 -->\n                  <el-row\n                    v-if=\"itc.tips && itc.tips.position == 'bottom'\"\n                    class=\"form-item-tips\"\n                  >\n                    <span v-html=\"itc.tips.text\"></span>\n                  </el-row>\n                </el-form-item>\n              </el-col>\n            </el-row>\n          </el-col>\n        </el-row>\n        <slot :name=\"item.name\"></slot>\n      </el-form>\n    </el-tab-pane>\n  </el-tabs>\n</template>\n<script>\nimport FormItem from './formitem'\nexport default {\n  name: \"jvs-tab\",\n  components: {FormItem},\n  props: {\n    // 绑定值，选中选项卡的 name\n    active: {\n      type: String,\n      default: ''\n    },\n    // 选项卡配置\n    option: {\n      type: Object,\n      default: () => {\n        return {}\n      }\n    },\n    // 表单传递对象\n    forms: {\n      type: Object,\n      default: () => {\n        return {}\n      }\n    },\n    // 表单结构对象\n    formItem: {\n      type: Object,\n      default: () => {\n        return {}\n      }\n    },\n    formRef: {\n      type: String,\n      default: 'ruleForm'\n    },\n    originOption: {\n      type: Object\n    },\n    // 用户列表\n    userList : {\n      type: Array,\n      default: () => {\n        return []\n      }\n    },\n    resetRadom: {\n      type: Number\n    }\n  },\n  data () {\n    return {\n      activeName: '',\n      defaultOption: {\n        type: '', // tab风格， card/border-card\n        tabPosition: 'top', // 选项卡所在位置, top/right/bottom/left\n        stretch: false, // 标签的宽度是否自撑开\n        column: [\n          {\n            label: '', // 选项卡标题\n            disabled: false, // 是否禁用\n            name: '', // 与选项卡绑定值 value 对应的标识符，表示选项卡别名, 该选项卡在选项卡列表中的顺序值，如第一个选项卡则为'1'\n            lazy: false, // 标签是否延迟渲染\n            permisionFlag: '', // 权限标识\n          }\n        ]\n      },\n      defalutSet: {\n        refs: 'ruleForm',\n        option: {\n          formAlign: 'right', //对其方式\n          inline: false, // 表单项是否可以同行,当垂直方向空间受限且表单较简单时，可以在一行内放置表单\n          labelWidth: 'auto', // label宽\n          searchBtn: true, // 搜索按钮是否显示，默认显示\n          searchBtnText: '查询', // 搜索按钮，默认查询\n          submitBtn: true, // 提交按钮是否显示，默认显示\n          submitBtnText: '提交', // 提交按钮文字，默认 提交\n          emptyBtn: true, // 重置按钮，默认显示\n          emptyBtnText: '重置', // 重置按钮文字，默认 重置\n          cancalBtnText: '取消', // 取消按钮文字， 默认 取消\n        }\n      },\n      initData: \"\"\n    }\n  },\n  created () {\n    this.dealPermission()\n    if(this.active) {\n      this.activeName = this.active\n    }\n    this.initData = JSON.stringify(this.forms)\n  },\n  methods: {\n    handleClick (tab, event) {\n      this.activeName = tab.name\n      this.$emit('tab-click', tab.name)\n    },\n    // 处理权限\n    dealPermission () {\n      for(let i in this.option.column) {\n        if(!this.option.column[i].permisionFlag) {\n          this.option.column[i].show = true\n        }else{\n          this.option.column[i].show = this.$permissionMatch(this.option.column[i].permisionFlag)\n        }\n        // 加入自定义校验\n        if(this.formItem && this.formItem.column) {\n          let tcol = this.formItem.column[this.option.column[i].name]\n          if(tcol && tcol.length > 0) {\n            for(let t in tcol) {\n              if(tcol[t].regularExpression){\n                let required = false\n                if(tcol[t].rules && tcol[t].rules[0].required) {\n                  required = true\n                }\n                let str = '/' + tcol[t].regularExpression + '/'\n                let _this = this\n                tcol[t].rules.push({\n                  validator: function(rule, value, callback) {\n                    if(eval(str).test(value)) {\n                      callback()\n                    }else{\n                      let msg = '正则校验不通过'\n                      if(tcol[t].regularMessage) {\n                        msg = tcol[t].regularMessage\n                      }\n                      if(required == false && !value) {\n                        callback()\n                      }else{\n                        callback(new Error(msg));\n                      }\n                    }\n                  },\n                  trigger: ['blur', 'change']\n                })\n              }\n            }\n          }\n        }\n      }\n      this.option.column = this.option.column.filter(item => item.show)\n    },\n    // 值变化\n    formChange (form) {\n      this.$set(this.forms, this.activeName, form)\n      this.$forceUpdate()\n      this.$emit('formChange', this.forms)\n    },\n    // 联动控制\n    linkbindHandle (val, bind) {\n      let bool = true\n      if(bind) {\n        if(val) {\n          let arr = bind.split(',')\n          if(val instanceof Array) {\n            let tb = false\n            for(let i in val) {\n              if(arr.indexOf(val[i]) > -1) {\n                tb = true\n              }\n            }\n            bool = tb\n          }else{\n            if(arr.indexOf(val) > -1) {\n              bool = true\n            }else{\n              bool = false\n            }\n          }\n        }\n      }\n      return bool\n    }\n  },\n  watch: {\n    resetRadom: {\n      handler (newVal, oldVal) {\n        if(newVal > -1) {\n          if(this.initData.startsWith('{')) {\n            let temp = JSON.parse(this.initData)\n            for(let i in this.option.column) {\n              this.$set(this.forms, this.option.column[i].name, temp[this.option.column[i].name])\n            }\n          }\n        }\n      }\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "src/components/basic-assembly/table.vue",
    "content": "<template>\n  <div class=\"jvs-table\">\n    <PageHeader :title=\"pageheadertitle\" :class=\"{'jvs-table-titleTop': true, 'jvs-table-top': !option.search == false}\">\n      <!-- <div style=\"height:20px\" v-if=\"pageheadertitle\"></div> -->\n      <slot name=\"headerTop\"></slot>\n      <jvs-form v-if=\"!option.search == false && searchOption.column && searchOption.column.length > 0\" :formData=\"searchFormData\" :defalutFormData=\"searchFormData\" class=\"search-form\" :option=\"searchOption\" @submit=\"searchHandle\" :isSearch=\"true\">\n      </jvs-form>\n      <div class=\"table-top\">\n        <div class=\"table-top-left\">\n          <el-button type=\"primary\" :size=\"$store.state.params.btn.size || 'mini'\" v-if=\"!(option.addBtn==false)\" @click=\"addForm\">{{option.addBtnText || '新增'}}</el-button>\n          <slot name=\"menuLeft\"></slot>\n        </div>\n        <div class=\"table-top-right\">\n          <slot name=\"menuRight\"></slot>\n        </div>\n      </div>\n    </PageHeader>\n    <h4 class=\"table-title\">{{option.title}}</h4>\n    <div class=\"table-body-box\">\n      <el-table\n        header-row-class-name='headerclass'\n        :stripe=\"true\"\n        :ref=\"refs\"\n        :data=\"data\"\n        :tooltip-effect=\"tooltipEffect\"\n        :show-header=\"showHeader\"\n        :border=\"option.border\"\n        v-loading=\"loading\"\n        :size=\"size || 'mini'\"\n        :highlight-current-row=\"option.highlightCurrentRow\"\n        empty-text=\"抱歉，没有找到相关搜索内容！\"\n        @row-click=\"rowClick\"\n        @selection-change=\"handleSelectionChange\"\n        style=\"margin-top:10px\"\n      >\n        <el-table-column type=\"selection\" width=\"55\" v-if=\"selectable\"></el-table-column>\n        <el-table-column type=\"index\" width=\"50\" :label=\"option.indexLabel\" v-if=\"index\"> </el-table-column>\n        <el-table-column\n          v-for=\"item in option.column\"\n          :key=\"item.prop\"\n          :label=\"item.label\"\n          :prop=\"item.prop\"\n          :show-overflow-tooltip=\"item.type == 'image' ? false : tooltipShow(item, option)\"\n          :header-align=\"option.menuAlign\"\n          :align=\"item.align || option.align\"\n          :width=\"item.width\"\n          v-if=\"!item.hide\"\n          :type=\"item.expand\"\n        >\n          <template slot-scope=\"scope\" >\n            <span>\n              <!-- 自定义 -->\n              <slot v-if=\"item.slot && !item.expand\" :name=\"item.prop\" :row=\"scope.row\" :index=\"scope.$index\"></slot>\n              <!-- 动态控制 -->\n              <span v-if=\"!item.slot && !item.expand && item.expressControl && item.expressControl.length > 0\" :style=\"'color:'+ styleRowItem(scope.row, item, 'color')+';'\">{{styleRowItem(scope.row, item, 'text')}}</span>\n              <span v-if=\"!item.slot && !item.expand && (!item.expressControl || item.expressControl.length == 0)\">\n                <!-- 一般列 -->\n                <span v-if=\"!item.color && !item.dicData && (['datetime', 'link', 'image'].indexOf(item.type) == -1)\" :style=\"'color:'+item.color+';'\">{{scope.row[item.prop]}}</span>\n                <!-- 特殊颜色 -->\n                <span v-if=\"item.color && !item.dicData && (['datetime', 'link', 'image'].indexOf(item.type) == -1)\" :style=\"'color:'+item.color+';'\">{{scope.row[item.prop]}}</span>\n                <!-- 日期时间 -->\n                <span v-if=\"item.type == 'datetime'\" :style=\"item.color ? ('color:'+item.color): ''\">{{scope.row[item.prop] | dateFormat(item.format)}}</span>\n                <!-- 字典 -->\n                <span v-if=\"(['datetime', 'link', 'image'].indexOf(item.type) == -1) && item.dicData\" :style=\"item.color ? ('color:'+item.color): ''\">{{scope.row[item.prop] | dicFormat(item.dicData, item.props)}}</span>\n                <!-- 链接 -->\n                <a :href=\"scope.row[item.prop]\" :target=\"item.openType || '_blank'\" v-if=\"item.type == 'link'\" :style=\"item.color ? ('color:'+item.color): ''\">{{item.text}}</a>\n                <!-- 图片 -->\n                <img v-if=\"item.type == 'image'\" :src=\"scope.row[item.prop]\" :style=\"item.width ? ('width:' + item.width + 'px;') : '' + item.height ? ('height:' + item.height + 'px;') : ''\" />\n              </span>\n            </span>\n          </template>\n\n        </el-table-column>\n        <el-table-column :fixed=\"option.menuFix\" label=\"操作\" :width=\"option.menuWidth\" v-if=\"option.menu!==false\" :align=\"option.menuAlign\">\n          <template slot-scope=\"scope\">\n            <div>\n              <el-button type=\"text\" :size=\"$store.state.params.btn.size || 'mini'\" v-if=\"!(option.viewBtn==false)\" @click=\"viewHandle(scope.row)\">{{option.viewBtnText || '查看'}}</el-button>\n              <el-button type=\"text\" :size=\"$store.state.params.btn.size || 'mini'\" v-if=\"!(option.editBtn==false)\" @click=\"editHandle(scope.row)\">{{option.editBtnText || '编辑'}}</el-button>\n              <!-- 操作栏自定义 -->\n              <slot name=\"menu\" :row=\"scope.row\" :index=\"scope.$index\"></slot>\n              <el-button type=\"text\" :size=\"$store.state.params.btn.size || 'mini'\" v-if=\"!(option.delBtn==false)\" @click=\"delHandle(scope.row)\">{{option.delBtnText || '删除'}}</el-button>\n            </div>\n          </template>\n        </el-table-column>\n      </el-table>\n    </div>\n    <div\n      class=\"tablepagination\"\n      v-if=\"option.page\"\n    >\n      <el-pagination\n        background\n        :layout=\"page.layout || pagination.layout\"\n        :total=\"page.total || pagination.total\"\n        :current-page=\"page.currentPage || pagination.currentPage\"\n        :page-sizes=\"page.pageSizes || pagination.pageSizes\"\n        :page-size=\"page.pageSize || pagination.pageSize\"\n        @size-change=\"handleSizeChange\"\n        @current-change=\"handleCurrentChange\"\n      ></el-pagination>\n      <slot name=\"menuLeftBottom\"></slot>\n    </div>\n    <el-dialog\n      :title=\"title\"\n      :visible.sync=\"dialogVisible\"\n      :close-on-click-modal='option.dialogClickModal'\n      :close-on-press-escape='option.dialogEscape'\n      append-to-body\n      :width=\"option.dialogWidth || '75%'\"\n      :fullscreen=\"option.dialogWidth == '100%' ? true : false\"\n      :class=\"{'form-fullscreen-dialog': option.dialogWidth == '100%'}\"\n      :before-close=\"handleClose\">\n      <jvs-form v-if=\"dialogVisible\" :formData=\"rowData\" :defalutFormData=\"rowData\" :option=\"formOpton\" @submit=\"submitHandle\" :isSearch=\"false\" @cancalClick=\"handleClose\">\n      </jvs-form>\n    </el-dialog>\n  </div>\n</template>\n<script>\nimport PageHeader from '../../components/page-header/PageHeader'\nimport { byKeyDicData } from '@/api/common.js'\nexport default {\n  name: \"jvs-table\",\n  components: { PageHeader },\n  props: {\n    pageheadertitle: {\n      type:String,\n      default: '',\n    },\n    // 绑定表格 refs\n    refs: {\n      type: String,\n      default: 'multipleTable'\n    },\n    // 是否显示表格头\n    showHeader: {\n      type: Boolean,\n      default: true\n    },\n    // tip提示背景\n    tooltipEffect: {\n      type: String,\n      default: 'light', // 'dark'\n    },\n    // 是否可以多选\n    selectable: {\n      type: Boolean,\n      default: false\n    },\n    // 是否提示 等待加载loading\n    loading: {\n      type: Boolean,\n      default: false\n    },\n    size: {\n      type: String,\n      default: ''\n    },\n    // 是否显示顺序\n    index: {\n      type: Boolean,\n      default: false\n    },\n    // 分页配置\n    page: {\n      type: Object,\n      default: (data) => {\n        return {\n          total: 0, // 总页数\n          currentPage: 1, // 当前页数\n          pageSize: 20, // 每页显示多少条\n          pageSizes: [20, 50, 100, 200, 500, 1000], // 分页大小\n          layout: \"total, sizes, prev, pager, next, jumper\", // 分页工具\n        }\n      }\n    },\n    // 表格数据\n    data: {\n      type: Array,\n      default: () => {\n        return []\n      }\n    },\n    // 搜索表单\n    formData: {\n      type: Object,\n      default: () => {\n        return {}\n      }\n    },\n    // 表格配置\n    option: {\n      type: Object,\n      default: () => {\n        return {\n          border: false, // 表格是否边框\n          page: true, // 是否分页\n          align: 'center', // body对齐\n          menuAlign: 'center', // 表头对齐\n          menuFix: 'right', // 操作栏固定位置\n          menuWidth: 200, // 操作栏宽度\n          search: false, // 是否开启查询\n          showOverflow: true, // 超出是否合并移入悬浮tip显示\n          menu: true,\n          indexLabel:'序号',\n          // 搜索表单设置\n          formAlign: 'right', //对其方式\n          inline: false, // 表单项是否可以同行,当垂直方向空间受限且表单较简单时，可以在一行内放置表单\n          labelWidth: 'auto', // label宽\n          searchBtn:true,//搜索的查询按钮\n          searchBtnText: \"查询\", // 提交按钮文字，默认 提交\n          submitBtn: true, // 提交按钮是否显示，默认显示\n          submitBtnText: '保存', // 提交按钮文字，默认 提交\n          emptyBtn: true, // 重置按钮，默认显示\n          emptyBtnText: '清空', // 重置按钮文字，默认 重置\n          addDialogText:'新增',//新增弹窗title,默认 新增\n          editDialogText: '编辑', //编辑弹框title，默认 编辑\n          submitLoading: false, // 默认表单提交按钮loading，初始值默认false\n          searchLoading: false, // 查询表单提交按钮loading，初始值默认false\n          column: [\n            {\n              label: '', // 文字\n              prop: '', // 字段\n              search: false, // 是否搜索\n              slot: false, // 是否自定义\n              hide: true, // 当前列在表格是否隐藏\n              color: '', // 颜色特殊显示\n              align: '', // 默认与table保持一致，可自定义 left right center\n              menuAlign: '', // 默认与table保持一致，可自定义 left right center\n              type: '', // 文本类型，默认input\n              dicData: [], // 字典数据\n              showOverflow: true, // 超出是否合并移入悬浮tip显示\n\n              // 搜索表单对应\n              span: 24, // 表单项栅格比，默认24\n              formSlot: false, // 表单项是否自定义\n\n              // 新增、编辑、查看对应表单设置\n              addDisabled: false, // 表单新增时是否禁止\n              addDisplay: true, // 表单新增时是否可见\n              editDisabled: false, // 表单编辑时是否禁止\n              editDisplay: false, // 表单编辑是否可见\n              viewDisplay: true, // 表单查看是否可见\n            }\n          ]\n        }\n      }\n    },\n    // 是否清空多选，随机数\n    isClearSelect: {\n      type: Number\n    },\n    // 已选数据\n    selectedRows: {\n      type: Array\n    },\n    // 是否默认全选\n    defaultAllSelect: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data () {\n    return {\n      searchForm: {},\n      title: '', // 弹框标题\n      dialogVisible: false,\n      rowData: {}, // 行数据\n      formOpton: {},\n      optype: 'addRow', // 提交方式\n      pagination: {\n        total: 0, // 总页数\n        currentPage: 1, // 当前页数\n        pageSize: 20, // 每页显示多少条\n        pageSizes: [20, 50, 100, 200, 500, 1000], // 分页大小\n        layout: \"total, sizes, prev, pager, next, jumper\", // 分页工具\n      },\n      // 搜索表单配置\n      searchOption: {},\n    };\n  },\n  filters: {},\n  created () {\n    let searchObj = {}\n    this.searchOption = JSON.parse(JSON.stringify(this.option))\n    this.searchOption.labelWidth = 'auto'\n    let temp = []\n    for(let i in this.searchOption.column) {\n      if(this.option.column[i].dicUrl) {\n        let _this = this\n        byKeyDicData(this.option.column[i].dicUrl).then(res=>{\n          _this.option.column[i].dicData = res.data.data\n        })\n      }\n      if(this.searchOption.column[i] && this.searchOption.column[i].search == true) {\n        if(this.searchOption.column[i].formSlot == true) {\n          this.searchOption.column[i].formSlot = false\n        }\n        searchObj[this.searchOption.column[i].prop] = null\n        // 弹窗表格的栅格\n        if(this.searchOption.column[i] && !this.searchOption.column[i].span) {\n          this.searchOption.column[i].span = this.searchOption.span || 6\n        }\n        // 搜索表格的栅格\n        if (this.searchOption.column[i] && !this.searchOption.column[i].searchSpan && this.searchOption.column[i].search) {\n          this.searchOption.column[i].searchSpan = this.searchOption.searchSpan || 6\n        }\n        // 去除提示tips\n        if(this.searchOption.column[i] && this.searchOption.column[i].tips) {\n          this.searchOption.column[i].tips = null\n        }\n        temp.push(this.searchOption.column[i])\n      }\n    }\n    // 去除搜索条件的校验\n    for(let j in temp) {\n      if(temp[j].rules && temp[j].rules.length > 0) {\n        for(let k in temp[j].rules) {\n          if(temp[j].rules[k].required && temp[j].rules[k].required === true) {\n            temp[j].rules[k].required = false\n          }\n        }\n      }\n    }\n    this.searchOption.column = temp\n    this.searchOption.isSearch = true\n    if(JSON.stringify(this.searchFormData) == '{}') {\n      this.searchFormData = JSON.parse(JSON.stringify(searchObj))\n    }\n    this.$emit('on-load', this.page)\n  },\n  mounted () {\n    // 多选回显\n    if(this.selectable == true) {\n      if (this.selectedRows && this.selectedRows.length > 0 && this.$refs[this.refs]) {\n        this.selectedRows.forEach(row => {\n          for(let i in this.data) {\n            let keys = Object.keys(this.data[i])\n            let k2 = 'id' // Object.keys(row)[0]\n            if(keys.indexOf(k2) > -1) {\n            }else{\n              k2 = 'aliasColumnName'\n            }\n            if(this.data[i][k2] == row[k2]) {\n              this.$refs[this.refs].toggleRowSelection(this.data[i])\n            }\n          }\n        });\n      } else {\n        this.$refs[this.refs].clearSelection();\n        // 默认全选上\n        if(this.defaultAllSelect == true) {\n          this.data.forEach(row => {\n            this.$refs[this.refs].toggleRowSelection(row);\n          })\n        }\n      }\n    }\n    // 表格自适应高\n    this.styleHeight()\n  },\n  computed: {\n    searchFormData: {\n      get () {\n        return this.formData\n      },\n      set () {}\n    }\n  },\n  methods: {\n    // 行点击\n    rowClick (row, column, cell, event) {\n      this.$emit('row-click', { row, column, cell, event })\n    },\n    // 多选\n    handleSelectionChange (selection) {\n      this.$emit('selection-change', selection)\n    },\n    // 搜索\n    searchHandle (form) {\n      this.$emit('search-change', form)\n    },\n    // 清空\n    emptyHandle () {\n      this.searchForm = {}\n    },\n    // 分页大小变化\n    handleSizeChange (val) {\n      this.page.pageSize = val\n      this.$emit('on-load', this.page)\n      this.$emit('size-change', this.page)\n    },\n    // 当前页改变\n    handleCurrentChange (val) {\n      this.page.currentPage = val\n      this.$emit('on-load', this.page)\n      this.$emit('current-change', this.page)\n    },\n    // 判断是否需要超出文字提示\n    tooltipShow (item, option) {\n      let temp = true\n      temp = (item.showOverflow == false) ? (item.showOverflow && option.showOverflow) : (item.showOverflow || option.showOverflow)\n      return temp\n    },\n    // 关闭弹框\n    handleClose () {\n      this.rowData = {}\n      this.dialogVisible = false\n    },\n    // 表单提交\n    submitHandle (form) {\n      if (this.optype == 'addRow') {\n        this.$emit('addRow', form)\n      }\n      if (this.optype == 'editRow') {\n        this.$emit('editRow', form)\n      }\n      this.handleClose()\n    },\n    // 新增\n    addForm () {\n      this.formOpton = this.option // JSON.parse(JSON.stringify(this.option))\n      this.formOpton.submitBtnText = this.formOpton.submitBtnText || '提交'\n      this.title = this.formOpton.addDialogText || '新增'\n      this.optype = 'addRow'\n      this.formOpton.disabled = false\n      this.formOpton.submitBtn = true\n      // this.formOpton.emptyBtn = true\n      let temp = []\n      for(let i in this.formOpton.column) {\n        if(this.formOpton.column[i].addDisabled == true) {\n          this.formOpton.column[i].disabled = true\n        }\n        if(this.formOpton.column[i].addDisplay != false) {\n          temp.push(this.formOpton.column[i])\n          this.formOpton.column[i].display = true\n        }else{\n          this.formOpton.column[i].display = false\n        }\n      }\n      // this.formOpton.column = temp\n      this.dialogVisible = true\n    },\n    // 查看\n    viewHandle (row) {\n      this.formOpton = JSON.parse(JSON.stringify(this.option))\n      this.formOpton.submitBtnText = '提交'\n      this.title = '查看'\n      this.optype = 'viewRow'\n      this.formOpton.disabled = true\n      this.formOpton.submitBtn = false\n      this.formOpton.emptyBtn = false\n      this.rowData = row\n      let temp = []\n      for(let i in this.formOpton.column) {\n        if(this.formOpton.column[i].viewDisplay != false) {\n          temp.push(this.formOpton.column[i])\n          this.formOpton.column[i].display = true\n        }else{\n          this.formOpton.column[i].display = false\n        }\n      }\n      // this.formOpton.column = temp\n      this.dialogVisible = true\n    },\n    editHandle (row) {\n      this.formOpton = this.option // JSON.parse(JSON.stringify(this.option))\n      this.formOpton.submitBtnText = this.formOpton.submitBtnText || '提交'\n      this.title = this.formOpton.editDialogText || '编辑'\n      this.optype = 'editRow'\n      this.formOpton.disabled = false\n      this.formOpton.submitBtn = true\n      // this.formOpton.emptyBtn = true\n      this.rowData = JSON.parse(JSON.stringify(row))\n      let temp = []\n      for(let i in this.formOpton.column) {\n        if(this.formOpton.column[i].editDisabled == true) {\n          this.formOpton.column[i].disabled = true\n        }\n        if(this.formOpton.column[i].editDisplay != false) {\n          temp.push(this.formOpton.column[i])\n          this.formOpton.column[i].display = true\n        }else{\n          this.formOpton.column[i].display = false\n        }\n      }\n      // this.formOpton.column = temp\n      this.dialogVisible = true\n    },\n    delHandle (row) {\n      this.$confirm('此操作将永久删除此数据, 是否继续?', '提示', {\n        confirmButtonText: '确定',\n        cancelButtonText: '取消',\n        type: 'warning'\n      }).then(() => {\n        this.optype = 'delRow'\n        this.$emit('delRow', row)\n      }).catch(() => {\n\n      });\n    },\n    // 清空多选\n    clearSelect () {\n      this.$refs[this.refs].clearSelection()\n    },\n    // 表格高度适应\n    styleHeight () {\n      let height = $('#app').height()\n      if($('.jvs-table-titleTop') && $('.jvs-table-titleTop').length > 0) {\n        height -= $('.jvs-table-titleTop').height()\n      }\n      if(this.showHeader) {\n        height -= 55\n      }\n      if(this.option.page) {\n        if($('.tablepagination') && $('.tablepagination').length > 0) {\n          height -= ($('.tablepagination').height() + 40)\n        }\n      }\n      $(\".el-table__body-wrapper\")[0].style.maxHeight = height\n      $(\".el-table__body-wrapper\").height(height)\n      if(this.option.menuFix) {\n        $(\".el-table__fixed-body-wrapper\").height(height)\n      }\n    },\n    doLayout(){\n      let _this = this\n      this.$nextTick(() => {\n        console.log(_this.$refs[_this.refs])\n        _this.$refs[_this.refs].doLayout()\n      })\n    },\n    // 动态控制行数据显示\n    styleRowItem (row, item, type) {\n      let val = row[item.prop]\n      let color = \"\"\n      if(item.expressControl && item.expressControl.length > 0) {\n        for(let i in item.expressControl) {\n          if(item.expressControl[i].express) {\n            let str = item.expressControl[i].express.replace(/\\$\\{/g,\"row.\")\n            str = str.replace(/}/g, \"\")\n            if(eval(str)){\n              if(item.expressControl[i].text.includes('${')) {\n                let ts = item.expressControl[i].text\n                ts = ts.replace(/\\$\\{/g,\"row.\")\n                ts = ts.replace(/}/g, \"\")\n                if(eval(ts)) {\n                  val = eval(ts)\n                }\n              }else{\n                val = item.expressControl[i].text\n              }\n              color = item.expressControl[i].color\n            }\n          }\n        }\n      }\n      if(type == 'color') {\n        return color\n      }else{\n        return val\n      }\n    }\n  },\n  watch: {\n    isClearSelect: {\n      handler(newVal, oldVal) {\n        if(newVal != 0) {\n          this.clearSelect()\n        }\n      }\n    },\n    data: {\n      handler(newVal, oldVal) {\n        this.styleHeight()\n        if(this.option.menuFix) {\n          this.doLayout()\n        }\n      }\n    },\n    'option.searchLoading': {\n      handler(newVal, oldVal) {\n        this.$set(this.searchOption, 'submitLoading', (newVal || false))\n      }\n    }\n  }\n};\n</script>\n<style lang=\"scss\">\n.el-table {\n  .el-table__body-wrapper {\n    overflow-y: auto;\n    .el-table__empty-block {\n      box-sizing: border-box;\n      min-height: 300px;\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      border: 1px solid #ebebeb;\n    }\n  }\n  .el-table__body-wrapper:hover::-webkit-scrollbar{\n    height: 8px;\n  }\n  th{\n    font-size: 14px;\n    font-family: Source Han Sans CN;\n    font-weight: 600;\n    color: #222222;\n  }\n}\n.search-form {\n  display: flex;\n  align-items: center;\n  flex-wrap: wrap;\n  .el-form-item {\n    display: flex;\n    align-items: center;\n    margin-left: 0;\n  }\n  .form-item-btn{\n    width: auto;\n  }\n}\n.tablepagination {\n  padding: 20px 0;\n  background-color: #fff;\n  overflow: hidden;\n  .el-pagination {\n    float: right;\n    padding: 0;\n    margin-right: 20px;\n  }\n}\n.table-top {\n  width: 100%;\n  overflow: hidden;\n  .table-top-left{\n    float: left;\n    // margin: 10px 0;\n  }\n  .table-top-right {\n    float: right;\n    display: flex;\n  }\n}\n.table-title{\n  margin: 0;\n  text-align: center;\n}\n// 去除斑马纹\n.el-table--striped .el-table__body tr.el-table__row--striped td{\n  background-color: #fff;\n}\n.el-table--enable-row-hover .el-table__body tr:hover>td{\n  background-color: #F5F7FA;\n}\n.jvs-table{\n  .pageheader-top{\n    display: none;\n  }\n  .el-table{\n    // margin-top: 0!important;\n  }\n  .table-body-box{\n    padding: 0 20px;\n    background-color: #fff;\n  }\n  .jvs-table-top{\n    padding: 10px;\n    box-shadow: none;\n    .search-form{\n      margin-bottom: 10px;\n    }\n  }\n  .el-loading-mask{\n    background-image: url('../../styles/loading.gif');\n    background-repeat: no-repeat;\n    background-position: center;\n    //background-size: 450px 360px;\n    background-size: 300px 240px;\n    .el-loading-spinner{\n      .circular{\n        display: none;\n      }\n    }\n  }\n}\n// 文字提示\n.el-tooltip__popper{\n  max-width: 70%;\n}\n</style>\n"
  },
  {
    "path": "src/components/basic-assembly/userForm.vue",
    "content": "<template>\n  <div class=\"user-info-list\">\n    <div>\n      <el-input size=\"mini\" placeholder=\"请选择用户\" :disabled=\"disableBool\" v-model=\"userStr\" class=\"input-with-select\" @focus=\"enableinputHandle\">\n        <div slot=\"append\" v-if=\"!disableBool\">\n          <jvs-button icon=\"el-icon-search\" type=\"info\" :disabled=\"disableBool\" @click=\"openDialog\"></jvs-button>\n          <jvs-button icon=\"el-icon-delete\" type=\"warning\" :disabled=\"disableBool\" @click=\"clearUser\"></jvs-button>\n        </div>\n      </el-input>\n    </div>\n    <userSeletor ref=\"userSelector\" :autoClose=\"true\" :selectable=\"selectable\" @submit=\"submit\" @cancel=\"cancel\"></userSeletor>\n  </div>\n</template>\n\n<script>\nimport userSeletor from './userSelector'\nexport default {\n  name: \"user-info-list\",\n  components: { userSeletor },\n  props: {\n    form: {\n      type: Object\n    },\n    prop: {\n      type: String\n    },\n    selectable: {\n      type: Boolean,\n      default: () => {\n        return false\n      }\n    },\n    defaultValue: {\n      type: String\n    },\n    enableinput: {\n      type: Boolean,\n      default: true\n    },\n    disabled: {\n      type: Boolean\n    },\n    resetRadom: {\n      type: Number\n    }\n  },\n  computed: {},\n  filters: {\n    formatRoleName (list) {\n      let str = ''\n      if(list) {\n        str = list.join(',')\n      }\n      return str\n    }\n  },\n  data () {\n    return {\n      userStr: '',\n      userList: [],\n      userNameList: [],\n      disableBool: false\n    }\n  },\n  methods: {\n    submit (list) {\n      if(this.selectable) {\n        this.selectChange(list)\n        this.userStr = this.userNameList.join(',')\n        this.form[this.prop] = this.userList\n      }else{\n        if(list && list.length > 0) {\n          this.form[this.prop] = list[0].id\n          this.userStr = list[0].realName\n        }\n      }\n      this.$emit('change', this.form)\n    },\n    selectChange (data) {\n      let temp = []\n      let nm = []\n      for(let i in data) {\n        temp.push(data[i].id)\n        nm.push(data[i].realName)\n      }\n      this.userList = temp\n      this.userNameList = nm\n    },\n    cancel (bool) {\n      this.$emit('cancel', bool)\n    },\n    openDialog () {\n      this.$refs.userSelector.openDialog()\n    },\n    enableinputHandle () {\n      if(this.enableinput === false) {\n        this.openDialog()\n      }\n    },\n    clearUser () {\n      this.userStr = \"\"\n      if(this.selectable) {\n        this.form[this.prop] = []\n      }else{\n        this.form[this.prop] = null\n      }\n      this.$emit('change', this.form)\n    }\n  },\n  mounted () {},\n  created () {\n    if(this.disabled === true) {\n      this.disableBool = true\n    }\n  },\n  watch: {\n    defaultValue: {\n      handler (newVal, oldVal) {\n        this.userStr = newVal\n        if(newVal != '') {\n          this.disableBool = true\n        }else{\n          this.disableBool = false\n        }\n        this.$forceUpdate()\n      }\n    },\n    resetRadom: {\n      handler (newVal, oldVal) {\n        if(newVal > -1) {\n          this.getList(true)\n        }\n      }\n    }\n  },\n};\n</script>\n\n<style lang=\"scss\">\n.user-info-box{\n  display: flex;\n  width: 100%;\n  height: calc(100% - 40px);\n  overflow: hidden;\n  .user-dept-tree{\n    width: 150px;\n    height: 100%;\n    overflow: hidden;\n    overflow-y: auto;\n  }\n  .user-dept-tree::-webkit-scrollbar{\n    display: none;\n  }\n  .user-table{\n    flex: 1;\n    margin-left: 10px;\n    width: calc(100% - 200px);\n    box-sizing: border-box;\n    .el-card{\n      box-shadow: none;\n      border: 0;\n    }\n    .el-card__body{\n      border: 0;\n    }\n    .table-body-box{\n      height: calc(100% - 130px);\n      overflow: hidden;\n      .el-table{\n        height: 100%;\n        box-sizing: border-box;\n       .el-table__body-wrapper{\n         height: calc(100% - 75px)!important;\n       }\n       .el-table__header-wrapper{\n         margin-top: 0;\n       }\n      }\n    }\n    .tablepagination{\n      .el-pagination__sizes{\n        .el-input__suffix{\n          .el-input__icon.el-input__validateIcon{\n            display: none;\n          }\n        }\n      }\n    }\n  }\n}\n\n.table-form .jvs-table .el-table{\n  .user-info-list{\n    .input-with-select{\n      flex-wrap: nowrap!important;\n      .el-input__inner{\n        width: calc(100% - 75px);\n      }\n      .el-input-group__append{\n        display: table-cell!important;\n        width: 82px;\n        padding: 0;\n        div{\n          display: block!important;\n          width: 100%;\n          line-height: 26px;\n        }\n      }\n    }\n  }\n}\n.user-info-list-dialog{\n  .el-dialog.is-fullscreen{\n    position: relative;\n    .el-dialog__header{\n      padding: 0;\n      height: 45px;\n      display: flex;\n      align-items: center;\n      .el-dialog__title{\n        font-size: 18px;\n        font-weight: 600;\n        margin-left: 30px;\n        position: relative;\n        padding-left: 20px;\n      }\n      .el-dialog__title::before{\n        position: absolute;\n        content: \"\";\n        width: 4px;\n        height: 18px;\n        background: #3471ff;\n        border-radius: 2px;\n        cursor: pointer;\n        left: 0;\n        top: 4px;\n        cursor: auto;\n      }\n      .el-dialog__headerbtn{\n        top: 12px;\n      }\n    }\n    .el-dialog__body{\n      padding: 8px 10px;\n      height: calc(100% - 45px);\n      box-sizing: border-box;\n      overflow: hidden;\n      background: #F0F2F5;\n      .el-form{\n        .el-form-item{\n          .el-form-item__label-wrap{\n            .el-form-item__label{\n              font-size: 14px;\n            }\n            .el-form-item__content{\n              font-size: 14px;\n            }\n          }\n          .el-button{\n            font-size: 12px;\n            // background-color: #409eff;\n            // color: #fff;\n            // border-color: #409eff;\n          }\n          .el-button--primary{\n            background-color: #409eff;\n            color: #fff;\n          }\n        }\n      }\n    }\n  }\n}\n.el-form-item.is-error{\n  .user-info-list{\n    .el-input-group__append{\n      border-color: #F56C6C;\n      .el-button{\n        color: #F56C6C;\n      }\n    }\n  }\n}\n</style>"
  },
  {
    "path": "src/components/basic-assembly/userSelector.vue",
    "content": "<template>\n  <el-dialog\n    title=\"请选择成员\"\n    :visible.sync=\"dialogVisible\"\n    :before-close=\"closeDialog\"\n    append-to-body\n    width=\"780px\"\n    class=\"user-info-list-dialog\"\n  >\n    <div class=\"user-info-list\" v-if=\"dialogVisible\">\n      <div class=\"left treeBox dept-treeBox\">\n        <el-tree\n          ref=\"deptTree\"\n          node-key=\"id\"\n          :data=\"treeData\"\n          :props=\"{children: 'children',label: 'name'}\"\n          default-expand-all\n          :loading=\"treeLoading\"\n          :expand-on-click-node=\"false\"\n          @node-click=\"nodeClickHandle\"\n        >\n          <span\n            class=\"customize-tree-node\"\n            slot-scope=\"{ node, data }\"\n          >\n            <span :class=\"'customize-tree-node-label customize-tree-node-label'+node.level\" :style=\"'width:'+((186 - (18 * node.level)) > 0 ? (186 - (18 * node.level)) : 0) +'px;'\">{{ node.label }}</span>\n          </span>  \n        </el-tree>\n      </div>\n      <div class=\"center\">\n        <el-input class=\"search-tool\" v-model=\"keyword\" @input=\"searchUserHandle\" clearable placeholder=\"输入手机号或姓名搜索\" prefix-icon=\"el-icon-search\"></el-input>\n        <ul class=\"userlist-box userlist-box-tool\">\n          <li v-for=\"(item, index) in userOptionList\" :key=\"'check-user-'+index\" @click=\"changeCheck(item, index)\">\n            <p>\n              <img v-if=\"item.headImg\" :src=\"item.headImg\" alt=\"\">\n              <b>{{item.realName || item.accountName}}</b>\n              <span>{{item.phone}}</span>\n            </p>\n            <p class=\"check-tool\">\n              <span :class=\"{'el-checkbox': true, 'is-checked': item.checked}\">\n                <span :class=\"{'el-checkbox__input': true, 'is-checked': item.checked}\">\n                  <i class=\"el-checkbox__inner\"></i>\n                </span>\n              </span>\n            </p>\n          </li>\n        </ul>\n      </div>\n      <div class=\"right\">\n        <h4>已选：{{checkList.length}}名成员</h4>\n        <ul class=\"userlist-box\">\n          <li v-for=\"(item, index) in checkList\" :key=\"'check-user-'+index\">\n            <p>\n              <img :src=\"item.headImg\" alt=\"\">\n              <b>{{item.realName || item.accountName}}</b>\n              <span>{{item.phone}}</span>\n            </p>\n            <p>\n              <i class=\"el-icon-error\" @click=\"delCheck(item, index)\"></i>\n            </p>\n          </li>\n        </ul>\n      </div>\n    </div>\n    <el-row style=\"padding-top:20px;display:flex;justify-content:center;align-items:center;border-top: 1px solid #DCDFE6;\">\n      <jvs-button size=\"mini\" type=\"primary\" @click=\"submit\">确定</jvs-button>\n      <jvs-button size=\"mini\" @click=\"cancel\">取消</jvs-button>\n    </el-row>\n  </el-dialog>\n</template>\n<script>\nimport { getDeptUserTree, searchUser } from '@/api/common'\nexport default {\n  name: 'user-selector',\n  props: {\n    autoClose: {\n      type: Boolean,\n      default: false\n    },\n    selectable: {\n      type: Boolean,\n      default: () => {\n        return false\n      }\n    }\n  },\n  data () {\n    return {\n      dialogVisible: false,\n      keyword: '', // 搜索关键词\n      treeLoading: false,\n      treeData: [],\n      selectOneId: '',\n      selectOneData: null,\n      userOptionList: [],\n      checkList: []\n    }\n  },\n  methods: {\n    async openDialog () {\n      await this.getTreeData()\n      this.dialogVisible = true\n    },\n    closeDialog () {\n      this.dialogVisible = false\n      this.selectOneId = \"\"\n      this.selectOneData = null\n      this.keyword = \"\"\n      this.userOptionList = []\n      this.checkList = []\n    },\n    submit () {\n      this.$emit('submit', this.checkList)\n      if(this.autoClose) {\n        this.closeDialog()\n      }\n    },\n    cancel () {\n      this.$emit('cancel', true)\n      this.closeDialog()\n    },\n    // 获取部门人员树\n    async getTreeData () {\n      this.treeLoading = true\n      await getDeptUserTree().then(res => {\n        if(res.data.code == 0) {\n          this.treeLoading = false\n          this.treeData = this.getTree(res.data.data, 1)\n        }\n      }).catch(e => {\n        this.treeLoading = false\n      })\n    },\n    // 递归树清掉空的childList\n    getTree (tree = [], level) {\n      let arr = [];\n      if (tree.length !== 0) {\n        tree.forEach(item => {\n          let obj = {};\n          obj.name = item.name;\n          obj.id = item.id;\n          obj.sort = item.sort\n          obj.parentId = item.parentId\n          obj.leaderId = item.leaderId\n          obj.level = level\n          if (item.children && item.children.length > 0) {\n            obj.children = this.getTree(item.children, level+1);\n          }\n          arr.push(obj);\n        });\n      }\n      return arr\n    },\n    // 查询部门下的人\n    nodeClickHandle (data, node, dom) {\n      if(this.selectOneId == data.id) {\n        this.selectOneId = \"\"\n        this.$refs.deptTree.setCurrentKey(null)\n        this.$forceUpdate()\n      }else{\n        this.selectOneId = data.id\n      }\n      this.selectOneData = data\n      this.searchUserHandle()\n    },\n    // 搜索成员\n    searchUserHandle () {\n      let obj = {}\n      if(this.keyword) {\n        obj.key = this.keyword\n      }\n      if(this.selectOneId) {\n        obj.deptId = this.selectOneId\n      }\n      searchUser(obj).then(res => {\n        if(res.data.code == 0) {\n          this.userOptionList = res.data.data\n          for(let i in this.userOptionList) {\n            let index = this.isInArr('id', this.userOptionList[i].id, this.checkList)\n            if(index > -1) {\n              this.userOptionList[i].checked = true\n            }\n          }\n        }\n      })\n    },\n    // 已选成员\n    getCheckList () {\n      for(let i in this.userOptionList) {\n        let index = this.isInArr('id', this.userOptionList[i].id, this.checkList)\n        if(this.userOptionList[i].checked) {\n          if(index == -1){\n            this.checkList.push(this.userOptionList[i])\n          }\n        }else{\n          if(index > -1){\n            this.checkList.splice(index, 1)\n          }\n        }\n      }\n    },\n    // 判断是否已存在数组中,存在返回index\n    isInArr (attr, val, list) {\n      let index = -1\n      for(let i in list) {\n        if(list[i][attr] == val) {\n          index = i\n        }\n      }\n      return index\n    },\n    // 删除已选成员\n    delCheck (item, index) {\n      this.checkList.splice(index, 1)\n      for(let i in this.userOptionList) {\n        let tix = this.isInArr('id', this.userOptionList[i].id, this.checkList)\n        if(tix == -1) {\n          this.userOptionList[i].checked = false\n        }\n      }\n    },\n    // 其他信息选择\n    changeCheck (item, index) {\n      if(!this.selectable) {\n        for(let i in this.userOptionList) {\n          this.userOptionList[i].checked = false\n        }\n      }\n      let bool = item.checked || false\n      this.$set(this.userOptionList[index], 'checked', !bool)\n      this.getCheckList()\n    }\n  },\n}\n</script>\n<style lang='scss' scoped>\n.customize-tree-node {\n  flex: 1;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  font-size: 14px;\n  .customize-tree-node-label{\n    display: inline-block;\n    overflow: hidden;\n    overflow-x: auto;\n  }\n}\n.treeBox {\n  width: 250px;\n  height: 58vh;\n  overflow: hidden;\n  overflow-y: auto;\n  box-sizing: border-box;\n}\n.treeBox::-webkit-scrollbar{\n  display: none;\n}\n</style>\n<style lang=\"scss\">\n.user-info-list-dialog{\n  .el-dialog{\n    margin-top: 10vh!important;\n    .el-dialog__body{\n      padding: 0 20px;\n      padding-bottom: 20px;\n      .user-info-list{\n        display: flex;\n        .left, .center, .right{\n          box-sizing: border-box;\n          .userlist-box{\n            padding: 0;\n            margin: 0;\n            overflow: hidden;\n            overflow-y: auto;\n            box-sizing: border-box;\n            li{\n              display: flex;\n              justify-content: space-between;\n              align-items: center;\n              padding: 10px 0;\n              p{\n                font-size: 14px;\n                display: flex;\n                align-items: center;\n                margin: 0;\n                img{\n                  margin-right: 10px;\n                  display: block;\n                  width: 20px;\n                  height: 20px;\n                  border-radius: 50%;\n                  overflow: hidden;\n                }\n                b{\n                  color: #333333;\n                  margin-right: 25px;\n                }\n                span{\n                  color: #868BA1;\n                }\n                i{\n                  color: #DCDFE6;\n                  font-size: 16px;\n                  cursor: pointer;\n                }\n              }\n            }\n            li:hover{\n              background: #f5f7fa;\n            }\n          }\n          .userlist-box-tool{\n            li{\n              cursor: pointer;\n              p{\n                align-items: center;\n              }\n              .check-tool{\n                margin-right: 10px;\n                .el-checkbox{\n                  .el-checkbox__inner{\n                    border-radius: 50%;\n                    width: 16px;\n                    height: 16px;\n                  }\n                  .el-checkbox__inner::after{\n                    left: 5px;\n                    top: 2px;\n                  }\n                }\n              }\n            }\n          }\n        }\n        .left{\n          width: 210px;\n          box-sizing: border-box;\n          padding-right: 20px;\n          padding-top: 13px;\n          .el-tree{\n            width: 100%;\n            height: 100%;\n          }\n          .el-tree-node.is-current{\n            >.el-tree-node__content{\n              background-color: #F5F7FA;\n            }\n          }\n        }\n        .center{\n          width: 280px;\n          padding: 0 20px;\n          border-left: 1px solid #DCDFE6;\n          border-right: 1px solid #DCDFE6;\n          box-sizing: border-box;\n          .search-tool{\n            margin: 20px 0;\n            .el-input__inner{\n              width: 240px;\n              height: 40px;\n              border-radius: 40px;\n              background: #F5F5F5;\n              border: 0;\n            }\n          }\n          .userlist-box{\n            height: calc(58vh - 60px);\n          }\n        }\n        .right{\n          padding-left: 20px;\n          box-sizing: border-box;\n          width: 240px;\n          h4{\n            font-size: 14px;\n            color: #868BA1;\n            font-weight: normal;\n            margin: 20px 0;\n          }\n          .userlist-box{\n            height: calc(58vh - 48px);\n          }\n        }\n      }\n    }\n  }\n}\n</style>"
  },
  {
    "path": "src/components/basic-container/loading.vue",
    "content": "<template>\n  <div class=\"jvs-loading\">\n    <div class=\"content\">\n      <div class=\"img-box\"></div>\n      <div class=\"title\">\n        正在加载\n      </div>\n    </div>\n  </div>\n</template>\n<script>\nexport default {\n  name: 'jvs-loading',\n  data(){\n    return {}\n  }\n}\n</script>\n<style lang=\"scss\" scoped>\n.jvs-loading{\n  position: relative;\n  width: 100%;\n  height: 100%;\n  .content{\n    position: absolute;\n    left: 0;\n    right: 0;\n    top: 0;\n    bottom: 0;\n    margin: 0;\n    z-index: 999;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    align-items: center;\n    width: 100%;\n    .img-box{\n      background: url('../../../public/jvs-ui-public/img/loading.png');  \n      background-position: center;\n      background-size: contain;\n      background-repeat: no-repeat;\n      width: 20px;\n      height: 20px;\n      -webkit-animation: animal 1s infinite linear ;\n      -webkit-transform-origin: center center;\n      -ms-transform-origin: center center;\n      transform-origin: center center;\n    }\n    @-webkit-keyframes animal {\n      0%{\n        transform: rotate(0deg);\n        -ms-transform: rotate(0deg);\n        -webkit-transform: rotate(0deg);\n      }\n      100%{\n        transform: rotate(360deg);\n        -ms-transform: rotate(360deg);\n        -webkit-transform: rotate(360deg);\n      }\n    }\n    .title{\n      text-align: center;\n    }\n  }\n}\n</style>"
  },
  {
    "path": "src/components/basic-container/login/loginForm.vue",
    "content": "<template>\n  <div>\n    <el-dialog\n      ref=\"loginComDialog\"\n      :modal=\"modal\"\n      :class=\"{'login-component-dialog': true, 'login-component-dialog-modal': modal}\"\n      :visible.sync=\"loginVisible\"\n      append-to-body\n      :before-close=\"handleClose\">\n      <div class=\"jvs-loginCom\" v-if=\"loginVisible\" :style=\"setStyle\">\n        <div v-if=\"tenantVisible\" :class=\"{'user-tenant-list': true}\">\n          <div v-if=\"tenantLoading\" class=\"tenant-loading-back\"></div>\n          <p v-for=\"item in usertenantList\" :key=\"'tenant-item'+item.id\" @click=\"tenantLoginHandle(item)\">\n            <img v-if=\"item.icon\" :src=\"item.icon\" alt=\"\" />\n            <span v-else class=\"empty-logo-image\">\n              <i class=\"el-icon-office-building\"></i>\n            </span>\n            <span>{{item.shortName}}</span>\n          </p>\n        </div>\n        <div v-else class=\"login\">\n          <div class=\"login-top\">\n            <h5>{{formType == 'login' ? '欢迎登录' : '注册账号'}}</h5>\n            <div class=\"top-right\" v-if=\"formType == 'login'\">\n              <p class=\"code\"></p>\n              <i class=\"icon-erweima\" v-if=\"loginType != 'weixin'\" @click=\"changeType('weixin')\"></i>\n              <i class=\"el-icon-user-solid\" v-if=\"loginType == 'weixin'\" @click=\"changeType('namepass')\"></i>\n            </div>\n          </div>\n          <div class=\"login-center\" v-if=\"!fresh\">\n            <!-- status-icon -->\n            <el-form\n              class=\"jvs-loginCom-form\"\n              :rules=\"loginRules\"\n              ref=\"loginForm\"\n              :model=\"loginForm\"\n              label-width=\"0\"\n            >\n              <!-- 账号 -->\n              <el-form-item\n                prop=\"username\"\n                v-if=\"loginType == 'namepass' || loginType == 'register'\"\n                class=\"no-suffix\"\n              >\n                <el-input\n                  size=\"small\"\n                  @keyup.enter.native=\"handleLogin\"\n                  v-model=\"loginForm.username\"\n                  placeholder=\"请输入姓名\"\n                >\n                  <i\n                    slot=\"prefix\"\n                    class=\"el-icon-user-solid\"\n                  ></i>\n                </el-input>\n              </el-form-item>\n              <!-- 手机号 -->\n              <el-form-item\n                prop=\"phone\"\n                v-if=\"loginType == 'phone' || formType == 'register'\"\n                class=\"no-suffix\"\n              >\n                <el-input\n                  size=\"small\"\n                  @keyup.enter.native=\"handleLogin\"\n                  v-model=\"loginForm.phone\"\n                  auto-complete=\"off\"\n                  placeholder=\"请输入手机号\"\n                >\n                  <i\n                    slot=\"prefix\"\n                    class=\"el-icon-mobile\"\n                  ></i>\n                </el-input>\n              </el-form-item>\n              <!-- 密码 -->\n              <el-form-item\n                prop=\"password\"\n                v-if=\"loginType == 'namepass'\"\n                class=\"no-suffix\"\n              >\n                <el-input\n                  size=\"small\"\n                  @keyup.enter.native=\"handleLogin\"\n                  :type=\"passwordType\"\n                  v-model=\"loginForm.password\"\n                  auto-complete=\"off\"\n                  placeholder=\"请输入密码\"\n                >\n                  <i\n                    class=\"el-icon-view el-input__icon\"\n                    slot=\"suffix\"\n                    @click=\"showPassword\"\n                  ></i>\n                  <i\n                    slot=\"prefix\"\n                    class=\"el-icon-lock\"\n                  ></i>\n                  <!-- icon-mima  -->\n                </el-input>\n              </el-form-item>\n\n              <!-- 手机验证码 -->\n              <el-form-item\n                prop=\"code\"\n                v-if=\"loginType == 'phone' || loginType == 'register'\"\n                class=\"no-suffix\"\n              >\n                <el-row :span=\"24\">\n                  <el-col :span=\"16\">\n                    <el-input\n                      size=\"small\"\n                      @keyup.enter.native=\"handleLogin\"\n                      :maxlength=\"code.len\"\n                      v-model=\"loginForm.code\"\n                      auto-complete=\"off\"\n                      placeholder=\"请输入验证码\"\n                    >\n                      <i\n                        slot=\"prefix\"\n                        class=\"icon-yanzhengma\"\n                      ></i>\n                    </el-input>\n                  </el-col>\n                  <el-col :span=\"8\" class=\"code-row\">\n                    <el-button\n                      v-if=\"loginType == 'register'\"\n                      class=\"codebtn\"\n                      size=\"mini\"\n                      :disabled=\"regcodeobj.disabled\"\n                      @click.native.prevent=\"getPhoneCode('regcodeobj')\"\n                    >{{regcodeobj.text}}</el-button>\n                    <el-button\n                      v-else\n                      class=\"codebtn\"\n                      size=\"mini\"\n                      :disabled=\"yzmobj.disabled\"\n                      @click.native.prevent=\"getPhoneCode('yzmobj')\"\n                    >{{yzmobj.text}}</el-button>\n                  </el-col>\n                </el-row>\n              </el-form-item>\n              <!-- 随机验证码 -->\n              <el-form-item\n                prop=\"namecode\"\n                v-if=\"false && loginType == 'namepass'\"\n                class=\"no-suffix\"\n              >\n                <el-row :span=\"24\">\n                  <el-col :span=\"16\">\n                    <el-input\n                      size=\"small\"\n                      @keyup.enter.native=\"handleLogin\"\n                      :maxlength=\"code.namecodelen\"\n                      v-model=\"loginForm.namecode\"\n                      auto-complete=\"off\"\n                      placeholder=\"请输入验证码\"\n                    >\n                      <i\n                        slot=\"prefix\"\n                        class=\"icon-yanzhengma\"\n                      ></i>\n                    </el-input>\n                  </el-col>\n                  <el-col :span=\"8\">\n                    <div class=\"login-code\">\n                      <span\n                        class=\"login-code-img\"\n                        @click=\"refreshCode\"\n                        v-if=\"code.type == 'text'\"\n                      >{{code.value}}</span>\n                      <img\n                        :src=\"code.src\"\n                        class=\"login-code-img\"\n                        @click=\"refreshCode\"\n                        v-else\n                      />\n                    </div>\n                  </el-col>\n                </el-row>\n              </el-form-item>\n\n\n\n              <!-- 微信二维码登录 -->\n              <div v-if=\"loginType == 'weixin'\" @click=\"freshWeixin\" style=\"width: 300px;height: 330px;position: absolute;left: 50%;margin-left: -150px;cursor:pointer;z-index: 9;\">\n              </div>\n              <iframe id=\"weixinCode\" v-if=\"loginType == 'weixin'\" :src=\"'/auth/just/login/WECHAT_OPEN?url='+ callbackUrl\" style=\"position: absolute;left: 50%;margin-left: -150px;cursor:pointer;width: 300px;min-height: auto;\" scrolling=\"no\"  frameborder=\"0\" height=\"330\"></iframe>\n              <!-- <qr-code\n                v-if=\"loginType === 'weixin' || loginType === 'app'\"\n                ref=\"QRCode\"\n                :ReqType=\"'login'\"\n                @submit='loginWX'\n              ></qr-code> -->\n              <!-- 按钮 -->\n              <el-form-item>\n                <el-button\n                  type=\"primary\"\n                  size=\"small\"\n                  @click.native=\"handleLogin\"\n                  class=\"login-submit-button\"\n                  :loading=\"submitLoading\"\n                  v-if=\"formType == 'login' && loginType != 'weixin' && loginType != 'app' && loginType != 'third'\"\n                >登录</el-button>\n                <el-button\n                  type=\"primary\"\n                  size=\"small\"\n                  @click.native=\"handleRegister\"\n                  class=\"login-submit-button\"\n                  :loading=\"submitLoading\"\n                  v-if=\"formType == 'register'\"\n                >注册</el-button>\n              </el-form-item>\n              <el-row v-if=\"loginType != 'weixin'\" class=\"btntab\">\n                <p v-if=\"formType == 'login'\">\n                  <el-button\n                    type=\"text\"\n                    size=\"small\"\n                    v-if=\"loginType != 'namepass' && hasLoginRight('password')\"\n                    @click.native.prevent=\"changeType('namepass')\"\n                  >账号密码</el-button>\n                  <el-button\n                    type=\"text\"\n                    size=\"small\"\n                    v-if=\"loginType != 'phone' && hasLoginRight('phone')\"\n                    @click.native.prevent=\"changeType('phone')\"\n                  >手机号登录</el-button>\n                </p>\n                <p v-else></p>\n                <p>\n                  <span v-if=\"formType == 'login'\">没有账号？<jvs-button type=\"text\" @click=\"changeFormType('register', 'register')\">点击注册</jvs-button></span>\n                </p>\n              </el-row>\n              <el-row class=\"note-text\" v-if=\"formType == 'register'\">\n                <p>\n                  <span>点击注册按钮将视为您同意<jvs-button type=\"text\" @click=\"openRule\">使用条款</jvs-button></span>\n                </p>\n                <p>\n                  <span><jvs-button type=\"text\" @click=\"changeFormType('namepass', 'login')\">去登录</jvs-button></span>\n                </p>\n              </el-row>\n              <el-row v-if=\"loginType != 'weixin' && formType == 'login'\" class=\"other-type-item\">\n                <el-divider content-position=\"center\">其他登录方式</el-divider>\n                <p>\n                  <img :src=\"wxImgIcon\" alt=\"\" @click=\"changeType('weixin')\">\n                </p>\n              </el-row>\n            </el-form>\n          </div>\n        </div>\n        <div v-if=\"closeable ? true : false\" class=\"close-button-icon\">\n          <i class=\"el-icon-circle-close\" @click=\"handleClose\"></i>\n        </div>\n      </div>\n    </el-dialog>\n  </div>\n\n</template>\n<script>\nimport wxImg from './icon/wx.png'\nimport QRcode from \"../../QRcode/index\"\nimport { randomLenNum } from \"@/util/util\";\nimport { getPhone, getRegPhoneCode } from \"@/api/login\"\nexport default {\n  components: { 'qr-code': QRcode},\n  computed: {\n    setStyle () {\n      let style = ''\n      if(this.right) {\n        style += `right:${this.right};`\n      }else{\n        if(this.left) {\n          style += `left: ${this.left};`\n        }else{\n          // style += `left: calc(50% - 230px);`\n          style += `right: 150px;`\n        }\n      }\n      if(this.top) {\n        style += `top:${this.top};`\n      }else{\n        if(this.bottom) {\n          style += `bottom:${this.bottom};`\n        }else{\n          style += `top: calc(50% - 300px);`\n        }\n      }\n      return style\n    },\n    modal () {\n      if(this.hasModal) {\n        return true\n      }else{\n        return false\n      }\n    }\n  },\n  data() {\n    var validateUserName = (rule, value, callback) => {\n      if (value.length > 64) {\n        callback(new Error('用户名不能超过64位字符'));\n      } else {\n        if(/^(?!_)(?!.*?_$)[a-zA-Z0-9_\\u4e00-\\u9fa5]+$/.test(value)) {\n          callback();\n        }else{\n          callback(new Error('用户名包含中英文、数字和下划线，且不能下划线开头结尾'));\n        }\n      }\n    };\n    return {\n      wxImgIcon: wxImg,\n      loginVisible: false,\n      loginForm: {\n        username: \"\", // \"admin\",\n        password: \"\", // \"123456\",\n        code: \"\",\n        redomStr: \"\",\n        // company: 1,\n        phone: '',\n        wxcode: \"\",\n        namecode: ''\n      },\n      loginRules: {\n        username: [\n          { required: true, message: \" \", trigger: \"blur\" },\n          { validator: validateUserName, trigger: 'blur' }\n        ],\n        password: [\n          { required: true, message: \" \", trigger: \"blur\" },\n          // { min: 6, message: \"密码长度最少为6位\", trigger: \"blur\" }\n        ],\n        phone: [{ required: true, message: \" \", trigger: \"blur\" }],\n        code: [\n          { required: true, message: \" \", trigger: \"blur\" },\n          // { min: 6, max: 6, message: \" \", trigger: \"blur\" }\n        ],\n        // namecode: [\n        //   { required: true, message: \" \", trigger: \"blur\" },\n        //   { min: 4, max: 4, message: \" \", trigger: \"blur\" }\n        // ],\n      },\n      // loginType: 'namepass',\n      loginType: 'weixin',\n      passwordType: \"password\",\n      loginTypes: [],\n      submitLoading: false,\n      code: {\n        src: \"/code\",\n        value: \"\",\n        len: 6,\n        namecodelen: 4,\n        type: \"image\"\n      },\n      yzmobj: {\n        text: '发送验证码',\n        time: 180,\n        disabled: false\n      },\n      regcodeobj: {\n        text: '发送验证码',\n        time: 180,\n        disabled: false\n      },\n      qrType: 'weixin',\n      formType: 'login', // register\n      fresh: false,\n      usertenantList: [], // 用户的租户列表\n      tenantVisible: false, // 租户列表展示\n      tenantLoading: false,\n      randomString: '',\n      callbackUrl: ''\n    }\n  },\n  methods: {\n    init () {\n      this.loginVisible = true\n      if(this.switchTenant) {\n        this.tenantVisible = true\n        this.usertenantList = this.switchList\n      }else{\n        this.$store.dispatch(\"LogOut\")\n      }\n    },\n    handleClose () {\n      this.submitLoading = false\n      this.tenantLoading = false\n      this.loginVisible = false\n    },\n    resetLogin () {\n      this.$refs.loginForm.resetFields()\n      this.fresh = true\n      this.$nextTick( () => {\n        this.loginForm = {\n          username: \"\",\n          password: \"\",\n          code: \"\",\n          redomStr: \"\",\n          phone: '',\n          wxcode: \"\",\n          namecode: ''\n        }\n        this.fresh = false\n      })\n    },\n\n    hasLoginRight (type) {\n      let bool = false\n      if(this.loginTypes.indexOf(type) > -1) {\n        bool = true\n      }\n      bool = true // 直接给！！！！！！！！！！\n      return bool\n    },\n    showPassword () {\n      this.passwordType == ''\n        ? (this.passwordType = 'password')\n        : (this.passwordType = '')\n    },\n    // 切换登录方式\n    changeType (type) {\n      if (type !== 'weixin' && this.$refs.QRCode) {\n        this.$refs.QRCode.clear()\n      }\n      this.loginType = type\n      this.resetLogin()\n      // this.getQRcodeUrl()\n    },\n    // 获取验证码\n    getPhoneCode (attr) {\n      if(this.loginForm.phone && !this.loginForm.phone.includes(\" \")){\n        let func = null\n        if(this.loginType == 'register') {\n          func = getRegPhoneCode\n        }else{\n          func = getPhone\n        }\n        if(func) {\n          func({ phone: this.loginForm.phone }).then(({ data }) => {\n            // console.log(data)\n            if (data.code === 0) {\n              this.$set(this[attr], 'disabled', true)\n              let time = this[attr].time\n              let setInt = setInterval(() => {\n                time--\n                if (time <= 0) {\n                  this.$set(this[attr], 'disabled', false)\n                  clearInterval(setInt)\n                  this.$set(this[attr], 'text', '发送验证码')\n                } else {\n                  this.$set(this[attr], 'text', (time + \"s重新发送\") )\n                }\n              }, 1000)\n            }\n          }).catch(err => {\n            this.refreshCode();\n          })\n        }\n      }\n    },\n    // 获取二维码\n    getQRcodeUrl (val) {\n      let _this = this\n      if (this.loginType === 'weixin') {\n        setTimeout(() => {\n          _this.$refs.QRCode.init(_this.qrType)\n        }, 1)\n      }\n    },\n    // 刷新验证码\n    refreshCode () {\n      this.loginForm.code = ''\n      this.loginForm.randomStr = randomLenNum(this.code.len, true)\n      this.code.type === 'text'\n        ? (this.code.value = randomLenNum(this.code.len))\n        : (this.code.src = `${this.codeUrl}?randomStr=${this.loginForm.randomStr}`)\n    },\n    // 登录提交\n    handleLogin () {\n      this.$refs.loginForm.validate(valid => {\n        if (valid) {\n          this.submitLoading = true\n          this.$store.dispatch(\"LoginByUsername\", Object.assign({}, this.loginForm, { loginType: this.loginType, code: this.loginType === 'namepass' ? this.loginForm.namecode : this.loginForm.code })).then((data) => {\n            this.getTenantByUserList(data)\n          }).catch(() => {\n            this.refreshCode()\n            this.submitLoading = false\n          })\n        }\n      });\n    },\n    // 微信登录成功回调\n    loginWX (code, type) {\n      if (type == 'weixin') {\n        codeGetUserInfo({ code: code }).then(({ data }) => {\n          if (data.code === 0) {\n            wxOpenidLogin({ openId: data.data.openid })\n              .then(response => {\n                const data = response.data;\n                // this.$store.commit(\"SET_ACCESS_TOKEN\", data.access_token);\n                // this.$store.commit(\"SET_REFRESH_TOKEN\", data.refresh_token);\n                // this.$store.commit(\"SET_EXPIRES_IN\", data.expires_in);\n                // this.$store.commit(\"CLEAR_LOCK\");\n                // this.$store.commit(\"SET_USER_INFO\", data.userDto);\n                // this.$store.commit(\"SET_ROLES\", data.roles || []);\n                // this.$store.commit(\"SET_PERMISSIONS\", data.permissions || []);\n                // this.$store.commit(\"SET_TENANTId\", this.loginForm.company);\n                // this.$router.push({ path: this.tagWel.value });\n              })\n              .catch(error => {\n                // this.getQRcodeUrl()\n              });\n          }\n        })\n      } else {\n        appLogin(code).then(response => {\n          const data = response.data;\n          // this.$store.commit(\"SET_ACCESS_TOKEN\", data.access_token);\n          // this.$store.commit(\"SET_REFRESH_TOKEN\", data.refresh_token);\n          // this.$store.commit(\"SET_EXPIRES_IN\", data.expires_in);\n          // this.$store.commit(\"CLEAR_LOCK\");\n          // this.$store.commit(\"SET_USER_INFO\", data.userDto);\n          // this.$store.commit(\"SET_ROLES\", data.roles || []);\n          // this.$store.commit(\"SET_PERMISSIONS\", data.permissions || []);\n          // this.$store.commit(\"SET_TENANTId\", this.loginForm.company);\n          // this.$router.push({ path: this.tagWel.value });\n        })\n          .catch(error => {\n            // this.getQRcodeUrl()\n          });\n      }\n    },\n    // 获取该用户下所有的租户列表\n    getTenantByUserList (data) {\n      // console.log(data)\n      let list = []\n      if(data.userDto && data.userDto.tenants) {\n        list = data.userDto.tenants\n        if(list.length > 0) {\n          // 只有一个租户直接进去\n          if(list.length == 1) {\n            this.$store.commit(\"SET_SwitchTenant\", false)\n            this.setUserInfoData(data)\n            if(this.successClose !== false) {\n              this.handleClose()\n            }\n            // 后续操作\n            if(this.afterLogin) {\n              this.afterLogin(this.$refs.loginComDialog, data)\n            }\n          }else{\n            this.submitLoading = false\n            this.usertenantList = list\n            this.$store.commit(\"SET_SwitchTenant\", true)\n            this.tenantVisible = true\n          }\n        }\n      }\n    },\n    // 切换租户登录\n    tenantLoginHandle (item) {\n      if(item.id) {\n        this.tenantLoading = true\n        this.$store.dispatch('RefreshToken', item.id).then(data => {\n          if(data) {\n            this.setUserInfoData(data)\n            if(this.successClose !== false) {\n              this.handleClose()\n            }\n            // 后续操作\n            if(this.afterLogin) {\n              this.afterLogin(this.$refs.loginComDialog, data)\n            }\n          }else{\n            this.submitLoading = false\n          }\n        }).catch(() => {\n          this.submitLoading = false\n          this.tenantLoading = false\n        });\n      }\n    },\n    // 登录成功写入数据\n    setUserInfoData (data) {\n      this.$store.commit(\"SET_ACCESS_TOKEN\", data.access_token);\n      this.$store.commit(\"SET_REFRESH_TOKEN\", data.refresh_token);\n      this.$store.commit(\"SET_EXPIRES_IN\", data.expires_in);\n      this.$store.commit(\"CLEAR_LOCK\");\n      this.$store.commit(\"SET_USER_INFO\", data.userDto);\n      this.$store.commit(\"SET_ROLES\", data.roles || []);\n      this.$store.commit(\"SET_PERMISSIONS\", data.permissions || []);\n\n      this.$store.commit(\"SET_TENANTId\", data.userDto.tenantId);\n      this.$store.commit(\"DEL_ALL_TAG\"); // 关闭之前打开的所有tag\n      this.$store.commit(\"SET_THEME_NAME\", \"\"); // 清除主题\n      this.$store.commit(\"SET_TENANTINFO\", data.userDto.tenant)\n    },\n    // 注册\n    changeFormType (type, formtype) {\n      this.loginType = type\n      this.formType = formtype\n      this.resetLogin()\n    },\n    // 注册提交\n    handleRegister () {\n      this.$refs.loginForm.validate(valid => {\n        if (valid) {\n          this.submitLoading = true\n          this.$store.dispatch(\"LoginByUsername\", Object.assign({}, this.loginForm, { loginType: this.loginType, code: this.loginType === 'namepass' ? this.loginForm.namecode : this.loginForm.code })).then((data) => {\n            this.getTenantByUserList(data)\n          }).catch(() => {\n            this.refreshCode()\n            this.submitLoading = false\n          })\n        }\n      });\n      // if(this.afterRegister) {\n      //   this.afterRegister()\n      // }\n    },\n    // 刷新二维码\n    freshWeixin () {\n      $('#weixinCode').attr('src', $('#weixinCode').attr('src'))\n    },\n    // 使用条款\n    openRule () {\n      this.$openUrl('/agreement/policies.html', '_blank')\n    }\n  },\n  created () {\n    this.callbackUrl = location.origin + '/%23/login/callback'\n    this.refreshCode();\n    let randomStr = Math.random() + \"\"\n    this.randomString = '/' + (randomStr.slice(2, randomStr.length))\n    localStorage.setItem('loginRandom', this.randomString)\n  }\n}\n</script>\n<style lang=\"scss\">\n.login-component-dialog{\n  .el-dialog{\n    overflow: hidden;\n    background: none;\n    box-shadow: none;\n    width: 100%;\n    height: 100vh;\n    margin: 0!important;\n    .el-dialog__header{\n      display: none!important;\n    }\n    .el-dialog__body{\n      padding: 0;\n      margin: 0;\n      width: 100%;\n      height: 100%;\n    }\n  }\n  .jvs-loginCom{\n    background: #FFFFFF;\n    width: 460px;\n    height: 600px;\n    border-radius: 10px;\n    position: absolute;\n    h1,h2,h3,h4,h5,p{\n      margin: 0;\n      padding: 0;\n    }\n    .login{\n      padding: 0 20px;\n      width: 100%;\n      height: 100%;\n      box-sizing: border-box;\n      .login-top{\n        overflow: hidden;\n        h5{\n          font-size: 30px;\n          font-family: Source Han Sans CN;\n          font-weight: 500;\n          line-height: 30px;\n          color: #3471FF;\n          margin-top: 32px;\n          margin-bottom: 27px;\n        }\n        .top-right{\n          position: absolute;\n          top: 1px;\n          right: 1px;\n          border-radius: 0 10px 0 0;\n          overflow: hidden;\n          cursor: pointer;\n          .code{\n            width: 0;\n            height: 0;\n            border-top: 88px solid #868BA1;\n            border-left: 88px solid transparent;\n            overflow: hidden;\n          }\n          i{\n            position: absolute;\n            font-size: 26px!important;\n            top: 12px;\n            right: 12px;\n            color: #fff;\n          }\n        }\n      }\n      .login-center{\n        margin-top: 23px;\n        //.login-form {\n        .jvs-loginCom-form{\n          margin: 10px 0;\n          i {\n            color: #DCDFE6;\n          }\n          .el-form-item__content {\n            width: 100%;\n          }\n          .el-form-item {\n            margin-bottom: 25px;\n          }\n          .el-input {\n            input {\n              text-indent: 20px;\n              background: transparent;\n              border: none;\n              color: #BFBFBF;\n              height: 60px;\n              border: 1px solid #DCDFE6;\n              border-radius: 0;\n              border-radius: 4px;\n            }\n            .el-input__prefix {\n              i{\n                margin-left: 12px;\n                display: inline-block;\n                padding: 0 5px;\n                line-height: 60px;\n                font-size: 25px;\n              }\n            }\n          }\n          .no-suffix {\n            .el-input__suffix {\n              display: none;\n            }\n          }\n          .el-form-item.is-error{\n            .el-input__inner{\n              border-color: #F56C6C;\n            }\n          }\n          .login-submit-button{\n            width: 100%;\n            height: 50px;\n            background: #3471FF;\n            color: #fff;\n            font-size: 22px;\n          }\n          .code-row{\n            height: 60px;\n            margin: 0;\n            display: flex;\n            justify-content: flex-end;\n            align-items: center;\n            .codebtn{\n              border: 0;\n            }\n            .codebtn:hover{\n              color: #606266;\n              background: none;\n            }\n          }\n          .btntab{\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n            p{\n              width: 50%;\n              .el-button, span{\n                font-size: 18px;\n                font-family: Source Han Sans CN;\n                font-weight: 400;\n              }\n            }\n            p:nth-last-of-type(1){\n              text-align: right;\n            }\n          }\n          .note-text{\n            font-size: 18px;\n            color: #868BA1;\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            p:nth-of-type(1){\n              flex: 1;\n            }\n            .el-button{\n              font-size: 18px;\n            }\n          }\n          .other-type-item{\n            margin-top: 25px;\n            .el-divider{\n              .el-divider__text{\n                font-size: 18px;\n                font-family: Source Han Sans CN;\n                font-weight: 400;\n                color: #868BA1;\n              }\n            }\n            p{\n              display: flex;\n              justify-content: center;\n              align-items: center;\n              margin-top: 46px;\n              img{\n                display: block;\n                width: 50px;\n                height: 50px;\n                cursor: pointer;\n              }\n            }\n          }\n        }\n      }\n    }\n    .user-tenant-list{\n      padding: 0 10px;\n      position: relative;\n      p{\n        width: 100%;\n        height: 60px;\n        overflow: hidden;\n        margin: 0;\n        padding: 0 10px;\n        margin-top: 20px;\n        cursor: pointer;\n        box-sizing: border-box;\n        display: flex;\n        align-items: center;\n        background: #fff;\n        border: 1px solid #EFF2F7;\n        img{\n          display: block;\n          width: 40px;\n          height: 40px;\n          border: 0;\n          //background: #868BA1;\n          //margin-right: 10px;\n          margin: 0 30px;\n        }\n        span{\n          display: block;\n          width: 200px;\n          color: #fff;\n          text-align: left;\n          color: #333333;\n        }\n        .empty-logo-image{\n          display: block;\n          width: 40px;\n          height: 40px;\n          background: #EFF2F7; // #F6F6F6;\n          text-align: center;\n          //margin-right: 10px;\n          margin: 0 30px;\n          i{\n            font-size: 24px;\n            line-height: 40px;\n            text-align: center;\n            color: #868BA1;\n          }\n        }\n      }\n      p:hover{\n        background: #EFF2F7;\n      }\n    }\n    .user-tenant-list::-webkit-scrollbar{\n      display: none;\n    }\n    .tenant-loading-back{\n      position: absolute;\n      width: 100%;\n      height: 560px;\n      top: 0;\n      left: 0;\n      box-sizing: border-box;\n      background-color: rgba(255, 255, 255, 0.8);\n      background-image: url('../../../../public/jvs-ui-public/img/loading.gif');\n      background-repeat: no-repeat;\n      background-position: center;\n      background-position: center;\n      //background-size: 450px 360px;\n      background-size: 300px 240px;\n    }\n    // 关闭按钮\n    .close-button-icon{\n      text-align: center;\n      margin-top: -30px;\n      i{\n        font-size: 24px;\n        color: #BFBFBF;\n      }\n    }\n  }\n}\n.login-component-dialog-modal{\n  .el-dialog{\n    position: unset;\n    width: 50%;\n    height: auto;\n    .el-dialog__body{\n      width: auto;\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "src/components/basic-container/main.vue",
    "content": "<template>\n  <div :class=\"{'basic-container': true, 'basic-container--block':block}\">\n    <!-- <el-card> -->\n      <slot></slot>\n    <!-- </el-card> -->\n  </div>\n</template>\n\n<script>\nexport default {\n  name: \"basicContainer\",\n  props: {\n    block: {\n      type: Boolean,\n      default: false,\n    }\n  }\n};\n</script>\n\n<style lang=\"scss\">\n.basic-container {\n  // padding: 8px 10px;\n  border-radius: 10px;\n  box-sizing: border-box;\n  height: 100%;\n  .el-card {\n    width: 100%;\n    height: 100%;\n    .el-card__body {\n      height: 100%;\n    }\n  }\n  &:first-child {\n    padding-top: 0;\n  }\n  &--block {\n    height: 100%;\n    .el-card {\n      height: 100%;\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "src/components/doc-lib/api.js",
    "content": "import request from '@/router/axios'\n\n// 保存文档\nexport const saveContent = (contentId, data) => {\n  return request({\n    url: `/mgr/document/dcLibrary/save/content/${contentId}`,\n    method: 'post',\n    data: data\n  })\n}\n\n// 预览文档\nexport const preview = (id) => {\n  return request({\n    url: `/mgr/document/dcLibrary/preview/document/${id}`,\n    method: 'get'\n  })\n}\n\n// 更新文档为编辑状态\nexport const changeStatus = (id, action) => {\n  return request({\n    url: `/mgr/document/dcLibrary/status/document/${id}/${action}`,\n    method: 'put'\n  })\n}\n\n// 修改文档设置\nexport const editLib = (data) => {\n  return request({\n    url: `/mgr/document/dcLibrary`,\n    method: 'put',\n    data: data\n  })\n}\n"
  },
  {
    "path": "src/components/doc-lib/excel/index.vue",
    "content": "<template>\n  <div class=\"hello\">\n    <div style=\"position: absolute; top: 0\">\n      <!-- <input style=\"font-size: 16px\" type=\"file\" @change=\"uploadExcel\" /> -->\n    </div>\n    <div\n      id=\"luckysheet\"\n      style=\"\n        margin-top: 15px;\n        padding: 0px;\n        position: absolute;\n        width: 100%;\n        left: 0px;\n        top: 40px;\n        bottom: 0px;\n      \"\n    ></div>\n\n    <div\n      v-show=\"isMaskShow\"\n      style=\"\n        position: absolute;\n        z-index: 1000000;\n        left: 0px;\n        top: 0px;\n        bottom: 0px;\n        right: 0px;\n        background: rgba(255, 255, 255, 0.8);\n        text-align: center;\n        font-size: 40px;\n        align-items: center;\n        justify-content: center;\n        display: flex;\n      \"\n    >\n      Downloading\n    </div>\n  </div>\n</template>\n\n<script>\nimport LuckyExcel from \"luckyexcel\";\nexport default {\n  name: \"Excel\",\n  props: {\n    content: {\n      // type: Object,\n      default: () => {\n        return {};\n      },\n    },\n  },\n  data() {\n    return {\n      isMaskShow: false,\n    };\n  },\n  mounted() {\n    this.cj();\n  },\n  methods: {\n    cj() {\n      let _this = this;\n      var options={\n        container: \"luckysheet\",\n        lang:'zh',\n        showGridLines:true,\n        allowEdit:true,\n        showinfobar: false, // 是否显示顶部信息栏\n        showsheetbar: true, // 是否显示底部sheet页按钮\n        showstatisticBar: false, // 是否显示底部计数栏\n        sheetBottomConfig: true, // sheet页下方的添加行按钮和回到顶部按钮配置\n        userInfo: false, // 右上角的用户信息展示样式\n        plugins: ['chart'],\n        showstatisticBarConfig: {\n          count:true,\n          view:true,\n          zoom:true,\n        },\n        showsheetbarConfig: {\n          add: true, //新增sheet\n          menu: false, //sheet管理菜单\n          sheet: true, //sheet页显示\n        },\n        hook: {\n          sheetMouseup(){\n            _this.$emit(\"contetnChange\", luckysheet.getAllSheets());\n          },\n        }\n      }\n      if(this.content==''){\n        luckysheet.create(options);\n      }else{\n        luckysheet.create({\n          ...options,\n          data: this.content,\n        });\n      }\n    },\n    uploadExcel(evt) {\n      let _this = this;\n      const files = evt.target.files;\n      if (files == null || files.length == 0) {\n        alert(\"No files wait for import\");\n        return;\n      }\n\n      let name = files[0].name;\n      let suffixArr = name.split(\".\"),\n        suffix = suffixArr[suffixArr.length - 1];\n      if (suffix != \"xlsx\") {\n        alert(\"Currently only supports the import of xlsx files\");\n        return;\n      }\n      LuckyExcel.transformExcelToLucky(\n        files[0],\n        function (exportJson, luckysheetfile) {\n          if (exportJson.sheets == null || exportJson.sheets.length == 0) {\n            alert(\n              \"Failed to read the content of the excel file, currently does not support xls files!\"\n            );\n            return;\n          }\n          window.luckysheet.destroy();\n          var options={\n            container: \"luckysheet\",\n            lang:'zh',\n            showGridLines:true,\n            allowEdit:true,\n            showinfobar: false, // 是否显示顶部信息栏\n            showsheetbar: true, // 是否显示底部sheet页按钮\n            showstatisticBar: false, // 是否显示底部计数栏\n            sheetBottomConfig: true, // sheet页下方的添加行按钮和回到顶部按钮配置\n            userInfo: false, // 右上角的用户信息展示样式\n            plugins: ['chart'],\n            showstatisticBarConfig: {\n              count:true,\n              view:true,\n              zoom:true,\n            },\n            showsheetbarConfig: {\n              add: true, //新增sheet\n              menu: false, //sheet管理菜单\n              sheet: true, //sheet页显示\n            },\n            hook: {\n              sheetMouseup(){\n                _this.$emit(\"contetnChange\", luckysheet.getAllSheets());\n              },\n            }\n          }\n          console.log(exportJson)\n          luckysheet.create({\n            ...options,\n            data: exportJson.sheets,\n          })\n        }\n      );\n    },\n  },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\nh3 {\n  margin: 40px 0 0;\n}\nul {\n  list-style-type: none;\n  padding: 0;\n}\nli {\n  display: inline-block;\n  margin: 0 10px;\n}\na {\n  color: #42b983;\n}\n</style>"
  },
  {
    "path": "src/components/doc-lib/flow/index.vue",
    "content": "<template>\n  <div class=\"home\">\n    <!-- 使用topology组件 -->\n    <topology\n      :data=\"content\"\n       id=\"previewFalse\"\n    />\n  </div>\n</template>\n\n<script>\nimport Vue from 'vue';\n// 导入topology-vue组件\nimport topology from 'topology-vue';\n// 需要导入topology-vue.css\nimport 'topology-vue/topology-vue.css';\nVue.use(topology);\nexport default {\n  name: 'Home',\n  props: {\n      content: {\n          default:()=>{\n              return {};\n          }\n      }\n  },\n  data() {\n    return {\n\n    };\n  },\n  created() {\n\n  },\n  mounted() {\n      \n  },\n  methods: {\n    getVal(){\n        return JSON.stringify(window.previewFalse.canvas.data)\n    },\n  },\n};\n</script>\n<style lang=\"css\" scoped>\n.home {\n  height: 100%;\n  width: 100%;\n}\n</style>\n"
  },
  {
    "path": "src/components/doc-lib/html/index.vue",
    "content": "<template>\n  <div class=\"html-design\">\n    <el-tiptap\n      height=\"100%\"\n      :extensions=\"extensions\"\n      :content=\"content\"\n      @onUpdate=\"onUpdate\"\n      :spellcheck=\"false\"\n      :menu-bubble-options=\"{ 'keep-in-bounds': false }\"\n      placeholder=\"请输入内容\"\n    />\n  </div>\n</template>\n\n<script>\nimport {\n  Iframe,\n  Doc,\n  Text,\n  Paragraph,\n  Heading,\n  Bold,\n  Underline,\n  Italic,\n  Strike,\n  Code,\n  Link,\n  Image,\n  Blockquote,\n  ListItem,\n  BulletList,\n  OrderedList,\n  TodoItem,\n  TodoList,\n  TextAlign,\n  Indent,\n  HardBreak,\n  HorizontalRule,\n  CodeView,\n  Fullscreen,\n  History,\n} from 'element-tiptap';\n\nimport codemirror from 'codemirror';\nimport 'codemirror/lib/codemirror.css'; // import base style\nimport 'codemirror/mode/xml/xml.js'; // language\nimport 'codemirror/addon/selection/active-line.js'; // require active-line.js\nimport 'codemirror/addon/edit/closetag.js'; // autoCloseTags\nimport {myHeading} from '@/views/common/tiptap/extension'\nexport default {\n  props: {\n    content: {\n      type: String,\n      default: () => {\n        return \"\";\n      },\n    },\n  },\n  data () {\n    return {\n      extensions: [\n        new Iframe(),\n        new Doc(),\n        new Text(),\n        new Paragraph(),\n        new myHeading({ level: 5,bubble: true }),\n        // new Heading({ level: 5 }),\n        new Bold({ bubble: true }),\n        new Underline({ bubble: true }),\n        new Italic({ bubble: true }),\n        new Strike({ bubble: true }),\n        new Code(),\n        new Link({ bubble: true }),\n        new Image(),\n        new Blockquote(),\n        new TextAlign(),\n        new ListItem(),\n        new BulletList({ bubble: true }),\n        new OrderedList({ bubble: true }),\n        new TodoItem(),\n        new TodoList(),\n        new Indent(),\n        new HardBreak(),\n        new HorizontalRule({ bubble: true }),\n        new CodeView({\n          codemirror,\n          codemirrorOptions: {\n            styleActiveLine: true,\n            autoCloseTags: true,\n          },\n        }),\n        new Fullscreen(),\n        new History(),\n      ],\n      html:'',\n    };\n  },\n  // mounted(){\n  //   console.log(this.content)\n  // },\n  methods: {\n    onUpdate (output, options) {\n      const {getHTML} = options;\n      this.html = getHTML();\n      // console.log(this.html)\n      this.$emit(\"contetnChange\",this.html)\n    },\n  }\n};\n</script>\n<style lang=\"scss\">\n.html-design{\n  height: 100%;\n  width: 100%;\n  // #contentBox{\n  //   height: 100%;\n  //   .w-e-toolbar, .w-e-text-container{\n  //     border: 0!important;\n  //   }\n  //   .w-e-text-container{\n  //     height: 100%!important;\n  //     box-shadow: 0 0 10px #DFDFDF;\n  //   }\n  // }\n}\n</style>\n"
  },
  {
    "path": "src/components/doc-lib/index.vue",
    "content": "<template>\n  <div class=\"doc-lib-box\">\n    <title-page-header @save=\"saveHandle\" @close=\"close\">\n      <template slot=\"left\">\n        <div v-if=\"rowData\" style=\"margin:0;min-width:200px;display:flex;align-items: center;\">\n          <el-input v-if=\"enableInput\" size=\"mini\" v-model=\"rowData.name\" placeholder=\"请输入标题\" @blur=\"handleInput\"></el-input>\n          <h4 v-else @click=\"enableInput=true\">{{rowData.name}}</h4>\n        </div>\n      </template>\n      <template slot=\"right\">\n        <!-- 暂时只显示 预览、保存、关闭 -->\n        <p v-if=\"false\">\n          <el-tooltip effect=\"dark\" content=\"浏览记录\" placement=\"top\">\n            <img :src=\"toolIcon.viewlog\" alt=\"\" @click=\"viewHistory('view')\" />\n          </el-tooltip>\n        </p>\n        <p v-if=\"false\">\n          <el-tooltip effect=\"dark\" content=\"文档历史版本\" placement=\"top\">\n            <img :src=\"toolIcon.hislog\" alt=\"\" @click=\"viewHistory('history')\"/>\n          </el-tooltip>\n        </p>\n        <p v-if=\"false\">\n          <el-popover\n            popper-class=\"hover-popver-list\"\n            v-model=\"showUser\"\n            placement=\"bottom\"\n            width=\"250\"\n            trigger=\"click\">\n            <ul class=\"base-type-list\">\n              <li v-for=\"item in user_list\" :key=\"item.name+item.icon\">\n                <i :class=\"item.icon\"></i>\n                <span>{{item.name}}</span>\n                <span style=\"margin-left:10px;\">{{item.info}}</span>\n              </li>\n            </ul>\n            <img slot=\"reference\" :src=\"toolIcon.userIcon\" alt=\"\" style=\"cursor:pointer;\" />\n          </el-popover>\n        </p>\n        <p v-if=\"false\">\n          <el-tooltip effect=\"dark\" content=\"\" placement=\"top\">\n             <img :src=\"toolIcon.lock\" alt=\"\" />\n          </el-tooltip>\n        </p>\n        <p v-if=\"false\">\n          <el-tooltip effect=\"dark\" content=\"分享\" placement=\"top\">\n            <img :src=\"toolIcon.share\" alt=\"\" />\n          </el-tooltip>\n        </p>\n        <p>\n          <el-tooltip effect=\"dark\" content=\"预览\" placement=\"top\">\n            <i class=\"el-icon-view\" style=\"font-size: 25px;color:#353535;cursor:pointer;\" @click=\"viewHandle\"></i>\n          </el-tooltip>\n        </p>\n      </template>\n    </title-page-header>\n    <div class=\"db-body\">\n      <div class=\"left\"></div>\n      <div class=\"right\" v-if=\"designShow\">\n        <htmlDesign v-if=\"activeType == 'document_html'\" :content=\"content\" :rowData=\"rowData\" @contetnChange=\"contetnChange\"></htmlDesign>\n        <excelDesign ref=\"sheetNode\" v-if=\"activeType == 'document_xlsx'\" :content=\"content\" :rowData=\"rowData\" @contetnChange=\"contetnChange\"></excelDesign>\n        <mapDesign ref=\"mapNode\" v-if=\"activeType == 'document_map'\" :content=\"content\" :rowData=\"rowData\" @contetnChange=\"contetnChange\"></mapDesign>\n        <flowDesign ref=\"flowNode\" v-if=\"activeType == 'document_flow'\" :content=\"content\" :rowData=\"rowData\" @contetnChange=\"contetnChange\"></flowDesign>\n      </div>\n    </div>\n    <el-dialog\n      :class=\"{'hide-header-dialog': dialogType == 'preview'}\"\n      v-if=\"viewVisible\"\n      :visible.sync=\"viewVisible\"\n      :fullscreen=\"dialogType == 'preview' ? true : false\"\n      append-to-body\n      :before-close=\"viewClose\">\n      <viewContainer v-if=\"dialogType == 'preview'\" :type=\"activeType\" :content=\"viewString\"></viewContainer>\n      <div class=\"viewlog-history\" v-if=\"dialogType == 'listLog'\">\n        <el-tabs v-model=\"activeName\" @tab-click=\"tabClick\">\n          <el-tab-pane label=\"浏览记录\" name=\"view\">\n            <jvs-table :option=\"viewTableOption\" :data=\"viewTableData\"></jvs-table>\n          </el-tab-pane>\n          <el-tab-pane label=\"文档历史版本\" name=\"history\">\n            <jvs-table :option=\"historyTableOption\" :data=\"historyTableData\"></jvs-table>\n          </el-tab-pane>\n        </el-tabs>\n      </div>\n    </el-dialog>\n  </div>\n</template>\n<script>\nimport mapDesign from './map/index'\nimport htmlDesign from './html/index'\nimport excelDesign from './excel/index'\nimport flowDesign from './flow/index'\nimport viewContainer from './show'\nimport {saveContent, preview, changeStatus, editLib} from './api'\n\nimport viewlog from '@/views/my/icon/操作记录.png'\nimport hislog from '@/views/my/icon/历史记录.png'\nimport userIcon from '@/views/my/icon/成员管理.png'\nimport lock from '@/views/my/icon/锁定.png'\nimport share from '@/views/my/icon/分享.png'\nimport save from '@/views/my/icon/保存.png'\nimport back from '@/views/my/icon/返回.png'\nexport default {\n  components: {\n    htmlDesign, viewContainer,excelDesign,mapDesign,flowDesign\n  },\n  props: {\n    rowData: {\n      type: Object\n    }\n  },\n  data() {\n    return {\n      showUser: false, // 管理人员\n      user_list: [\n        {icon: \"el-icon-folder\", name: \"smileforlast\", info: \"自己\"},\n        {icon: \"el-icon-document\", name: \"smileforlast\", info: \"正在编辑中\"},\n        {icon: \"el-icon-notebook-2\", name: \"smileforlast\", info: \"\"},\n        {icon: \"icon-liucheng11\", name: \"smileforlast\", type: \"\"},\n        {icon: \"icon-liucheng\", name: \"smileforlast\", info: \"\"}\n      ],\n      enableInput: false,\n      activeType: \"\", // 当前文档类型\n      viewString: \"\", // 预览的字符串数据\n      viewVisible: false,\n      dialogType: \"\", // 弹框类型\n      activeName: \"view\", // 浏览记录  文档历史版本\n      viewTableData: [], // 浏览记录\n      viewTableOption: {\n        addBtn: false,\n        menu: false,\n        column: [\n          {\n            label: \"\",\n            prop: \"\"\n          }\n        ]\n      },\n      historyTableData: [], // 历史版本\n      historyTableOption: {\n        addBtn: false,\n        menu: false,\n        column: [\n          {\n            label: \"\",\n            prop: \"\"\n          }\n        ]\n      },\n      disabledSave: false, // 是否可以保存\n      content: \"\",\n      designShow: false,\n      toolIcon: {\n        viewlog: viewlog,\n        hislog: hislog,\n        userIcon: userIcon,\n        lock: lock,\n        share: share,\n        save: save,\n        back: back\n      }\n    }\n  },\n  methods: {\n    handleInput(){\n      if(this.rowData.name==\"\"){\n        this.enableInput=true;\n        this.renameHandle()\n      }else{\n        this.enableInput=false;\n        this.renameHandle()\n      }\n    },\n    close () {\n      this.changeStatusHandle(false)\n      this.$emit('close', true)\n    },\n    // 预览\n    viewHandle () {\n      switch (this.activeType) {\n        case 'document_html':\n          if(this.viewString==''){\n            this.viewString=this.content\n          }\n          break;\n        case 'document_xlsx':\n          this.viewString=JSON.parse(this.viewString)\n          break;\n        case 'document_map':\n          let viewdata=this.$refs.mapNode.mind.getAllDataString()\n          this.viewString=JSON.parse(viewdata)\n          break;\n        case 'document_flow':\n          let viewdata1=this.$refs.flowNode.getVal()\n          this.viewString=JSON.parse(viewdata1)\n          break;\n        default:\n          break;\n      }\n      // if(this.activeType == 'document_xlsx'){\n      //   if(typeof(this.viewString)=='string'){\n      //     this.viewString=JSON.parse(this.viewString)\n      //   }\n      // }else if(this.activeType == 'document_map'){\n      //   this.viewString=this.$refs.mapNode.mind.getAllDataString()\n      //   if(typeof(this.viewString)=='string'){\n      //     this.viewString=JSON.parse(this.viewString)\n      //   }\n      // }\n      // console.log(this.viewString,\"66666666666666666\")\n      this.dialogType = 'preview'\n      this.viewVisible = true\n    },\n    // 富文本内容change html\n    contetnChange (str) {\n      if(this.rowData.type=='document_xlsx'){\n        this.viewString = JSON.stringify(str)\n      }else{\n        this.viewString = str\n      }\n    },\n    // 关闭预览\n    viewClose () {\n      // console.log(this.$refs.flowNode.getVal(),'qqqqqqqqq')\n      if(this.rowData.type=='document_xlsx'){\n        this.$refs.sheetNode.content=this.viewString\n        this.$refs.sheetNode.cj();\n      }\n      if(this.rowData.type=='document_map'){\n        this.$refs.mapNode.content=this.viewString\n        this.$refs.mapNode.cj();\n      }\n      this.viewVisible = false\n      // console.log(this.$refs.flowNode.getVal(),'wwwwwwwwwwww')\n    },\n    // 游览记录  文档历史版本\n    viewHistory (type) {\n      this.dialogType = 'listLog'\n      this.activeName = type\n      this.viewVisible = true\n    },\n    tabClick (tab) {\n      this.activeName = tab.name\n    },\n    // 保存\n    saveHandle () {\n      if(this.activeType == 'document_map'){\n        this.viewString=this.$refs.mapNode.mind.getAllDataString()\n      }\n      if(this.activeType == 'document_flow'){\n        // console.log(this.$refs.flowNode.getVal())\n        this.viewString=this.$refs.flowNode.getVal()\n      }\n      if(!this.disabledSave) {\n        saveContent(this.rowData.id, {content: this.viewString}).then(res => {\n          if(res.data.code == 0) {\n            this.$message.success(\"保存成功\")\n          }\n        })\n      }\n    },\n    // 拉取数据\n    getData () {\n      preview(this.rowData.id).then(res => {\n        if(res.data.code == 0 && res.data.data) {\n          if(res.data.data.content && res.data.data.content.startsWith(\"{\")) {\n            let resData=JSON.parse(res.data.data.content).content\n            // console.log(resData)\n            if(resData.startsWith(\"[\")){\n              this.content = JSON.parse(resData)\n              // console.log('1')\n            }else if(resData.startsWith(\"{\")){\n              this.content = JSON.parse(resData)\n              // console.log('2')\n            }else{\n              this.content = resData\n            }\n          }else{\n            this.content = \"\"\n          }\n          if(res.data.data.type == \"read\") {\n            this.disabledSave = true\n          }else{\n            this.disabledSave = false\n          }\n        }\n        this.designShow = true\n      })\n    },\n    // 编辑状态切换\n    changeStatusHandle(bool) {\n      changeStatus(this.rowData.id, bool).then(res => {\n        if(res.data.code == 0) {\n          // this.$messge.success(\"编辑状态\")\n          // this.disabledSave = false\n        }\n      })\n    },\n    // 重命名\n    renameHandle () {\n      editLib(this.rowData).then(res => {\n        if(res.data.code == 0) {\n          this.$message.success(\"重命名成功\")\n        }\n      })\n    }\n  },\n  created () {\n    this.changeStatusHandle(true)\n    this.activeType = this.rowData.type\n    this.getData()\n  }\n}\n</script>\n<style lang=\"scss\" scoped>\n.doc-lib-box{\n  // padding: 0 8px;\n  box-sizing: border-box;\n  height: 100%;\n  .db-body{\n    margin-top: 10px;\n    background-image: url('../../../src/styles/loading.gif');\n    background-repeat: no-repeat;\n    background-position: center;\n    //background-size: 450px 360px;\n    background-size: 300px 240px;\n    display: flex;\n    height: calc(100% - 50px);\n    .left{}\n    .right{\n      flex: 1;\n      width: 100%;\n      height: 100%;\n      display: flex;\n      justify-content: center;\n      background: #F7F7FA;\n      // padding-top: 10px;\n      box-sizing: border-box;\n    }\n  }\n}\n.base-type-list{\n  padding: 0;\n  margin: 0;\n  li{\n    display: flex;\n    align-items: center;\n    margin: 0;\n    margin-bottom: 10px;\n    cursor: pointer;\n    padding: 5px 10px;\n    i{\n      margin-right: 10px;\n    }\n  }\n  li:hover{\n    background: #F5F7FA;\n  }\n  li:nth-last-of-type(1) {\n    margin-bottom: 0;\n  }\n}\n</style>\n<style lang=\"scss\">\n.hide-header-dialog{\n .el-dialog__header{\n   padding: 0;\n }\n .el-dialog__body{\n  height: 100%;\n  padding: 30px 20px 0 20px;\n }\n}\n.title-page-header{\n  margin-top:0px;\n}\n.ant-modal-wrap{\n    z-index: 9999;\n}\n.lt{\n  width: 38px!important;\n}\n.le5le-topology .menus .back{\n    display: none;\n}\n.le5le-topology .menus>div>div:first-child,.le5le-topology .menus>div>div:last-child{\n    display: none;\n}\n.le5le-topology .menus>div{\n  display: flex;\n  justify-content: center!important;\n}\n.le5le-topology .materials .navs .nav-tab span:first-child{\n    display: none;\n}\n.le5le-topology .materials .navs .nav-tab span:last-child{\n    display: none;\n}\niframe{\n  width: 100%;\n  min-height: 500px;\n}\n</style>\n"
  },
  {
    "path": "src/components/doc-lib/map/index.vue",
    "content": "<template>\n  <div class=\"outer\">\n    <div id=\"map\" style=\"width: 1000px; height: 500px\"></div>\n  </div>\n</template>\n\n<script>\nimport MindElixir, { E } from \"mind-elixir\";\nexport default {\n  name: \"Map\",\n  props: {\n    content: {\n      // type: Object,\n      default: () => {\n        return {};\n      },\n    },\n  },\n  data() {\n    return {\n      mind:{},\n    };\n  },\n  mounted() {\n    this.cj()\n  },\n  methods: {\n    cj(){\n      var options={\n        locale: 'zh_CN',\n        el: \"#map\",\n        direction: MindElixir.SIDE,\n        data: MindElixir.new('new topic'), // 也可以把 getDataAll 得到的数据初始化\n        draggable: true, // 启用拖动 default true\n        contextMenu: true, // 启用右键菜单 default true\n        toolBar: true, // 启用工具栏 default true\n        nodeMenu: true, // 启用节点菜单 default true\n        keypress: true, // 启用快捷键 default true\n      };\n      if(this.content==''){\n        this.mind = new MindElixir(options);\n        this.mind.init()\n        E(\"node-id\");\n        this.mind.bus.addListener('operation', operation => {\n          if(this.mind.inputDiv){\n            if(operation.obj.root){\n              this.mind.inputDiv.style.marginTop = \"10px\"\n              this.mind.inputDiv.style.outline = \"3px solid #000\"\n            }else{\n              this.mind.inputDiv.style.margin = 0\n              this.mind.inputDiv.style.outline = \"3px solid #000\"\n            }\n          }\n        })\n      }else{\n        this.mind = new MindElixir({\n          ...options,\n          data: this.content,\n        });\n        this.mind.init()\n        E(\"node-id\");\n        this.mind.bus.addListener('operation', operation => {\n          if(this.mind.inputDiv){\n            if(operation.obj.root){\n              this.mind.inputDiv.style.marginTop = \"10px\"\n              this.mind.inputDiv.style.outline = \"3px solid #000\"\n            }else{\n              this.mind.inputDiv.style.margin = 0\n              this.mind.inputDiv.style.outline = \"3px solid #000\"\n            }\n          }\n        })\n      }\n    }\n  }\n};\n</script>\n\n<style  lang=\"scss\" scoped>\n.outer {\n  position: relative;\n  width: 100%;\n  // margin: 50px;\n}\n#map {\n  height: 100%!important;\n  width: 100%!important;\n  overflow: auto;\n}\n</style>"
  },
  {
    "path": "src/components/doc-lib/show.vue",
    "content": "<template>\n  <div class=\"doc-lib-show preview-editor-context\">\n    <topology v-if=\"type == 'document_flow'\" preview=\"true\" :data=\"data\" id=\"previewTrue\" />\n    <div v-if=\"type == 'document_html'\" v-html=\"content\"></div>\n    <div class=\"outer1\" v-if=\"type == 'document_map'\">\n      <div id=\"map1\" style=\"width: 1000px; height: 500px\"></div>\n    </div>\n    <div class=\"hello1\" v-if=\"type == 'document_xlsx'\">\n      <div style=\"position: absolute; top: 0\">\n        <!-- <input style=\"font-size: 16px\" type=\"file\" @change=\"uploadExcel\" /> -->\n      </div>\n      <div\n        id=\"luckysheet1\"\n        style=\"\n          margin: 0px;\n          padding: 10px;\n          position: absolute;\n          width: 100%;\n          left: 0px;\n          top: 40px;\n          bottom: 0px;\n        \"\n      ></div>\n\n      <div\n        v-show=\"isMaskShow1\"\n        style=\"\n          position: absolute;\n          z-index: 1000000;\n          left: 0px;\n          top: 0px;\n          bottom: 0px;\n          right: 0px;\n          background: rgba(255, 255, 255, 0.8);\n          text-align: center;\n          font-size: 40px;\n          align-items: center;\n          justify-content: center;\n          display: flex;\n        \"\n      >\n        Downloading\n      </div>\n    </div>\n  </div>\n</template>\n<script>\nimport MindElixir, { E } from \"mind-elixir\";\nimport Vue from 'vue';\nimport Topology from 'topology-vue';\nVue.use(Topology);\nexport default {\n  props: {\n    type: {\n      type: String\n    },\n    content: {\n      // type: Object,\n      default: () => {\n        return {};\n      },\n    },\n  },\n  mounted() {\n    this.cj();\n  },\n  data() {\n    return {\n      isMaskShow1: false,\n      data:{}\n    }\n  },\n   methods: {\n    cj() {\n      switch (this.type) {\n        case 'document_xlsx':\n            var options={\n            container: \"luckysheet1\", //容器的ID\n            title: \"bi\", // 工作簿名称\n            lang: \"zh\", // 设定表格语言 国际化设置，允许设置表格的语言，支持中文(\"zh\")和英文(\"en\")\n            allowCopy: false, // 是否允许拷贝\n            showtoolbar: false, // 是否显示工具栏\n            showinfobar: false, // 是否显示顶部信息栏\n            showsheetbar: false, // 是否显示底部sheet页按钮\n            showstatisticBar: false, // 是否显示底部计数栏\n            sheetBottomConfig: false, // sheet页下方的添加行按钮和回到顶部按钮配置\n            allowEdit: false, // 是否允许前台编辑\n            enableAddRow: false, // 允许增加行\n            enableAddCol: false, // 允许增加列\n            userInfo: false, // 右上角的用户信息展示样式\n            showRowBar: false, // 是否显示行号区域\n            showColumnBar: false, // 是否显示列号区域\n            sheetFormulaBar: false, // 是否显示公式栏\n            enableAddBackTop: true,//返回头部按钮\n            rowHeaderWidth: 0,//纵坐标\n            columnHeaderHeight: 0,//横坐标\n            showstatisticBarConfig: {\n              count:false,\n              view:false,\n              zoom:false,\n            },\n            showsheetbarConfig: {\n              add: false, //新增sheet\n              menu: false, //sheet管理菜单\n              sheet: true, //sheet页显示\n            },\n            hook: {\n              cellMousedown:this.cellMousedown,//绑定鼠标事件\n            },\n            forceCalculation: false,//强制计算公式\n          }\n          if(this.content==''){\n            luckysheet.create(options);\n          }else{\n            luckysheet.create({\n              ...options,\n              data: this.content,\n            });\n          }\n          break;\n          case 'document_map':\n            var options={\n              locale: 'zh_CN',\n              el: \"#map1\",\n              direction: MindElixir.SIDE,\n              draggable: false, // 启用拖动 default true\n              contextMenu: false, // 启用右键菜单 default true\n              toolBar: false, // 启用工具栏 default true\n              nodeMenu: false, // 启用节点菜单 default true\n              keypress: false, // 启用快捷键 default true\n              editable: false\n            }\n            if(this.content==''){\n              let mind = new MindElixir(options);\n              mind.init()\n              E(\"node-id\");\n            }else{\n              let mind = new MindElixir({\n                ...options,\n                data: MindElixir.new('new topic'),\n                data: this.content,\n              });\n              mind.init()\n              E(\"node-id\");\n            }\n          break;\n          case 'document_flow':\n            this.data=this.content\n          break;\n        default:\n          break;\n      }\n    },\n  },\n}\n</script>\n<style lang=\"scss\" scoped>\n/* table 样式 */\n.preview-editor-context {\n  height: 100%;\n  padding-top:20px;\n  table {\n    border-top: 1px solid #ccc;\n    border-left: 1px solid #ccc;\n   \n  }\n  table td,\n  table th {\n    border-bottom: 1px solid #ccc;\n    border-right: 1px solid #ccc;\n    padding: 3px 5px;\n    height: 29px;\n  }\n  table th {\n    border-bottom: 2px solid #ccc;\n    text-align: center;\n    background-color: rgb(241,241,241);\n  }\n\n  /* blockquote 样式 */\n  blockquote {\n    display: block;\n    border-left: 8px solid #d0e5f2;\n    padding: 5px 10px;\n    margin: 10px 0;\n    line-height: 1.4;\n    font-size: 100%;\n    background-color: #f1f1f1;\n  }\n\n  /* code 样式 */\n  code {\n    display: inline-block;\n    *display: inline;\n    *zoom: 1;\n    background-color: #f1f1f1;\n    border-radius: 3px;\n    padding: 3px 5px;\n    margin: 0 3px;\n  }\n  pre code {\n    display: block;\n  }\n\n  /* ul ol 样式 */\n  ul, ol {\n    margin: 10px 0 10px 20px;\n  }\n}\nh3 {\n  margin: 40px 0 0;\n}\nul {\n  list-style-type: none;\n  padding: 0;\n}\nli {\n  display: inline-block;\n  margin: 0 10px;\n}\na {\n  color: #42b983;\n}\n.outer1 {\n  position: relative;\n  width: 100%;\n  height: 100%;\n  // margin: 50px;\n}\n#map1 {\n  height: 100%!important;\n  width: 100%!important;\n  overflow: auto;\n}\n</style>"
  },
  {
    "path": "src/components/error-page/404.vue",
    "content": "<template>\n  <div class=\"error404\">\n    <div class=\"error404-body-con\">\n      <el-card class=\"box-card page-404-box\">\n        <!-- <div class=\"error404-body-con-title\">4\n          <span>0</span>4</div>\n        <p class=\"error404-body-con-message\">YOU&nbsp;&nbsp;LOOK&nbsp;&nbsp;LOST</p> -->\n        <!-- <div class=\"error404-btn-con\">\n          <el-button @click=\"goHome\" size=\"large\" style=\"width: 200px;\" type=\"text\">返回首页</el-button>\n          <el-button @click=\"backPage\" size=\"large\" style=\"width: 200px;margin-left: 40px;\" type=\"primary\">返回上一页</el-button>\n        </div> -->\n      </el-card>\n    </div>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: \"Error404\",\n  methods: {\n    backPage() {\n      this.$router.go(-1);\n    },\n    goHome() {\n      this.$router.push({\n        path: \"/\"\n      });\n    }\n  }\n};\n</script>\n<style lang=\"scss\" scoped>\n@keyframes error404animation {\n  0% {\n    transform: rotateZ(0deg);\n  }\n  20% {\n    transform: rotateZ(-60deg);\n  }\n  40% {\n    transform: rotateZ(-10deg);\n  }\n  60% {\n    transform: rotateZ(50deg);\n  }\n  80% {\n    transform: rotateZ(-20deg);\n  }\n  100% {\n    transform: rotateZ(0deg);\n  }\n}\n.error404 {\n  position: relative;\n  width: 100%;\n  height: 100%;\n  &-body-con {\n    width: 450px;\n    height: 300px;\n    position: absolute;\n    left: 50%;\n    top: 50%;\n    transform: translate(-50%, -50%);\n    &-title {\n      text-align: center;\n      font-size: 240px;\n      font-weight: 700;\n      color: #2d8cf0;\n      height: 260px;\n      line-height: 260px;\n      margin-top: 40px;\n      span {\n        display: inline-block;\n        color: #19be6b;\n        font-size: 230px;\n        animation: error404animation 3s ease 0s infinite alternate;\n      }\n    }\n    &-message {\n      display: block;\n      text-align: center;\n      font-size: 30px;\n      font-weight: 500;\n      letter-spacing: 12px;\n      color: #dddde2;\n    }\n    .el-card {\n      background-image: url(\"../error-page/404.png\");\n      height: 100%;\n      background-repeat: no-repeat;\n      background-size: contain;\n    }\n  }\n  &-btn-con {\n    text-align: center;\n    padding: 20px 0;\n    margin-bottom: 40px;\n  }\n  .error404-body-con{\n    width: 384px;\n    height: 316px;\n    .box-card {\n      background-color: transparent;\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "src/components/iframe/main.vue",
    "content": "<template>\n  <div>\n    <basic-container>\n      <!-- 顶部菜单nav -->\n      <menuNav />\n      <div class=\"outer-container\">\n        <iframe id=\"mainIframe\" v-if=\"$route.query.src\" :src=\"src\" class=\"iframe\" ref=\"iframe\"></iframe>\n        <iframe id=\"mainIframe\" v-else :src=\"urlPath\" class=\"iframe\" ref=\"iframe\"></iframe>\n      </div>\n    </basic-container>\n    </div>\n</template>\n\n<script>\nimport { mapGetters } from \"vuex\";\nimport { getStore } from \"@/util/store.js\";\nimport NProgress from \"nprogress\"; // progress bar\nimport \"nprogress/nprogress.css\"; // progress bar style\nimport menuNav from '@/page/main/index/top/menuNav'\nexport default {\n  name: \"home\",\n  data() {\n    return {\n      urlPath: this.getUrlPath(), //iframe src 路径\n      src: \"\"\n    };\n  },\n  created() {\n    NProgress.configure({ showSpinner: false });\n    // 监听子页面传值\n    let _this = this\n    window.addEventListener('message',function(e){\n      if(e.data) {\n       if(e.data.command == 'loginOut') {\n          sessionStorage.clear()\n          localStorage.clear()\n          _this.$openUrl('/#/index', '_self')\n       }\n        if(e.data.command == 'fresh') {\n          location.reload()\n        }\n      }\n    },false);\n  },\n  mounted() {\n    this.load();\n    this.resize();\n  },\n  props: [\"routerPath\"],\n  watch: {\n    $route: function() {\n      this.load();\n    },\n    routerPath: function() {\n      // 监听routerPath变化，改变src路径\n      this.urlPath = this.getUrlPath();\n    }\n  },\n  components: {\n    ...mapGetters([\"screen\"]),\n    menuNav\n  },\n  methods: {\n    created() {},\n    // 显示等待框\n    show() {\n      NProgress.start();\n    },\n    // 隐藏等待狂\n    hide() {\n      NProgress.done();\n    },\n    // 加载浏览器窗口变化自适应\n    resize() {\n      window.onresize = () => {\n        this.iframeInit();\n      };\n    },\n    // 加载组件\n    load() {\n      this.show();\n      var flag = true; //URL是否包含问号\n      if (this.$route.query.src.indexOf(\"?\") == -1) {\n        flag = false;\n      }\n      var list = [];\n      for (var key in this.$route.query) {\n        if (key != \"src\" && key != \"name\") {\n          list.push(`${key}= this.$route.query[key]`);\n        }\n      }\n      list = list.join(\"&\").toString();\n      if (flag) {\n        this.$route.query.src = `${this.$route.query.src}${\n          list.length > 0 ? `&list` : \"\"\n        }`;\n      } else {\n        this.$route.query.src = `${this.$route.query.src}${\n          list.length > 0 ? `?list` : \"\"\n        }`;\n      }\n      const jti = getStore({\n        name: \"jti\",\n      });\n      if(this.$route.query.src.indexOf('?') != -1){\n         this.src = this.$route.query.src+this.$route.hash;\n      }else{\n         this.src = this.$route.query.src+this.$route.hash;\n      }\n      if(this.src.includes('/mgr')) {\n        let str = this.src\n        str = str.replace(/mgr\\/\\#/g, 'mgr')\n        this.src = str\n      }\n      //超时5s自动隐藏等待框，加强用户体验\n      let time = 5;\n      const timeFunc = setInterval(() => {\n        time--;\n        if (time == 0) {\n          this.hide();\n          clearInterval(timeFunc);\n        }\n      }, 1000);\n      this.iframeInit();\n      $('#mainIframe').attr('src', this.src)\n    },\n    //iframe窗口初始化\n    iframeInit() {\n      const iframe = this.$refs.iframe;\n      const clientHeight =\n        document.documentElement.clientHeight - (screen > 1 ? 200 : 130);\n      // iframe.style.height = `${clientHeight}px`\n      // iframe.style.height = `100%`;\n      if (iframe && iframe.attachEvent) {\n        iframe.attachEvent(\"onload\", () => {\n          this.hide();\n        });\n      } else {\n        iframe.onload = () => {\n          this.hide();\n        };\n      }\n      this.$forceUpdate()\n    },\n    getUrlPath: function() {\n      //获取 iframe src 路径\n      const token = getStore({\n        name: \"access_token\",\n        debug: true\n      });\n      //请求携带token\n      let url = window.location.href;\n      //  + \"%3Ftoken%3D\"+token.content;\n      url = url.replace(\"/myiframe\", \"\");\n      return url;\n    }\n  }\n};\n</script>\n\n<style lang=\"scss\">\n.iframe {\n  width: 100%;\n  height: calc(100% - 16px);\n  border: none;\n  overflow-x: hidden;\n  overflow-y: scroll;\n}\n.outer-container {\n  position: relative;\n  width: 100%;\n  height: calc(100% - 30px);\n  background: #F6F6F6;\n  box-sizing: border-box;\n  padding: 8px 10px;\n  overflow: hidden;\n}\n</style>\n"
  },
  {
    "path": "src/components/index.js",
    "content": "import Vue from 'vue'\nimport basicContainer from './basic-container/main'\nimport jvsForm from './basic-assembly/form'\nimport jvsTable from './basic-assembly/table'\nimport jvsTab from './basic-assembly/tab'\nimport jvsButton from './basic-assembly/button'\nimport jvsFormLevel from './basic-assembly/levelForm'\nimport jvsFromStep from './basic-assembly/stepForm'\nimport titlePageHeader from './page-header/titlePageHeader'\n\n// 注册全局容器\nVue.component('basicContainer', basicContainer)\nVue.component('jvs-form', jvsForm)\nVue.component('jvs-table', jvsTable)\nVue.component('jvs-tab', jvsTab)\nVue.component('jvs-button', jvsButton)\nVue.component('jvs-form-level', jvsFormLevel)\nVue.component('jvs-form-step', jvsFromStep)\nVue.component('title-page-header', titlePageHeader)"
  },
  {
    "path": "src/components/page-footer/FooterContent.vue",
    "content": "<template>\n  <div class=\"footer-box\">\n    <div class=\"content-wrapper wrapped\">\n      <div class=\"link-box\">\n        <div class=\"link-map\">\n          <div class=\"link-item\">\n            <div class=\"link-item-img\">\n              <img class=\"logo\" src=\"@/views/index/img/logo.png\" alt=\"\" />\n              <img class=\"code-img\" src=\"@/views/common/img/code.png\" alt=\"\" />\n            </div>\n          </div>\n          <div class=\"link-item\" style=\"margin-right: 200px\">\n            <div class=\"link-title\">\n              公司信息\n            </div>\n            <a target=\"_blank\" style=\"margin-bottom: 0\">团队介绍</a>\n            <div class=\"company-info\">\n              <ul>\n                <li>技术支持：13983607003</li>\n              </ul>\n            </div>\n          </div>\n          <div class=\"link-item\">\n            <div class=\"link-title\">\n              产品\n            </div>\n            <a v-for=\"(item, key) in productList\" :href=\"item.url\" :key=\"key\" target=\"_blank\">{{ item.label }}</a>\n          </div>\n          <div class=\"link-item\">\n            <div class=\"link-title\">\n              开发者\n            </div>\n            <a v-for=\"(item, key) in developers\" :href=\"item.url\" :key=\"key\" target=\"_blank\">{{ item.label }}</a>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: \"FooterContent\",\n  data () {\n    return {\n      productList: [\n        { label: '文档', url: 'http://knowledge.bctools.cn/' },\n        { label: '会议', url: 'https://meeting.bctools.cn/' },\n        { label: '邮件', url: 'http://mail.bctools.cn/' },\n        { label: '开发服务平台', url: 'http://www.bctools.cn' }\n      ],\n      developers: [\n        { label: '开放平台', url: 'http://www.bctools.cn' },\n        { label: '开源地址', url: 'https://gitee.com/software-minister/jvs-knowledge-lib' },\n        { label: '使用文档', url: 'http://knowledge.bctools.cn/' },\n      ],\n      companyList: [\n        { label: '团队介绍' },\n        { label: '技术支持：18996331515（微信、电话）' }\n      ],\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n.footer-box{\n  position: relative;\n  width: 100%;\n  height: 320px;\n  font-size: 13px;\n  line-height: 18px;\n  font-weight: 400;\n  letter-spacing: normal;\n  background-color: #282F3C;\n  color: #ffffff;\n  .content-wrapper{\n    display: flex;\n    flex-direction: column;\n    .link-box{\n      display: flex;\n      padding: 40px 0;\n      .link-map{\n        //height: 200px;\n        display: inline-flex;\n        justify-content: space-around;\n        width: 100%;\n        .link-item{\n          display: flex;\n          flex-direction: column;\n          min-width: 180px;\n          margin-right: 220px;\n          .yqCode{\n            height: 160px;\n          }\n          .company-info{\n            ul{\n              padding: 0;\n              li{\n                //opacity: 0.6;\n                color: #868BA1;\n                line-height: 26px;\n              }\n            }\n          }\n          .link-title{\n            font-size: 16px;\n            line-height: 22px;\n            letter-spacing: normal;\n            display: flex;\n            //font-weight: 800;\n            margin-bottom: 12px;\n          }\n          a{\n            color: #868BA1;\n            margin-bottom: 12px;\n            font-size: 13px;\n            line-height: 20px;\n            font-weight: 400;\n            letter-spacing: normal;\n            text-decoration: none;\n            //opacity: 0.6;\n            cursor: pointer;\n          }:hover{\n          opacity: 1;\n                     }\n        }:last-child{\n        margin-right: 0;\n                 }\n        .link-item-img{\n          text-align: center;\n          .logo{\n            //height: 80px;\n            width: 180px;\n            margin-bottom: 10px;\n          }\n          .code-img{\n            width: 150px;\n          }\n        }\n      }\n    }\n    .record-number{\n      display: flex;\n      //justify-content: space-between;\n      flex-direction: row-reverse;\n      padding: 40px 0;\n      margin-right: 60px;\n      .content{\n        //opacity: 0.6;\n        color: #868BA1;\n      }\n    }\n  }\n  .wrapped{\n    margin: 0 auto;\n    //width: 100%;\n    max-width: 1380px;\n    padding-left: 12px;\n    padding-right: 12px;\n  }\n  .footer-info{\n    position: absolute;\n    bottom: 0;\n    border-top: 1px solid #868BA1;\n    width: 100%;\n    .info-content{\n      color: #868BA1;\n      display: flex;\n      align-items: center;\n      justify-content: space-around;\n      height: 60px;\n      margin: 0 auto;\n      max-width: 1380px;\n      padding-left: 12px;\n      padding-right: 12px;\n      .info{\n        min-width: 150px;\n        margin-right: 80px;\n      }\n      .info-text{\n        min-width: 150px;\n        margin-right: 220px;\n      }\n      .logo{\n        height: 40px;\n      }\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "src/components/page-header/PageHeader.vue",
    "content": "<template>\n  <el-card :body-style=\"{padding: title ? '10px 0' : 0}\" :class=\"{'header-top-open': show, 'header-top-close': !show}\">\n      <div :class=\"{'pageheader-top':true, 'pageheader-top-open': show}\" v-if=\"title\">\n        <div class=\"pageheader-line\" @click=\"openClose\"></div>\n        <span class=\"title\" @click=\"openClose\">{{title}}</span>\n      </div>\n      <slot></slot>\n  </el-card>\n</template>\n\n<script>\nexport default {\n  name: \"PageHeader\",\n  props:{\n    title: {\n      type:String\n    }\n  },\n  data () {\n    return {\n      show: true\n    }\n  },\n  methods: {\n    openClose () {\n      let bool = this.show\n      // this.show = !bool\n   }\n  }\n};\n</script>\n<style lang=\"scss\" scoped>\n.pageheader-top{\n    display: flex;\n    justify-content: flex-start;\n    align-items:center;\n    .pageheader-line{\n        width: 4px;\n        height: 20px;\n        background: #4B90EE;\n        border-radius: 2px;\n        cursor: pointer;\n    }\n    .title{\n        font-size: 18px;\n        font-family: Source Han Sans CN;\n        font-weight: 600;\n        color: #222222;\n        margin-left: 14PX;\n        cursor: pointer;\n    }\n}\n.header-top-close{\n  height: 44px;\n  .pageheader-line{\n    width: 20px;\n    height: 4px;\n  }\n}\n</style>\n"
  },
  {
    "path": "src/components/page-header/titlePageHeader.vue",
    "content": "<template>\n  <div :class=\"{ 'title-page-header': true, 'header-top-open': show, 'header-top-close': !show }\">\n    <div :class=\"{ 'pageheader-top': true, 'pageheader-top-open': show }\">\n      <div class=\"left-box\">\n        <div class=\"pageheader-line\" @click=\"openClose\"></div>\n        <span class=\"title\" @click=\"openClose\">{{ title }}</span>\n        <slot name=\"left\"></slot>\n      </div>\n      <div class=\"right-box\">\n        <slot name=\"right\"></slot>\n        <p v-if=\"hassave\">\n          <el-tooltip effect=\"dark\" content=\"保存\" placement=\"top\">\n            <i v-if=\"saveLoading\" class=\"el-icon-loading\" style=\"font-size:22px;color:#353535;\"></i>\n            <img v-else :src=\"saveIcon\" alt=\"\" @click=\"saveHandle\">\n          </el-tooltip>\n        </p>\n        <p v-if=\"hasclose\" class=\"right-icon-close\">\n          <img :src=\"closeIcon\" alt=\"\" @click=\"closeHandle\">\n        </p>\n      </div>\n    </div>\n    <slot name=\"bottom\"></slot>\n  </div>\n</template>\n\n<script>\nimport saveicon from \"@/const/img/保存.png\"\nimport closeicon from \"@/const/img/关闭.png\"\nexport default {\n  name: \"PageHeader\",\n  props: {\n    title: {\n      type: String\n    },\n    hassave: {\n      type: Boolean,\n      default: true\n    },\n    hasclose: {\n      type: Boolean,\n      default: true\n    },\n    needLoading: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data () {\n    return {\n      show: true,\n      saveIcon: saveicon,\n      closeIcon: closeicon,\n      saveLoading: false,\n      timer: null\n    }\n  },\n  methods: {\n    openClose () {\n      let bool=this.show\n      // this.show = !bool\n    },\n    saveHandle () {\n      this.$emit(\"save\", true)\n      if(this.needLoading) {\n        this.saveLoading = true\n        if(this.timer) {\n          clearTimeout(this.timer)\n        }\n        let _this =  this\n        this.timer = setTimeout(() => {\n          _this.saveLoading = false\n        }, 2000)\n      }\n    },\n    closeHandle () {\n      this.$emit(\"close\", true)\n    }\n  }\n};\n</script>\n<style lang=\"scss\" scoped>\n.pageheader-top {\n  display: flex;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  width: 100%;\n  .pageheader-line {\n    width: 4px;\n    height: 22px;\n    background: #3471ff;\n    border-radius: 2px;\n    cursor: pointer;\n    margin: 0 20px;\n  }\n  .title {\n    font-size: 18px;\n    font-weight: 600;\n    font-family: SourceHanSansCN-Regular;\n    color: #333333;\n    cursor: pointer;\n    margin-right: 20px;\n  }\n  .left-box, .right-box {\n    display: flex;\n    align-items: center;\n    font-size: 14px;\n  }\n  .right-box{\n    p{\n      margin: 0;\n      padding: 0 17px;\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      border-right: 1px solid #DCDFE6;\n      img{\n        display: block;\n        width: 20px;\n        height: 20px;\n        cursor: pointer;\n      }\n    }\n    .right-icon-close{\n      img{\n        width: 18px;\n        height: 18px;\n      }\n    }\n    p:nth-last-of-type(1) {\n      border-right: 0;\n    }\n  }\n}\n.header-top-close {\n  height: 44px;\n  .pageheader-line {\n    width: 20px;\n    height: 4px;\n  }\n}\n</style>\n<style lang=\"scss\">\n.title-page-header {\n  height: 45px;\n  margin-top: 8px;\n  box-sizing: border-box;\n  background: #fff;\n  border-radius: 5px 5px 0 0 ;\n  display: flex;\n  align-items: center;\n}\n*::-webkit-scrollbar {\n  width: 4px;\n  height: 4px;\n}\n*::-webkit-scrollbar-thumb {\n  border-radius: 10px;\n  -webkit-box-shadow: inset 0 0 5px #dcdfe6, 0.2;\n  background: rgba(0,0,0,0.1);\n}\n*::-webkit-scrollbar-track {\n  -webkit-box-shadow: inset 0 0 5px #dcdfe6, 0.2;\n  border-radius: 0;\n  background: rgba(0,0,0,0.1);\n}\n</style>\n"
  },
  {
    "path": "src/config/env.js",
    "content": "// 配置编译环境和线上环境之间的切换\nconst env = process.env\nlet baseUrl = ''\nlet iconfontVersion = ['567566_qo5lxgtishg', '667895_v7uduh4zui', '2052824_mnq40bpm1w', '2514494_kvtmaqepi8f']\nlet iconfontUrl = `//at.alicdn.com/t/font_$key.css`\nlet codeUrl = `${window.location.origin}/code`\nlet actUrl = `${window.location.origin}/act/modeler.html?modelId=`\nif (env.NODE_ENV == 'development') {\n\n} else if (env.NODE_ENV == 'production') {\n\n} else if (env.NODE_ENV == 'test') {\n\n}\nexport {\n  baseUrl,\n  actUrl,\n  iconfontUrl,\n  iconfontVersion,\n  codeUrl,\n  env\n}\n"
  },
  {
    "path": "src/const/chinaArea.js",
    "content": "export const  areaList =\n[\n\t{\n\t\t\"code\": \"110000\",\n\t\t\"name\": \"北京市\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"110000\",\n\t\t\t\t\"name\": \"北京市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"110101\",\n\t\t\t\t\t\t\"name\": \"东城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"110102\",\n\t\t\t\t\t\t\"name\": \"西城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"110105\",\n\t\t\t\t\t\t\"name\": \"朝阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"110106\",\n\t\t\t\t\t\t\"name\": \"丰台区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"110107\",\n\t\t\t\t\t\t\"name\": \"石景山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"110108\",\n\t\t\t\t\t\t\"name\": \"海淀区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"110109\",\n\t\t\t\t\t\t\"name\": \"门头沟区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"110111\",\n\t\t\t\t\t\t\"name\": \"房山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"110112\",\n\t\t\t\t\t\t\"name\": \"通州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"110113\",\n\t\t\t\t\t\t\"name\": \"顺义区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"110114\",\n\t\t\t\t\t\t\"name\": \"昌平区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"110115\",\n\t\t\t\t\t\t\"name\": \"大兴区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"110116\",\n\t\t\t\t\t\t\"name\": \"怀柔区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"110117\",\n\t\t\t\t\t\t\"name\": \"平谷区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"110118\",\n\t\t\t\t\t\t\"name\": \"密云区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"110119\",\n\t\t\t\t\t\t\"name\": \"延庆区\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"120000\",\n\t\t\"name\": \"天津市\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"120000\",\n\t\t\t\t\"name\": \"天津市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"120101\",\n\t\t\t\t\t\t\"name\": \"和平区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"120102\",\n\t\t\t\t\t\t\"name\": \"河东区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"120103\",\n\t\t\t\t\t\t\"name\": \"河西区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"120104\",\n\t\t\t\t\t\t\"name\": \"南开区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"120105\",\n\t\t\t\t\t\t\"name\": \"河北区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"120106\",\n\t\t\t\t\t\t\"name\": \"红桥区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"120110\",\n\t\t\t\t\t\t\"name\": \"东丽区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"120111\",\n\t\t\t\t\t\t\"name\": \"西青区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"120112\",\n\t\t\t\t\t\t\"name\": \"津南区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"120113\",\n\t\t\t\t\t\t\"name\": \"北辰区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"120114\",\n\t\t\t\t\t\t\"name\": \"武清区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"120115\",\n\t\t\t\t\t\t\"name\": \"宝坻区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"120116\",\n\t\t\t\t\t\t\"name\": \"滨海新区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"120117\",\n\t\t\t\t\t\t\"name\": \"宁河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"120118\",\n\t\t\t\t\t\t\"name\": \"静海区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"120119\",\n\t\t\t\t\t\t\"name\": \"蓟州区\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"130000\",\n\t\t\"name\": \"河北省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"130100\",\n\t\t\t\t\"name\": \"石家庄市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130102\",\n\t\t\t\t\t\t\"name\": \"长安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130104\",\n\t\t\t\t\t\t\"name\": \"桥西区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130105\",\n\t\t\t\t\t\t\"name\": \"新华区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130107\",\n\t\t\t\t\t\t\"name\": \"井陉矿区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130108\",\n\t\t\t\t\t\t\"name\": \"裕华区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130109\",\n\t\t\t\t\t\t\"name\": \"藁城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130110\",\n\t\t\t\t\t\t\"name\": \"鹿泉区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130111\",\n\t\t\t\t\t\t\"name\": \"栾城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130121\",\n\t\t\t\t\t\t\"name\": \"井陉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130123\",\n\t\t\t\t\t\t\"name\": \"正定县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130125\",\n\t\t\t\t\t\t\"name\": \"行唐县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130126\",\n\t\t\t\t\t\t\"name\": \"灵寿县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130127\",\n\t\t\t\t\t\t\"name\": \"高邑县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130128\",\n\t\t\t\t\t\t\"name\": \"深泽县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130129\",\n\t\t\t\t\t\t\"name\": \"赞皇县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130130\",\n\t\t\t\t\t\t\"name\": \"无极县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130131\",\n\t\t\t\t\t\t\"name\": \"平山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130132\",\n\t\t\t\t\t\t\"name\": \"元氏县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130133\",\n\t\t\t\t\t\t\"name\": \"赵县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130181\",\n\t\t\t\t\t\t\"name\": \"辛集市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130183\",\n\t\t\t\t\t\t\"name\": \"晋州市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130184\",\n\t\t\t\t\t\t\"name\": \"新乐市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"130200\",\n\t\t\t\t\"name\": \"唐山市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130202\",\n\t\t\t\t\t\t\"name\": \"路南区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130203\",\n\t\t\t\t\t\t\"name\": \"路北区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130204\",\n\t\t\t\t\t\t\"name\": \"古冶区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130205\",\n\t\t\t\t\t\t\"name\": \"开平区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130207\",\n\t\t\t\t\t\t\"name\": \"丰南区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130208\",\n\t\t\t\t\t\t\"name\": \"丰润区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130209\",\n\t\t\t\t\t\t\"name\": \"曹妃甸区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130223\",\n\t\t\t\t\t\t\"name\": \"滦县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130224\",\n\t\t\t\t\t\t\"name\": \"滦南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130225\",\n\t\t\t\t\t\t\"name\": \"乐亭县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130227\",\n\t\t\t\t\t\t\"name\": \"迁西县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130229\",\n\t\t\t\t\t\t\"name\": \"玉田县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130281\",\n\t\t\t\t\t\t\"name\": \"遵化市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130283\",\n\t\t\t\t\t\t\"name\": \"迁安市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"130300\",\n\t\t\t\t\"name\": \"秦皇岛市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130302\",\n\t\t\t\t\t\t\"name\": \"海港区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130303\",\n\t\t\t\t\t\t\"name\": \"山海关区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130304\",\n\t\t\t\t\t\t\"name\": \"北戴河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130306\",\n\t\t\t\t\t\t\"name\": \"抚宁区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130321\",\n\t\t\t\t\t\t\"name\": \"青龙满族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130322\",\n\t\t\t\t\t\t\"name\": \"昌黎县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130324\",\n\t\t\t\t\t\t\"name\": \"卢龙县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"130400\",\n\t\t\t\t\"name\": \"邯郸市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130402\",\n\t\t\t\t\t\t\"name\": \"邯山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130403\",\n\t\t\t\t\t\t\"name\": \"丛台区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130404\",\n\t\t\t\t\t\t\"name\": \"复兴区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130406\",\n\t\t\t\t\t\t\"name\": \"峰峰矿区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130407\",\n\t\t\t\t\t\t\"name\": \"肥乡区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130408\",\n\t\t\t\t\t\t\"name\": \"永年区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130423\",\n\t\t\t\t\t\t\"name\": \"临漳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130424\",\n\t\t\t\t\t\t\"name\": \"成安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130425\",\n\t\t\t\t\t\t\"name\": \"大名县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130426\",\n\t\t\t\t\t\t\"name\": \"涉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130427\",\n\t\t\t\t\t\t\"name\": \"磁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130430\",\n\t\t\t\t\t\t\"name\": \"邱县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130431\",\n\t\t\t\t\t\t\"name\": \"鸡泽县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130432\",\n\t\t\t\t\t\t\"name\": \"广平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130433\",\n\t\t\t\t\t\t\"name\": \"馆陶县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130434\",\n\t\t\t\t\t\t\"name\": \"魏县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130435\",\n\t\t\t\t\t\t\"name\": \"曲周县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130481\",\n\t\t\t\t\t\t\"name\": \"武安市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"130500\",\n\t\t\t\t\"name\": \"邢台市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130502\",\n\t\t\t\t\t\t\"name\": \"桥东区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130503\",\n\t\t\t\t\t\t\"name\": \"桥西区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130521\",\n\t\t\t\t\t\t\"name\": \"邢台县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130522\",\n\t\t\t\t\t\t\"name\": \"临城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130523\",\n\t\t\t\t\t\t\"name\": \"内丘县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130524\",\n\t\t\t\t\t\t\"name\": \"柏乡县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130525\",\n\t\t\t\t\t\t\"name\": \"隆尧县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130526\",\n\t\t\t\t\t\t\"name\": \"任县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130527\",\n\t\t\t\t\t\t\"name\": \"南和县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130528\",\n\t\t\t\t\t\t\"name\": \"宁晋县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130529\",\n\t\t\t\t\t\t\"name\": \"巨鹿县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130530\",\n\t\t\t\t\t\t\"name\": \"新河县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130531\",\n\t\t\t\t\t\t\"name\": \"广宗县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130532\",\n\t\t\t\t\t\t\"name\": \"平乡县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130533\",\n\t\t\t\t\t\t\"name\": \"威县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130534\",\n\t\t\t\t\t\t\"name\": \"清河县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130535\",\n\t\t\t\t\t\t\"name\": \"临西县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130581\",\n\t\t\t\t\t\t\"name\": \"南宫市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130582\",\n\t\t\t\t\t\t\"name\": \"沙河市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"130600\",\n\t\t\t\t\"name\": \"保定市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130602\",\n\t\t\t\t\t\t\"name\": \"竞秀区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130606\",\n\t\t\t\t\t\t\"name\": \"莲池区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130607\",\n\t\t\t\t\t\t\"name\": \"满城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130608\",\n\t\t\t\t\t\t\"name\": \"清苑区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130609\",\n\t\t\t\t\t\t\"name\": \"徐水区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130623\",\n\t\t\t\t\t\t\"name\": \"涞水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130624\",\n\t\t\t\t\t\t\"name\": \"阜平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130626\",\n\t\t\t\t\t\t\"name\": \"定兴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130627\",\n\t\t\t\t\t\t\"name\": \"唐县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130628\",\n\t\t\t\t\t\t\"name\": \"高阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130629\",\n\t\t\t\t\t\t\"name\": \"容城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130630\",\n\t\t\t\t\t\t\"name\": \"涞源县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130631\",\n\t\t\t\t\t\t\"name\": \"望都县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130632\",\n\t\t\t\t\t\t\"name\": \"安新县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130633\",\n\t\t\t\t\t\t\"name\": \"易县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130634\",\n\t\t\t\t\t\t\"name\": \"曲阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130635\",\n\t\t\t\t\t\t\"name\": \"蠡县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130636\",\n\t\t\t\t\t\t\"name\": \"顺平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130637\",\n\t\t\t\t\t\t\"name\": \"博野县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130638\",\n\t\t\t\t\t\t\"name\": \"雄县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130681\",\n\t\t\t\t\t\t\"name\": \"涿州市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130682\",\n\t\t\t\t\t\t\"name\": \"定州市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130683\",\n\t\t\t\t\t\t\"name\": \"安国市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130684\",\n\t\t\t\t\t\t\"name\": \"高碑店市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"130700\",\n\t\t\t\t\"name\": \"张家口市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130702\",\n\t\t\t\t\t\t\"name\": \"桥东区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130703\",\n\t\t\t\t\t\t\"name\": \"桥西区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130705\",\n\t\t\t\t\t\t\"name\": \"宣化区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130706\",\n\t\t\t\t\t\t\"name\": \"下花园区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130708\",\n\t\t\t\t\t\t\"name\": \"万全区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130709\",\n\t\t\t\t\t\t\"name\": \"崇礼区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130722\",\n\t\t\t\t\t\t\"name\": \"张北县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130723\",\n\t\t\t\t\t\t\"name\": \"康保县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130724\",\n\t\t\t\t\t\t\"name\": \"沽源县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130725\",\n\t\t\t\t\t\t\"name\": \"尚义县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130726\",\n\t\t\t\t\t\t\"name\": \"蔚县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130727\",\n\t\t\t\t\t\t\"name\": \"阳原县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130728\",\n\t\t\t\t\t\t\"name\": \"怀安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130730\",\n\t\t\t\t\t\t\"name\": \"怀来县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130731\",\n\t\t\t\t\t\t\"name\": \"涿鹿县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130732\",\n\t\t\t\t\t\t\"name\": \"赤城县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"130800\",\n\t\t\t\t\"name\": \"承德市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130802\",\n\t\t\t\t\t\t\"name\": \"双桥区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130803\",\n\t\t\t\t\t\t\"name\": \"双滦区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130804\",\n\t\t\t\t\t\t\"name\": \"鹰手营子矿区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130821\",\n\t\t\t\t\t\t\"name\": \"承德县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130822\",\n\t\t\t\t\t\t\"name\": \"兴隆县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130824\",\n\t\t\t\t\t\t\"name\": \"滦平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130825\",\n\t\t\t\t\t\t\"name\": \"隆化县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130826\",\n\t\t\t\t\t\t\"name\": \"丰宁满族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130827\",\n\t\t\t\t\t\t\"name\": \"宽城满族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130828\",\n\t\t\t\t\t\t\"name\": \"围场满族蒙古族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130881\",\n\t\t\t\t\t\t\"name\": \"平泉市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"130900\",\n\t\t\t\t\"name\": \"沧州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130902\",\n\t\t\t\t\t\t\"name\": \"新华区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130903\",\n\t\t\t\t\t\t\"name\": \"运河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130921\",\n\t\t\t\t\t\t\"name\": \"沧县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130922\",\n\t\t\t\t\t\t\"name\": \"青县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130923\",\n\t\t\t\t\t\t\"name\": \"东光县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130924\",\n\t\t\t\t\t\t\"name\": \"海兴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130925\",\n\t\t\t\t\t\t\"name\": \"盐山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130926\",\n\t\t\t\t\t\t\"name\": \"肃宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130927\",\n\t\t\t\t\t\t\"name\": \"南皮县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130928\",\n\t\t\t\t\t\t\"name\": \"吴桥县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130929\",\n\t\t\t\t\t\t\"name\": \"献县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130930\",\n\t\t\t\t\t\t\"name\": \"孟村回族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130981\",\n\t\t\t\t\t\t\"name\": \"泊头市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130982\",\n\t\t\t\t\t\t\"name\": \"任丘市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130983\",\n\t\t\t\t\t\t\"name\": \"黄骅市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"130984\",\n\t\t\t\t\t\t\"name\": \"河间市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"131000\",\n\t\t\t\t\"name\": \"廊坊市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131002\",\n\t\t\t\t\t\t\"name\": \"安次区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131003\",\n\t\t\t\t\t\t\"name\": \"广阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131022\",\n\t\t\t\t\t\t\"name\": \"固安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131023\",\n\t\t\t\t\t\t\"name\": \"永清县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131024\",\n\t\t\t\t\t\t\"name\": \"香河县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131025\",\n\t\t\t\t\t\t\"name\": \"大城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131026\",\n\t\t\t\t\t\t\"name\": \"文安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131028\",\n\t\t\t\t\t\t\"name\": \"大厂回族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131081\",\n\t\t\t\t\t\t\"name\": \"霸州市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131082\",\n\t\t\t\t\t\t\"name\": \"三河市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"131100\",\n\t\t\t\t\"name\": \"衡水市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131102\",\n\t\t\t\t\t\t\"name\": \"桃城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131103\",\n\t\t\t\t\t\t\"name\": \"冀州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131121\",\n\t\t\t\t\t\t\"name\": \"枣强县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131122\",\n\t\t\t\t\t\t\"name\": \"武邑县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131123\",\n\t\t\t\t\t\t\"name\": \"武强县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131124\",\n\t\t\t\t\t\t\"name\": \"饶阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131125\",\n\t\t\t\t\t\t\"name\": \"安平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131126\",\n\t\t\t\t\t\t\"name\": \"故城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131127\",\n\t\t\t\t\t\t\"name\": \"景县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131128\",\n\t\t\t\t\t\t\"name\": \"阜城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"131182\",\n\t\t\t\t\t\t\"name\": \"深州市\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"140000\",\n\t\t\"name\": \"山西省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"140100\",\n\t\t\t\t\"name\": \"太原市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140105\",\n\t\t\t\t\t\t\"name\": \"小店区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140106\",\n\t\t\t\t\t\t\"name\": \"迎泽区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140107\",\n\t\t\t\t\t\t\"name\": \"杏花岭区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140108\",\n\t\t\t\t\t\t\"name\": \"尖草坪区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140109\",\n\t\t\t\t\t\t\"name\": \"万柏林区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140110\",\n\t\t\t\t\t\t\"name\": \"晋源区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140121\",\n\t\t\t\t\t\t\"name\": \"清徐县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140122\",\n\t\t\t\t\t\t\"name\": \"阳曲县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140123\",\n\t\t\t\t\t\t\"name\": \"娄烦县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140181\",\n\t\t\t\t\t\t\"name\": \"古交市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"140200\",\n\t\t\t\t\"name\": \"大同市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140212\",\n\t\t\t\t\t\t\"name\": \"新荣区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140213\",\n\t\t\t\t\t\t\"name\": \"平城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140214\",\n\t\t\t\t\t\t\"name\": \"云冈区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140215\",\n\t\t\t\t\t\t\"name\": \"云州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140221\",\n\t\t\t\t\t\t\"name\": \"阳高县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140222\",\n\t\t\t\t\t\t\"name\": \"天镇县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140223\",\n\t\t\t\t\t\t\"name\": \"广灵县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140224\",\n\t\t\t\t\t\t\"name\": \"灵丘县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140225\",\n\t\t\t\t\t\t\"name\": \"浑源县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140226\",\n\t\t\t\t\t\t\"name\": \"左云县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"140300\",\n\t\t\t\t\"name\": \"阳泉市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140302\",\n\t\t\t\t\t\t\"name\": \"城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140303\",\n\t\t\t\t\t\t\"name\": \"矿区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140311\",\n\t\t\t\t\t\t\"name\": \"郊区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140321\",\n\t\t\t\t\t\t\"name\": \"平定县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140322\",\n\t\t\t\t\t\t\"name\": \"盂县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"140400\",\n\t\t\t\t\"name\": \"长治市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140402\",\n\t\t\t\t\t\t\"name\": \"城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140411\",\n\t\t\t\t\t\t\"name\": \"郊区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140421\",\n\t\t\t\t\t\t\"name\": \"长治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140423\",\n\t\t\t\t\t\t\"name\": \"襄垣县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140424\",\n\t\t\t\t\t\t\"name\": \"屯留县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140425\",\n\t\t\t\t\t\t\"name\": \"平顺县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140426\",\n\t\t\t\t\t\t\"name\": \"黎城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140427\",\n\t\t\t\t\t\t\"name\": \"壶关县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140428\",\n\t\t\t\t\t\t\"name\": \"长子县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140429\",\n\t\t\t\t\t\t\"name\": \"武乡县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140430\",\n\t\t\t\t\t\t\"name\": \"沁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140431\",\n\t\t\t\t\t\t\"name\": \"沁源县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140481\",\n\t\t\t\t\t\t\"name\": \"潞城市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"140500\",\n\t\t\t\t\"name\": \"晋城市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140502\",\n\t\t\t\t\t\t\"name\": \"城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140521\",\n\t\t\t\t\t\t\"name\": \"沁水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140522\",\n\t\t\t\t\t\t\"name\": \"阳城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140524\",\n\t\t\t\t\t\t\"name\": \"陵川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140525\",\n\t\t\t\t\t\t\"name\": \"泽州县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140581\",\n\t\t\t\t\t\t\"name\": \"高平市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"140600\",\n\t\t\t\t\"name\": \"朔州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140602\",\n\t\t\t\t\t\t\"name\": \"朔城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140603\",\n\t\t\t\t\t\t\"name\": \"平鲁区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140621\",\n\t\t\t\t\t\t\"name\": \"山阴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140622\",\n\t\t\t\t\t\t\"name\": \"应县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140623\",\n\t\t\t\t\t\t\"name\": \"右玉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140681\",\n\t\t\t\t\t\t\"name\": \"怀仁市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"140700\",\n\t\t\t\t\"name\": \"晋中市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140702\",\n\t\t\t\t\t\t\"name\": \"榆次区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140721\",\n\t\t\t\t\t\t\"name\": \"榆社县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140722\",\n\t\t\t\t\t\t\"name\": \"左权县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140723\",\n\t\t\t\t\t\t\"name\": \"和顺县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140724\",\n\t\t\t\t\t\t\"name\": \"昔阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140725\",\n\t\t\t\t\t\t\"name\": \"寿阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140726\",\n\t\t\t\t\t\t\"name\": \"太谷县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140727\",\n\t\t\t\t\t\t\"name\": \"祁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140728\",\n\t\t\t\t\t\t\"name\": \"平遥县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140729\",\n\t\t\t\t\t\t\"name\": \"灵石县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140781\",\n\t\t\t\t\t\t\"name\": \"介休市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"140800\",\n\t\t\t\t\"name\": \"运城市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140802\",\n\t\t\t\t\t\t\"name\": \"盐湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140821\",\n\t\t\t\t\t\t\"name\": \"临猗县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140822\",\n\t\t\t\t\t\t\"name\": \"万荣县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140823\",\n\t\t\t\t\t\t\"name\": \"闻喜县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140824\",\n\t\t\t\t\t\t\"name\": \"稷山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140825\",\n\t\t\t\t\t\t\"name\": \"新绛县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140826\",\n\t\t\t\t\t\t\"name\": \"绛县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140827\",\n\t\t\t\t\t\t\"name\": \"垣曲县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140828\",\n\t\t\t\t\t\t\"name\": \"夏县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140829\",\n\t\t\t\t\t\t\"name\": \"平陆县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140830\",\n\t\t\t\t\t\t\"name\": \"芮城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140881\",\n\t\t\t\t\t\t\"name\": \"永济市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140882\",\n\t\t\t\t\t\t\"name\": \"河津市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"140900\",\n\t\t\t\t\"name\": \"忻州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140902\",\n\t\t\t\t\t\t\"name\": \"忻府区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140921\",\n\t\t\t\t\t\t\"name\": \"定襄县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140922\",\n\t\t\t\t\t\t\"name\": \"五台县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140923\",\n\t\t\t\t\t\t\"name\": \"代县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140924\",\n\t\t\t\t\t\t\"name\": \"繁峙县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140925\",\n\t\t\t\t\t\t\"name\": \"宁武县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140926\",\n\t\t\t\t\t\t\"name\": \"静乐县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140927\",\n\t\t\t\t\t\t\"name\": \"神池县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140928\",\n\t\t\t\t\t\t\"name\": \"五寨县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140929\",\n\t\t\t\t\t\t\"name\": \"岢岚县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140930\",\n\t\t\t\t\t\t\"name\": \"河曲县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140931\",\n\t\t\t\t\t\t\"name\": \"保德县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140932\",\n\t\t\t\t\t\t\"name\": \"偏关县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"140981\",\n\t\t\t\t\t\t\"name\": \"原平市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"141000\",\n\t\t\t\t\"name\": \"临汾市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141002\",\n\t\t\t\t\t\t\"name\": \"尧都区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141021\",\n\t\t\t\t\t\t\"name\": \"曲沃县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141022\",\n\t\t\t\t\t\t\"name\": \"翼城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141023\",\n\t\t\t\t\t\t\"name\": \"襄汾县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141024\",\n\t\t\t\t\t\t\"name\": \"洪洞县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141025\",\n\t\t\t\t\t\t\"name\": \"古县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141026\",\n\t\t\t\t\t\t\"name\": \"安泽县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141027\",\n\t\t\t\t\t\t\"name\": \"浮山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141028\",\n\t\t\t\t\t\t\"name\": \"吉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141029\",\n\t\t\t\t\t\t\"name\": \"乡宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141030\",\n\t\t\t\t\t\t\"name\": \"大宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141031\",\n\t\t\t\t\t\t\"name\": \"隰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141032\",\n\t\t\t\t\t\t\"name\": \"永和县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141033\",\n\t\t\t\t\t\t\"name\": \"蒲县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141034\",\n\t\t\t\t\t\t\"name\": \"汾西县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141081\",\n\t\t\t\t\t\t\"name\": \"侯马市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141082\",\n\t\t\t\t\t\t\"name\": \"霍州市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"141100\",\n\t\t\t\t\"name\": \"吕梁市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141102\",\n\t\t\t\t\t\t\"name\": \"离石区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141121\",\n\t\t\t\t\t\t\"name\": \"文水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141122\",\n\t\t\t\t\t\t\"name\": \"交城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141123\",\n\t\t\t\t\t\t\"name\": \"兴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141124\",\n\t\t\t\t\t\t\"name\": \"临县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141125\",\n\t\t\t\t\t\t\"name\": \"柳林县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141126\",\n\t\t\t\t\t\t\"name\": \"石楼县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141127\",\n\t\t\t\t\t\t\"name\": \"岚县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141128\",\n\t\t\t\t\t\t\"name\": \"方山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141129\",\n\t\t\t\t\t\t\"name\": \"中阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141130\",\n\t\t\t\t\t\t\"name\": \"交口县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141181\",\n\t\t\t\t\t\t\"name\": \"孝义市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"141182\",\n\t\t\t\t\t\t\"name\": \"汾阳市\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"150000\",\n\t\t\"name\": \"内蒙古自治区\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"150100\",\n\t\t\t\t\"name\": \"呼和浩特市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150102\",\n\t\t\t\t\t\t\"name\": \"新城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150103\",\n\t\t\t\t\t\t\"name\": \"回民区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150104\",\n\t\t\t\t\t\t\"name\": \"玉泉区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150105\",\n\t\t\t\t\t\t\"name\": \"赛罕区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150121\",\n\t\t\t\t\t\t\"name\": \"土默特左旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150122\",\n\t\t\t\t\t\t\"name\": \"托克托县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150123\",\n\t\t\t\t\t\t\"name\": \"和林格尔县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150124\",\n\t\t\t\t\t\t\"name\": \"清水河县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150125\",\n\t\t\t\t\t\t\"name\": \"武川县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"150200\",\n\t\t\t\t\"name\": \"包头市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150202\",\n\t\t\t\t\t\t\"name\": \"东河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150203\",\n\t\t\t\t\t\t\"name\": \"昆都仑区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150204\",\n\t\t\t\t\t\t\"name\": \"青山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150205\",\n\t\t\t\t\t\t\"name\": \"石拐区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150206\",\n\t\t\t\t\t\t\"name\": \"白云鄂博矿区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150207\",\n\t\t\t\t\t\t\"name\": \"九原区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150221\",\n\t\t\t\t\t\t\"name\": \"土默特右旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150222\",\n\t\t\t\t\t\t\"name\": \"固阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150223\",\n\t\t\t\t\t\t\"name\": \"达尔罕茂明安联合旗\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"150300\",\n\t\t\t\t\"name\": \"乌海市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150302\",\n\t\t\t\t\t\t\"name\": \"海勃湾区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150303\",\n\t\t\t\t\t\t\"name\": \"海南区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150304\",\n\t\t\t\t\t\t\"name\": \"乌达区\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"150400\",\n\t\t\t\t\"name\": \"赤峰市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150402\",\n\t\t\t\t\t\t\"name\": \"红山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150403\",\n\t\t\t\t\t\t\"name\": \"元宝山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150404\",\n\t\t\t\t\t\t\"name\": \"松山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150421\",\n\t\t\t\t\t\t\"name\": \"阿鲁科尔沁旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150422\",\n\t\t\t\t\t\t\"name\": \"巴林左旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150423\",\n\t\t\t\t\t\t\"name\": \"巴林右旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150424\",\n\t\t\t\t\t\t\"name\": \"林西县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150425\",\n\t\t\t\t\t\t\"name\": \"克什克腾旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150426\",\n\t\t\t\t\t\t\"name\": \"翁牛特旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150428\",\n\t\t\t\t\t\t\"name\": \"喀喇沁旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150429\",\n\t\t\t\t\t\t\"name\": \"宁城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150430\",\n\t\t\t\t\t\t\"name\": \"敖汉旗\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"150500\",\n\t\t\t\t\"name\": \"通辽市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150502\",\n\t\t\t\t\t\t\"name\": \"科尔沁区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150521\",\n\t\t\t\t\t\t\"name\": \"科尔沁左翼中旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150522\",\n\t\t\t\t\t\t\"name\": \"科尔沁左翼后旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150523\",\n\t\t\t\t\t\t\"name\": \"开鲁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150524\",\n\t\t\t\t\t\t\"name\": \"库伦旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150525\",\n\t\t\t\t\t\t\"name\": \"奈曼旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150526\",\n\t\t\t\t\t\t\"name\": \"扎鲁特旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150581\",\n\t\t\t\t\t\t\"name\": \"霍林郭勒市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"150600\",\n\t\t\t\t\"name\": \"鄂尔多斯市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150602\",\n\t\t\t\t\t\t\"name\": \"东胜区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150603\",\n\t\t\t\t\t\t\"name\": \"康巴什区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150621\",\n\t\t\t\t\t\t\"name\": \"达拉特旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150622\",\n\t\t\t\t\t\t\"name\": \"准格尔旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150623\",\n\t\t\t\t\t\t\"name\": \"鄂托克前旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150624\",\n\t\t\t\t\t\t\"name\": \"鄂托克旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150625\",\n\t\t\t\t\t\t\"name\": \"杭锦旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150626\",\n\t\t\t\t\t\t\"name\": \"乌审旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150627\",\n\t\t\t\t\t\t\"name\": \"伊金霍洛旗\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"150700\",\n\t\t\t\t\"name\": \"呼伦贝尔市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150702\",\n\t\t\t\t\t\t\"name\": \"海拉尔区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150703\",\n\t\t\t\t\t\t\"name\": \"扎赉诺尔区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150721\",\n\t\t\t\t\t\t\"name\": \"阿荣旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150722\",\n\t\t\t\t\t\t\"name\": \"莫力达瓦达斡尔族自治旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150723\",\n\t\t\t\t\t\t\"name\": \"鄂伦春自治旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150724\",\n\t\t\t\t\t\t\"name\": \"鄂温克族自治旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150725\",\n\t\t\t\t\t\t\"name\": \"陈巴尔虎旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150726\",\n\t\t\t\t\t\t\"name\": \"新巴尔虎左旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150727\",\n\t\t\t\t\t\t\"name\": \"新巴尔虎右旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150781\",\n\t\t\t\t\t\t\"name\": \"满洲里市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150782\",\n\t\t\t\t\t\t\"name\": \"牙克石市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150783\",\n\t\t\t\t\t\t\"name\": \"扎兰屯市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150784\",\n\t\t\t\t\t\t\"name\": \"额尔古纳市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150785\",\n\t\t\t\t\t\t\"name\": \"根河市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"150800\",\n\t\t\t\t\"name\": \"巴彦淖尔市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150802\",\n\t\t\t\t\t\t\"name\": \"临河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150821\",\n\t\t\t\t\t\t\"name\": \"五原县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150822\",\n\t\t\t\t\t\t\"name\": \"磴口县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150823\",\n\t\t\t\t\t\t\"name\": \"乌拉特前旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150824\",\n\t\t\t\t\t\t\"name\": \"乌拉特中旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150825\",\n\t\t\t\t\t\t\"name\": \"乌拉特后旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150826\",\n\t\t\t\t\t\t\"name\": \"杭锦后旗\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"150900\",\n\t\t\t\t\"name\": \"乌兰察布市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150902\",\n\t\t\t\t\t\t\"name\": \"集宁区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150921\",\n\t\t\t\t\t\t\"name\": \"卓资县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150922\",\n\t\t\t\t\t\t\"name\": \"化德县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150923\",\n\t\t\t\t\t\t\"name\": \"商都县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150924\",\n\t\t\t\t\t\t\"name\": \"兴和县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150925\",\n\t\t\t\t\t\t\"name\": \"凉城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150926\",\n\t\t\t\t\t\t\"name\": \"察哈尔右翼前旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150927\",\n\t\t\t\t\t\t\"name\": \"察哈尔右翼中旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150928\",\n\t\t\t\t\t\t\"name\": \"察哈尔右翼后旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150929\",\n\t\t\t\t\t\t\"name\": \"四子王旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"150981\",\n\t\t\t\t\t\t\"name\": \"丰镇市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"152200\",\n\t\t\t\t\"name\": \"兴安盟\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152201\",\n\t\t\t\t\t\t\"name\": \"乌兰浩特市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152202\",\n\t\t\t\t\t\t\"name\": \"阿尔山市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152221\",\n\t\t\t\t\t\t\"name\": \"科尔沁右翼前旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152222\",\n\t\t\t\t\t\t\"name\": \"科尔沁右翼中旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152223\",\n\t\t\t\t\t\t\"name\": \"扎赉特旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152224\",\n\t\t\t\t\t\t\"name\": \"突泉县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"152500\",\n\t\t\t\t\"name\": \"锡林郭勒盟\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152501\",\n\t\t\t\t\t\t\"name\": \"二连浩特市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152502\",\n\t\t\t\t\t\t\"name\": \"锡林浩特市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152522\",\n\t\t\t\t\t\t\"name\": \"阿巴嘎旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152523\",\n\t\t\t\t\t\t\"name\": \"苏尼特左旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152524\",\n\t\t\t\t\t\t\"name\": \"苏尼特右旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152525\",\n\t\t\t\t\t\t\"name\": \"东乌珠穆沁旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152526\",\n\t\t\t\t\t\t\"name\": \"西乌珠穆沁旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152527\",\n\t\t\t\t\t\t\"name\": \"太仆寺旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152528\",\n\t\t\t\t\t\t\"name\": \"镶黄旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152529\",\n\t\t\t\t\t\t\"name\": \"正镶白旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152530\",\n\t\t\t\t\t\t\"name\": \"正蓝旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152531\",\n\t\t\t\t\t\t\"name\": \"多伦县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"152900\",\n\t\t\t\t\"name\": \"阿拉善盟\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152921\",\n\t\t\t\t\t\t\"name\": \"阿拉善左旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152922\",\n\t\t\t\t\t\t\"name\": \"阿拉善右旗\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"152923\",\n\t\t\t\t\t\t\"name\": \"额济纳旗\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"210000\",\n\t\t\"name\": \"辽宁省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"210100\",\n\t\t\t\t\"name\": \"沈阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210102\",\n\t\t\t\t\t\t\"name\": \"和平区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210103\",\n\t\t\t\t\t\t\"name\": \"沈河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210104\",\n\t\t\t\t\t\t\"name\": \"大东区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210105\",\n\t\t\t\t\t\t\"name\": \"皇姑区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210106\",\n\t\t\t\t\t\t\"name\": \"铁西区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210111\",\n\t\t\t\t\t\t\"name\": \"苏家屯区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210112\",\n\t\t\t\t\t\t\"name\": \"浑南区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210113\",\n\t\t\t\t\t\t\"name\": \"沈北新区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210114\",\n\t\t\t\t\t\t\"name\": \"于洪区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210115\",\n\t\t\t\t\t\t\"name\": \"辽中区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210123\",\n\t\t\t\t\t\t\"name\": \"康平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210124\",\n\t\t\t\t\t\t\"name\": \"法库县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210181\",\n\t\t\t\t\t\t\"name\": \"新民市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"210200\",\n\t\t\t\t\"name\": \"大连市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210202\",\n\t\t\t\t\t\t\"name\": \"中山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210203\",\n\t\t\t\t\t\t\"name\": \"西岗区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210204\",\n\t\t\t\t\t\t\"name\": \"沙河口区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210211\",\n\t\t\t\t\t\t\"name\": \"甘井子区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210212\",\n\t\t\t\t\t\t\"name\": \"旅顺口区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210213\",\n\t\t\t\t\t\t\"name\": \"金州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210214\",\n\t\t\t\t\t\t\"name\": \"普兰店区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210224\",\n\t\t\t\t\t\t\"name\": \"长海县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210281\",\n\t\t\t\t\t\t\"name\": \"瓦房店市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210283\",\n\t\t\t\t\t\t\"name\": \"庄河市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"210300\",\n\t\t\t\t\"name\": \"鞍山市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210302\",\n\t\t\t\t\t\t\"name\": \"铁东区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210303\",\n\t\t\t\t\t\t\"name\": \"铁西区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210304\",\n\t\t\t\t\t\t\"name\": \"立山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210311\",\n\t\t\t\t\t\t\"name\": \"千山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210321\",\n\t\t\t\t\t\t\"name\": \"台安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210323\",\n\t\t\t\t\t\t\"name\": \"岫岩满族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210381\",\n\t\t\t\t\t\t\"name\": \"海城市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"210400\",\n\t\t\t\t\"name\": \"抚顺市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210402\",\n\t\t\t\t\t\t\"name\": \"新抚区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210403\",\n\t\t\t\t\t\t\"name\": \"东洲区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210404\",\n\t\t\t\t\t\t\"name\": \"望花区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210411\",\n\t\t\t\t\t\t\"name\": \"顺城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210421\",\n\t\t\t\t\t\t\"name\": \"抚顺县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210422\",\n\t\t\t\t\t\t\"name\": \"新宾满族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210423\",\n\t\t\t\t\t\t\"name\": \"清原满族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"210500\",\n\t\t\t\t\"name\": \"本溪市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210502\",\n\t\t\t\t\t\t\"name\": \"平山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210503\",\n\t\t\t\t\t\t\"name\": \"溪湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210504\",\n\t\t\t\t\t\t\"name\": \"明山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210505\",\n\t\t\t\t\t\t\"name\": \"南芬区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210521\",\n\t\t\t\t\t\t\"name\": \"本溪满族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210522\",\n\t\t\t\t\t\t\"name\": \"桓仁满族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"210600\",\n\t\t\t\t\"name\": \"丹东市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210602\",\n\t\t\t\t\t\t\"name\": \"元宝区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210603\",\n\t\t\t\t\t\t\"name\": \"振兴区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210604\",\n\t\t\t\t\t\t\"name\": \"振安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210624\",\n\t\t\t\t\t\t\"name\": \"宽甸满族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210681\",\n\t\t\t\t\t\t\"name\": \"东港市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210682\",\n\t\t\t\t\t\t\"name\": \"凤城市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"210700\",\n\t\t\t\t\"name\": \"锦州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210702\",\n\t\t\t\t\t\t\"name\": \"古塔区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210703\",\n\t\t\t\t\t\t\"name\": \"凌河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210711\",\n\t\t\t\t\t\t\"name\": \"太和区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210726\",\n\t\t\t\t\t\t\"name\": \"黑山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210727\",\n\t\t\t\t\t\t\"name\": \"义县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210781\",\n\t\t\t\t\t\t\"name\": \"凌海市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210782\",\n\t\t\t\t\t\t\"name\": \"北镇市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"210800\",\n\t\t\t\t\"name\": \"营口市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210802\",\n\t\t\t\t\t\t\"name\": \"站前区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210803\",\n\t\t\t\t\t\t\"name\": \"西市区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210804\",\n\t\t\t\t\t\t\"name\": \"鲅鱼圈区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210811\",\n\t\t\t\t\t\t\"name\": \"老边区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210881\",\n\t\t\t\t\t\t\"name\": \"盖州市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210882\",\n\t\t\t\t\t\t\"name\": \"大石桥市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"210900\",\n\t\t\t\t\"name\": \"阜新市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210902\",\n\t\t\t\t\t\t\"name\": \"海州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210903\",\n\t\t\t\t\t\t\"name\": \"新邱区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210904\",\n\t\t\t\t\t\t\"name\": \"太平区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210905\",\n\t\t\t\t\t\t\"name\": \"清河门区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210911\",\n\t\t\t\t\t\t\"name\": \"细河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210921\",\n\t\t\t\t\t\t\"name\": \"阜新蒙古族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"210922\",\n\t\t\t\t\t\t\"name\": \"彰武县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"211000\",\n\t\t\t\t\"name\": \"辽阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211002\",\n\t\t\t\t\t\t\"name\": \"白塔区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211003\",\n\t\t\t\t\t\t\"name\": \"文圣区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211004\",\n\t\t\t\t\t\t\"name\": \"宏伟区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211005\",\n\t\t\t\t\t\t\"name\": \"弓长岭区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211011\",\n\t\t\t\t\t\t\"name\": \"太子河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211021\",\n\t\t\t\t\t\t\"name\": \"辽阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211081\",\n\t\t\t\t\t\t\"name\": \"灯塔市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"211100\",\n\t\t\t\t\"name\": \"盘锦市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211102\",\n\t\t\t\t\t\t\"name\": \"双台子区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211103\",\n\t\t\t\t\t\t\"name\": \"兴隆台区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211104\",\n\t\t\t\t\t\t\"name\": \"大洼区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211122\",\n\t\t\t\t\t\t\"name\": \"盘山县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"211200\",\n\t\t\t\t\"name\": \"铁岭市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211202\",\n\t\t\t\t\t\t\"name\": \"银州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211204\",\n\t\t\t\t\t\t\"name\": \"清河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211221\",\n\t\t\t\t\t\t\"name\": \"铁岭县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211223\",\n\t\t\t\t\t\t\"name\": \"西丰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211224\",\n\t\t\t\t\t\t\"name\": \"昌图县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211281\",\n\t\t\t\t\t\t\"name\": \"调兵山市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211282\",\n\t\t\t\t\t\t\"name\": \"开原市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"211300\",\n\t\t\t\t\"name\": \"朝阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211302\",\n\t\t\t\t\t\t\"name\": \"双塔区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211303\",\n\t\t\t\t\t\t\"name\": \"龙城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211321\",\n\t\t\t\t\t\t\"name\": \"朝阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211322\",\n\t\t\t\t\t\t\"name\": \"建平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211324\",\n\t\t\t\t\t\t\"name\": \"喀喇沁左翼蒙古族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211381\",\n\t\t\t\t\t\t\"name\": \"北票市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211382\",\n\t\t\t\t\t\t\"name\": \"凌源市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"211400\",\n\t\t\t\t\"name\": \"葫芦岛市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211402\",\n\t\t\t\t\t\t\"name\": \"连山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211403\",\n\t\t\t\t\t\t\"name\": \"龙港区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211404\",\n\t\t\t\t\t\t\"name\": \"南票区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211421\",\n\t\t\t\t\t\t\"name\": \"绥中县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211422\",\n\t\t\t\t\t\t\"name\": \"建昌县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"211481\",\n\t\t\t\t\t\t\"name\": \"兴城市\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"220000\",\n\t\t\"name\": \"吉林省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"220100\",\n\t\t\t\t\"name\": \"长春市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220102\",\n\t\t\t\t\t\t\"name\": \"南关区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220103\",\n\t\t\t\t\t\t\"name\": \"宽城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220104\",\n\t\t\t\t\t\t\"name\": \"朝阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220105\",\n\t\t\t\t\t\t\"name\": \"二道区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220106\",\n\t\t\t\t\t\t\"name\": \"绿园区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220112\",\n\t\t\t\t\t\t\"name\": \"双阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220113\",\n\t\t\t\t\t\t\"name\": \"九台区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220122\",\n\t\t\t\t\t\t\"name\": \"农安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220182\",\n\t\t\t\t\t\t\"name\": \"榆树市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220183\",\n\t\t\t\t\t\t\"name\": \"德惠市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"220200\",\n\t\t\t\t\"name\": \"吉林市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220202\",\n\t\t\t\t\t\t\"name\": \"昌邑区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220203\",\n\t\t\t\t\t\t\"name\": \"龙潭区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220204\",\n\t\t\t\t\t\t\"name\": \"船营区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220211\",\n\t\t\t\t\t\t\"name\": \"丰满区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220221\",\n\t\t\t\t\t\t\"name\": \"永吉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220281\",\n\t\t\t\t\t\t\"name\": \"蛟河市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220282\",\n\t\t\t\t\t\t\"name\": \"桦甸市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220283\",\n\t\t\t\t\t\t\"name\": \"舒兰市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220284\",\n\t\t\t\t\t\t\"name\": \"磐石市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"220300\",\n\t\t\t\t\"name\": \"四平市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220302\",\n\t\t\t\t\t\t\"name\": \"铁西区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220303\",\n\t\t\t\t\t\t\"name\": \"铁东区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220322\",\n\t\t\t\t\t\t\"name\": \"梨树县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220323\",\n\t\t\t\t\t\t\"name\": \"伊通满族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220381\",\n\t\t\t\t\t\t\"name\": \"公主岭市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220382\",\n\t\t\t\t\t\t\"name\": \"双辽市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"220400\",\n\t\t\t\t\"name\": \"辽源市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220402\",\n\t\t\t\t\t\t\"name\": \"龙山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220403\",\n\t\t\t\t\t\t\"name\": \"西安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220421\",\n\t\t\t\t\t\t\"name\": \"东丰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220422\",\n\t\t\t\t\t\t\"name\": \"东辽县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"220500\",\n\t\t\t\t\"name\": \"通化市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220502\",\n\t\t\t\t\t\t\"name\": \"东昌区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220503\",\n\t\t\t\t\t\t\"name\": \"二道江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220521\",\n\t\t\t\t\t\t\"name\": \"通化县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220523\",\n\t\t\t\t\t\t\"name\": \"辉南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220524\",\n\t\t\t\t\t\t\"name\": \"柳河县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220581\",\n\t\t\t\t\t\t\"name\": \"梅河口市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220582\",\n\t\t\t\t\t\t\"name\": \"集安市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"220600\",\n\t\t\t\t\"name\": \"白山市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220602\",\n\t\t\t\t\t\t\"name\": \"浑江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220605\",\n\t\t\t\t\t\t\"name\": \"江源区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220621\",\n\t\t\t\t\t\t\"name\": \"抚松县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220622\",\n\t\t\t\t\t\t\"name\": \"靖宇县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220623\",\n\t\t\t\t\t\t\"name\": \"长白朝鲜族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220681\",\n\t\t\t\t\t\t\"name\": \"临江市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"220700\",\n\t\t\t\t\"name\": \"松原市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220702\",\n\t\t\t\t\t\t\"name\": \"宁江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220721\",\n\t\t\t\t\t\t\"name\": \"前郭尔罗斯蒙古族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220722\",\n\t\t\t\t\t\t\"name\": \"长岭县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220723\",\n\t\t\t\t\t\t\"name\": \"乾安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220781\",\n\t\t\t\t\t\t\"name\": \"扶余市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"220800\",\n\t\t\t\t\"name\": \"白城市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220802\",\n\t\t\t\t\t\t\"name\": \"洮北区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220821\",\n\t\t\t\t\t\t\"name\": \"镇赉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220822\",\n\t\t\t\t\t\t\"name\": \"通榆县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220881\",\n\t\t\t\t\t\t\"name\": \"洮南市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"220882\",\n\t\t\t\t\t\t\"name\": \"大安市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"222400\",\n\t\t\t\t\"name\": \"延边朝鲜族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"222401\",\n\t\t\t\t\t\t\"name\": \"延吉市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"222402\",\n\t\t\t\t\t\t\"name\": \"图们市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"222403\",\n\t\t\t\t\t\t\"name\": \"敦化市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"222404\",\n\t\t\t\t\t\t\"name\": \"珲春市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"222405\",\n\t\t\t\t\t\t\"name\": \"龙井市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"222406\",\n\t\t\t\t\t\t\"name\": \"和龙市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"222424\",\n\t\t\t\t\t\t\"name\": \"汪清县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"222426\",\n\t\t\t\t\t\t\"name\": \"安图县\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"230000\",\n\t\t\"name\": \"黑龙江省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"230100\",\n\t\t\t\t\"name\": \"哈尔滨市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230102\",\n\t\t\t\t\t\t\"name\": \"道里区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230103\",\n\t\t\t\t\t\t\"name\": \"南岗区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230104\",\n\t\t\t\t\t\t\"name\": \"道外区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230108\",\n\t\t\t\t\t\t\"name\": \"平房区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230109\",\n\t\t\t\t\t\t\"name\": \"松北区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230110\",\n\t\t\t\t\t\t\"name\": \"香坊区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230111\",\n\t\t\t\t\t\t\"name\": \"呼兰区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230112\",\n\t\t\t\t\t\t\"name\": \"阿城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230113\",\n\t\t\t\t\t\t\"name\": \"双城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230123\",\n\t\t\t\t\t\t\"name\": \"依兰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230124\",\n\t\t\t\t\t\t\"name\": \"方正县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230125\",\n\t\t\t\t\t\t\"name\": \"宾县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230126\",\n\t\t\t\t\t\t\"name\": \"巴彦县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230127\",\n\t\t\t\t\t\t\"name\": \"木兰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230128\",\n\t\t\t\t\t\t\"name\": \"通河县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230129\",\n\t\t\t\t\t\t\"name\": \"延寿县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230183\",\n\t\t\t\t\t\t\"name\": \"尚志市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230184\",\n\t\t\t\t\t\t\"name\": \"五常市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"230200\",\n\t\t\t\t\"name\": \"齐齐哈尔市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230202\",\n\t\t\t\t\t\t\"name\": \"龙沙区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230203\",\n\t\t\t\t\t\t\"name\": \"建华区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230204\",\n\t\t\t\t\t\t\"name\": \"铁锋区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230205\",\n\t\t\t\t\t\t\"name\": \"昂昂溪区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230206\",\n\t\t\t\t\t\t\"name\": \"富拉尔基区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230207\",\n\t\t\t\t\t\t\"name\": \"碾子山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230208\",\n\t\t\t\t\t\t\"name\": \"梅里斯达斡尔族区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230221\",\n\t\t\t\t\t\t\"name\": \"龙江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230223\",\n\t\t\t\t\t\t\"name\": \"依安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230224\",\n\t\t\t\t\t\t\"name\": \"泰来县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230225\",\n\t\t\t\t\t\t\"name\": \"甘南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230227\",\n\t\t\t\t\t\t\"name\": \"富裕县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230229\",\n\t\t\t\t\t\t\"name\": \"克山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230230\",\n\t\t\t\t\t\t\"name\": \"克东县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230231\",\n\t\t\t\t\t\t\"name\": \"拜泉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230281\",\n\t\t\t\t\t\t\"name\": \"讷河市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"230300\",\n\t\t\t\t\"name\": \"鸡西市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230302\",\n\t\t\t\t\t\t\"name\": \"鸡冠区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230303\",\n\t\t\t\t\t\t\"name\": \"恒山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230304\",\n\t\t\t\t\t\t\"name\": \"滴道区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230305\",\n\t\t\t\t\t\t\"name\": \"梨树区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230306\",\n\t\t\t\t\t\t\"name\": \"城子河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230307\",\n\t\t\t\t\t\t\"name\": \"麻山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230321\",\n\t\t\t\t\t\t\"name\": \"鸡东县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230381\",\n\t\t\t\t\t\t\"name\": \"虎林市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230382\",\n\t\t\t\t\t\t\"name\": \"密山市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"230400\",\n\t\t\t\t\"name\": \"鹤岗市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230402\",\n\t\t\t\t\t\t\"name\": \"向阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230403\",\n\t\t\t\t\t\t\"name\": \"工农区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230404\",\n\t\t\t\t\t\t\"name\": \"南山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230405\",\n\t\t\t\t\t\t\"name\": \"兴安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230406\",\n\t\t\t\t\t\t\"name\": \"东山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230407\",\n\t\t\t\t\t\t\"name\": \"兴山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230421\",\n\t\t\t\t\t\t\"name\": \"萝北县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230422\",\n\t\t\t\t\t\t\"name\": \"绥滨县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"230500\",\n\t\t\t\t\"name\": \"双鸭山市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230502\",\n\t\t\t\t\t\t\"name\": \"尖山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230503\",\n\t\t\t\t\t\t\"name\": \"岭东区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230505\",\n\t\t\t\t\t\t\"name\": \"四方台区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230506\",\n\t\t\t\t\t\t\"name\": \"宝山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230521\",\n\t\t\t\t\t\t\"name\": \"集贤县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230522\",\n\t\t\t\t\t\t\"name\": \"友谊县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230523\",\n\t\t\t\t\t\t\"name\": \"宝清县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230524\",\n\t\t\t\t\t\t\"name\": \"饶河县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"230600\",\n\t\t\t\t\"name\": \"大庆市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230602\",\n\t\t\t\t\t\t\"name\": \"萨尔图区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230603\",\n\t\t\t\t\t\t\"name\": \"龙凤区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230604\",\n\t\t\t\t\t\t\"name\": \"让胡路区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230605\",\n\t\t\t\t\t\t\"name\": \"红岗区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230606\",\n\t\t\t\t\t\t\"name\": \"大同区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230621\",\n\t\t\t\t\t\t\"name\": \"肇州县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230622\",\n\t\t\t\t\t\t\"name\": \"肇源县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230623\",\n\t\t\t\t\t\t\"name\": \"林甸县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230624\",\n\t\t\t\t\t\t\"name\": \"杜尔伯特蒙古族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"230700\",\n\t\t\t\t\"name\": \"伊春市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230702\",\n\t\t\t\t\t\t\"name\": \"伊春区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230703\",\n\t\t\t\t\t\t\"name\": \"南岔区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230704\",\n\t\t\t\t\t\t\"name\": \"友好区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230705\",\n\t\t\t\t\t\t\"name\": \"西林区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230706\",\n\t\t\t\t\t\t\"name\": \"翠峦区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230707\",\n\t\t\t\t\t\t\"name\": \"新青区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230708\",\n\t\t\t\t\t\t\"name\": \"美溪区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230709\",\n\t\t\t\t\t\t\"name\": \"金山屯区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230710\",\n\t\t\t\t\t\t\"name\": \"五营区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230711\",\n\t\t\t\t\t\t\"name\": \"乌马河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230712\",\n\t\t\t\t\t\t\"name\": \"汤旺河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230713\",\n\t\t\t\t\t\t\"name\": \"带岭区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230714\",\n\t\t\t\t\t\t\"name\": \"乌伊岭区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230715\",\n\t\t\t\t\t\t\"name\": \"红星区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230716\",\n\t\t\t\t\t\t\"name\": \"上甘岭区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230722\",\n\t\t\t\t\t\t\"name\": \"嘉荫县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230781\",\n\t\t\t\t\t\t\"name\": \"铁力市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"230800\",\n\t\t\t\t\"name\": \"佳木斯市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230803\",\n\t\t\t\t\t\t\"name\": \"向阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230804\",\n\t\t\t\t\t\t\"name\": \"前进区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230805\",\n\t\t\t\t\t\t\"name\": \"东风区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230811\",\n\t\t\t\t\t\t\"name\": \"郊区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230822\",\n\t\t\t\t\t\t\"name\": \"桦南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230826\",\n\t\t\t\t\t\t\"name\": \"桦川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230828\",\n\t\t\t\t\t\t\"name\": \"汤原县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230881\",\n\t\t\t\t\t\t\"name\": \"同江市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230882\",\n\t\t\t\t\t\t\"name\": \"富锦市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230883\",\n\t\t\t\t\t\t\"name\": \"抚远市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"230900\",\n\t\t\t\t\"name\": \"七台河市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230902\",\n\t\t\t\t\t\t\"name\": \"新兴区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230903\",\n\t\t\t\t\t\t\"name\": \"桃山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230904\",\n\t\t\t\t\t\t\"name\": \"茄子河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"230921\",\n\t\t\t\t\t\t\"name\": \"勃利县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"231000\",\n\t\t\t\t\"name\": \"牡丹江市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231002\",\n\t\t\t\t\t\t\"name\": \"东安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231003\",\n\t\t\t\t\t\t\"name\": \"阳明区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231004\",\n\t\t\t\t\t\t\"name\": \"爱民区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231005\",\n\t\t\t\t\t\t\"name\": \"西安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231025\",\n\t\t\t\t\t\t\"name\": \"林口县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231081\",\n\t\t\t\t\t\t\"name\": \"绥芬河市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231083\",\n\t\t\t\t\t\t\"name\": \"海林市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231084\",\n\t\t\t\t\t\t\"name\": \"宁安市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231085\",\n\t\t\t\t\t\t\"name\": \"穆棱市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231086\",\n\t\t\t\t\t\t\"name\": \"东宁市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"231100\",\n\t\t\t\t\"name\": \"黑河市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231102\",\n\t\t\t\t\t\t\"name\": \"爱辉区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231121\",\n\t\t\t\t\t\t\"name\": \"嫩江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231123\",\n\t\t\t\t\t\t\"name\": \"逊克县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231124\",\n\t\t\t\t\t\t\"name\": \"孙吴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231181\",\n\t\t\t\t\t\t\"name\": \"北安市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231182\",\n\t\t\t\t\t\t\"name\": \"五大连池市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"231200\",\n\t\t\t\t\"name\": \"绥化市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231202\",\n\t\t\t\t\t\t\"name\": \"北林区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231221\",\n\t\t\t\t\t\t\"name\": \"望奎县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231222\",\n\t\t\t\t\t\t\"name\": \"兰西县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231223\",\n\t\t\t\t\t\t\"name\": \"青冈县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231224\",\n\t\t\t\t\t\t\"name\": \"庆安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231225\",\n\t\t\t\t\t\t\"name\": \"明水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231226\",\n\t\t\t\t\t\t\"name\": \"绥棱县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231281\",\n\t\t\t\t\t\t\"name\": \"安达市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231282\",\n\t\t\t\t\t\t\"name\": \"肇东市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"231283\",\n\t\t\t\t\t\t\"name\": \"海伦市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"232700\",\n\t\t\t\t\"name\": \"大兴安岭地区\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"232701\",\n\t\t\t\t\t\t\"name\": \"漠河市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"232721\",\n\t\t\t\t\t\t\"name\": \"呼玛县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"232722\",\n\t\t\t\t\t\t\"name\": \"塔河县\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"310000\",\n\t\t\"name\": \"上海市\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"310000\",\n\t\t\t\t\"name\": \"上海市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"310101\",\n\t\t\t\t\t\t\"name\": \"黄浦区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"310104\",\n\t\t\t\t\t\t\"name\": \"徐汇区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"310105\",\n\t\t\t\t\t\t\"name\": \"长宁区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"310106\",\n\t\t\t\t\t\t\"name\": \"静安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"310107\",\n\t\t\t\t\t\t\"name\": \"普陀区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"310109\",\n\t\t\t\t\t\t\"name\": \"虹口区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"310110\",\n\t\t\t\t\t\t\"name\": \"杨浦区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"310112\",\n\t\t\t\t\t\t\"name\": \"闵行区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"310113\",\n\t\t\t\t\t\t\"name\": \"宝山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"310114\",\n\t\t\t\t\t\t\"name\": \"嘉定区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"310115\",\n\t\t\t\t\t\t\"name\": \"浦东新区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"310116\",\n\t\t\t\t\t\t\"name\": \"金山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"310117\",\n\t\t\t\t\t\t\"name\": \"松江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"310118\",\n\t\t\t\t\t\t\"name\": \"青浦区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"310120\",\n\t\t\t\t\t\t\"name\": \"奉贤区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"310151\",\n\t\t\t\t\t\t\"name\": \"崇明区\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"320000\",\n\t\t\"name\": \"江苏省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"320100\",\n\t\t\t\t\"name\": \"南京市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320102\",\n\t\t\t\t\t\t\"name\": \"玄武区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320104\",\n\t\t\t\t\t\t\"name\": \"秦淮区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320105\",\n\t\t\t\t\t\t\"name\": \"建邺区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320106\",\n\t\t\t\t\t\t\"name\": \"鼓楼区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320111\",\n\t\t\t\t\t\t\"name\": \"浦口区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320113\",\n\t\t\t\t\t\t\"name\": \"栖霞区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320114\",\n\t\t\t\t\t\t\"name\": \"雨花台区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320115\",\n\t\t\t\t\t\t\"name\": \"江宁区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320116\",\n\t\t\t\t\t\t\"name\": \"六合区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320117\",\n\t\t\t\t\t\t\"name\": \"溧水区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320118\",\n\t\t\t\t\t\t\"name\": \"高淳区\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"320200\",\n\t\t\t\t\"name\": \"无锡市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320205\",\n\t\t\t\t\t\t\"name\": \"锡山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320206\",\n\t\t\t\t\t\t\"name\": \"惠山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320211\",\n\t\t\t\t\t\t\"name\": \"滨湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320213\",\n\t\t\t\t\t\t\"name\": \"梁溪区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320214\",\n\t\t\t\t\t\t\"name\": \"新吴区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320281\",\n\t\t\t\t\t\t\"name\": \"江阴市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320282\",\n\t\t\t\t\t\t\"name\": \"宜兴市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"320300\",\n\t\t\t\t\"name\": \"徐州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320302\",\n\t\t\t\t\t\t\"name\": \"鼓楼区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320303\",\n\t\t\t\t\t\t\"name\": \"云龙区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320305\",\n\t\t\t\t\t\t\"name\": \"贾汪区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320311\",\n\t\t\t\t\t\t\"name\": \"泉山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320312\",\n\t\t\t\t\t\t\"name\": \"铜山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320321\",\n\t\t\t\t\t\t\"name\": \"丰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320322\",\n\t\t\t\t\t\t\"name\": \"沛县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320324\",\n\t\t\t\t\t\t\"name\": \"睢宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320381\",\n\t\t\t\t\t\t\"name\": \"新沂市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320382\",\n\t\t\t\t\t\t\"name\": \"邳州市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"320400\",\n\t\t\t\t\"name\": \"常州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320402\",\n\t\t\t\t\t\t\"name\": \"天宁区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320404\",\n\t\t\t\t\t\t\"name\": \"钟楼区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320411\",\n\t\t\t\t\t\t\"name\": \"新北区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320412\",\n\t\t\t\t\t\t\"name\": \"武进区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320413\",\n\t\t\t\t\t\t\"name\": \"金坛区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320481\",\n\t\t\t\t\t\t\"name\": \"溧阳市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"320500\",\n\t\t\t\t\"name\": \"苏州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320505\",\n\t\t\t\t\t\t\"name\": \"虎丘区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320506\",\n\t\t\t\t\t\t\"name\": \"吴中区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320507\",\n\t\t\t\t\t\t\"name\": \"相城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320508\",\n\t\t\t\t\t\t\"name\": \"姑苏区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320509\",\n\t\t\t\t\t\t\"name\": \"吴江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320581\",\n\t\t\t\t\t\t\"name\": \"常熟市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320582\",\n\t\t\t\t\t\t\"name\": \"张家港市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320583\",\n\t\t\t\t\t\t\"name\": \"昆山市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320585\",\n\t\t\t\t\t\t\"name\": \"太仓市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"320600\",\n\t\t\t\t\"name\": \"南通市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320602\",\n\t\t\t\t\t\t\"name\": \"崇川区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320611\",\n\t\t\t\t\t\t\"name\": \"港闸区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320612\",\n\t\t\t\t\t\t\"name\": \"通州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320623\",\n\t\t\t\t\t\t\"name\": \"如东县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320681\",\n\t\t\t\t\t\t\"name\": \"启东市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320682\",\n\t\t\t\t\t\t\"name\": \"如皋市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320684\",\n\t\t\t\t\t\t\"name\": \"海门市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320685\",\n\t\t\t\t\t\t\"name\": \"海安市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"320700\",\n\t\t\t\t\"name\": \"连云港市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320703\",\n\t\t\t\t\t\t\"name\": \"连云区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320706\",\n\t\t\t\t\t\t\"name\": \"海州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320707\",\n\t\t\t\t\t\t\"name\": \"赣榆区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320722\",\n\t\t\t\t\t\t\"name\": \"东海县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320723\",\n\t\t\t\t\t\t\"name\": \"灌云县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320724\",\n\t\t\t\t\t\t\"name\": \"灌南县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"320800\",\n\t\t\t\t\"name\": \"淮安市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320803\",\n\t\t\t\t\t\t\"name\": \"淮安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320804\",\n\t\t\t\t\t\t\"name\": \"淮阴区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320812\",\n\t\t\t\t\t\t\"name\": \"清江浦区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320813\",\n\t\t\t\t\t\t\"name\": \"洪泽区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320826\",\n\t\t\t\t\t\t\"name\": \"涟水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320830\",\n\t\t\t\t\t\t\"name\": \"盱眙县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320831\",\n\t\t\t\t\t\t\"name\": \"金湖县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"320900\",\n\t\t\t\t\"name\": \"盐城市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320902\",\n\t\t\t\t\t\t\"name\": \"亭湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320903\",\n\t\t\t\t\t\t\"name\": \"盐都区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320904\",\n\t\t\t\t\t\t\"name\": \"大丰区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320921\",\n\t\t\t\t\t\t\"name\": \"响水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320922\",\n\t\t\t\t\t\t\"name\": \"滨海县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320923\",\n\t\t\t\t\t\t\"name\": \"阜宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320924\",\n\t\t\t\t\t\t\"name\": \"射阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320925\",\n\t\t\t\t\t\t\"name\": \"建湖县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"320981\",\n\t\t\t\t\t\t\"name\": \"东台市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"321000\",\n\t\t\t\t\"name\": \"扬州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321002\",\n\t\t\t\t\t\t\"name\": \"广陵区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321003\",\n\t\t\t\t\t\t\"name\": \"邗江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321012\",\n\t\t\t\t\t\t\"name\": \"江都区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321023\",\n\t\t\t\t\t\t\"name\": \"宝应县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321081\",\n\t\t\t\t\t\t\"name\": \"仪征市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321084\",\n\t\t\t\t\t\t\"name\": \"高邮市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"321100\",\n\t\t\t\t\"name\": \"镇江市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321102\",\n\t\t\t\t\t\t\"name\": \"京口区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321111\",\n\t\t\t\t\t\t\"name\": \"润州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321112\",\n\t\t\t\t\t\t\"name\": \"丹徒区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321181\",\n\t\t\t\t\t\t\"name\": \"丹阳市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321182\",\n\t\t\t\t\t\t\"name\": \"扬中市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321183\",\n\t\t\t\t\t\t\"name\": \"句容市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"321200\",\n\t\t\t\t\"name\": \"泰州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321202\",\n\t\t\t\t\t\t\"name\": \"海陵区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321203\",\n\t\t\t\t\t\t\"name\": \"高港区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321204\",\n\t\t\t\t\t\t\"name\": \"姜堰区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321281\",\n\t\t\t\t\t\t\"name\": \"兴化市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321282\",\n\t\t\t\t\t\t\"name\": \"靖江市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321283\",\n\t\t\t\t\t\t\"name\": \"泰兴市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"321300\",\n\t\t\t\t\"name\": \"宿迁市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321302\",\n\t\t\t\t\t\t\"name\": \"宿城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321311\",\n\t\t\t\t\t\t\"name\": \"宿豫区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321322\",\n\t\t\t\t\t\t\"name\": \"沭阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321323\",\n\t\t\t\t\t\t\"name\": \"泗阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"321324\",\n\t\t\t\t\t\t\"name\": \"泗洪县\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"330000\",\n\t\t\"name\": \"浙江省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"330100\",\n\t\t\t\t\"name\": \"杭州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330102\",\n\t\t\t\t\t\t\"name\": \"上城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330103\",\n\t\t\t\t\t\t\"name\": \"下城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330104\",\n\t\t\t\t\t\t\"name\": \"江干区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330105\",\n\t\t\t\t\t\t\"name\": \"拱墅区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330106\",\n\t\t\t\t\t\t\"name\": \"西湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330108\",\n\t\t\t\t\t\t\"name\": \"滨江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330109\",\n\t\t\t\t\t\t\"name\": \"萧山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330110\",\n\t\t\t\t\t\t\"name\": \"余杭区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330111\",\n\t\t\t\t\t\t\"name\": \"富阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330112\",\n\t\t\t\t\t\t\"name\": \"临安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330122\",\n\t\t\t\t\t\t\"name\": \"桐庐县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330127\",\n\t\t\t\t\t\t\"name\": \"淳安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330182\",\n\t\t\t\t\t\t\"name\": \"建德市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"330200\",\n\t\t\t\t\"name\": \"宁波市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330203\",\n\t\t\t\t\t\t\"name\": \"海曙区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330205\",\n\t\t\t\t\t\t\"name\": \"江北区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330206\",\n\t\t\t\t\t\t\"name\": \"北仑区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330211\",\n\t\t\t\t\t\t\"name\": \"镇海区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330212\",\n\t\t\t\t\t\t\"name\": \"鄞州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330213\",\n\t\t\t\t\t\t\"name\": \"奉化区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330225\",\n\t\t\t\t\t\t\"name\": \"象山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330226\",\n\t\t\t\t\t\t\"name\": \"宁海县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330281\",\n\t\t\t\t\t\t\"name\": \"余姚市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330282\",\n\t\t\t\t\t\t\"name\": \"慈溪市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"330300\",\n\t\t\t\t\"name\": \"温州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330302\",\n\t\t\t\t\t\t\"name\": \"鹿城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330303\",\n\t\t\t\t\t\t\"name\": \"龙湾区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330304\",\n\t\t\t\t\t\t\"name\": \"瓯海区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330305\",\n\t\t\t\t\t\t\"name\": \"洞头区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330324\",\n\t\t\t\t\t\t\"name\": \"永嘉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330326\",\n\t\t\t\t\t\t\"name\": \"平阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330327\",\n\t\t\t\t\t\t\"name\": \"苍南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330328\",\n\t\t\t\t\t\t\"name\": \"文成县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330329\",\n\t\t\t\t\t\t\"name\": \"泰顺县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330381\",\n\t\t\t\t\t\t\"name\": \"瑞安市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330382\",\n\t\t\t\t\t\t\"name\": \"乐清市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"330400\",\n\t\t\t\t\"name\": \"嘉兴市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330402\",\n\t\t\t\t\t\t\"name\": \"南湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330411\",\n\t\t\t\t\t\t\"name\": \"秀洲区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330421\",\n\t\t\t\t\t\t\"name\": \"嘉善县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330424\",\n\t\t\t\t\t\t\"name\": \"海盐县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330481\",\n\t\t\t\t\t\t\"name\": \"海宁市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330482\",\n\t\t\t\t\t\t\"name\": \"平湖市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330483\",\n\t\t\t\t\t\t\"name\": \"桐乡市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"330500\",\n\t\t\t\t\"name\": \"湖州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330502\",\n\t\t\t\t\t\t\"name\": \"吴兴区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330503\",\n\t\t\t\t\t\t\"name\": \"南浔区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330521\",\n\t\t\t\t\t\t\"name\": \"德清县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330522\",\n\t\t\t\t\t\t\"name\": \"长兴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330523\",\n\t\t\t\t\t\t\"name\": \"安吉县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"330600\",\n\t\t\t\t\"name\": \"绍兴市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330602\",\n\t\t\t\t\t\t\"name\": \"越城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330603\",\n\t\t\t\t\t\t\"name\": \"柯桥区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330604\",\n\t\t\t\t\t\t\"name\": \"上虞区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330624\",\n\t\t\t\t\t\t\"name\": \"新昌县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330681\",\n\t\t\t\t\t\t\"name\": \"诸暨市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330683\",\n\t\t\t\t\t\t\"name\": \"嵊州市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"330700\",\n\t\t\t\t\"name\": \"金华市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330702\",\n\t\t\t\t\t\t\"name\": \"婺城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330703\",\n\t\t\t\t\t\t\"name\": \"金东区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330723\",\n\t\t\t\t\t\t\"name\": \"武义县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330726\",\n\t\t\t\t\t\t\"name\": \"浦江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330727\",\n\t\t\t\t\t\t\"name\": \"磐安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330781\",\n\t\t\t\t\t\t\"name\": \"兰溪市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330782\",\n\t\t\t\t\t\t\"name\": \"义乌市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330783\",\n\t\t\t\t\t\t\"name\": \"东阳市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330784\",\n\t\t\t\t\t\t\"name\": \"永康市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"330800\",\n\t\t\t\t\"name\": \"衢州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330802\",\n\t\t\t\t\t\t\"name\": \"柯城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330803\",\n\t\t\t\t\t\t\"name\": \"衢江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330822\",\n\t\t\t\t\t\t\"name\": \"常山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330824\",\n\t\t\t\t\t\t\"name\": \"开化县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330825\",\n\t\t\t\t\t\t\"name\": \"龙游县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330881\",\n\t\t\t\t\t\t\"name\": \"江山市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"330900\",\n\t\t\t\t\"name\": \"舟山市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330902\",\n\t\t\t\t\t\t\"name\": \"定海区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330903\",\n\t\t\t\t\t\t\"name\": \"普陀区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330921\",\n\t\t\t\t\t\t\"name\": \"岱山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"330922\",\n\t\t\t\t\t\t\"name\": \"嵊泗县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"331000\",\n\t\t\t\t\"name\": \"台州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"331002\",\n\t\t\t\t\t\t\"name\": \"椒江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"331003\",\n\t\t\t\t\t\t\"name\": \"黄岩区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"331004\",\n\t\t\t\t\t\t\"name\": \"路桥区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"331022\",\n\t\t\t\t\t\t\"name\": \"三门县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"331023\",\n\t\t\t\t\t\t\"name\": \"天台县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"331024\",\n\t\t\t\t\t\t\"name\": \"仙居县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"331081\",\n\t\t\t\t\t\t\"name\": \"温岭市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"331082\",\n\t\t\t\t\t\t\"name\": \"临海市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"331083\",\n\t\t\t\t\t\t\"name\": \"玉环市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"331100\",\n\t\t\t\t\"name\": \"丽水市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"331102\",\n\t\t\t\t\t\t\"name\": \"莲都区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"331121\",\n\t\t\t\t\t\t\"name\": \"青田县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"331122\",\n\t\t\t\t\t\t\"name\": \"缙云县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"331123\",\n\t\t\t\t\t\t\"name\": \"遂昌县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"331124\",\n\t\t\t\t\t\t\"name\": \"松阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"331125\",\n\t\t\t\t\t\t\"name\": \"云和县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"331126\",\n\t\t\t\t\t\t\"name\": \"庆元县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"331127\",\n\t\t\t\t\t\t\"name\": \"景宁畲族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"331181\",\n\t\t\t\t\t\t\"name\": \"龙泉市\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"340000\",\n\t\t\"name\": \"安徽省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"340100\",\n\t\t\t\t\"name\": \"合肥市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340102\",\n\t\t\t\t\t\t\"name\": \"瑶海区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340103\",\n\t\t\t\t\t\t\"name\": \"庐阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340104\",\n\t\t\t\t\t\t\"name\": \"蜀山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340111\",\n\t\t\t\t\t\t\"name\": \"包河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340121\",\n\t\t\t\t\t\t\"name\": \"长丰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340122\",\n\t\t\t\t\t\t\"name\": \"肥东县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340123\",\n\t\t\t\t\t\t\"name\": \"肥西县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340124\",\n\t\t\t\t\t\t\"name\": \"庐江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340181\",\n\t\t\t\t\t\t\"name\": \"巢湖市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"340200\",\n\t\t\t\t\"name\": \"芜湖市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340202\",\n\t\t\t\t\t\t\"name\": \"镜湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340203\",\n\t\t\t\t\t\t\"name\": \"弋江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340207\",\n\t\t\t\t\t\t\"name\": \"鸠江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340208\",\n\t\t\t\t\t\t\"name\": \"三山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340221\",\n\t\t\t\t\t\t\"name\": \"芜湖县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340222\",\n\t\t\t\t\t\t\"name\": \"繁昌县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340223\",\n\t\t\t\t\t\t\"name\": \"南陵县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340225\",\n\t\t\t\t\t\t\"name\": \"无为县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"340300\",\n\t\t\t\t\"name\": \"蚌埠市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340302\",\n\t\t\t\t\t\t\"name\": \"龙子湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340303\",\n\t\t\t\t\t\t\"name\": \"蚌山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340304\",\n\t\t\t\t\t\t\"name\": \"禹会区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340311\",\n\t\t\t\t\t\t\"name\": \"淮上区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340321\",\n\t\t\t\t\t\t\"name\": \"怀远县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340322\",\n\t\t\t\t\t\t\"name\": \"五河县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340323\",\n\t\t\t\t\t\t\"name\": \"固镇县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"340400\",\n\t\t\t\t\"name\": \"淮南市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340402\",\n\t\t\t\t\t\t\"name\": \"大通区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340403\",\n\t\t\t\t\t\t\"name\": \"田家庵区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340404\",\n\t\t\t\t\t\t\"name\": \"谢家集区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340405\",\n\t\t\t\t\t\t\"name\": \"八公山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340406\",\n\t\t\t\t\t\t\"name\": \"潘集区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340421\",\n\t\t\t\t\t\t\"name\": \"凤台县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340422\",\n\t\t\t\t\t\t\"name\": \"寿县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"340500\",\n\t\t\t\t\"name\": \"马鞍山市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340503\",\n\t\t\t\t\t\t\"name\": \"花山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340504\",\n\t\t\t\t\t\t\"name\": \"雨山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340506\",\n\t\t\t\t\t\t\"name\": \"博望区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340521\",\n\t\t\t\t\t\t\"name\": \"当涂县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340522\",\n\t\t\t\t\t\t\"name\": \"含山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340523\",\n\t\t\t\t\t\t\"name\": \"和县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"340600\",\n\t\t\t\t\"name\": \"淮北市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340602\",\n\t\t\t\t\t\t\"name\": \"杜集区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340603\",\n\t\t\t\t\t\t\"name\": \"相山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340604\",\n\t\t\t\t\t\t\"name\": \"烈山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340621\",\n\t\t\t\t\t\t\"name\": \"濉溪县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"340700\",\n\t\t\t\t\"name\": \"铜陵市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340705\",\n\t\t\t\t\t\t\"name\": \"铜官区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340706\",\n\t\t\t\t\t\t\"name\": \"义安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340711\",\n\t\t\t\t\t\t\"name\": \"郊区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340722\",\n\t\t\t\t\t\t\"name\": \"枞阳县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"340800\",\n\t\t\t\t\"name\": \"安庆市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340802\",\n\t\t\t\t\t\t\"name\": \"迎江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340803\",\n\t\t\t\t\t\t\"name\": \"大观区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340811\",\n\t\t\t\t\t\t\"name\": \"宜秀区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340822\",\n\t\t\t\t\t\t\"name\": \"怀宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340824\",\n\t\t\t\t\t\t\"name\": \"潜山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340825\",\n\t\t\t\t\t\t\"name\": \"太湖县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340826\",\n\t\t\t\t\t\t\"name\": \"宿松县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340827\",\n\t\t\t\t\t\t\"name\": \"望江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340828\",\n\t\t\t\t\t\t\"name\": \"岳西县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"340881\",\n\t\t\t\t\t\t\"name\": \"桐城市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"341000\",\n\t\t\t\t\"name\": \"黄山市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341002\",\n\t\t\t\t\t\t\"name\": \"屯溪区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341003\",\n\t\t\t\t\t\t\"name\": \"黄山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341004\",\n\t\t\t\t\t\t\"name\": \"徽州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341021\",\n\t\t\t\t\t\t\"name\": \"歙县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341022\",\n\t\t\t\t\t\t\"name\": \"休宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341023\",\n\t\t\t\t\t\t\"name\": \"黟县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341024\",\n\t\t\t\t\t\t\"name\": \"祁门县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"341100\",\n\t\t\t\t\"name\": \"滁州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341102\",\n\t\t\t\t\t\t\"name\": \"琅琊区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341103\",\n\t\t\t\t\t\t\"name\": \"南谯区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341122\",\n\t\t\t\t\t\t\"name\": \"来安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341124\",\n\t\t\t\t\t\t\"name\": \"全椒县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341125\",\n\t\t\t\t\t\t\"name\": \"定远县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341126\",\n\t\t\t\t\t\t\"name\": \"凤阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341181\",\n\t\t\t\t\t\t\"name\": \"天长市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341182\",\n\t\t\t\t\t\t\"name\": \"明光市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"341200\",\n\t\t\t\t\"name\": \"阜阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341202\",\n\t\t\t\t\t\t\"name\": \"颍州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341203\",\n\t\t\t\t\t\t\"name\": \"颍东区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341204\",\n\t\t\t\t\t\t\"name\": \"颍泉区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341221\",\n\t\t\t\t\t\t\"name\": \"临泉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341222\",\n\t\t\t\t\t\t\"name\": \"太和县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341225\",\n\t\t\t\t\t\t\"name\": \"阜南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341226\",\n\t\t\t\t\t\t\"name\": \"颍上县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341282\",\n\t\t\t\t\t\t\"name\": \"界首市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"341300\",\n\t\t\t\t\"name\": \"宿州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341302\",\n\t\t\t\t\t\t\"name\": \"埇桥区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341321\",\n\t\t\t\t\t\t\"name\": \"砀山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341322\",\n\t\t\t\t\t\t\"name\": \"萧县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341323\",\n\t\t\t\t\t\t\"name\": \"灵璧县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341324\",\n\t\t\t\t\t\t\"name\": \"泗县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"341500\",\n\t\t\t\t\"name\": \"六安市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341502\",\n\t\t\t\t\t\t\"name\": \"金安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341503\",\n\t\t\t\t\t\t\"name\": \"裕安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341504\",\n\t\t\t\t\t\t\"name\": \"叶集区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341522\",\n\t\t\t\t\t\t\"name\": \"霍邱县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341523\",\n\t\t\t\t\t\t\"name\": \"舒城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341524\",\n\t\t\t\t\t\t\"name\": \"金寨县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341525\",\n\t\t\t\t\t\t\"name\": \"霍山县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"341600\",\n\t\t\t\t\"name\": \"亳州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341602\",\n\t\t\t\t\t\t\"name\": \"谯城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341621\",\n\t\t\t\t\t\t\"name\": \"涡阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341622\",\n\t\t\t\t\t\t\"name\": \"蒙城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341623\",\n\t\t\t\t\t\t\"name\": \"利辛县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"341700\",\n\t\t\t\t\"name\": \"池州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341702\",\n\t\t\t\t\t\t\"name\": \"贵池区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341721\",\n\t\t\t\t\t\t\"name\": \"东至县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341722\",\n\t\t\t\t\t\t\"name\": \"石台县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341723\",\n\t\t\t\t\t\t\"name\": \"青阳县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"341800\",\n\t\t\t\t\"name\": \"宣城市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341802\",\n\t\t\t\t\t\t\"name\": \"宣州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341821\",\n\t\t\t\t\t\t\"name\": \"郎溪县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341822\",\n\t\t\t\t\t\t\"name\": \"广德县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341823\",\n\t\t\t\t\t\t\"name\": \"泾县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341824\",\n\t\t\t\t\t\t\"name\": \"绩溪县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341825\",\n\t\t\t\t\t\t\"name\": \"旌德县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"341881\",\n\t\t\t\t\t\t\"name\": \"宁国市\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"350000\",\n\t\t\"name\": \"福建省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"350100\",\n\t\t\t\t\"name\": \"福州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350102\",\n\t\t\t\t\t\t\"name\": \"鼓楼区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350103\",\n\t\t\t\t\t\t\"name\": \"台江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350104\",\n\t\t\t\t\t\t\"name\": \"仓山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350105\",\n\t\t\t\t\t\t\"name\": \"马尾区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350111\",\n\t\t\t\t\t\t\"name\": \"晋安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350112\",\n\t\t\t\t\t\t\"name\": \"长乐区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350121\",\n\t\t\t\t\t\t\"name\": \"闽侯县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350122\",\n\t\t\t\t\t\t\"name\": \"连江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350123\",\n\t\t\t\t\t\t\"name\": \"罗源县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350124\",\n\t\t\t\t\t\t\"name\": \"闽清县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350125\",\n\t\t\t\t\t\t\"name\": \"永泰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350128\",\n\t\t\t\t\t\t\"name\": \"平潭县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350181\",\n\t\t\t\t\t\t\"name\": \"福清市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"350200\",\n\t\t\t\t\"name\": \"厦门市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350203\",\n\t\t\t\t\t\t\"name\": \"思明区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350205\",\n\t\t\t\t\t\t\"name\": \"海沧区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350206\",\n\t\t\t\t\t\t\"name\": \"湖里区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350211\",\n\t\t\t\t\t\t\"name\": \"集美区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350212\",\n\t\t\t\t\t\t\"name\": \"同安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350213\",\n\t\t\t\t\t\t\"name\": \"翔安区\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"350300\",\n\t\t\t\t\"name\": \"莆田市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350302\",\n\t\t\t\t\t\t\"name\": \"城厢区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350303\",\n\t\t\t\t\t\t\"name\": \"涵江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350304\",\n\t\t\t\t\t\t\"name\": \"荔城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350305\",\n\t\t\t\t\t\t\"name\": \"秀屿区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350322\",\n\t\t\t\t\t\t\"name\": \"仙游县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"350400\",\n\t\t\t\t\"name\": \"三明市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350402\",\n\t\t\t\t\t\t\"name\": \"梅列区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350403\",\n\t\t\t\t\t\t\"name\": \"三元区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350421\",\n\t\t\t\t\t\t\"name\": \"明溪县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350423\",\n\t\t\t\t\t\t\"name\": \"清流县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350424\",\n\t\t\t\t\t\t\"name\": \"宁化县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350425\",\n\t\t\t\t\t\t\"name\": \"大田县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350426\",\n\t\t\t\t\t\t\"name\": \"尤溪县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350427\",\n\t\t\t\t\t\t\"name\": \"沙县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350428\",\n\t\t\t\t\t\t\"name\": \"将乐县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350429\",\n\t\t\t\t\t\t\"name\": \"泰宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350430\",\n\t\t\t\t\t\t\"name\": \"建宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350481\",\n\t\t\t\t\t\t\"name\": \"永安市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"350500\",\n\t\t\t\t\"name\": \"泉州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350502\",\n\t\t\t\t\t\t\"name\": \"鲤城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350503\",\n\t\t\t\t\t\t\"name\": \"丰泽区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350504\",\n\t\t\t\t\t\t\"name\": \"洛江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350505\",\n\t\t\t\t\t\t\"name\": \"泉港区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350521\",\n\t\t\t\t\t\t\"name\": \"惠安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350524\",\n\t\t\t\t\t\t\"name\": \"安溪县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350525\",\n\t\t\t\t\t\t\"name\": \"永春县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350526\",\n\t\t\t\t\t\t\"name\": \"德化县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350527\",\n\t\t\t\t\t\t\"name\": \"金门县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350581\",\n\t\t\t\t\t\t\"name\": \"石狮市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350582\",\n\t\t\t\t\t\t\"name\": \"晋江市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350583\",\n\t\t\t\t\t\t\"name\": \"南安市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"350600\",\n\t\t\t\t\"name\": \"漳州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350602\",\n\t\t\t\t\t\t\"name\": \"芗城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350603\",\n\t\t\t\t\t\t\"name\": \"龙文区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350622\",\n\t\t\t\t\t\t\"name\": \"云霄县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350623\",\n\t\t\t\t\t\t\"name\": \"漳浦县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350624\",\n\t\t\t\t\t\t\"name\": \"诏安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350625\",\n\t\t\t\t\t\t\"name\": \"长泰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350626\",\n\t\t\t\t\t\t\"name\": \"东山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350627\",\n\t\t\t\t\t\t\"name\": \"南靖县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350628\",\n\t\t\t\t\t\t\"name\": \"平和县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350629\",\n\t\t\t\t\t\t\"name\": \"华安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350681\",\n\t\t\t\t\t\t\"name\": \"龙海市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"350700\",\n\t\t\t\t\"name\": \"南平市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350702\",\n\t\t\t\t\t\t\"name\": \"延平区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350703\",\n\t\t\t\t\t\t\"name\": \"建阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350721\",\n\t\t\t\t\t\t\"name\": \"顺昌县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350722\",\n\t\t\t\t\t\t\"name\": \"浦城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350723\",\n\t\t\t\t\t\t\"name\": \"光泽县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350724\",\n\t\t\t\t\t\t\"name\": \"松溪县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350725\",\n\t\t\t\t\t\t\"name\": \"政和县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350781\",\n\t\t\t\t\t\t\"name\": \"邵武市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350782\",\n\t\t\t\t\t\t\"name\": \"武夷山市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350783\",\n\t\t\t\t\t\t\"name\": \"建瓯市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"350800\",\n\t\t\t\t\"name\": \"龙岩市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350802\",\n\t\t\t\t\t\t\"name\": \"新罗区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350803\",\n\t\t\t\t\t\t\"name\": \"永定区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350821\",\n\t\t\t\t\t\t\"name\": \"长汀县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350823\",\n\t\t\t\t\t\t\"name\": \"上杭县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350824\",\n\t\t\t\t\t\t\"name\": \"武平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350825\",\n\t\t\t\t\t\t\"name\": \"连城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350881\",\n\t\t\t\t\t\t\"name\": \"漳平市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"350900\",\n\t\t\t\t\"name\": \"宁德市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350902\",\n\t\t\t\t\t\t\"name\": \"蕉城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350921\",\n\t\t\t\t\t\t\"name\": \"霞浦县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350922\",\n\t\t\t\t\t\t\"name\": \"古田县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350923\",\n\t\t\t\t\t\t\"name\": \"屏南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350924\",\n\t\t\t\t\t\t\"name\": \"寿宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350925\",\n\t\t\t\t\t\t\"name\": \"周宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350926\",\n\t\t\t\t\t\t\"name\": \"柘荣县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350981\",\n\t\t\t\t\t\t\"name\": \"福安市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"350982\",\n\t\t\t\t\t\t\"name\": \"福鼎市\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"360000\",\n\t\t\"name\": \"江西省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"360100\",\n\t\t\t\t\"name\": \"南昌市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360102\",\n\t\t\t\t\t\t\"name\": \"东湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360103\",\n\t\t\t\t\t\t\"name\": \"西湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360104\",\n\t\t\t\t\t\t\"name\": \"青云谱区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360105\",\n\t\t\t\t\t\t\"name\": \"湾里区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360111\",\n\t\t\t\t\t\t\"name\": \"青山湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360112\",\n\t\t\t\t\t\t\"name\": \"新建区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360121\",\n\t\t\t\t\t\t\"name\": \"南昌县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360123\",\n\t\t\t\t\t\t\"name\": \"安义县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360124\",\n\t\t\t\t\t\t\"name\": \"进贤县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"360200\",\n\t\t\t\t\"name\": \"景德镇市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360202\",\n\t\t\t\t\t\t\"name\": \"昌江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360203\",\n\t\t\t\t\t\t\"name\": \"珠山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360222\",\n\t\t\t\t\t\t\"name\": \"浮梁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360281\",\n\t\t\t\t\t\t\"name\": \"乐平市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"360300\",\n\t\t\t\t\"name\": \"萍乡市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360302\",\n\t\t\t\t\t\t\"name\": \"安源区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360313\",\n\t\t\t\t\t\t\"name\": \"湘东区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360321\",\n\t\t\t\t\t\t\"name\": \"莲花县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360322\",\n\t\t\t\t\t\t\"name\": \"上栗县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360323\",\n\t\t\t\t\t\t\"name\": \"芦溪县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"360400\",\n\t\t\t\t\"name\": \"九江市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360402\",\n\t\t\t\t\t\t\"name\": \"濂溪区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360403\",\n\t\t\t\t\t\t\"name\": \"浔阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360404\",\n\t\t\t\t\t\t\"name\": \"柴桑区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360423\",\n\t\t\t\t\t\t\"name\": \"武宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360424\",\n\t\t\t\t\t\t\"name\": \"修水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360425\",\n\t\t\t\t\t\t\"name\": \"永修县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360426\",\n\t\t\t\t\t\t\"name\": \"德安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360428\",\n\t\t\t\t\t\t\"name\": \"都昌县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360429\",\n\t\t\t\t\t\t\"name\": \"湖口县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360430\",\n\t\t\t\t\t\t\"name\": \"彭泽县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360481\",\n\t\t\t\t\t\t\"name\": \"瑞昌市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360482\",\n\t\t\t\t\t\t\"name\": \"共青城市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360483\",\n\t\t\t\t\t\t\"name\": \"庐山市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"360500\",\n\t\t\t\t\"name\": \"新余市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360502\",\n\t\t\t\t\t\t\"name\": \"渝水区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360521\",\n\t\t\t\t\t\t\"name\": \"分宜县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"360600\",\n\t\t\t\t\"name\": \"鹰潭市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360602\",\n\t\t\t\t\t\t\"name\": \"月湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360603\",\n\t\t\t\t\t\t\"name\": \"余江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360681\",\n\t\t\t\t\t\t\"name\": \"贵溪市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"360700\",\n\t\t\t\t\"name\": \"赣州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360702\",\n\t\t\t\t\t\t\"name\": \"章贡区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360703\",\n\t\t\t\t\t\t\"name\": \"南康区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360704\",\n\t\t\t\t\t\t\"name\": \"赣县区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360722\",\n\t\t\t\t\t\t\"name\": \"信丰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360723\",\n\t\t\t\t\t\t\"name\": \"大余县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360724\",\n\t\t\t\t\t\t\"name\": \"上犹县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360725\",\n\t\t\t\t\t\t\"name\": \"崇义县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360726\",\n\t\t\t\t\t\t\"name\": \"安远县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360727\",\n\t\t\t\t\t\t\"name\": \"龙南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360728\",\n\t\t\t\t\t\t\"name\": \"定南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360729\",\n\t\t\t\t\t\t\"name\": \"全南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360730\",\n\t\t\t\t\t\t\"name\": \"宁都县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360731\",\n\t\t\t\t\t\t\"name\": \"于都县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360732\",\n\t\t\t\t\t\t\"name\": \"兴国县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360733\",\n\t\t\t\t\t\t\"name\": \"会昌县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360734\",\n\t\t\t\t\t\t\"name\": \"寻乌县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360735\",\n\t\t\t\t\t\t\"name\": \"石城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360781\",\n\t\t\t\t\t\t\"name\": \"瑞金市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"360800\",\n\t\t\t\t\"name\": \"吉安市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360802\",\n\t\t\t\t\t\t\"name\": \"吉州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360803\",\n\t\t\t\t\t\t\"name\": \"青原区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360821\",\n\t\t\t\t\t\t\"name\": \"吉安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360822\",\n\t\t\t\t\t\t\"name\": \"吉水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360823\",\n\t\t\t\t\t\t\"name\": \"峡江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360824\",\n\t\t\t\t\t\t\"name\": \"新干县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360825\",\n\t\t\t\t\t\t\"name\": \"永丰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360826\",\n\t\t\t\t\t\t\"name\": \"泰和县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360827\",\n\t\t\t\t\t\t\"name\": \"遂川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360828\",\n\t\t\t\t\t\t\"name\": \"万安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360829\",\n\t\t\t\t\t\t\"name\": \"安福县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360830\",\n\t\t\t\t\t\t\"name\": \"永新县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360881\",\n\t\t\t\t\t\t\"name\": \"井冈山市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"360900\",\n\t\t\t\t\"name\": \"宜春市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360902\",\n\t\t\t\t\t\t\"name\": \"袁州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360921\",\n\t\t\t\t\t\t\"name\": \"奉新县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360922\",\n\t\t\t\t\t\t\"name\": \"万载县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360923\",\n\t\t\t\t\t\t\"name\": \"上高县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360924\",\n\t\t\t\t\t\t\"name\": \"宜丰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360925\",\n\t\t\t\t\t\t\"name\": \"靖安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360926\",\n\t\t\t\t\t\t\"name\": \"铜鼓县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360981\",\n\t\t\t\t\t\t\"name\": \"丰城市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360982\",\n\t\t\t\t\t\t\"name\": \"樟树市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"360983\",\n\t\t\t\t\t\t\"name\": \"高安市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"361000\",\n\t\t\t\t\"name\": \"抚州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361002\",\n\t\t\t\t\t\t\"name\": \"临川区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361003\",\n\t\t\t\t\t\t\"name\": \"东乡区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361021\",\n\t\t\t\t\t\t\"name\": \"南城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361022\",\n\t\t\t\t\t\t\"name\": \"黎川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361023\",\n\t\t\t\t\t\t\"name\": \"南丰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361024\",\n\t\t\t\t\t\t\"name\": \"崇仁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361025\",\n\t\t\t\t\t\t\"name\": \"乐安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361026\",\n\t\t\t\t\t\t\"name\": \"宜黄县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361027\",\n\t\t\t\t\t\t\"name\": \"金溪县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361028\",\n\t\t\t\t\t\t\"name\": \"资溪县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361030\",\n\t\t\t\t\t\t\"name\": \"广昌县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"361100\",\n\t\t\t\t\"name\": \"上饶市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361102\",\n\t\t\t\t\t\t\"name\": \"信州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361103\",\n\t\t\t\t\t\t\"name\": \"广丰区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361121\",\n\t\t\t\t\t\t\"name\": \"上饶县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361123\",\n\t\t\t\t\t\t\"name\": \"玉山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361124\",\n\t\t\t\t\t\t\"name\": \"铅山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361125\",\n\t\t\t\t\t\t\"name\": \"横峰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361126\",\n\t\t\t\t\t\t\"name\": \"弋阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361127\",\n\t\t\t\t\t\t\"name\": \"余干县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361128\",\n\t\t\t\t\t\t\"name\": \"鄱阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361129\",\n\t\t\t\t\t\t\"name\": \"万年县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361130\",\n\t\t\t\t\t\t\"name\": \"婺源县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"361181\",\n\t\t\t\t\t\t\"name\": \"德兴市\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"370000\",\n\t\t\"name\": \"山东省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"370100\",\n\t\t\t\t\"name\": \"济南市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370102\",\n\t\t\t\t\t\t\"name\": \"历下区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370103\",\n\t\t\t\t\t\t\"name\": \"市中区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370104\",\n\t\t\t\t\t\t\"name\": \"槐荫区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370105\",\n\t\t\t\t\t\t\"name\": \"天桥区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370112\",\n\t\t\t\t\t\t\"name\": \"历城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370113\",\n\t\t\t\t\t\t\"name\": \"长清区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370114\",\n\t\t\t\t\t\t\"name\": \"章丘区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370124\",\n\t\t\t\t\t\t\"name\": \"平阴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370125\",\n\t\t\t\t\t\t\"name\": \"济阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370126\",\n\t\t\t\t\t\t\"name\": \"商河县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"370200\",\n\t\t\t\t\"name\": \"青岛市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370202\",\n\t\t\t\t\t\t\"name\": \"市南区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370203\",\n\t\t\t\t\t\t\"name\": \"市北区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370211\",\n\t\t\t\t\t\t\"name\": \"黄岛区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370212\",\n\t\t\t\t\t\t\"name\": \"崂山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370213\",\n\t\t\t\t\t\t\"name\": \"李沧区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370214\",\n\t\t\t\t\t\t\"name\": \"城阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370215\",\n\t\t\t\t\t\t\"name\": \"即墨区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370281\",\n\t\t\t\t\t\t\"name\": \"胶州市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370283\",\n\t\t\t\t\t\t\"name\": \"平度市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370285\",\n\t\t\t\t\t\t\"name\": \"莱西市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"370300\",\n\t\t\t\t\"name\": \"淄博市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370302\",\n\t\t\t\t\t\t\"name\": \"淄川区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370303\",\n\t\t\t\t\t\t\"name\": \"张店区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370304\",\n\t\t\t\t\t\t\"name\": \"博山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370305\",\n\t\t\t\t\t\t\"name\": \"临淄区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370306\",\n\t\t\t\t\t\t\"name\": \"周村区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370321\",\n\t\t\t\t\t\t\"name\": \"桓台县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370322\",\n\t\t\t\t\t\t\"name\": \"高青县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370323\",\n\t\t\t\t\t\t\"name\": \"沂源县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"370400\",\n\t\t\t\t\"name\": \"枣庄市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370402\",\n\t\t\t\t\t\t\"name\": \"市中区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370403\",\n\t\t\t\t\t\t\"name\": \"薛城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370404\",\n\t\t\t\t\t\t\"name\": \"峄城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370405\",\n\t\t\t\t\t\t\"name\": \"台儿庄区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370406\",\n\t\t\t\t\t\t\"name\": \"山亭区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370481\",\n\t\t\t\t\t\t\"name\": \"滕州市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"370500\",\n\t\t\t\t\"name\": \"东营市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370502\",\n\t\t\t\t\t\t\"name\": \"东营区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370503\",\n\t\t\t\t\t\t\"name\": \"河口区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370505\",\n\t\t\t\t\t\t\"name\": \"垦利区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370522\",\n\t\t\t\t\t\t\"name\": \"利津县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370523\",\n\t\t\t\t\t\t\"name\": \"广饶县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"370600\",\n\t\t\t\t\"name\": \"烟台市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370602\",\n\t\t\t\t\t\t\"name\": \"芝罘区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370611\",\n\t\t\t\t\t\t\"name\": \"福山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370612\",\n\t\t\t\t\t\t\"name\": \"牟平区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370613\",\n\t\t\t\t\t\t\"name\": \"莱山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370634\",\n\t\t\t\t\t\t\"name\": \"长岛县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370681\",\n\t\t\t\t\t\t\"name\": \"龙口市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370682\",\n\t\t\t\t\t\t\"name\": \"莱阳市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370683\",\n\t\t\t\t\t\t\"name\": \"莱州市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370684\",\n\t\t\t\t\t\t\"name\": \"蓬莱市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370685\",\n\t\t\t\t\t\t\"name\": \"招远市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370686\",\n\t\t\t\t\t\t\"name\": \"栖霞市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370687\",\n\t\t\t\t\t\t\"name\": \"海阳市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"370700\",\n\t\t\t\t\"name\": \"潍坊市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370702\",\n\t\t\t\t\t\t\"name\": \"潍城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370703\",\n\t\t\t\t\t\t\"name\": \"寒亭区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370704\",\n\t\t\t\t\t\t\"name\": \"坊子区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370705\",\n\t\t\t\t\t\t\"name\": \"奎文区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370724\",\n\t\t\t\t\t\t\"name\": \"临朐县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370725\",\n\t\t\t\t\t\t\"name\": \"昌乐县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370781\",\n\t\t\t\t\t\t\"name\": \"青州市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370782\",\n\t\t\t\t\t\t\"name\": \"诸城市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370783\",\n\t\t\t\t\t\t\"name\": \"寿光市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370784\",\n\t\t\t\t\t\t\"name\": \"安丘市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370785\",\n\t\t\t\t\t\t\"name\": \"高密市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370786\",\n\t\t\t\t\t\t\"name\": \"昌邑市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"370800\",\n\t\t\t\t\"name\": \"济宁市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370811\",\n\t\t\t\t\t\t\"name\": \"任城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370812\",\n\t\t\t\t\t\t\"name\": \"兖州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370826\",\n\t\t\t\t\t\t\"name\": \"微山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370827\",\n\t\t\t\t\t\t\"name\": \"鱼台县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370828\",\n\t\t\t\t\t\t\"name\": \"金乡县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370829\",\n\t\t\t\t\t\t\"name\": \"嘉祥县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370830\",\n\t\t\t\t\t\t\"name\": \"汶上县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370831\",\n\t\t\t\t\t\t\"name\": \"泗水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370832\",\n\t\t\t\t\t\t\"name\": \"梁山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370881\",\n\t\t\t\t\t\t\"name\": \"曲阜市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370883\",\n\t\t\t\t\t\t\"name\": \"邹城市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"370900\",\n\t\t\t\t\"name\": \"泰安市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370902\",\n\t\t\t\t\t\t\"name\": \"泰山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370911\",\n\t\t\t\t\t\t\"name\": \"岱岳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370921\",\n\t\t\t\t\t\t\"name\": \"宁阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370923\",\n\t\t\t\t\t\t\"name\": \"东平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370982\",\n\t\t\t\t\t\t\"name\": \"新泰市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"370983\",\n\t\t\t\t\t\t\"name\": \"肥城市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"371000\",\n\t\t\t\t\"name\": \"威海市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371002\",\n\t\t\t\t\t\t\"name\": \"环翠区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371003\",\n\t\t\t\t\t\t\"name\": \"文登区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371082\",\n\t\t\t\t\t\t\"name\": \"荣成市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371083\",\n\t\t\t\t\t\t\"name\": \"乳山市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"371100\",\n\t\t\t\t\"name\": \"日照市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371102\",\n\t\t\t\t\t\t\"name\": \"东港区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371103\",\n\t\t\t\t\t\t\"name\": \"岚山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371121\",\n\t\t\t\t\t\t\"name\": \"五莲县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371122\",\n\t\t\t\t\t\t\"name\": \"莒县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"371200\",\n\t\t\t\t\"name\": \"莱芜市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371202\",\n\t\t\t\t\t\t\"name\": \"莱城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371203\",\n\t\t\t\t\t\t\"name\": \"钢城区\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"371300\",\n\t\t\t\t\"name\": \"临沂市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371302\",\n\t\t\t\t\t\t\"name\": \"兰山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371311\",\n\t\t\t\t\t\t\"name\": \"罗庄区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371312\",\n\t\t\t\t\t\t\"name\": \"河东区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371321\",\n\t\t\t\t\t\t\"name\": \"沂南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371322\",\n\t\t\t\t\t\t\"name\": \"郯城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371323\",\n\t\t\t\t\t\t\"name\": \"沂水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371324\",\n\t\t\t\t\t\t\"name\": \"兰陵县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371325\",\n\t\t\t\t\t\t\"name\": \"费县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371326\",\n\t\t\t\t\t\t\"name\": \"平邑县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371327\",\n\t\t\t\t\t\t\"name\": \"莒南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371328\",\n\t\t\t\t\t\t\"name\": \"蒙阴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371329\",\n\t\t\t\t\t\t\"name\": \"临沭县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"371400\",\n\t\t\t\t\"name\": \"德州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371402\",\n\t\t\t\t\t\t\"name\": \"德城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371403\",\n\t\t\t\t\t\t\"name\": \"陵城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371422\",\n\t\t\t\t\t\t\"name\": \"宁津县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371423\",\n\t\t\t\t\t\t\"name\": \"庆云县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371424\",\n\t\t\t\t\t\t\"name\": \"临邑县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371425\",\n\t\t\t\t\t\t\"name\": \"齐河县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371426\",\n\t\t\t\t\t\t\"name\": \"平原县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371427\",\n\t\t\t\t\t\t\"name\": \"夏津县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371428\",\n\t\t\t\t\t\t\"name\": \"武城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371481\",\n\t\t\t\t\t\t\"name\": \"乐陵市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371482\",\n\t\t\t\t\t\t\"name\": \"禹城市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"371500\",\n\t\t\t\t\"name\": \"聊城市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371502\",\n\t\t\t\t\t\t\"name\": \"东昌府区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371521\",\n\t\t\t\t\t\t\"name\": \"阳谷县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371522\",\n\t\t\t\t\t\t\"name\": \"莘县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371523\",\n\t\t\t\t\t\t\"name\": \"茌平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371524\",\n\t\t\t\t\t\t\"name\": \"东阿县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371525\",\n\t\t\t\t\t\t\"name\": \"冠县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371526\",\n\t\t\t\t\t\t\"name\": \"高唐县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371581\",\n\t\t\t\t\t\t\"name\": \"临清市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"371600\",\n\t\t\t\t\"name\": \"滨州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371602\",\n\t\t\t\t\t\t\"name\": \"滨城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371603\",\n\t\t\t\t\t\t\"name\": \"沾化区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371621\",\n\t\t\t\t\t\t\"name\": \"惠民县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371622\",\n\t\t\t\t\t\t\"name\": \"阳信县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371623\",\n\t\t\t\t\t\t\"name\": \"无棣县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371625\",\n\t\t\t\t\t\t\"name\": \"博兴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371626\",\n\t\t\t\t\t\t\"name\": \"邹平县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"371700\",\n\t\t\t\t\"name\": \"菏泽市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371702\",\n\t\t\t\t\t\t\"name\": \"牡丹区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371703\",\n\t\t\t\t\t\t\"name\": \"定陶区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371721\",\n\t\t\t\t\t\t\"name\": \"曹县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371722\",\n\t\t\t\t\t\t\"name\": \"单县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371723\",\n\t\t\t\t\t\t\"name\": \"成武县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371724\",\n\t\t\t\t\t\t\"name\": \"巨野县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371725\",\n\t\t\t\t\t\t\"name\": \"郓城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371726\",\n\t\t\t\t\t\t\"name\": \"鄄城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"371728\",\n\t\t\t\t\t\t\"name\": \"东明县\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"410000\",\n\t\t\"name\": \"河南省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"410100\",\n\t\t\t\t\"name\": \"郑州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410102\",\n\t\t\t\t\t\t\"name\": \"中原区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410103\",\n\t\t\t\t\t\t\"name\": \"二七区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410104\",\n\t\t\t\t\t\t\"name\": \"管城回族区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410105\",\n\t\t\t\t\t\t\"name\": \"金水区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410106\",\n\t\t\t\t\t\t\"name\": \"上街区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410108\",\n\t\t\t\t\t\t\"name\": \"惠济区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410122\",\n\t\t\t\t\t\t\"name\": \"中牟县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410181\",\n\t\t\t\t\t\t\"name\": \"巩义市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410182\",\n\t\t\t\t\t\t\"name\": \"荥阳市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410183\",\n\t\t\t\t\t\t\"name\": \"新密市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410184\",\n\t\t\t\t\t\t\"name\": \"新郑市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410185\",\n\t\t\t\t\t\t\"name\": \"登封市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"410200\",\n\t\t\t\t\"name\": \"开封市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410202\",\n\t\t\t\t\t\t\"name\": \"龙亭区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410203\",\n\t\t\t\t\t\t\"name\": \"顺河回族区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410204\",\n\t\t\t\t\t\t\"name\": \"鼓楼区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410205\",\n\t\t\t\t\t\t\"name\": \"禹王台区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410212\",\n\t\t\t\t\t\t\"name\": \"祥符区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410221\",\n\t\t\t\t\t\t\"name\": \"杞县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410222\",\n\t\t\t\t\t\t\"name\": \"通许县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410223\",\n\t\t\t\t\t\t\"name\": \"尉氏县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410225\",\n\t\t\t\t\t\t\"name\": \"兰考县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"410300\",\n\t\t\t\t\"name\": \"洛阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410302\",\n\t\t\t\t\t\t\"name\": \"老城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410303\",\n\t\t\t\t\t\t\"name\": \"西工区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410304\",\n\t\t\t\t\t\t\"name\": \"瀍河回族区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410305\",\n\t\t\t\t\t\t\"name\": \"涧西区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410306\",\n\t\t\t\t\t\t\"name\": \"吉利区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410311\",\n\t\t\t\t\t\t\"name\": \"洛龙区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410322\",\n\t\t\t\t\t\t\"name\": \"孟津县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410323\",\n\t\t\t\t\t\t\"name\": \"新安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410324\",\n\t\t\t\t\t\t\"name\": \"栾川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410325\",\n\t\t\t\t\t\t\"name\": \"嵩县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410326\",\n\t\t\t\t\t\t\"name\": \"汝阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410327\",\n\t\t\t\t\t\t\"name\": \"宜阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410328\",\n\t\t\t\t\t\t\"name\": \"洛宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410329\",\n\t\t\t\t\t\t\"name\": \"伊川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410381\",\n\t\t\t\t\t\t\"name\": \"偃师市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"410400\",\n\t\t\t\t\"name\": \"平顶山市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410402\",\n\t\t\t\t\t\t\"name\": \"新华区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410403\",\n\t\t\t\t\t\t\"name\": \"卫东区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410404\",\n\t\t\t\t\t\t\"name\": \"石龙区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410411\",\n\t\t\t\t\t\t\"name\": \"湛河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410421\",\n\t\t\t\t\t\t\"name\": \"宝丰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410422\",\n\t\t\t\t\t\t\"name\": \"叶县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410423\",\n\t\t\t\t\t\t\"name\": \"鲁山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410425\",\n\t\t\t\t\t\t\"name\": \"郏县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410481\",\n\t\t\t\t\t\t\"name\": \"舞钢市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410482\",\n\t\t\t\t\t\t\"name\": \"汝州市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"410500\",\n\t\t\t\t\"name\": \"安阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410502\",\n\t\t\t\t\t\t\"name\": \"文峰区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410503\",\n\t\t\t\t\t\t\"name\": \"北关区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410505\",\n\t\t\t\t\t\t\"name\": \"殷都区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410506\",\n\t\t\t\t\t\t\"name\": \"龙安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410522\",\n\t\t\t\t\t\t\"name\": \"安阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410523\",\n\t\t\t\t\t\t\"name\": \"汤阴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410526\",\n\t\t\t\t\t\t\"name\": \"滑县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410527\",\n\t\t\t\t\t\t\"name\": \"内黄县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410581\",\n\t\t\t\t\t\t\"name\": \"林州市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"410600\",\n\t\t\t\t\"name\": \"鹤壁市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410602\",\n\t\t\t\t\t\t\"name\": \"鹤山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410603\",\n\t\t\t\t\t\t\"name\": \"山城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410611\",\n\t\t\t\t\t\t\"name\": \"淇滨区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410621\",\n\t\t\t\t\t\t\"name\": \"浚县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410622\",\n\t\t\t\t\t\t\"name\": \"淇县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"410700\",\n\t\t\t\t\"name\": \"新乡市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410702\",\n\t\t\t\t\t\t\"name\": \"红旗区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410703\",\n\t\t\t\t\t\t\"name\": \"卫滨区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410704\",\n\t\t\t\t\t\t\"name\": \"凤泉区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410711\",\n\t\t\t\t\t\t\"name\": \"牧野区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410721\",\n\t\t\t\t\t\t\"name\": \"新乡县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410724\",\n\t\t\t\t\t\t\"name\": \"获嘉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410725\",\n\t\t\t\t\t\t\"name\": \"原阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410726\",\n\t\t\t\t\t\t\"name\": \"延津县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410727\",\n\t\t\t\t\t\t\"name\": \"封丘县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410728\",\n\t\t\t\t\t\t\"name\": \"长垣县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410781\",\n\t\t\t\t\t\t\"name\": \"卫辉市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410782\",\n\t\t\t\t\t\t\"name\": \"辉县市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"410800\",\n\t\t\t\t\"name\": \"焦作市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410802\",\n\t\t\t\t\t\t\"name\": \"解放区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410803\",\n\t\t\t\t\t\t\"name\": \"中站区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410804\",\n\t\t\t\t\t\t\"name\": \"马村区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410811\",\n\t\t\t\t\t\t\"name\": \"山阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410821\",\n\t\t\t\t\t\t\"name\": \"修武县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410822\",\n\t\t\t\t\t\t\"name\": \"博爱县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410823\",\n\t\t\t\t\t\t\"name\": \"武陟县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410825\",\n\t\t\t\t\t\t\"name\": \"温县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410882\",\n\t\t\t\t\t\t\"name\": \"沁阳市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410883\",\n\t\t\t\t\t\t\"name\": \"孟州市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"410900\",\n\t\t\t\t\"name\": \"濮阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410902\",\n\t\t\t\t\t\t\"name\": \"华龙区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410922\",\n\t\t\t\t\t\t\"name\": \"清丰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410923\",\n\t\t\t\t\t\t\"name\": \"南乐县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410926\",\n\t\t\t\t\t\t\"name\": \"范县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410927\",\n\t\t\t\t\t\t\"name\": \"台前县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"410928\",\n\t\t\t\t\t\t\"name\": \"濮阳县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"411000\",\n\t\t\t\t\"name\": \"许昌市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411002\",\n\t\t\t\t\t\t\"name\": \"魏都区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411003\",\n\t\t\t\t\t\t\"name\": \"建安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411024\",\n\t\t\t\t\t\t\"name\": \"鄢陵县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411025\",\n\t\t\t\t\t\t\"name\": \"襄城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411081\",\n\t\t\t\t\t\t\"name\": \"禹州市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411082\",\n\t\t\t\t\t\t\"name\": \"长葛市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"411100\",\n\t\t\t\t\"name\": \"漯河市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411102\",\n\t\t\t\t\t\t\"name\": \"源汇区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411103\",\n\t\t\t\t\t\t\"name\": \"郾城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411104\",\n\t\t\t\t\t\t\"name\": \"召陵区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411121\",\n\t\t\t\t\t\t\"name\": \"舞阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411122\",\n\t\t\t\t\t\t\"name\": \"临颍县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"411200\",\n\t\t\t\t\"name\": \"三门峡市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411202\",\n\t\t\t\t\t\t\"name\": \"湖滨区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411203\",\n\t\t\t\t\t\t\"name\": \"陕州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411221\",\n\t\t\t\t\t\t\"name\": \"渑池县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411224\",\n\t\t\t\t\t\t\"name\": \"卢氏县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411281\",\n\t\t\t\t\t\t\"name\": \"义马市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411282\",\n\t\t\t\t\t\t\"name\": \"灵宝市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"411300\",\n\t\t\t\t\"name\": \"南阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411302\",\n\t\t\t\t\t\t\"name\": \"宛城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411303\",\n\t\t\t\t\t\t\"name\": \"卧龙区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411321\",\n\t\t\t\t\t\t\"name\": \"南召县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411322\",\n\t\t\t\t\t\t\"name\": \"方城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411323\",\n\t\t\t\t\t\t\"name\": \"西峡县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411324\",\n\t\t\t\t\t\t\"name\": \"镇平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411325\",\n\t\t\t\t\t\t\"name\": \"内乡县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411326\",\n\t\t\t\t\t\t\"name\": \"淅川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411327\",\n\t\t\t\t\t\t\"name\": \"社旗县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411328\",\n\t\t\t\t\t\t\"name\": \"唐河县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411329\",\n\t\t\t\t\t\t\"name\": \"新野县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411330\",\n\t\t\t\t\t\t\"name\": \"桐柏县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411381\",\n\t\t\t\t\t\t\"name\": \"邓州市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"411400\",\n\t\t\t\t\"name\": \"商丘市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411402\",\n\t\t\t\t\t\t\"name\": \"梁园区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411403\",\n\t\t\t\t\t\t\"name\": \"睢阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411421\",\n\t\t\t\t\t\t\"name\": \"民权县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411422\",\n\t\t\t\t\t\t\"name\": \"睢县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411423\",\n\t\t\t\t\t\t\"name\": \"宁陵县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411424\",\n\t\t\t\t\t\t\"name\": \"柘城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411425\",\n\t\t\t\t\t\t\"name\": \"虞城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411426\",\n\t\t\t\t\t\t\"name\": \"夏邑县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411481\",\n\t\t\t\t\t\t\"name\": \"永城市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"411500\",\n\t\t\t\t\"name\": \"信阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411502\",\n\t\t\t\t\t\t\"name\": \"浉河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411503\",\n\t\t\t\t\t\t\"name\": \"平桥区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411521\",\n\t\t\t\t\t\t\"name\": \"罗山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411522\",\n\t\t\t\t\t\t\"name\": \"光山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411523\",\n\t\t\t\t\t\t\"name\": \"新县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411524\",\n\t\t\t\t\t\t\"name\": \"商城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411525\",\n\t\t\t\t\t\t\"name\": \"固始县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411526\",\n\t\t\t\t\t\t\"name\": \"潢川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411527\",\n\t\t\t\t\t\t\"name\": \"淮滨县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411528\",\n\t\t\t\t\t\t\"name\": \"息县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"411600\",\n\t\t\t\t\"name\": \"周口市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411602\",\n\t\t\t\t\t\t\"name\": \"川汇区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411621\",\n\t\t\t\t\t\t\"name\": \"扶沟县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411622\",\n\t\t\t\t\t\t\"name\": \"西华县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411623\",\n\t\t\t\t\t\t\"name\": \"商水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411624\",\n\t\t\t\t\t\t\"name\": \"沈丘县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411625\",\n\t\t\t\t\t\t\"name\": \"郸城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411626\",\n\t\t\t\t\t\t\"name\": \"淮阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411627\",\n\t\t\t\t\t\t\"name\": \"太康县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411628\",\n\t\t\t\t\t\t\"name\": \"鹿邑县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411681\",\n\t\t\t\t\t\t\"name\": \"项城市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"411700\",\n\t\t\t\t\"name\": \"驻马店市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411702\",\n\t\t\t\t\t\t\"name\": \"驿城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411721\",\n\t\t\t\t\t\t\"name\": \"西平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411722\",\n\t\t\t\t\t\t\"name\": \"上蔡县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411723\",\n\t\t\t\t\t\t\"name\": \"平舆县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411724\",\n\t\t\t\t\t\t\"name\": \"正阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411725\",\n\t\t\t\t\t\t\"name\": \"确山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411726\",\n\t\t\t\t\t\t\"name\": \"泌阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411727\",\n\t\t\t\t\t\t\"name\": \"汝南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411728\",\n\t\t\t\t\t\t\"name\": \"遂平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"411729\",\n\t\t\t\t\t\t\"name\": \"新蔡县\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"420000\",\n\t\t\"name\": \"湖北省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"420100\",\n\t\t\t\t\"name\": \"武汉市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420102\",\n\t\t\t\t\t\t\"name\": \"江岸区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420103\",\n\t\t\t\t\t\t\"name\": \"江汉区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420104\",\n\t\t\t\t\t\t\"name\": \"硚口区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420105\",\n\t\t\t\t\t\t\"name\": \"汉阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420106\",\n\t\t\t\t\t\t\"name\": \"武昌区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420107\",\n\t\t\t\t\t\t\"name\": \"青山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420111\",\n\t\t\t\t\t\t\"name\": \"洪山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420112\",\n\t\t\t\t\t\t\"name\": \"东西湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420113\",\n\t\t\t\t\t\t\"name\": \"汉南区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420114\",\n\t\t\t\t\t\t\"name\": \"蔡甸区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420115\",\n\t\t\t\t\t\t\"name\": \"江夏区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420116\",\n\t\t\t\t\t\t\"name\": \"黄陂区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420117\",\n\t\t\t\t\t\t\"name\": \"新洲区\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"420200\",\n\t\t\t\t\"name\": \"黄石市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420202\",\n\t\t\t\t\t\t\"name\": \"黄石港区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420203\",\n\t\t\t\t\t\t\"name\": \"西塞山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420204\",\n\t\t\t\t\t\t\"name\": \"下陆区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420205\",\n\t\t\t\t\t\t\"name\": \"铁山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420222\",\n\t\t\t\t\t\t\"name\": \"阳新县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420281\",\n\t\t\t\t\t\t\"name\": \"大冶市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"420300\",\n\t\t\t\t\"name\": \"十堰市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420302\",\n\t\t\t\t\t\t\"name\": \"茅箭区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420303\",\n\t\t\t\t\t\t\"name\": \"张湾区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420304\",\n\t\t\t\t\t\t\"name\": \"郧阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420322\",\n\t\t\t\t\t\t\"name\": \"郧西县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420323\",\n\t\t\t\t\t\t\"name\": \"竹山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420324\",\n\t\t\t\t\t\t\"name\": \"竹溪县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420325\",\n\t\t\t\t\t\t\"name\": \"房县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420381\",\n\t\t\t\t\t\t\"name\": \"丹江口市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"420500\",\n\t\t\t\t\"name\": \"宜昌市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420502\",\n\t\t\t\t\t\t\"name\": \"西陵区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420503\",\n\t\t\t\t\t\t\"name\": \"伍家岗区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420504\",\n\t\t\t\t\t\t\"name\": \"点军区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420505\",\n\t\t\t\t\t\t\"name\": \"猇亭区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420506\",\n\t\t\t\t\t\t\"name\": \"夷陵区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420525\",\n\t\t\t\t\t\t\"name\": \"远安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420526\",\n\t\t\t\t\t\t\"name\": \"兴山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420527\",\n\t\t\t\t\t\t\"name\": \"秭归县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420528\",\n\t\t\t\t\t\t\"name\": \"长阳土家族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420529\",\n\t\t\t\t\t\t\"name\": \"五峰土家族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420581\",\n\t\t\t\t\t\t\"name\": \"宜都市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420582\",\n\t\t\t\t\t\t\"name\": \"当阳市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420583\",\n\t\t\t\t\t\t\"name\": \"枝江市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"420600\",\n\t\t\t\t\"name\": \"襄阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420602\",\n\t\t\t\t\t\t\"name\": \"襄城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420606\",\n\t\t\t\t\t\t\"name\": \"樊城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420607\",\n\t\t\t\t\t\t\"name\": \"襄州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420624\",\n\t\t\t\t\t\t\"name\": \"南漳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420625\",\n\t\t\t\t\t\t\"name\": \"谷城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420626\",\n\t\t\t\t\t\t\"name\": \"保康县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420682\",\n\t\t\t\t\t\t\"name\": \"老河口市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420683\",\n\t\t\t\t\t\t\"name\": \"枣阳市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420684\",\n\t\t\t\t\t\t\"name\": \"宜城市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"420700\",\n\t\t\t\t\"name\": \"鄂州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420702\",\n\t\t\t\t\t\t\"name\": \"梁子湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420703\",\n\t\t\t\t\t\t\"name\": \"华容区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420704\",\n\t\t\t\t\t\t\"name\": \"鄂城区\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"420800\",\n\t\t\t\t\"name\": \"荆门市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420802\",\n\t\t\t\t\t\t\"name\": \"东宝区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420804\",\n\t\t\t\t\t\t\"name\": \"掇刀区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420822\",\n\t\t\t\t\t\t\"name\": \"沙洋县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420881\",\n\t\t\t\t\t\t\"name\": \"钟祥市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420882\",\n\t\t\t\t\t\t\"name\": \"京山市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"420900\",\n\t\t\t\t\"name\": \"孝感市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420902\",\n\t\t\t\t\t\t\"name\": \"孝南区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420921\",\n\t\t\t\t\t\t\"name\": \"孝昌县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420922\",\n\t\t\t\t\t\t\"name\": \"大悟县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420923\",\n\t\t\t\t\t\t\"name\": \"云梦县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420981\",\n\t\t\t\t\t\t\"name\": \"应城市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420982\",\n\t\t\t\t\t\t\"name\": \"安陆市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"420984\",\n\t\t\t\t\t\t\"name\": \"汉川市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"421000\",\n\t\t\t\t\"name\": \"荆州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421002\",\n\t\t\t\t\t\t\"name\": \"沙市区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421003\",\n\t\t\t\t\t\t\"name\": \"荆州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421022\",\n\t\t\t\t\t\t\"name\": \"公安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421023\",\n\t\t\t\t\t\t\"name\": \"监利县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421024\",\n\t\t\t\t\t\t\"name\": \"江陵县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421081\",\n\t\t\t\t\t\t\"name\": \"石首市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421083\",\n\t\t\t\t\t\t\"name\": \"洪湖市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421087\",\n\t\t\t\t\t\t\"name\": \"松滋市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"421100\",\n\t\t\t\t\"name\": \"黄冈市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421102\",\n\t\t\t\t\t\t\"name\": \"黄州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421121\",\n\t\t\t\t\t\t\"name\": \"团风县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421122\",\n\t\t\t\t\t\t\"name\": \"红安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421123\",\n\t\t\t\t\t\t\"name\": \"罗田县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421124\",\n\t\t\t\t\t\t\"name\": \"英山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421125\",\n\t\t\t\t\t\t\"name\": \"浠水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421126\",\n\t\t\t\t\t\t\"name\": \"蕲春县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421127\",\n\t\t\t\t\t\t\"name\": \"黄梅县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421181\",\n\t\t\t\t\t\t\"name\": \"麻城市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421182\",\n\t\t\t\t\t\t\"name\": \"武穴市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"421200\",\n\t\t\t\t\"name\": \"咸宁市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421202\",\n\t\t\t\t\t\t\"name\": \"咸安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421221\",\n\t\t\t\t\t\t\"name\": \"嘉鱼县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421222\",\n\t\t\t\t\t\t\"name\": \"通城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421223\",\n\t\t\t\t\t\t\"name\": \"崇阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421224\",\n\t\t\t\t\t\t\"name\": \"通山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421281\",\n\t\t\t\t\t\t\"name\": \"赤壁市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"421300\",\n\t\t\t\t\"name\": \"随州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421303\",\n\t\t\t\t\t\t\"name\": \"曾都区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421321\",\n\t\t\t\t\t\t\"name\": \"随县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"421381\",\n\t\t\t\t\t\t\"name\": \"广水市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"422800\",\n\t\t\t\t\"name\": \"恩施土家族苗族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"422801\",\n\t\t\t\t\t\t\"name\": \"恩施市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"422802\",\n\t\t\t\t\t\t\"name\": \"利川市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"422822\",\n\t\t\t\t\t\t\"name\": \"建始县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"422823\",\n\t\t\t\t\t\t\"name\": \"巴东县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"422825\",\n\t\t\t\t\t\t\"name\": \"宣恩县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"422826\",\n\t\t\t\t\t\t\"name\": \"咸丰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"422827\",\n\t\t\t\t\t\t\"name\": \"来凤县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"422828\",\n\t\t\t\t\t\t\"name\": \"鹤峰县\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"430000\",\n\t\t\"name\": \"湖南省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"430100\",\n\t\t\t\t\"name\": \"长沙市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430102\",\n\t\t\t\t\t\t\"name\": \"芙蓉区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430103\",\n\t\t\t\t\t\t\"name\": \"天心区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430104\",\n\t\t\t\t\t\t\"name\": \"岳麓区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430105\",\n\t\t\t\t\t\t\"name\": \"开福区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430111\",\n\t\t\t\t\t\t\"name\": \"雨花区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430112\",\n\t\t\t\t\t\t\"name\": \"望城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430121\",\n\t\t\t\t\t\t\"name\": \"长沙县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430181\",\n\t\t\t\t\t\t\"name\": \"浏阳市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430182\",\n\t\t\t\t\t\t\"name\": \"宁乡市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"430200\",\n\t\t\t\t\"name\": \"株洲市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430202\",\n\t\t\t\t\t\t\"name\": \"荷塘区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430203\",\n\t\t\t\t\t\t\"name\": \"芦淞区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430204\",\n\t\t\t\t\t\t\"name\": \"石峰区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430211\",\n\t\t\t\t\t\t\"name\": \"天元区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430212\",\n\t\t\t\t\t\t\"name\": \"渌口区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430223\",\n\t\t\t\t\t\t\"name\": \"攸县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430224\",\n\t\t\t\t\t\t\"name\": \"茶陵县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430225\",\n\t\t\t\t\t\t\"name\": \"炎陵县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430281\",\n\t\t\t\t\t\t\"name\": \"醴陵市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"430300\",\n\t\t\t\t\"name\": \"湘潭市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430302\",\n\t\t\t\t\t\t\"name\": \"雨湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430304\",\n\t\t\t\t\t\t\"name\": \"岳塘区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430321\",\n\t\t\t\t\t\t\"name\": \"湘潭县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430381\",\n\t\t\t\t\t\t\"name\": \"湘乡市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430382\",\n\t\t\t\t\t\t\"name\": \"韶山市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"430400\",\n\t\t\t\t\"name\": \"衡阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430405\",\n\t\t\t\t\t\t\"name\": \"珠晖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430406\",\n\t\t\t\t\t\t\"name\": \"雁峰区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430407\",\n\t\t\t\t\t\t\"name\": \"石鼓区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430408\",\n\t\t\t\t\t\t\"name\": \"蒸湘区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430412\",\n\t\t\t\t\t\t\"name\": \"南岳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430421\",\n\t\t\t\t\t\t\"name\": \"衡阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430422\",\n\t\t\t\t\t\t\"name\": \"衡南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430423\",\n\t\t\t\t\t\t\"name\": \"衡山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430424\",\n\t\t\t\t\t\t\"name\": \"衡东县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430426\",\n\t\t\t\t\t\t\"name\": \"祁东县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430481\",\n\t\t\t\t\t\t\"name\": \"耒阳市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430482\",\n\t\t\t\t\t\t\"name\": \"常宁市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"430500\",\n\t\t\t\t\"name\": \"邵阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430502\",\n\t\t\t\t\t\t\"name\": \"双清区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430503\",\n\t\t\t\t\t\t\"name\": \"大祥区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430511\",\n\t\t\t\t\t\t\"name\": \"北塔区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430521\",\n\t\t\t\t\t\t\"name\": \"邵东县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430522\",\n\t\t\t\t\t\t\"name\": \"新邵县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430523\",\n\t\t\t\t\t\t\"name\": \"邵阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430524\",\n\t\t\t\t\t\t\"name\": \"隆回县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430525\",\n\t\t\t\t\t\t\"name\": \"洞口县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430527\",\n\t\t\t\t\t\t\"name\": \"绥宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430528\",\n\t\t\t\t\t\t\"name\": \"新宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430529\",\n\t\t\t\t\t\t\"name\": \"城步苗族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430581\",\n\t\t\t\t\t\t\"name\": \"武冈市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"430600\",\n\t\t\t\t\"name\": \"岳阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430602\",\n\t\t\t\t\t\t\"name\": \"岳阳楼区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430603\",\n\t\t\t\t\t\t\"name\": \"云溪区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430611\",\n\t\t\t\t\t\t\"name\": \"君山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430621\",\n\t\t\t\t\t\t\"name\": \"岳阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430623\",\n\t\t\t\t\t\t\"name\": \"华容县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430624\",\n\t\t\t\t\t\t\"name\": \"湘阴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430626\",\n\t\t\t\t\t\t\"name\": \"平江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430681\",\n\t\t\t\t\t\t\"name\": \"汨罗市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430682\",\n\t\t\t\t\t\t\"name\": \"临湘市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"430700\",\n\t\t\t\t\"name\": \"常德市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430702\",\n\t\t\t\t\t\t\"name\": \"武陵区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430703\",\n\t\t\t\t\t\t\"name\": \"鼎城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430721\",\n\t\t\t\t\t\t\"name\": \"安乡县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430722\",\n\t\t\t\t\t\t\"name\": \"汉寿县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430723\",\n\t\t\t\t\t\t\"name\": \"澧县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430724\",\n\t\t\t\t\t\t\"name\": \"临澧县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430725\",\n\t\t\t\t\t\t\"name\": \"桃源县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430726\",\n\t\t\t\t\t\t\"name\": \"石门县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430781\",\n\t\t\t\t\t\t\"name\": \"津市市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"430800\",\n\t\t\t\t\"name\": \"张家界市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430802\",\n\t\t\t\t\t\t\"name\": \"永定区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430811\",\n\t\t\t\t\t\t\"name\": \"武陵源区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430821\",\n\t\t\t\t\t\t\"name\": \"慈利县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430822\",\n\t\t\t\t\t\t\"name\": \"桑植县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"430900\",\n\t\t\t\t\"name\": \"益阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430902\",\n\t\t\t\t\t\t\"name\": \"资阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430903\",\n\t\t\t\t\t\t\"name\": \"赫山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430921\",\n\t\t\t\t\t\t\"name\": \"南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430922\",\n\t\t\t\t\t\t\"name\": \"桃江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430923\",\n\t\t\t\t\t\t\"name\": \"安化县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"430981\",\n\t\t\t\t\t\t\"name\": \"沅江市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"431000\",\n\t\t\t\t\"name\": \"郴州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431002\",\n\t\t\t\t\t\t\"name\": \"北湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431003\",\n\t\t\t\t\t\t\"name\": \"苏仙区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431021\",\n\t\t\t\t\t\t\"name\": \"桂阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431022\",\n\t\t\t\t\t\t\"name\": \"宜章县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431023\",\n\t\t\t\t\t\t\"name\": \"永兴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431024\",\n\t\t\t\t\t\t\"name\": \"嘉禾县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431025\",\n\t\t\t\t\t\t\"name\": \"临武县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431026\",\n\t\t\t\t\t\t\"name\": \"汝城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431027\",\n\t\t\t\t\t\t\"name\": \"桂东县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431028\",\n\t\t\t\t\t\t\"name\": \"安仁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431081\",\n\t\t\t\t\t\t\"name\": \"资兴市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"431100\",\n\t\t\t\t\"name\": \"永州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431102\",\n\t\t\t\t\t\t\"name\": \"零陵区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431103\",\n\t\t\t\t\t\t\"name\": \"冷水滩区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431121\",\n\t\t\t\t\t\t\"name\": \"祁阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431122\",\n\t\t\t\t\t\t\"name\": \"东安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431123\",\n\t\t\t\t\t\t\"name\": \"双牌县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431124\",\n\t\t\t\t\t\t\"name\": \"道县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431125\",\n\t\t\t\t\t\t\"name\": \"江永县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431126\",\n\t\t\t\t\t\t\"name\": \"宁远县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431127\",\n\t\t\t\t\t\t\"name\": \"蓝山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431128\",\n\t\t\t\t\t\t\"name\": \"新田县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431129\",\n\t\t\t\t\t\t\"name\": \"江华瑶族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"431200\",\n\t\t\t\t\"name\": \"怀化市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431202\",\n\t\t\t\t\t\t\"name\": \"鹤城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431221\",\n\t\t\t\t\t\t\"name\": \"中方县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431222\",\n\t\t\t\t\t\t\"name\": \"沅陵县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431223\",\n\t\t\t\t\t\t\"name\": \"辰溪县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431224\",\n\t\t\t\t\t\t\"name\": \"溆浦县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431225\",\n\t\t\t\t\t\t\"name\": \"会同县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431226\",\n\t\t\t\t\t\t\"name\": \"麻阳苗族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431227\",\n\t\t\t\t\t\t\"name\": \"新晃侗族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431228\",\n\t\t\t\t\t\t\"name\": \"芷江侗族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431229\",\n\t\t\t\t\t\t\"name\": \"靖州苗族侗族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431230\",\n\t\t\t\t\t\t\"name\": \"通道侗族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431281\",\n\t\t\t\t\t\t\"name\": \"洪江市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"431300\",\n\t\t\t\t\"name\": \"娄底市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431302\",\n\t\t\t\t\t\t\"name\": \"娄星区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431321\",\n\t\t\t\t\t\t\"name\": \"双峰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431322\",\n\t\t\t\t\t\t\"name\": \"新化县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431381\",\n\t\t\t\t\t\t\"name\": \"冷水江市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"431382\",\n\t\t\t\t\t\t\"name\": \"涟源市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"433100\",\n\t\t\t\t\"name\": \"湘西土家族苗族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"433101\",\n\t\t\t\t\t\t\"name\": \"吉首市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"433122\",\n\t\t\t\t\t\t\"name\": \"泸溪县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"433123\",\n\t\t\t\t\t\t\"name\": \"凤凰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"433124\",\n\t\t\t\t\t\t\"name\": \"花垣县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"433125\",\n\t\t\t\t\t\t\"name\": \"保靖县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"433126\",\n\t\t\t\t\t\t\"name\": \"古丈县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"433127\",\n\t\t\t\t\t\t\"name\": \"永顺县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"433130\",\n\t\t\t\t\t\t\"name\": \"龙山县\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"440000\",\n\t\t\"name\": \"广东省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"440100\",\n\t\t\t\t\"name\": \"广州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440103\",\n\t\t\t\t\t\t\"name\": \"荔湾区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440104\",\n\t\t\t\t\t\t\"name\": \"越秀区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440105\",\n\t\t\t\t\t\t\"name\": \"海珠区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440106\",\n\t\t\t\t\t\t\"name\": \"天河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440111\",\n\t\t\t\t\t\t\"name\": \"白云区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440112\",\n\t\t\t\t\t\t\"name\": \"黄埔区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440113\",\n\t\t\t\t\t\t\"name\": \"番禺区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440114\",\n\t\t\t\t\t\t\"name\": \"花都区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440115\",\n\t\t\t\t\t\t\"name\": \"南沙区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440117\",\n\t\t\t\t\t\t\"name\": \"从化区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440118\",\n\t\t\t\t\t\t\"name\": \"增城区\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"440200\",\n\t\t\t\t\"name\": \"韶关市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440203\",\n\t\t\t\t\t\t\"name\": \"武江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440204\",\n\t\t\t\t\t\t\"name\": \"浈江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440205\",\n\t\t\t\t\t\t\"name\": \"曲江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440222\",\n\t\t\t\t\t\t\"name\": \"始兴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440224\",\n\t\t\t\t\t\t\"name\": \"仁化县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440229\",\n\t\t\t\t\t\t\"name\": \"翁源县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440232\",\n\t\t\t\t\t\t\"name\": \"乳源瑶族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440233\",\n\t\t\t\t\t\t\"name\": \"新丰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440281\",\n\t\t\t\t\t\t\"name\": \"乐昌市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440282\",\n\t\t\t\t\t\t\"name\": \"南雄市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"440300\",\n\t\t\t\t\"name\": \"深圳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440303\",\n\t\t\t\t\t\t\"name\": \"罗湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440304\",\n\t\t\t\t\t\t\"name\": \"福田区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440305\",\n\t\t\t\t\t\t\"name\": \"南山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440306\",\n\t\t\t\t\t\t\"name\": \"宝安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440307\",\n\t\t\t\t\t\t\"name\": \"龙岗区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440308\",\n\t\t\t\t\t\t\"name\": \"盐田区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440309\",\n\t\t\t\t\t\t\"name\": \"龙华区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440310\",\n\t\t\t\t\t\t\"name\": \"坪山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440311\",\n\t\t\t\t\t\t\"name\": \"光明区\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"440400\",\n\t\t\t\t\"name\": \"珠海市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440402\",\n\t\t\t\t\t\t\"name\": \"香洲区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440403\",\n\t\t\t\t\t\t\"name\": \"斗门区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440404\",\n\t\t\t\t\t\t\"name\": \"金湾区\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"440500\",\n\t\t\t\t\"name\": \"汕头市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440507\",\n\t\t\t\t\t\t\"name\": \"龙湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440511\",\n\t\t\t\t\t\t\"name\": \"金平区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440512\",\n\t\t\t\t\t\t\"name\": \"濠江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440513\",\n\t\t\t\t\t\t\"name\": \"潮阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440514\",\n\t\t\t\t\t\t\"name\": \"潮南区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440515\",\n\t\t\t\t\t\t\"name\": \"澄海区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440523\",\n\t\t\t\t\t\t\"name\": \"南澳县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"440600\",\n\t\t\t\t\"name\": \"佛山市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440604\",\n\t\t\t\t\t\t\"name\": \"禅城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440605\",\n\t\t\t\t\t\t\"name\": \"南海区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440606\",\n\t\t\t\t\t\t\"name\": \"顺德区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440607\",\n\t\t\t\t\t\t\"name\": \"三水区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440608\",\n\t\t\t\t\t\t\"name\": \"高明区\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"440700\",\n\t\t\t\t\"name\": \"江门市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440703\",\n\t\t\t\t\t\t\"name\": \"蓬江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440704\",\n\t\t\t\t\t\t\"name\": \"江海区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440705\",\n\t\t\t\t\t\t\"name\": \"新会区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440781\",\n\t\t\t\t\t\t\"name\": \"台山市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440783\",\n\t\t\t\t\t\t\"name\": \"开平市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440784\",\n\t\t\t\t\t\t\"name\": \"鹤山市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440785\",\n\t\t\t\t\t\t\"name\": \"恩平市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"440800\",\n\t\t\t\t\"name\": \"湛江市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440802\",\n\t\t\t\t\t\t\"name\": \"赤坎区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440803\",\n\t\t\t\t\t\t\"name\": \"霞山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440804\",\n\t\t\t\t\t\t\"name\": \"坡头区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440811\",\n\t\t\t\t\t\t\"name\": \"麻章区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440823\",\n\t\t\t\t\t\t\"name\": \"遂溪县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440825\",\n\t\t\t\t\t\t\"name\": \"徐闻县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440881\",\n\t\t\t\t\t\t\"name\": \"廉江市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440882\",\n\t\t\t\t\t\t\"name\": \"雷州市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440883\",\n\t\t\t\t\t\t\"name\": \"吴川市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"440900\",\n\t\t\t\t\"name\": \"茂名市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440902\",\n\t\t\t\t\t\t\"name\": \"茂南区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440904\",\n\t\t\t\t\t\t\"name\": \"电白区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440981\",\n\t\t\t\t\t\t\"name\": \"高州市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440982\",\n\t\t\t\t\t\t\"name\": \"化州市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"440983\",\n\t\t\t\t\t\t\"name\": \"信宜市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"441200\",\n\t\t\t\t\"name\": \"肇庆市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441202\",\n\t\t\t\t\t\t\"name\": \"端州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441203\",\n\t\t\t\t\t\t\"name\": \"鼎湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441204\",\n\t\t\t\t\t\t\"name\": \"高要区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441223\",\n\t\t\t\t\t\t\"name\": \"广宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441224\",\n\t\t\t\t\t\t\"name\": \"怀集县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441225\",\n\t\t\t\t\t\t\"name\": \"封开县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441226\",\n\t\t\t\t\t\t\"name\": \"德庆县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441284\",\n\t\t\t\t\t\t\"name\": \"四会市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"441300\",\n\t\t\t\t\"name\": \"惠州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441302\",\n\t\t\t\t\t\t\"name\": \"惠城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441303\",\n\t\t\t\t\t\t\"name\": \"惠阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441322\",\n\t\t\t\t\t\t\"name\": \"博罗县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441323\",\n\t\t\t\t\t\t\"name\": \"惠东县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441324\",\n\t\t\t\t\t\t\"name\": \"龙门县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"441400\",\n\t\t\t\t\"name\": \"梅州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441402\",\n\t\t\t\t\t\t\"name\": \"梅江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441403\",\n\t\t\t\t\t\t\"name\": \"梅县区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441422\",\n\t\t\t\t\t\t\"name\": \"大埔县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441423\",\n\t\t\t\t\t\t\"name\": \"丰顺县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441424\",\n\t\t\t\t\t\t\"name\": \"五华县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441426\",\n\t\t\t\t\t\t\"name\": \"平远县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441427\",\n\t\t\t\t\t\t\"name\": \"蕉岭县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441481\",\n\t\t\t\t\t\t\"name\": \"兴宁市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"441500\",\n\t\t\t\t\"name\": \"汕尾市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441502\",\n\t\t\t\t\t\t\"name\": \"城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441521\",\n\t\t\t\t\t\t\"name\": \"海丰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441523\",\n\t\t\t\t\t\t\"name\": \"陆河县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441581\",\n\t\t\t\t\t\t\"name\": \"陆丰市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"441600\",\n\t\t\t\t\"name\": \"河源市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441602\",\n\t\t\t\t\t\t\"name\": \"源城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441621\",\n\t\t\t\t\t\t\"name\": \"紫金县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441622\",\n\t\t\t\t\t\t\"name\": \"龙川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441623\",\n\t\t\t\t\t\t\"name\": \"连平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441624\",\n\t\t\t\t\t\t\"name\": \"和平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441625\",\n\t\t\t\t\t\t\"name\": \"东源县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"441700\",\n\t\t\t\t\"name\": \"阳江市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441702\",\n\t\t\t\t\t\t\"name\": \"江城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441704\",\n\t\t\t\t\t\t\"name\": \"阳东区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441721\",\n\t\t\t\t\t\t\"name\": \"阳西县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441781\",\n\t\t\t\t\t\t\"name\": \"阳春市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"441800\",\n\t\t\t\t\"name\": \"清远市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441802\",\n\t\t\t\t\t\t\"name\": \"清城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441803\",\n\t\t\t\t\t\t\"name\": \"清新区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441821\",\n\t\t\t\t\t\t\"name\": \"佛冈县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441823\",\n\t\t\t\t\t\t\"name\": \"阳山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441825\",\n\t\t\t\t\t\t\"name\": \"连山壮族瑶族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441826\",\n\t\t\t\t\t\t\"name\": \"连南瑶族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441881\",\n\t\t\t\t\t\t\"name\": \"英德市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"441882\",\n\t\t\t\t\t\t\"name\": \"连州市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"441900\",\n\t\t\t\t\"name\": \"东莞市\",\n\t\t\t\t\"children\": []\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"442000\",\n\t\t\t\t\"name\": \"中山市\",\n\t\t\t\t\"children\": []\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"445100\",\n\t\t\t\t\"name\": \"潮州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"445102\",\n\t\t\t\t\t\t\"name\": \"湘桥区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"445103\",\n\t\t\t\t\t\t\"name\": \"潮安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"445122\",\n\t\t\t\t\t\t\"name\": \"饶平县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"445200\",\n\t\t\t\t\"name\": \"揭阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"445202\",\n\t\t\t\t\t\t\"name\": \"榕城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"445203\",\n\t\t\t\t\t\t\"name\": \"揭东区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"445222\",\n\t\t\t\t\t\t\"name\": \"揭西县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"445224\",\n\t\t\t\t\t\t\"name\": \"惠来县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"445281\",\n\t\t\t\t\t\t\"name\": \"普宁市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"445300\",\n\t\t\t\t\"name\": \"云浮市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"445302\",\n\t\t\t\t\t\t\"name\": \"云城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"445303\",\n\t\t\t\t\t\t\"name\": \"云安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"445321\",\n\t\t\t\t\t\t\"name\": \"新兴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"445322\",\n\t\t\t\t\t\t\"name\": \"郁南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"445381\",\n\t\t\t\t\t\t\"name\": \"罗定市\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"450000\",\n\t\t\"name\": \"广西壮族自治区\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"450100\",\n\t\t\t\t\"name\": \"南宁市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450102\",\n\t\t\t\t\t\t\"name\": \"兴宁区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450103\",\n\t\t\t\t\t\t\"name\": \"青秀区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450105\",\n\t\t\t\t\t\t\"name\": \"江南区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450107\",\n\t\t\t\t\t\t\"name\": \"西乡塘区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450108\",\n\t\t\t\t\t\t\"name\": \"良庆区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450109\",\n\t\t\t\t\t\t\"name\": \"邕宁区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450110\",\n\t\t\t\t\t\t\"name\": \"武鸣区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450123\",\n\t\t\t\t\t\t\"name\": \"隆安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450124\",\n\t\t\t\t\t\t\"name\": \"马山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450125\",\n\t\t\t\t\t\t\"name\": \"上林县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450126\",\n\t\t\t\t\t\t\"name\": \"宾阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450127\",\n\t\t\t\t\t\t\"name\": \"横县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"450200\",\n\t\t\t\t\"name\": \"柳州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450202\",\n\t\t\t\t\t\t\"name\": \"城中区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450203\",\n\t\t\t\t\t\t\"name\": \"鱼峰区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450204\",\n\t\t\t\t\t\t\"name\": \"柳南区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450205\",\n\t\t\t\t\t\t\"name\": \"柳北区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450206\",\n\t\t\t\t\t\t\"name\": \"柳江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450222\",\n\t\t\t\t\t\t\"name\": \"柳城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450223\",\n\t\t\t\t\t\t\"name\": \"鹿寨县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450224\",\n\t\t\t\t\t\t\"name\": \"融安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450225\",\n\t\t\t\t\t\t\"name\": \"融水苗族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450226\",\n\t\t\t\t\t\t\"name\": \"三江侗族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"450300\",\n\t\t\t\t\"name\": \"桂林市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450302\",\n\t\t\t\t\t\t\"name\": \"秀峰区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450303\",\n\t\t\t\t\t\t\"name\": \"叠彩区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450304\",\n\t\t\t\t\t\t\"name\": \"象山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450305\",\n\t\t\t\t\t\t\"name\": \"七星区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450311\",\n\t\t\t\t\t\t\"name\": \"雁山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450312\",\n\t\t\t\t\t\t\"name\": \"临桂区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450321\",\n\t\t\t\t\t\t\"name\": \"阳朔县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450323\",\n\t\t\t\t\t\t\"name\": \"灵川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450324\",\n\t\t\t\t\t\t\"name\": \"全州县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450325\",\n\t\t\t\t\t\t\"name\": \"兴安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450326\",\n\t\t\t\t\t\t\"name\": \"永福县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450327\",\n\t\t\t\t\t\t\"name\": \"灌阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450328\",\n\t\t\t\t\t\t\"name\": \"龙胜各族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450329\",\n\t\t\t\t\t\t\"name\": \"资源县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450330\",\n\t\t\t\t\t\t\"name\": \"平乐县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450381\",\n\t\t\t\t\t\t\"name\": \"荔浦市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450332\",\n\t\t\t\t\t\t\"name\": \"恭城瑶族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"450400\",\n\t\t\t\t\"name\": \"梧州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450403\",\n\t\t\t\t\t\t\"name\": \"万秀区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450405\",\n\t\t\t\t\t\t\"name\": \"长洲区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450406\",\n\t\t\t\t\t\t\"name\": \"龙圩区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450421\",\n\t\t\t\t\t\t\"name\": \"苍梧县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450422\",\n\t\t\t\t\t\t\"name\": \"藤县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450423\",\n\t\t\t\t\t\t\"name\": \"蒙山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450481\",\n\t\t\t\t\t\t\"name\": \"岑溪市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"450500\",\n\t\t\t\t\"name\": \"北海市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450502\",\n\t\t\t\t\t\t\"name\": \"海城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450503\",\n\t\t\t\t\t\t\"name\": \"银海区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450512\",\n\t\t\t\t\t\t\"name\": \"铁山港区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450521\",\n\t\t\t\t\t\t\"name\": \"合浦县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"450600\",\n\t\t\t\t\"name\": \"防城港市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450602\",\n\t\t\t\t\t\t\"name\": \"港口区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450603\",\n\t\t\t\t\t\t\"name\": \"防城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450621\",\n\t\t\t\t\t\t\"name\": \"上思县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450681\",\n\t\t\t\t\t\t\"name\": \"东兴市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"450700\",\n\t\t\t\t\"name\": \"钦州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450702\",\n\t\t\t\t\t\t\"name\": \"钦南区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450703\",\n\t\t\t\t\t\t\"name\": \"钦北区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450721\",\n\t\t\t\t\t\t\"name\": \"灵山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450722\",\n\t\t\t\t\t\t\"name\": \"浦北县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"450800\",\n\t\t\t\t\"name\": \"贵港市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450802\",\n\t\t\t\t\t\t\"name\": \"港北区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450803\",\n\t\t\t\t\t\t\"name\": \"港南区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450804\",\n\t\t\t\t\t\t\"name\": \"覃塘区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450821\",\n\t\t\t\t\t\t\"name\": \"平南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450881\",\n\t\t\t\t\t\t\"name\": \"桂平市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"450900\",\n\t\t\t\t\"name\": \"玉林市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450902\",\n\t\t\t\t\t\t\"name\": \"玉州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450903\",\n\t\t\t\t\t\t\"name\": \"福绵区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450921\",\n\t\t\t\t\t\t\"name\": \"容县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450922\",\n\t\t\t\t\t\t\"name\": \"陆川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450923\",\n\t\t\t\t\t\t\"name\": \"博白县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450924\",\n\t\t\t\t\t\t\"name\": \"兴业县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"450981\",\n\t\t\t\t\t\t\"name\": \"北流市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"451000\",\n\t\t\t\t\"name\": \"百色市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451002\",\n\t\t\t\t\t\t\"name\": \"右江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451021\",\n\t\t\t\t\t\t\"name\": \"田阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451022\",\n\t\t\t\t\t\t\"name\": \"田东县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451023\",\n\t\t\t\t\t\t\"name\": \"平果县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451024\",\n\t\t\t\t\t\t\"name\": \"德保县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451026\",\n\t\t\t\t\t\t\"name\": \"那坡县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451027\",\n\t\t\t\t\t\t\"name\": \"凌云县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451028\",\n\t\t\t\t\t\t\"name\": \"乐业县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451029\",\n\t\t\t\t\t\t\"name\": \"田林县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451030\",\n\t\t\t\t\t\t\"name\": \"西林县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451031\",\n\t\t\t\t\t\t\"name\": \"隆林各族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451081\",\n\t\t\t\t\t\t\"name\": \"靖西市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"451100\",\n\t\t\t\t\"name\": \"贺州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451102\",\n\t\t\t\t\t\t\"name\": \"八步区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451103\",\n\t\t\t\t\t\t\"name\": \"平桂区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451121\",\n\t\t\t\t\t\t\"name\": \"昭平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451122\",\n\t\t\t\t\t\t\"name\": \"钟山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451123\",\n\t\t\t\t\t\t\"name\": \"富川瑶族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"451200\",\n\t\t\t\t\"name\": \"河池市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451202\",\n\t\t\t\t\t\t\"name\": \"金城江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451203\",\n\t\t\t\t\t\t\"name\": \"宜州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451221\",\n\t\t\t\t\t\t\"name\": \"南丹县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451222\",\n\t\t\t\t\t\t\"name\": \"天峨县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451223\",\n\t\t\t\t\t\t\"name\": \"凤山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451224\",\n\t\t\t\t\t\t\"name\": \"东兰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451225\",\n\t\t\t\t\t\t\"name\": \"罗城仫佬族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451226\",\n\t\t\t\t\t\t\"name\": \"环江毛南族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451227\",\n\t\t\t\t\t\t\"name\": \"巴马瑶族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451228\",\n\t\t\t\t\t\t\"name\": \"都安瑶族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451229\",\n\t\t\t\t\t\t\"name\": \"大化瑶族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"451300\",\n\t\t\t\t\"name\": \"来宾市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451302\",\n\t\t\t\t\t\t\"name\": \"兴宾区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451321\",\n\t\t\t\t\t\t\"name\": \"忻城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451322\",\n\t\t\t\t\t\t\"name\": \"象州县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451323\",\n\t\t\t\t\t\t\"name\": \"武宣县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451324\",\n\t\t\t\t\t\t\"name\": \"金秀瑶族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451381\",\n\t\t\t\t\t\t\"name\": \"合山市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"451400\",\n\t\t\t\t\"name\": \"崇左市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451402\",\n\t\t\t\t\t\t\"name\": \"江州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451421\",\n\t\t\t\t\t\t\"name\": \"扶绥县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451422\",\n\t\t\t\t\t\t\"name\": \"宁明县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451423\",\n\t\t\t\t\t\t\"name\": \"龙州县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451424\",\n\t\t\t\t\t\t\"name\": \"大新县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451425\",\n\t\t\t\t\t\t\"name\": \"天等县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"451481\",\n\t\t\t\t\t\t\"name\": \"凭祥市\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"460000\",\n\t\t\"name\": \"海南省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"460100\",\n\t\t\t\t\"name\": \"海口市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"460105\",\n\t\t\t\t\t\t\"name\": \"秀英区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"460106\",\n\t\t\t\t\t\t\"name\": \"龙华区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"460107\",\n\t\t\t\t\t\t\"name\": \"琼山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"460108\",\n\t\t\t\t\t\t\"name\": \"美兰区\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"460200\",\n\t\t\t\t\"name\": \"三亚市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"460202\",\n\t\t\t\t\t\t\"name\": \"海棠区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"460203\",\n\t\t\t\t\t\t\"name\": \"吉阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"460204\",\n\t\t\t\t\t\t\"name\": \"天涯区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"460205\",\n\t\t\t\t\t\t\"name\": \"崖州区\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"460300\",\n\t\t\t\t\"name\": \"三沙市\",\n\t\t\t\t\"children\": []\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"460400\",\n\t\t\t\t\"name\": \"儋州市\",\n\t\t\t\t\"children\": []\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"500000\",\n\t\t\"name\": \"重庆市\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"500000\",\n\t\t\t\t\"name\": \"重庆市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500101\",\n\t\t\t\t\t\t\"name\": \"万州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500102\",\n\t\t\t\t\t\t\"name\": \"涪陵区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500103\",\n\t\t\t\t\t\t\"name\": \"渝中区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500104\",\n\t\t\t\t\t\t\"name\": \"大渡口区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500105\",\n\t\t\t\t\t\t\"name\": \"江北区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500106\",\n\t\t\t\t\t\t\"name\": \"沙坪坝区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500107\",\n\t\t\t\t\t\t\"name\": \"九龙坡区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500108\",\n\t\t\t\t\t\t\"name\": \"南岸区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500109\",\n\t\t\t\t\t\t\"name\": \"北碚区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500110\",\n\t\t\t\t\t\t\"name\": \"綦江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500111\",\n\t\t\t\t\t\t\"name\": \"大足区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500112\",\n\t\t\t\t\t\t\"name\": \"渝北区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500113\",\n\t\t\t\t\t\t\"name\": \"巴南区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500114\",\n\t\t\t\t\t\t\"name\": \"黔江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500115\",\n\t\t\t\t\t\t\"name\": \"长寿区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500116\",\n\t\t\t\t\t\t\"name\": \"江津区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500117\",\n\t\t\t\t\t\t\"name\": \"合川区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500118\",\n\t\t\t\t\t\t\"name\": \"永川区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500119\",\n\t\t\t\t\t\t\"name\": \"南川区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500120\",\n\t\t\t\t\t\t\"name\": \"璧山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500151\",\n\t\t\t\t\t\t\"name\": \"铜梁区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500152\",\n\t\t\t\t\t\t\"name\": \"潼南区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500153\",\n\t\t\t\t\t\t\"name\": \"荣昌区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500154\",\n\t\t\t\t\t\t\"name\": \"开州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500155\",\n\t\t\t\t\t\t\"name\": \"梁平区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500156\",\n\t\t\t\t\t\t\"name\": \"武隆区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500229\",\n\t\t\t\t\t\t\"name\": \"城口县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500230\",\n\t\t\t\t\t\t\"name\": \"丰都县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500231\",\n\t\t\t\t\t\t\"name\": \"垫江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500233\",\n\t\t\t\t\t\t\"name\": \"忠县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500235\",\n\t\t\t\t\t\t\"name\": \"云阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500236\",\n\t\t\t\t\t\t\"name\": \"奉节县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500237\",\n\t\t\t\t\t\t\"name\": \"巫山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500238\",\n\t\t\t\t\t\t\"name\": \"巫溪县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500240\",\n\t\t\t\t\t\t\"name\": \"石柱土家族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500241\",\n\t\t\t\t\t\t\"name\": \"秀山土家族苗族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500242\",\n\t\t\t\t\t\t\"name\": \"酉阳土家族苗族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"500243\",\n\t\t\t\t\t\t\"name\": \"彭水苗族土家族自治县\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"510000\",\n\t\t\"name\": \"四川省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"510100\",\n\t\t\t\t\"name\": \"成都市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510104\",\n\t\t\t\t\t\t\"name\": \"锦江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510105\",\n\t\t\t\t\t\t\"name\": \"青羊区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510106\",\n\t\t\t\t\t\t\"name\": \"金牛区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510107\",\n\t\t\t\t\t\t\"name\": \"武侯区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510108\",\n\t\t\t\t\t\t\"name\": \"成华区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510112\",\n\t\t\t\t\t\t\"name\": \"龙泉驿区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510113\",\n\t\t\t\t\t\t\"name\": \"青白江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510114\",\n\t\t\t\t\t\t\"name\": \"新都区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510115\",\n\t\t\t\t\t\t\"name\": \"温江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510116\",\n\t\t\t\t\t\t\"name\": \"双流区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510117\",\n\t\t\t\t\t\t\"name\": \"郫都区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510121\",\n\t\t\t\t\t\t\"name\": \"金堂县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510129\",\n\t\t\t\t\t\t\"name\": \"大邑县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510131\",\n\t\t\t\t\t\t\"name\": \"蒲江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510132\",\n\t\t\t\t\t\t\"name\": \"新津县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510181\",\n\t\t\t\t\t\t\"name\": \"都江堰市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510182\",\n\t\t\t\t\t\t\"name\": \"彭州市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510183\",\n\t\t\t\t\t\t\"name\": \"邛崃市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510184\",\n\t\t\t\t\t\t\"name\": \"崇州市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510185\",\n\t\t\t\t\t\t\"name\": \"简阳市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"510300\",\n\t\t\t\t\"name\": \"自贡市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510302\",\n\t\t\t\t\t\t\"name\": \"自流井区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510303\",\n\t\t\t\t\t\t\"name\": \"贡井区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510304\",\n\t\t\t\t\t\t\"name\": \"大安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510311\",\n\t\t\t\t\t\t\"name\": \"沿滩区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510321\",\n\t\t\t\t\t\t\"name\": \"荣县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510322\",\n\t\t\t\t\t\t\"name\": \"富顺县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"510400\",\n\t\t\t\t\"name\": \"攀枝花市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510402\",\n\t\t\t\t\t\t\"name\": \"东区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510403\",\n\t\t\t\t\t\t\"name\": \"西区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510411\",\n\t\t\t\t\t\t\"name\": \"仁和区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510421\",\n\t\t\t\t\t\t\"name\": \"米易县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510422\",\n\t\t\t\t\t\t\"name\": \"盐边县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"510500\",\n\t\t\t\t\"name\": \"泸州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510502\",\n\t\t\t\t\t\t\"name\": \"江阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510503\",\n\t\t\t\t\t\t\"name\": \"纳溪区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510504\",\n\t\t\t\t\t\t\"name\": \"龙马潭区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510521\",\n\t\t\t\t\t\t\"name\": \"泸县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510522\",\n\t\t\t\t\t\t\"name\": \"合江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510524\",\n\t\t\t\t\t\t\"name\": \"叙永县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510525\",\n\t\t\t\t\t\t\"name\": \"古蔺县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"510600\",\n\t\t\t\t\"name\": \"德阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510603\",\n\t\t\t\t\t\t\"name\": \"旌阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510604\",\n\t\t\t\t\t\t\"name\": \"罗江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510623\",\n\t\t\t\t\t\t\"name\": \"中江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510681\",\n\t\t\t\t\t\t\"name\": \"广汉市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510682\",\n\t\t\t\t\t\t\"name\": \"什邡市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510683\",\n\t\t\t\t\t\t\"name\": \"绵竹市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"510700\",\n\t\t\t\t\"name\": \"绵阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510703\",\n\t\t\t\t\t\t\"name\": \"涪城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510704\",\n\t\t\t\t\t\t\"name\": \"游仙区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510705\",\n\t\t\t\t\t\t\"name\": \"安州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510722\",\n\t\t\t\t\t\t\"name\": \"三台县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510723\",\n\t\t\t\t\t\t\"name\": \"盐亭县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510725\",\n\t\t\t\t\t\t\"name\": \"梓潼县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510726\",\n\t\t\t\t\t\t\"name\": \"北川羌族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510727\",\n\t\t\t\t\t\t\"name\": \"平武县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510781\",\n\t\t\t\t\t\t\"name\": \"江油市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"510800\",\n\t\t\t\t\"name\": \"广元市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510802\",\n\t\t\t\t\t\t\"name\": \"利州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510811\",\n\t\t\t\t\t\t\"name\": \"昭化区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510812\",\n\t\t\t\t\t\t\"name\": \"朝天区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510821\",\n\t\t\t\t\t\t\"name\": \"旺苍县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510822\",\n\t\t\t\t\t\t\"name\": \"青川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510823\",\n\t\t\t\t\t\t\"name\": \"剑阁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510824\",\n\t\t\t\t\t\t\"name\": \"苍溪县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"510900\",\n\t\t\t\t\"name\": \"遂宁市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510903\",\n\t\t\t\t\t\t\"name\": \"船山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510904\",\n\t\t\t\t\t\t\"name\": \"安居区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510921\",\n\t\t\t\t\t\t\"name\": \"蓬溪县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510922\",\n\t\t\t\t\t\t\"name\": \"射洪县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"510923\",\n\t\t\t\t\t\t\"name\": \"大英县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"511000\",\n\t\t\t\t\"name\": \"内江市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511002\",\n\t\t\t\t\t\t\"name\": \"市中区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511011\",\n\t\t\t\t\t\t\"name\": \"东兴区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511024\",\n\t\t\t\t\t\t\"name\": \"威远县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511025\",\n\t\t\t\t\t\t\"name\": \"资中县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511083\",\n\t\t\t\t\t\t\"name\": \"隆昌市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"511100\",\n\t\t\t\t\"name\": \"乐山市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511102\",\n\t\t\t\t\t\t\"name\": \"市中区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511111\",\n\t\t\t\t\t\t\"name\": \"沙湾区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511112\",\n\t\t\t\t\t\t\"name\": \"五通桥区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511113\",\n\t\t\t\t\t\t\"name\": \"金口河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511123\",\n\t\t\t\t\t\t\"name\": \"犍为县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511124\",\n\t\t\t\t\t\t\"name\": \"井研县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511126\",\n\t\t\t\t\t\t\"name\": \"夹江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511129\",\n\t\t\t\t\t\t\"name\": \"沐川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511132\",\n\t\t\t\t\t\t\"name\": \"峨边彝族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511133\",\n\t\t\t\t\t\t\"name\": \"马边彝族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511181\",\n\t\t\t\t\t\t\"name\": \"峨眉山市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"511300\",\n\t\t\t\t\"name\": \"南充市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511302\",\n\t\t\t\t\t\t\"name\": \"顺庆区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511303\",\n\t\t\t\t\t\t\"name\": \"高坪区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511304\",\n\t\t\t\t\t\t\"name\": \"嘉陵区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511321\",\n\t\t\t\t\t\t\"name\": \"南部县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511322\",\n\t\t\t\t\t\t\"name\": \"营山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511323\",\n\t\t\t\t\t\t\"name\": \"蓬安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511324\",\n\t\t\t\t\t\t\"name\": \"仪陇县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511325\",\n\t\t\t\t\t\t\"name\": \"西充县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511381\",\n\t\t\t\t\t\t\"name\": \"阆中市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"511400\",\n\t\t\t\t\"name\": \"眉山市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511402\",\n\t\t\t\t\t\t\"name\": \"东坡区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511403\",\n\t\t\t\t\t\t\"name\": \"彭山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511421\",\n\t\t\t\t\t\t\"name\": \"仁寿县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511423\",\n\t\t\t\t\t\t\"name\": \"洪雅县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511424\",\n\t\t\t\t\t\t\"name\": \"丹棱县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511425\",\n\t\t\t\t\t\t\"name\": \"青神县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"511500\",\n\t\t\t\t\"name\": \"宜宾市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511502\",\n\t\t\t\t\t\t\"name\": \"翠屏区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511503\",\n\t\t\t\t\t\t\"name\": \"南溪区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511521\",\n\t\t\t\t\t\t\"name\": \"宜宾县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511523\",\n\t\t\t\t\t\t\"name\": \"江安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511524\",\n\t\t\t\t\t\t\"name\": \"长宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511525\",\n\t\t\t\t\t\t\"name\": \"高县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511526\",\n\t\t\t\t\t\t\"name\": \"珙县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511527\",\n\t\t\t\t\t\t\"name\": \"筠连县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511528\",\n\t\t\t\t\t\t\"name\": \"兴文县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511529\",\n\t\t\t\t\t\t\"name\": \"屏山县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"511600\",\n\t\t\t\t\"name\": \"广安市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511602\",\n\t\t\t\t\t\t\"name\": \"广安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511603\",\n\t\t\t\t\t\t\"name\": \"前锋区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511621\",\n\t\t\t\t\t\t\"name\": \"岳池县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511622\",\n\t\t\t\t\t\t\"name\": \"武胜县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511623\",\n\t\t\t\t\t\t\"name\": \"邻水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511681\",\n\t\t\t\t\t\t\"name\": \"华蓥市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"511700\",\n\t\t\t\t\"name\": \"达州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511702\",\n\t\t\t\t\t\t\"name\": \"通川区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511703\",\n\t\t\t\t\t\t\"name\": \"达川区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511722\",\n\t\t\t\t\t\t\"name\": \"宣汉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511723\",\n\t\t\t\t\t\t\"name\": \"开江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511724\",\n\t\t\t\t\t\t\"name\": \"大竹县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511725\",\n\t\t\t\t\t\t\"name\": \"渠县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511781\",\n\t\t\t\t\t\t\"name\": \"万源市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"511800\",\n\t\t\t\t\"name\": \"雅安市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511802\",\n\t\t\t\t\t\t\"name\": \"雨城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511803\",\n\t\t\t\t\t\t\"name\": \"名山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511822\",\n\t\t\t\t\t\t\"name\": \"荥经县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511823\",\n\t\t\t\t\t\t\"name\": \"汉源县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511824\",\n\t\t\t\t\t\t\"name\": \"石棉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511825\",\n\t\t\t\t\t\t\"name\": \"天全县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511826\",\n\t\t\t\t\t\t\"name\": \"芦山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511827\",\n\t\t\t\t\t\t\"name\": \"宝兴县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"511900\",\n\t\t\t\t\"name\": \"巴中市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511902\",\n\t\t\t\t\t\t\"name\": \"巴州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511903\",\n\t\t\t\t\t\t\"name\": \"恩阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511921\",\n\t\t\t\t\t\t\"name\": \"通江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511922\",\n\t\t\t\t\t\t\"name\": \"南江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"511923\",\n\t\t\t\t\t\t\"name\": \"平昌县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"512000\",\n\t\t\t\t\"name\": \"资阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"512002\",\n\t\t\t\t\t\t\"name\": \"雁江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"512021\",\n\t\t\t\t\t\t\"name\": \"安岳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"512022\",\n\t\t\t\t\t\t\"name\": \"乐至县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"513200\",\n\t\t\t\t\"name\": \"阿坝藏族羌族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513201\",\n\t\t\t\t\t\t\"name\": \"马尔康市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513221\",\n\t\t\t\t\t\t\"name\": \"汶川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513222\",\n\t\t\t\t\t\t\"name\": \"理县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513223\",\n\t\t\t\t\t\t\"name\": \"茂县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513224\",\n\t\t\t\t\t\t\"name\": \"松潘县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513225\",\n\t\t\t\t\t\t\"name\": \"九寨沟县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513226\",\n\t\t\t\t\t\t\"name\": \"金川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513227\",\n\t\t\t\t\t\t\"name\": \"小金县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513228\",\n\t\t\t\t\t\t\"name\": \"黑水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513230\",\n\t\t\t\t\t\t\"name\": \"壤塘县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513231\",\n\t\t\t\t\t\t\"name\": \"阿坝县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513232\",\n\t\t\t\t\t\t\"name\": \"若尔盖县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513233\",\n\t\t\t\t\t\t\"name\": \"红原县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"513300\",\n\t\t\t\t\"name\": \"甘孜藏族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513301\",\n\t\t\t\t\t\t\"name\": \"康定市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513322\",\n\t\t\t\t\t\t\"name\": \"泸定县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513323\",\n\t\t\t\t\t\t\"name\": \"丹巴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513324\",\n\t\t\t\t\t\t\"name\": \"九龙县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513325\",\n\t\t\t\t\t\t\"name\": \"雅江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513326\",\n\t\t\t\t\t\t\"name\": \"道孚县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513327\",\n\t\t\t\t\t\t\"name\": \"炉霍县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513328\",\n\t\t\t\t\t\t\"name\": \"甘孜县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513329\",\n\t\t\t\t\t\t\"name\": \"新龙县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513330\",\n\t\t\t\t\t\t\"name\": \"德格县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513331\",\n\t\t\t\t\t\t\"name\": \"白玉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513332\",\n\t\t\t\t\t\t\"name\": \"石渠县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513333\",\n\t\t\t\t\t\t\"name\": \"色达县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513334\",\n\t\t\t\t\t\t\"name\": \"理塘县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513335\",\n\t\t\t\t\t\t\"name\": \"巴塘县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513336\",\n\t\t\t\t\t\t\"name\": \"乡城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513337\",\n\t\t\t\t\t\t\"name\": \"稻城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513338\",\n\t\t\t\t\t\t\"name\": \"得荣县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"513400\",\n\t\t\t\t\"name\": \"凉山彝族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513401\",\n\t\t\t\t\t\t\"name\": \"西昌市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513422\",\n\t\t\t\t\t\t\"name\": \"木里藏族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513423\",\n\t\t\t\t\t\t\"name\": \"盐源县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513424\",\n\t\t\t\t\t\t\"name\": \"德昌县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513425\",\n\t\t\t\t\t\t\"name\": \"会理县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513426\",\n\t\t\t\t\t\t\"name\": \"会东县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513427\",\n\t\t\t\t\t\t\"name\": \"宁南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513428\",\n\t\t\t\t\t\t\"name\": \"普格县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513429\",\n\t\t\t\t\t\t\"name\": \"布拖县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513430\",\n\t\t\t\t\t\t\"name\": \"金阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513431\",\n\t\t\t\t\t\t\"name\": \"昭觉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513432\",\n\t\t\t\t\t\t\"name\": \"喜德县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513433\",\n\t\t\t\t\t\t\"name\": \"冕宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513434\",\n\t\t\t\t\t\t\"name\": \"越西县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513435\",\n\t\t\t\t\t\t\"name\": \"甘洛县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513436\",\n\t\t\t\t\t\t\"name\": \"美姑县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"513437\",\n\t\t\t\t\t\t\"name\": \"雷波县\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"520000\",\n\t\t\"name\": \"贵州省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"520100\",\n\t\t\t\t\"name\": \"贵阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520102\",\n\t\t\t\t\t\t\"name\": \"南明区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520103\",\n\t\t\t\t\t\t\"name\": \"云岩区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520111\",\n\t\t\t\t\t\t\"name\": \"花溪区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520112\",\n\t\t\t\t\t\t\"name\": \"乌当区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520113\",\n\t\t\t\t\t\t\"name\": \"白云区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520115\",\n\t\t\t\t\t\t\"name\": \"观山湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520121\",\n\t\t\t\t\t\t\"name\": \"开阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520122\",\n\t\t\t\t\t\t\"name\": \"息烽县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520123\",\n\t\t\t\t\t\t\"name\": \"修文县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520181\",\n\t\t\t\t\t\t\"name\": \"清镇市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"520200\",\n\t\t\t\t\"name\": \"六盘水市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520201\",\n\t\t\t\t\t\t\"name\": \"钟山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520203\",\n\t\t\t\t\t\t\"name\": \"六枝特区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520221\",\n\t\t\t\t\t\t\"name\": \"水城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520281\",\n\t\t\t\t\t\t\"name\": \"盘州市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"520300\",\n\t\t\t\t\"name\": \"遵义市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520302\",\n\t\t\t\t\t\t\"name\": \"红花岗区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520303\",\n\t\t\t\t\t\t\"name\": \"汇川区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520304\",\n\t\t\t\t\t\t\"name\": \"播州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520322\",\n\t\t\t\t\t\t\"name\": \"桐梓县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520323\",\n\t\t\t\t\t\t\"name\": \"绥阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520324\",\n\t\t\t\t\t\t\"name\": \"正安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520325\",\n\t\t\t\t\t\t\"name\": \"道真仡佬族苗族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520326\",\n\t\t\t\t\t\t\"name\": \"务川仡佬族苗族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520327\",\n\t\t\t\t\t\t\"name\": \"凤冈县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520328\",\n\t\t\t\t\t\t\"name\": \"湄潭县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520329\",\n\t\t\t\t\t\t\"name\": \"余庆县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520330\",\n\t\t\t\t\t\t\"name\": \"习水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520381\",\n\t\t\t\t\t\t\"name\": \"赤水市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520382\",\n\t\t\t\t\t\t\"name\": \"仁怀市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"520400\",\n\t\t\t\t\"name\": \"安顺市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520402\",\n\t\t\t\t\t\t\"name\": \"西秀区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520403\",\n\t\t\t\t\t\t\"name\": \"平坝区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520422\",\n\t\t\t\t\t\t\"name\": \"普定县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520423\",\n\t\t\t\t\t\t\"name\": \"镇宁布依族苗族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520424\",\n\t\t\t\t\t\t\"name\": \"关岭布依族苗族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520425\",\n\t\t\t\t\t\t\"name\": \"紫云苗族布依族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"520500\",\n\t\t\t\t\"name\": \"毕节市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520502\",\n\t\t\t\t\t\t\"name\": \"七星关区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520521\",\n\t\t\t\t\t\t\"name\": \"大方县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520522\",\n\t\t\t\t\t\t\"name\": \"黔西县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520523\",\n\t\t\t\t\t\t\"name\": \"金沙县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520524\",\n\t\t\t\t\t\t\"name\": \"织金县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520525\",\n\t\t\t\t\t\t\"name\": \"纳雍县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520526\",\n\t\t\t\t\t\t\"name\": \"威宁彝族回族苗族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520527\",\n\t\t\t\t\t\t\"name\": \"赫章县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"520600\",\n\t\t\t\t\"name\": \"铜仁市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520602\",\n\t\t\t\t\t\t\"name\": \"碧江区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520603\",\n\t\t\t\t\t\t\"name\": \"万山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520621\",\n\t\t\t\t\t\t\"name\": \"江口县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520622\",\n\t\t\t\t\t\t\"name\": \"玉屏侗族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520623\",\n\t\t\t\t\t\t\"name\": \"石阡县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520624\",\n\t\t\t\t\t\t\"name\": \"思南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520625\",\n\t\t\t\t\t\t\"name\": \"印江土家族苗族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520626\",\n\t\t\t\t\t\t\"name\": \"德江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520627\",\n\t\t\t\t\t\t\"name\": \"沿河土家族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"520628\",\n\t\t\t\t\t\t\"name\": \"松桃苗族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"522300\",\n\t\t\t\t\"name\": \"黔西南布依族苗族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522301\",\n\t\t\t\t\t\t\"name\": \"兴义市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522322\",\n\t\t\t\t\t\t\"name\": \"兴仁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522323\",\n\t\t\t\t\t\t\"name\": \"普安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522324\",\n\t\t\t\t\t\t\"name\": \"晴隆县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522325\",\n\t\t\t\t\t\t\"name\": \"贞丰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522326\",\n\t\t\t\t\t\t\"name\": \"望谟县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522327\",\n\t\t\t\t\t\t\"name\": \"册亨县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522328\",\n\t\t\t\t\t\t\"name\": \"安龙县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"522600\",\n\t\t\t\t\"name\": \"黔东南苗族侗族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522601\",\n\t\t\t\t\t\t\"name\": \"凯里市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522622\",\n\t\t\t\t\t\t\"name\": \"黄平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522623\",\n\t\t\t\t\t\t\"name\": \"施秉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522624\",\n\t\t\t\t\t\t\"name\": \"三穗县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522625\",\n\t\t\t\t\t\t\"name\": \"镇远县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522626\",\n\t\t\t\t\t\t\"name\": \"岑巩县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522627\",\n\t\t\t\t\t\t\"name\": \"天柱县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522628\",\n\t\t\t\t\t\t\"name\": \"锦屏县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522629\",\n\t\t\t\t\t\t\"name\": \"剑河县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522630\",\n\t\t\t\t\t\t\"name\": \"台江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522631\",\n\t\t\t\t\t\t\"name\": \"黎平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522632\",\n\t\t\t\t\t\t\"name\": \"榕江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522633\",\n\t\t\t\t\t\t\"name\": \"从江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522634\",\n\t\t\t\t\t\t\"name\": \"雷山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522635\",\n\t\t\t\t\t\t\"name\": \"麻江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522636\",\n\t\t\t\t\t\t\"name\": \"丹寨县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"522700\",\n\t\t\t\t\"name\": \"黔南布依族苗族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522701\",\n\t\t\t\t\t\t\"name\": \"都匀市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522702\",\n\t\t\t\t\t\t\"name\": \"福泉市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522722\",\n\t\t\t\t\t\t\"name\": \"荔波县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522723\",\n\t\t\t\t\t\t\"name\": \"贵定县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522725\",\n\t\t\t\t\t\t\"name\": \"瓮安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522726\",\n\t\t\t\t\t\t\"name\": \"独山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522727\",\n\t\t\t\t\t\t\"name\": \"平塘县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522728\",\n\t\t\t\t\t\t\"name\": \"罗甸县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522729\",\n\t\t\t\t\t\t\"name\": \"长顺县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522730\",\n\t\t\t\t\t\t\"name\": \"龙里县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522731\",\n\t\t\t\t\t\t\"name\": \"惠水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"522732\",\n\t\t\t\t\t\t\"name\": \"三都水族自治县\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"530000\",\n\t\t\"name\": \"云南省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"530100\",\n\t\t\t\t\"name\": \"昆明市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530102\",\n\t\t\t\t\t\t\"name\": \"五华区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530103\",\n\t\t\t\t\t\t\"name\": \"盘龙区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530111\",\n\t\t\t\t\t\t\"name\": \"官渡区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530112\",\n\t\t\t\t\t\t\"name\": \"西山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530113\",\n\t\t\t\t\t\t\"name\": \"东川区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530114\",\n\t\t\t\t\t\t\"name\": \"呈贡区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530115\",\n\t\t\t\t\t\t\"name\": \"晋宁区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530124\",\n\t\t\t\t\t\t\"name\": \"富民县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530125\",\n\t\t\t\t\t\t\"name\": \"宜良县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530126\",\n\t\t\t\t\t\t\"name\": \"石林彝族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530127\",\n\t\t\t\t\t\t\"name\": \"嵩明县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530128\",\n\t\t\t\t\t\t\"name\": \"禄劝彝族苗族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530129\",\n\t\t\t\t\t\t\"name\": \"寻甸回族彝族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530181\",\n\t\t\t\t\t\t\"name\": \"安宁市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"530300\",\n\t\t\t\t\"name\": \"曲靖市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530302\",\n\t\t\t\t\t\t\"name\": \"麒麟区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530303\",\n\t\t\t\t\t\t\"name\": \"沾益区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530304\",\n\t\t\t\t\t\t\"name\": \"马龙区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530322\",\n\t\t\t\t\t\t\"name\": \"陆良县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530323\",\n\t\t\t\t\t\t\"name\": \"师宗县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530324\",\n\t\t\t\t\t\t\"name\": \"罗平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530325\",\n\t\t\t\t\t\t\"name\": \"富源县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530326\",\n\t\t\t\t\t\t\"name\": \"会泽县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530381\",\n\t\t\t\t\t\t\"name\": \"宣威市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"530400\",\n\t\t\t\t\"name\": \"玉溪市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530402\",\n\t\t\t\t\t\t\"name\": \"红塔区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530403\",\n\t\t\t\t\t\t\"name\": \"江川区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530422\",\n\t\t\t\t\t\t\"name\": \"澄江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530423\",\n\t\t\t\t\t\t\"name\": \"通海县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530424\",\n\t\t\t\t\t\t\"name\": \"华宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530425\",\n\t\t\t\t\t\t\"name\": \"易门县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530426\",\n\t\t\t\t\t\t\"name\": \"峨山彝族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530427\",\n\t\t\t\t\t\t\"name\": \"新平彝族傣族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530428\",\n\t\t\t\t\t\t\"name\": \"元江哈尼族彝族傣族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"530500\",\n\t\t\t\t\"name\": \"保山市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530502\",\n\t\t\t\t\t\t\"name\": \"隆阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530521\",\n\t\t\t\t\t\t\"name\": \"施甸县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530523\",\n\t\t\t\t\t\t\"name\": \"龙陵县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530524\",\n\t\t\t\t\t\t\"name\": \"昌宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530581\",\n\t\t\t\t\t\t\"name\": \"腾冲市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"530600\",\n\t\t\t\t\"name\": \"昭通市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530602\",\n\t\t\t\t\t\t\"name\": \"昭阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530621\",\n\t\t\t\t\t\t\"name\": \"鲁甸县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530622\",\n\t\t\t\t\t\t\"name\": \"巧家县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530623\",\n\t\t\t\t\t\t\"name\": \"盐津县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530624\",\n\t\t\t\t\t\t\"name\": \"大关县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530625\",\n\t\t\t\t\t\t\"name\": \"永善县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530626\",\n\t\t\t\t\t\t\"name\": \"绥江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530627\",\n\t\t\t\t\t\t\"name\": \"镇雄县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530628\",\n\t\t\t\t\t\t\"name\": \"彝良县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530629\",\n\t\t\t\t\t\t\"name\": \"威信县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530681\",\n\t\t\t\t\t\t\"name\": \"水富市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"530700\",\n\t\t\t\t\"name\": \"丽江市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530702\",\n\t\t\t\t\t\t\"name\": \"古城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530721\",\n\t\t\t\t\t\t\"name\": \"玉龙纳西族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530722\",\n\t\t\t\t\t\t\"name\": \"永胜县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530723\",\n\t\t\t\t\t\t\"name\": \"华坪县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530724\",\n\t\t\t\t\t\t\"name\": \"宁蒗彝族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"530800\",\n\t\t\t\t\"name\": \"普洱市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530802\",\n\t\t\t\t\t\t\"name\": \"思茅区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530821\",\n\t\t\t\t\t\t\"name\": \"宁洱哈尼族彝族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530822\",\n\t\t\t\t\t\t\"name\": \"墨江哈尼族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530823\",\n\t\t\t\t\t\t\"name\": \"景东彝族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530824\",\n\t\t\t\t\t\t\"name\": \"景谷傣族彝族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530825\",\n\t\t\t\t\t\t\"name\": \"镇沅彝族哈尼族拉祜族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530826\",\n\t\t\t\t\t\t\"name\": \"江城哈尼族彝族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530827\",\n\t\t\t\t\t\t\"name\": \"孟连傣族拉祜族佤族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530828\",\n\t\t\t\t\t\t\"name\": \"澜沧拉祜族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530829\",\n\t\t\t\t\t\t\"name\": \"西盟佤族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"530900\",\n\t\t\t\t\"name\": \"临沧市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530902\",\n\t\t\t\t\t\t\"name\": \"临翔区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530921\",\n\t\t\t\t\t\t\"name\": \"凤庆县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530922\",\n\t\t\t\t\t\t\"name\": \"云县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530923\",\n\t\t\t\t\t\t\"name\": \"永德县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530924\",\n\t\t\t\t\t\t\"name\": \"镇康县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530925\",\n\t\t\t\t\t\t\"name\": \"双江拉祜族佤族布朗族傣族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530926\",\n\t\t\t\t\t\t\"name\": \"耿马傣族佤族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"530927\",\n\t\t\t\t\t\t\"name\": \"沧源佤族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"532300\",\n\t\t\t\t\"name\": \"楚雄彝族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532301\",\n\t\t\t\t\t\t\"name\": \"楚雄市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532322\",\n\t\t\t\t\t\t\"name\": \"双柏县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532323\",\n\t\t\t\t\t\t\"name\": \"牟定县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532324\",\n\t\t\t\t\t\t\"name\": \"南华县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532325\",\n\t\t\t\t\t\t\"name\": \"姚安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532326\",\n\t\t\t\t\t\t\"name\": \"大姚县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532327\",\n\t\t\t\t\t\t\"name\": \"永仁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532328\",\n\t\t\t\t\t\t\"name\": \"元谋县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532329\",\n\t\t\t\t\t\t\"name\": \"武定县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532331\",\n\t\t\t\t\t\t\"name\": \"禄丰县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"532500\",\n\t\t\t\t\"name\": \"红河哈尼族彝族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532501\",\n\t\t\t\t\t\t\"name\": \"个旧市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532502\",\n\t\t\t\t\t\t\"name\": \"开远市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532503\",\n\t\t\t\t\t\t\"name\": \"蒙自市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532504\",\n\t\t\t\t\t\t\"name\": \"弥勒市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532523\",\n\t\t\t\t\t\t\"name\": \"屏边苗族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532524\",\n\t\t\t\t\t\t\"name\": \"建水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532525\",\n\t\t\t\t\t\t\"name\": \"石屏县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532527\",\n\t\t\t\t\t\t\"name\": \"泸西县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532528\",\n\t\t\t\t\t\t\"name\": \"元阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532529\",\n\t\t\t\t\t\t\"name\": \"红河县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532530\",\n\t\t\t\t\t\t\"name\": \"金平苗族瑶族傣族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532531\",\n\t\t\t\t\t\t\"name\": \"绿春县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532532\",\n\t\t\t\t\t\t\"name\": \"河口瑶族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"532600\",\n\t\t\t\t\"name\": \"文山壮族苗族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532601\",\n\t\t\t\t\t\t\"name\": \"文山市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532622\",\n\t\t\t\t\t\t\"name\": \"砚山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532623\",\n\t\t\t\t\t\t\"name\": \"西畴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532624\",\n\t\t\t\t\t\t\"name\": \"麻栗坡县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532625\",\n\t\t\t\t\t\t\"name\": \"马关县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532626\",\n\t\t\t\t\t\t\"name\": \"丘北县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532627\",\n\t\t\t\t\t\t\"name\": \"广南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532628\",\n\t\t\t\t\t\t\"name\": \"富宁县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"532800\",\n\t\t\t\t\"name\": \"西双版纳傣族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532801\",\n\t\t\t\t\t\t\"name\": \"景洪市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532822\",\n\t\t\t\t\t\t\"name\": \"勐海县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532823\",\n\t\t\t\t\t\t\"name\": \"勐腊县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"532900\",\n\t\t\t\t\"name\": \"大理白族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532901\",\n\t\t\t\t\t\t\"name\": \"大理市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532922\",\n\t\t\t\t\t\t\"name\": \"漾濞彝族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532923\",\n\t\t\t\t\t\t\"name\": \"祥云县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532924\",\n\t\t\t\t\t\t\"name\": \"宾川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532925\",\n\t\t\t\t\t\t\"name\": \"弥渡县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532926\",\n\t\t\t\t\t\t\"name\": \"南涧彝族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532927\",\n\t\t\t\t\t\t\"name\": \"巍山彝族回族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532928\",\n\t\t\t\t\t\t\"name\": \"永平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532929\",\n\t\t\t\t\t\t\"name\": \"云龙县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532930\",\n\t\t\t\t\t\t\"name\": \"洱源县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532931\",\n\t\t\t\t\t\t\"name\": \"剑川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"532932\",\n\t\t\t\t\t\t\"name\": \"鹤庆县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"533100\",\n\t\t\t\t\"name\": \"德宏傣族景颇族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"533102\",\n\t\t\t\t\t\t\"name\": \"瑞丽市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"533103\",\n\t\t\t\t\t\t\"name\": \"芒市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"533122\",\n\t\t\t\t\t\t\"name\": \"梁河县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"533123\",\n\t\t\t\t\t\t\"name\": \"盈江县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"533124\",\n\t\t\t\t\t\t\"name\": \"陇川县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"533300\",\n\t\t\t\t\"name\": \"怒江傈僳族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"533301\",\n\t\t\t\t\t\t\"name\": \"泸水市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"533323\",\n\t\t\t\t\t\t\"name\": \"福贡县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"533324\",\n\t\t\t\t\t\t\"name\": \"贡山独龙族怒族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"533325\",\n\t\t\t\t\t\t\"name\": \"兰坪白族普米族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"533400\",\n\t\t\t\t\"name\": \"迪庆藏族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"533401\",\n\t\t\t\t\t\t\"name\": \"香格里拉市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"533422\",\n\t\t\t\t\t\t\"name\": \"德钦县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"533423\",\n\t\t\t\t\t\t\"name\": \"维西傈僳族自治县\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"540000\",\n\t\t\"name\": \"西藏自治区\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"540100\",\n\t\t\t\t\"name\": \"拉萨市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540102\",\n\t\t\t\t\t\t\"name\": \"城关区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540103\",\n\t\t\t\t\t\t\"name\": \"堆龙德庆区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540104\",\n\t\t\t\t\t\t\"name\": \"达孜区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540121\",\n\t\t\t\t\t\t\"name\": \"林周县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540122\",\n\t\t\t\t\t\t\"name\": \"当雄县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540123\",\n\t\t\t\t\t\t\"name\": \"尼木县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540124\",\n\t\t\t\t\t\t\"name\": \"曲水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540127\",\n\t\t\t\t\t\t\"name\": \"墨竹工卡县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"540200\",\n\t\t\t\t\"name\": \"日喀则市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540202\",\n\t\t\t\t\t\t\"name\": \"桑珠孜区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540221\",\n\t\t\t\t\t\t\"name\": \"南木林县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540222\",\n\t\t\t\t\t\t\"name\": \"江孜县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540223\",\n\t\t\t\t\t\t\"name\": \"定日县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540224\",\n\t\t\t\t\t\t\"name\": \"萨迦县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540225\",\n\t\t\t\t\t\t\"name\": \"拉孜县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540226\",\n\t\t\t\t\t\t\"name\": \"昂仁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540227\",\n\t\t\t\t\t\t\"name\": \"谢通门县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540228\",\n\t\t\t\t\t\t\"name\": \"白朗县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540229\",\n\t\t\t\t\t\t\"name\": \"仁布县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540230\",\n\t\t\t\t\t\t\"name\": \"康马县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540231\",\n\t\t\t\t\t\t\"name\": \"定结县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540232\",\n\t\t\t\t\t\t\"name\": \"仲巴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540233\",\n\t\t\t\t\t\t\"name\": \"亚东县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540234\",\n\t\t\t\t\t\t\"name\": \"吉隆县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540235\",\n\t\t\t\t\t\t\"name\": \"聂拉木县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540236\",\n\t\t\t\t\t\t\"name\": \"萨嘎县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540237\",\n\t\t\t\t\t\t\"name\": \"岗巴县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"540300\",\n\t\t\t\t\"name\": \"昌都市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540302\",\n\t\t\t\t\t\t\"name\": \"卡若区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540321\",\n\t\t\t\t\t\t\"name\": \"江达县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540322\",\n\t\t\t\t\t\t\"name\": \"贡觉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540323\",\n\t\t\t\t\t\t\"name\": \"类乌齐县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540324\",\n\t\t\t\t\t\t\"name\": \"丁青县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540325\",\n\t\t\t\t\t\t\"name\": \"察雅县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540326\",\n\t\t\t\t\t\t\"name\": \"八宿县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540327\",\n\t\t\t\t\t\t\"name\": \"左贡县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540328\",\n\t\t\t\t\t\t\"name\": \"芒康县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540329\",\n\t\t\t\t\t\t\"name\": \"洛隆县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540330\",\n\t\t\t\t\t\t\"name\": \"边坝县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"540400\",\n\t\t\t\t\"name\": \"林芝市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540402\",\n\t\t\t\t\t\t\"name\": \"巴宜区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540421\",\n\t\t\t\t\t\t\"name\": \"工布江达县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540422\",\n\t\t\t\t\t\t\"name\": \"米林县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540423\",\n\t\t\t\t\t\t\"name\": \"墨脱县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540424\",\n\t\t\t\t\t\t\"name\": \"波密县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540425\",\n\t\t\t\t\t\t\"name\": \"察隅县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540426\",\n\t\t\t\t\t\t\"name\": \"朗县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"540500\",\n\t\t\t\t\"name\": \"山南市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540502\",\n\t\t\t\t\t\t\"name\": \"乃东区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540521\",\n\t\t\t\t\t\t\"name\": \"扎囊县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540522\",\n\t\t\t\t\t\t\"name\": \"贡嘎县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540523\",\n\t\t\t\t\t\t\"name\": \"桑日县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540524\",\n\t\t\t\t\t\t\"name\": \"琼结县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540525\",\n\t\t\t\t\t\t\"name\": \"曲松县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540526\",\n\t\t\t\t\t\t\"name\": \"措美县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540527\",\n\t\t\t\t\t\t\"name\": \"洛扎县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540528\",\n\t\t\t\t\t\t\"name\": \"加查县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540529\",\n\t\t\t\t\t\t\"name\": \"隆子县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540530\",\n\t\t\t\t\t\t\"name\": \"错那县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540531\",\n\t\t\t\t\t\t\"name\": \"浪卡子县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"540600\",\n\t\t\t\t\"name\": \"那曲市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540602\",\n\t\t\t\t\t\t\"name\": \"色尼区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540621\",\n\t\t\t\t\t\t\"name\": \"嘉黎县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540622\",\n\t\t\t\t\t\t\"name\": \"比如县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540623\",\n\t\t\t\t\t\t\"name\": \"聂荣县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540624\",\n\t\t\t\t\t\t\"name\": \"安多县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540625\",\n\t\t\t\t\t\t\"name\": \"申扎县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540626\",\n\t\t\t\t\t\t\"name\": \"索县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540627\",\n\t\t\t\t\t\t\"name\": \"班戈县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540628\",\n\t\t\t\t\t\t\"name\": \"巴青县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540629\",\n\t\t\t\t\t\t\"name\": \"尼玛县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"540630\",\n\t\t\t\t\t\t\"name\": \"双湖县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"542500\",\n\t\t\t\t\"name\": \"阿里地区\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"542521\",\n\t\t\t\t\t\t\"name\": \"普兰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"542522\",\n\t\t\t\t\t\t\"name\": \"札达县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"542523\",\n\t\t\t\t\t\t\"name\": \"噶尔县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"542524\",\n\t\t\t\t\t\t\"name\": \"日土县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"542525\",\n\t\t\t\t\t\t\"name\": \"革吉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"542526\",\n\t\t\t\t\t\t\"name\": \"改则县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"542527\",\n\t\t\t\t\t\t\"name\": \"措勤县\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"610000\",\n\t\t\"name\": \"陕西省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"610100\",\n\t\t\t\t\"name\": \"西安市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610102\",\n\t\t\t\t\t\t\"name\": \"新城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610103\",\n\t\t\t\t\t\t\"name\": \"碑林区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610104\",\n\t\t\t\t\t\t\"name\": \"莲湖区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610111\",\n\t\t\t\t\t\t\"name\": \"灞桥区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610112\",\n\t\t\t\t\t\t\"name\": \"未央区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610113\",\n\t\t\t\t\t\t\"name\": \"雁塔区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610114\",\n\t\t\t\t\t\t\"name\": \"阎良区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610115\",\n\t\t\t\t\t\t\"name\": \"临潼区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610116\",\n\t\t\t\t\t\t\"name\": \"长安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610117\",\n\t\t\t\t\t\t\"name\": \"高陵区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610118\",\n\t\t\t\t\t\t\"name\": \"鄠邑区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610122\",\n\t\t\t\t\t\t\"name\": \"蓝田县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610124\",\n\t\t\t\t\t\t\"name\": \"周至县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"610200\",\n\t\t\t\t\"name\": \"铜川市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610202\",\n\t\t\t\t\t\t\"name\": \"王益区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610203\",\n\t\t\t\t\t\t\"name\": \"印台区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610204\",\n\t\t\t\t\t\t\"name\": \"耀州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610222\",\n\t\t\t\t\t\t\"name\": \"宜君县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"610300\",\n\t\t\t\t\"name\": \"宝鸡市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610302\",\n\t\t\t\t\t\t\"name\": \"渭滨区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610303\",\n\t\t\t\t\t\t\"name\": \"金台区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610304\",\n\t\t\t\t\t\t\"name\": \"陈仓区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610322\",\n\t\t\t\t\t\t\"name\": \"凤翔县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610323\",\n\t\t\t\t\t\t\"name\": \"岐山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610324\",\n\t\t\t\t\t\t\"name\": \"扶风县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610326\",\n\t\t\t\t\t\t\"name\": \"眉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610327\",\n\t\t\t\t\t\t\"name\": \"陇县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610328\",\n\t\t\t\t\t\t\"name\": \"千阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610329\",\n\t\t\t\t\t\t\"name\": \"麟游县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610330\",\n\t\t\t\t\t\t\"name\": \"凤县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610331\",\n\t\t\t\t\t\t\"name\": \"太白县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"610400\",\n\t\t\t\t\"name\": \"咸阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610402\",\n\t\t\t\t\t\t\"name\": \"秦都区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610403\",\n\t\t\t\t\t\t\"name\": \"杨陵区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610404\",\n\t\t\t\t\t\t\"name\": \"渭城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610422\",\n\t\t\t\t\t\t\"name\": \"三原县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610423\",\n\t\t\t\t\t\t\"name\": \"泾阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610424\",\n\t\t\t\t\t\t\"name\": \"乾县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610425\",\n\t\t\t\t\t\t\"name\": \"礼泉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610426\",\n\t\t\t\t\t\t\"name\": \"永寿县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610428\",\n\t\t\t\t\t\t\"name\": \"长武县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610429\",\n\t\t\t\t\t\t\"name\": \"旬邑县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610430\",\n\t\t\t\t\t\t\"name\": \"淳化县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610431\",\n\t\t\t\t\t\t\"name\": \"武功县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610481\",\n\t\t\t\t\t\t\"name\": \"兴平市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610482\",\n\t\t\t\t\t\t\"name\": \"彬州市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"610500\",\n\t\t\t\t\"name\": \"渭南市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610502\",\n\t\t\t\t\t\t\"name\": \"临渭区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610503\",\n\t\t\t\t\t\t\"name\": \"华州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610522\",\n\t\t\t\t\t\t\"name\": \"潼关县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610523\",\n\t\t\t\t\t\t\"name\": \"大荔县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610524\",\n\t\t\t\t\t\t\"name\": \"合阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610525\",\n\t\t\t\t\t\t\"name\": \"澄城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610526\",\n\t\t\t\t\t\t\"name\": \"蒲城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610527\",\n\t\t\t\t\t\t\"name\": \"白水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610528\",\n\t\t\t\t\t\t\"name\": \"富平县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610581\",\n\t\t\t\t\t\t\"name\": \"韩城市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610582\",\n\t\t\t\t\t\t\"name\": \"华阴市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"610600\",\n\t\t\t\t\"name\": \"延安市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610602\",\n\t\t\t\t\t\t\"name\": \"宝塔区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610603\",\n\t\t\t\t\t\t\"name\": \"安塞区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610621\",\n\t\t\t\t\t\t\"name\": \"延长县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610622\",\n\t\t\t\t\t\t\"name\": \"延川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610623\",\n\t\t\t\t\t\t\"name\": \"子长县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610625\",\n\t\t\t\t\t\t\"name\": \"志丹县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610626\",\n\t\t\t\t\t\t\"name\": \"吴起县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610627\",\n\t\t\t\t\t\t\"name\": \"甘泉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610628\",\n\t\t\t\t\t\t\"name\": \"富县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610629\",\n\t\t\t\t\t\t\"name\": \"洛川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610630\",\n\t\t\t\t\t\t\"name\": \"宜川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610631\",\n\t\t\t\t\t\t\"name\": \"黄龙县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610632\",\n\t\t\t\t\t\t\"name\": \"黄陵县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"610700\",\n\t\t\t\t\"name\": \"汉中市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610702\",\n\t\t\t\t\t\t\"name\": \"汉台区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610703\",\n\t\t\t\t\t\t\"name\": \"南郑区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610722\",\n\t\t\t\t\t\t\"name\": \"城固县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610723\",\n\t\t\t\t\t\t\"name\": \"洋县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610724\",\n\t\t\t\t\t\t\"name\": \"西乡县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610725\",\n\t\t\t\t\t\t\"name\": \"勉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610726\",\n\t\t\t\t\t\t\"name\": \"宁强县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610727\",\n\t\t\t\t\t\t\"name\": \"略阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610728\",\n\t\t\t\t\t\t\"name\": \"镇巴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610729\",\n\t\t\t\t\t\t\"name\": \"留坝县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610730\",\n\t\t\t\t\t\t\"name\": \"佛坪县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"610800\",\n\t\t\t\t\"name\": \"榆林市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610802\",\n\t\t\t\t\t\t\"name\": \"榆阳区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610803\",\n\t\t\t\t\t\t\"name\": \"横山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610822\",\n\t\t\t\t\t\t\"name\": \"府谷县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610824\",\n\t\t\t\t\t\t\"name\": \"靖边县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610825\",\n\t\t\t\t\t\t\"name\": \"定边县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610826\",\n\t\t\t\t\t\t\"name\": \"绥德县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610827\",\n\t\t\t\t\t\t\"name\": \"米脂县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610828\",\n\t\t\t\t\t\t\"name\": \"佳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610829\",\n\t\t\t\t\t\t\"name\": \"吴堡县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610830\",\n\t\t\t\t\t\t\"name\": \"清涧县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610831\",\n\t\t\t\t\t\t\"name\": \"子洲县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610881\",\n\t\t\t\t\t\t\"name\": \"神木市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"610900\",\n\t\t\t\t\"name\": \"安康市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610902\",\n\t\t\t\t\t\t\"name\": \"汉滨区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610921\",\n\t\t\t\t\t\t\"name\": \"汉阴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610922\",\n\t\t\t\t\t\t\"name\": \"石泉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610923\",\n\t\t\t\t\t\t\"name\": \"宁陕县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610924\",\n\t\t\t\t\t\t\"name\": \"紫阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610925\",\n\t\t\t\t\t\t\"name\": \"岚皋县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610926\",\n\t\t\t\t\t\t\"name\": \"平利县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610927\",\n\t\t\t\t\t\t\"name\": \"镇坪县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610928\",\n\t\t\t\t\t\t\"name\": \"旬阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"610929\",\n\t\t\t\t\t\t\"name\": \"白河县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"611000\",\n\t\t\t\t\"name\": \"商洛市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"611002\",\n\t\t\t\t\t\t\"name\": \"商州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"611021\",\n\t\t\t\t\t\t\"name\": \"洛南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"611022\",\n\t\t\t\t\t\t\"name\": \"丹凤县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"611023\",\n\t\t\t\t\t\t\"name\": \"商南县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"611024\",\n\t\t\t\t\t\t\"name\": \"山阳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"611025\",\n\t\t\t\t\t\t\"name\": \"镇安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"611026\",\n\t\t\t\t\t\t\"name\": \"柞水县\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"620000\",\n\t\t\"name\": \"甘肃省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"620100\",\n\t\t\t\t\"name\": \"兰州市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620102\",\n\t\t\t\t\t\t\"name\": \"城关区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620103\",\n\t\t\t\t\t\t\"name\": \"七里河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620104\",\n\t\t\t\t\t\t\"name\": \"西固区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620105\",\n\t\t\t\t\t\t\"name\": \"安宁区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620111\",\n\t\t\t\t\t\t\"name\": \"红古区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620121\",\n\t\t\t\t\t\t\"name\": \"永登县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620122\",\n\t\t\t\t\t\t\"name\": \"皋兰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620123\",\n\t\t\t\t\t\t\"name\": \"榆中县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"620200\",\n\t\t\t\t\"name\": \"嘉峪关市\",\n\t\t\t\t\"children\": []\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"620300\",\n\t\t\t\t\"name\": \"金昌市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620302\",\n\t\t\t\t\t\t\"name\": \"金川区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620321\",\n\t\t\t\t\t\t\"name\": \"永昌县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"620400\",\n\t\t\t\t\"name\": \"白银市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620402\",\n\t\t\t\t\t\t\"name\": \"白银区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620403\",\n\t\t\t\t\t\t\"name\": \"平川区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620421\",\n\t\t\t\t\t\t\"name\": \"靖远县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620422\",\n\t\t\t\t\t\t\"name\": \"会宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620423\",\n\t\t\t\t\t\t\"name\": \"景泰县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"620500\",\n\t\t\t\t\"name\": \"天水市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620502\",\n\t\t\t\t\t\t\"name\": \"秦州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620503\",\n\t\t\t\t\t\t\"name\": \"麦积区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620521\",\n\t\t\t\t\t\t\"name\": \"清水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620522\",\n\t\t\t\t\t\t\"name\": \"秦安县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620523\",\n\t\t\t\t\t\t\"name\": \"甘谷县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620524\",\n\t\t\t\t\t\t\"name\": \"武山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620525\",\n\t\t\t\t\t\t\"name\": \"张家川回族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"620600\",\n\t\t\t\t\"name\": \"武威市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620602\",\n\t\t\t\t\t\t\"name\": \"凉州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620621\",\n\t\t\t\t\t\t\"name\": \"民勤县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620622\",\n\t\t\t\t\t\t\"name\": \"古浪县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620623\",\n\t\t\t\t\t\t\"name\": \"天祝藏族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"620700\",\n\t\t\t\t\"name\": \"张掖市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620702\",\n\t\t\t\t\t\t\"name\": \"甘州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620721\",\n\t\t\t\t\t\t\"name\": \"肃南裕固族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620722\",\n\t\t\t\t\t\t\"name\": \"民乐县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620723\",\n\t\t\t\t\t\t\"name\": \"临泽县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620724\",\n\t\t\t\t\t\t\"name\": \"高台县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620725\",\n\t\t\t\t\t\t\"name\": \"山丹县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"620800\",\n\t\t\t\t\"name\": \"平凉市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620802\",\n\t\t\t\t\t\t\"name\": \"崆峒区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620821\",\n\t\t\t\t\t\t\"name\": \"泾川县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620822\",\n\t\t\t\t\t\t\"name\": \"灵台县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620823\",\n\t\t\t\t\t\t\"name\": \"崇信县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620825\",\n\t\t\t\t\t\t\"name\": \"庄浪县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620826\",\n\t\t\t\t\t\t\"name\": \"静宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620881\",\n\t\t\t\t\t\t\"name\": \"华亭市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"620900\",\n\t\t\t\t\"name\": \"酒泉市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620902\",\n\t\t\t\t\t\t\"name\": \"肃州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620921\",\n\t\t\t\t\t\t\"name\": \"金塔县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620922\",\n\t\t\t\t\t\t\"name\": \"瓜州县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620923\",\n\t\t\t\t\t\t\"name\": \"肃北蒙古族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620924\",\n\t\t\t\t\t\t\"name\": \"阿克塞哈萨克族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620981\",\n\t\t\t\t\t\t\"name\": \"玉门市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"620982\",\n\t\t\t\t\t\t\"name\": \"敦煌市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"621000\",\n\t\t\t\t\"name\": \"庆阳市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621002\",\n\t\t\t\t\t\t\"name\": \"西峰区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621021\",\n\t\t\t\t\t\t\"name\": \"庆城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621022\",\n\t\t\t\t\t\t\"name\": \"环县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621023\",\n\t\t\t\t\t\t\"name\": \"华池县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621024\",\n\t\t\t\t\t\t\"name\": \"合水县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621025\",\n\t\t\t\t\t\t\"name\": \"正宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621026\",\n\t\t\t\t\t\t\"name\": \"宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621027\",\n\t\t\t\t\t\t\"name\": \"镇原县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"621100\",\n\t\t\t\t\"name\": \"定西市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621102\",\n\t\t\t\t\t\t\"name\": \"安定区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621121\",\n\t\t\t\t\t\t\"name\": \"通渭县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621122\",\n\t\t\t\t\t\t\"name\": \"陇西县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621123\",\n\t\t\t\t\t\t\"name\": \"渭源县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621124\",\n\t\t\t\t\t\t\"name\": \"临洮县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621125\",\n\t\t\t\t\t\t\"name\": \"漳县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621126\",\n\t\t\t\t\t\t\"name\": \"岷县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"621200\",\n\t\t\t\t\"name\": \"陇南市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621202\",\n\t\t\t\t\t\t\"name\": \"武都区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621221\",\n\t\t\t\t\t\t\"name\": \"成县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621222\",\n\t\t\t\t\t\t\"name\": \"文县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621223\",\n\t\t\t\t\t\t\"name\": \"宕昌县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621224\",\n\t\t\t\t\t\t\"name\": \"康县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621225\",\n\t\t\t\t\t\t\"name\": \"西和县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621226\",\n\t\t\t\t\t\t\"name\": \"礼县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621227\",\n\t\t\t\t\t\t\"name\": \"徽县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"621228\",\n\t\t\t\t\t\t\"name\": \"两当县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"622900\",\n\t\t\t\t\"name\": \"临夏回族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"622901\",\n\t\t\t\t\t\t\"name\": \"临夏市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"622921\",\n\t\t\t\t\t\t\"name\": \"临夏县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"622922\",\n\t\t\t\t\t\t\"name\": \"康乐县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"622923\",\n\t\t\t\t\t\t\"name\": \"永靖县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"622924\",\n\t\t\t\t\t\t\"name\": \"广河县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"622925\",\n\t\t\t\t\t\t\"name\": \"和政县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"622926\",\n\t\t\t\t\t\t\"name\": \"东乡族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"622927\",\n\t\t\t\t\t\t\"name\": \"积石山保安族东乡族撒拉族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"623000\",\n\t\t\t\t\"name\": \"甘南藏族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"623001\",\n\t\t\t\t\t\t\"name\": \"合作市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"623021\",\n\t\t\t\t\t\t\"name\": \"临潭县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"623022\",\n\t\t\t\t\t\t\"name\": \"卓尼县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"623023\",\n\t\t\t\t\t\t\"name\": \"舟曲县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"623024\",\n\t\t\t\t\t\t\"name\": \"迭部县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"623025\",\n\t\t\t\t\t\t\"name\": \"玛曲县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"623026\",\n\t\t\t\t\t\t\"name\": \"碌曲县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"623027\",\n\t\t\t\t\t\t\"name\": \"夏河县\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"630000\",\n\t\t\"name\": \"青海省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"630100\",\n\t\t\t\t\"name\": \"西宁市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"630102\",\n\t\t\t\t\t\t\"name\": \"城东区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"630103\",\n\t\t\t\t\t\t\"name\": \"城中区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"630104\",\n\t\t\t\t\t\t\"name\": \"城西区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"630105\",\n\t\t\t\t\t\t\"name\": \"城北区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"630121\",\n\t\t\t\t\t\t\"name\": \"大通回族土族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"630122\",\n\t\t\t\t\t\t\"name\": \"湟中县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"630123\",\n\t\t\t\t\t\t\"name\": \"湟源县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"630200\",\n\t\t\t\t\"name\": \"海东市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"630202\",\n\t\t\t\t\t\t\"name\": \"乐都区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"630203\",\n\t\t\t\t\t\t\"name\": \"平安区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"630222\",\n\t\t\t\t\t\t\"name\": \"民和回族土族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"630223\",\n\t\t\t\t\t\t\"name\": \"互助土族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"630224\",\n\t\t\t\t\t\t\"name\": \"化隆回族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"630225\",\n\t\t\t\t\t\t\"name\": \"循化撒拉族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"632200\",\n\t\t\t\t\"name\": \"海北藏族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632221\",\n\t\t\t\t\t\t\"name\": \"门源回族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632222\",\n\t\t\t\t\t\t\"name\": \"祁连县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632223\",\n\t\t\t\t\t\t\"name\": \"海晏县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632224\",\n\t\t\t\t\t\t\"name\": \"刚察县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"632300\",\n\t\t\t\t\"name\": \"黄南藏族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632321\",\n\t\t\t\t\t\t\"name\": \"同仁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632322\",\n\t\t\t\t\t\t\"name\": \"尖扎县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632323\",\n\t\t\t\t\t\t\"name\": \"泽库县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632324\",\n\t\t\t\t\t\t\"name\": \"河南蒙古族自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"632500\",\n\t\t\t\t\"name\": \"海南藏族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632521\",\n\t\t\t\t\t\t\"name\": \"共和县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632522\",\n\t\t\t\t\t\t\"name\": \"同德县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632523\",\n\t\t\t\t\t\t\"name\": \"贵德县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632524\",\n\t\t\t\t\t\t\"name\": \"兴海县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632525\",\n\t\t\t\t\t\t\"name\": \"贵南县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"632600\",\n\t\t\t\t\"name\": \"果洛藏族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632621\",\n\t\t\t\t\t\t\"name\": \"玛沁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632622\",\n\t\t\t\t\t\t\"name\": \"班玛县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632623\",\n\t\t\t\t\t\t\"name\": \"甘德县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632624\",\n\t\t\t\t\t\t\"name\": \"达日县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632625\",\n\t\t\t\t\t\t\"name\": \"久治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632626\",\n\t\t\t\t\t\t\"name\": \"玛多县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"632700\",\n\t\t\t\t\"name\": \"玉树藏族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632701\",\n\t\t\t\t\t\t\"name\": \"玉树市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632722\",\n\t\t\t\t\t\t\"name\": \"杂多县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632723\",\n\t\t\t\t\t\t\"name\": \"称多县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632724\",\n\t\t\t\t\t\t\"name\": \"治多县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632725\",\n\t\t\t\t\t\t\"name\": \"囊谦县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632726\",\n\t\t\t\t\t\t\"name\": \"曲麻莱县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"632800\",\n\t\t\t\t\"name\": \"海西蒙古族藏族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632801\",\n\t\t\t\t\t\t\"name\": \"格尔木市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632802\",\n\t\t\t\t\t\t\"name\": \"德令哈市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632803\",\n\t\t\t\t\t\t\"name\": \"茫崖市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632821\",\n\t\t\t\t\t\t\"name\": \"乌兰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632822\",\n\t\t\t\t\t\t\"name\": \"都兰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"632823\",\n\t\t\t\t\t\t\"name\": \"天峻县\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"640000\",\n\t\t\"name\": \"宁夏回族自治区\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"640100\",\n\t\t\t\t\"name\": \"银川市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640104\",\n\t\t\t\t\t\t\"name\": \"兴庆区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640105\",\n\t\t\t\t\t\t\"name\": \"西夏区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640106\",\n\t\t\t\t\t\t\"name\": \"金凤区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640121\",\n\t\t\t\t\t\t\"name\": \"永宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640122\",\n\t\t\t\t\t\t\"name\": \"贺兰县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640181\",\n\t\t\t\t\t\t\"name\": \"灵武市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"640200\",\n\t\t\t\t\"name\": \"石嘴山市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640202\",\n\t\t\t\t\t\t\"name\": \"大武口区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640205\",\n\t\t\t\t\t\t\"name\": \"惠农区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640221\",\n\t\t\t\t\t\t\"name\": \"平罗县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"640300\",\n\t\t\t\t\"name\": \"吴忠市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640302\",\n\t\t\t\t\t\t\"name\": \"利通区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640303\",\n\t\t\t\t\t\t\"name\": \"红寺堡区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640323\",\n\t\t\t\t\t\t\"name\": \"盐池县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640324\",\n\t\t\t\t\t\t\"name\": \"同心县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640381\",\n\t\t\t\t\t\t\"name\": \"青铜峡市\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"640400\",\n\t\t\t\t\"name\": \"固原市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640402\",\n\t\t\t\t\t\t\"name\": \"原州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640422\",\n\t\t\t\t\t\t\"name\": \"西吉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640423\",\n\t\t\t\t\t\t\"name\": \"隆德县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640424\",\n\t\t\t\t\t\t\"name\": \"泾源县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640425\",\n\t\t\t\t\t\t\"name\": \"彭阳县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"640500\",\n\t\t\t\t\"name\": \"中卫市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640502\",\n\t\t\t\t\t\t\"name\": \"沙坡头区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640521\",\n\t\t\t\t\t\t\"name\": \"中宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"640522\",\n\t\t\t\t\t\t\"name\": \"海原县\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"650000\",\n\t\t\"name\": \"新疆维吾尔自治区\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"650100\",\n\t\t\t\t\"name\": \"乌鲁木齐市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"650102\",\n\t\t\t\t\t\t\"name\": \"天山区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"650103\",\n\t\t\t\t\t\t\"name\": \"沙依巴克区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"650104\",\n\t\t\t\t\t\t\"name\": \"新市区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"650105\",\n\t\t\t\t\t\t\"name\": \"水磨沟区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"650106\",\n\t\t\t\t\t\t\"name\": \"头屯河区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"650107\",\n\t\t\t\t\t\t\"name\": \"达坂城区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"650109\",\n\t\t\t\t\t\t\"name\": \"米东区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"650121\",\n\t\t\t\t\t\t\"name\": \"乌鲁木齐县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"650200\",\n\t\t\t\t\"name\": \"克拉玛依市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"650202\",\n\t\t\t\t\t\t\"name\": \"独山子区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"650203\",\n\t\t\t\t\t\t\"name\": \"克拉玛依区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"650204\",\n\t\t\t\t\t\t\"name\": \"白碱滩区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"650205\",\n\t\t\t\t\t\t\"name\": \"乌尔禾区\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"650400\",\n\t\t\t\t\"name\": \"吐鲁番市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"650402\",\n\t\t\t\t\t\t\"name\": \"高昌区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"650421\",\n\t\t\t\t\t\t\"name\": \"鄯善县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"650422\",\n\t\t\t\t\t\t\"name\": \"托克逊县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"650500\",\n\t\t\t\t\"name\": \"哈密市\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"650502\",\n\t\t\t\t\t\t\"name\": \"伊州区\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"650521\",\n\t\t\t\t\t\t\"name\": \"巴里坤哈萨克自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"650522\",\n\t\t\t\t\t\t\"name\": \"伊吾县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"652300\",\n\t\t\t\t\"name\": \"昌吉回族自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652301\",\n\t\t\t\t\t\t\"name\": \"昌吉市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652302\",\n\t\t\t\t\t\t\"name\": \"阜康市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652323\",\n\t\t\t\t\t\t\"name\": \"呼图壁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652324\",\n\t\t\t\t\t\t\"name\": \"玛纳斯县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652325\",\n\t\t\t\t\t\t\"name\": \"奇台县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652327\",\n\t\t\t\t\t\t\"name\": \"吉木萨尔县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652328\",\n\t\t\t\t\t\t\"name\": \"木垒哈萨克自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"652700\",\n\t\t\t\t\"name\": \"博尔塔拉蒙古自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652701\",\n\t\t\t\t\t\t\"name\": \"博乐市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652702\",\n\t\t\t\t\t\t\"name\": \"阿拉山口市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652722\",\n\t\t\t\t\t\t\"name\": \"精河县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652723\",\n\t\t\t\t\t\t\"name\": \"温泉县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"652800\",\n\t\t\t\t\"name\": \"巴音郭楞蒙古自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652801\",\n\t\t\t\t\t\t\"name\": \"库尔勒市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652822\",\n\t\t\t\t\t\t\"name\": \"轮台县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652823\",\n\t\t\t\t\t\t\"name\": \"尉犁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652824\",\n\t\t\t\t\t\t\"name\": \"若羌县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652825\",\n\t\t\t\t\t\t\"name\": \"且末县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652826\",\n\t\t\t\t\t\t\"name\": \"焉耆回族自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652827\",\n\t\t\t\t\t\t\"name\": \"和静县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652828\",\n\t\t\t\t\t\t\"name\": \"和硕县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652829\",\n\t\t\t\t\t\t\"name\": \"博湖县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"652900\",\n\t\t\t\t\"name\": \"阿克苏地区\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652901\",\n\t\t\t\t\t\t\"name\": \"阿克苏市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652922\",\n\t\t\t\t\t\t\"name\": \"温宿县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652923\",\n\t\t\t\t\t\t\"name\": \"库车县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652924\",\n\t\t\t\t\t\t\"name\": \"沙雅县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652925\",\n\t\t\t\t\t\t\"name\": \"新和县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652926\",\n\t\t\t\t\t\t\"name\": \"拜城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652927\",\n\t\t\t\t\t\t\"name\": \"乌什县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652928\",\n\t\t\t\t\t\t\"name\": \"阿瓦提县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"652929\",\n\t\t\t\t\t\t\"name\": \"柯坪县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"653000\",\n\t\t\t\t\"name\": \"克孜勒苏柯尔克孜自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653001\",\n\t\t\t\t\t\t\"name\": \"阿图什市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653022\",\n\t\t\t\t\t\t\"name\": \"阿克陶县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653023\",\n\t\t\t\t\t\t\"name\": \"阿合奇县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653024\",\n\t\t\t\t\t\t\"name\": \"乌恰县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"653100\",\n\t\t\t\t\"name\": \"喀什地区\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653101\",\n\t\t\t\t\t\t\"name\": \"喀什市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653121\",\n\t\t\t\t\t\t\"name\": \"疏附县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653122\",\n\t\t\t\t\t\t\"name\": \"疏勒县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653123\",\n\t\t\t\t\t\t\"name\": \"英吉沙县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653124\",\n\t\t\t\t\t\t\"name\": \"泽普县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653125\",\n\t\t\t\t\t\t\"name\": \"莎车县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653126\",\n\t\t\t\t\t\t\"name\": \"叶城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653127\",\n\t\t\t\t\t\t\"name\": \"麦盖提县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653128\",\n\t\t\t\t\t\t\"name\": \"岳普湖县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653129\",\n\t\t\t\t\t\t\"name\": \"伽师县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653130\",\n\t\t\t\t\t\t\"name\": \"巴楚县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653131\",\n\t\t\t\t\t\t\"name\": \"塔什库尔干塔吉克自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"653200\",\n\t\t\t\t\"name\": \"和田地区\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653201\",\n\t\t\t\t\t\t\"name\": \"和田市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653221\",\n\t\t\t\t\t\t\"name\": \"和田县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653222\",\n\t\t\t\t\t\t\"name\": \"墨玉县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653223\",\n\t\t\t\t\t\t\"name\": \"皮山县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653224\",\n\t\t\t\t\t\t\"name\": \"洛浦县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653225\",\n\t\t\t\t\t\t\"name\": \"策勒县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653226\",\n\t\t\t\t\t\t\"name\": \"于田县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"653227\",\n\t\t\t\t\t\t\"name\": \"民丰县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"654000\",\n\t\t\t\t\"name\": \"伊犁哈萨克自治州\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654002\",\n\t\t\t\t\t\t\"name\": \"伊宁市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654003\",\n\t\t\t\t\t\t\"name\": \"奎屯市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654004\",\n\t\t\t\t\t\t\"name\": \"霍尔果斯市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654021\",\n\t\t\t\t\t\t\"name\": \"伊宁县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654022\",\n\t\t\t\t\t\t\"name\": \"察布查尔锡伯自治县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654023\",\n\t\t\t\t\t\t\"name\": \"霍城县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654024\",\n\t\t\t\t\t\t\"name\": \"巩留县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654025\",\n\t\t\t\t\t\t\"name\": \"新源县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654026\",\n\t\t\t\t\t\t\"name\": \"昭苏县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654027\",\n\t\t\t\t\t\t\"name\": \"特克斯县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654028\",\n\t\t\t\t\t\t\"name\": \"尼勒克县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"654200\",\n\t\t\t\t\"name\": \"塔城地区\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654201\",\n\t\t\t\t\t\t\"name\": \"塔城市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654202\",\n\t\t\t\t\t\t\"name\": \"乌苏市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654221\",\n\t\t\t\t\t\t\"name\": \"额敏县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654223\",\n\t\t\t\t\t\t\"name\": \"沙湾县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654224\",\n\t\t\t\t\t\t\"name\": \"托里县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654225\",\n\t\t\t\t\t\t\"name\": \"裕民县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654226\",\n\t\t\t\t\t\t\"name\": \"和布克赛尔蒙古自治县\"\n          }\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"code\": \"654300\",\n\t\t\t\t\"name\": \"阿勒泰地区\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654301\",\n\t\t\t\t\t\t\"name\": \"阿勒泰市\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654321\",\n\t\t\t\t\t\t\"name\": \"布尔津县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654322\",\n\t\t\t\t\t\t\"name\": \"富蕴县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654323\",\n\t\t\t\t\t\t\"name\": \"福海县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654324\",\n\t\t\t\t\t\t\"name\": \"哈巴河县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654325\",\n\t\t\t\t\t\t\"name\": \"青河县\"\n          },\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"654326\",\n\t\t\t\t\t\t\"name\": \"吉木乃县\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"710000\",\n\t\t\"name\": \"台湾省\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"710000\",\n\t\t\t\t\"name\": \"台湾省\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"710000\",\n\t\t\t\t\t\t\"name\": \"台湾省\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"810000\",\n\t\t\"name\": \"香港特别行政区\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"810000\",\n\t\t\t\t\"name\": \"香港特别行政区\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"810000\",\n\t\t\t\t\t\t\"name\": \"香港特别行政区\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"code\": \"820000\",\n\t\t\"name\": \"澳门特别行政区\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"code\": \"820000\",\n\t\t\t\t\"name\": \"澳门特别行政区\",\n\t\t\t\t\"children\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"code\": \"820000\",\n\t\t\t\t\t\t\"name\": \"澳门特别行政区\"\n          }\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t}\n]"
  },
  {
    "path": "src/const/columnTypeList.js",
    "content": "/**\n * 数值 支持查询条件（等于 大于 小于 大于等于 小于等于 区间）\n**/\n\nconst NUMBER_QUERY_TYPE = ['EQ', 'NE', 'GT', 'GE', 'LT', 'LE', 'BETWEEN']\nconst VARCHAR_QUERY_TYPE = ['LIKE', 'LIKE_LEFT', 'LIKE_RIGHT', 'EQ']\nexport const columnTypeList = [\n  {label:'varchar',value:'varchar', type: 'input', isSearch: true, isSenior: true, limit: VARCHAR_QUERY_TYPE},\n  {label:'bit',value:'bit', type: 'switch', isSearch: true, isSenior: false, isEnum: false},\n  {label:'char',value:'char',type: 'input', isSearch: false, isSenior: false, isEnum: false},\n  {label:'tinyblob',value:'tinyblob', type: 'textarea', isSearch: false, isSenior: false, isEnum: false},\n  {label:'tinytext',value:'tinytext', type: 'textarea', isSearch: true, isSenior: true, limit: VARCHAR_QUERY_TYPE},\n  {label:'text',value:'text', type: 'textarea', isSearch: true, isSenior: true, limit: VARCHAR_QUERY_TYPE},\n  {label:'mediumblob',value:'mediumblob', type: 'textarea', isSearch: false, isSenior: false, isEnum: false},\n  {label:'longblob',value:'longblob', type: 'textarea', isSearch: false, isSenior: false, isEnum: false},\n  {label:'longtext',value:'longtext', type: 'textarea', isSearch: true, isSenior: true, limit: VARCHAR_QUERY_TYPE},\n  {label:'tinyint',value:'tinyint', type: 'inputNumber', num: 'int', isSearch: true, isSenior: false, limit: NUMBER_QUERY_TYPE},\n  {label:'smallint',value:'smallint', type: 'inputNumber', num: 'int', isSearch: true, isSenior: false, limit: NUMBER_QUERY_TYPE},\n  {label:'mediumint',value:'mediumint', type: 'inputNumber', num: 'int', isSearch: true, isSenior: false, limit: NUMBER_QUERY_TYPE},\n  {label:'int',value:'int', type: 'inputNumber', num: 'int', isSearch: true, isSenior: false, limit: NUMBER_QUERY_TYPE},\n  {label:'integer',value:'integer', type: 'inputNumber', num: 'int', isSearch: true, isSenior: false, limit: NUMBER_QUERY_TYPE},\n  {label:'year',value:'year', type: 'datePicker', datetype: 'year', isSearch: true, isSenior: false, limit: NUMBER_QUERY_TYPE},\n  {label:'bigint',value:'bigint', type: 'inputNumber', num: 'int', isSearch: true, isSenior: false, limit: NUMBER_QUERY_TYPE},\n  {label:'float',value:'float', type: 'inputNumber', isSearch: true, isSenior: false, limit: NUMBER_QUERY_TYPE},\n  {label:'double',value:'double', type: 'inputNumber', isSearch: true, isSenior: false, limit: NUMBER_QUERY_TYPE},\n  {label:'decimal',value:'decimal', type: 'inputNumber', isSearch: true, isSenior: false, limit: NUMBER_QUERY_TYPE},\n  {label:'date',value:'date', type: 'datePicker', datetype: 'date', isSearch: true, isSenior: false, limit: NUMBER_QUERY_TYPE},\n  {label:'time',value:'time', type: 'timePicker', isSearch: true, isSenior: false, limit: NUMBER_QUERY_TYPE},\n  {label:'datetime',value:'datetime', type: 'datePicker', datetype: 'datetime', isSearch: true, isSenior: false, limit: NUMBER_QUERY_TYPE},\n  {label:'timestamp',value:'timestamp', type: 'datePicker', datetype: 'datetime', isSearch: true, isSenior: false, limit: NUMBER_QUERY_TYPE},\n  {label:'enum',value:'enum', type: '', isSearch: true, isSenior: true, isEnum: true, limit: ['EQ']},\n]"
  },
  {
    "path": "src/const/const.js",
    "content": "import { Base64 } from 'js-base64'\nexport const scope = \"server\";\nexport const client_id = \"knowledge\";\nexport const client_secret = \"knowledge\";\nexport const grant_type = \"password\";\nlet baseKey = Base64.encode(client_id)\nexport const enCodeKey = baseKey.length == 16 ? baseKey :\n  (\n    baseKey.length > 16 ?\n    // 大于16位截取前16\n    (baseKey.slice(0, 16)) :\n    // 小于16末尾补0\n    (get16LenString(baseKey))\n  )\n\nlet baseDecode = Base64.encode('jvs')\nexport const deCodeKey = baseDecode.length == 16 ? baseDecode :\n  (\n    baseDecode.length > 16 ?\n    // 大于16位截取前16\n    (baseDecode.slice(0, 16)) :\n    // 小于16末尾补0\n    (get16LenString(baseDecode))\n  )\n\n\nfunction get16LenString (str) {\n  let len = 16 - str.length\n  for(let i = 0; i < len; i++) {\n    str += '0'\n  }\n  return str\n}\n"
  },
  {
    "path": "src/const/errorCode.js",
    "content": "export default {\n  '000': '操作太频繁，请勿重复请求',\n  'default': '系统未知错误,请反馈给管理员'\n}\n"
  },
  {
    "path": "src/const/iconList.js",
    "content": "export default [\n  {\n    label: '图标',\n    list: [\n      'icon-quanxianguanli',\n      'icon-yonghuguanli',\n      'icon-jiaoseguanli',\n      'icon-web-icon-',\n      'icon-xitongguanli',\n      'icon-rizhiguanli',\n      'icon-navicon-zdgl',\n      'icon-weibiaoti46',\n      'icon-miyue',\n      'icon-shouji',\n      'icon-denglvlingpai',\n      'icon-luyou',\n      'icon-msnui-supervise',\n      'icon-server',\n      'icon-wendang',\n      'icon-gtsquanjushiwufuwuGTS',\n      'icon-caidanguanli',\n      'icon-guanwang',\n      'icon-guanwangfangwen',\n      'icon-guiji',\n      'icon-fensiguanli',\n      'icon-gongzhonghao',\n      'icon-anniu_weixincaidanlianjie',\n      'icon-weixincaidan',\n      'icon-xiaoxiguanli',\n      'icon-zhexiantu',\n      'icon-canshu',\n      'icon-erji-zuhushouye',\n      'icon-pay6zhifu',\n      'icon-zhifuqudaoguanli',\n      'icon-dingdan',\n      'icon-tuikuan',\n      'icon-webicon14',\n      'icon-shouyintai',\n      'icon-wenjianguanli',\n      'icon-mysql',\n      'icon-shejiyukaifa-',\n      'icon-record',\n      'icon-biaodanbiaoqian'\n    ]\n  }\n]\n"
  },
  {
    "path": "src/const/iconfont.js",
    "content": "export default [\n    'icon-caizhengting',\n    'icon-caidanguanli4',\n    'icon-daiban1',\n    'icon-daibandengdaishenhe',\n    'icon-caidanguanli',\n    'icon-caidanguanli3',\n    'icon-daiban',\n    'icon-daiban2',\n    'icon-daiyanshou',\n    'icon-danwei3',\n    'icon-danwei4',\n    'icon-danwei2',\n    'icon-danwei1',\n    'icon-fankui1',\n    'icon-fankui2',\n    'icon-faqipingshen',\n    'icon-danwei5',\n    'icon-fankui',\n    'icon-danwei',\n    'icon-fangan3',\n    'icon-caidanguanli5',\n    'icon-fangan1',\n    'icon-feiyong2',\n    'icon-fangan2',\n    'icon-fangan',\n    'icon-feiyong1',\n    'icon-fuhe1',\n    'icon-fuhe3',\n    'icon-fuhe',\n    'icon-feiyongtongji1',\n    'icon-fangan4',\n    'icon-feiyong',\n    'icon-gongzuotai',\n    'icon-gongshi2',\n    'icon-gongshi',\n    'icon-feiyongtongji',\n    'icon-huibao1',\n    'icon-fuhe2',\n    'icon-jilu1',\n    'icon-jilu',\n    'icon-huibaoxian',\n    'icon-jilu3',\n    'icon-jiaose',\n    'icon-gongshi1',\n    'icon-huibao',\n    'icon-huiyiyonghuzuzhijigou-07',\n    'icon-jiaoseguanli',\n    'icon-jilu4',\n    'icon--jiaoseguanli',\n    'icon-jilu2',\n    'icon-jiaose1',\n    'icon-jingfeibaozhang',\n    'icon-jiaohuan',\n    'icon-lixiang1',\n    'icon-jingfeiguanli-01',\n    'icon-jingfeizhihang',\n    'icon-leibie',\n    'icon-lixiang2',\n    'icon-liucheng11',\n    'icon-liucheng3',\n    'icon-liucheng1',\n    'icon-jingfei',\n    'icon-lixiang',\n    'icon-liucheng2',\n    'icon-liuchengmoxing',\n    'icon-liucheng',\n    'icon-lixiangshenqing',\n    'icon-pingshen1',\n    'icon-pingshen',\n    'icon-liucheng4',\n    'icon-pingshenjilu1',\n    'icon-pingshenjilu',\n    'icon-pingshenjihua',\n    'icon-pingshenzhuanjiaguanli',\n    'icon-pingshentongguo',\n    'icon-qingsuanchuli',\n    'icon-qingjia3',\n    'icon-pingshenzhuanjiaku',\n    'icon-pingshenjieguoguanli2x',\n    'icon-qingjia2',\n    'icon-qingjia',\n    'icon-qingsuanguanli',\n    'icon-qingjia1',\n    'icon-quanxianguanli2',\n    'icon-quanxian',\n    'icon-quanxianguanli1',\n    'icon-quanxianguanli3',\n    'icon-quanxianguanli',\n    'icon-quanxianguanli4',\n    'icon-rizhiguanli1',\n    'icon-quanxianguanli5',\n    'icon-rizhiguanli2',\n    'icon-rizhiguanli3',\n    'icon-rizhiguanli4',\n    'icon-rizhiguanli',\n    'icon-shenqing2',\n    'icon-sangongjingfei',\n    'icon-rizhiguanli5',\n    'icon-shenqing11',\n    'icon-shensu',\n    'icon-shensu1',\n    'icon-shenqing',\n    'icon-shenchaguizeguanli',\n    'icon-shensu2',\n    'icon-shenqing1',\n    'icon-shenhe1',\n    'icon-shencha',\n    'icon-shenhe3',\n    'icon-shenhe4',\n    'icon-shenhe2',\n    'icon-shenhe8',\n    'icon-shenhe6',\n    'icon-shenhe7',\n    \n    'icon-shenhe5',\n    'icon-shenhe12',\n    'icon-shenhe9',\n    'icon-shenhe',\n    'icon-shenhe11',\n    'icon-shenheliebiao1',\n    'icon-shenhe10', \n    'icon-shixin1',\n\n    'icon-shouli',\n    'icon-tianxie2',\n    'icon-shenheliebiao',\n    'icon-tianxie1',\n    'icon-tongji1',\n    'icon-tongji5',\n    'icon-tianxie3',\n\n    'icon-tongji4',\n    'icon-tongji2',\n    'icon-tongji6',\n    'icon-tongji',\n    'icon-shixin',\n    'icon-tongji9',\n    'icon-tianxie',\n    'icon-tongji7',\n\n    'icon-tongji8',\n    'icon-weijieqingshenheliebiao',\n    'icon-wenjian-fangan',\n    'icon-xitongguanli1',\n    'icon-tongji3',\n    'icon-xitongguanli2',\n    'icon-wanjie',\n    'icon-xitongguanli3',\n\n    'icon-xitongguanli4',\n    'icon-xitongguanli',\n    'icon-xitongguanli5',\n    'icon-xiangmu',\n    'icon-xiangmuguochengguanli',\n    'icon-xiangmu1',\n    'icon-xiangmu2',\n    'icon-xinzeng1',\n    \n    'icon-xiangmu3',\n    'icon-xinzeng4',\n    'icon-xinzeng2',\n    'icon-xinzeng',\n    'icon-xinxichaxun2',\n    'icon-xitongshezhi',\n    'icon-xinxichaxun1',\n    'icon-xinzeng3',\n\n    'icon-xinxichaxun4',\n    'icon-xinxichaxun',\n    'icon-xinxichaxun3',\n    'icon-xinxichaxun5',\n    'icon-xinyong',\n    'icon-yanshou1',\n    'icon-xinyongguanli',\n    'icon-yanshou2',\n\n    'icon-xinyongka',\n    'icon-xinyongguanli1',\n    'icon-xinyongzheng',\n    'icon-yanshou3',\n    'icon-yanshoufanganshenhe',\n    'icon-yonghuguanli1',\n    'icon-yanshou',\n    'icon-yonghuguanli2',\n\n    'icon-yonghuguanli',\n    'icon-zhengshuguanli',\n    'icon-zhengshuguanli2',\n    'icon-zhengshuguanli3',\n    'icon-zhengshuguanli1',\n    'icon-zhinan',\n    'icon-zhongzhi2',\n    'icon-zhengshuguanli4',\n\n    'icon-zhongzhi1',\n    'icon-zhongzhi',\n    'icon-zhuanjiao1',\n    'icon-zhuanjia',\n    'icon-zhuanjiao',\n    'icon-zidianguanli1',\n    'icon-zhuanjiao2',\n    'icon-zidianguanli2',\n\n    'icon-zuzhijigou1',\n    'icon-zidianguanli4',\n    'icon-zidianguanli5',\n    'icon-zuzhijigou',\n    'icon-zidianguanli3',\n    'icon-zidianguanli',\n    'icon-zuzhijigou2',\n    'icon-zuixinwanjie',\n\n    'icon-zidianguanli6',\n    'icon-fuhe1-copy',\n    'icon-2zuzhi-xiangmuguanli',\n    'icon-xx__wanjie',\n    'icon-007tongji',\n    'icon-bianzhi1',\n    'icon-g-shenhe',\n    'icon-bianzhi',\n\n    'icon-caiwu2',\n    'icon-caiwu1',\n    'icon-caiwu',\n    'icon-caizhengzuhu',\n    'icon-caidanguanli2',\n    'icon-caidanguanli1',\n    'icon-caizhengyusuanjiandu1',\n]\n"
  },
  {
    "path": "src/const/systemIcon.js",
    "content": "export default [\n  \"icon-tishi\", \n  \"icon-tishi1\", \n  \"icon-xiaoxi\", \n  \"icon-icon-operation\", \n  \"icon-xiaoxi1\", \n  \"icon-display\", \n  \"icon-xiaoxi2\", \n  \"icon-xiaoxi3\", \n  \n  \"icon-xiala\", \n  \"icon-qidong\", \n  \"icon-ShapeCopy\", \n  \"icon-weibiaoti--\", \n  \"icon-tishi2\", \n  \"icon-cha\", \n  \"icon-shezhi\", \n  \"icon-daima\", \n\n  \"icon-baocun_mian\", \n  \"icon-daima1\", \n  \"icon-dingshi\", \n  \"icon-diannao\", \n  \"icon-diannao-copy\", \n  \"icon-baocun\", \n  \"icon-chahao\", \n  \"icon-qidong1\", \n  \n  \"icon-baocun1\", \n  \"icon-fasong\", \n  \"icon-qidong2\", \n  \"icon-cha1\", \n  \"icon-dingshi1\", \n  \"icon-shezhi1\", \n  \"icon-tishi11\", \n  \"icon-shengxu\", \n  \n  \"icon-jiantou1\", \n  \"icon-zu3-copy\", \n  \"icon-shezhi2\", \n  \"icon-shezhi21\", \n  \"icon-baocun2\", \n  \"icon-fanhui\", \n  \"icon-shezhi3\", \n  \"icon-shezhi_mian\", \n  \n  \"icon-fasong1\", \n  \"icon-right\", \n  \"icon-fenxiang\", \n  \"icon-shezhi4\", \n  \"icon-fanhui2\", \n  \"icon-daima2\", \n  \"icon-fenxiang1\", \n  \"icon-fanhui1\", \n  \n  \"icon-xiala1\", \n  \"icon-fasongyoujian\", \n  \"icon-ai-code\", \n  \"icon-ip\", \n  \"icon-shoujiguishudi\", \n  \"icon-leidatu\", \n  \"icon-sandiantu\", \n  \"icon-HTTP\", \n  \n  \"icon-random\", \n  \"icon-zuixinICON--\", \n  \"icon-jiami\", \n  \"icon-SQLchaxun\", \n  \"icon-wangluojiance\", \n  \"icon-fasongduanxin\", \n  \"icon-erweima\", \n  \"icon-IP\", \n  \n  \"icon-tiaoxingtu\", \n  \"icon-tubiaozhuzhuangtu\", \n  \"icon-fasongyoujian1\", \n  \"icon-suiji\", \n  \"icon-zhuzhuangtutubiao\", \n  \"icon-IP1\", \n  \"icon-leidatu1\", \n  \"icon-mianjitu\", \n  \n  \"icon-fasongyoujian2\", \n  \"icon-shouji\", \n  \"icon-mianjitu1\", \n  \"icon-tiaoxingtu1\", \n  \"icon-suiji1\", \n  \"icon-http\", \n  \"icon-ico\", \n  \"icon-SQLchaxun1\", \n  \n  \"icon-shujutubiaobingtu-\", \n  \"icon-suiji2\", \n  \"icon-shujutubiaobingtu-1\", \n  \"icon-tubiao1\", \n  \"icon-lingyitaotubiao-2-60\", \n  \"icon-fasongduanxin1\", \n  \"icon-fasongyoujian3\", \n  \"icon-tubiaozhu\", \n  \n  \"icon-http1\", \n  \"icon-jiamizhihangshujujiami\", \n  \"icon-leidatu2\", \n  \"icon-Http\", \n  \"icon-tubiao_HL\", \n  \"icon-tubiaozhexiantu\", \n  \"icon-qrcode\", \n  \"icon-shujujiami\", \n  \n  \"icon-sandiantu1\", \n  \"icon-tubiaobingtu\", \n  \"icon-danhangwenben1\", \n  \"icon-fuwenben1\",\n  \"icon-shangchuanwenjian3\", \n  \"icon-wenjian-01\", \n  \"icon-xuanxiangka2\", \n  \"icon-weihujishuqileixing\", \n  \n  \"icon-xuanze4\", \n  \"icon-time-circle-fill\", \n  \"icon-gudingshijian1\", \n  \"icon-lianjie3\", \n  \"icon-duoxuanxuanze\", \n  \"icon-gangwei1\", \n  \"icon-fuwenbenbianjiqi_wenben\", \n  \"icon-shangchuantupian\", \n  \n  \"icon-huakuai1\", \n  \"icon-diqu4\", \n  \"icon-wenjian3\", \n  \"icon-danhangwenben\", \n  \"icon-shangchuan1\", \n  \"icon-shijian1\", \n  \"icon-wenjian4\", \n  \"icon-tubiaoxuanze\", \n  \n  \"icon-shangchuanwenjian4\", \n  \"icon-add-fill-hover\", \n  \"icon-shangchuan2\", \n  \"icon-shangchuan3\", \n  \"icon-jishuqi\", \n  \"icon-jilianxuanzeqi\", \n  \"icon-riqi2\", \n  \"icon-duohangwenben\",\n\n  \"icon-shijian\", \n  \"icon-ic_fengexian\", \n  \"icon-gangwei2\", \n  \"icon-duohangwenben1\", \n  \"icon-switch-close\", \n  \"icon-tupian\", \n  \"icon-wangye4\", \n  \"icon-jilianxuanze\", \n  \n  \"icon-wenzi\", \n  \"icon-rili11\", \n  \"icon-shijian2\", \n  \"icon-jishuqi1\", \n  \"icon-shiliangzhinengduixiang\", \n  \"icon-shangchuan4\", \n  \"icon-shangchuantupian1\", \n  \"icon-wenjian5\", \n  \n  \"icon-form\", \n  \"icon-guan\", \n  \"icon-shangchuan5\", \n  \"icon-jiaose2\", \n  \"icon-gangwei3\", \n  \"icon-xuanze11\", \n  \"icon-yanse2\", \n  \"icon-tupian1\", \n  \n  \"icon-jiaosexuanze1\", \n  \"icon-tupian-copy\", \n  \"icon-cf-c02\", \n  \"icon-yanse\", \n  \"icon-xuanze\", \n  \"icon-wangye\", \n  \"icon-biaoge\", \n  \"icon-lianjie\", \n  \n  \"icon-huakuai\", \n  \"icon-miaoshu\", \n  \"icon-colour\", \n  \"icon-iconfontoptionbutton\", \n  \"icon-yanse1\", \n  \"icon-wangye1\", \n  \"icon-jiahao\", \n  \"icon-lianjie1\", \n  \n  \"icon-diqu\", \n  \"icon-diqu1\", \n  \"icon-department\", \n  \"icon-user\", \n  \"icon-file\", \n  \"icon-wenjian\", \n  \"icon-tubiao\", \n  \"icon-yonghu\", \n  \n  \"icon-riqi\", \n  \"icon-fengexian\", \n  \"icon-xialakuang\", \n  \"icon-shangchuanwenjian\", \n  \"icon-fuwenben\", \n  \"icon-wenjian1\", \n  \"icon-jiaose\", \n  \"icon-xialakuang1\", \n  \n  \"icon-gangwei\", \n  \"icon-xialakuangbiaodan\", \n  \"icon-xuanze1\", \n  \"icon-xiaobiaoti\", \n  \"icon-huakuai-kai\", \n  \"icon-tubiao_xuanze\", \n  \"icon-diqu2\", \n  \"icon-shangchuan\", \n  \n  \"icon-diqu3\", \n  \"icon-duoxuanxuan\", \n  \"icon-xialakuang2\", \n  \"icon-wenjian2\", \n  \"icon-guan-copy\", \n  \"icon-lujing\", \n  \"icon-miaoshu1\", \n  \"icon-AntdVueCascader\", \n\n  \"icon-wangye2\", \n  \"icon-xuanze2\", \n  \"icon-xuanxiangka\", \n  \"icon-riqi1\", \n  \"icon-tianjiajiahaowubiankuang\", \n  \"icon-gudingshijian\", \n  \"icon-iconfontoptionbutton1\", \n  \"icon-shangchuanwenjian1\", \n  \n  \"icon-shangchuanwenjian2\", \n  \"icon-xuanxiangka1\", \n  \"icon-xuanzhong\", \n  \"icon-miaoshukuangzengjia\", \n  \"icon-danhang\", \n  \"icon-duohangwenbenxiawu50021\", \n  \"icon--tainjia\", \n  \"icon-wangye3\", \n  \"icon-lianjie2\", \n  \n  \"icon-xiaobiaoti1\", \n  \"icon-huakuaiti\", \n  \"icon-iconfontoptionbutton11\", \n  \"icon-bumenxuanze\", \n  \"icon-jiaosexuanze\", \n  \"icon-jiaose1\", \n  \"icon-xuanze3\", \n  \"icon-28fuwenbenkuang\"\n]"
  },
  {
    "path": "src/const/website.js",
    "content": "export default {\n  title: '文档',\n  logo: '菜单',\n  key: 'jvs',   //配置主键,目前用于存储\n  indexTitle: '文档',\n  whiteList: ['/login', '/404', '/401', '/lock'], // 配置无权限可以访问的页面\n  whiteTagList: ['/login', '/404', '/401', '/lock' ], // 配置不添加tags页面 （'/advanced-router/mutative-detail/*'——*为通配符）\n  lockPage: '/lock',\n  tokenTime: 6000,\n  infoTitle: '文档',\n  statusWhiteList: [428],\n  // 配置首页不可关闭\n  isFirstPage: false,\n  fistPage: {\n    label: '首页',\n    value: '/wel/index',\n    params: {},\n    query: {},\n    group: [],\n    close: false\n  },\n  // 配置菜单的属性\n  menu: {\n    props: {\n      label: 'label',\n      path: 'path',\n      icon: 'icon',\n    }\n  }\n}\n"
  },
  {
    "path": "src/error.js",
    "content": "import Vue from 'vue'\n\nVue.config.errorHandler = function (err, vm, info) {\n  Vue.nextTick(() => {\n    if (process.env.NODE_ENV === 'development') {\n      console.group('>>>>>> 错误信息 >>>>>>')\n      console.log(info)\n      console.groupEnd()\n      console.group('>>>>>> Vue 实例 >>>>>>')\n      console.log(vm)\n      console.groupEnd()\n      console.group('>>>>>> Error >>>>>>')\n      console.log(err)\n      console.groupEnd()\n    }\n  })\n}\n"
  },
  {
    "path": "src/filters/index.js",
    "content": "function pluralize (time, label) {\n  if (time === 1) {\n    return time + label\n  }\n  return time + label + 's'\n}\n\n/**\n * 日期格式化\n */\nexport function dateFormat (date, type) {\n  let format = 'yyyy-MM-dd hh:mm:ss'\n  if(type) {\n    format = type\n  }\n  if(typeof date == 'string') {\n    return date\n  }\n  if (date != 'Invalid Date') {\n    var o = {\n      'M+': date.getMonth() + 1, // month\n      'd+': date.getDate(), // day\n      'h+': date.getHours(), // hour\n      'm+': date.getMinutes(), // minute\n      's+': date.getSeconds(), // second\n      'q+': Math.floor((date.getMonth() + 3) / 3), // quarter\n      'S': date.getMilliseconds() // millisecond\n    }\n    if (/(y+)/.test(format)) {\n      format = format.replace(RegExp.$1,\n        (date.getFullYear() + '').substr(4 - RegExp.$1.length))\n    }\n    for (var k in o) {\n      if (new RegExp('(' + k + ')').test(format)) {\n        format = format.replace(RegExp.$1,\n          RegExp.$1.length == 1 ? o[k]\n            : ('00' + o[k]).substr(('' + o[k]).length))\n      }\n    }\n    return format\n  }\n  return ''\n}\n\nexport function timeAgo (time) {\n  const between = Date.now() / 1000 - Number(time)\n  if (between < 3600) {\n    return pluralize(~~(between / 60), ' minute')\n  } else if (between < 86400) {\n    return pluralize(~~(between / 3600), ' hour')\n  } else {\n    return pluralize(~~(between / 86400), ' day')\n  }\n}\n\nexport function parseTime (time, cFormat) {\n  if (arguments.length === 0) {\n    return null\n  }\n\n  if ((time + '').length === 10) {\n    time = +time * 1000\n  }\n\n  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n  let date\n  if (typeof time === 'object') {\n    date = time\n  } else {\n    date = new Date(parseInt(time))\n  }\n  const formatObj = {\n    y: date.getFullYear(),\n    m: date.getMonth() + 1,\n    d: date.getDate(),\n    h: date.getHours(),\n    i: date.getMinutes(),\n    s: date.getSeconds(),\n    a: date.getDay()\n  }\n  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n    let value = formatObj[key]\n    if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]\n    if (result.length > 0 && value < 10) {\n      value = '0' + value\n    }\n    return value || 0\n  })\n  return time_str\n}\n\nexport function formatTime (time, option) {\n  time = +time * 1000\n  const d = new Date(time)\n  const now = Date.now()\n\n  const diff = (now - d) / 1000\n\n  if (diff < 30) {\n    return '刚刚'\n  } else if (diff < 3600) { // less 1 hour\n    return Math.ceil(diff / 60) + '分钟前'\n  } else if (diff < 3600 * 24) {\n    return Math.ceil(diff / 3600) + '小时前'\n  } else if (diff < 3600 * 24 * 2) {\n    return '1天前'\n  }\n  if (option) {\n    return parseTime(time, option)\n  } else {\n    return d.getMonth() + 1 + '月' + d.getDate() + '日' + d.getHours() + '时' + d.getMinutes() + '分'\n  }\n}\n\n/* 数字 格式化 */\nexport function nFormatter (num, digits) {\n  const si = [\n    { value: 1E18, symbol: 'E' },\n    { value: 1E15, symbol: 'P' },\n    { value: 1E12, symbol: 'T' },\n    { value: 1E9, symbol: 'G' },\n    { value: 1E6, symbol: 'M' },\n    { value: 1E3, symbol: 'k' }\n  ]\n  for (let i = 0; i < si.length; i++) {\n    if (num >= si[i].value) {\n      return (num / si[i].value + 0.1).toFixed(digits).replace(/\\.0+$|(\\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol\n    }\n  }\n  return num.toString()\n}\n\nexport function html2Text (val) {\n  const div = document.createElement('div')\n  div.innerHTML = val\n  return div.textContent || div.innerText\n}\n\nexport function toThousandslsFilter (num) {\n  return (+num || 0).toString().replace(/^-?\\d+/g, m => m.replace(/(?=(?!\\b)(\\d{3})+$)/g, ','))\n}\n\n\n/* 字典 格式化 */\nexport function dicFormat (val, options, props) {\n  let temp = ''\n  temp = val\n  for(let i in options) {\n    if(options[i][(props && props.value) || 'value'] == val) {\n      temp = options[i][(props && props.label) || 'label']\n    }\n  }\n  return temp\n}"
  },
  {
    "path": "src/main.js",
    "content": "import 'babel-polyfill'\nimport 'classlist-polyfill'\nimport Vue from 'vue'\nimport axios from './router/axios'\nimport VueAxios from 'vue-axios'\nimport App from './App'\nimport ElementUI from 'element-ui'\nimport 'element-ui/lib/theme-chalk/index.css'\nimport './permission' // 权限\nimport './error' // 日志\nimport router from './router/router'\nimport store from './store'\nimport { loadStyle } from './util/util'\nimport { declare } from '@/views/common/draw'\nimport permissionMatch from './util/permision'\nimport openUrl from './util/url'\nimport loginForm from './util/login'\nimport * as urls from '@/config/env'\nimport {\n  iconfontUrl,\n  iconfontVersion\n} from '@/config/env'\nimport * as filters from './filters' // 全局filter\nimport './styles/common.scss'\nimport './styles/resetAll.scss' // fixme 统一表单表格样式，自定义需要注释此代码\nimport './styles/reset2.0.scss' // 2.0版本ui迭代\nimport JsonViewer from 'vue-json-viewer'\nimport VueClipboard from 'vue-clipboard2'\nimport { ElementTiptapPlugin } from 'element-tiptap';\nimport 'element-tiptap/lib/index.css';\nVue.use(VueClipboard)\n\n/**\n * 全局注册容器、组件\n * 不可删除，添加全局组件引用请修改index.js\n*/ \nimport './components/index'\n\n\nimport basicContainer from \"@/components/basic-container/main\";\n\n// 注册全局容器\nVue.component(\"basicContainer\", basicContainer);\nVue.prototype.$openLogin = loginForm.install\n\nVue.use(VueAxios, axios)\n\nVue.use(ElementUI, {\n  size: 'medium',\n  menuType: 'text'\n})\nVue.use(JsonViewer)\n\nVue.use(router)\n\nVue.use(permissionMatch) // 权限\nVue.use(openUrl) // 打开链接 用于 预览、下载、打开地址\nVue.use(ElementTiptapPlugin, {\n  lang: 'zh',\n});\n\n\n// 加载相关url地址\nObject.keys(urls).forEach(key => {\n  Vue.prototype[key] = urls[key]\n})\n\n//加载过滤器\nObject.keys(filters).forEach(key => {\n  Vue.filter(key, filters[key])\n})\n\n// 动态加载阿里云字体库\niconfontVersion.forEach(ele => {\n  loadStyle(iconfontUrl.replace('$key', ele))\n})\ndeclare()\n\nVue.config.productionTip = false\n\nnew Vue({\n  router,\n  store,\n  render: h => h(App),\n  data: {\n    eventBus: new Vue()\n  }\n}).$mount('#app')\n"
  },
  {
    "path": "src/permission.js",
    "content": "/**\n * 全站权限配置\n *\n */\nimport router from './router/router'\nimport store from '@/store'\nimport {validatenull} from '@/util/validate'\nimport NProgress from 'nprogress' // progress bar\nimport 'nprogress/nprogress.css' // progress bar style\nimport PageRouter from './router/page/'\nimport ViewsRouter from './router/views/'\nNProgress.configure({showSpinner: false})\n\nconst RList = [...PageRouter, ...ViewsRouter]\n/**\n * 导航守卫，相关内容可以参考:\n * https://router.vuejs.org/zh/guide/advanced/navigation-guards.html\n */\nrouter.beforeEach((to, from, next) => {\n  // 缓冲设置\n  if (to.meta.keepAlive === true && store.state.tags.tagList.some(ele => {\n    return ele.value === to.fullPath\n  })) {\n    to.meta.$keepAlive = true\n  } else {\n    NProgress.start()\n    if (to.meta.keepAlive === true && validatenull(to.meta.$keepAlive)) {\n      to.meta.$keepAlive = true\n    } else {\n      to.meta.$keepAlive = false\n    }\n  }\n  // 未配置的路由跳转404\n  const value = to.query.src || to.fullPath\n  \n  if(!validatenull(value)) {\n    let bool = false\n    for(let i in RList) {\n      if(RList[i].path == value || RList[i].path == value.split('?')[0]) {\n        bool = true\n      }\n    }\n    if(bool) {\n      next()\n    }else{\n      next('/404')\n    }\n  }\n})\n\nrouter.afterEach(() => {\n  NProgress.done()\n  const title = store.getters.tag.label\n  router.$jvsRouter.setTitle(title)\n})\n"
  },
  {
    "path": "src/router/axios.js",
    "content": "import { serialize, noEmptyOfObject } from \"@/util/util\";\nimport { getStore } from \"../util/store\";\nimport NProgress from \"nprogress\"; // progress bar\nimport errorCode from \"@/const/errorCode\";\nimport router from \"@/router/router\";\nimport { Message } from \"element-ui\";\nimport \"nprogress/nprogress.css\";\nimport store from \"@/store\"; // progress bar style\nimport { decryption } from \"@/util/util\";\nimport {deCodeKey} from \"@/const/const\";\nimport eventBus from \"@/util/eventBus\";\naxios.defaults.timeout = 30000;\n// 返回其他状态吗\naxios.defaults.validateStatus = function(status) {\n    return status >= 200 && status <= 500; // 默认的\n};\n// 跨域请求，允许保存cookie\naxios.defaults.withCredentials = true;\n// NProgress Configuration\nNProgress.configure({\n    showSpinner: false\n});\nlet countTime = 0\nconst freshTokenUrl = '/auth/oauth/token'\nlet currentRoutePath = '' // 当前路由\nlet lastUrl = ''\nconst whiteApi = ['/auth/token/logout']\n\n// HTTPrequest拦截\naxios.interceptors.request.use(\n    config => {\n        NProgress.start(); // start progress bar\n        const isToken = (config.headers || {}).isToken === false;\n        let token = store.getters.access_token;\n        if (token && !isToken) {\n            config.headers[\"Authorization\"] = 'Bearer ' + token;\n        }\n        // headers中配置serialize为true开启序列化\n        if (config.methods === \"post\" && config.headers.serialize) {\n            config.data = serialize(config.data);\n            delete config.data.serialize;\n        }\n        // 去除空值参数\n        if (config.params) {\n            config.params = noEmptyOfObject(config.params)\n        }\n        if (config.data) {\n            config.data = noEmptyOfObject(config.data)\n        }\n        return config;\n    },\n    error => {\n        return Promise.reject(error);\n    }\n);\n\n// HTTPresponse拦截\naxios.interceptors.response.use(\n    res => {\n        NProgress.done();\n        const status = Number(res.status) || 200;\n        const message = res.data.msg || errorCode[status] || errorCode[\"default\"];\n\n        if (status === 401) {\n            store.dispatch(\"LogOut\").then(() => {\n                if(router.currentRoute && router.currentRoute.path != '/index') {\n                    router.push({ path: \"/index\" });\n                }\n            });\n            return;\n        }\n        if (status !== 200 || res.data.code === 1) {\n            if(res.config.url == freshTokenUrl) {\n                if(res.config.params && !res.config.params.switch) {\n                    Message({\n                        message: message,\n                        type: \"error\"\n                    });\n                }\n            }else{\n                Message({\n                    message: message,\n                    type: \"error\"\n                });\n            }\n            return Promise.reject(new Error(message));\n        }\n        if(res.data && res.data.code === -2) {\n            if(res.config && whiteApi.indexOf(res.config.url) > -1) {\n                store.dispatch(\"LogOut\").then(() => {\n                    sessionStorage.setItem('lastUrl', lastUrl)\n                    if(router.currentRoute && router.currentRoute.path != '/index') {\n                        router.push({ path: \"/index\" });\n                    }\n                    eventBus.$emit('loginEvent', 'loginOut')\n                });\n            }else{\n                countTime += 1\n            }\n            let cancelArr = window.axiosCancel;\n            for(let i in cancelArr) {\n                delete window.axiosCancel[i]\n            }\n            if(countTime == 1) {\n                sessionStorage.setItem('lastUrl', lastUrl)\n                store.dispatch('RefreshToken', store.getters.tenantId).then(res => {\n                    // console.log(res)\n                    location.reload()\n                }).catch(e => {\n                    store.dispatch(\"LogOut\").then(() => {\n                        sessionStorage.setItem('lastUrl', lastUrl)\n                        if(router.currentRoute && router.currentRoute.path != '/index') {\n                            router.push({ path: \"/index\" });\n                        }\n                        eventBus.$emit('loginEvent', 'loginOut')\n                    });\n                })\n            }\n            return res\n        }else{\n            if(res.config && res.config.url === '/mgr/jvs-auth/index/menu/frame' && res.data && res.data.code != 0) {\n                store.dispatch(\"LogOut\").then(() => {\n                    sessionStorage.setItem('lastUrl', lastUrl)\n                    if(router.currentRoute && router.currentRoute.path != '/index') {\n                        router.push({ path: \"/index\" });\n                    }\n                    eventBus.$emit('loginEvent', 'loginOut')\n                });\n            }else{\n                if(res.data && res.data.code == -1) {\n                    Message({\n                        message: message,\n                        type: \"error\"\n                    });\n                    return Promise.reject(new Error(message));\n                }else{\n                    if(res.config && res.config.url && res.config.url.startsWith('/mgr') && typeof res.data.data == 'string') {\n                        let tp = {\n                            data: res.data.data\n                        }\n                        let temp = decryption({\n                            data: tp,\n                            key: deCodeKey,\n                            param: [\"data\"]\n                        });\n                        res.data.data = JSON.parse(temp.data)\n                    }\n                    return res;\n                }\n            }\n        }\n    },\n    error => {\n        NProgress.done();\n        return Promise.reject(new Error(error));\n        // return Promise.reject(new Error(\"fail\")).then(resolved, rejected);\n    }\n);\n\nexport default axios;\n"
  },
  {
    "path": "src/router/jvs-router.js",
    "content": "import Axios from \"axios\";\n\nlet RouterPlugin = function() {\n  this.$router = null;\n  this.$store = null;\n};\nRouterPlugin.install = function(router, store) {\n  this.$router = router;\n  this.$store = store;\n  function objToform(obj) {\n    let result = [];\n    Object.keys(obj).forEach(ele => {\n      result.push(`${ele}=${obj[ele]}`);\n    });\n    return result.join(\"&\");\n  }\n  this.$router.$jvsRouter = {\n    // 全局配置\n    $website: this.$store.getters.website,\n    $defaultTitle: \"业务系统\",\n    routerList: [],\n    group: \"\",\n    safe: this,\n    setTitle: function(title) {\n      //TODO 设置标题\n    },\n    closeTag: value => {\n      const tag = value || this.$store.getters.tag;\n      this.$store.commit(\"DEL_TAG\", tag);\n    },\n    // 处理路由\n    getPath: function(params) {\n      let { src } = params;\n      let result = src || \"/\";\n      if (src.includes(\"http\") || src.includes(\"https\")) {\n        result = `/myiframe/urlPath?${objToform(params)}`;\n      }\n      return result;\n    },\n    // 正则处理路由\n    vaildPath: function(list, path) {\n      let result = false;\n      list.forEach(ele => {\n        if (new RegExp(\"^\" + ele + \".*\", \"g\").test(path)) {\n          result = true;\n        }\n      });\n      return result;\n    },\n    // 设置路由值\n    getValue: function(route) {\n      let value = \"\";\n      if (route.query.src) {\n        value = route.query.src;\n      }\n      return value;\n    },\n    // 动态路由\n    formatRoutes: function(aMenu = [], first) {\n      const aRouter = [];\n      const propsConfig = this.$website.menu.props;\n      const propsDefault = {\n        label: propsConfig.label || \"label\",\n        src: propsConfig.src || \"src\",\n        icon: propsConfig.icon || \"icon\"\n      };\n      if (aMenu.length === 0) return;\n      for (let i = 0; i < aMenu.length; i++) {\n        const oMenu = aMenu[i];\n        this.routerList = []\n        if (this.routerList.includes(oMenu[propsDefault.path])) return;\n        const path = (() => {\n          if (first) {\n            return oMenu[propsDefault.path].replace(\"/index\", \"\");\n          } else {\n            return oMenu[propsDefault.path];\n          }\n        })();\n        const name = oMenu[propsDefault.label];\n        const icon = oMenu[propsDefault.icon];\n        const oRouter = {\n          path: path,\n          component(resolve) {\n            // 判断是否为首路由\n            // if (first) {\n            //   require([\"../page/index\"], resolve);\n            // }\n          },\n          name: name,\n          icon: icon,\n          redirect: (() => {\n            if (!isChild && first) return `${path}/index`;\n            else return \"\";\n          })(),\n        };\n        aRouter.push(oRouter);\n      }\n      if (first) {\n        if (!this.routerList.includes(aRouter[0][propsDefault.path])) {\n          this.safe.$router.addRoutes(aRouter);\n          this.routerList.push(aRouter[0][propsDefault.path]);\n        }\n      } else {\n        return aRouter;\n      }\n    }\n  };\n};\nexport default RouterPlugin;\n"
  },
  {
    "path": "src/router/page/index.js",
    "content": "export default [\n\t{\n        path: '/404',\n        component: () =>\n            import ( /* webpackChunkName: \"page\" */ '@/components/error-page/404'),\n        name: '404',\n        meta: {\n            keepAlive: true,\n            isTab: false,\n            isAuth: false\n        }\n    },\n    {\n        path: '/login/callback',\n        component: () =>\n            import ( /* webpackChunkName: \"page\" */ '@/views/main/wx/login'),\n        name: '微信扫码登录',\n        meta: {\n            keepAlive: true,\n            isTab: false,\n            isAuth: false\n        }\n    }\n]\n"
  },
  {
    "path": "src/router/router.js",
    "content": "import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport jvsRouter from './jvs-router'\nimport Store from '../store/'\nimport PageRouter from './page/'\nimport ViewsRouter from './views/'\nVue.use(VueRouter)\nlet Router = new VueRouter({\n  // mode: 'history',\n  scrollBehavior (to, from, savedPosition) {\n    if (savedPosition) {\n      return savedPosition\n    } else {\n      if (from.meta.keepAlive) {\n        from.meta.savedPosition = document.body.scrollTop\n      }\n      return {\n        x: 0,\n        y: to.meta.savedPosition || 0\n      }\n    }\n  },\n  routes: [].concat([])\n})\njvsRouter.install(Router, Store)\nlet routerTemp = [...ViewsRouter]\n// 发送本地路由到服务端\nlet temp = []\nfor(let i in routerTemp) {\n  temp.push({\n    name: routerTemp[i].name,\n    url: routerTemp[i].path\n  })\n}\nsessionStorage.setItem('routerList', JSON.stringify(temp))\nRouter.addRoutes([...routerTemp, ...PageRouter])\nexport default Router\n"
  },
  {
    "path": "src/router/views/index.js",
    "content": "export default [\n  {\n    path: \"/page\",\n    name: \"首页\",\n    component: () =>\n      import(/* webpackChunkName: \"page\" */ \"@/views/index/page\"),\n    meta: {\n      keepAlive: true,\n      isTab: false,\n      isAuth: false\n    }\n  },\n  {\n    path: '/',\n    name: '首页',\n    redirect: '/index'\n  },\n  {\n    path: \"/index\",\n    name: \"首页\",\n    component: () =>import(/* webpackChunkName: \"page\" */ \"@/views/index/index\"),\n    meta: {\n      keepAlive: true,\n      isTab: false,\n      isAuth: false\n    }\n  },\n  {\n    path: \"/view\",\n    name: \"预览\",\n    component: () =>\n      import(/* webpackChunkName: \"page\" */ \"@/views/view/index\"),\n    meta: {\n      keepAlive: true,\n      isTab: false,\n      isAuth: false\n    }\n  },\n  {\n    path: \"/catalogview\",\n    name: \"目录\",\n    component: () =>\n      import(/* webpackChunkName: \"page\" */ \"@/views/catalogview/index.vue\"),\n    meta: {\n      keepAlive: true,\n      isTab: false,\n      isAuth: false\n    }\n  },\n  {\n    path: \"/info\",\n    name: \"详情\",\n    component: () =>\n      import(/* webpackChunkName: \"page\" */ \"@/views/info/index.vue\"),\n    meta: {\n      keepAlive: true,\n      isTab: false,\n      isAuth: false\n    }\n  },\n  {\n    path: \"/company\",\n    name: \"企业信息\",\n    component: () =>\n      import(/* webpackChunkName: \"page\" */ \"@/views/companyInfo/index.vue\"),\n    meta: {\n      keepAlive: true,\n      isTab: false,\n      isAuth: false\n    }\n  },\n];\n"
  },
  {
    "path": "src/store/getters.js",
    "content": "import * as globalTypes from \"./types/global\";\nconst getters = {\n  tag: state => state.tags.tag,\n  website: state => state.common.website,\n  userInfo: state => state.user.userInfo,\n  theme: state => state.common.theme,\n  themeName: state => state.common.themeName,\n  isShade: state => state.common.isShade,\n  isCollapse: state => state.common.isCollapse,\n  keyCollapse: (state, getters) =>\n    getters.screen > 1 ? getters.isCollapse : false,\n  screen: state => state.common.screen,\n  isLock: state => state.common.isLock,\n  isFullScreen: state => state.common.isFullScreen,\n  lockPasswd: state => state.common.lockPasswd,\n  tagList: state => state.tags.tagList,\n  tagWel: state => state.tags.tagWel,\n  access_token: state => state.user.access_token,\n  tenantId: state => state.common.tenantId,\n  refresh_token: state => state.user.refresh_token,\n  expires_in: state => state.user.expires_in,\n  roles: state => state.user.roles,\n  permissions: state => state.user.permissions,\n  menu: state => state.user.menu,\n  menuAll: state => state.user.menuAll,\n  jti: state => state.user.jti,\n  system: state => state.common.system,\n  [globalTypes.GET_DIRECTION](state) {\n    return state.direction;\n  },\n  [globalTypes.GET_THEME](state) {\n    return state.theme;\n  }\n};\nexport default getters;\n"
  },
  {
    "path": "src/store/index.js",
    "content": "import Vue from 'vue'\nimport Vuex from 'vuex'\nimport common from './modules/common'\nimport user from './modules/user'\nimport tags from './modules/tags'\nimport getters from './getters'\nimport konwledge from './modules/konwledge'\nimport * as globalTypes from './types/global'\n\nVue.use(Vuex)\n\nconst initState = {\n  direction: 'forward',\n  theme: 'dark', // light / dark\n  // 主题风格参数\n  params: {\n    themeColor: '', // 主题颜色\n    activeColor: '', // 激活状态颜色\n    // 字体\n    font: {\n      size: '', // 大小\n      color: '', // 颜色\n    },\n    // logo设置\n    logo: {\n      width: '240px', // 宽\n      height: '64px', // 高\n      fit: 'contain', // 图片显示填充方式\n      color: '#1890ff', // 字体颜色\n      fontSize: '16px', // 字体大小\n      fontWeight: 600, // 字体粗细\n      backgroundColor: '#fff', // 背景颜色\n    },\n    // 表单设置\n    form: {\n      size: 'mini', // 表单内组件的尺寸  medium / small / mini\n    },\n    btn: {\n      size: 'mini', // 按钮的尺寸  medium / small / mini\n    }\n  }\n}\nconst actions = {};\nconst mutations = {\n  [globalTypes.UPDATE_DIRECTION](state, direction) {\n    state.direction = direction;\n  },\n  [globalTypes.UPDATE_THEME](state, theme) {\n    state.theme = theme;\n  },\n}\n\nconst store = new Vuex.Store({\n  modules: {\n    common,\n    tags,\n    user,\n    konwledge\n  },\n  getters,\n  actions,\n  state: initState,\n  mutations\n})\n\nexport default store\n"
  },
  {
    "path": "src/store/modules/common.js",
    "content": "import { getStore, removeStore, setStore } from \"@/util/store\";\nimport website from \"@/const/website\";\nconst common = {\n  state: {\n    isCollapse: false,\n    isFullScreen: false,\n    isShade: false,\n    screen: -1,\n    isLock: getStore({ name: \"isLock\" }) || false,\n    showTag: true,\n    showCollapse: true,\n    showFullScren: true,\n    website: website,\n    tenantId: getStore({ name: \"tenantId\" }) || \"\",\n    theme: getStore({name: 'theme'}) || {},\n    themeName: getStore({name: 'themeName'}) || \"\",\n    system: getStore({name: 'system'}),\n    template: getStore({name: 'template'}) || \"\",\n    tenantInfo: getStore({name: 'tenantInfo'})\n  },\n  actions: {},\n  mutations: {\n    SET_SHADE: (state, active) => {\n      state.isShade = active;\n    },\n    SET_COLLAPSE: state => {\n      state.isCollapse = !state.isCollapse;\n    },\n    SET_FULLSCREN: state => {\n      state.isFullScreen = !state.isFullScreen;\n    },\n    SET_SHOWCOLLAPSE: (state, active) => {\n      state.showCollapse = active;\n      setStore({\n        name: \"showCollapse\",\n        content: state.showCollapse\n      });\n    },\n    SET_SHOWTAG: (state, active) => {\n      state.showTag = active;\n      setStore({\n        name: \"showTag\",\n        content: state.showTag\n      });\n    },\n    SET_SHOWMENU: (state, active) => {\n      state.showMenu = active;\n      setStore({\n        name: \"showMenu\",\n        content: state.showMenu\n      });\n    },\n    SET_SHOWLOCK: (state, active) => {\n      state.showLock = active;\n      setStore({\n        name: \"showLock\",\n        content: state.showLock\n      });\n    },\n    SET_SHOWSEARCH: (state, active) => {\n      state.showSearch = active;\n      setStore({\n        name: \"showSearch\",\n        content: state.showSearch\n      });\n    },\n    SET_SHOWFULLSCREN: (state, active) => {\n      state.showFullScren = active;\n      setStore({\n        name: \"showFullScren\",\n        content: state.showFullScren\n      });\n    },\n    SET_SHOWDEBUG: (state, active) => {\n      state.showDebug = active;\n      setStore({\n        name: \"showDebug\",\n        content: state.showDebug\n      });\n    },\n    SET_SHOWTHEME: (state, active) => {\n      state.showTheme = active;\n      setStore({\n        name: \"showTheme\",\n        content: state.showTheme\n      });\n    },\n    SET_SHOWCOLOR: (state, active) => {\n      state.showColor = active;\n      setStore({\n        name: \"showColor\",\n        content: state.showColor\n      });\n    },\n    SET_LOCK: state => {\n      state.isLock = true;\n      setStore({\n        name: \"isLock\",\n        content: state.isLock,\n        type: \"session\"\n      });\n    },\n    SET_SCREEN: (state, screen) => {\n      state.screen = screen;\n    },\n    SET_THEME: (state, theme) => {\n      state.theme = theme;\n      setStore({\n        name: \"theme\",\n        content: state.theme,\n        type: \"session\"\n      });\n    },\n    SET_THEME_NAME: (state, themeName) => {\n      state.themeName = themeName;\n      setStore({\n        name: \"themeName\",\n        content: state.themeName,\n        type: \"session\"\n      });\n    },\n    SET_LOCK_PASSWD: (state, lockPasswd) => {\n      state.lockPasswd = lockPasswd;\n      setStore({\n        name: \"lockPasswd\",\n        content: state.lockPasswd,\n        type: \"session\"\n      });\n    },\n    SET_TENANTId: (state, tenantId) => {\n      state.tenantId = tenantId;\n      setStore({\n        name: \"tenantId\",\n        content: state.tenantId,\n        type: \"session\"\n      });\n      setStore({\n        name: \"tenantId\",\n        content: state.tenantId,\n        type: \"\"\n      });\n    },\n    CLEAR_LOCK: state => {\n      state.isLock = false;\n      state.lockPasswd = \"\";\n      removeStore({\n        name: \"lockPasswd\"\n      });\n      removeStore({\n        name: \"isLock\"\n      });\n    },\n    SET_SYSTEM: (state, system) => {\n      state.system = system;\n      setStore({\n        name: \"system\",\n        content: state.system,\n        type: \"session\"\n      });\n    },\n    SET_TEMPLATE: (state, template) => {\n      state.template = template;\n      setStore({\n        name: \"template\",\n        content: state.template,\n        type: \"session\"\n      });\n    },\n    SET_TENANTINFO: (state, info) => {\n      state.tenantInfo = info;\n      setStore({\n        name: \"tenantInfo\",\n        content: state.tenantInfo,\n        type: \"session\"\n      });\n      document.title = info.shortName || \"无忧 - 企业文档\"\n    },\n  }\n};\nexport default common;\n"
  },
  {
    "path": "src/store/modules/konwledge.js",
    "content": "import { getStore, removeStore, setStore } from '@/util/store'\nconst konwledge = {\n  state: {\n    konwledgeInfo: getStore({ name: 'konwledgeInfo' }),\n  },\n  actions: {},\n  mutations: {\n    SET_KONWLEDGE: (state, konwledgeInfo) => {\n      state.konwledgeInfo = konwledgeInfo\n      setStore({\n        name: 'konwledgeInfo',\n        content: state.konwledgeInfo,\n        type: 'session'\n      })\n    }\n  }\n}\nexport default konwledge\n"
  },
  {
    "path": "src/store/modules/tags.js",
    "content": "import { getStore, setStore } from '@/util/store'\nimport { diff } from '@/util/util'\nimport website from '@/const/website'\n\nconst isFirstPage = website.isFirstPage\nconst tagWel = website.fistPage\nconst tagObj = {\n  label: '', // 标题名称+\n  value: '', // 标题的路径\n  params: '', // 标题的路径参数\n  query: '', // 标题的参数\n  group: [] // 分组\n}\n\n// 处理首个标签\nfunction setFistTag (list) {\n  if (list.length == 1) {\n    list[0].close = false\n  } else {\n    list.forEach(ele => {\n      if (ele.value === tagWel.value && isFirstPage === false) {\n        ele.close = false\n      } else {\n        ele.close = true\n      }\n    })\n  }\n}\n\nconst navs = {\n  state: {\n    tagList: getStore({ name: 'tagList' }) || [],\n    tag: getStore({ name: 'tag' }) || tagObj,\n    tagWel: tagWel\n  },\n  actions: {},\n  mutations: {\n    ADD_TAG: (state, action) => {\n      state.tag = action\n      setStore({ name: 'tag', content: state.tag, type: 'session' })\n      let bool = true\n      for(let i in state.tagList) {\n        if(state.tagList[i].value == action.value && state.tagList[i].hash == action.hash) {\n          bool = false\n        }\n      }\n      if(bool) {\n        state.tagList.push(action)\n        setFistTag(state.tagList)\n        setStore({ name: 'tagList', content: state.tagList, type: 'session' })\n      }\n    },\n    DEL_TAG: (state, action) => {\n      state.tagList = state.tagList.filter(item => {\n        return !(item.value == action.value && item.hash == action.hash)\n      })\n      setFistTag(state.tagList)\n      setStore({ name: 'tagList', content: state.tagList, type: 'session' })\n    },\n    DEL_ALL_TAG: (state) => {\n      state.tagList = [state.tagWel]\n      setStore({ name: 'tagList', content: state.tagList, type: 'session' })\n    },\n    DEL_TAG_OTHER: (state) => {\n      state.tagList = state.tagList.filter(item => {\n        if(item.hash) {\n          if(item.hash === state.tag.hash) {\n            return true\n          }\n        }else{\n          if (item.value === state.tag.value) {\n            return true;\n          } else if (!website.isFirstPage && item.value === website.fistPage.value) {\n            return true;\n          }\n        }\n      })\n      setFistTag(state.tagList)\n      setStore({ name: 'tagList', content: state.tagList, type: 'session' })\n    }\n  }\n}\nexport default navs\n"
  },
  {
    "path": "src/store/modules/user.js",
    "content": "import { getStore, setStore } from \"@/util/store\";\nimport { isURL } from \"@/util/validate\";\nimport {\n  loginByUsername,\n  logout,\n  refreshToken,\n  codeLogin,\n  wxOpenidLogin\n} from \"@/api/login\";\nimport { deepClone, encryption } from \"@/util/util\";\nimport webiste from \"@/const/website\";\nimport {enCodeKey} from \"@/const/const\"\n\nfunction addPath(ele, first) {\n  const propsConfig = webiste.menu.props;\n  const propsDefault = {\n    label: propsConfig.label || \"label\",\n    src: propsConfig.src || \"src\",\n    icon: propsConfig.icon || \"icon\",\n    path: propsConfig.path || \"path\"\n  };\n  if (first) {\n    ele[propsDefault.path] = ele[propsDefault.path] + \"/index\";\n    return;\n  }\n}\n\nconst user = {\n  state: {\n    userInfo:\n      getStore({\n        name: \"userInfo\"\n      }) || {},\n    permissions: getStore({\n      name: \"permissions\"\n    }) || [],\n    roles:\n      getStore({\n        name: \"roles\"\n      }) || [],\n    menu:\n      getStore({\n        name: \"menu\"\n      }) || [],\n    menuAll: [],\n    expires_in:\n      getStore({\n        name: \"expires_in\"\n      }) || \"\",\n    access_token:\n      getStore({\n        name: \"access_token\"\n      }) || \"\",\n    refresh_token:\n      getStore({\n        name: \"refresh_token\"\n      }) || \"\",\n    tenantId:\n      getStore({\n        name: \"tenantId\"\n      }) || \"\",\n    jti: \n      getStore({\n        name: 'jti'\n      }) || ''\n  },\n  actions: {\n    // 根据用户名登录\n    LoginByUsername({ commit }, userInfo) {\n      // console.log(userInfo);\n      let user = encryption({\n        data: userInfo,\n        key: enCodeKey, // \"ZnJhbWVmcmFtZQ==\",\n        param: [\"password\"]\n      });\n      return new Promise((resolve, reject) => {\n        if (user.loginType === \"namepass\") {\n          loginByUsername(\n            user.username,\n            user.password,\n            user.code,\n            user.randomStr\n          )\n            .then(response => {\n              const data = response.data;\n              commit(\"SET_ACCESS_TOKEN\", data.access_token);\n              commit(\"SET_REFRESH_TOKEN\", data.refresh_token);\n              commit(\"SET_EXPIRES_IN\", data.expires_in);\n              commit(\"CLEAR_LOCK\");\n              commit(\"SET_USER_INFO\", data.userDto);\n              commit(\"SET_ROLES\", data.roles || []);\n              commit(\"SET_PERMISSIONS\", data.permissions || []);\n\n              resolve(data);\n            })\n            .catch(error => {\n              console.log(error);\n              reject(error);\n            });\n        } else if (user.loginType === \"phone\") {\n          let tp = {\n            data: JSON.stringify({ phone: user.phone, code: user.code })\n          }\n          let temp = encryption({\n            data: tp,\n            key: enCodeKey,\n            param: [\"data\"]\n          });\n          codeLogin(('phone@'+temp.data))\n            .then(response => {\n              const data = response.data;\n              commit(\"SET_ACCESS_TOKEN\", data.access_token);\n              commit(\"SET_REFRESH_TOKEN\", data.refresh_token);\n              commit(\"SET_EXPIRES_IN\", data.expires_in);\n              commit(\"CLEAR_LOCK\");\n              commit(\"SET_USER_INFO\", data.userDto);\n              commit(\"SET_ROLES\", data.roles || []);\n              commit(\"SET_PERMISSIONS\", data.permissions || []);\n              resolve(data);\n            })\n            .catch(error => {\n              console.log(error);\n              reject(error);\n            });\n        }else if(['invite', 'weixin'].indexOf(userInfo.loginType) > -1) {\n          let userTempData = JSON.parse(JSON.stringify(userInfo))\n          let spiteIcon = 'invite@'\n          if(userInfo.loginType == 'weixin') {\n            spiteIcon = (userTempData.type + '@')\n          }\n          delete userTempData.loginType\n          let tp = {\n            data: JSON.stringify(userTempData)\n          }\n          let temp = encryption({\n            data: tp,\n            key: enCodeKey,\n            param: [\"data\"]\n          });\n          \n          codeLogin((spiteIcon+temp.data)).then(response => {\n            const data = response.data;\n            commit(\"SET_ACCESS_TOKEN\", data.access_token);\n            commit(\"SET_REFRESH_TOKEN\", data.refresh_token);\n            commit(\"SET_EXPIRES_IN\", data.expires_in);\n            commit(\"CLEAR_LOCK\");\n            commit(\"SET_USER_INFO\", data.userDto);\n            commit(\"SET_ROLES\", data.roles || []);\n            commit(\"SET_PERMISSIONS\", data.permissions || []);\n            resolve(data);\n          })\n          .catch(error => {\n            console.log(error);\n            reject(error);\n          });\n        }\n      });\n    },\n    GetUserInfo({ commit }) {\n      return new Promise((resolve, reject) => {\n        getUserInfo()\n          .then(res => {\n            const data = res.data.data || {};\n            commit(\"SET_USER_INFO\", data.sysUser);\n            commit(\"SET_ROLES\", data.roles || []);\n            commit(\"SET_PERMISSIONS\", data.permissions || []);\n            resolve(data);\n          })\n          .catch(err => {\n            reject();\n          });\n      });\n    },\n    // 刷新token\n    RefreshToken({ commit, state }, tenantId) {\n      return new Promise((resolve, reject) => {\n        refreshToken(state.refresh_token, tenantId)\n          .then(response => {\n            const data = response.data;\n            commit(\"SET_ACCESS_TOKEN\", data.access_token);\n            commit(\"SET_REFRESH_TOKEN\", data.refresh_token);\n            commit(\"SET_EXPIRES_IN\", data.expires_in);\n            commit(\"CLEAR_LOCK\");\n            commit(\"SET_TENANTId\", tenantId);\n            resolve(data);\n          })\n          .catch(error => {\n            reject(error);\n          });\n      });\n    },\n    // 登出\n    LogOut({ commit }) {\n      commit(\"SET_MENU\", []);\n      commit(\"SET_PERMISSIONS\", []);\n      commit(\"SET_USER_INFO\", {});\n      commit(\"SET_ACCESS_TOKEN\", \"\");\n      commit(\"SET_REFRESH_TOKEN\", \"\");\n      commit(\"SET_EXPIRES_IN\", \"\");\n      commit(\"SET_ROLES\", []);\n      commit(\"DEL_ALL_TAG\");\n      commit(\"CLEAR_LOCK\");\n      commit(\"SET_SYSTEM\", \"\");\n      commit(\"SET_ACCESS_TOKEN\", \"\");\n      commit(\"SET_TENANTId\", \"\");\n      localStorage.clear()\n      sessionStorage.clear()\n      var date=new Date();\n      date.setTime(date.getTime()-10000);\n      var keys=document.cookie.match(/[^ =;]+(?=\\=)/g);\n      if (keys) {\n        for (var i =  keys.length; i--;)\n        document.cookie=keys[i]+\"=; expire=\"+date.toGMTString()+\"; path=/\";\n      }\n    },\n    // 注销session\n    FedLogOut({ commit }) {\n      return new Promise(resolve => {\n        commit(\"SET_MENU\", []);\n        commit(\"SET_PERMISSIONS\", []);\n        commit(\"SET_USER_INFO\", {});\n        commit(\"SET_ACCESS_TOKEN\", \"\");\n        commit(\"SET_REFRESH_TOKEN\", \"\");\n        commit(\"SET_ROLES\", []);\n        commit(\"DEL_ALL_TAG\");\n        commit(\"CLEAR_LOCK\");\n        resolve();\n      });\n    }\n  },\n  mutations: {\n    SET_ACCESS_TOKEN: (state, access_token) => {\n      state.access_token = access_token;\n      setStore({\n        name: \"access_token\",\n        content: state.access_token,\n        type: \"session\"\n      });\n      setStore({\n        name: \"access_token\",\n        content: state.access_token,\n        type: \"\"\n      });\n    },\n    SET_EXPIRES_IN: (state, expires_in) => {\n      state.expires_in = expires_in;\n      setStore({\n        name: \"expires_in\",\n        content: state.expires_in,\n        type: \"session\"\n      });\n    },\n    SET_REFRESH_TOKEN: (state, rfToken) => {\n      state.refresh_token = rfToken;\n      setStore({\n        name: \"refresh_token\",\n        content: state.refresh_token,\n        type: \"session\"\n      });\n    },\n    SET_USER_INFO: (state, userInfo) => {\n      state.userInfo = userInfo;\n      setStore({\n        name: \"userInfo\",\n        content: state.userInfo,\n        type: \"session\"\n      });\n      setStore({\n        name: \"userInfo\",\n        content: state.userInfo,\n        type: \"\"\n      });\n    },\n    SET_MENU: (state, params = {}) => {\n      let { menu, type } = params;\n      if (type !== false) state.menu = menu;\n      setStore({\n        name: \"menu\",\n        content: menu,\n        type: \"session\"\n      });\n    },\n    SET_MENU_ALL: (state, menuAll) => {\n      state.menuAll = menuAll;\n    },\n    SET_ROLES: (state, roles) => {\n      state.roles = roles;\n      setStore({\n        name: \"roles\",\n        content: state.roles,\n        type: \"session\"\n      });\n    },\n    SET_PERMISSIONS: (state, permissions) => {\n      // const list = {};\n      // for (let i = 0; i < permissions.length; i++) {\n      //   list[permissions[i]] = true;\n      // }\n      // state.permissions = list;\n      setStore({\n        name: \"permissions\",\n        content: permissions, //state.permissions,\n        type: \"session\"\n      });\n    },\n    SET_SwitchTenant: (state, switchTenant) => {\n      state.switchTenant = switchTenant;\n      setStore({\n        name: \"switchTenant\",\n        content: state.switchTenant,\n        type: \"session\"\n      });\n    }\n  }\n};\nexport default user;\n"
  },
  {
    "path": "src/store/types/global.js",
    "content": "/*\n * @component global.js\n * @description 全局类型\n * @author wangying\n */\n\n// actions\n\n// getters\nexport const GET_DIRECTION = 'APP/GET_DIRECTION';\nexport const GET_THEME = 'APP/GET_THEME';\n\n// mutations\nexport const UPDATE_DIRECTION = 'APP/UPDATE_DIRECTION';\nexport const UPDATE_THEME = 'APP/UPDATE_THEME';"
  },
  {
    "path": "src/styles/animate/vue-transition.scss",
    "content": "// 过渡动画 横向渐变\n.fade-transverse-leave-active,\n.fade-transverse-enter-active {\n    transition: all .5s;\n}\n\n.fade-transverse-enter {\n    opacity: 0;\n    transform: translateX(-30px);\n}\n\n.fade-transverse-leave-to {\n    opacity: 0;\n    transform: translateX(30px);\n}\n\n// 过渡动画 缩放渐变\n.fade-scale-leave-active,\n.fade-scale-enter-active {\n    transition: all .5s;\n}\n\n.fade-scale-enter {\n    opacity: 0;\n    transform: scale(1.2);\n}\n\n.fade-scale-leave-to {\n    opacity: 0;\n    transform: scale(0.8);\n}\n\n@-webkit-keyframes animate-cloud {\n  from {\n    background-position: 600px 100%;\n  }\n  to {\n    background-position: 0 100%;\n  }\n}\n@-moz-keyframes animate-cloud {\n  from {\n    background-position: 600px 100%;\n  }\n  to {\n    background-position: 0 100%;\n  }\n}\n@-ms-keyframes animate-cloud {\n  from {\n    background-position: 600px 100%;\n  }\n  to {\n    background-position: 0 100%;\n  }\n}\n@-o-keyframes animate-cloud {\n  from {\n    background-position: 600px 100%;\n  }\n  to {\n    background-position: 0 100%;\n  }\n}\n"
  },
  {
    "path": "src/styles/common.scss",
    "content": "// 全局变量\n@import './variables.scss';\n// ele样式覆盖\n@import './element-ui.scss';\n// 顶部右侧显示\n@import './top.scss';\n// 导航标签\n@import './tags.scss';\n// 工具类函数\n@import './mixin.scss';\n// 侧面导航栏\n@import './sidebar.scss';\n// 动画\n@import './animate/vue-transition.scss';\n//适配\n@import './media.scss';\n//通用配置\n@import './normalize.scss';\n\na{\n  text-decoration: none;\n  color:#333;\n}\n*{\n  outline: none;\n}\n\n//tags 布局\n.lineBox{\n  /deep/ .el-tabs__nav{\n  display: flex;\n    height: 100%;\n  }\n}\n\n// 遮罩透明\n.v-modal{\n  // background: none!important;\n  // z-index: 0!important;\n}"
  },
  {
    "path": "src/styles/element-ui.scss",
    "content": ".el-dropdown-menu__item {\n  font-size: 12px !important;\n  line-height: 28px !important;\n}\n\n.el-card.is-always-shadow {\n  box-shadow: none;\n  border: none !important;\n}\n\n.el-scrollbar__view {\n  height: 100%;\n}\n\n.el-collapse-item__header {\n  display: block !important;\n}\n\n.el-menu--horizontal {\n  border-bottom: none !important;\n}\n\n.el-menu {\n  border-right: none !important;\n}\n\n.el-menu--display,\n.el-menu--display + .el-submenu__icon-arrow {\n  display: none;\n}\n\n.el-dropdown-menu__item--divided:before,\n.el-menu,\n.el-menu--horizontal > .el-menu-item:not(.is-disabled):focus,\n.el-menu--horizontal > .el-menu-item:not(.is-disabled):hover,\n.el-menu--horizontal > .el-submenu .el-submenu__title:hover {\n  background-color: transparent;\n}\n\n.el-message__icon,\n.el-message__content {\n  display: inline-block;\n}\n\n.el-date-editor .el-range-input,\n.el-date-editor .el-range-separator {\n  height: auto;\n  overflow: hidden;\n}\n\n.el-dialog__wrapper {\n  z-index: 2048;\n}\n\n\n.el-col {\n  margin-bottom: 8px;\n}\n\n.el-main {\n  padding: 0 !important;\n}\n\n.el-dropdown-menu__item--divided:before, .el-menu, .el-menu--horizontal > .el-menu-item:not(.is-disabled):focus, .el-menu--horizontal > .el-menu-item:not(.is-disabled):hover, .el-menu--horizontal > .el-submenu .el-submenu__title:hover {\n  background-color: transparent !important;\n}\n.el-table--medium td{\n  padding: 5px 0;\n}\n"
  },
  {
    "path": "src/styles/login.scss",
    "content": "\n.login-container {\n  display: flex;\n  align-items: center;\n  position: relative;\n  width: 100%;\n  height: 100%;\n  margin: 0 auto;\n  // 0 bottom repeat-x #049ec4;\n  // background: #f8f8f9;\n  animation: animate-cloud 20s linear infinite;\n  background-repeat: round;\n}\n\n.login-weaper {\n  margin: 0 auto;\n  width: 1000px;\n  box-shadow: -4px 5px 10px rgba(0, 0, 0, 0.4);\n}\n\n.login-left,\n.login-border {\n  position: relative;\n  min-height: 500px;\n  align-items: center;\n  display: flex;\n}\n\n.login-left {\n  border-top-left-radius: 5px;\n  border-bottom-left-radius: 5px;\n  justify-content: center;\n  flex-direction: column;\n  // background-color: #409EFF;\n  color: #fff;\n  float: left;\n  width: 50%;\n  position: relative;\n}\n\n.login-left .img {\n  width: 140px;\n}\n\n.login-time {\n  position: absolute;\n  left: 25px;\n  top: 25px;\n  width: 100%;\n  color: #fff;\n  font-weight: 200;\n  opacity: 0.9;\n  font-size: 18px;\n  overflow: hidden;\n}\n\n.login-left .title {\n  margin-top: 60px;\n  text-align: center;\n  color: #fff;\n  font-weight: 300;\n  letter-spacing: 2px;\n  font-size: 25px;\n}\n\n.login-border {\n  border-left: none;\n  border-top-right-radius: 5px;\n  border-bottom-right-radius: 5px;\n  color: #fff;\n  background-color: #fff;\n  width: 50%;\n  float: left;\n  box-sizing: border-box;\n}\n\n.login-main {\n  margin: 0 auto;\n  width: 65%;\n  box-sizing: border-box;\n}\n\n.login-main > h3 {\n  margin-bottom: 20px;\n}\n\n.login-main > p {\n  color: #76838f;\n}\n\n.login-title {\n  color: #333;\n  margin-bottom: 40px;\n  font-weight: 500;\n  font-size: 22px;\n  text-align: center;\n  letter-spacing: 4px;\n}\n\n.login-select {\n  input {\n    color: #333;\n    font-size: 18px;\n    font-weight: 400;\n    border: none;\n    text-align: center;\n  }\n}\n\n.login-menu {\n  margin-top: 40px;\n  width: 100%;\n  text-align: center;\n\n  a {\n    color: #999;\n    font-size: 12px;\n    margin: 0px 8px;\n  }\n}\n\n.login-submit {\n  width: 100%;\n  height: 45px;\n  border: 1px solid #409eff;\n  background: none;\n  font-size: 18px;\n  letter-spacing: 2px;\n  font-weight: 300;\n  color: #409eff;\n  cursor: pointer;\n  margin-top: 30px;\n  font-family: \"neo\";\n  transition: 0.25s;\n}\n\n.login-form {\n  margin: 10px 0;\n\n  i {\n    color: #333;\n  }\n\n  .el-form-item__content {\n    width: 100%;\n  }\n\n  .el-form-item {\n    margin-bottom: 12px;\n  }\n\n  .el-input {\n    input {\n      padding-bottom: 10px;\n      text-indent: 5px;\n      background: transparent;\n      border: none;\n      border-radius: 0;\n      color: #333;\n      border-bottom: 1px solid rgb(235, 237, 242);\n    }\n\n    .el-input__prefix {\n      i {\n        padding: 0 5px;\n        font-size: 16px !important;\n      }\n    }\n  }\n}\n\n.login-code {\n  display: flex;\n  align-items: center;\n  justify-content: space-around;\n  margin: 0 0 0 10px;\n}\n\n.login-code-img {\n  margin-top: 2px;\n  width: 100px;\n  height: 38px;\n  background-color: #fdfdfd;\n  border: 1px solid #f0f0f0;\n  color: #333;\n  font-size: 14px;\n  font-weight: bold;\n  letter-spacing: 5px;\n  line-height: 38px;\n  text-indent: 5px;\n  text-align: center;\n}\n\n"
  },
  {
    "path": "src/styles/media.scss",
    "content": ".jvs-left,\n.jvs-header,\n.jvs-top,\n.jvs-logo,\n.jvs-layout\n.login-logo,\n.jvs-main {\n    transition: all .3s;\n}\n.jvs-contail {\n    width: 100%;\n    height: 100%;\n    background: #f0f2f5;\n    background-size: 100%;\n    background-repeat: no-repeat;\n}\n\n\n.jvs-left {\n    position: fixed;\n    left: 0;\n    top: 0;\n    // width: 220px;\n    height: 100%;\n    z-index: 1025;\n}\n\n.jvs--collapse {\n    .jvs-left,\n    .jvs-logo {\n        width: 60px!important;\n    }\n    .jvs-header, .jvs-tags__box .el-tabs{\n        padding-left: 60px!important;\n    }\n    .jvs-main {\n        width: calc(100% - 60px)!important;\n        left: 60px!important;\n    }\n}\n\n.jvs-header {\n    padding-left: 240px;\n    width: 100%;\n    background-color: #fff;\n    box-sizing: border-box;\n}\n\n.jvs-main {\n    position: absolute;\n    left: 220px;\n    padding: 0;\n    padding-bottom: 20px;\n    height: calc(100%);\n    box-sizing: border-box;\n    overflow: hidden;\n}\n\n.jvs-view {\n    padding-bottom: 22px;\n    width: 100%;\n    box-sizing: border-box;\n    height: 100%;\n}\n\n.jvs-footer {\n    margin: 0 auto;\n    padding: 0 22px;\n    width: 1300px;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    .logo {\n        margin-left: -50px;\n    }\n    .copyright {\n        color: #666;\n        line-height: 1.5;\n        font-size: 12px;\n    }\n}\n\n.jvs-shade {\n    position: fixed;\n    display: none;\n    width: 100%;\n    height: 100%;\n    left: 0;\n    right: 0;\n    top: 0;\n    bottom: 0;\n    background-color: rgba(0, 0, 0, .3);\n    z-index: 1024;\n    &--show {\n        display: block;\n    }\n}\n\n@media screen and (max-width: 992px) {\n    $width: 100%; //240px;\n    // ele的自适应\n    .el-dialog,\n    .el-message-box {\n        width: 98% !important;\n    }\n    //登录页面\n    .login-left {\n        display: none !important;\n    }\n    .login-logo {\n        padding-top: 30px !important;\n        margin-left: -30px;\n    }\n    .login-weaper{\n        margin: 0 auto;\n        width: 96% !important;\n    }\n    .login-border {\n        border-radius: 5px;\n        padding: 40px;\n        margin: 0 auto;\n        float: none !important;\n        width: 100% !important;\n    }\n    .login-main {\n        width: 100% !important;\n    }\n    //主框架\n    .jvs-tags {\n        display: none;\n    }\n    .jvs-left,\n    .jvs-logo {\n        left: -$width;\n    }\n    .jvs-main {\n        left: 0;\n        width: 100%;\n    }\n    .jvs-header {\n        margin-bottom: 15px;\n        padding-left: 15px;\n    }\n    .top-bar__item {\n        display: none;\n    }\n    .jvs--collapse {\n        .jvs-left,\n        .jvs-logo {\n            width: $width;\n            left: 0;\n        }\n        .jvs-main {\n            left: $width;\n            width: 100%;\n        }\n        .jvs-header {\n            padding: 0;\n            transform: translate3d(230px, 0, 0);\n        }\n        .jvs-shade {\n            display: block;\n        }\n    }\n}\n"
  },
  {
    "path": "src/styles/mixin.scss",
    "content": "@mixin clearfix {\n    &:after {\n        content: \"\";\n        display: table;\n        clear: both;\n    }\n}\n\n@mixin scrollBar {\n     ::-webkit-scrollbar-track-piece {\n        background-color: transparent;\n    }\n     ::-webkit-scrollbar {\n        width: 7px;\n        height: 7px;\n        background-color: transparent;\n    }\n     ::-webkit-scrollbar-thumb {\n        border-radius: 5px;\n        background-color: hsla(220, 4%, 58%, .3);\n    }\n}\n\n@mixin radius($width, $size, $color) {\n    width: $width;\n    height: $width;\n    line-height: $width;\n    border-radius: $width;\n    text-align: center;\n    border-width: $size;\n    border-style: solid;\n    border-color: $color;\n}\n\n@mixin relative {\n    position: relative;\n    width: 100%;\n    height: 100%;\n}\n\n@mixin pct($pct) {\n    width: #{$pct};\n    position: relative;\n    margin: 0 auto;\n}\n\n@mixin triangle($width, $height, $color, $direction) {\n    $width: $width/2;\n    $color-border-style: $height solid $color;\n    $transparent-border-style: $width solid transparent;\n    height: 0;\n    width: 0;\n    @if $direction==up {\n        border-bottom: $color-border-style;\n        border-left: $transparent-border-style;\n        border-right: $transparent-border-style;\n    }\n    @else if $direction==right {\n        border-left: $color-border-style;\n        border-top: $transparent-border-style;\n        border-bottom: $transparent-border-style;\n    }\n    @else if $direction==down {\n        border-top: $color-border-style;\n        border-left: $transparent-border-style;\n        border-right: $transparent-border-style;\n    }\n    @else if $direction==left {\n        border-right: $color-border-style;\n        border-top: $transparent-border-style;\n        border-bottom: $transparent-border-style;\n    }\n}"
  },
  {
    "path": "src/styles/normalize.scss",
    "content": "/*! normalize.css v2.1.2 | MIT License | git.io/normalize */\n/*\n/*! 我就是自己看看，然后翻译下下，让大家看看 */\n\n/* ==========================================================================\n   HTML5 display definitions\n\n   HTML5 新增元素定义\n\n   ========================================================================== */\n\n/**\n * Correct `block` display not defined in IE 8/9.\n *\n * 修正IE 8/9 中未定义的块级元素。\n */\n\n article,\n aside,\n details,\n figcaption,\n figure,\n footer,\n header,\n hgroup,\n main,\n nav,\n section,\n summary {\n     display: block;\n }\n \n /**\n  * Correct `inline-block` display not defined in IE 8/9.\n  *\n  * 修正在 IE 8/9 中未定义的 'inline-block' 元素。\n  */\n \n audio,\n canvas,\n video {\n     display: inline-block;\n }\n \n /**\n  * Prevent modern browsers from displaying `audio` without controls.\n  * Remove excess height in iOS 5 devices.\n  *\n  * 阻止现在浏览器显示未定义 control 播放控件的 'audio' 声音元素。\n  * 删除 IOS 5 设备中显示的多余的高度。\n  */\n \n audio:not([controls]) {\n     display: none;\n     height: 0;\n }\n \n /**\n  * Address styling not present in IE 8/9.\n  *\n  * 处理 IE 8/9 中不存在的样式。\n  */\n \n [hidden] {\n     display: none;\n }\n \n /* ==========================================================================\n    Base\n \n    基本设置\n    ========================================================================== */\n \n /**\n  * 1. Set default font family to sans-serif.\n  * 2. Prevent iOS text size adjust after orientation change, without disabling\n  *    user zoom.\n  *\n  * 1. 设置默认字体类型为 sans-serif.\n  * 2. 当用户放大或缩小页面时不改变字体大小。\n  */\n \n html {\n     font-family: sans-serif; /* 1 */\n     -ms-text-size-adjust: 100%; /* 2 */\n     -webkit-text-size-adjust: 100%; /* 2 */\n }\n \n /**\n  * Remove default margin.\n  *\n  * 删除默认边距。\n  */\n \n body {\n     margin: 0;\n }\n \n /* ==========================================================================\n    Links\n \n    链接\n    ========================================================================== */\n \n /**\n  * Address `outline` inconsistency between Chrome and other browsers.\n  *\n  * 处理 Chrome 与其它浏览器中关于 'outline' 的不一致性。\n  */\n \n a:focus {\n     outline: thin dotted;\n }\n \n /**\n  * Improve readability when focused and also mouse hovered in all browsers.\n  *\n  * 为所有浏览器改善当激活或悬停在元素上时元素内容的可读性。\n  */\n \n a:active,\n a:hover {\n     outline: 0;\n }\n \n /* ==========================================================================\n    Typography\n \n    排版\n    ========================================================================== */\n \n /**\n  * Address variable `h1` font-size and margin within `section` and `article`\n  * contexts in Firefox 4+, Safari 5, and Chrome.\n  *\n  * 处理多变的 'h1' 字体大小及其在 Firefox 4+, Safari 5, 及 Chrome时浏览器中的 \n  * 'section' 与　'article' 元素中的边距。\n  */\n \n h1 {\n     font-size: 2em;\n     margin: 0.67em 0;\n }\n \n /**\n  * Address styling not present in IE 8/9, Safari 5, and Chrome.\n  *\n  * 处理在 IE 8/9, Safari 5, 及 Chrome 没有的样式。\n  */\n \n abbr[title] {\n     border-bottom: 1px dotted;\n }\n \n /**\n  * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.\n  *\n  * 处理 Firefox 4+, Safari 5, 及 Chrome 中默认的 'bolder' 样式为　'bold'.\n  */\n \n b,\n strong {\n     font-weight: bold;\n }\n \n /**\n  * Address styling not present in Safari 5 and Chrome.\n  *\n  * 处理在 Safari 5 和 Chrome 没有的样式。\n  */\n \n dfn {\n     font-style: italic;\n }\n \n /**\n  * Address differences between Firefox and other browsers.\n  *\n  * 处理　Firefox　与其它浏览器的差异。\n  */\n \n hr {\n     -moz-box-sizing: content-box;\n     box-sizing: content-box;\n     height: 0;\n }\n \n /**\n  * Address styling not present in IE 8/9.\n  *\n  * 处理在 IE 8/9 中没有的样式。\n  */\n \n mark {\n     background: #ff0;\n     color: #000;\n }\n \n /**\n  * Correct font family set oddly in Safari 5 and Chrome.\n  *\n  * 修正确 Safari 5 和 Chrome 中古怪的默认字体。\n  */\n \n code,\n kbd,\n pre,\n samp {\n     font-family: monospace, serif;\n     font-size: 1em;\n }\n \n /**\n  * Improve readability of pre-formatted text in all browsers.\n  *\n  * 为所有浏览器改善预格式化文本的可读性。\n  */\n \n pre {\n     white-space: pre-wrap;\n }\n \n /**\n  * Set consistent quote types.\n  *\n  * 设置一致的引用格式。\n  */\n \n q {\n     quotes: \"\\201C\" \"\\201D\" \"\\2018\" \"\\2019\";\n }\n \n /**\n  * Address inconsistent and variable font size in all browsers.\n  *\n  * 处理所有浏览器中字体大小的不一致性[译者注：原文直译为：处理所有\n  * 浏览器中的不一致和多变的字体大小]。\n  */\n \n small {\n     font-size: 80%;\n }\n \n /**\n  * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n  *\n  * 阻止所有浏览器中 'sub' 和 'sup' 元素影响 'line-height'. \n  * [译者注：就是不让上标与下标影响行高。]\n  */\n \n sub,\n sup {\n     font-size: 75%;\n     line-height: 0;\n     position: relative;\n     vertical-align: baseline;\n }\n \n sup {\n     top: -0.5em;\n }\n \n sub {\n     bottom: -0.25em;\n }\n \n /* ==========================================================================\n    Embedded content\n \n    嵌入的内容\n    ========================================================================== */\n \n /**\n  * Remove border when inside `a` element in IE 8/9.\n  *\n  * 删除 IE 8/9 中当内容位于 'a' 中出现的边框。\n  */\n \n img {\n     border: 0;\n }\n \n /**\n  * Correct overflow displayed oddly in IE 9.\n  *\n  * 修正 IE 9 中显示古怪的溢出内容。\n  */\n \n svg:not(:root) {\n     overflow: hidden;\n }\n \n /* ==========================================================================\n    Figures\n \n    Figure 图像/图表/代码等\n    ========================================================================== */\n \n /**\n  * Address margin not present in IE 8/9 and Safari 5.\n  *\n  * 处理在 IE 8/9 和 Safari 5 没有的边距。\n  */\n \n figure {\n     margin: 0;\n }\n \n /* ==========================================================================\n    Forms\n    ========================================================================== */\n \n /**\n  * Define consistent border, margin, and padding.\n  *\n  * 定义一致的边框、外边距及内边距。\n  */\n \n fieldset {\n     border: 1px solid #c0c0c0;\n     margin: 0 2px;\n     padding: 0.35em 0.625em 0.75em;\n }\n \n /**\n  * 1. Correct `color` not being inherited in IE 8/9.\n  * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n  * 1. 修正在　IE 8/9 中没有继承的 'color'. \n  *\n  *    [译者注：说是修正颜色嘛，可下面没有关于颜色的呀，这也行？求大神解释！]\n  * 2. 去掉内边距，避免当用户清空表单组时认为出错了。\n  */\n \n legend {\n     border: 0; /* 1 */\n     padding: 0; /* 2 */\n }\n \n /**\n  * 1. Correct font family not being inherited in all browsers.\n  * 2. Correct font size not being inherited in all browsers.\n  * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.\n  *\n  * 1. 修正所有浏览器中未被继承的字体类型。\n  * 2. 修正所有浏览器中未被继承的字体大小。\n  * 3. 处理 Firefox 4+, Safari 5, 及 Chrome 中默认设置不同的外边距。\n  */\n \n button,\n input,\n select,\n textarea {\n     font-family: inherit; /* 1 */\n     font-size: 100%; /* 2 */\n     margin: 0; /* 3 */\n }\n \n /**\n  * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n  * the UA stylesheet.\n  *\n  * 处理 Firefox 4+ 中的客户端样式表里使用 '!important' 设置的 'line-height'.\n  */\n \n button,\n input {\n     line-height: normal;\n }\n \n /**\n  * Address inconsistent `text-transform` inheritance for `button` and `select`.\n  * All other form control elements do not inherit `text-transform` values.\n  * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.\n  * Correct `select` style inheritance in Firefox 4+ and Opera.\n  * \n  * 处理 'button' 和 'select' 的 'text-transform' 继承的不一致性。\n  * 所有其它表单控件元素不继承 'text-transform' 的值。\n  * 修正 Chrome, Safari 5+, 及 IE 8+ 中 'button' 的继承样式。\n  * 修正 Firefox 4+ 和 Opera 中 'select' 的继承样式。\n  */\n \n button,\n select {\n     text-transform: none;\n }\n \n /**\n  * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n  *    and `video` controls.\n  * 2. Correct inability to style clickable `input` types in iOS.\n  * 3. Improve usability and consistency of cursor style between image-type\n  *    `input` and others.\n  *\n  * 1. 避免 Android 4.0.* 中 WebKit 的一个bug, 防止 'audio' 与 'video' 的播放控件失效。\n  * 2. 修正 iOS 中不可点击的 'input' 样式。\n  * 3. 改善图片类型的 'input' 等光标样式的可用性与一致性。\n  */\n \n button,\n html input[type=\"button\"], /* 1 */\n input[type=\"reset\"],\n input[type=\"submit\"] {\n     -webkit-appearance: button; /* 2 */\n     cursor: pointer; /* 3 */\n }\n \n /**\n  * Re-set default cursor for disabled elements.\n  * \n  * 重置不可用元素的默认光标样式。\n  */\n \n button[disabled],\n html input[disabled] {\n     cursor: default;\n }\n \n /**\n  * 1. Address box sizing set to `content-box` in IE 8/9.\n  * 2. Remove excess padding in IE 8/9.\n  *\n  * 1. 处理 IE 8/9 中设置为 'content-box' 的盒子模型。\n  * 2. 删除 IE 8/9 中多余的内边距。\n  */\n \n input[type=\"checkbox\"],\n input[type=\"radio\"] {\n     box-sizing: border-box; /* 1 */\n     padding: 0; /* 2 */\n }\n \n /**\n  * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.\n  * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome\n  *    (include `-moz` to future-proof).\n  *\n  * 1. 处理 Safari 5 和 Chrome 中默认设置为 'appearance' 的 'searchfield'.\n  * 2. 处理 Safari 5 和 Chrome 中默认设置为 'box-sizing' 的 'border-box'\n  *    (包括不会过时的 '-moz').\n  */\n \n input[type=\"search\"] {\n     -webkit-appearance: textfield; /* 1 */\n     -moz-box-sizing: content-box;\n     -webkit-box-sizing: content-box; /* 2 */\n     box-sizing: content-box;\n }\n \n /**\n  * Remove inner padding and search cancel button in Safari 5 and Chrome\n  * on OS X.\n  *\n  * 删除 Safari 5 和 OS X 上的 Chrome 中的输入框上的内边距和搜索取消按钮。\n  */\n \n input[type=\"search\"]::-webkit-search-cancel-button,\n input[type=\"search\"]::-webkit-search-decoration {\n     -webkit-appearance: none;\n }\n \n /**\n  * Remove inner padding and border in Firefox 4+.\n  *\n  * 删除 Firefox 4+ button 与 input 上的内边距。\n  */\n \n button::-moz-focus-inner,\n input::-moz-focus-inner {\n     border: 0;\n     padding: 0;\n }\n \n /**\n  * 1. Remove default vertical scrollbar in IE 8/9.\n  * 2. Improve readability and alignment in all browsers.\n  *\n  * 1. 删除 IE8/9 中默认的垂直滚动条。\n  * 2. 改善所有浏览器中的可读性并使文本垂直对齐。\n  */\n \n textarea {\n     overflow: auto; /* 1 */\n     vertical-align: top; /* 2 */\n }\n \n /* ==========================================================================\n    Tables\n \n    表格\n    ========================================================================== */\n \n /**\n  * Remove most spacing between table cells.\n  *\n  * 删除表格里单元格间的间距。\n  */\n \n table {\n     border-collapse: collapse;\n     border-spacing: 0;\n }\n "
  },
  {
    "path": "src/styles/reset2.0.scss",
    "content": "// 弹框\n.el-dialog__wrapper:not(.form-fullscreen-dialog){\n  .el-dialog{\n    .el-dialog__header{\n      height: 20px;\n      font-size: 20px;\n      font-family: SourceHanSansCN-Regular;\n      color: #333333;\n      padding: 20px;\n      display: flex;\n      align-items: center;\n      position: relative;\n      .el-dialog__title{\n        line-height: 20px;\n        font-size: 20px;\n        color: #333333;\n      }\n      .el-dialog__headerbtn{\n        .el-dialog__close{\n          color: #BFBFBF;\n        }\n      }\n    }\n    .el-dialog__header::before{\n      content: \"\";\n      display: block;\n      width: 4px;\n      height: 20px;\n      background: #3471FF;\n      margin-right: 20px;\n    }\n    .el-dialog__header::after{\n      content: \"\";\n      display: block;\n      width: calc(100% - 40px);\n      height: 1px;\n      background: #DCDFE6;\n      position: absolute;\n      bottom: 0;\n    }\n  }\n}\n\n\n// 表格\n.jvs-table{\n  background-color: #ffffff;\n  // 标题\n  .jvs-table-titleTop{\n    padding: 0 20px!important;\n    .el-card__body{\n      padding: 0!important;\n      padding-top: 4px!important;\n      padding-bottom: 20px!important;\n      box-sizing: border-box;\n      .pageheader-top{\n        padding: 18px 0;\n        border-bottom: 1px solid #DCDFE6;\n        margin: 0;\n        .pageheader-line{\n          margin: 0;\n          margin-right: 15px;\n          border-radius: 0;\n        }\n        .title{\n          margin: 0;\n        }\n      }\n      .table-top{\n        padding: 20px 0;\n        box-sizing: border-box;\n        border-bottom: 1px solid #DCDFE6;\n        .table-top-left{\n          margin: 0;\n        }\n      }\n    }\n  }\n  // 顶部查询\n  .jvs-table-top{\n    padding: 0 20px!important;\n    box-sizing: border-box;\n    .el-card__body{\n      padding-bottom: 0!important;\n      .table-top{\n        border: 0;\n      }\n      .search-form{\n        box-sizing: border-box;\n        margin: 0;\n        padding: 20px 0;\n        border-bottom: 1px solid #DCDFE6;\n      }\n    }\n  }\n  // 内容\n  .table-body-box{\n    .el-table{\n      margin-top: 0!important;\n      .el-table__header-wrapper{\n        margin: 0!important;\n        tr{\n          th{\n            box-sizing: border-box;\n            height: 55px;\n            background-color: #F3F3F3;\n            color: #333333;\n            font-size: 16px;\n            font-weight: normal;\n            border: 0;\n          }\n        }\n      }\n      .el-table__body-wrapper{\n        .el-table__body{\n          tr{\n            color: #555555;\n            font-size: 14px;\n            td{\n              box-sizing: border-box;\n              height: 45px;\n              .el-button--text{\n                font-size: 14px;\n                color: #3471FF;\n              }\n            }\n          }\n          tr:hover > td{\n            background: #EFF2F7;\n          }\n        }\n        .el-table__empty-block{\n          border: 0;\n          .el-table__empty-text{\n            display: block;\n            width: 457px;\n          }\n          .el-table__empty-text::before{\n            content: \"\";\n            display: block;\n            width: 457px;\n            height: 180px;\n            background-image: url('../const/img/emptyImage.png');\n            background-size: 260px 123px;\n            background-repeat: no-repeat;\n            background-position: center;\n          }\n        }\n      }\n    }\n  }\n}\n\n\n// 树形组件\n.el-tree{\n  position: relative;\n  .el-tree-node{\n    .el-tree-node__content{\n      height: 35px;\n      border-radius: 4px;\n      span:not(.el-tree-node__expand-icon){\n        font-size: 16px;\n        color: #333333;\n      }\n      .el-tree-node__expand-icon:not(.is-leaf){\n        color: #868BA1;\n        font-size: 16px;\n      }\n    }\n    .el-tree-node__content:hover{\n      background: #EFF2F7!important;\n    }\n  }\n  // .el-tree-node.is-current{\n  //   .el-tree-node__content{\n  //     span:not(.el-tree-node__expand-icon){\n  //       color: #3471FF;\n  //     }\n  //   }\n  // }\n  .el-tree-node.is-current{\n    .el-tree-node:not(.is-expanded){\n      span:not(.el-tree-node__expand-icon){\n        color: #3471FF;\n      }\n      .el-tree-node__content{\n        //background-color: #EFF2F7!important;\n      }\n    }\n  }\n  .el-tree-node:focus{\n    >.el-tree-node__content{\n      background: none;\n    }\n  }\n  .el-tree__empty-block{\n    position: unset;\n    .el-tree__empty-text{\n      display: none;\n    }\n  }\n  .el-tree__empty-block::before{\n    content: \"\";\n    display: block;\n    width: 100%;\n    height: 180px;\n    background-image: url('../const/img/emptyImage.png');\n    background-position: center;\n    background-repeat: no-repeat;\n    position: absolute;\n    left: 50%;\n    top: calc(50% - 20px);\n    -webkit-transform: translate(-50%,-50%);\n    transform: translate(-50%,-50%);\n    color: #909399;\n    font-size: 14px;\n    background-size: 260px 123px;\n    background-repeat: no-repeat;\n    background-position: center;\n  }\n  .el-tree__empty-block::after{\n    content: \"抱歉，没有找到相关搜索内容！\";\n    position: absolute;\n    left: 50%;\n    top: calc(50% + 70px);\n    -webkit-transform: translate(-50%,-50%);\n    transform: translate(-50%,-50%);\n    color: #909399;\n    font-size: 12px;\n  }\n}\n\n// 气泡提示框\n.el-popover{\n  padding: 12px 0;\n}\n"
  },
  {
    "path": "src/styles/resetAll.scss",
    "content": "/**\n  * 统一修改\n  * 全屏弹框的表单、\n  * 表格\n  * 按钮\n*/\n\n// 全屏表单  form-fullscreen-dialog\n.form-fullscreen-dialog{\n  .el-dialog.is-fullscreen{\n    position: relative;\n    .el-dialog__header{\n      padding: 0;\n      height: 45px;\n      display: flex;\n      align-items: center;\n      .el-dialog__title{\n        font-size: 18px;\n        font-weight: 600;\n        margin-left: 30px;\n        position: relative;\n        padding-left: 20px;\n      }\n      .el-dialog__title::before{\n        position: absolute;\n        content: \"\";\n        width: 4px;\n        height: 18px;\n        background: #3471ff;\n        border-radius: 2px;\n        cursor: pointer;\n        left: 0;\n        top: 4px;\n        cursor: auto;\n      }\n      .el-dialog__headerbtn{\n        top: 12px;\n      }\n    }\n    .el-dialog__body{\n      position: absolute;\n      top: 50px;\n      width: 50%;\n      left: 25%;\n      padding: 10px 0;\n      .el-form{\n        .el-form-item{\n          .el-form-item__label-wrap{\n            .el-form-item__label{\n              font-size: 14px;\n            }\n            .el-form-item__content{\n              font-size: 14px;\n            }\n          }\n          .el-button{\n            font-size: 12px;\n            // background-color: #409eff;\n            // color: #fff;\n            // border-color: #409eff;\n          }\n          .el-button--primary{\n            background-color: #409eff;\n            color: #fff;\n          }\n        }\n      }\n      // 兼容有提示+校验 的表单项\n      .jvs-form-autoflexable{\n        .el-form-item{\n          margin-bottom: 18px;\n        }\n      }\n    }\n  }\n}\n\n// 表格\n.jvs-table{\n  .jvs-table-top{\n    .el-card__body{\n      padding: 0!important;\n      .pageheader-top{\n        display: flex;\n        height: 30px;\n        align-items: center;\n        margin-bottom: 10px;\n        .pageheader-line{\n          margin-left: 20px;\n        }\n        .title{\n          font-size: 18px;\n          font-weight: 600;\n          margin-left: 16px;\n        }\n      }\n      .search-form{\n        margin-left: 40px;\n        margin-bottom: 0;\n        .el-col{\n          margin-bottom: 10px;\n        }\n      }\n      .table-top{\n        .table-top-left{\n          margin-left: 40px;\n          .el-button{\n            //background: #409eff;\n            //border-color: #409eff;\n            background: #3471FF;\n            border-color: #3471FF;\n            color: #fff;\n            font-size: 12px;\n          }\n        }\n      }\n    }\n  }\n  .table-body-box{\n    .el-table{\n      color: #606266;\n      .el-table__header-wrapper{\n        margin-top: 26px;\n        tr{\n          th{\n            font-size: 14px;\n            color: #222;\n          }\n        }\n      }\n      .el-table__body{\n        tr{\n          td{\n            padding: 8px 0;\n          }\n        }\n      }\n      .el-table__fixed, .el-table__fixed-right{\n        margin-top: 26px;\n        box-shadow: 0 10px 10px rgba(0,0,0,0.12);\n      }\n    }\n    .el-table::before{\n      z-index: 9;\n    }\n  }\n  .jvs-table-titleTop{\n    padding: 0 10px;\n    .pageheader-top{\n      display: flex;\n      margin-bottom: 10px;\n      .pageheader-line{\n        margin-left: 30px;\n      }\n      .title{\n        margin-left: 16px;\n      }\n    }\n    .table-top{\n      .table-top-left{\n        margin-left: 50px;\n      }\n    }\n  }\n}\n\n// 表单\n.jvs-form{\n  .el-form-item{\n    .jvs-form-item{\n      min-height: 28px;\n      .is-disabled{\n        .el-input__prefix, .el-input__suffix, .el-input-number__decrease, .el-input-number__increase, .el-input-group__append{\n          display: none;\n        }\n        .el-input__inner, .el-textarea__inner{\n          border: 0;\n          background: none;\n          font-size: 14px;\n          color: #303133;\n          cursor: text;\n          padding-left: 0;\n        }\n      }\n    }\n    .form-item-tips{\n      color: #999;\n    }\n  }\n}\n\n// 树形组件\n.el-tree{\n  .el-tree-node{\n    .el-tree-node__content{\n      height: 40px;\n    }\n  }\n}\n\n// 弹框动画\n.el-dialog__wrapper {\n\ttransition-duration: .3s;\n}\n.dialog-fade-enter-active{\n\tanimation: none !important;\n}\n.dialog-fade-leave-active {\n\ttransition-duration: .15s !important;\n\tanimation: none !important;\n  }\n\n.dialog-fade-enter-active .el-dialog,\n.dialog-fade-leave-active .el-dialog{\n\tanimation-fill-mode: forwards;\n}\n\n// zoom\n.dialog-fade-enter-active .el-dialog{\n\tanimation-duration: .3s;\n\tanimation-name: anim-open;\n\tanimation-timing-function: cubic-bezier(0.6,0,0.4,1);\n}\n\n.dialog-fade-leave-active .el-dialog{\n\tanimation-duration: .3s;\n\tanimation-name: anim-close;\n}\n\n@keyframes anim-open {\n\t0% { opacity: 0;  transform: scale3d(0, 0, 1); }\n\t100% { opacity: 1; transform: scale3d(1, 1, 1); }\n}\n@keyframes anim-close {\n\t0% { opacity: 1; }\n\t100% { opacity: 0; transform: scale3d(0.5, 0.5, 1); }\n}\n"
  },
  {
    "path": "src/styles/sidebar.scss",
    "content": ".jvs-sidebar {\n  user-select: none;\n  position: relative;\n  margin-top: 64px;\n  height: 100%;\n  position: relative;\n  // 菜单背景颜色\n  // background-color: #20222a;\n  background-color: #fff;\n  transition: width .2s;\n  box-sizing: border-box;\n  box-shadow: 0px 10px 6px rgba(0, 21, 41, .35) ;\n\n  &--tip {\n    width: 90%;\n    height: 140px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    border-radius: 5px;\n    position: absolute;\n    top: 5px;\n    left: 5%;\n    color: #ccc;\n    z-index: 2;\n    text-align: center;\n    font-size: 14px;\n    background-color: rgba(0, 0, 0, .4);\n  }\n\n  .el-menu-item,\n  .el-submenu__title {\n    font-size: 12px;\n    height: 45px;\n    line-height: 45px;\n  }\n\n  .el-menu-item {\n    span, i {\n      //color:rgba(255, 255, 255, 0.7);\n    }\n\n    &:hover {\n      color: #000!important;\n      span,\n      i {\n        color: #000!important;\n      }\n      // background: #F5F5F5;\n    }\n\n    &.is-active {\n      // background-color: #f5f5f5;\n\n      span,\n      i {\n        color: #000;\n      }\n\n      &:hover {\n        // background-color: #f5f5f5;\n      }\n\n      &::before {\n        content: \" \";\n        top: 0;\n        left: 0;\n        bottom: 0;\n        width: 4px;\n        // background: $mainBg;\n        position: absolute\n      }\n    }\n  }\n\n  .el-submenu__title {\n    span, i {\n      // color:rgba(255, 255, 255, 0.7);\n      // 一级菜单字体颜色\n      color: #333;\n    }\n\n    &:hover {\n      i,\n      span {\n        // 一级菜单字体 hover 颜色\n        color: #000;\n      }\n\n      background-color: transparent;\n    }\n  }\n\n  .el-submenu .el-menu-item {\n    height: 50px;\n    line-height: 50px;\n\n    span, i {\n      // color:rgba(255, 255, 255, 0.7);\n      // 二级菜单字体颜色\n      color: #333;\n    }\n\n    &.is-active {\n      background-color: rgba(145, 160, 177, 0.5);\n\n      span,\n      i {\n        // 被选中菜单字体颜色\n        color: #1890ff\n      }\n\n      &:hover {\n        background-color: rgba(0, 0, 0, .1);\n      }\n    }\n\n    &:hover {\n      background-color: transparent;\n\n      span,\n      i {\n        // 菜单字体 hover 颜色\n        color: #1890ff;\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/styles/tags.scss",
    "content": "\n\n.jvs-tags {\n    user-select: none; \n    position: relative;\n    padding: 0 10px;\n    margin-bottom: 10px;\n    box-sizing: border-box;\n    overflow: hidden;\n    border-top: 1px solid #f6f6f6;\n    background-color: #fff;\n    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05);\n    .el-tabs--card>.el-tabs__header {\n        margin: 0;\n    }\n    .el-tabs--card>.el-tabs__header .el-tabs__nav,\n    .el-tabs--card>.el-tabs__header .el-tabs__item,\n    .el-tabs--card>.el-tabs__header {\n        border: none;\n    }\n    .el-tabs--card>.el-tabs__header .el-tabs__item:first-child {\n        border-left-width: 1px\n    }\n    .el-tabs--card>.el-tabs__header .el-tabs__item {\n        margin: 0 3px;\n        height: 40px;\n        line-height:40px;\n        font-size: 13px;\n        font-weight: normal;\n        color: #ccc;\n        &.is-active {\n            color: #409EFF;\n            border-bottom: 3px solid #409EFF;\n        }\n    }\n    .el-tabs__nav-prev,\n    .el-tabs__nav-next {\n        width: 20px;\n        line-height: 34px;\n        font-size: 18x;\n        text-align: center;\n    }\n    &__box {\n        position: relative;\n        box-sizing: border-box;\n        padding-right: 106px;\n        width: 100%;\n        &--close {\n            .el-tabs__item {\n                &:first-child {\n                    padding: 0 20px !important;\n                    .el-icon-close {\n                        display: none;\n                    }\n                }\n            }\n        }\n    }\n    &__contentmenu{\n        position: fixed;\n        width:120px;\n        background-color: #fff;\n        z-index:1024;\n        border-radius: 5px;\n        box-shadow: 1px 2px 10px #ccc;\n        .item{\n            cursor: pointer;\n            font-size: 14px;\n            padding: 8px 20px 8px 15px;\n            color: #606266;\n            &:first-child{\n                border-top-left-radius: 5px;\n                border-top-right-radius: 5px;\n            }\n            &:last-child{\n                border-bottom-left-radius: 5px;\n                border-bottom-right-radius: 5px;\n            }\n            &:hover{\n                background-color: #409EFF;\n                color:#fff;\n            }\n        }\n    }\n    &__menu {\n        position: absolute !important;\n        top: 3px;\n        right: 0;\n        padding: 1px 0 0 15px;\n        box-sizing: border-box;\n    }\n}"
  },
  {
    "path": "src/styles/themes/common/mixins.scss",
    "content": "// 主题映射方法\n@mixin themify($themes: $themes) {\n  @each $theme-name, $map in $themes {\n    .theme-#{$theme-name} & {\n      $theme-map:() !global;\n      @each $key, $value in $map {\n        $theme-map: map-merge($theme-map, ($key: $value)) !global;\n      }\n      @content;\n      $theme-map: null !global;\n    }\n  }\n}\n  \n@function themed($key) {\n  @return map-get($theme-map, $key);\n}"
  },
  {
    "path": "src/styles/themes/common/variables.scss",
    "content": "// theme\n$left-width: 295px;\n$white-color: white;\n$black-color: black;\n$font-family: 'SourceHanSansCN';\n$themes: (\n  light: (\n    back-color: #07257D,\n    left-width: 295px,\n    left-color: $white-color,\n    logo-height: 97px,\n    logo-text-color: $white-color,\n    logo-text-size: 18px,\n    logo-text-family: 'SourceHanSansCN-Bold',\n    menu-text-color: $white-color,\n    // 一级\n    meun-item-text-size: 18px,\n    // 二级\n    menu-item-item-back: #4A8FF0, // #3859BC,\n  ),\n  dark: (\n    // color variables\n    primary-color: #2977b5,\n    // header\n    header-bg-color: #e4393c,\n    header-text-color: $black-color,\n  ),\n);"
  },
  {
    "path": "src/styles/themes/index.scss",
    "content": "@import './common/variables';\n@import './common/mixins';\n\n.theme-box {\n  @include themify() {\n    color: themed('primary-color');\n  }\n\n  // 左侧栏宽\n  .jvs-left{\n    @include themify() {\n      width: themed('left-width');\n      background: themed('back-color');\n      color: themed('left-color');\n      .jvs-sidebar{\n        background: themed('back-color');\n        padding-top: themed('logo-height');\n      }\n    }\n  }\n  \n  // logo主题\n  .jvs-logo{\n    @include themify() {\n      width: themed('left-width');\n      height: themed('logo-height');\n      color: themed('logo-text-color');\n      background: themed('back-color');\n      font-family: themed('logo-text-family');\n      // logo文字\n      .jvs-logo_title{\n        font-size: themed('logo-text-size');\n        line-height: themed('logo-height');\n      }\n    }\n  }\n\n  // 左侧菜单栏\n  .el-scrollbar{\n    @include themify() {\n      .el-scrollbar__wrap{\n        margin: 0!important;\n        scrollbar-width: none; /* firefox */\n        -ms-overflow-style: none; /* IE 10+ */\n        .el-scrollbar__view{\n          .el-menu{\n            // 存在二级菜单\n            .menu-wrapper{\n              .el-submenu{\n                .el-submenu__title{\n                  i, span{\n                    color: themed('menu-text-color');\n                    font-size: themed('meun-item-text-size');\n                  }\n                }\n              }\n            }\n            // 无二级菜单\n            .el-menu-item{\n              background: themed('menu-item-item-back');\n              i, span{\n                color: themed('menu-text-color');\n              }\n            }\n            .is-active{\n              background: themed('back-color');\n            }\n            .is-active::before{\n              background: #A3BAFC;\n              width: 6px;\n            }\n          }\n        }\n      }\n    }\n    .el-scrollbar__wrap::-webkit-scrollbar {\n      display: none; /* Chrome Safari */\n    }\n  }\n}"
  },
  {
    "path": "src/styles/tiptap.scss",
    "content": ".el-tiptap-popper__menu{\n  padding: 0 12px;\n}"
  },
  {
    "path": "src/styles/tiptapView.scss",
    "content": ".htmShow .el-tiptap-editor__menu-bar{\n    display: none;\n}\n.htmShow .el-tiptap-editor__menu-bubble{\n    display: none;\n}"
  },
  {
    "path": "src/styles/top.scss",
    "content": ".jvs-top {\n    padding: 0 20px;\n    position: relative;\n    box-shadow: 0 1px 4px rgba(0,21,41,.08);\n    color: rgba(0, 0, 0, .65);\n    font-size: 28px;\n    height: 64px;\n    box-sizing: border-box;\n    white-space: nowrap;\n    .el-menu-item{\n        i,span{\n            font-size: 13px;\n        }\n    }\n}\n.jvs-breadcrumb {\n    height: 100%;\n    i{\n        font-size: 60px !important;\n    }\n    &--active {\n        transform:rotate(90deg);\n    }\n}\n\n.top-menu {\n    box-sizing: border-box;\n    .el-menu-item {\n        padding: 0 10px;\n        border:none !important;\n    }\n}\n\n.top-search {\n    line-height: 64px;\n    position: absolute !important;\n    left: 20px;\n    top:0;\n    width: 400px !important;\n    .el-input__inner {\n        font-size: 13px;\n        border: none;\n        background-color: transparent;\n    }\n}\n\n.top-bar__img {\n    margin: 0 8px 0 5px;\n    padding: 2px;\n    width: 30px;\n    height: 30px;\n    border-radius: 100%;\n    box-sizing: border-box;\n    border: 1px solid #eee;\n    vertical-align: middle;\n}\n\n.top-bar__left,\n.top-bar__right {\n    height: 64px;\n    position: absolute;\n    top: 0;\n    i{\n        line-height: 64px;\n    }\n}\n\n.top-bar__left {\n    left: 20px;\n}\n\n.top-bar__right {\n    right: 20px;\n    display: flex;\n    align-items: center;\n}\n\n.top-bar__item {\n    position: relative;\n    display: inline-block;\n    height: 64px;\n    margin:0 10px;\n    font-size: 16px;\n    &--show {\n        display: inline-block !important;\n    }\n    .el-badge__content.is-fixed{\n        top:12px;\n        right: 5px;\n    }\n}\n\n.top-bar__title {\n    height: 100%;\n    padding:0 40px;\n    box-sizing: border-box;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    font-size: inherit;\n    font-weight: 400;\n}\n"
  },
  {
    "path": "src/styles/variables.scss",
    "content": "//main\n$mainBg: #f5f5f5;\n"
  },
  {
    "path": "src/util/date.js",
    "content": "/**\n * wyQAQ\n * 1396871452@qq.com\n */\nexport const calcDate = (date1, date2) => {\n  var date3 = date2 - date1\n\n  var days = Math.floor(date3 / (24 * 3600 * 1000))\n\n  var leave1 = date3 % (24 * 3600 * 1000) // 计算天数后剩余的毫秒数\n  var hours = Math.floor(leave1 / (3600 * 1000))\n\n  var leave2 = leave1 % (3600 * 1000) // 计算小时数后剩余的毫秒数\n  var minutes = Math.floor(leave2 / (60 * 1000))\n\n  var leave3 = leave2 % (60 * 1000) // 计算分钟数后剩余的毫秒数\n  var seconds = Math.round(date3 / 1000)\n  return {\n    leave1,\n    leave2,\n    leave3,\n    days: days,\n    hours: hours,\n    minutes: minutes,\n    seconds: seconds\n  }\n}\n\n/**\n * 日期格式化\n */\nexport function dateFormat(date) {\n  let format = 'yyyy-MM-dd hh:mm:ss';\n  if (date != 'Invalid Date') {\n    var o = {\n      \"M+\": date.getMonth() + 1, //month\n      \"d+\": date.getDate(), //day\n      \"h+\": date.getHours(), //hour\n      \"m+\": date.getMinutes(), //minute\n      \"s+\": date.getSeconds(), //second\n      \"q+\": Math.floor((date.getMonth() + 3) / 3), //quarter\n      \"S\": date.getMilliseconds() //millisecond\n    }\n    if (/(y+)/.test(format)) format = format.replace(RegExp.$1,\n      (date.getFullYear() + \"\").substr(4 - RegExp.$1.length));\n    for (var k in o)\n      if (new RegExp(\"(\" + k + \")\").test(format))\n        format = format.replace(RegExp.$1,\n          RegExp.$1.length == 1 ? o[k] :\n            (\"00\" + o[k]).substr((\"\" + o[k]).length));\n    return format;\n  }\n  return '';\n\n}\n"
  },
  {
    "path": "src/util/eventBus.js",
    "content": "import Vue from 'vue';\nimport {declare} from '@/views/common/draw'\nexport default new Vue();\nwindow.onload = function() {\n  declare()\n}"
  },
  {
    "path": "src/util/login.js",
    "content": "/**\n * wyQAQ\n * 1396871452@qq.com\n */\nimport Vue from 'vue'\nimport loginForm from '@/components/basic-container/login/loginForm.vue'\nconst loginFormBox = Vue.extend(loginForm)\nloginForm.install = function (data) {\n  let instance = new loginFormBox({data})\n  instance.$store = this.$root.$store\n  instance.$mount()\n\n  document.body.appendChild(instance.$el)\n\n  Vue.nextTick(() => {\n    instance.init()\n  })\n}\n\nexport default loginForm"
  },
  {
    "path": "src/util/permision.js",
    "content": "import store from '@/store'\nexport default {\n  install (Vue, options) {\n    // 权限匹配\n    /**\n     * \n     * @param {String} str 权限标识\n     */\n    Vue.prototype.$permissionMatch = function (str) {\n      // 超级管理员具备所有权限\n      if(store.getters.userInfo.adminFlag) {\n        return true\n      }\n      let t = false;\n      if(!store.getters.permissions) {\n        return false\n      }\n      if (store.getters.permissions.indexOf(str) == -1) {\n        if (!str || str == '') {\n          t = true;\n        }else {\n          t = false\n        }\n      } else {\n        t = true\n      }\n      return t\n    }\n    // 根据权限标识返回对应中文名\n    /**\n     * \n     * @param {String} flag 权限标识\n     * @param {String} text 默认文字，即匹配失败或无需匹配时的显示\n     */ \n    Vue.prototype.$permissionLabel = function (flag, text) {\n      let temp = text\n      if(store.state.user && store.state.user.permissions) {\n        let keys = Object.keys(store.state.user.permissions)\n        if(keys.indexOf(flag) > -1 && store.state.user.permissions[flag]) {\n          temp = store.state.user.permissions[flag]\n        }\n      }\n      return temp\n    }\n  }\n}"
  },
  {
    "path": "src/util/store.js",
    "content": "/**\n * wyQAQ\n * 1396871452@qq.com\n */\nimport {\n  validatenull\n} from '@/util/validate'\nimport website from '@/const/website'\n\nconst keyName = website.key + '-';\n/**\n * 存储localStorage\n */\nexport const setStore = (params = {}) => {\n  let {\n    name,\n    content,\n    type,\n  } = params;\n  name = keyName + name\n  let obj = {\n    dataType: typeof (content),\n    content: content,\n    type: type,\n    datetime: new Date().getTime()\n  }\n  localStorage.setItem(name, JSON.stringify(obj));\n}\n/**\n * 获取localStorage\n */\n\nexport const getStore = (params = {}) => {\n  let {\n    name,\n    debug,\n    type\n  } = params;\n  name = keyName + name\n  let obj = {},content;\n  obj = localStorage.getItem(name);\n  if (validatenull(obj)) {\n    if(type){\n      return;\n    }else{\n      obj = localStorage.getItem(name);\n    }\n  }else{\n    try {\n      obj = JSON.parse(obj);\n    } catch{\n      return obj;\n    }\n    if (debug) {\n      return obj;\n    }\n    if (obj.dataType == 'string') {\n      content = obj.content;\n    } else if (obj.dataType == 'number') {\n      content = Number(obj.content);\n    } else if (obj.dataType == 'boolean') {\n      content = eval(obj.content);\n    } else if (obj.dataType == 'object') {\n      content = obj.content;\n    }\n    return content;\n  }\n}\n/**\n * 删除localStorage\n */\nexport const removeStore = (params = {}) => {\n  let {\n    name,\n    type\n  } = params;\n  name = keyName + name\n  sessionStorage.removeItem(name);\n  localStorage.removeItem(name);\n}\n\n/**\n * 获取全部localStorage\n */\nexport const getAllStore = (params = {}) => {\n  let list = [];\n  let {\n    type\n  } = params;\n  for (let i = 0; i <= localStorage.length; i++) {\n    list.push({\n      name: localStorage.key(i),\n      content: getStore({\n        name: localStorage.key(i),\n      })\n    })\n\n  }\n  return list;\n\n}\n\n/**\n * 清空全部localStorage\n */\nexport const clearStore = (params = {}) => {\n  let { type } = params;\n  sessionStorage.clear();\n  localStorage.clear()\n}\n"
  },
  {
    "path": "src/util/url.js",
    "content": "/**\n * wyQAQ\n * 1396871452@qq.com\n */\nimport Vue from 'vue'\nexport default {\n  install (Vue, options) {\n    // 打开链接 用于 预览、下载、打开地址\n    Vue.prototype.$openUrl=function (url, type) {\n      let typeTemp='_blank'\n      if (type) {\n        typeTemp=type\n      }\n      if (url) {\n        let link=document.createElement('a')\n        link.style.display='none'\n        link.target=typeTemp\n        link.href=url\n        document.body.appendChild(link)\n        link.click()\n        document.body.removeChild(link)\n      }\n    }\n  }\n}"
  },
  {
    "path": "src/util/util.js",
    "content": "import {validatenull} from './validate'\nimport request from '@/router/axios'\nimport * as CryptoJS from'crypto-js'\n\n// 表单序列化\nexport const serialize = data => {\n  let list = []\n  Object.keys(data).forEach(ele => {\n    list.push(`${ele}=${data[ele]}`)\n  })\n  return list.join('&')\n}\nexport const getObjType = obj => {\n  var toString = Object.prototype.toString\n  var map = {\n    '[object Boolean]': 'boolean',\n    '[object Number]': 'number',\n    '[object String]': 'string',\n    '[object Function]': 'function',\n    '[object Array]': 'array',\n    '[object Date]': 'date',\n    '[object RegExp]': 'regExp',\n    '[object Undefined]': 'undefined',\n    '[object Null]': 'null',\n    '[object Object]': 'object'\n  }\n  if (obj instanceof Element) {\n    return 'element'\n  }\n  return map[toString.call(obj)]\n}\n/**\n * 对象深拷贝\n */\nexport const deepClone = data => {\n  var type = getObjType(data)\n  var obj\n  if (type === 'array') {\n    obj = []\n  } else if (type === 'object') {\n    obj = {}\n  } else {\n    // 不再具有下一层次\n    return data\n  }\n  if (type === 'array') {\n    for (var i = 0, len = data.length; i < len; i++) {\n      obj.push(deepClone(data[i]))\n    }\n  } else if (type === 'object') {\n    for (var key in data) {\n      obj[key] = deepClone(data[key])\n    }\n  }\n  return obj\n}\n/**\n * 判断路由是否相等\n */\nexport const diff = (obj1, obj2) => {\n  delete obj1.close\n  var o1 = obj1 instanceof Object\n  var o2 = obj2 instanceof Object\n  if (!o1 || !o2) { /*  判断不是对象  */\n    return obj1 === obj2\n  }\n\n  if (Object.keys(obj1).length !== Object.keys(obj2).length) {\n    return false\n    // Object.keys() 返回一个由对象的自身可枚举属性(key值)组成的数组,例如：数组返回下表：let arr = [\"a\", \"b\", \"c\"];console.log(Object.keys(arr))->0,1,2;\n  }\n\n  for (var attr in obj1) {\n    var t1 = obj1[attr] instanceof Object\n    var t2 = obj2[attr] instanceof Object\n    if (t1 && t2) {\n      return diff(obj1[attr], obj2[attr])\n    } else if (obj1[attr] !== obj2[attr]) {\n      return false\n    }\n  }\n  return true\n}\n/**\n * 设置灰度模式\n */\nexport const toggleGrayMode = (status) => {\n  if (status) {\n    document.body.className = document.body.className + ' grayMode'\n  } else {\n    document.body.className = document.body.className.replace(' grayMode', '')\n  }\n}\n/**\n * 设置主题\n */\nexport const setTheme = (name) => {\n  document.body.className = name\n}\n\n/**\n *加密处理\n */\nexport const encryption = (params) => {\n  let {\n    data,\n    type,\n    param,\n    key\n  } = params\n  const result = JSON.parse(JSON.stringify(data))\n  if (type === 'Base64') {\n    param.forEach(ele => {\n      result[ele] = btoa(result[ele])\n    })\n  } else {\n    param.forEach(ele => {\n      var data = result[ele]\n      key = CryptoJS.enc.Utf8.parse(key)\n      var iv = key\n      // 加密\n      var encrypted = CryptoJS.AES.encrypt(\n        data,\n        key, {\n          iv: iv,\n          mode: CryptoJS.mode.CBC,\n          padding: CryptoJS.pad.ZeroPadding\n        })\n      result[ele] = encrypted.ciphertext.toString()\n    })\n  }\n  return result\n}\n\n/**\n *解密处理\n */\nexport const decryption = (params) => {\n  let {\n    data,\n    type,\n    param,\n    key\n  } = params\n  const result = JSON.parse(JSON.stringify(data))\n  if (type === 'Base64') {\n    param.forEach(ele => {\n      result[ele] = btoa(result[ele])\n    })\n  } else {\n    param.forEach(ele => {\n      var data = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Hex.parse(result[ele]))\n      key = CryptoJS.enc.Utf8.parse(key)\n      var iv = key\n      // 解密\n      let decrypted = CryptoJS.AES.decrypt(\n        data,\n        key, {\n          iv: iv,\n          mode: CryptoJS.mode.CBC,\n          padding: CryptoJS.pad.ZeroPadding\n      })\n      result[ele] = decrypted.toString(CryptoJS.enc.Utf8)\n    })\n  }\n  return result\n}\n\n/**\n * 浏览器判断是否全屏\n */\nexport const fullscreenToggel = () => {\n  if (fullscreenEnable()) {\n    exitFullScreen();\n  } else {\n    reqFullScreen();\n  }\n};\n/**\n * esc监听全屏\n */\nexport const listenfullscreen = (callback) => {\n  function listen() {\n    callback()\n  }\n  document.addEventListener(\"fullscreenchange\", function () {\n    listen();\n  });\n  document.addEventListener(\"mozfullscreenchange\", function () {\n    listen();\n  });\n  document.addEventListener(\"webkitfullscreenchange\", function () {\n    listen();\n  });\n  document.addEventListener(\"msfullscreenchange\", function () {\n    listen();\n  });\n};\n/**\n * 浏览器判断是否全屏\n */\nexport const fullscreenEnable = () => {\n  return document.isFullScreen || document.mozIsFullScreen || document.webkitIsFullScreen\n}\n\n/**\n * 浏览器全屏\n */\nexport const reqFullScreen = () => {\n  if (document.documentElement.requestFullScreen) {\n    document.documentElement.requestFullScreen();\n  } else if (document.documentElement.webkitRequestFullScreen) {\n    document.documentElement.webkitRequestFullScreen();\n  } else if (document.documentElement.mozRequestFullScreen) {\n    document.documentElement.mozRequestFullScreen();\n  }\n};\n/**\n * 浏览器退出全屏\n */\nexport const exitFullScreen = () => {\n  if (document.documentElement.requestFullScreen) {\n    document.exitFullScreen();\n  } else if (document.documentElement.webkitRequestFullScreen) {\n    document.webkitCancelFullScreen();\n  } else if (document.documentElement.mozRequestFullScreen) {\n    document.mozCancelFullScreen();\n  }\n};\n/**\n * 递归寻找子类的父类\n */\n\nexport const findParent = (menu, id) => {\n  for (let i = 0; i < menu.length; i++) {\n    if (menu[i].children.length != 0) {\n      for (let j = 0; j < menu[i].children.length; j++) {\n        if (menu[i].children[j].id == id) {\n          return menu[i]\n        } else {\n          if (menu[i].children[j].children.length != 0) {\n            return findParent(menu[i].children[j].children, id)\n          }\n        }\n      }\n    }\n  }\n}\n\n/**\n * 动态插入css\n */\n\nexport const loadStyle = url => {\n  const link = document.createElement('link')\n  link.type = 'text/css'\n  link.rel = 'stylesheet'\n  link.href = url\n  const head = document.getElementsByTagName('head')[0]\n  head.appendChild(link)\n}\n/**\n * 判断路由是否相等\n */\nexport const isObjectValueEqual = (a, b) => {\n  let result = true\n  Object.keys(a).forEach(ele => {\n    const type = typeof (a[ele])\n    if (type === 'string' && a[ele] !== b[ele]) result = false\n    else if (type === 'object' && JSON.stringify(a[ele]) !== JSON.stringify(b[ele])) result = false\n  })\n  return result\n}\n/**\n * 根据字典的value显示label\n */\nexport const findByvalue = (dic, value) => {\n  let result = ''\n  if (validatenull(dic)) return value\n  if (typeof (value) === 'string' || typeof (value) === 'number' || typeof (value) === 'boolean') {\n    let index = 0\n    index = findArray(dic, value)\n    if (index != -1) {\n      result = dic[index].label\n    } else {\n      result = value\n    }\n  } else if (value instanceof Array) {\n    result = []\n    let index = 0\n    value.forEach(ele => {\n      index = findArray(dic, ele)\n      if (index != -1) {\n        result.push(dic[index].label)\n      } else {\n        result.push(value)\n      }\n    })\n    result = result.toString()\n  }\n  return result\n}\n/**\n * 根据字典的value查找对应的index\n */\nexport const findArray = (dic, value) => {\n  for (let i = 0; i < dic.length; i++) {\n    if (dic[i].value == value) {\n      return i\n    }\n  }\n  return -1\n}\n/**\n * 生成随机len位数字\n */\nexport const randomLenNum = (len, date) => {\n  let random = ''\n  random = Math.ceil(Math.random() * 100000000000000).toString().substr(0, len || 4)\n  if (date) random = random + Date.now()\n  return random\n}\n/**\n * 格式化时间字符串\n */\nexport const formatDateTime = (val, type) => {\n  let str = ''\n  if(typeof val == 'object') {\n    let Y = val.getFullYear()\n    let M = val.getMonth()\n    let D = val.getDay()\n    let h = val.getHours()\n    let m = val.getMinutes()\n    let s = val.getSeconds()\n    if(type == 'yyyy-MM-dd hh:mm:ss') {\n      str = Y + '-' + ( M<10?('0'+M) : M ) + '-' + ( D<10?('0'+D) : D) + ' ' + (h<10?('0'+h) : h) + ':' + (m<10?('0'+m) : m) + ':' + (s<10?('0'+s) : s)\n    }\n  }\n}\n/**\n * 去除对象中的空值参数，null和undefined\n */\nexport const noEmptyOfObject = (obj) => {\n  if(typeof obj == 'object') {\n    if(obj instanceof Array) {\n      return obj\n    }else{\n      let temp = {}\n      for(let i in obj) {\n        if(obj[i] || obj[i] == false || obj[i] == 0) {\n          temp[i] = obj[i]\n        }\n      }\n      return temp\n    }\n  }else{\n    return obj\n  }\n}\n\nexport const consoleDraw = (str, style) => {\n  console.log(str, ...style)\n}"
  },
  {
    "path": "src/util/validate.js",
    "content": "/**\n * wyQAQ\n * 1396871452@qq.com\n */\n/**\n * 邮箱\n * @param {*} s\n */\nexport function isEmail (s) {\n  return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)\n}\n\n/**\n * 手机号码\n * @param {*} s\n */\nexport function isMobile (s) {\n  return /^1[0-9]{10}$/.test(s)\n}\n\n/**\n * 电话号码\n * @param {*} s\n */\nexport function isPhone (s) {\n  return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)\n}\n\n/**\n * URL地址\n * @param {*} s\n */\nexport function isURL (s) {\n  return /^http[s]?:\\/\\/.*/.test(s)\n}\n\nexport function isvalidUsername (str) {\n  const valid_map = ['admin', 'editor']\n  return valid_map.indexOf(str.trim()) >= 0\n}\n\n/* 合法uri */\nexport function validateURL (textval) {\n  const urlregex = /^(https?|ftp):\\/\\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+\\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\\/($|[a-zA-Z0-9.,?'\\\\+&%$#=~_-]+))*$/\n  return urlregex.test(textval)\n}\n\n/* 小写字母 */\nexport function validateLowerCase (str) {\n  const reg = /^[a-z]+$/\n  return reg.test(str)\n}\n\n/* 大写字母 */\nexport function validateUpperCase (str) {\n  const reg = /^[A-Z]+$/\n  return reg.test(str)\n}\n\n/* 大小写字母 */\nexport function validatAlphabets (str) {\n  const reg = /^[A-Za-z]+$/\n  return reg.test(str)\n}\n\n/* 验证pad还是pc */\nexport const vaildatePc = function () {\n  const userAgentInfo = navigator.userAgent\n  const Agents = ['Android', 'iPhone',\n    'SymbianOS', 'Windows Phone',\n    'iPad', 'iPod'\n  ]\n  let flag = true\n  for (var v = 0; v < Agents.length; v++) {\n    if (userAgentInfo.indexOf(Agents[v]) > 0) {\n      flag = false\n      break\n    }\n  }\n  return flag\n}\n\n/**\n * validate email\n * @param email\n * @returns {boolean}\n */\nexport function validateEmail (email) {\n  const re = /^(([^<>()\\\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n  return re.test(email)\n}\n\n/**\n * 判断身份证号码\n */\nexport function cardid (code) {\n  let list = []\n  let result = true\n  let msg = ''\n  var city = {\n    11: '北京',\n    12: '天津',\n    13: '河北',\n    14: '山西',\n    15: '内蒙古',\n    21: '辽宁',\n    22: '吉林',\n    23: '黑龙江 ',\n    31: '上海',\n    32: '江苏',\n    33: '浙江',\n    34: '安徽',\n    35: '福建',\n    36: '江西',\n    37: '山东',\n    41: '河南',\n    42: '湖北 ',\n    43: '湖南',\n    44: '广东',\n    45: '广西',\n    46: '海南',\n    50: '重庆',\n    51: '四川',\n    52: '贵州',\n    53: '云南',\n    54: '西藏 ',\n    61: '陕西',\n    62: '甘肃',\n    63: '青海',\n    64: '宁夏',\n    65: '新疆',\n    71: '台湾',\n    81: '香港',\n    82: '澳门',\n    91: '国外 '\n  }\n  if (!validatenull(code)) {\n    if (code.length == 18) {\n      if (!code || !/(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)/.test(code)) {\n        msg = '证件号码格式错误'\n      } else if (!city[code.substr(0, 2)]) {\n        msg = '地址编码错误'\n      } else {\n        // 18位身份证需要验证最后一位校验位\n        code = code.split('')\n        // ∑(ai×Wi)(mod 11)\n        // 加权因子\n        var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]\n        // 校验位\n        var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2, 'x']\n        var sum = 0\n        var ai = 0\n        var wi = 0\n        for (var i = 0; i < 17; i++) {\n          ai = code[i]\n          wi = factor[i]\n          sum += ai * wi\n        }\n        if (parity[sum % 11] != code[17]) {\n          msg = '证件号码校验位错误'\n        } else {\n          result = false\n        }\n      }\n    } else {\n      msg = '证件号码长度不为18位'\n    }\n  } else {\n    msg = '证件号码不能为空'\n  }\n  list.push(result)\n  list.push(msg)\n  return list\n}\n\n/**\n * 判断手机号码是否正确\n */\nexport function isvalidatemobile (phone) {\n  let list = []\n  let result = true\n  let msg = ''\n  var isPhone = /^0\\d{2,3}-?\\d{7,8}$/\n  // 增加134 减少|1349[0-9]{7}，增加181,增加145，增加17[678]\n  if (!validatenull(phone)) {\n    if (phone.length == 11) {\n      if (isPhone.test(phone)) {\n        msg = '手机号码格式不正确'\n      } else {\n        result = false\n      }\n    } else {\n      msg = '手机号码长度不为11位'\n    }\n  } else {\n    msg = '手机号码不能为空'\n  }\n  list.push(result)\n  list.push(msg)\n  return list\n}\n\n/**\n * 判断姓名是否正确\n */\nexport function validatename (name) {\n  var regName = /^[\\u4e00-\\u9fa5]{2,4}$/\n  if (!regName.test(name)) return false\n  return true\n}\n\n/**\n * 判断是否为整数\n */\nexport function validatenum (num, type) {\n  let regName = /[^\\d.]/g\n  if (type == 1) {\n    if (!regName.test(num)) return false\n  } else if (type == 2) {\n    regName = /[^\\d]/g\n    if (!regName.test(num)) return false\n  }\n  return true\n}\n\n/**\n * 判断是否为小数\n */\nexport function validatenumord (num, type) {\n  let regName = /[^\\d.]/g\n  if (type == 1) {\n    if (!regName.test(num)) return false\n  } else if (type == 2) {\n    regName = /[^\\d.]/g\n    if (!regName.test(num)) return false\n  }\n  return true\n}\n\n/**\n * 判断是否为空\n */\nexport function validatenull (val) {\n  if (typeof val === 'boolean') {\n    return false\n  }\n  if (typeof val === 'number') {\n    return false\n  }\n  if (val instanceof Array) {\n    if (val.length == 0) return true\n  } else if (val instanceof Object) {\n    if (JSON.stringify(val) === '{}') return true\n  } else {\n    if (val == 'null' || val == null || val == 'undefined' || val == undefined || val == '') return true\n    return false\n  }\n  return false\n}\n"
  },
  {
    "path": "src/views/catalogview/index.vue",
    "content": "<template>\n  <div class=\"catalogview\">\n    <div class=\"top\">\n      <div class=\"left\">\n        <figure>\n          <img src=\"@/views/catalogview/img/folder.png\" alt=\"\" />\n          <figcaption>{{ this.nodeInfo.name }}</figcaption>\n          <span>共计{{ fileNum }}篇</span>\n        </figure>\n        <div class=\"line1\"></div>\n        <el-input\n          class=\"serch\"\n          placeholder=\"搜索当前目录内容\"\n          prefix-icon=\"el-icon-search\"\n          v-model=\"folderSerch\"\n          @keyup.enter.native=\"searchHandle\"\n        >\n        </el-input>\n      </div>\n      <img src=\"@/views/catalogview/img/folder-logo.png\" alt=\"\" />\n    </div>\n    <div class=\"search-boxss\" v-if=\"isSearch\">\n      <searchTool\n        :id=\"nodeInfo.id + ''\"\n        :keyword=\"folderSerch\"\n        @openDoc=\"openDoc\"\n      ></searchTool>\n    </div>\n    <div v-else>\n      <h2>最近更新</h2>\n      <div class=\"container\">\n        <p v-if=\"updateList.length==0\" style=\"font-size:16px\">暂无更新</p>\n        <div\n          class=\"commentData\"\n          v-for=\"(item, i) in updateList\"\n          :key=\"i\"\n          @click=\"openFile(item)\"\n        >\n          <div style=\"display: flex; align-items: center\">\n            <img :src=\"item.headImg ? item.headImg : userImg\" alt=\"\" />\n            <div class=\"coContent\">\n              <h3>{{ item.realName }}</h3>\n              <p>更新了 \"{{ item.name }}\"文件</p>\n            </div>\n          </div>\n          <div class=\"time\">\n            <i class=\"iconfont icon-shijian\" style=\"color: #868ba1\"></i>\n            {{ item.createTime }}\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport user from \"@/views/common/img/user.png\";\nimport { getLibEditLog } from \"@/views/view/api\";\nimport searchTool from \"@/views/common/search\";\nimport \"@/views/info/icon/iconfont.css\";\nexport default {\n  props: {\n    nodeInfo: {\n      type: Object,\n      default: () => {\n        return {};\n      },\n    },\n  },\n  components: { searchTool },\n  data() {\n    return {\n      userImg: user,\n      folderSerch: \"\",\n      updateList: [],\n      isSearch: false,\n      fileNum: 0, //文件数\n    };\n  },\n  methods: {\n    download() {\n      // console.log('1')\n    },\n    // 搜索\n    searchHandle() {\n      if (this.folderSerch && this.folderSerch.replace(/^(\\s|\\xA0)+|(\\s|\\xA0)+$/g, '')) {\n        this.isSearch = true;\n      } else {\n        this.isSearch = false;\n      }\n    },\n    openDoc(item) {\n      this.$emit(\"openDoc\", item);\n      this.isSearch = false;\n    },\n    openFile(item) {\n      this.$emit(\"openFile\", item);\n    },\n  },\n  created() {\n    let list = [];\n    let run = function (data) {\n      if(data){\n        data.forEach((item) => {\n          list.push(item);\n          if (item.children) {\n            run(item.children);\n          }\n        });\n      }\n    };\n    run(this.nodeInfo.children);\n    let newList = list.filter((item) => !item.children);\n    this.fileNum = newList.length;\n\n    getLibEditLog({ id: this.nodeInfo.id, size: 10 }).then((res) => {\n      if (res.data.code == 0) {\n        this.updateList = res.data.data;\n      }\n    });\n  },\n  watch: {\n    folderSerch: {\n      handler(newVal, oldVal) {\n        if(newVal && newVal.replace(/^(\\s|\\xA0)+|(\\s|\\xA0)+$/g, '')) {\n          this.isSearch = true;\n        }else{\n          this.isSearch = false;\n        }\n      },\n    },\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.catalogview {\n  padding: 40px;\n}\n.catalogview .top {\n  display: flex;\n  justify-content: space-between;\n}\n.catalogview .search-boxss{\n  padding: 30px 40px;\n}\n.catalogview .top figure {\n  display: flex;\n  align-items: center;\n}\n.catalogview .top figure span {\n  font-size: 20px;\n  color: #868ba1;\n  margin-left: 40px;\n  white-space: nowrap;\n}\nfigcaption {\n  margin-left: 33px;\n  min-width: 300px;\n  max-width: 600px;\n  font-size: 30px;\n  font-weight: 400;\n  text-overflow: -o-ellipsis-lastline;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  display: -webkit-box;\n  -webkit-line-clamp: 2;\n  line-clamp: 2;\n  -webkit-box-orient: vertical;\n}\n.serch {\n  width: 389px;\n  height: 45px;\n  margin-top: 40px;\n}\n/deep/.serch > .el-input__inner {\n  height: 45px;\n  font-size: 16px;\n  font-family: Source Han Sans CN;\n  font-weight: 400;\n  line-height: 27px;\n  color: #868ba1;\n  padding-left: 40px;\n  border-color: #f3f3f3;\n  border-radius: 30px;\n  outline: none;\n  background: #f3f3f3;\n}\n/deep/.serch > .el-input__prefix {\n  left: 15px;\n}\n/deep/.serch > .el-input__prefix i {\n  font-size: 20px;\n  line-height: 45px;\n}\n.line1 {\n  height: 1px;\n  background: #eeeeee;\n  margin-top: 70px;\n}\n.catalogview h2 {\n  font-size: 20px;\n  font-weight: 500;\n  margin: 30px 0;\n}\n.commentData {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  //margin-bottom: 30px;\n  //background: #f6f6f6;\n  padding: 10px 20px;\n  cursor: pointer;\n  &:hover{\n    background: #EFF2F7;\n  }\n}\n.commentData img {\n  //margin-top: -24px;\n  width: 40px;\n  height: 40px;\n  border-radius: 50%;\n}\n.commentData .coContent {\n  margin-left: 30px;\n  width: 100%;\n}\n.commentData .coContent h3 {\n  font-size: 20px;\n  line-height: 25px;\n  font-weight: 500;\n  margin-bottom: 0;\n}\n.commentData .coContent p {\n  font-size: 14px;\n  line-height: 25px;\n  font-weight: 400;\n  margin-bottom: 0;\n  //margin-top: 17px;\n  width: 100%;\n  color: #868ba1;\n}\n.commentData .time {\n  font-size: 14px;\n  color: #868ba1;\n}\n</style>\n"
  },
  {
    "path": "src/views/common/Comment.vue",
    "content": "<template>\n  <div class=\"communication\">\n    <ul style=\"position:relative\">\n      <li>\n        <i class=\"iconfont icon-renyuan\" style=\"color: #868ba1\"></i>\n        {{ pageInfo.author }}\n      </li>\n      <li>\n        <i class=\"iconfont icon-yanjing\" style=\"color: #868ba1\"></i>\n        {{ previewTimes }}\n      </li>\n      <li>\n        <i class=\"iconfont icon-shijian\" style=\"color: #868ba1\"></i>\n        {{ pageInfo.createTime }}\n      </li>\n      <li class=\"editRecord\" style=\"margin-right:0\">\n        <i class=\"iconfont icon-icon\" style=\"color: #868ba1;cursor:pointer;\"></i>\n        <span style=\"cursor:pointer;margin-left:5px;\">编辑记录</span>\n        <ul class=\"recordList\">\n          <li v-for=\"(item,i) in editList\" :key=\"i\">\n            <span class=\"editName\">{{item.userName}}</span>\n            <span style=\"color:#868BA1\">{{item.createTime}}</span>\n          </li>\n          <p v-if=\"!editList.length\" style=\"text-align:center;margin-bottom:0\">暂无编辑记录</p>\n        </ul>\n      </li>\n    </ul>\n    <div class=\"dianzan\">\n      <i\n        :class=\"[\n          show ? 'iconfont icon-dianzan active' : 'iconfont icon-dianzan',\n        ]\"\n        @click=\"giveLike('LIBRARY', nodeInfo.id)\"\n      ></i>\n      <p>若有收获，就点个赞吧</p>\n      <figure v-for=\"(item, i) in likeList\" :key=\"i\" style=\"text-algin: center\">\n        <img :src=\"item.headImg ? item.headImg : userImg\" alt=\"\" />\n        <figcaption>{{ item.realName }}</figcaption>\n      </figure>\n    </div>\n    <h2>评论</h2>\n    <div class=\"container\">\n      <p v-if=\"commentList.length == 0\">暂无评论</p>\n      <div class=\"commentData\" v-for=\"(item, i) in commentList\" :key=\"i\">\n        <img :src=\"item.headImg ? item.headImg : userImg\" alt=\"\" />\n        <div style=\"margin-left: 70px;width:100%\">\n          <div style=\"display: flex; justify-content: space-between\">\n            <h3>{{ item.name }}</h3>\n            <span class=\"rtime\">{{item.createTime}}</span>\n          </div>\n          <p class=\"connt\">\n            {{ item.message }}\n          </p>\n          <i\n            :class=\"[\n              item.currentUserLike\n                ? 'iconfont icon-dianzan active'\n                : 'iconfont icon-dianzan',\n            ]\"\n            @click=\"cmmitLick('COMMENT', item.id)\"\n          ></i>\n          <sup>{{ item.likeTotal }}</sup>\n          <span class=\"deleteTalk\" @click=\"deleteMsg(item.id)\" v-if=\"userIno.id==item.userId || userIno.id==nodeInfo.createById\">\n            <i class=\"iconfont icon-shanchu\"></i>\n            <span\n              style=\"\n                font-size: 16px;\n                font-weight: 400;\n                color: #868BA1;\n                margin-left: 5px;\n              \"\n              >删除</span\n            >\n          </span>\n        </div>\n      </div>\n      <span v-if=\"commentList.length != 0 && size < total\" @click=\"loadMore\"\n        >加载更多评论</span\n      >\n    </div>\n    <div class=\"write\">\n      <img :src=\"userIno && userIno.headImg ? userIno.headImg : userImg\" alt=\"\" />\n      <el-form ref=\"form\" :model=\"form\" :rules=\"rules\" label-width=\"70px\">\n        <el-form-item prop=\"comment\">\n          <el-input\n            type=\"textarea\"\n            maxlength=\"500\"\n            show-word-limit\n            v-model=\"form.comment\"\n            placeholder=\"发表评论...\"\n            resize=\"none\"\n            :rows=\"3\"\n          ></el-input>\n        </el-form-item>\n        <el-form-item>\n          <el-button type=\"primary\" @click=\"onSubmit\">发表</el-button>\n        </el-form-item>\n      </el-form>\n    </div>\n  </div>\n</template>\n\n<script>\nimport \"@/views/info/icon/iconfont.css\";\nimport user from \"@/views/common/img/user.png\";\nimport {\n  readNumber,\n  getLike,\n  giveGood,\n  getComment,\n  leaveMsg,\n  delMsg,\n  editLog\n} from \"@/views/common/api\";\nimport { getStore } from \"@/util/store.js\";\nexport default {\n  components: {},\n  props: {\n    nodeInfo: {\n      type: Object,\n      default: () => {\n        return {};\n      },\n    },\n    pageInfo: {\n      type: Object,\n      default: () =>{\n        return {};\n      },\n    },\n  },\n  data() {\n    var checkAge = (rule, value, callback) => {\n      if (!value) {\n        return callback(new Error('输入内容不能为空'));\n      }else if($.trim(value)==''){\n        return callback(new Error('输入内容不能为空'));\n      }else{\n        callback();\n      }\n    }\n    return {\n      userImg: user,\n      form: {\n        comment: \"\",\n      },\n      previewTimes: null, //预览次数\n      likeList: [], //点赞列表\n      editList:[],   //编辑列表\n      commentList: [], //评论列表\n      total: null, //评论总条数\n      // userId:null,       //当前用户ID\n      userIno: {},\n      show: false,\n      size: 5, //页条数\n      rules: {\n        comment: [\n          { validator: checkAge, trigger: 'blur' }\n        ],\n      }\n    };\n  },\n  methods: {\n    // 删除留言\n    deleteMsg(id){\n      this.$confirm('确定要删除此评论吗？','提示',{\n        confirmButtonText: '确定',\n        cancelButtonText: '取消',\n        type: 'warning'\n      }).then(()=>{\n        delMsg(id).then(res=>{\n          if(res.data.code==0){\n            this.getTalk(this.nodeInfo.id)\n          }\n        })\n      }).catch(e=>{})\n    },\n    // 加载更多\n    loadMore() {\n      this.size += 5;\n      this.getTalk(this.nodeInfo.id);\n    },\n    // 评论点赞方法\n    cmmitLick(type, id) {\n      giveGood({ bizType: type, bizResourceId: id }).then((res) => {\n        if (res.data.code == 0) {\n          this.getTalk(this.nodeInfo.id);\n        }\n      });\n    },\n    // 文件点赞方法\n    giveLike(type, id) {\n      giveGood({ bizType: type, bizResourceId: id }).then((res) => {\n        if (res.data.code == 0) {\n          this.getL({ bizType: \"LIBRARY\", bizResourceId: this.nodeInfo.id });\n        }\n      });\n    },\n    onSubmit() {\n      this.$refs['form'].validate((valid) => {\n          if (valid) {\n            // 添加留言\n            let query = {\n              knowledgeId: this.nodeInfo.id,\n              message: this.form.comment,\n            };\n            leaveMsg(query).then((res) => {\n              if (res.data.code == 0) {\n                this.getTalk(this.nodeInfo.id);\n                this.form.comment = \"\";\n              }\n            });\n          } else {\n            return false;\n          }\n        });\n    },\n    //获取文件已读次数\n    readN(num) {\n      readNumber(num).then((res) => {\n        if (res.data.code == 0) {\n          this.previewTimes = res.data.data;\n        }\n      });\n    },\n    // 获取文档编辑记录\n    editData(num){\n      editLog({id:num,size:1000}).then((res)=>{\n        if (res.data.code == 0) {\n          this.editList = res.data.data.records;\n        }\n      })\n    },\n    // 获取文件点赞列表\n    getL(query) {\n      getLike(query).then((res) => {\n        if (res.data.code == 0) {\n          this.likeList = res.data.data;\n          if (this.likeList.length > 0) {\n            for(var i=0;i<this.likeList.length;i++){\n              if (this.likeList[i].userId == this.userIno.id) {\n                this.show = true;\n                break;\n              } else {\n                this.show = false;\n              }\n            }\n          } else {\n            this.show = false;\n          }\n        }\n      });\n    },\n    //获取文档留言分页\n    getTalk(num) {\n      getComment(num, { size: this.size, currentPage: 1 }).then((res) => {\n        if (res.data.code == 0) {\n          this.commentList = res.data.data.records;\n          this.total = res.data.data.total;\n        }\n      });\n    },\n  },\n  created() {\n    this.userIno = getStore({ name: \"userInfo\" });\n    this.readN(this.nodeInfo.id);\n    this.editData(this.nodeInfo.id);\n    this.getL({ bizType: \"LIBRARY\", bizResourceId: this.nodeInfo.id });\n    this.getTalk(this.nodeInfo.id);\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\nul {\n  list-style-type: none;\n  margin-bottom: 0;\n}\n.communication {\n  font-size: 14px;\n  padding: 40px 40px 78px;\n  border-top: 1px solid #eeeeee;\n}\n.communication>ul>li {\n  display: inline-block;\n  margin-right: 80px;\n}\n.recordList{\n  position: absolute;\n  z-index: 1;\n  top: 0;\n  display: none;\n  vertical-align:text-top;\n  padding: 10px 0;\n  box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.12);\n  width: 300px;\n  max-height: 230px;\n  background: #FFFFFF;\n  overflow: auto;\n}\n.communication .recordList li{\n  display: flex;\n  justify-content: space-between;\n  line-height: 36px;\n  font-size: 14px;\n  font-family: SourceHanSansCN-Regular;\n  padding: 0 20px;\n}\n.communication .recordList .editName{\n  color: #333333;\n  width: 100px;\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n}\n.communication .recordList li:hover{\n  background: #F6F6F6;\n}\n.communication .editRecord:hover .recordList{\n  display: inline-block;\n}\n.dianzan {\n  text-align: center;\n}\n.dianzan .icon-dianzan {\n  display: inline-block;\n  margin-top: 90px;\n  font-size: 50px;\n  line-height: 70px;\n  color: #ebecee;\n  cursor: pointer;\n}\n.dianzan .active {\n  color: rgb(6, 101, 255);\n}\n.dianzan p {\n  font-size: 16px;\n  color: #868ba1;\n  margin-top: 20px;\n  margin-bottom: 40px;\n}\n.dianzan figure {\n  display: inline-block;\n  margin: 0 20px;\n}\n.dianzan img {\n  width: 40px;\n  height: 40px;\n  border-radius: 50%;\n}\n.communication h2 {\n  margin: 60px 0 30px 0;\n  font-size: 16px;\n  line-height: 20px;\n  font-weight: 500;\n}\n.container > span {\n  color: #0062ff;\n  cursor: pointer;\n  font-size: 16px;\n  font-weight: 400;\n}\n.commentData {\n  display: flex;\n  align-items: center;\n  margin-bottom: 30px;\n  position: relative;\n}\n.commentData .icon-dianzan {\n  color: #ebecee;\n  font-size: 20px;\n  cursor: pointer;\n}\n.commentData .active {\n  color: rgb(6, 101, 255);\n}\n.commentData .icon-shanchu {\n  font-size: 20px;\n  margin-left: 20px;\n}\n.commentData img {\n  width: 40px;\n  height: 40px;\n  border-radius: 50%;\n  position:absolute;\n  top: 0;\n  left: 0;\n}\n.commentData .connt {\n  max-width: 1454px;\n  word-wrap: break-word;\n  font-size: 16px;\n  line-height: 26px;\n  color: #868ba1;\n  margin-bottom: 15px;\n}\n.commentData .rtime {\n  font-size: 16px;\n  color: #868ba1;\n}\n.commentData h3 {\n  font-size: 16px;\n  font-weight: 500;\n  margin-bottom: 9px;\n}\n.commentData .deleteTalk{\n  cursor: pointer;\n  color: #EBECEE;\n}\n.commentData .deleteTalk:hover{\n  color: #868BA1;\n}\n.write {\n  margin-top: 30px;\n}\n.write > img {\n  float: left;\n  width: 40px;\n  height: 40px;\n  border-radius: 50%;\n}\n.el-textarea {\n  width: 1000px;\n}\n</style>\n"
  },
  {
    "path": "src/views/common/KnowSet.vue",
    "content": "<template>\n  <div>\n    <h3 class=\"hfm\">封面</h3>\n    <div class=\"backCont\">\n      <div class=\"back\">\n        <!-- <img style=\"margin-top: 45px\" src=\"@/views/info/img/mrbc.png\" alt=\"\" /> -->\n        <div class=\"show-back\" :style=\"setInfo.color ? ('background: '+ setInfo.color + ';') : ''\">\n          <img class=\"mark\" :src=\"markImg\" />\n<!--          <img class=\"desktop\" :src=\"desktopImg\" />-->\n        </div>\n      </div>\n      <ul>\n        <li\n          v-for=\"item in colorList\"\n          :key=\"'color-list-item-' + item\"\n          :style=\"'background: ' + item + ';'\"\n          @click=\"setColor(item)\"\n        ></li>\n      </ul>\n    </div>\n\n    <h3 style=\"margin-top: 30px\">文档名称</h3>\n    <jvs-form size=\"medium\" class=\"banSet\" ref=\"settimgForm\" :option=\"settingFormOption\" :formData=\"setInfo\"></jvs-form>\n    <h3 style=\"margin-top: 20px\">提醒</h3>\n    <el-radio-group v-model=\"remind\" style=\"margin-bottom: 18px;\">\n      <el-radio-button :label=\"true\">开启提醒</el-radio-button>\n      <el-radio-button :label=\"false\">关闭提醒</el-radio-button>\n    </el-radio-group>\n<!--    <h3 style=\"margin-top: 20px\">置顶</h3>-->\n<!--    <el-radio-group v-model=\"top\" style=\"margin-bottom: 18px;\">-->\n<!--      <el-radio-button :label=\"true\">开启置顶</el-radio-button>-->\n<!--      <el-radio-button :label=\"false\">关闭置顶</el-radio-button>-->\n<!--    </el-radio-group>-->\n    <p style=\"font-size: 12px;\">文档发生变更后自动提醒知识库所有成员、管理员、所有者，默认开启所有的文档。</p>\n    <h3 style=\"margin-top: 20px\">查看权限</h3>\n    <el-radio-group v-model=\"shareRole\" style=\"margin-bottom: 18px;\">\n      <el-radio-button label=\"user\">知识库成员查看</el-radio-button>\n      <el-radio-button label=\"register\">企业成员可查看</el-radio-button>\n      <!-- <el-radio-button label=\"all\">任何人可查看</el-radio-button> -->\n    </el-radio-group>\n    <div class=\"notes\">\n      <span style=\"color:#409EFF\">注：</span>\n      <span>知识库成员：由知识库设置里面的人员</span>\n      <p>企业成员：当前系统组织结构所有人员</p>\n      <!-- <p>任何人：用户可不用登录系统即可查看</p> -->\n    </div>\n    <div style=\"text-align: right; margin-top: 40px\">\n      <el-button v-if=\"hasRight\" class=\"zsszbtn\" type=\"primary\" :loading=\"saveLoading\" @click=\"saveHandle\">保存</el-button>\n    </div>\n  </div>\n</template>\n\n<script>\nimport mark from '@/views/index/img/mark.png'\nimport desktop from '@/views/index/img/desktop.png'\nimport {setLibrary, addLibrary} from './api'\nexport default {\n  props: {\n    nodeInfo: {\n      type: Object,\n    },\n    hasRight: {\n      type: Boolean\n    }\n  },\n  data() {\n    var checkName = (rule, value, callback) => {\n      if (!value) {\n        return callback(new Error('输入内容不能为空'));\n      }else if($.trim(value)==''){\n        return callback(new Error('输入内容不能为空'));\n      }else if(value.length>20){\n        return callback(new Error('输入内容不得超过10字'));\n      }else{\n        callback();\n      }\n    }\n    return {\n      top: false,\n      remind:true,\n      shareRole: 'user',\n      markImg: mark,\n      desktopImg: desktop,\n      // colorList: [\"#EEC447\", \"#F2B344\", \"#4686FF\", \"#12D7BF\", \"#1DC1FE\", \"#505CE9\"],\n      colorList: [\"#87c3f9\", \"#c3f2d2\", \"#80e0ee\", \"#fba7c6\", \"#f5e7cf\", \"#97cdcf\"],\n      setInfo: {},\n      saveLoading: false,\n      settingFormOption: {\n        cancal: false,\n        emptyBtn: false,\n        submitBtnText: '保存',\n        btnHide: true,\n        column: [\n          {\n            label: '',\n            prop: 'name',\n            placeholder: '请输入文档名称',\n            maxlength: 10,\n            rules: [\n              { required: true,validator: checkName, trigger: 'blur' },\n            ]\n          },\n          {\n            label: '',\n            prop: 'description',\n            placeholder: '请输入文档介绍',\n            type: 'textarea',\n            maxlength: 200,\n            showwordlimit: true,\n            resize: \"none\",\n            rows: 3\n          }\n        ]\n      }\n    };\n  },\n  methods: {\n    setColor(color) {\n      this.$set(this.setInfo, \"color\", color);\n    },\n    saveHandle() {\n      this.$refs.settimgForm.$refs.ruleForm.validate((bool, prop, msg) => {\n        if(bool) {\n          this.saveLoading = true\n          this.setInfo.shareRole = this.shareRole\n          this.setInfo.readNotify = this.remind\n          // this.setInfo.top = this.top\n          if(this.subType == 'edit') {\n            setLibrary(this.setInfo).then(res => {\n              if(res.data.code == 0) {\n                this.$notify({\n                  title: '设置成功',\n                  // message: '右下角弹出的消息',\n                  type: 'success',\n                  position: 'bottom-right'\n                });\n                this.saveLoading = false\n                this.$emit('close', this.setInfo)\n              }\n            }).catch(e => {\n              this.saveLoading = false\n            })\n          } else {\n            addLibrary(this.setInfo).then(res => {\n              if(res.data.code == 0) {\n                this.$notify({\n                  title: '新增文档成功',\n                  // message: '右下角弹出的消息',\n                  type: 'success',\n                  position: 'bottom-right'\n                });\n                this.saveLoading = false\n                this.$emit('close', this.setInfo)\n              }\n            }).catch(e => {\n              this.saveLoading = false\n            })\n          }\n        }\n      })\n\n    },\n  },\n  created() {\n    if (this.nodeInfo && this.nodeInfo.id) {\n      this.setInfo = JSON.parse(JSON.stringify(this.nodeInfo));\n      this.shareRole =this.setInfo.shareRole\n      this.remind=this.setInfo.readNotify\n      this.subType = 'edit'\n    }else{\n      this.subType = 'add'\n    }\n    this.settingFormOption.disabled = !this.hasRight\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.hfm {\n  font-size: 18px;\n  margin-top:0!important;\n}\n.backCont {\n  display: flex;\n}\n/deep/.jvs-form .el-form-item .jvs-form-item,/deep/.el-input,/deep/.el-input .el-input__inner{\n  height: 40px!important;\n}\n.notes{\n  font-size: 14px;\n  color: #BFBFBF;\n  p{\n    margin-bottom: 0;\n    font-size: 12px;\n    margin-left: 2em;\n    margin-top: 10px;\n  }\n  span{\n    font-size: 12px;\n  }\n}\n/deep/.el-input--mini .el-textarea__inner{\n  resize: none;\n}\n.back {\n  width: 200px;\n  height: 150px;\n  text-align: center;\n  background: #f6f6f6;\n  border: 1px solid #ebecee;\n  .show-back{\n    width: 100%;\n    height: 100%;\n    background-image: url('../index/img/bg.png');\n    background-repeat: no-repeat;\n    position: relative;\n    img{\n      display: block;\n    }\n    .mark{\n      position: absolute;\n      left: 5px;\n      top: 5px;\n      width: 15px;\n      height: 20px;\n    }\n    .desktop{\n      width: 80px;\n      height: 70px;\n      position: absolute;\n      top: 0;\n      left: 0;\n      bottom: 0;\n      right: 0;\n      margin: auto;\n    }\n  }\n}\nul {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: space-between;\n  align-content: space-between;\n  width: 300px;\n  height: 150px;\n  margin: 0;\n}\nul li {\n  width: 80px;\n  height: 60px;\n  cursor: pointer;\n}\n/* .zsszbtn{\n    float: right;\n    margin-top: 40px;\n} */\n</style>\n"
  },
  {
    "path": "src/views/common/LuckySheet.vue",
    "content": "<template>\n  <div class=\"hello\">\n    <div style=\"position: absolute; top: 0\">\n      <!-- <input style=\"font-size: 16px\" type=\"file\" @change=\"uploadExcel\" /> -->\n    </div>\n    <div\n      id=\"luckysheet\"\n      style=\"\n        padding: 0px;\n        position: absolute;\n        width: 100%;\n        height:650px;\n        left: 0px;\n        top: 0px;\n        bottom: 0px;\n      \"\n    ></div>\n\n    <div\n      v-show=\"isMaskShow\"\n      style=\"\n        position: absolute;\n        z-index: 1000000;\n        left: 0px;\n        top: 0px;\n        bottom: 0px;\n        right: 0px;\n        background: rgba(255, 255, 255, 0.8);\n        text-align: center;\n        font-size: 40px;\n        align-items: center;\n        justify-content: center;\n        display: flex;\n      \"\n    >\n      Downloading\n    </div>\n  </div>\n</template>\n\n<script>\nimport LuckyExcel from \"luckyexcel\";\nexport default {\n  name: \"Excel\",\n  props: {\n    content: {\n      type: Array,\n      default: () => {\n        return [];\n      },\n    },\n  },\n  data() {\n    return {\n        // content:'',\n        isMaskShow: false,\n    };\n  },\n  mounted() {\n    this.cj();\n  },\n  methods: {\n    cj() {\n      let _this = this;\n      var options={\n        container: \"luckysheet\",\n        lang:'zh',\n        showGridLines:true,\n        allowEdit:true,\n        showinfobar: false, // 是否显示顶部信息栏\n        showsheetbar: true, // 是否显示底部sheet页按钮\n        showstatisticBar: false, // 是否显示底部计数栏\n        sheetBottomConfig: true, // sheet页下方的添加行按钮和回到顶部按钮配置\n        userInfo: false, // 右上角的用户信息展示样式\n        plugins: ['chart'],\n        showstatisticBarConfig: {\n          count:true,\n          view:true,\n          zoom:true,\n        },\n        showsheetbarConfig: {\n          add: true, //新增sheet\n          menu: false, //sheet管理菜单\n          sheet: true, //sheet页显示\n        },\n        hook: {\n          sheetMouseup(){\n            _this.$emit(\"contetnChange\", luckysheet.getAllSheets());\n          },\n        }\n      }\n      if(this.content==''){\n        // luckysheet.create(options);\n        luckysheet.create({\n          ...options,\n          data: [\n            {\n              \"name\": \"Sheet1\",\n              \"color\": \"\",\n              \"index\": 1,\n              \"status\": 0,\n              \"order\": 1,\n              \"celldata\": [],\n              \"config\": {}\n            },\n          ],\n        });\n      }else{\n        luckysheet.create({\n          ...options,\n          data: this.content,\n        });\n      }\n    },\n    uploadExcel(evt) {\n      let _this = this;\n      const files = evt.target.files;\n      if (files == null || files.length == 0) {\n        alert(\"No files wait for import\");\n        return;\n      }\n\n      let name = files[0].name;\n      let suffixArr = name.split(\".\"),\n        suffix = suffixArr[suffixArr.length - 1];\n      if (suffix != \"xlsx\") {\n        alert(\"Currently only supports the import of xlsx files\");\n        return;\n      }\n      LuckyExcel.transformExcelToLucky(\n        files[0],\n        function (exportJson, luckysheetfile) {\n          if (exportJson.sheets == null || exportJson.sheets.length == 0) {\n            alert(\n              \"Failed to read the content of the excel file, currently does not support xls files!\"\n            );\n            return;\n          }\n          window.luckysheet.destroy();\n          var options={\n            container: \"luckysheet\",\n            lang:'zh',\n            showGridLines:true,\n            allowEdit:true,\n            showinfobar: false, // 是否显示顶部信息栏\n            showsheetbar: true, // 是否显示底部sheet页按钮\n            showstatisticBar: false, // 是否显示底部计数栏\n            sheetBottomConfig: true, // sheet页下方的添加行按钮和回到顶部按钮配置\n            userInfo: false, // 右上角的用户信息展示样式\n            plugins: ['chart'],\n            showstatisticBarConfig: {\n              count:true,\n              view:true,\n              zoom:true,\n            },\n            showsheetbarConfig: {\n              add: true, //新增sheet\n              menu: false, //sheet管理菜单\n              sheet: true, //sheet页显示\n            },\n            hook: {\n              sheetMouseup(){\n                _this.$emit(\"contetnChange\", luckysheet.getAllSheets());\n              },\n            }\n          }\n          luckysheet.create({\n            ...options,\n            data: exportJson.sheets,\n          })\n        }\n      );\n    },\n  },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style lang=\"scss\" scoped>\n.hello{\n  min-height: 650px;\n}\nh3 {\n  margin: 40px 0 0;\n}\nul {\n  list-style-type: none;\n  padding: 0;\n}\nli {\n  display: inline-block;\n  margin: 0 10px;\n}\na {\n  color: #42b983;\n}\n</style>"
  },
  {
    "path": "src/views/common/MemberSet.vue",
    "content": "<template>\n  <div class=\"member-set-info\">\n    <div :class=\"{'member-list': true}\">\n      <div class=\"member-list-loading\" v-if=\"freshLoading\"></div>\n      <div class=\"member-list-item\" v-for=\"(item, index) in memberList\" :key=\"'member-'+item.realName+index\">\n        <div class=\"member-list-item-text\">\n          <img :src=\"item.headImg ? item.headImg : userImg\" />\n          <span>{{item.realName}}</span>\n          <el-select :disabled=\"item.role == 'owner'\" :class=\"{'role-choose': true, 'no-choose': !item.boolChoose}\" v-model=\"item.role\" placeholder=\"请选择\" @change=\"roleChange(item)\">\n            <el-option v-if=\"item.role == 'owner'\" label=\"所有者\" value=\"owner\"></el-option>\n            <el-option label=\"管理员\" value=\"admin\"></el-option>\n            <el-option label=\"成员\" value=\"member\"></el-option>\n          </el-select>\n<!--          <el-select v-if=\"item.boolChoose\" :disabled=\"item.role == 'owner'\" :class=\"{'role-choose': true, 'no-choose': !item.boolChoose}\" v-model=\"item.role\" placeholder=\"请选择\" @change=\"roleChange(item)\">-->\n<!--            <el-option v-if=\"item.role == 'owner'\" label=\"所有者\" value=\"owner\"></el-option>-->\n<!--            <el-option label=\"管理员\" value=\"admin\"></el-option>-->\n<!--            <el-option label=\"成员\" value=\"member\"></el-option>-->\n<!--          </el-select>-->\n<!--          <i v-else>{{item.role == 'owner' ? '所有者' : (item.role == 'admin') ? '管理员' : '成员'}}</i>-->\n          <!-- <i>{{item.remark}}</i> -->\n        </div>\n        <div v-if=\"item.role != 'owner'\" style=\"margin-right: 25px;\" class=\"dmore\">\n          <el-popover\n            v-model=\"item.active\"\n            placement=\"right\"\n            width=\"30\"\n            trigger=\"hover\">\n            <!-- <div class=\"member-more-tool\">\n              <span v-if=\"item.role != 'owner'\" @click=\"setItem(item)\">权限设置</span>\n              <span @click=\"delItem(item, index)\">删除</span>\n            </div> -->\n            <ul class=\"base-type-list\">\n<!--              <li v-if=\"item.role != 'owner'\" @click=\"setItem(item)\">-->\n<!--                <i class=\"el-icon-setting\"></i>-->\n<!--                <span>权限设置</span>-->\n<!--              </li>-->\n              <li @click=\"delItem(item, index)\">\n                <i class=\"el-icon-tickets\"></i>\n                <span>删除</span>\n              </li>\n            </ul>\n            <i class=\"el-icon-more\" slot=\"reference\" v-if=\"hasRight\"></i>\n          </el-popover>\n        </div>\n      </div>\n    </div>\n    <el-dialog\n      class=\"dialog form-fullscreen-dialog invitation-dialog\"\n      title=\"邀请用户\"\n      :visible.sync=\"dialogVisible\"\n      append-to-body\n      :before-close=\"handleClose\">\n      <span slot=\"title\" class=\"dialogHeader\">\n        <div class=\"dialogLine\"></div>\n        <span>文档邀请人员</span>\n      </span>\n      <div class=\"invitation\">\n        <div class=\"invitation-top\">\n          <img :src=\"invitationImg\" alt=\"\" />\n        </div>\n        <div class=\"invitation-center\">\n          <div class=\"search\">\n            <el-input\n              placeholder=\"请输入内容搜索\"\n              prefix-icon=\"el-icon-search\"\n              v-model=\"keyword\"\n              @keyup.enter.native=\"searchHandle(keyword)\"\n            >\n            </el-input>\n          </div>\n          <div class=\"user-list\">\n            <p v-if=\"userList.length==0\">未搜索到相关人员</p>\n            <div class=\"user-list-item\" v-for=\"(item, index) in userList\" :key=\"'user-list-item-'+ index\" @click=\"checkUser(item, index)\">\n              <el-tooltip v-if=\"item.realName && item.realName.length > 4\" class=\"item\" effect=\"light\" :content=\"item.realName\" placement=\"top\">\n                <div class=\"info-item\">\n                  <img :src=\"item.headImg || userImg\" alt=\"\">\n                  <span>{{item.realName}}</span>\n                </div>\n              </el-tooltip>\n              <div v-else class=\"item\">\n                <img :src=\"item.headImg || userImg\" alt=\"\">\n                <span>{{item.realName}}</span>\n              </div>\n              <i class=\"el-icon-success checked-user\" v-if=\"checkedList.indexOf(item.id) > -1\"></i>\n            </div>\n          </div>\n        </div>\n        <div class=\"invitation-bottom\">\n          <jvs-button class=\"save-button\" :loading=\"saveLoading\" @click=\"saveHandle\">保存</jvs-button>\n<!--          <jvs-button class=\"save-button\" @click=\"allCheck\">全选</jvs-button>-->\n        </div>\n      </div>\n    </el-dialog>\n  </div>\n</template>\n\n<script>\nimport user from './img/user.png'\nimport invitation from './img/invitation.png'\nimport {queryMember, setMemberRole, addMember, delMember} from './api'\nimport {getUserList} from '@/components/api'\nimport { getStore } from \"@/util/store.js\";\nimport {getUserAll} from \"../../components/api\";\nexport default {\n  name: 'member-set',\n  props: {\n    nodeInfo: {\n      type: Object\n    },\n    addNew: {\n      type: Number\n    }\n  },\n  data () {\n    return {\n      more_list: [\n        {icon: \"el-icon-setting\", name: \"权限设置\"},\n        {icon: \"el-icon-tickets\", name: \"删除\"},\n      ],\n      userImg: user,\n      invitationImg: invitation,\n      memberList: [],\n      dialogVisible: false,\n      userOption: {\n        cancal: false,\n        column: [\n          {\n            label: '选择用户',\n            prop: 'userid',\n            type: 'user',\n            multiple: true,\n            allowinput: false\n          }\n        ]\n      },\n      currentItem: {},\n      keyword: '',\n      userList: [],\n      checkedList: [],\n      alreadyIn: [],\n      saveLoading: false,\n      freshLoading: false,\n      hasRight: false,\n      allUserId: []\n    }\n  },\n  methods: {\n    queryMemberHandle (id) {\n      queryMember(id, {size: 1000}).then(res => {\n        if(res.data.code == 0) {\n          this.checkedList = []\n          this.alreadyIn = []\n          this.memberList = res.data.data.records\n          let userInfo = getStore({name: 'userInfo'})\n          for(let i in this.memberList) {\n            if(this.checkedList.indexOf(this.memberList[i].userId) == -1) {\n              this.checkedList.push(this.memberList[i].userId + '')\n              this.alreadyIn.push(this.memberList[i].userId + '')\n            }\n            if(this.memberList[i].userId == userInfo.id) {\n              this.hasRight = this.memberList[i].role == 'owner' ? true : false\n            }\n          }\n        }\n      })\n    },\n    setItem (item) {\n      this.currentItem.boolChoose = false\n      item.active = false\n      item.boolChoose = true\n      this.currentItem = item\n    },\n    roleChange (item) {\n      setMemberRole(this.nodeInfo.id, item.userId, item.role).then(res => {\n        if(res.data.code == 0) {\n          this.$notify({\n            title: '设置成功',\n            // message: '右下角弹出的消息',\n            type: 'success',\n            position: 'bottom-right'\n          });\n          this.currentItem.boolChoose = false\n          this.$forceUpdate()\n        }\n      })\n    },\n    delItem (item, index) {\n      this.$confirm('确认删除该成员', '提示', {\n        confirmButtonText: '确定',\n        cancelButtonText: '取消',\n        type: 'warning'\n      }).then(() => {\n        this.freshLoading = true\n        delMember(this.nodeInfo.id, item.userId).then(res => {\n          if(res.data.code == 0) {\n            this.$notify({\n              title: '删除成功',\n              // message: '右下角弹出的消息',\n              type: 'success',\n              position: 'bottom-right'\n            });\n            this.freshLoading = false\n            this.memberList.splice(index, 1)\n            this.queryMemberHandle(this.nodeInfo.id)\n          }\n        }).catch(e => {\n          this.freshLoading = false\n        })\n      }).catch(e => {})\n    },\n    handleClose () {\n      this.dialogVisible = false\n    },\n    searchHandle () {\n      // let obj = {\n      //   size: 1000,\n      //   current: 1\n      // }\n      // if(this.keyword) {\n      //   obj.realName = this.keyword\n      // }\n      // getUserList(obj).then(res => {\n      //   if(res.data.code == 0) {\n      //     this.userList = res.data.data.records\n      //     this.allUserId = []\n      //     for(let i in this.userList) {\n      //       this.allUserId.push(this.userList[i].id)\n      //     }\n      //     // console.log('人员列表',this.userList)\n      //   }\n      // })\n      let obj = {}\n      if(this.keyword) {\n        obj.key = this.keyword\n      }\n      getUserAll(obj).then(res => {\n        if(res.data.code == 0) {\n          this.userList = res.data.data\n          this.allUserId = []\n          for(let i in this.userList) {\n            this.allUserId.push(this.userList[i].id)\n          }\n          // console.log('人员列表',this.userList)\n        }\n      })\n    },\n    checkUser (item, index) {\n      if(this.alreadyIn.indexOf(item.id) == -1) { // 已有成员不做操作\n        if(this.checkedList.indexOf(item.id) == -1) {\n          if (this.checkedList.length > 19) {\n            this.$message.warning('最多只能选择20人')\n            return\n          }\n          this.checkedList.push(item.id)\n        }else{\n          let ix = this.checkedList.indexOf(item.id)\n          if(ix > -1) {\n            this.checkedList.splice(ix, 1)\n          }\n        }\n      }\n    },\n    saveHandle () {\n      this.saveLoading = true\n      addMember({documentId: this.nodeInfo.id, userIds: this.checkedList}).then(res => {\n        if(res.data.code == 0) {\n          this.$notify({\n              title: '保存成功',\n              // message: '右下角弹出的消息',\n              type: 'success',\n              position: 'bottom-right'\n            });\n          this.saveLoading = false\n          this.handleClose()\n          this.queryMemberHandle(this.nodeInfo.id)\n        }\n      })\n    },\n    allCheck () {\n      if(this.checkedList.length == this.allUserId.length) {\n        this.checkedList = []\n      }else{\n        this.checkedList = JSON.parse(JSON.stringify(this.allUserId))\n      }\n    }\n  },\n  created () {\n    if(this.nodeInfo && this.nodeInfo.id) {\n      this.queryMemberHandle(this.nodeInfo.id)\n    }\n  },\n  watch: {\n    addNew: {\n      handler (newVal, oldVal) {\n        if(newVal > -1) {\n          this.searchHandle()\n          this.dialogVisible = true\n        }\n      }\n    }\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.member-set-info{\n  border-top: 1px solid #DCDFE6;\n  position: relative;\n  .member-list{\n    max-height: 610px;\n    overflow: hidden;\n    overflow-y: auto;\n    .member-list-item{\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      margin-top: 15px;\n      height: 48px;\n      box-sizing: border-box;\n      overflow: hidden;\n      .member-list-item-text{\n        width: 80%;\n        display: flex;\n        align-items: center;\n        justify-content: flex-start;\n        margin-left: 10px;\n        img{\n          display: block;\n          width: 40px;\n          height: 40px;\n          border-radius: 50%;\n          overflow: hidden;\n        }\n        span, i{\n          width: 100px;\n          font-size: 14px;\n          font-family: SourceHanSansCN-Regular;\n          line-height: 25px;\n          color: #333333;\n          margin-left: 20px;\n        }\n        span{\n          width: 150px;\n        }\n      }\n      .dmore{\n        display: none;\n      }\n    }\n    .member-list-item:hover{\n      background: #F6F6F6;\n    }\n    .member-list-item:hover .dmore{\n      display: block;\n    }\n  }\n  .member-list-loading{\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    background-image: url('../../styles/loading.gif');\n    background-repeat: no-repeat;\n    background-position: center;\n    //background-size: 450px 360px;\n    background-size: 300px 240px;\n    background-color: rgba(255, 255, 255, 0.9);\n    z-index: 9;\n  }\n}\n.dialogHeader {\n  display: flex;\n  font-size: 20px;\n  font-family: SourceHanSansCN-Regular;\n  color: #333333;\n}\n.dialogHeader span {\n  margin-left: 20px;\n  font-size: 20px;\n}\n.dialogLine {\n  width: 4px;\n  height: 30px;\n  background: #4b90ee;\n  border-radius: 2px;\n}\n.invitation{\n  .invitation-top {\n    border-top: 1px solid #DCDFE6;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 208px;\n    img{\n      display: block;\n    }\n  }\n  .invitation-bottom{\n    margin-top: 20px;\n    overflow: hidden;\n\n    .save-button{\n      width: 72px;\n      height: 32px;\n      background: #0062FF;\n      border-radius: 4px;\n      font-size: 14px;\n      font-family: Source Han Sans CN;\n      font-weight: 400;\n      line-height: 32px;\n      color: #FFFFFF;\n      text-align: center;\n      float: right;\n      cursor: pointer;\n      padding: 0;\n      margin-left: 10px;\n    }\n  }\n}\n</style>\n<style lang=\"scss\">\n.base-type-list{\n  padding: 0;\n  margin: 10px 0;\n  li{\n    display: flex;\n    align-items: center;\n    margin: 0;\n    margin-bottom: 10px;\n    cursor: pointer;\n    padding: 5px 10px;\n    i{\n      margin-right: 10px;\n      font-size: 14px!important;\n    }\n  }\n  li:hover{\n    background: #F5F7FA;\n  }\n  li:nth-last-of-type(1) {\n    margin-bottom: 0;\n  }\n}\n.member-list-item-text{\n  .role-choose{\n    // margin: 0 50px;\n    width: 120px;\n    .el-input__inner{\n      font-size: 14px;\n      font-family: SourceHanSansCN-Regular;\n      line-height: 25px;\n      color: #333333;\n      background: rgba(0,0,0,0);\n    }\n    .is-disabled{\n      .el-input__inner{\n        background: rgba(0,0,0,0);\n        cursor: text;\n      }\n    }\n  }\n  .role-choose.no-choose{\n    .el-input__inner{\n      border: 0;\n    }\n    .el-input__suffix{\n      display: none;\n    }\n  }\n}\n.invitation-dialog{\n  .el-dialog{\n    margin-top: 60px!important;\n    .el-dialog__header{\n      height: auto!important;\n    }\n    .el-dialog__header::before{\n      display: none;\n    }\n    .el-dialog__body{\n      padding: 0 20px;\n      padding-bottom: 30px;\n      margin-top: 10px;\n    }\n  }\n}\n.invitation-center{\n  .search{\n    .el-input{\n      width: 100%;\n      height: 45px;\n      .el-input__inner{\n        height: 45px;\n        line-height: 45px;\n        border-radius: 10px;\n        background: #F3F3F3;\n        font-size: 16px;\n        padding-left: 40px;\n        border-color: #F3F3F3;\n        outline: none;\n      }\n      .el-input__prefix{\n        left: 15px;\n        i{\n          font-size: 20px;\n          line-height: 45px;\n        }\n      }\n    }\n  }\n  .user-list{\n    // padding: 0 130px;\n    display: flex;\n    align-items: center;\n    flex-wrap: wrap;\n    height: 380px;\n    overflow: hidden;\n    overflow-y: auto;\n    align-items: flex-start;\n    position: relative;\n    p{\n       font-size:18px;\n       width: 200px;\n       height: 100px;\n       position: absolute;\n       top: 50%;\n       left: 50%;\n       margin-top: -50px;\n       margin-left: -100px;\n    }\n    .user-list-item{\n      width: calc( calc(100% - 320px) / 6 );\n      margin: 20px 32px;\n      position: relative;\n      .item{\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        flex-direction: column;\n        width: 100%;\n        cursor: pointer;\n        height: 100%;\n      }\n      img{\n        display: block;\n        width: 40px;\n        height: 40px;\n        border-radius: 50%;\n        overflow: hidden;\n      }\n      span{\n        font-size: 14px;\n        font-family: SourceHanSansCN-Regular;\n        line-height: 25px;\n        color: #333333;\n        text-align: center;\n        width: 100%;\n        height: 25px;\n        overflow: hidden;\n        text-overflow: ellipsis;\n        white-space: pre;\n        margin-top: 10px;\n        display: block;\n      }\n      .checked-user{\n        font-size: 24px;\n        color: #0062FF;\n        position: absolute;\n        right: 0px;\n        top: 0px;\n      }\n    }\n    .user-list-item:nth-of-type(6n+1) {\n      margin-left: 0;\n    }\n    .user-list-item:nth-of-type(6n) {\n      margin-right: 0;\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "src/views/common/MindElixir.vue",
    "content": "<template>\n  <div class=\"outer\">\n    <div id=\"map\"></div>\n  </div>\n</template>\n\n<script>\nimport MindElixir, { E } from \"mind-elixir\";\nexport default {\n  name: \"Map\",\n  props: {\n    content: {\n      type: Object,\n      default: () => {\n        return {};\n      },\n    },\n  },\n  data() {\n    return {\n      mind:{},\n      // content:'',\n    };\n  },\n  mounted() {\n    this.cj()\n  },\n  methods: {\n    cj(){\n      var options={\n        locale: 'zh_CN',\n        el: \"#map\",\n        direction: MindElixir.SIDE,\n        data: MindElixir.new('new topic'), // 也可以把 getDataAll 得到的数据初始化\n        draggable: true, // 启用拖动 default true\n        contextMenu: true, // 启用右键菜单 default true\n        toolBar: true, // 启用工具栏 default true\n        nodeMenu: true, // 启用节点菜单 default true\n        keypress: true, // 启用快捷键 default true\n      };\n      if(this.content==''){\n        this.mind = new MindElixir(options);\n        this.mind.init()\n        E(\"node-id\");\n        this.mind.bus.addListener('operation', operation => {\n          if(this.mind.inputDiv){\n            if(operation.obj.root){\n              this.mind.inputDiv.style.marginTop = \"10px\"\n              this.mind.inputDiv.style.outline = \"3px solid #000\"\n            }else{\n              this.mind.inputDiv.style.margin = 0\n              this.mind.inputDiv.style.outline = \"3px solid #000\"\n            }\n          }\n        })\n      }else{\n        this.mind = new MindElixir({\n          ...options,\n          data: this.content,\n        });\n        this.mind.init()\n        E(\"node-id\");\n        this.mind.bus.addListener('operation', operation => {\n          if(this.mind.inputDiv){\n            if(operation.obj.root){\n              this.mind.inputDiv.style.marginTop = \"10px\"\n              this.mind.inputDiv.style.outline = \"3px solid #000\"\n            }else{\n              this.mind.inputDiv.style.margin = 0\n              this.mind.inputDiv.style.outline = \"3px solid #000\"\n            }\n          }\n        })\n      }\n    }\n  }\n};\n</script>\n\n<style  lang=\"scss\">\n.outer {\n    position: relative;\n    width: 100%;\n    height: 650px;\n}\n#map {\n    // height: 500px;\n    width: 100%;\n    height: 100%;\n    overflow: auto;\n}\n.outer #map .lt{\n  width: 40px;\n}\n</style>"
  },
  {
    "path": "src/views/common/Tiptap.vue",
    "content": "<template>\n  <div class=\"el-tiptap-editor__wrapper\" v-if=\"type == 'document_html'\" ref=\"paste\" @paste.stop.prevent=\"pasteImg($event)\" @click=\"onFocus\">\n    <el-tiptap\n      height=\"100%\"\n      ref=\"myhtml\"\n      lang=\"zh\"\n      :charCounterCount=\"false\"\n      :extensions=\"extensions\"\n      :content=\"content\"\n      @onUpdate=\"onUpdate\"\n      :spellcheck=\"false\"\n      :menu-bubble-options=\"{ 'keep-in-bounds': false }\"\n      placeholder=\"请输入内容\"\n    />\n    <div v-if=\"catalog.length > 0\" :class=\"{'catalog-list': true, 'catalog-list-close': !openCatalog}\">\n<!--      <el-tooltip v-if=\"openCatalog\" class=\"catalog-tooltip\" effect=\"dark\" content=\"收起索引\" placement=\"right\">-->\n<!--        <i class=\"el-icon-d-arrow-right\" @click=\"openClose(false)\"></i>-->\n<!--      </el-tooltip>-->\n<!--      <el-tooltip v-if=\"!openCatalog\" class=\"catalog-tooltip\" effect=\"dark\" content=\"展开索引\" placement=\"right\">-->\n<!--        <i class=\"el-icon-d-arrow-left\" @click=\"openClose(true)\"></i>-->\n<!--      </el-tooltip>-->\n<!--      <ul class=\"catalog\" v-if=\"openCatalog\">-->\n<!--        <template v-for=\"(item, index) in catalog\">-->\n<!--          <li :class=\"('catalog-item'+item.level) + (index==num ? ' active': '')\" :key=\"index\" :style=\"{ paddingLeft: item.level * 22 + 'px' }\" @click=\"num=index\">-->\n<!--            <a-->\n<!--              :href=\"'#' + item.id\"-->\n<!--              :style=\"{color:(item.level==1?'#333333':'#868BA1') }\"-->\n<!--              >{{ item.title }}</a-->\n<!--            >-->\n<!--          </li>-->\n<!--        </template>-->\n<!--      </ul>-->\n      <ul class=\"catalog\">\n        <template v-for=\"(item, index) in catalog\">\n          <li :class=\"('catalog-item'+item.level) + (index==num ? ' active': '')\" :key=\"index\" :style=\"{ paddingLeft: item.level * 22 + 'px' }\" @click=\"num=index\">\n            <a\n              :href=\"'#' + item.id\"\n              :style=\"{color:(item.level==1?'#333333':'#868BA1') }\"\n              >{{ item.title }}</a\n            >\n          </li>\n        </template>\n      </ul>\n    </div>\n  </div>\n</template>\n\n<script>\nimport {\n  Doc,\n  Text,\n  Paragraph,\n  Bold,\n  Underline,\n  Italic,\n  Strike,\n  Code,\n  FontType,\n  FontSize,\n  TextColor,\n  TextHighlight,\n  FormatClear,\n  Heading,\n  ListItem,\n  BulletList,\n  OrderedList,\n  TodoItem,\n  TodoList,\n  TextAlign,\n  LineHeight,\n  Indent,\n  Blockquote,\n  CodeBlock,\n  Link,\n  Image,\n  Table,\n  TableHeader,\n  TableCell,\n  TableRow,\n  Iframe,\n  TrailingNode,\n  HorizontalRule,\n  Fullscreen,\n  Print,\n  Preview,\n  SelectAll,\n  History,\n  CodeView,\n} from 'element-tiptap';\nimport \"@/styles/tiptap.scss\";\nimport codemirror from 'codemirror';\nimport 'codemirror/lib/codemirror.css'; // import base style\nimport store from \"@/store\"; // progress bar style\nimport 'codemirror/mode/xml/xml.js'; // language\nimport 'codemirror/addon/selection/active-line.js'; // require active-line.js\nimport 'codemirror/addon/edit/closetag.js'; // autoCloseTags\nimport {myHeading, myFontSize} from './tiptap/extension'\n\nexport default {\n    props: {\n    content: {\n      type: String,\n      default: () => {\n        return \"\";\n      },\n    },\n  },\n  data () {\n    return {\n      num:9999,\n      catalog:[],\n      extensions: [\n        new Doc(),\n        new Text(),\n        new Paragraph(),\n        new Bold({ bubble: true }),\n        new Underline({ bubble: true }),\n        new Italic({ bubble: true }),\n        new Strike({ bubble: true }),\n        new Code(),\n        new FontType(),\n        // new FontSize(),\n        new myFontSize({ bubble: true }),\n        new TextColor({ bubble: true }),\n        new TextHighlight({ bubble: true }),\n        new FormatClear(),\n        new myHeading({ level: 5,bubble: true }),\n        // new Heading({ level: 5,bubble: true }),\n        new ListItem(),\n        new BulletList({ bubble: true }),\n        new OrderedList({ bubble: true }),\n        new TodoItem(),\n        new TodoList({ bubble: true }),\n        new TextAlign(),\n        new LineHeight({ bubble: true }),\n        new Indent(),\n        new Blockquote(),\n        new CodeBlock(),\n        new Link(),\n        new Image({\n          uploadRequest(file) {\n            const fd = new FormData()\n            fd.append('file', file)\n            return $.ajax({\n              url : '/mgr/document//upload/jvs-public',\n              type : 'POST',\n              data : fd,\n              headers: {\n                \"Authorization\" : 'Bearer ' + store.getters.access_token\n              },\n              // 用于对data参数进行序列化处理 这里必须false\n              processData : false,\n              // 不去设置Content-Type请求头\n              contentType : false, //必须\n              beforeSend:function(){},\n              success : function(result) {},\n              error : function(res) {\n                console.log(\"error\");\n              }\n            }).then(result => {\n              if(result.code == 0 && result.data && result.data.fileLink) {\n                // let url = result.data.filelink.indexOf('?') ? result.data.filelink.split('?')[0] : result.data.filelink\n                return result.data.fileLink\n              }else{\n                console.log(\"失败\");\n              }\n            })\n          }\n        }),\n        new Iframe(),\n        new Table({ resizable: true }),\n        new TableHeader(),\n        new TableCell(),\n        new TableRow(),\n        new HorizontalRule(),\n        new Print(),\n        new Preview(),\n        new SelectAll(),\n        new Fullscreen(),\n        new CodeView({\n          codemirror,\n          codemirrorOptions: {\n            styleActiveLine: true,\n            autoCloseTags: true,\n          },\n        }),\n        new TrailingNode(),\n        new History(),\n      ],\n      html: \"\",\n      type: \"document_html\",\n      openCatalog: true\n    };\n  },\n  methods: {\n    onUpdate(output, options) {\n      const { getHTML,getJSON } = options;\n      this.html = getHTML();\n      this.hTree()\n      this.$emit(\"contetnChange\", this.html);\n    },\n    // 去除空白悬浮工具栏显示\n    onFocus (e) {\n      let tooltipList = $('.el-tiptap-editor__menu-bubble')\n      if(tooltipList.length > 0) {\n        for(let i in tooltipList) {\n          if(tooltipList[i].style) {\n            if(!tooltipList[i].children || tooltipList[i].children.length == 0) {\n              tooltipList[i].style.display = \"none\"\n            }else{\n              tooltipList[i].style.display = \"flex\"\n            }\n          }\n        }\n      }\n    },\n    hTree(){\n      const article_content = document.querySelector(\".ProseMirror\")\n      const nodes = [\"H1\", \"H2\"];\n      let titles = [];\n      if(article_content) {\n        article_content.childNodes.forEach((e, index) => {\n          if (nodes.includes(e.nodeName) && e.innerText.replace(/^(\\s|\\xA0)+|(\\s|\\xA0)+$/g, '')) {\n            titles.push({\n              title: e.innerText,\n              level: Number(e.nodeName.substring(1, 2)),\n              nodeName: e.nodeName,\n              id: e.id\n            });\n          }\n        });\n      }\n      this.catalog = titles;\n    },\n    pasteImage (url) {\n      let editor = this.$refs.myhtml.editor\n      let view = editor.view\n      const node = view.state.schema.nodes.image.create({\n        src: url,\n        width: null\n      });\n      const transaction = view.state.tr.replaceSelectionWith(node);\n      view.dispatch(transaction)\n    },\n    pasteImg(e) {\n      const cbd = e.clipboardData;\n\t    const ua = window.navigator.userAgent;\n\t    // 如果是 Safari 直接 return\n\t    if ( !(e.clipboardData && e.clipboardData.items) ) {\n\t      return ;\n\t    }\n\t    if(cbd.items && cbd.items.length === 2 && cbd.items[0].kind === \"string\" && cbd.items[1].kind === \"file\" &&\n        cbd.types && cbd.types.length === 2 && cbd.types[0] === \"text/plain\" && cbd.types[1] === \"Files\" &&\n        ua.match(/Macintosh/i) && Number(ua.match(/Chrome\\/(\\d{2})/i)[1]) < 49){\n        return;\n\t    }\n\t    for(let i = 0; i < cbd.items.length; i++) {\n        let item = cbd.items[i];\n        if (item.kind == 'string') {\n          return;\n        }\n        if(item.kind == \"file\"){\n          // blob 就是从剪切板获得的文件，可以进行上传或其他操作\n          const blob = item.getAsFile();\n          // console.log(blob)\n          if (blob.size === 0) {\n            return;\n          }\n          const fd = new FormData()\n          fd.append('file', blob)\n          $.ajax({\n            url : '/mgr/document//upload/jvs-public',\n            type : 'POST',\n            data : fd,\n            headers: {\n              \"Authorization\" : 'Bearer ' + store.getters.access_token\n            },\n            // 用于对data参数进行序列化处理 这里必须false\n            processData : false,\n            // 不去设置Content-Type请求头\n            contentType : false, //必须\n            beforeSend:function(){},\n            success : function(result) {},\n            error : function(res) {\n              console.log(\"error\");\n            }\n          }).then(result => {\n            if(result.code == 0 && result.data && result.data.fileLink) {\n              // let url = result.data.filelink.indexOf('?') ? result.data.filelink.split('?')[0] : result.data.filelink\n              this.pasteImage(result.data.fileLink);\n            }else{\n              console.log(\"失败\");\n            }\n          })\n        }\n      }\n    },\n    openClose (bool) {\n      this.openCatalog = bool\n    }\n  },\n  created(){\n    setTimeout(() => {\n      this.hTree()\n    }, 100)\n  },\n};\n</script>\n<style lang=\"scss\" scoped>\n.catalog-list {\n  width: 200px;\n  position: fixed;\n  top: 130px;\n  right: 50px;\n  background: #fff;\n  .catalog{\n    padding-left: 0;\n    width: 100%;\n    font-size: 14px;\n  }\n  .catalog li{\n    width: 100%;\n    overflow: hidden;\n    white-space: nowrap;\n    text-overflow: ellipsis;\n    list-style: inside;\n  }\n  .catalog .catalog-item2{\n    color: #868ba1;\n  }\n  .catalog li a{\n    color: #333333;\n  }\n  .catalog li:hover a{\n    // background: #ebedef;\n    color: #007fff!important;\n  }\n  .catalog .active,.catalog .active a{\n    // background: #ebedef;\n    color: #007fff!important;\n    outline:none\n  }\n}\n.catalog-list-close{\n  width: 20px;\n}\n.el-tiptap-editor__wrapper {\n  display: flex;\n  flex-wrap:nowrap;\n  justify-content:space-between;\n  min-height: 650px;\n  width: 100%;\n  padding: 35px 120px;\n  position: relative;\n  ::v-deep.el-tiptap-editor{\n    min-height: 650px;\n    width: 78%;\n    .el-tiptap-editor__content li>p:first-child:before{\n      width: 30px;\n    }\n  }\n}\n.catalog-tooltip{\n  font-size: 20px;\n  cursor: pointer;\n  float: right;\n}\n</style>\n\n"
  },
  {
    "path": "src/views/common/Topology.vue",
    "content": "<template>\n  <div class=\"home my-topology\">\n    <!-- 使用topology组件 -->\n    <topology\n      :data=\"content\"\n      id=\"previewFalse\"\n    />\n  </div>\n</template>\n\n<script>\nimport Vue from 'vue';\n// 导入topology-vue组件\nimport topology from 'topology-vue';\n// 需要导入topology-vue.css\nimport 'topology-vue/topology-vue.css';\nVue.use(topology);\nexport default {\n  name: 'Home',\n  props: {\n    content: {\n      type: Object,\n      default:()=>{\n        return {};\n      }\n    }\n  },\n  data() {\n    return {\n      // content:{},\n    };\n  },\n  created() {\n  },\n  mounted() {},\n  methods: {\n    getVal(){\n      return JSON.stringify(window.previewFalse.canvas.data)\n    },\n  },\n};\n</script>\n<style lang=\"scss\">\n.home {\n  height: 650px;\n  width: 100%;\n}\n.le5le-topology .menus .back{\n  display: none;\n}\n.le5le-topology .menus>div>div:first-child,.le5le-topology .menus>div>div:last-child{\n  display: none;\n}\n.le5le-topology .menus>div{\n  display: flex;\n  justify-content: center!important;\n}\n.le5le-topology .materials .navs .nav-tab span:first-child{\n  display: none;\n}\n.le5le-topology .materials .navs .nav-tab span:last-child{\n  display: none;\n}\n.le5le-topology .file-settings .settings .tips>ul{\n  margin-left: -20px;\n}\n.my-topology{\n  .editor{\n    .materials{\n      .search, .navs{\n        display: none;\n      }\n      .panels{\n        height: 100%;\n        padding-bottom: 0;\n        .more-graphical{\n          display: none;\n        }\n      }\n    }\n    .props{\n      display: none;\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "src/views/common/api.js",
    "content": "import request from '@/router/axios'\n\n// 获取目录树\nexport function documentSearch(params) {\n  return request({\n    url: `/mgr/document/dcLibrary/document/search`,\n    method: \"get\",\n    params: params\n  });\n}\n\n//获取文件已读次数\nexport function readNumber(id) {\n  return request({\n    url: `/mgr/document/dcLibrary/document/read/total/${id}`,\n    method: \"get\",\n  });\n}\n\n// 获取文档编辑记录\nexport function editLog(params) {\n  return request({\n    url: `/mgr/document/dcLibrary/document/edit/log`,\n    method: 'get',\n    params: params\n  })\n}\n\n//获取点赞人员列表\nexport function getLike(params) {\n  return request({\n    url:`/mgr/document/dcLibrary/like`,\n    method:'get',\n    params: params\n  })\n}\n\n//点赞操作\nexport function giveGood(params) {\n  return request({\n    url:`/mgr/document/dcLibrary/like`,\n    method:'post',\n    params: params\n  })\n}\n\n//获取知识库留言分页\nexport function getComment(id,data) {\n  return request({\n    url:`/mgr/document/dcLibrary/comment/page/${id}`,\n    method:'get',\n    params: data\n  })\n}\n\n//添加留言\nexport function leaveMsg(data) {\n  // console.log(data);\n  return request({\n    // url:`/mgr/document/dcLibrary/comment/save/${data.id}?message=${data.message}`,\n    url:`/mgr/document/dcLibrary/comment/save`,\n    method:'post',\n    data: data\n  })\n}\n// 重命名知识库-目录-文档，或设置知识库\nexport function setLibrary(data) {\n  return request({\n    url:`/mgr/document/dcLibrary`,\n    method:'put',\n    data: data\n  })\n}\n\n// 添加知识库、目录、文件\nexport function addLibrary(data) {\n  return request({\n    url:`/mgr/document/dcLibrary`,\n    method:'post',\n    data: data\n  })\n}\n\n// 查询知识库成员\nexport function queryMember(id, params) {\n  return request({\n    url:`/mgr/document/dcLibrary/query/member/${id}`,\n    method:'get',\n    params: params\n  })\n}\n\n// 知识库成员角色修改\nexport function setMemberRole(documentId, userId, role) {\n  return request({\n    url:`/mgr/document/dcLibrary/modify/role/${documentId}/${userId}/${role}`,\n    method:'put'\n  })\n}\n\n// 添加知识库成员\nexport function addMember(data) {\n  return request({\n    url:`/mgr/document/dcLibrary/add/member`,\n    method:'put',\n    data: data\n  })\n}\n\n// 预览文档\nexport const preview = (id) => {\n  return request({\n    url: `/mgr/document/dcLibrary/preview/document/${id}`,\n    method: 'get'\n  })\n}\n\n// 保存文档\nexport const saveContent = (contentId, data) => {\n  return request({\n    url: `/mgr/document/dcLibrary/save/content/${contentId}`,\n    method: 'post',\n    data: data\n  })\n}\n\n// 删除知识库成员\nexport function delMember(documentId, userId) {\n  return request({\n    url:`/mgr/document/dcLibrary/delete/member/${documentId}/${userId}`,\n    method:'delete',\n  })\n}\n\n// 删除用户留言\nexport function delMsg(id) {\n  return request({\n    url:`/mgr/document/dcLibrary/comment/del/${id}`,\n    method:'delete',\n  })\n}\n\n// 自定义上传富文本图片\nexport function uploadImage(data) {\n  return request({\n    url:`/api/file/upload/jvshtmleditor`,\n    method:'post',\n    data: data\n  })\n}"
  },
  {
    "path": "src/views/common/draw.js",
    "content": "import { consoleDraw } from '@/util/util'\nexport const declare = () => {\n  consoleDraw('%c此框架为公共免费使用，为保证大家有一个流畅的使用环境，特此将所有网络请求QPS进行限制， 如果发现长期存在恶意或爆破行为，则将禁封IP，或直接将此平台进行下架，开源不易希望共同维护。', \n  ['font-size: 12px;color: #7266d5;'])\n  consoleDraw('%cw%cy%cQ%cA%cQ', [\n    'color: #224380;font-size: 20px;margin-right: 5px;font-weight: 600;', \n    'color: #58A7F2;font-size: 20px;', \n    'font-size: 24px;background: #F4605F;color: #fff;padding: 5px;', \n    'border: 1px solid #8F4CFF;padding: 5px;border-radius: 50%;',\n    'font-size: 24px;background: #F4605F;color: #fff;padding: 5px;'\n  ])\n}"
  },
  {
    "path": "src/views/common/search.vue",
    "content": "<template>\n  <div class=\"knowledge-search-com\">\n    <h5 v-if=\"listData && listData.length > 0\" class=\"total-title\">找到<b>{{listData.length}}</b>个结果</h5>\n    <div v-if=\"!listData || listData.length == 0\" class=\"empty-search-box\">\n      <span>抱歉，没有找到相关搜索内容！</span>\n    </div>\n    <div class=\"search-list\" style=\"margin-top:30px\">\n      <div class=\"search-list-item\" v-for=\"(item, index) in listData\" :key=\"'search-list-item'+index+'-'+item.docId\">\n        <div class=\"search-list-item-top\">\n          <div>\n            <img :src=\"getIcon(item.type) || libiconImg\" @click=\"openItem(item)\" />\n            <p v-html=\"item.name\" @click=\"openItem(item)\"></p>\n          </div>\n          <div class=\"search-list-item-top-right\">\n            <div class=\"time-info\" v-if=\"id\">\n              <p>\n                <i class=\"el-icon-user\"></i>\n                <span>{{item.authorName}}</span>\n              </p>\n              <p>\n                <i class=\"el-icon-time\"></i>\n                <span>{{item.createTime}}</span>\n              </p>\n            </div>\n            <p v-else>{{item.knowledgeName}}</p>\n          </div>\n        </div>\n        <section v-if=\"item.content!=''\" v-html=\"item.content\"></section>\n        <div class=\"time-info\" v-if=\"!id\">\n          <p>\n            <i class=\"el-icon-user\"></i>\n            <span class=\"nameWidth\">{{item.authorName}}</span>\n          </p>\n          <p>\n            <i class=\"el-icon-time\"></i>\n            <span>{{item.createTime}}</span>\n          </p>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n<script>\nimport libicon from './img/libitem.png'\nimport {documentSearch} from './api'\nimport {imgIcon} from '../my/icon/index'\nexport default {\n  components: {},\n  props: {\n    keyword: {\n      type: String\n    },\n    id: {\n      type: String\n    }\n  },\n  data () {\n    return {\n      libiconImg: libicon,\n      listData: [],\n      imgIconList: imgIcon,\n    }\n  },\n  methods: {\n    documentSearchHandle (params) {\n      documentSearch(params).then(res => {\n        // console.log(res)\n        if(res.data.code == 0) {\n          let temp = res.data.data.records\n          this.listData = temp\n        }\n      })\n    },\n    searchHandle () {\n      let obj = {}\n      if(this.id) {\n        obj.knowledgeId = this.id\n      }\n      if(this.keyword) {\n        obj.keyword = this.keyword\n      }\n      let str = obj.keyword.replace(/^(\\s|\\xA0)+|(\\s|\\xA0)+$/g, '')\n      if(str) {\n        obj.keyword = str\n        this.documentSearchHandle(obj)\n      }\n    },\n    openItem (item) {\n      if(this.$route.path == '/index') {\n        this.$router.push({path: `/view?id=${item.knowledgeId}&docId=${item.docId}&type=${item.type}`})\n      }else{\n        this.$router.push({path: `/view?id=${item.knowledgeId}&docId=${item.docId}&type=${item.type}`,query:{id:item.knowledgeId,docId:item.docId,type:item.type}})\n        this.$emit('openDoc', item)\n      }\n    },\n    getIcon (type) {\n      let src = \"\"\n      switch(type) {\n        case 'directory': src = this.imgIconList.file;break;\n        case 'document_html': src = this.imgIconList.world;break;\n        case 'document_xlsx': src = this.imgIconList.excel;break;\n        case 'document_map': src = this.imgIconList.naotu;break;\n        case 'document_flow': src = this.imgIconList.flow;break;\n        case 'document_image': src = this.imgIconList.tupian;break;\n        case 'document_txt': src = this.imgIconList.txt;break;\n        case 'document_ppt': src = this.imgIconList.ppt;break;\n        default: src = this.imgIconList.file;break;\n      }\n      return src\n    },\n  },\n  created () {\n    this.searchHandle()\n  },\n  watch: {\n    keyword: {\n      handler (newVal, oldVal) {\n        if(newVal != oldVal) {\n          this.searchHandle()\n        }\n      }\n    }\n  }\n}\n</script>\n<style lang=\"scss\">\n.knowledge-search-com{\n  width: 100%;\n  height: 100%;\n  overflow: hidden;\n  overflow-y: auto;\n  // padding: 40px 145px;\n  box-sizing: border-box;\n  .total-title{\n    margin: 0 0 0 20px;\n    font-size: 18px;\n    font-family: Source Han Sans CN;\n    font-weight: 500;\n    line-height: 20px;\n    color: #333333;\n    b{\n      color: #0062FF;\n    }\n  }\n  .empty-search-box{\n    width: 100%;\n    height: 370px;\n    background-image: url('../../const/img/emptyImage.png');\n    background-position: center;\n    background-repeat: no-repeat;\n    position: relative;\n    span{\n      position: absolute;\n      left: 0;\n      right: 0;\n      top: 0;\n      bottom: 0;\n      margin: auto;\n      top: calc(50% + 100px);\n      width: 100%;\n      height: 32px;\n      line-height: 32px;\n      text-align: center;\n      color: #909399;\n      font-size: 12px;\n    }\n  }\n  .search-list-item{\n    padding: 25px 20px;\n    .search-list-item-top{\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n    div{\n      display: flex;\n      align-items: center;\n      img{\n        display: block;\n        width: 20px;\n        height: 22px;\n        margin-right: 20px;\n        cursor: pointer;\n      }\n      p{\n        font-size: 18px;\n        font-family: Source Han Sans CN;\n        font-weight: 500;\n        line-height: 25px;\n        color: #333333;\n        margin: 0;\n        cursor: pointer;\n      }\n    }\n    .search-list-item-top-right{\n      p{\n        cursor: text;\n      }\n    }\n    section{\n      height: 50px;\n      font-size: 16px;\n      font-family: Source Han Sans CN;\n      font-weight: 400;\n      line-height: 25px;\n      color: #868BA1;\n      margin-top: 27px;\n      width: 100%;\n      text-overflow: -o-ellipsis-lastline;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      display: -webkit-box;\n      -webkit-line-clamp: 2;\n      line-clamp: 2;\n      -webkit-box-orient: vertical;\n    }\n    em {\n      color: #0062FF;\n      font-style: normal;\n    }\n    .time-info{\n      display: flex;\n      justify-content: flex-end;\n      margin-top: 10px;\n      p{\n        display: flex;\n        align-items: center;\n        margin-left: 30px;\n        height: 25px;\n        line-height: 25px;\n        i, span{\n          font-size: 14px;\n          color: #868BA1;\n        }\n        i{\n          margin-right: 10px;\n          font-size: 16px!important;\n        }\n        .el-icon-user{\n          font-size: 18px!important;\n        }\n        .nameWidth{\n          width: 60px;\n          white-space: nowrap;\n          overflow: hidden;\n          text-overflow: ellipsis;\n        }\n      }\n    }\n  }\n  .search-list-item:hover{\n    background: #F6F6F6;\n  }\n}\n\n</style>\n"
  },
  {
    "path": "src/views/common/show.vue",
    "content": "<template>\n  <div class=\"doc-lib-show preview-editor-context\">\n    <topology v-if=\"type == 'document_flow'\" preview=\"true\" :data=\"data\" id=\"previewTrue\" style=\"height:650px\" />\n    <!-- <div class=\"htmShow\" v-if=\"type == 'document_html'\" v-html=\"content\"></div> -->\n    <div class=\"htmShow\" v-if=\"type == 'document_html'\">\n      <el-tiptap\n        height=\"100%\"\n        lang=\"zh\"\n        :readonly=\"true\"\n        :charCounterCount=\"false\"\n        :extensions=\"extensions\"\n        :content=\"tipcont\"\n        :spellcheck=\"false\"\n        :menu-bubble-options=\"{ 'keep-in-bounds': false }\"\n      />\n      <ul class=\"catalog\">\n        <template v-for=\"(item, index) in catalog\">\n          <li :key=\"index\" :style=\"{ paddingLeft: item.level * 22 + 'px' }\" @click=\"num=index\" :class=\"index==num?'active':''\">\n            <a\n              :href=\"'#' + item.id\"\n              :style=\"{color:(item.level==1?'#333333':'#868BA1') }\"\n              >{{ item.title }}</a\n            >\n          </li>\n        </template>\n      </ul>\n    </div>\n    <div class=\"outer1\" v-if=\"type == 'document_map'\">\n      <div id=\"map1\" style=\"width: 1000px; height: 500px\"></div>\n    </div>\n    <div class=\"hello1\" v-if=\"type == 'document_xlsx'\">\n      <div style=\"position: absolute; top: 0\">\n        <!-- <input style=\"font-size: 16px\" type=\"file\" @change=\"uploadExcel\" /> -->\n      </div>\n      <div\n        id=\"luckysheet1\"\n        style=\"\n          padding: 0px;\n          position: absolute;\n          width: 100%;\n          height:650px;\n          left: 0px;\n          top: 0px;\n          bottom: 0px;\n        \"\n      ></div>\n\n      <div\n        v-show=\"isMaskShow1\"\n        style=\"\n          position: absolute;\n          z-index: 1000000;\n          left: 0px;\n          top: 0px;\n          bottom: 0px;\n          right: 0px;\n          background: rgba(255, 255, 255, 0.8);\n          text-align: center;\n          font-size: 40px;\n          align-items: center;\n          justify-content: center;\n          display: flex;\n        \"\n      >\n        Downloading\n      </div>\n    </div>\n  </div>\n</template>\n<script>\nimport \"@/styles/tiptapView.scss\";\nimport MindElixir, { E } from \"mind-elixir\";\nimport Vue from 'vue';\nimport Topology from 'topology-vue';\nVue.use(Topology);\nimport {\n  Doc,\n  Text,\n  Paragraph,\n  Bold,\n  Underline,\n  Italic,\n  Strike,\n  Code,\n  FontType,\n  FontSize,\n  TextColor,\n  TextHighlight,\n  FormatClear,\n  Heading,\n  ListItem,\n  BulletList,\n  OrderedList,\n  TodoItem,\n  TodoList,\n  TextAlign,\n  LineHeight,\n  Indent,\n  Blockquote,\n  CodeBlock,\n  Link,\n  Image,\n  Table,\n  TableHeader,\n  TableCell,\n  TableRow,\n  Iframe,\n  TrailingNode,\n  HorizontalRule,\n  Fullscreen,\n  Print,\n  Preview,\n  SelectAll,\n  History,\n  CodeView,\n} from 'element-tiptap';\n\nimport codemirror from 'codemirror';\nimport 'codemirror/lib/codemirror.css'; // import base style\nimport 'codemirror/mode/xml/xml.js'; // language\nimport 'codemirror/addon/selection/active-line.js'; // require active-line.js\nimport 'codemirror/addon/edit/closetag.js'; // autoCloseTags\nimport {myHeading} from './tiptap/extension'\nexport default {\n  props: {\n    type: {\n      type: String\n    },\n    excelcont: {\n      type: Array,\n      default: () => {\n        return [];\n      },\n    },\n    tipcont: {\n      type: String,\n      default: () => {\n        return \"\";\n      },\n    },\n    content: {\n      type: Object,\n      default: () => {\n        return {};\n      },\n    },\n  },\n  mounted() {\n    this.cj();\n  },\n  data() {\n    return {\n      catalog:[],\n      num:9999,\n      isMaskShow1: false,\n      data:{},\n      extensions: [\n        new Doc(),\n        new Text(),\n        new Paragraph(),\n        new Bold({ bubble: true }),\n        new Underline({ bubble: true }),\n        new Italic({ bubble: true }),\n        new Strike({ bubble: true }),\n        new Code(),\n        new FontType(),\n        new FontSize(),\n        new TextColor({ bubble: true }),\n        new TextHighlight({ bubble: true }),\n        new FormatClear(),\n        new myHeading({ level: 5,bubble: true }),\n        // new Heading({ level: 5 }),\n        new ListItem(),\n        new BulletList(),\n        new OrderedList(),\n        new TodoItem(),\n        new TodoList(),\n        new TextAlign(),\n        new LineHeight(),\n        new Indent(),\n        new Blockquote(),\n        new CodeBlock(),\n        new Link(),\n        new Image(),\n        new Iframe(),\n        new Table({ resizable: true }),\n        new TableHeader(),\n        new TableCell(),\n        new TableRow(),\n        new HorizontalRule(),\n        new Print(),\n        new Preview(),\n        new SelectAll(),\n        new Fullscreen(),\n        new CodeView({\n          codemirror,\n          codemirrorOptions: {\n            styleActiveLine: true,\n            autoCloseTags: true,\n          },\n        }),\n        new TrailingNode(),\n        new History(),\n      ],\n    }\n  },\n   methods: {\n     hTree(){\n      const article_content = document.querySelector(\".ProseMirror\")\n      const nodes = [\"H1\", \"H2\"];\n      let titles = [];\n      article_content.childNodes.forEach((e, index) => {\n        if (nodes.includes(e.nodeName)) {\n          titles.push({\n            title: e.innerText, //innerHTML,\n            level: Number(e.nodeName.substring(1, 2)),\n            nodeName: e.nodeName,\n            id: e.id\n          });\n        }\n      });\n      this.catalog = titles;\n    },\n    cj() {\n      switch (this.type) {\n        case 'document_xlsx':\n            var options={\n            container: \"luckysheet1\", //容器的ID\n            title: \"bi\", // 工作簿名称\n            lang: \"zh\", // 设定表格语言 国际化设置，允许设置表格的语言，支持中文(\"zh\")和英文(\"en\")\n            allowCopy: false, // 是否允许拷贝\n            showtoolbar: false, // 是否显示工具栏\n            showinfobar: false, // 是否显示顶部信息栏\n            showsheetbar: false, // 是否显示底部sheet页按钮\n            showstatisticBar: false, // 是否显示底部计数栏\n            sheetBottomConfig: false, // sheet页下方的添加行按钮和回到顶部按钮配置\n            allowEdit: false, // 是否允许前台编辑\n            enableAddRow: false, // 允许增加行\n            enableAddCol: false, // 允许增加列\n            userInfo: false, // 右上角的用户信息展示样式\n            showRowBar: false, // 是否显示行号区域\n            showColumnBar: false, // 是否显示列号区域\n            sheetFormulaBar: false, // 是否显示公式栏\n            enableAddBackTop: true,//返回头部按钮\n            rowHeaderWidth: 0,//纵坐标\n            columnHeaderHeight: 0,//横坐标\n            showstatisticBarConfig: {\n              count:false,\n              view:false,\n              zoom:false,\n            },\n            showsheetbarConfig: {\n              add: false, //新增sheet\n              menu: false, //sheet管理菜单\n              sheet: true, //sheet页显示\n            },\n            hook: {\n              cellMousedown:this.cellMousedown,//绑定鼠标事件\n            },\n            forceCalculation: false,//强制计算公式\n          }\n          if(this.excelcont==''){\n            luckysheet.create(options);\n          }else{\n            luckysheet.create({\n              ...options,\n              data: this.excelcont,\n            });\n          }\n          break;\n          case 'document_map':\n            var options={\n              locale: 'zh_CN',\n              el: \"#map1\",\n              direction: MindElixir.SIDE,\n              draggable: false, // 启用拖动 default true\n              contextMenu: false, // 启用右键菜单 default true\n              toolBar: false, // 启用工具栏 default true\n              nodeMenu: false, // 启用节点菜单 default true\n              keypress: false, // 启用快捷键 default true\n              editable: false\n            }\n            if(this.content==''){\n              let mind = new MindElixir(options);\n              mind.init()\n              E(\"node-id\");\n            }else{\n              let mind = new MindElixir({\n                ...options,\n                data: MindElixir.new('new topic'),\n                data: this.content,\n              });\n              mind.init()\n              E(\"node-id\");\n            }\n          break;\n          case 'document_flow':\n            this.data=this.content\n          break;\n        default:\n          break;\n      }\n    },\n  },\n  created(){\n    setTimeout(() => {\n      this.hTree()\n    }, 100)\n  },\n}\n</script>\n<style lang=\"scss\" scoped>\n.catalog{\n  padding-left: 0;\n  width: 18%;\n  height: 100px;\n  position: sticky;\n  top: 10px;\n  font-size: 14px;\n\n}\n.catalog li{\n  width: 100%;\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n}\n.catalog li a{\n  color: #333333;\n}\n.catalog li:hover{\n  //background: #ebedef;\n}\n.catalog .active,.catalog .active a{\n  //background: #ebedef;\n  color: #007fff!important;\n  outline:none\n}\n.htmShow {\n  display: flex;\n  flex-wrap:nowrap;\n  justify-content:space-between;\n  min-height: 650px;\n  width: 100%;\n  padding: 35px 120px;\n  position: relative;\n  .el-tiptap-editor{\n    min-height: 650px;\n    width: 78%;\n  }\n}\n.hello1{\n  min-height: 650px;\n}\n/* table 样式 */\n.preview-editor-context {\n  height: 100%;\n  // overflow: hidden;\n  table {\n    border-top: 1px solid #ccc;\n    border-left: 1px solid #ccc;\n\n  }\n  table td,\n  table th {\n    border-bottom: 1px solid #ccc;\n    border-right: 1px solid #ccc;\n    padding: 3px 5px;\n    height: 29px;\n  }\n  table th {\n    border-bottom: 2px solid #ccc;\n    text-align: center;\n    background-color: rgb(241,241,241);\n  }\n\n  /* blockquote 样式 */\n  blockquote {\n    display: block;\n    border-left: 8px solid #d0e5f2;\n    padding: 5px 10px;\n    margin: 10px 0;\n    line-height: 1.4;\n    font-size: 100%;\n    background-color: #f1f1f1;\n  }\n\n  /* code 样式 */\n  code {\n    display: inline-block;\n    *display: inline;\n    *zoom: 1;\n    background-color: #f1f1f1;\n    border-radius: 3px;\n    padding: 3px 5px;\n    margin: 0 3px;\n  }\n  pre code {\n    display: block;\n  }\n\n  /* ul ol 样式 */\n  ul, ol {\n    margin: 10px 0 10px 20px;\n  }\n}\nh3 {\n  margin: 40px 0 0;\n}\nul {\n  list-style-type: none;\n  padding: 0;\n}\nli {\n  display: inline-block;\n  margin: 0 10px;\n}\na {\n  color: #42b983;\n}\n.outer1 {\n  position: relative;\n  width: 100%;\n  height: 650px;\n}\n#map1 {\n  height: 100%!important;\n  width: 100%!important;\n  overflow: auto;\n  margin-right: 0;\n}\n.outer1 #map1 .lt{\n  width: 40px;\n}\n</style>\n"
  },
  {
    "path": "src/views/common/tiptap/extension.js",
    "content": "import {Heading, FontSize} from 'element-tiptap'\nimport {convertToPX, headingToDOM, ParagraphNodeSpec, getAttrs} from './tiptapPlugin'\n\nexport class myHeading extends Heading {\n  constructor(props,myAttribute) {\n    super(props)\n  }\n  get schema () {\n    return {\n      ...ParagraphNodeSpec,\n      attrs: {\n        ...ParagraphNodeSpec.attrs,\n        level: {\n          default: 1,\n        },\n      },\n      defining: true,\n      draggable: false,\n      parseDOM: this.options.levels.map((level) => ({\n        tag: `h${level}`,\n        getAttrs,\n      })),\n      toDOM(node) {\n        const dom = headingToDOM(node);\n        const level = node.attrs.level || 1;\n        dom[0] = `h${level}`;\n        return dom;\n      },\n    }\n  }\n}\nexport class myFontSize extends FontSize {\n  constructor(props,myAttribute) {\n    super(props)\n  }\n  get schema () {\n    return {\n      attrs: {\n        px: '',\n      },\n      inline: true,\n      group: 'inline',\n      parseDOM: [\n        {\n          style: 'font-size',\n          getAttrs: (fontSize) => {\n            const attrs = {};\n            if (!fontSize) return attrs;\n            const px = convertToPX(fontSize);\n            if (!px) return attrs;\n            return {\n              px,\n            };\n          },\n        },\n      ],\n      toDOM (node) {\n        const { px } = node.attrs;\n        let attrs = {};\n        if (px) {\n          attrs.style = `font-size: ${px}px;line-height:100%;`;\n        }\n        return ['span', attrs, 0];\n      },\n    };\n  }\n}"
  },
  {
    "path": "src/views/common/tiptap/tiptapPlugin.js",
    "content": "import { v4 as uuidv4 } from 'uuid';\nconst SIZE_PATTERN = /([\\d.]+)(px || pt)/i;\nexport const Alignment = {\n  left: 'left',\n  center: 'center',\n  right: 'right',\n  justify: 'justify'\n}\nconst ALIGN_PATTERN = new RegExp(`(${Alignment.left}|${Alignment.center}|${Alignment.right}|${Alignment.justify})`);\nconst DEFAULT_LINE_HEIGHT = '100%';\nconst NUMBER_VALUE_PATTERN = /^\\d+(.\\d+)?$/;\n\n\nexport function convertToPX (styleValue) {\n  const matches = styleValue.match(SIZE_PATTERN);\n  if (styleValue.indexOf('pt') > -1) {\n    const value = matches[1] * 4 / 3;\n    return value;\n  } else {\n    const value = matches[1];\n    return value;\n  }\n}\n\nexport function headingToDOM (node) {\n  const {\n    textAlign,\n    indent,\n    lineHeight\n  } = node.attrs;\n\n  let style = '';\n  const attrs = {};\n\n  if (textAlign && textAlign !== 'left') {\n    style += `text-align: ${textAlign};`;\n  }\n\n  if (indent) {\n    attrs['data-indent'] = indent;\n  }\n\n  if (lineHeight) {\n    const cssLineHeight = transformLineHeightToCSS(lineHeight);\n    style += `line-height: ${cssLineHeight};`;\n  }\n  // 添加id\n  attrs['id'] = uuidv4()\n\n  style && (attrs.style = style);\n\n  return ['p', attrs, 0];\n}\n\nexport function getAttrs (dom) {\n  const attrs = paragraphNodeSpecGetAttrs(dom);\n  const level = dom.nodeName.match(/[H|h](\\d)/)[1];\n  attrs.level = Number(level);\n  return attrs;\n}\n\n\nexport const ParagraphNodeSpec = {\n  attrs: {\n    textAlign: { default: null },\n    indent: { default: null },\n    lineHeight: { default: null },\n  },\n  content: 'inline*',\n  group: 'block',\n  parseDOM: [{\n    tag: 'p',\n    paragraphNodeSpecGetAttrs,\n  }],\n  toDOM,\n};\n\nfunction paragraphNodeSpecGetAttrs (dom) {\n  let {\n    textAlign,\n    lineHeight,\n  } = dom.style;\n\n  let align = dom.getAttribute('data-text-align') || textAlign || '';\n  align = ALIGN_PATTERN.test(align) ? align : null;\n\n  const indent = parseInt(dom.getAttribute('data-indent'), 10) || 0;\n\n  lineHeight = transformCSStoLineHeight(lineHeight) || null;\n\n  return {\n    textAlign: align,\n    indent,\n    lineHeight,\n  };\n}\n\nfunction toDOM (node) {\n  const {\n    textAlign,\n    indent,\n    lineHeight,\n  } = node.attrs;\n\n  let style = '';\n  const attrs = {};\n\n  if (textAlign && textAlign !== 'left') {\n    style += `text-align: ${textAlign};`;\n  }\n\n  if (indent) {\n    attrs['data-indent'] = indent;\n  }\n\n  if (lineHeight) {\n    const cssLineHeight = transformLineHeightToCSS(lineHeight);\n    style += `line-height: ${cssLineHeight};`;\n  }\n\n  style && (attrs.style = style);\n\n  return ['p', attrs, 0];\n}\n\nfunction transformCSStoLineHeight (value) {\n  if (!value) return '';\n  if (value === DEFAULT_LINE_HEIGHT) return '';\n\n  let strValue = value;\n\n  if (NUMBER_VALUE_PATTERN.test(value)) {\n    const numValue = parseFloat(value);\n    strValue = String(Math.round(numValue * 100)) + '%';\n    if (strValue === DEFAULT_LINE_HEIGHT) return '';\n  }\n\n  return parseFloat(strValue) / LINE_HEIGHT_100 + '%';\n}"
  },
  {
    "path": "src/views/common/toolbar.vue",
    "content": "<template>\n  <div class=\"knowledge-tool-bar\">\n    <!-- , 'directory' -->\n    <!-- <p v-if=\"['knowledge'].indexOf(nodeInfo.type) > -1\">\n      <el-button\n        style=\"padding: 0;\"\n        type=\"text\"\n        @click=\"onCopy\"\n        v-clipboard:copy=\"getpageUrl(nodeInfo)\"\n        v-clipboard:success=\"onCopy\"\n        v-clipboard:error=\"onError\"\n        size=\"mini\"\n      ><i class=\"el-icon-share\"></i></el-button>\n    </p> -->\n    <p @click=\"peopleSet\" v-if=\"nodeInfo.type == 'knowledge'\">\n      <i class=\"el-icon-s-custom\"></i>\n    </p>\n    <p @click=\"set\" v-if=\"nodeInfo.type == 'knowledge'\">\n      <i class=\"el-icon-s-tools\"></i>\n    </p>\n    <el-dialog :visible.sync=\"dialogVisible\" top=\"6vh\" :class=\"{'dialog form-fullscreen-dialog': true, 'personDialog': dialogType == 'person'}\" :append-to-body=\"true\" :before-close=\"handleClose\">\n      <span slot=\"title\" class=\"dialogHeader\">\n        <div class=\"dialogLine\"></div>\n        <span>{{ title }}</span>\n        <jvs-button v-if=\"dialogType == 'person' && hasRight\" type=\"primary\" size=\"mini\" style=\"position: absolute;right: 50px;\" @click=\"addNewMember\">\n          <i class=\"el-icon-plus\"></i>点击邀请\n        </jvs-button>\n        <div v-if=\"dialogType != 'person'\" class=\"line-box\"></div>\n      </span>\n      <KnowSet v-if=\"dialogType == 'set'\" :nodeInfo=\"nodeInfo\" :hasRight=\"hasRight\" @close=\"closeHandle\"></KnowSet>\n      <MemberSet v-if=\"dialogType == 'person'\" :nodeInfo=\"nodeInfo\" :addNew=\"addNew\" @close=\"closeHandle\"></MemberSet>\n    </el-dialog>\n  </div>\n</template>\n<script>\nimport KnowSet from '@/views/common/KnowSet.vue'\nimport MemberSet from '@/views/common/MemberSet.vue'\nexport default {\n  components: {KnowSet,MemberSet},\n  props: {\n    id: {\n      type: String,\n    },\n    nodeInfo: {\n      type: Object\n    },\n    hasRight: {\n      type: Boolean\n    }\n  },\n  data() {\n    return {\n      dialogVisible: false,\n      title: \"\",\n      dialogType: '', // share  person  set\n      addNew: -1\n    };\n  },\n  methods: {\n    set() {\n      this.title = \"文档设置\";\n      this.dialogType = 'set'\n      this.dialogVisible = true;\n    },\n    peopleSet(){\n      this.title = \"文档人员设置\";\n      this.dialogType = 'person'\n      this.dialogVisible = true;\n    },\n    handleClose () {\n      if(this.dialogType == 'person') {\n        this.$emit('fresh', true)\n      }\n      this.dialogVisible = false;\n      this.dialogType = ''\n    },\n    closeHandle (data) {\n      if(data) {\n        this.handleClose()\n        this.$emit('fresh', data)\n      }\n    },\n    addNewMember () {\n      this.addNew = Math.random()\n    },\n    // 生成地址\n    getpageUrl (row) {\n      let str = location.origin\n      str += (`/jvs-knowledge-ui/#/view?id=${row.id}&type=${row.type}`)\n      return str\n    },\n    // 复制\n    onCopy (e) {\n      // console.log(e.text)\n    },\n    onError (e) {\n      // console.log(e)\n    },\n  },\n  created() {},\n};\n</script>\n<style lang=\"scss\" scoped>\n.knowledge-tool-bar {\n  display: flex;\n  padding: 10px 0;\n  background: #fff;\n  box-shadow: 0 0 15px #dcdada;\n  p {\n    margin: 0;\n    margin-left: 10px;\n    border-right: 1px solid #eeeeee;\n    padding-right: 10px;\n    i {\n      font-size: 22px;\n      color: #c7c7c7;\n      cursor: pointer;\n    }\n  }\n  p:nth-last-of-type(1) {\n    border: 0;\n  }\n}\n.dialogHeader {\n  display: flex;\n  font-size: 20px;\n  font-family: SourceHanSansCN-Regular;\n  color: #333333;\n}\n.dialogHeader span {\n  margin-left: 20px;\n  font-size: 20px;\n}\n.dialogLine {\n  width: 4px;\n  height: 30px;\n  background: #4b90ee;\n  border-radius: 2px;\n}\n</style>\n<style lang=\"scss\">\n.dialog{\n  .el-dialog{\n    .el-dialog__header{\n      position: relative;\n      .dialogHeader{\n        .line-box{\n          position: absolute;\n          bottom: 0;\n          left: 20px;\n          width: calc(100% - 40px);\n          height: 1px;\n          background: #DCDFE6;\n        }\n      }\n    }\n    .el-dialog__body{\n      padding: 0 20px;\n      margin-top: 10px;\n      padding-bottom: 30px;\n    }\n  }\n}\n.personDialog{\n  .el-dialog{\n    .el-dialog__header{\n      .el-dialog__headerbtn{\n        margin-top: 3px;\n        .el-dialog__close{\n          font-size: 24px;\n        }\n      }\n    }\n    .el-dialog__body{\n      padding: 0 20px;\n      padding-bottom: 30px;\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "src/views/common/topbar.vue",
    "content": "<template>\n  <div class=\"knowledge-top-bar\">\n    <div class=\"left\" @click=\"goHome\">\n      <img :src=\"logoImg\" />\n    </div>\n    <div class=\"center\" v-if=\"alreadyLogin\">\n      <el-input\n        placeholder=\"请输入内容搜索\"\n        prefix-icon=\"el-icon-search\"\n        v-model=\"keyword\"\n        @keyup.enter.native=\"searchHandle(keyword)\"\n      >\n      </el-input>\n    </div>\n    <div class=\"right\">\n<!--      <a>帮助中心</a>-->\n      <jvs-button type=\"primary\" v-if=\"!alreadyLogin\" @click=\"goLogin\">登录</jvs-button>\n      <el-popover\n        v-if=\"alreadyLogin\"\n        placement=\"bottom-start\"\n        width=\"50\"\n        trigger=\"hover\"\n      >\n        <div class=\"top-tool-bar\">\n          <p v-if=\"false\" @click=\"gojvs\">\n            <img :src=\"pcImg\" />\n            <span>进入后台</span>\n          </p>\n          <p @click=\"goCompanyInfo\">\n            <img :src=\"pcImg\" />\n            <span>企业信息</span>\n          </p>\n          <p @click=\"loginout\">\n            <img :src=\"outImg\" />\n            <span>退出登录</span>\n          </p>\n        </div>\n        <img :src=\"userInfo.headImg ? userInfo.headImg : userImg\" slot=\"reference\" />\n      </el-popover>\n    </div>\n  </div>\n</template>\n<script>\nimport logo from './img/logo.png'\nimport user from './img/user.png'\nimport pc from './img/pc.png'\nimport out from './img/out.png'\nimport { getStore } from \"@/util/store.js\"\nimport {loginoutHandle} from \"@/api/login\"\nimport eventBus from \"@/util/eventBus\";\nexport default {\n  name: 'top-bar',\n  props: {\n    inKeyword: {\n      type: String\n    },\n    fresh: {\n      type: Boolean\n    }\n  },\n  data () {\n    return {\n      logoImg: logo,\n      userImg: user,\n      pcImg: pc,\n      outImg: out,\n      keyword: '',\n      alreadyLogin: false,\n      userInfo: {}\n    }\n  },\n  methods: {\n    goHome () {\n      if(this.$store.state.editStatus && this.$store.state.editStatus == 'ing') {\n        this.$confirm('该文档存在改动, 是否保存?', '提示', {\n          confirmButtonText: '保存',\n          cancelButtonText: '放弃',\n          type: 'warning'\n        }).then(() => {\n          eventBus.$emit('editSaveEvent', 'save')\n          return false\n        }).catch(() => {\n          if(this.$route.path != '/index') {\n            this.$router.push({path: '/index'})\n          }else{\n            this.$emit('searchClose', false)\n            this.keyword = ''\n          }\n          this.$store.state.editStatus = 'end'\n        });\n      }else{\n        if(this.$route.path != '/index') {\n          this.$router.push({path: '/index'})\n        }else{\n          this.$emit('searchClose', false)\n          this.keyword = ''\n        }\n      }\n    },\n    searchHandle (val) {\n      if(this.$store.state.editStatus && this.$store.state.editStatus == 'ing') {\n        this.$confirm('该文档存在改动, 是否保存?', '提示', {\n          confirmButtonText: '保存',\n          cancelButtonText: '放弃',\n          type: 'warning'\n        }).then(() => {\n          eventBus.$emit('editSaveEvent', 'save')\n          return false\n        }).catch(() => {\n          if(val.replace(/^(\\s|\\xA0)+|(\\s|\\xA0)+$/g, '')) {\n            this.$emit('searchChange', val)\n          }\n          this.$store.state.editStatus = 'end'\n        });\n      }else{\n        if(val.replace(/^(\\s|\\xA0)+|(\\s|\\xA0)+$/g, '')) {\n          this.$emit('searchChange', val)\n        }\n      }\n    },\n    gojvs () {\n      // location.href = location.host\n      this.$openUrl(location.origin, '_self')\n    },\n    loginout () {\n      this.$confirm(\"是否退出系统, 是否继续?\", \"提示\", {\n        confirmButtonText: \"确定\",\n        cancelButtonText: \"取消\",\n        type: \"warning\"\n      }).then(() => {\n        loginoutHandle().then(res => {\n          if(res.data.code == 0) {\n            sessionStorage.clear()\n            localStorage.clear()\n            this.$store.dispatch(\"LogOut\")\n            if(this.$route.path != '/index') {\n              this.$router.push({path: '/index'})\n            }else{\n              location.reload()\n            }\n          }\n        })\n      });\n    },\n    goLogin () {\n      this.$openLogin({\n        successClose: false,\n        closeable: true,\n        afterLogin: (dialog, res) => {\n          console.log('登录提交。。。。。')\n          dialog.handleClose()\n          this.$emit('fresh', true)\n          this.alreadyLogin = true\n          this.userInfo = getStore({name: 'userInfo'})\n        },\n        afterRegister: () => {\n          console.log('注册提交。。。。。')\n        }\n      })\n    },\n    goCompanyInfo() {\n      this.$router.push({path: '/company'})\n    }\n  },\n  created () {\n    if(getStore({name: 'userInfo'}) && getStore({name: 'tenantId'})) {\n      this.alreadyLogin = true\n      this.userInfo = getStore({name: 'userInfo'})\n    }else{\n      this.alreadyLogin = false\n      this.userInfo = {}\n    }\n    eventBus.$on(\"loginEvent\", type => {\n      switch(type) {\n        case 'loginOut':\n          sessionStorage.clear();\n          localStorage.clear();\n          this.alreadyLogin = false;\n          this.userInfo = {}\n          this.$forceUpdate();\n          break;\n        default: ;break;\n      }\n    });\n  },\n  watch: {\n    keyword: {\n      handler (newVal, oldVal) {\n        this.searchHandle(newVal)\n      }\n    },\n    inKeyword (newVal, oldVal) {\n      if(!newVal) {\n        this.keyword = ''\n      }\n    },\n    fresh: {\n      handler (newVal, oldVal) {\n        if(newVal) {\n          this.alreadyLogin = true\n          this.userInfo = getStore({name: 'userInfo'})\n        }else{\n          this.alreadyLogin = false\n        }\n        console.log(newVal)\n      }\n    }\n  }\n}\n</script>\n<style lang=\"scss\">\n.knowledge-top-bar{\n  width: 100%;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  height: 60px;\n  padding: 0 50px;\n  box-sizing: border-box;\n  border-bottom: 1px solid #eeeeee;\n  .left{\n    height: 100%;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    img{\n      height: 40px;\n      display: block;\n      cursor: pointer;\n    }\n  }\n  .center{\n    .el-input{\n      width: 460px;\n      height: 40px;\n      .el-input__inner{\n        height: 40px;\n        line-height: 40px;\n        border-radius: 30px;\n        background: #F3F3F3;\n        font-size: 14px;\n        padding-left: 40px;\n        border-color: #F3F3F3;\n        outline: none;\n      }\n      .el-input__prefix{\n        left: 15px;\n        top: 2px;\n        i{\n          font-size: 20px;\n          // line-height: 60px;\n        }\n      }\n    }\n  }\n  .right{\n    display: flex;\n    align-items: center;\n    a{\n      font-size: 18px;\n      font-family: Source Han Sans CN;\n      font-weight: 400;\n      line-height: 31px;\n      color: #333333;\n      cursor: pointer;\n    }\n    .el-button{\n      margin-left: 10px;\n      background: #3471FF;\n      font-size: 16px;\n      width: 88px;\n      height: 30px;\n      line-height: 30px;\n      padding: 0;\n      span{\n        display: block;\n      }\n    }\n    img{\n      display: block;\n      width: 36px;\n      height: 36px;\n      margin-left: 20px;\n      border-radius: 50%;\n      overflow: hidden;\n    }\n  }\n}\n.top-tool-bar{\n  padding:15px 0;\n  p{\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    padding: 0 12px;\n    margin: 0;\n    line-height: 36px;\n    img{\n      display: block;\n      width: 18px;\n      //height: 18px;\n      margin-right: 20px;\n    }\n    span{\n      font-size: 16px;\n      color: #222222;\n    }\n  }\n}\n.top-tool-bar p:hover{\n  background: #F5F7FA;\n}\n.el-popper[x-placement^=right],.el-popper[x-placement^=bottom]{\n  padding: 0!important;\n}\n</style>\n"
  },
  {
    "path": "src/views/companyInfo/index.vue",
    "content": "<template>\n  <div>\n    <topbar :inKeyword=\"topKeyword\" @searchChange=\"allSearchChange\"></topbar>\n    <div class=\"company-page\">\n      <div class=\"member\">\n        <div class=\"member-title\">企业成员</div>\n        <div style=\"width: 100%;height: 1px;background-color: #BFBFBF;margin: 20px 0;\"/>\n        <div class=\"member-content\">\n          <div class=\"member-item\" v-for=\"(item, key) in userList\" :key=\"key\">\n            <img :src=\"item.headImg\"/>\n            <div class=\"realName\">{{item.realName}}</div>\n          </div>\n        </div>\n      </div>\n      <div class=\"introduce\">\n        <div class=\"introduce-title\">软件介绍</div>\n        <div style=\"width: 100%;height: 1px;background-color: #BFBFBF;margin: 20px 0;\"/>\n        <div class=\"introduce-content\">\n          <div class=\"version\">版本号：1.0.1</div>\n          <h3>基础说明：</h3>\n          <p>无忧企业文档主要服务客群为企业用户，解决企业内部文档编辑、知识沉淀、知识协同等痛点。</p>\n          <p>项目主要采用Java开发，基础框架采用JVS（spring cloud+Vue）。</p>\n          <h3>适用场景：</h3>\n          <p>适用于个人、团队、企业使用，提供云笔记、个人知识沉淀、在线产品手册、团队内部知识库、在线电子教程等功能。</p>\n          <p>支持SaaS模式，支持私有化部署场景。</p>\n          <h3>产品特点</h3>\n          <p>无忧企业文档：</p>\n          <p>企业内部在线文档化管理，解决企业文档碎片化痛点，让文档管理轻松高效</p>\n          <p>提供私有化部署，并支持SaaS模式与PaaS模式，满足不同场景需求。私有的才是安全的</p>\n          <p>无限制使用，没有人员数量、部署方式的限制</p>\n          <p>支持全代码开放，支持二次开发，可扩展更多应用</p>\n          <p>超级富文本，让文档表达更加简单通透，让操作更加简单易用：</p>\n          <p>简单，的文本编辑，去除传统office中复杂的编辑操作</p>\n          <p>丰富，表达方式，文本中嵌入多种，脑图、画图、图表、外部服务等内容进行表达</p>\n          <p>扩展，三方形态接入方式（图片保存+编辑跳转方式，ifram模式，实现万物皆可引用，在文档打开的时候，直接刷新一次外部调用的图片）</p>\n          <p>记录，生命痕迹，编辑、阅读、分享、记录。</p>\n          <p>模板，多种文档记录模板，快速高效</p>\n          <p>搜索，支持强大的文库搜索引擎，轻松查找任何文档，任何内容</p>\n          <p>企业文档协同，让文档流转变得非常简单，让团队协作成为助力：</p>\n          <p>协作，团队化管理文档，引入团队或者个人成为文档的成员</p>\n          <p>开放，简单直接共享，共享开关，网络直接可以访问</p>\n          <p>交流，通过“@”的方式可以形成交流的点，通过评论，对文档进行评价</p>\n          <p>权限，文档权限化管理，：删除、编辑、共享设置</p>\n          <p>更多功能，持续更新，敬请期待。</p>\n          <div class=\"footer\">\n            <p>更新日志</p>\n            <p>2021-12-02</p>\n            <p>修改部分UI展示图</p>\n            <p>添加10多种文件格式在线预览</p>\n            <p>添加软件介绍页</p>\n            <p>添加知识库背景替换</p>\n            <p>修复部分BUG</p>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport {getUserAll} from \"../../components/api\";\nimport topbar from \"@/views/common/topbar\";\n\nexport default {\n  name: \"index\",\n  components:{\n    topbar\n  },\n  data () {\n    return {\n      userList: [],\n      topKeyword: \"\",\n    }\n  },\n  created() {\n    this.getUserList()\n  },\n  methods: {\n    allSearchChange(val) {\n      this.topKeyword = val;\n      if (val && val.replace(/^(\\s|\\xA0)+|(\\s|\\xA0)+$/g, '')) {\n        this.topIsSearch = true;\n      } else {\n        this.topIsSearch = false;\n      }\n    },\n    getUserList() {\n      getUserAll().then(res => {\n        if(res.data.code == 0) {\n          this.userList = res.data.data\n        }\n      })\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.company-page{\n  padding: 20px 40px;\n  height: calc(100vh - 80px);\n  overflow-y: auto;\n  .member{\n    padding: 20px 100px;\n    .member-content{\n      display: flex;\n      flex-wrap: wrap;\n      width: 100%;\n      //height: 500px;\n      overflow-y: auto;\n      .member-item{\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        width: 80px;\n        height: 80px;\n        margin: 10px;\n        img{\n          border-radius: 20px;\n          width: 40px;\n          height: 40px;\n        }\n        .realName{\n          //text-align: center;\n          font-size: 12px;\n        }\n      }\n    }\n  }\n  .introduce{\n    padding: 20px 100px;\n    .introduce-content{\n      .version{\n        font-size: 14px;\n        margin-bottom: 40px;\n      }\n      .footer{\n        margin: 40px 0;\n      }\n      p{\n        font-size: 14px;\n        line-height: 14px;\n      }\n      h3{\n        font-size: 16px;\n        line-height: 28px;\n      }\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "src/views/index/api.js",
    "content": "import request from '@/router/axios'\n\n// 查询用户有权限的知识库\nexport function getDcLibraryList(query) {\n  return request({\n    url: \"/mgr/document/dcLibrary/knowledges\",\n    method: \"get\",\n    params: query\n  });\n}\n\n// 查询用户自己创建的知识库\nexport function knowledgesOwner(query) {\n  return request({\n    url: \"/mgr/document/dcLibrary/knowledges/owner\",\n    method: \"get\",\n    params: query\n  });\n}\n\n// 删除知识库\nexport function delDcLibrary(id) {\n  return request({\n    url: `/mgr/document/dcLibrary/${id}`,\n    method: \"delete\",\n  });\n}\n"
  },
  {
    "path": "src/views/index/baseInfo.vue",
    "content": "<template>\n  <div class=\"base-info\">\n    <div class=\"left\">\n      <div class=\"base\">\n        <ul>\n          <li v-for=\"item in baseList\" :key=\"item.name\" :class=\"{'active': item.name == activeName}\" @click=\"activeHandle(item)\">\n            <i :class=\"item.icon\"></i>\n            <span>{{item.name}}</span>\n          </li>\n        </ul>\n      </div>\n      <div class=\"normal\">\n        <h4>常用的文档</h4>\n        <ul>\n          <li v-for=\"(item, index) in infoList\" :key=\"item.name+index\" :class=\"{'active': item.name == activeName}\" @click=\"openItem(item)\">\n            <img v-if=\"item.coverImage\" :src=\"item.coverImage\" />\n            <i v-else class=\"el-icon-s-management\"></i> <!-- el-icon-s-order -->\n            <span>{{item.name}}</span>\n          </li>\n        </ul>\n      </div>\n    </div>\n    <div class=\"right\">\n      <div class=\"title\">\n        <b>{{activeName}}</b>\n      </div>\n      <div class=\"listBox\">\n        <div class=\"list1\">\n          <div class=\"list-item addNew-item\" v-if=\"activeName == '文档'||activeName == '我的'\" @click=\"addNewHandle\">\n            <img :src=\"iconImg\" />\n            <p>\n              <i class=\"el-icon-plus\"></i>\n              <span>文档</span>\n            </p>\n          </div>\n          <div class=\"list-item info-item\" v-for=\"(item, index) in infoList\" :key=\"item.name+ index\" @click=\"openItem(item)\">\n          <!-- :class=\"{'cover': item.coverImage}\" :style=\"item.coverImage ? 'background-image: url('+ item.coverImage +')' : ''\" -->\n            <div class=\"top\" :style=\"item.color ? ('background: '+ item.color + ';') : ''\">\n              <img class=\"mark\" :src=\"markImg\" />\n<!--              <img class=\"desktop\" :src=\"desktopImg\" />-->\n              <div v-if=\"item.shareRole === 'register'\" class=\"tag\">企业</div>\n            </div>\n            <div class=\"text\">\n              <h5>{{item.name}}</h5>\n              <p>{{item.description}}</p>\n            </div>\n            <i v-if=\"hasRight(item)\" class=\"delButton el-icon-delete\" @click.stop=\"delItem(item)\"></i>\n          </div>\n        </div>\n      </div>\n    </div>\n    <el-dialog title=\"新增文档\" :visible.sync=\"dialogVisible\" top=\"6vh\" class=\"dialog\" :append-to-body=\"true\" :before-close=\"handleClose\">\n      <KnowSet v-if=\"dialogVisible\" :nodeInfo=\"nodeInfo\" :hasRight=\"true\" @close=\"closeHandle\"></KnowSet>\n    </el-dialog>\n  </div>\n</template>\n<script>\nimport icon from './img/icon.png'\nimport mark from './img/mark.png'\nimport desktop from './img/desktop.png'\nimport {getDcLibraryList, delDcLibrary,knowledgesOwner} from './api'\nimport KnowSet from '@/views/common/KnowSet.vue'\nimport { getStore } from \"@/util/store.js\";\nexport default {\n  components: {KnowSet},\n  data () {\n    return {\n      activeName: '文档',\n      iconImg: icon,\n      markImg: mark,\n      desktopImg: desktop,\n      baseList: [\n        {\n          icon: 'el-icon-s-custom',\n          name: '我的'\n        },\n        {\n          icon: 'el-icon-s-management',\n          name: '文档'\n        },\n        {\n          icon: 'el-icon-time',\n          name: '最近使用'\n        }\n      ],\n      infoList: [],\n      dialogVisible: false,\n      nodeInfo: {}\n    }\n  },\n  methods: {\n    activeHandle (item) {\n      this.activeName = item.name\n      if(item.name==\"我的\"){\n        knowledgesOwner({size:1000}).then(res=>{\n          if(res.data.code == 0) {\n            this.infoList = res.data.data.records\n          }\n        })\n      }else if(item.name==\"文档\"){\n        this.getDcLibraryListHandle()\n      }else if(item.name==\"最近使用\"){\n        this.getDcLibraryListHandle()\n      }\n    },\n    openItem (item) {\n      this.$store.commit(\"SET_KONWLEDGE\", item)\n      this.$router.push({\n        path: `/view?id=${item.id}`\n      })\n    },\n    getDcLibraryListHandle () {\n      getDcLibraryList({size:1000}).then(res => {\n        if(res && res.data && res.data.code == 0) {\n          this.infoList = res.data.data.records\n        }\n      })\n    },\n    addNewHandle () {\n      this.dialogVisible = true;\n    },\n    handleClose () {\n      this.dialogVisible = false;\n    },\n    closeHandle (data) {\n      if(data) {\n        this.handleClose()\n        this.getDcLibraryListHandle()\n      }\n    },\n    // 是否有删除权限\n    hasRight (item) {\n      let bool = false\n      let userInfo = getStore({name: 'userInfo'})\n      if(item.createById == userInfo.id) {\n        bool = true\n      }\n      return bool\n    },\n    delItem (item) {\n      this.$confirm('确认删除此知识库？', '提示', {\n        confirmButtonText: '确定',\n        cancelButtonText: '取消',\n        type: 'warning'\n      }).then(() => {\n        delDcLibrary(item.id).then(res => {\n          if(res.data.code == 0) {\n            this.$notify({\n              title: '删除成功',\n              // message: '右下角弹出的消息',\n              type: 'success',\n              position: 'bottom-right'\n            });\n            // this.getDcLibraryListHandle()\n            if(this.activeName==\"我的\"){\n              knowledgesOwner({size:1000}).then(res=>{\n                if(res.data.code == 0) {\n                  this.infoList = res.data.data.records\n                }\n              })\n            }else if(this.activeName==\"文档\"){\n              this.getDcLibraryListHandle()\n            }else if(this.activeName==\"最近使用\"){\n              this.getDcLibraryListHandle()\n            }\n          }\n        })\n      }).catch(e => {})\n    }\n  },\n  created () {\n    this.getDcLibraryListHandle()\n  }\n}\n</script>\n<style lang=\"scss\" scoped>\n.base-info{\n  padding: 0 6.25vw;\n  overflow: hidden;\n  display: flex;\n  justify-content: space-between;\n  height: calc(100vh - 79px);\n  ul, li{\n    margin: 0;\n    padding: 0;\n    list-style: none;\n  }\n  .left{\n    width: 260px;\n    //width: 360px;\n    box-sizing: border-box;\n    //border-right: 1px solid #EEEEEE;\n    height: 100%;\n    overflow: hidden;\n    //overflow-y: auto;\n    ul{\n      //padding: 20px 0 30px 0;\n      li{\n        display: flex;\n        align-items: center;\n        height: 40px;\n        //margin-top: 10px;\n        padding-left: 33px;\n        cursor: pointer;\n        i{\n          font-size: 18px;\n          color: #868BA1;\n          margin-right: 20px;\n        }\n        img{\n          display: block;\n          width: 20px;\n          height: 20px;\n          margin-right: 30px;\n        }\n        span{\n          font-size: 14px;\n          font-family: SourceHanSansCN-Regular;\n          line-height: 25px;\n          color: #222222;\n          width: 100%;\n          text-overflow: ellipsis;\n          white-space: pre;\n          overflow: hidden;\n        }\n      }\n      .active{\n        background: #EEEEEE;\n        border-radius: 4px;\n      }\n      li:hover{\n        background: #EEEEEE;\n        border-radius: 4px;\n      }\n    }\n    .base{\n      //border-bottom: 1px solid #EEEEEE;\n      ul{\n        //padding: 30px 0;\n        padding-top: 30px;\n        li:nth-last-of-type(1) {\n          i{\n            background: #868BA1;\n            color: #fff;\n            border-radius: 50%;\n            overflow: hidden;\n            width: 28px;\n            height: 22px;\n            display: block;\n            text-align: center;\n            line-height: 22px;\n          }\n        }\n      }\n    }\n    .normal{\n      h4{\n        //height: 22px;\n        height: 30px;\n        font-size: 14px;\n        font-family: SourceHanSansCN-Regular;\n        line-height: 25px;\n        color: #333333;\n        margin: 0;\n        margin-left: 33px;\n        margin-top: 20px;\n      }\n      ul{\n        //height: 500px;\n        overflow-y: auto;\n      }\n    }\n  }\n  .right{\n    //width: calc(100% - 160px);\n    width: calc(100% - 390px);\n    min-width: 980px;\n    height: 100%;\n    overflow: hidden;\n    .title{\n      height: 71px;\n      border-bottom: 1px solid #EBECEE;\n      b{\n        display: inline-block;\n        font-size: 24px;\n        font-family: Source Han Sans CN;\n        font-weight: 500;\n        line-height: 41px;\n        color: #0F1633;\n        margin-left: 40px;\n        line-height: 71px;\n        position: relative;\n        height: 100%;\n      }\n      b::after{\n        content: '';\n        position: absolute;\n        width: 100%;\n        height: 7px;\n        background: #3471FF;\n        bottom: -4px;\n        left: 0;\n      }\n    }\n    .listBox{\n      height: calc(100% - 71px);\n      overflow: auto;\n      .list1{\n        display: flex;\n        box-sizing: border-box;\n        padding: 40px 0;\n        align-items: center;\n        flex-wrap: wrap;\n        // height: calc(100% - 97px);\n        // height: 100%;\n        overflow: hidden;\n        overflow-y: auto;\n        .list-item{\n          border-radius: 4px;\n          overflow: hidden;\n          //width: 22%;\n          //width: 236px;\n          width: 12.3vw;\n          min-width: 220px;\n          height: 9vw;\n          min-height: 184px;\n          //border: 1px solid #EBECEE;\n          box-shadow: 0 0 8px rgba(59, 59, 59, 0.1);\n          //margin: 20px 2%;\n          margin: 10px;\n          cursor: pointer;\n          box-sizing: border-box;\n        }\n        .list-item:nth-of-type(4n+1) {\n          //margin-left: 0;\n        }\n        .list-item:nth-of-type(4n) {\n          //margin-right: 0;\n        }\n        .addNew-item{\n          background: #F6F6F6;\n          display: flex;\n          flex-direction: column;\n          justify-content: center;\n          align-items: center;\n          img{\n            display: block;\n            width: 62px;\n            height: 70px;\n          }\n          p{\n            font-size: 20px;\n            color: #868BA1;\n          }\n        }\n        .info-item{\n          position: relative;\n          transition: 0.3s;\n          &:hover{\n            transform: translateY(-5px);\n            box-shadow: 0 2px 20px rgba(59, 59, 59, 0.1);\n            transition: 0.3s;\n          }\n          .top{\n            //height: 8vw;\n            min-height: 120px;\n            background-image: url('./img/bg.png');\n            background-repeat: no-repeat;\n            position: relative;\n            img{\n              display: block;\n            }\n            .mark{\n              position: absolute;\n              left: 5px;\n              top: 5px;\n              width: 15px;\n              height: 20px;\n            }\n            .desktop{\n              width: 60px;\n              height: 50px;\n              position: absolute;\n              top: 0;\n              left: 0;\n              bottom: 0;\n              right: 0;\n              margin: auto;\n            }\n            .tag{\n              position: absolute;\n              bottom: 4px;\n              right: 4px;\n              padding-left: 8px;\n              padding-right: 8px;\n              max-width: 100%;\n              height: 20px;\n              line-height: 20px;\n              font-size: .75rem;\n              border-radius: 2px;\n              background: rgba(0,0,0,.4);\n              color: #fff;\n              text-align: center;\n              font-weight: 500;\n            }\n          }\n          .top.cover{\n            background-size: 100% 100%;\n            img{\n              display: none;\n            }\n          }\n          .text{\n            padding: 0 20px;\n            h5, p{\n              margin: 0;\n              padding: 0;\n            }\n            h5{\n              font-size: 14px;\n              font-family: Source Han Sans CN;\n              font-weight: 400;\n              line-height: 36px;\n              color: #3d3d3d;\n              width: 100%;\n              text-overflow: ellipsis;\n              white-space: pre;\n              overflow: hidden;\n              //margin-top: 15px;\n            }\n            p{\n              //margin-top: 10px;\n              font-size: 12px;\n              font-family: Source Han Sans CN;\n              font-weight: 400;\n              color: #868BA1;\n              overflow: hidden;\n              text-overflow: ellipsis;\n              white-space: pre;\n              height: 20px;\n              line-height: 20px;\n            }\n          }\n          .delButton{\n            position: absolute;\n            top: 10px;\n            right: 10px;\n            color: #fff;\n            font-size: 20px;\n            display: none;\n          }\n        }\n        .info-item:hover{\n          .delButton{\n            display: block;\n          }\n        }\n      }\n    }\n\n  }\n}\n/deep/.el-dialog .el-dialog__header{\n  padding: 20px;\n}\n/deep/.el-dialog .el-dialog__body{\n  padding: 20px;\n}\n</style>\n"
  },
  {
    "path": "src/views/index/index.vue",
    "content": "<template>\n  <div class=\"knowledge-index-page\">\n    <div v-if=\"systemJud\">\n      <p class=\"phoneSym\">手机端暂不支持</p>\n    </div>\n    <div v-else>\n      <topbar :fresh=\"fresh\" @searchChange=\"searchChange\" @searchClose=\"(boler)=>isSearch=boler\" @fresh=\"freshHandle\"></topbar>\n      <div class=\"search-box\" v-if=\"isSearch\">\n        <searchTool :keyword=\"keyword\"></searchTool>\n      </div>\n      <div v-else>\n        <baseInfo v-if=\"alreadyLogin\"></baseInfo>\n        <pageInfo v-else @fresh=\"freshHandle\"></pageInfo>\n      </div>\n    </div>\n    <el-dialog\n      title=\"完善信息\"\n      :visible.sync=\"dialogVisible\"\n      width=\"30%\"\n      :before-close=\"handleClose\">\n      <jvs-form ref=\"phoneForm\" :option=\"phoneOption\" :formData=\"phoneForm\" @submit=\"bindPhoneHandle\">\n        <template slot=\"codeForm\">\n          <div style=\"display:flex;align-items:center;\">\n            <el-input size=\"mini\" v-model=\"phoneForm.code\"></el-input>\n            <jvs-button size=\"mini\" style=\"margin-left: 10px;\" :disabled=\"timeCountor != 300\" @click=\"getPhoneCode\">{{timeCountor != 300 ? (timeCountor +'s后重试') : '获取验证码'}}</jvs-button>\n          </div>\n        </template>\n      </jvs-form>\n    </el-dialog>\n  </div>\n</template>\n<script>\nimport topbar from '@/views/common/topbar'\nimport store from '@/store'\nimport pageInfo from './page'\nimport baseInfo from './baseInfo'\nimport {isMobile} from '@/util/validate'\nimport searchTool from '@/views/common/search'\nimport { getStore } from \"@/util/store.js\";\nimport eventBus from \"@/util/eventBus\";\nimport { bindPhone, sendPhoneCode } from '@/api/newDesign'\nexport default {\n  components: {topbar, pageInfo, baseInfo, searchTool},\n  data () {\n    var validatePhoneReg = (rule, value, callback) => {\n      if(isMobile(value)) {\n        callback();\n      }else{\n        callback(new Error('请输入正确的手机号'));\n      }\n    };\n    return {\n      systemJud:false,\n      alreadyLogin: false,\n      isSearch: false,\n      keyword: '',\n      fresh: false,\n      dialogVisible: false,\n      form: {},\n      timeCountor: 300,\n      timer: null,\n      phoneForm: {},\n      phoneOption: {\n        cancal: false,\n        submitLoading: false,\n        column: [\n          {\n            label: '姓名',\n            prop: 'name',\n            rules: [\n              { required: true, message: '请输入姓名', trigger: 'blur' },\n            ]\n          },\n          {\n            label: '手机号',\n            prop: 'phone',\n            rules: [\n              { required: true, message: '请输入手机号', trigger: 'blur' },\n              { validator: validatePhoneReg, trigger: 'blur'}\n            ]\n          },\n          {\n            label: '验证码',\n            prop: 'code',\n            formSlot: true,\n            rules: [\n              { required: true, message: '请输入验证码', trigger: 'blur' }\n            ]\n          }\n        ]\n      },\n    }\n  },\n  methods: {\n    // 获取手机验证码\n    getPhoneCode () {\n      this.$refs.phoneForm.$refs.ruleForm.validateField('phone', (msg) => {\n        if(msg == '') {\n          if(this.timer) {\n            clearInterval(this.timer)\n            this.timeCountor = 300\n          }\n          let _this = this\n          this.timer = setInterval(() => {\n            _this.timeCountor -= 1\n            if(_this.timeCountor == 0) {\n              clearInterval(_this.timer)\n              _this.timeCountor = 300\n            }\n          }, 1000);\n          sendPhoneCode(this.phoneForm.phone).then(res => {}).catch(err => {\n            if(this.timer) {\n              clearInterval(this.timer)\n            }\n            this.timeCountor = 300\n          })\n        }\n      })\n    },\n    // 绑定手机\n    bindPhoneHandle (form) {\n      this.phoneOption.submitLoading = true\n      bindPhone(form).then(res => {\n        if(res.data.code == 0) {\n          store.dispatch('RefreshToken', store.getters.tenantId).then(res => {\n            if (res) {\n              this.setUserInfoData(res)\n              location.reload()\n              this.$message.success('绑定手机成功')\n              this.phoneOption.submitLoading = false\n              this.dialogVisible = false\n              if(this.timer) {\n                clearInterval(this.timer)\n                this.timeCountor = 300\n              }\n            }\n            // console.log(res)\n          }).catch(e => {\n          })\n        }else{\n          this.phoneOption.submitLoading = false\n        }\n      }).catch(e => {\n        this.phoneOption.submitLoading = false\n      })\n    },\n    // 登录成功写入数据\n    setUserInfoData (data) {\n      // this.$store.commit(\"SET_ACCESS_TOKEN\", data.access_token);\n      // this.$store.commit(\"SET_REFRESH_TOKEN\", data.refresh_token);\n      // this.$store.commit(\"SET_EXPIRES_IN\", data.expires_in);\n      // this.$store.commit(\"CLEAR_LOCK\");\n      this.$store.commit(\"SET_USER_INFO\", data.userDto);\n      // this.$store.commit(\"SET_ROLES\", data.roles || []);\n      // this.$store.commit(\"SET_PERMISSIONS\", data.permissions || []);\n      //\n      // this.$store.commit(\"SET_TENANTId\", data.userDto.tenantId);\n      // this.$store.commit(\"DEL_ALL_TAG\"); // 关闭之前打开的所有tag\n      // this.$store.commit(\"SET_THEME_NAME\", \"\"); // 清除主题\n      // this.$store.commit(\"SET_TENANTINFO\", data.userDto.tenant)\n    },\n    handleSubmit() {},\n    handleClose() {\n      this.dialogVisible = false\n    },\n    searchChange (val) {\n      this.keyword = val\n      if(val) {\n        this.isSearch = true\n      }else{\n        this.isSearch = false\n      }\n    },\n    // 判断是否手机端\n    isMobile() {\n      let flag = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)\n      return flag;\n    },\n    // 刷新\n    freshHandle (bool) {\n      this.alreadyLogin = bool\n      this.fresh = bool\n      if (getStore({name: 'userInfo'})) {\n        const user = JSON.parse(JSON.stringify(getStore({name: 'userInfo'})))\n        if (!user.phone) {\n          this.dialogVisible = true\n        }\n      }\n    }\n  },\n  created () {\n    if (getStore({name: 'userInfo'})) {\n      const user = JSON.parse(JSON.stringify(getStore({name: 'userInfo'})))\n      if (!user.phone) {\n        this.dialogVisible = true\n      }\n    }\n    if(getStore({name: 'userInfo'}) && getStore({name: 'tenantId'})) {\n      this.alreadyLogin = true\n    }\n    if (this.isMobile()) {\n      this.systemJud=true\n    } else {\n      this.systemJud=false\n    }\n    eventBus.$off(\"loginEvent\")\n    eventBus.$on(\"loginEvent\", type => {\n      switch(type) {\n        case 'loginOut':\n          sessionStorage.clear();\n          localStorage.clear();\n          this.alreadyLogin = false;\n          this.$forceUpdate();\n          break;\n        default: ;break;\n      }\n    });\n  },\n  beforeDestory () {\n    eventBus.$off(\"loginEvent\")\n  },\n}\n</script>\n<style lang=\"scss\" scoped>\n.phoneSym{\n  text-align: center;\n  margin-top: 60%;\n  color: #ec6d6d;\n}\n.knowledge-index-page{\n  height: 100%;\n  overflow: hidden;\n  overflow-y: auto;\n}\n.knowledge-index-page .search-box{\n  padding: 40px 145px;\n}\n\n.get_code {\n  line-height: 36px;\n  color: #3471FF;\n  cursor: pointer;\n  margin-right: 5px;\n  font-size: 14px;\n}\n</style>\n"
  },
  {
    "path": "src/views/index/page.vue",
    "content": "<template>\n  <div class=\"not-login-page\">\n    <div class=\"banner\">\n      <div class=\"text-desc\">\n        <h4>企业内部在线文档</h4>\n        <section>\n          解决企业文档碎片化痛点，支持私有化部署，支持SaaS模式与PaaS模式，支持二次开发，可扩展应用\n        </section>\n        <jvs-button type=\"primary\" :round=\"true\" @click=\"goLogin\">立即登录</jvs-button>\n      </div>\n    </div>\n    <div class=\"entry\">\n      <div class=\"title\">\n        <h5>产品价值</h5>\n        <span\n          >超级富文本，让文档表达更加简单通透，让操作更加简单易用</span\n        >\n      </div>\n      <div class=\"list\">\n        <div class=\"list-item\" v-for=\"item in entryList\" :key=\"item.title\">\n          <img :src=\"item.img\" />\n          <p>\n            <b>{{ item.title }}</b>\n            <span>{{ item.text }}</span>\n          </p>\n        </div>\n      </div>\n      <div class=\"bottom\">\n        <img :src=\"bottomImg\" />\n        <div>\n          <h5>文档协同，让文档流转非常简单</h5>\n          <p>协作：团队高效协作</p>\n          <p>分享：多种分享模式</p>\n          <p>交流：支持“@”与评论</p>\n          <p>权限：文档权限化管理</p>\n        </div>\n      </div>\n    </div>\n    <FooterContent/>\n  </div>\n</template>\n<script>\nimport note from \"./img/note.png\";\nimport pro from \"./img/pro.png\";\nimport doc from \"./img/doc.png\";\nimport sucai from \"./img/sucai.png\";\nimport yun from \"./img/yun.png\";\nimport caozuo from \"./img/caozuo.png\";\nimport img from \"./img/img.png\";\nimport FooterContent from \"../../components/page-footer/FooterContent\";\nexport default {\n  components: {FooterContent},\n  data() {\n    return {\n      entryList: [\n        {\n          img: note,\n          title: \"简单\",\n          text: \"去除传统office中复杂的编辑\",\n        },\n        {\n          img: pro,\n          title: \"丰富\",\n          text: \"脑图、画图、图表、甘特图等\",\n        },\n        {\n          img: doc,\n          title: \"扩展\",\n          text: \"支持三方形态接内容入方式\",\n        },\n        {\n          img: sucai,\n          title: \"记录\",\n          text: \"生命痕迹，编辑、阅读、分享\",\n        },\n        {\n          img: yun,\n          title: \"模板\",\n          text: \"多种文档记录模板，快速高效\",\n        },\n        {\n          img: caozuo,\n          title: \"搜索\",\n          text: \"提供强大的文库内容搜索引擎\",\n        },\n      ],\n      bottomImg: img,\n    };\n  },\n  methods: {\n    goLogin() {\n      this.$openLogin({\n        successClose: false,\n        closeable: true,\n        afterLogin: (dialog, res) => {\n          console.log('登录提交。。。。。')\n          dialog.handleClose()\n          this.$emit('fresh', true)\n        },\n        afterRegister: () => {\n          console.log('注册提交。。。。。')\n        }\n      })\n    },\n  },\n};\n</script>\n<style lang=\"scss\">\n.not-login-page {\n  width: 100%;\n  .banner {\n    height: 39vw;\n    background-image: url(\"./img/banner.png\");\n    background-repeat: no-repeat;\n    background-size: 100%;\n    position: relative;\n    display: flex;\n    align-items: center;\n    .text-desc {\n      //position: absolute;\n      //left: 260px;\n      //top: 219px;\n      margin-left: 10vw;\n      h4 {\n        font-size: 42px;\n        color: #0f1633;\n        line-height: 82px;\n        margin: 0;\n        font-family: Source Han Sans CN;\n        font-weight: 500;\n      }\n      section {\n        width: 482px;\n        font-size: 24px;\n        font-family: Source Han Sans CN;\n        font-weight: 400;\n        line-height: 41px;\n        color: #0f1633;\n      }\n      .el-button {\n        width: 180px;\n        height: 50px;\n        background: linear-gradient(129deg, #3471ff 0%, #5386ff 100%);\n        border-radius: 25px;\n        margin-top: 58px;\n        padding: 0;\n        span {\n          font-size: 20px;\n          font-family: Source Han Sans CN;\n          font-weight: 400;\n          line-height: 34px;\n          color: #ffffff;\n        }\n      }\n    }\n  }\n  .entry {\n    margin-top: 100px;\n    .title {\n      display: flex;\n      flex-direction: column;\n      justify-content: center;\n      align-items: center;\n      margin-bottom: 30px;\n      h5 {\n        width: 200px;\n        margin: 0;\n        text-align: center;\n        height: 36px;\n        font-size: 36px;\n        font-family: Source Han Sans CN;\n        font-weight: 500;\n        line-height: 61px;\n        color: #0f1633;\n        border-bottom: 10px solid #3471ff;\n        margin-bottom: 30px;\n      }\n      span {\n        font-size: 22px;\n        font-family: Source Han Sans CN;\n        font-weight: 400;\n        line-height: 37px;\n        color: #868ba1;\n      }\n    }\n    .list {\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      flex-wrap: wrap;\n      .list-item {\n        //width: 650px;\n        //height: 250px;\n        //width: 580px;\n        //height: 180px;\n        width: 30vw;\n        height: 18vh;\n        background: #f4f6fb;\n        //border-radius: 0px 80px 0px 80px;\n        border-radius: 0 8vh 0 8vh;\n        display: flex;\n        align-items: center;\n        margin: 0 50px;\n        margin-top: 30px;\n        justify-content: space-around;\n        img {\n          display: block;\n          //width: 110px;\n          //height: 110px;\n          width: 10vh;\n          //margin-left: 50px;\n        }\n        p {\n          //margin-left: 100px;\n          display: flex;\n          flex-direction: column;\n          b {\n            font-size: 24px;\n            //font-size: 30px;\n            font-family: Source Han Sans CN;\n            font-weight: 400;\n            line-height: 51px;\n            color: #0f1633;\n          }\n          span {\n            //font-size: 24px;\n            font-size: 18px;\n            font-family: Source Han Sans CN;\n            font-weight: 400;\n            line-height: 41px;\n            color: #868ba1;\n          }\n        }\n      }\n    }\n    .bottom {\n      margin-top: 100px;\n      margin-bottom: 50px;\n      height: 400px;\n      display: flex;\n      padding: 0 40px;\n      //justify-content: center;\n      justify-content: space-around;\n      align-items: center;\n      img {\n        display: block;\n        width: 28.125vw;\n        //height: 333px;\n        //margin-right: 166px;\n      }\n      div {\n        width: 710px;\n        margin: 0;\n        h5,\n        p {\n          margin: 0;\n        }\n        h5 {\n          display: block;\n          //height: 42px;\n          font-size: 42px;\n          font-family: Source Han Sans CN;\n          font-weight: 500;\n          line-height: 60px;\n          color: #0f1633;\n          letter-spacing: 5px;\n          margin-bottom: 30px;\n        }\n        p {\n          display: block;\n          font-size: 24px;\n          font-family: Source Han Sans CN;\n          font-weight: 400;\n          line-height: 41px;\n          color: #868ba1;\n          letter-spacing: 5px;\n        }\n      }\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "src/views/info/icon/demo.css",
    "content": "/* Logo 字体 */\n@font-face {\n  font-family: \"iconfont logo\";\n  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');\n  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),\n    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),\n    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),\n    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');\n}\n\n.logo {\n  font-family: \"iconfont logo\";\n  font-size: 160px;\n  font-style: normal;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n/* tabs */\n.nav-tabs {\n  position: relative;\n}\n\n.nav-tabs .nav-more {\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  height: 42px;\n  line-height: 42px;\n  color: #666;\n}\n\n#tabs {\n  border-bottom: 1px solid #eee;\n}\n\n#tabs li {\n  cursor: pointer;\n  width: 100px;\n  height: 40px;\n  line-height: 40px;\n  text-align: center;\n  font-size: 16px;\n  border-bottom: 2px solid transparent;\n  position: relative;\n  z-index: 1;\n  margin-bottom: -1px;\n  color: #666;\n}\n\n\n#tabs .active {\n  border-bottom-color: #f00;\n  color: #222;\n}\n\n.tab-container .content {\n  display: none;\n}\n\n/* 页面布局 */\n.main {\n  padding: 30px 100px;\n  width: 960px;\n  margin: 0 auto;\n}\n\n.main .logo {\n  color: #333;\n  text-align: left;\n  margin-bottom: 30px;\n  line-height: 1;\n  height: 110px;\n  margin-top: -50px;\n  overflow: hidden;\n  *zoom: 1;\n}\n\n.main .logo a {\n  font-size: 160px;\n  color: #333;\n}\n\n.helps {\n  margin-top: 40px;\n}\n\n.helps pre {\n  padding: 20px;\n  margin: 10px 0;\n  border: solid 1px #e7e1cd;\n  background-color: #fffdef;\n  overflow: auto;\n}\n\n.icon_lists {\n  width: 100% !important;\n  overflow: hidden;\n  *zoom: 1;\n}\n\n.icon_lists li {\n  width: 100px;\n  margin-bottom: 10px;\n  margin-right: 20px;\n  text-align: center;\n  list-style: none !important;\n  cursor: default;\n}\n\n.icon_lists li .code-name {\n  line-height: 1.2;\n}\n\n.icon_lists .icon {\n  display: block;\n  height: 100px;\n  line-height: 100px;\n  font-size: 42px;\n  margin: 10px auto;\n  color: #333;\n  -webkit-transition: font-size 0.25s linear, width 0.25s linear;\n  -moz-transition: font-size 0.25s linear, width 0.25s linear;\n  transition: font-size 0.25s linear, width 0.25s linear;\n}\n\n.icon_lists .icon:hover {\n  font-size: 100px;\n}\n\n.icon_lists .svg-icon {\n  /* 通过设置 font-size 来改变图标大小 */\n  width: 1em;\n  /* 图标和文字相邻时，垂直对齐 */\n  vertical-align: -0.15em;\n  /* 通过设置 color 来改变 SVG 的颜色/fill */\n  fill: currentColor;\n  /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示\n      normalize.css 中也包含这行 */\n  overflow: hidden;\n}\n\n.icon_lists li .name,\n.icon_lists li .code-name {\n  color: #666;\n}\n\n/* markdown 样式 */\n.markdown {\n  color: #666;\n  font-size: 14px;\n  line-height: 1.8;\n}\n\n.highlight {\n  line-height: 1.5;\n}\n\n.markdown img {\n  vertical-align: middle;\n  max-width: 100%;\n}\n\n.markdown h1 {\n  color: #404040;\n  font-weight: 500;\n  line-height: 40px;\n  margin-bottom: 24px;\n}\n\n.markdown h2,\n.markdown h3,\n.markdown h4,\n.markdown h5,\n.markdown h6 {\n  color: #404040;\n  margin: 1.6em 0 0.6em 0;\n  font-weight: 500;\n  clear: both;\n}\n\n.markdown h1 {\n  font-size: 28px;\n}\n\n.markdown h2 {\n  font-size: 22px;\n}\n\n.markdown h3 {\n  font-size: 16px;\n}\n\n.markdown h4 {\n  font-size: 14px;\n}\n\n.markdown h5 {\n  font-size: 12px;\n}\n\n.markdown h6 {\n  font-size: 12px;\n}\n\n.markdown hr {\n  height: 1px;\n  border: 0;\n  background: #e9e9e9;\n  margin: 16px 0;\n  clear: both;\n}\n\n.markdown p {\n  margin: 1em 0;\n}\n\n.markdown>p,\n.markdown>blockquote,\n.markdown>.highlight,\n.markdown>ol,\n.markdown>ul {\n  width: 80%;\n}\n\n.markdown ul>li {\n  list-style: circle;\n}\n\n.markdown>ul li,\n.markdown blockquote ul>li {\n  margin-left: 20px;\n  padding-left: 4px;\n}\n\n.markdown>ul li p,\n.markdown>ol li p {\n  margin: 0.6em 0;\n}\n\n.markdown ol>li {\n  list-style: decimal;\n}\n\n.markdown>ol li,\n.markdown blockquote ol>li {\n  margin-left: 20px;\n  padding-left: 4px;\n}\n\n.markdown code {\n  margin: 0 3px;\n  padding: 0 5px;\n  background: #eee;\n  border-radius: 3px;\n}\n\n.markdown strong,\n.markdown b {\n  font-weight: 600;\n}\n\n.markdown>table {\n  border-collapse: collapse;\n  border-spacing: 0px;\n  empty-cells: show;\n  border: 1px solid #e9e9e9;\n  width: 95%;\n  margin-bottom: 24px;\n}\n\n.markdown>table th {\n  white-space: nowrap;\n  color: #333;\n  font-weight: 600;\n}\n\n.markdown>table th,\n.markdown>table td {\n  border: 1px solid #e9e9e9;\n  padding: 8px 16px;\n  text-align: left;\n}\n\n.markdown>table th {\n  background: #F7F7F7;\n}\n\n.markdown blockquote {\n  font-size: 90%;\n  color: #999;\n  border-left: 4px solid #e9e9e9;\n  padding-left: 0.8em;\n  margin: 1em 0;\n}\n\n.markdown blockquote p {\n  margin: 0;\n}\n\n.markdown .anchor {\n  opacity: 0;\n  transition: opacity 0.3s ease;\n  margin-left: 8px;\n}\n\n.markdown .waiting {\n  color: #ccc;\n}\n\n.markdown h1:hover .anchor,\n.markdown h2:hover .anchor,\n.markdown h3:hover .anchor,\n.markdown h4:hover .anchor,\n.markdown h5:hover .anchor,\n.markdown h6:hover .anchor {\n  opacity: 1;\n  display: inline-block;\n}\n\n.markdown>br,\n.markdown>p>br {\n  clear: both;\n}\n\n\n.hljs {\n  display: block;\n  background: white;\n  padding: 0.5em;\n  color: #333333;\n  overflow-x: auto;\n}\n\n.hljs-comment,\n.hljs-meta {\n  color: #969896;\n}\n\n.hljs-string,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-strong,\n.hljs-emphasis,\n.hljs-quote {\n  color: #df5000;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-type {\n  color: #a71d5d;\n}\n\n.hljs-literal,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-attribute {\n  color: #0086b3;\n}\n\n.hljs-section,\n.hljs-name {\n  color: #63a35c;\n}\n\n.hljs-tag {\n  color: #333333;\n}\n\n.hljs-title,\n.hljs-attr,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n  color: #795da3;\n}\n\n.hljs-addition {\n  color: #55a532;\n  background-color: #eaffea;\n}\n\n.hljs-deletion {\n  color: #bd2c00;\n  background-color: #ffecec;\n}\n\n.hljs-link {\n  text-decoration: underline;\n}\n\n/* 代码高亮 */\n/* PrismJS 1.15.0\nhttps://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */\n/**\n * prism.js default theme for JavaScript, CSS and HTML\n * Based on dabblet (http://dabblet.com)\n * @author Lea Verou\n */\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n  color: black;\n  background: none;\n  text-shadow: 0 1px white;\n  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n  text-align: left;\n  white-space: pre;\n  word-spacing: normal;\n  word-break: normal;\n  word-wrap: normal;\n  line-height: 1.5;\n\n  -moz-tab-size: 4;\n  -o-tab-size: 4;\n  tab-size: 4;\n\n  -webkit-hyphens: none;\n  -moz-hyphens: none;\n  -ms-hyphens: none;\n  hyphens: none;\n}\n\npre[class*=\"language-\"]::-moz-selection,\npre[class*=\"language-\"] ::-moz-selection,\ncode[class*=\"language-\"]::-moz-selection,\ncode[class*=\"language-\"] ::-moz-selection {\n  text-shadow: none;\n  background: #b3d4fc;\n}\n\npre[class*=\"language-\"]::selection,\npre[class*=\"language-\"] ::selection,\ncode[class*=\"language-\"]::selection,\ncode[class*=\"language-\"] ::selection {\n  text-shadow: none;\n  background: #b3d4fc;\n}\n\n@media print {\n\n  code[class*=\"language-\"],\n  pre[class*=\"language-\"] {\n    text-shadow: none;\n  }\n}\n\n/* Code blocks */\npre[class*=\"language-\"] {\n  padding: 1em;\n  margin: .5em 0;\n  overflow: auto;\n}\n\n:not(pre)>code[class*=\"language-\"],\npre[class*=\"language-\"] {\n  background: #f5f2f0;\n}\n\n/* Inline code */\n:not(pre)>code[class*=\"language-\"] {\n  padding: .1em;\n  border-radius: .3em;\n  white-space: normal;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n  color: slategray;\n}\n\n.token.punctuation {\n  color: #999;\n}\n\n.namespace {\n  opacity: .7;\n}\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n  color: #905;\n}\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n  color: #690;\n}\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n  color: #9a6e3a;\n  background: hsla(0, 0%, 100%, .5);\n}\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n  color: #07a;\n}\n\n.token.function,\n.token.class-name {\n  color: #DD4A68;\n}\n\n.token.regex,\n.token.important,\n.token.variable {\n  color: #e90;\n}\n\n.token.important,\n.token.bold {\n  font-weight: bold;\n}\n\n.token.italic {\n  font-style: italic;\n}\n\n.token.entity {\n  cursor: help;\n}\n"
  },
  {
    "path": "src/views/info/icon/demo_index.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n  <meta charset=\"utf-8\"/>\n  <title>iconfont Demo</title>\n  <link rel=\"shortcut icon\" href=\"//img.alicdn.com/imgextra/i2/O1CN01ZyAlrn1MwaMhqz36G_!!6000000001499-73-tps-64-64.ico\" type=\"image/x-icon\"/>\n  <link rel=\"icon\" type=\"image/svg+xml\" href=\"//img.alicdn.com/imgextra/i4/O1CN01EYTRnJ297D6vehehJ_!!6000000008020-55-tps-64-64.svg\"/>\n  <link rel=\"stylesheet\" href=\"https://g.alicdn.com/thx/cube/1.3.2/cube.min.css\">\n  <link rel=\"stylesheet\" href=\"demo.css\">\n  <link rel=\"stylesheet\" href=\"iconfont.css\">\n  <script src=\"iconfont.js\"></script>\n  <!-- jQuery -->\n  <script src=\"https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js\"></script>\n  <!-- 代码高亮 -->\n  <script src=\"https://a1.alicdn.com/oss/uploads/2018/12/26/a3f714d0-08e6-11e9-8a15-ebf944d7534c.js\"></script>\n  <style>\n    .main .logo {\n      margin-top: 0;\n      height: auto;\n    }\n\n    .main .logo a {\n      display: flex;\n      align-items: center;\n    }\n\n    .main .logo .sub-title {\n      margin-left: 0.5em;\n      font-size: 22px;\n      color: #fff;\n      background: linear-gradient(-45deg, #3967FF, #B500FE);\n      -webkit-background-clip: text;\n      -webkit-text-fill-color: transparent;\n    }\n  </style>\n</head>\n<body>\n  <div class=\"main\">\n    <h1 class=\"logo\"><a href=\"https://www.iconfont.cn/\" title=\"iconfont 首页\" target=\"_blank\">\n      <img width=\"200\" src=\"https://img.alicdn.com/imgextra/i3/O1CN01Mn65HV1FfSEzR6DKv_!!6000000000514-55-tps-228-59.svg\">\n      \n    </a></h1>\n    <div class=\"nav-tabs\">\n      <ul id=\"tabs\" class=\"dib-box\">\n        <li class=\"dib active\"><span>Unicode</span></li>\n        <li class=\"dib\"><span>Font class</span></li>\n        <li class=\"dib\"><span>Symbol</span></li>\n      </ul>\n      \n      <a href=\"https://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=2656771\" target=\"_blank\" class=\"nav-more\">查看项目</a>\n      \n    </div>\n    <div class=\"tab-container\">\n      <div class=\"content unicode\" style=\"display: block;\">\n          <ul class=\"icon_lists dib-box\">\n          \n            <li class=\"dib\">\n              <span class=\"icon iconfont\">&#xe698;</span>\n                <div class=\"name\">编辑记录</div>\n                <div class=\"code-name\">&amp;#xe698;</div>\n              </li>\n          \n            <li class=\"dib\">\n              <span class=\"icon iconfont\">&#xe614;</span>\n                <div class=\"name\">展 开 (1)</div>\n                <div class=\"code-name\">&amp;#xe614;</div>\n              </li>\n          \n            <li class=\"dib\">\n              <span class=\"icon iconfont\">&#xe62a;</span>\n                <div class=\"name\">展 开</div>\n                <div class=\"code-name\">&amp;#xe62a;</div>\n              </li>\n          \n            <li class=\"dib\">\n              <span class=\"icon iconfont\">&#xe6b9;</span>\n                <div class=\"name\">返回顶部</div>\n                <div class=\"code-name\">&amp;#xe6b9;</div>\n              </li>\n          \n            <li class=\"dib\">\n              <span class=\"icon iconfont\">&#xe6c7;</span>\n                <div class=\"name\">删除</div>\n                <div class=\"code-name\">&amp;#xe6c7;</div>\n              </li>\n          \n            <li class=\"dib\">\n              <span class=\"icon iconfont\">&#xe60c;</span>\n                <div class=\"name\">点赞</div>\n                <div class=\"code-name\">&amp;#xe60c;</div>\n              </li>\n          \n            <li class=\"dib\">\n              <span class=\"icon iconfont\">&#xe605;</span>\n                <div class=\"name\">时间 (1)</div>\n                <div class=\"code-name\">&amp;#xe605;</div>\n              </li>\n          \n            <li class=\"dib\">\n              <span class=\"icon iconfont\">&#xe8c7;</span>\n                <div class=\"name\">眼睛</div>\n                <div class=\"code-name\">&amp;#xe8c7;</div>\n              </li>\n          \n            <li class=\"dib\">\n              <span class=\"icon iconfont\">&#xe61a;</span>\n                <div class=\"name\">人员</div>\n                <div class=\"code-name\">&amp;#xe61a;</div>\n              </li>\n          \n          </ul>\n          <div class=\"article markdown\">\n          <h2 id=\"unicode-\">Unicode 引用</h2>\n          <hr>\n\n          <p>Unicode 是字体在网页端最原始的应用方式，特点是：</p>\n          <ul>\n            <li>支持按字体的方式去动态调整图标大小，颜色等等。</li>\n            <li>默认情况下不支持多色，直接添加多色图标会自动去色。</li>\n          </ul>\n          <blockquote>\n            <p>注意：新版 iconfont 支持两种方式引用多色图标：SVG symbol 引用方式和彩色字体图标模式。（使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。）</p>\n          </blockquote>\n          <p>Unicode 使用步骤如下：</p>\n          <h3 id=\"-font-face\">第一步：拷贝项目下面生成的 <code>@font-face</code></h3>\n<pre><code class=\"language-css\"\n>@font-face {\n  font-family: 'iconfont';\n  src: url('iconfont.woff2?t=1628043039155') format('woff2'),\n       url('iconfont.woff?t=1628043039155') format('woff'),\n       url('iconfont.ttf?t=1628043039155') format('truetype');\n}\n</code></pre>\n          <h3 id=\"-iconfont-\">第二步：定义使用 iconfont 的样式</h3>\n<pre><code class=\"language-css\"\n>.iconfont {\n  font-family: \"iconfont\" !important;\n  font-size: 16px;\n  font-style: normal;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n</code></pre>\n          <h3 id=\"-\">第三步：挑选相应图标并获取字体编码，应用于页面</h3>\n<pre>\n<code class=\"language-html\"\n>&lt;span class=\"iconfont\"&gt;&amp;#x33;&lt;/span&gt;\n</code></pre>\n          <blockquote>\n            <p>\"iconfont\" 是你项目下的 font-family。可以通过编辑项目查看，默认是 \"iconfont\"。</p>\n          </blockquote>\n          </div>\n      </div>\n      <div class=\"content font-class\">\n        <ul class=\"icon_lists dib-box\">\n          \n          <li class=\"dib\">\n            <span class=\"icon iconfont icon-icon\"></span>\n            <div class=\"name\">\n              编辑记录\n            </div>\n            <div class=\"code-name\">.icon-icon\n            </div>\n          </li>\n          \n          <li class=\"dib\">\n            <span class=\"icon iconfont icon-001zhankai\"></span>\n            <div class=\"name\">\n              展 开 (1)\n            </div>\n            <div class=\"code-name\">.icon-001zhankai\n            </div>\n          </li>\n          \n          <li class=\"dib\">\n            <span class=\"icon iconfont icon-zhankai\"></span>\n            <div class=\"name\">\n              展 开\n            </div>\n            <div class=\"code-name\">.icon-zhankai\n            </div>\n          </li>\n          \n          <li class=\"dib\">\n            <span class=\"icon iconfont icon-fanhuidingbu\"></span>\n            <div class=\"name\">\n              返回顶部\n            </div>\n            <div class=\"code-name\">.icon-fanhuidingbu\n            </div>\n          </li>\n          \n          <li class=\"dib\">\n            <span class=\"icon iconfont icon-shanchu\"></span>\n            <div class=\"name\">\n              删除\n            </div>\n            <div class=\"code-name\">.icon-shanchu\n            </div>\n          </li>\n          \n          <li class=\"dib\">\n            <span class=\"icon iconfont icon-dianzan\"></span>\n            <div class=\"name\">\n              点赞\n            </div>\n            <div class=\"code-name\">.icon-dianzan\n            </div>\n          </li>\n          \n          <li class=\"dib\">\n            <span class=\"icon iconfont icon-shijian\"></span>\n            <div class=\"name\">\n              时间 (1)\n            </div>\n            <div class=\"code-name\">.icon-shijian\n            </div>\n          </li>\n          \n          <li class=\"dib\">\n            <span class=\"icon iconfont icon-yanjing\"></span>\n            <div class=\"name\">\n              眼睛\n            </div>\n            <div class=\"code-name\">.icon-yanjing\n            </div>\n          </li>\n          \n          <li class=\"dib\">\n            <span class=\"icon iconfont icon-renyuan\"></span>\n            <div class=\"name\">\n              人员\n            </div>\n            <div class=\"code-name\">.icon-renyuan\n            </div>\n          </li>\n          \n        </ul>\n        <div class=\"article markdown\">\n        <h2 id=\"font-class-\">font-class 引用</h2>\n        <hr>\n\n        <p>font-class 是 Unicode 使用方式的一种变种，主要是解决 Unicode 书写不直观，语意不明确的问题。</p>\n        <p>与 Unicode 使用方式相比，具有如下特点：</p>\n        <ul>\n          <li>相比于 Unicode 语意明确，书写更直观。可以很容易分辨这个 icon 是什么。</li>\n          <li>因为使用 class 来定义图标，所以当要替换图标时，只需要修改 class 里面的 Unicode 引用。</li>\n        </ul>\n        <p>使用步骤如下：</p>\n        <h3 id=\"-fontclass-\">第一步：引入项目下面生成的 fontclass 代码：</h3>\n<pre><code class=\"language-html\">&lt;link rel=\"stylesheet\" href=\"./iconfont.css\"&gt;\n</code></pre>\n        <h3 id=\"-\">第二步：挑选相应图标并获取类名，应用于页面：</h3>\n<pre><code class=\"language-html\">&lt;span class=\"iconfont icon-xxx\"&gt;&lt;/span&gt;\n</code></pre>\n        <blockquote>\n          <p>\"\n            iconfont\" 是你项目下的 font-family。可以通过编辑项目查看，默认是 \"iconfont\"。</p>\n        </blockquote>\n      </div>\n      </div>\n      <div class=\"content symbol\">\n          <ul class=\"icon_lists dib-box\">\n          \n            <li class=\"dib\">\n                <svg class=\"icon svg-icon\" aria-hidden=\"true\">\n                  <use xlink:href=\"#icon-icon\"></use>\n                </svg>\n                <div class=\"name\">编辑记录</div>\n                <div class=\"code-name\">#icon-icon</div>\n            </li>\n          \n            <li class=\"dib\">\n                <svg class=\"icon svg-icon\" aria-hidden=\"true\">\n                  <use xlink:href=\"#icon-001zhankai\"></use>\n                </svg>\n                <div class=\"name\">展 开 (1)</div>\n                <div class=\"code-name\">#icon-001zhankai</div>\n            </li>\n          \n            <li class=\"dib\">\n                <svg class=\"icon svg-icon\" aria-hidden=\"true\">\n                  <use xlink:href=\"#icon-zhankai\"></use>\n                </svg>\n                <div class=\"name\">展 开</div>\n                <div class=\"code-name\">#icon-zhankai</div>\n            </li>\n          \n            <li class=\"dib\">\n                <svg class=\"icon svg-icon\" aria-hidden=\"true\">\n                  <use xlink:href=\"#icon-fanhuidingbu\"></use>\n                </svg>\n                <div class=\"name\">返回顶部</div>\n                <div class=\"code-name\">#icon-fanhuidingbu</div>\n            </li>\n          \n            <li class=\"dib\">\n                <svg class=\"icon svg-icon\" aria-hidden=\"true\">\n                  <use xlink:href=\"#icon-shanchu\"></use>\n                </svg>\n                <div class=\"name\">删除</div>\n                <div class=\"code-name\">#icon-shanchu</div>\n            </li>\n          \n            <li class=\"dib\">\n                <svg class=\"icon svg-icon\" aria-hidden=\"true\">\n                  <use xlink:href=\"#icon-dianzan\"></use>\n                </svg>\n                <div class=\"name\">点赞</div>\n                <div class=\"code-name\">#icon-dianzan</div>\n            </li>\n          \n            <li class=\"dib\">\n                <svg class=\"icon svg-icon\" aria-hidden=\"true\">\n                  <use xlink:href=\"#icon-shijian\"></use>\n                </svg>\n                <div class=\"name\">时间 (1)</div>\n                <div class=\"code-name\">#icon-shijian</div>\n            </li>\n          \n            <li class=\"dib\">\n                <svg class=\"icon svg-icon\" aria-hidden=\"true\">\n                  <use xlink:href=\"#icon-yanjing\"></use>\n                </svg>\n                <div class=\"name\">眼睛</div>\n                <div class=\"code-name\">#icon-yanjing</div>\n            </li>\n          \n            <li class=\"dib\">\n                <svg class=\"icon svg-icon\" aria-hidden=\"true\">\n                  <use xlink:href=\"#icon-renyuan\"></use>\n                </svg>\n                <div class=\"name\">人员</div>\n                <div class=\"code-name\">#icon-renyuan</div>\n            </li>\n          \n          </ul>\n          <div class=\"article markdown\">\n          <h2 id=\"symbol-\">Symbol 引用</h2>\n          <hr>\n\n          <p>这是一种全新的使用方式，应该说这才是未来的主流，也是平台目前推荐的用法。相关介绍可以参考这篇<a href=\"\">文章</a>\n            这种用法其实是做了一个 SVG 的集合，与另外两种相比具有如下特点：</p>\n          <ul>\n            <li>支持多色图标了，不再受单色限制。</li>\n            <li>通过一些技巧，支持像字体那样，通过 <code>font-size</code>, <code>color</code> 来调整样式。</li>\n            <li>兼容性较差，支持 IE9+，及现代浏览器。</li>\n            <li>浏览器渲染 SVG 的性能一般，还不如 png。</li>\n          </ul>\n          <p>使用步骤如下：</p>\n          <h3 id=\"-symbol-\">第一步：引入项目下面生成的 symbol 代码：</h3>\n<pre><code class=\"language-html\">&lt;script src=\"./iconfont.js\"&gt;&lt;/script&gt;\n</code></pre>\n          <h3 id=\"-css-\">第二步：加入通用 CSS 代码（引入一次就行）：</h3>\n<pre><code class=\"language-html\">&lt;style&gt;\n.icon {\n  width: 1em;\n  height: 1em;\n  vertical-align: -0.15em;\n  fill: currentColor;\n  overflow: hidden;\n}\n&lt;/style&gt;\n</code></pre>\n          <h3 id=\"-\">第三步：挑选相应图标并获取类名，应用于页面：</h3>\n<pre><code class=\"language-html\">&lt;svg class=\"icon\" aria-hidden=\"true\"&gt;\n  &lt;use xlink:href=\"#icon-xxx\"&gt;&lt;/use&gt;\n&lt;/svg&gt;\n</code></pre>\n          </div>\n      </div>\n\n    </div>\n  </div>\n  <script>\n  $(document).ready(function () {\n      $('.tab-container .content:first').show()\n\n      $('#tabs li').click(function (e) {\n        var tabContent = $('.tab-container .content')\n        var index = $(this).index()\n\n        if ($(this).hasClass('active')) {\n          return\n        } else {\n          $('#tabs li').removeClass('active')\n          $(this).addClass('active')\n\n          tabContent.hide().eq(index).fadeIn()\n        }\n      })\n    })\n  </script>\n</body>\n</html>\n"
  },
  {
    "path": "src/views/info/icon/iconfont.css",
    "content": "@font-face {\n  font-family: \"iconfont\"; /* Project id 2656771 */\n  src: url('iconfont.woff2?t=1628043039155') format('woff2'),\n       url('iconfont.woff?t=1628043039155') format('woff'),\n       url('iconfont.ttf?t=1628043039155') format('truetype');\n}\n\n.iconfont {\n  font-family: \"iconfont\" !important;\n  font-size: 16px;\n  font-style: normal;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n.icon-icon:before {\n  content: \"\\e698\";\n}\n\n.icon-001zhankai:before {\n  content: \"\\e614\";\n}\n\n.icon-zhankai:before {\n  content: \"\\e62a\";\n}\n\n.icon-fanhuidingbu:before {\n  content: \"\\e6b9\";\n}\n\n.icon-shanchu:before {\n  content: \"\\e6c7\";\n}\n\n.icon-dianzan:before {\n  content: \"\\e60c\";\n}\n\n.icon-shijian:before {\n  content: \"\\e605\";\n}\n\n.icon-yanjing:before {\n  content: \"\\e8c7\";\n}\n\n.icon-renyuan:before {\n  content: \"\\e61a\";\n}\n\n"
  },
  {
    "path": "src/views/info/icon/iconfont.js",
    "content": "!function(t){var e,c,n,o,i,a='<svg><symbol id=\"icon-icon\" viewBox=\"0 0 1024 1024\"><path d=\"M967.111111 227.555556c0-125.155556-102.4-227.555556-227.555556-227.555556L284.444444 0C159.288889 0 56.888889 102.4 56.888889 227.555556l0 568.888889c0 125.155556 102.4 227.555556 227.555556 227.555556l455.111111 0c125.155556 0 227.555556-102.4 227.555556-227.555556L967.111111 227.555556zM284.444444 796.444444c-34.133333 0-56.888889-22.755556-56.888889-56.888889 0-34.133333 22.755556-56.888889 56.888889-56.888889s56.888889 22.755556 56.888889 56.888889C341.333333 773.688889 318.577778 796.444444 284.444444 796.444444zM284.444444 568.888889c-34.133333 0-56.888889-22.755556-56.888889-56.888889 0-34.133333 22.755556-56.888889 56.888889-56.888889s56.888889 22.755556 56.888889 56.888889C341.333333 546.133333 318.577778 568.888889 284.444444 568.888889zM284.444444 341.333333C250.311111 341.333333 227.555556 318.577778 227.555556 284.444444c0-34.133333 22.755556-56.888889 56.888889-56.888889s56.888889 22.755556 56.888889 56.888889C341.333333 318.577778 318.577778 341.333333 284.444444 341.333333zM739.555556 796.444444 512 796.444444c-34.133333 0-56.888889-22.755556-56.888889-56.888889 0-34.133333 22.755556-56.888889 56.888889-56.888889l227.555556 0c34.133333 0 56.888889 22.755556 56.888889 56.888889C796.444444 773.688889 773.688889 796.444444 739.555556 796.444444zM739.555556 568.888889 512 568.888889c-34.133333 0-56.888889-22.755556-56.888889-56.888889 0-34.133333 22.755556-56.888889 56.888889-56.888889l227.555556 0c34.133333 0 56.888889 22.755556 56.888889 56.888889C796.444444 546.133333 773.688889 568.888889 739.555556 568.888889zM739.555556 341.333333 512 341.333333C477.866667 341.333333 455.111111 318.577778 455.111111 284.444444c0-34.133333 22.755556-56.888889 56.888889-56.888889l227.555556 0c34.133333 0 56.888889 22.755556 56.888889 56.888889C796.444444 318.577778 773.688889 341.333333 739.555556 341.333333z\"  ></path></symbol><symbol id=\"icon-001zhankai\" viewBox=\"0 0 1024 1024\"><path d=\"M104.2 359.63333333L468.8 758.33333333a57.377 57.377 0 0 0 43.1 19.5c16.5 0 32.2-7.1 43.1-19.5l364.6-398.7c17.8-18.8 23.3-46.2 14.1-70.4s-31.4-41.1-57.2-43.4H147.6c-25.9 2.2-48.2 19-57.4 43.3-9.3 24.3-3.8 51.7 14 70.5z\"  ></path></symbol><symbol id=\"icon-zhankai\" viewBox=\"0 0 1024 1024\"><path d=\"M338.3 919.8L737 555.2a57.377 57.377 0 0 0 19.5-43.1c0-16.5-7.1-32.2-19.5-43.1L338.3 104.4c-18.8-17.8-46.2-23.3-70.4-14.1s-41.1 31.4-43.4 57.2v728.9c2.2 25.9 19 48.2 43.3 57.4 24.3 9.3 51.7 3.8 70.5-14z\"  ></path></symbol><symbol id=\"icon-fanhuidingbu\" viewBox=\"0 0 1024 1024\"><path d=\"M512 11.264c-276.48 0-500.736 224.256-500.736 500.736s224.256 500.736 500.736 500.736 500.736-224.256 500.736-500.736-224.256-500.736-500.736-500.736z m25.6 799.744c-6.656 6.656-16.384 10.752-25.6 10.752-9.728 0-18.944-4.096-25.6-10.752-6.656-6.656-10.752-16.384-10.752-26.112 0-9.728 4.096-19.456 10.752-26.112 6.656-6.656 16.384-10.752 25.6-10.752 9.728 0 18.944 4.096 25.6 10.752 6.656 6.656 10.752 16.384 10.752 26.112 0 9.728-4.096 19.456-10.752 26.112z m-25.6-85.504c-19.968 0-36.352-16.384-36.352-36.864 0-19.968 16.384-36.864 36.352-36.864 19.968 0 36.352 16.384 36.352 36.864s-16.384 36.864-36.352 36.864z m252.416-232.448c-7.68 7.68-17.408 11.264-27.136 11.264s-19.456-3.584-27.136-11.264l-159.744-159.744V588.8c0 20.992-17.408 38.4-38.4 38.4s-38.4-17.408-38.4-38.4v-255.488l-159.744 159.744c-14.848 14.848-39.424 14.848-54.272 0-14.848-14.848-14.848-39.424 0-54.272l225.28-225.28c14.848-14.848 39.424-14.848 54.272 0l225.28 225.28c14.848 14.848 14.848 38.912 0 54.272z\"  ></path></symbol><symbol id=\"icon-shanchu\" viewBox=\"0 0 1089 1024\"><path d=\"M1040.670958 144.278983H47.293044a47.325042 47.325042 0 0 0 0 94.650084h109.689145V820.172739A203.987251 203.987251 0 0 0 360.617461 1024h366.697082a203.987251 203.987251 0 0 0 203.667271-203.827261V238.801075h109.689144a47.293044 47.293044 0 1 0 0-94.55409zM484.16174 724.658709a47.293044 47.293044 0 1 1-94.586088 0v-297.261421a47.293044 47.293044 0 1 1 94.586088 0v297.261421z m214.066621 0a47.293044 47.293044 0 1 1-94.586089 0v-297.261421a47.293044 47.293044 0 1 1 94.586089 0v297.261421zM362.857321 94.71408h362.217362a47.35704 47.35704 0 0 0 0-94.682082H362.857321a47.35704 47.35704 0 0 0 0 94.682082z m0 0\"  ></path></symbol><symbol id=\"icon-dianzan\" viewBox=\"0 0 1024 1024\"><path d=\"M884.875894 423.143253 646.970506 423.143253c92.185562-340.464205-63.516616-357.853247-63.516616-357.853247-65.993017 0-52.312436 52.182476-57.3031 60.881602 0 166.502152-176.849824 296.971645-176.849824 296.971645l0 472.171899c0 46.607504 63.516616 63.393819 88.433098 63.393819l357.452111 0c33.641191 0 61.036122-88.224344 61.036122-88.224344 88.434122-300.70569 88.434122-390.177444 88.434122-390.177444C944.657442 418.179195 884.875894 423.143253 884.875894 423.143253L884.875894 423.143253 884.875894 423.143253zM884.875894 423.143253\"  ></path><path d=\"M251.671415 423.299819 109.214912 423.299819c-29.420053 0-29.873378 28.89612-29.873378 28.89612l29.420053 476.202703c0 30.309306 30.361495 30.309306 30.361495 30.309306L262.420223 958.707948c25.686009 0 25.458835-20.049638 25.458835-20.049638L287.879058 459.411271C287.879058 422.837284 251.671415 423.299819 251.671415 423.299819L251.671415 423.299819 251.671415 423.299819zM251.671415 423.299819\"  ></path></symbol><symbol id=\"icon-shijian\" viewBox=\"0 0 1024 1024\"><path d=\"M511.15 63.855c-246.39 0-446.143 199.686-446.143 446.078 0 246.386 199.754 446.106 446.142 446.106 246.357 0 446.077-199.72 446.077-446.106 0-246.392-199.72-446.078-446.077-446.078z m223.108 495.311h-236.87c-5.01 0-9.819-0.997-14.23-2.87-13.09-5.543-22.317-18.54-22.317-33.669V285.755c0-20.205 16.368-36.575 36.547-36.575 20.247 0 36.614 16.37 36.614 36.575v200.257h200.256c20.212 0 36.575 16.368 36.575 36.58 0 20.206-16.368 36.574-36.575 36.574z m0 0\"  ></path></symbol><symbol id=\"icon-yanjing\" viewBox=\"0 0 1024 1024\"><path d=\"M512 192c156.448 0 296.021333 98.730667 418.410667 291.605333a52.938667 52.938667 0 0 1 0 56.789334C808.021333 733.269333 668.448 832 512 832c-156.448 0-296.021333-98.730667-418.410667-291.605333a52.938667 52.938667 0 0 1 0-56.789334C215.978667 290.730667 355.552 192 512 192z m0 128c-106.037333 0-192 85.962667-192 192s85.962667 192 192 192 192-85.962667 192-192-85.962667-192-192-192z m0 320c70.688 0 128-57.312 128-128s-57.312-128-128-128-128 57.312-128 128 57.312 128 128 128z\"  ></path></symbol><symbol id=\"icon-renyuan\" viewBox=\"0 0 1024 1024\"><path d=\"M653.724793 510.209254v-16.270211c59.759768-43.182572 98.644549-113.379834 98.644548-192.684321C752.369341 170.069751 646.050165 63.750575 514.865194 63.750575S277.361047 170.069751 277.361047 301.254722c0 79.304487 38.884781 149.501749 98.644549 192.684321v14.018986c-148.580793 57.610872-254.695313 206.805636-254.695313 381.275508 0 35.200959 35.507944 63.750575 79.304487 63.750574h622.668132c43.796542 0 79.304487-28.549615 79.304487-63.750574 0.102328-172.218647-103.249325-319.776157-248.862596-379.024283z\"  ></path></symbol></svg>',s=(s=document.getElementsByTagName(\"script\"))[s.length-1].getAttribute(\"data-injectcss\"),l=function(t,e){e.parentNode.insertBefore(t,e)};if(s&&!t.__iconfont__svg__cssinject__){t.__iconfont__svg__cssinject__=!0;try{document.write(\"<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>\")}catch(t){console&&console.log(t)}}function d(){i||(i=!0,n())}function m(){try{o.documentElement.doScroll(\"left\")}catch(t){return void setTimeout(m,50)}d()}e=function(){var t,e;(e=document.createElement(\"div\")).innerHTML=a,a=null,(t=e.getElementsByTagName(\"svg\")[0])&&(t.setAttribute(\"aria-hidden\",\"true\"),t.style.position=\"absolute\",t.style.width=0,t.style.height=0,t.style.overflow=\"hidden\",e=t,(t=document.body).firstChild?l(e,t.firstChild):t.appendChild(e))},document.addEventListener?~[\"complete\",\"loaded\",\"interactive\"].indexOf(document.readyState)?setTimeout(e,0):(c=function(){document.removeEventListener(\"DOMContentLoaded\",c,!1),e()},document.addEventListener(\"DOMContentLoaded\",c,!1)):document.attachEvent&&(n=e,o=t.document,i=!1,m(),o.onreadystatechange=function(){\"complete\"==o.readyState&&(o.onreadystatechange=null,d())})}(window);"
  },
  {
    "path": "src/views/info/icon/iconfont.json",
    "content": "{\n  \"id\": \"2656771\",\n  \"name\": \"1\",\n  \"font_family\": \"iconfont\",\n  \"css_prefix_text\": \"icon-\",\n  \"description\": \"\",\n  \"glyphs\": [\n    {\n      \"icon_id\": \"771623\",\n      \"name\": \"编辑记录\",\n      \"font_class\": \"icon\",\n      \"unicode\": \"e698\",\n      \"unicode_decimal\": 59032\n    },\n    {\n      \"icon_id\": \"17893881\",\n      \"name\": \"展 开 (1)\",\n      \"font_class\": \"001zhankai\",\n      \"unicode\": \"e614\",\n      \"unicode_decimal\": 58900\n    },\n    {\n      \"icon_id\": \"19144837\",\n      \"name\": \"展 开\",\n      \"font_class\": \"zhankai\",\n      \"unicode\": \"e62a\",\n      \"unicode_decimal\": 58922\n    },\n    {\n      \"icon_id\": \"2356810\",\n      \"name\": \"返回顶部\",\n      \"font_class\": \"fanhuidingbu\",\n      \"unicode\": \"e6b9\",\n      \"unicode_decimal\": 59065\n    },\n    {\n      \"icon_id\": \"8338681\",\n      \"name\": \"删除\",\n      \"font_class\": \"shanchu\",\n      \"unicode\": \"e6c7\",\n      \"unicode_decimal\": 59079\n    },\n    {\n      \"icon_id\": \"579286\",\n      \"name\": \"点赞\",\n      \"font_class\": \"dianzan\",\n      \"unicode\": \"e60c\",\n      \"unicode_decimal\": 58892\n    },\n    {\n      \"icon_id\": \"5093341\",\n      \"name\": \"时间 (1)\",\n      \"font_class\": \"shijian\",\n      \"unicode\": \"e605\",\n      \"unicode_decimal\": 58885\n    },\n    {\n      \"icon_id\": \"11372780\",\n      \"name\": \"眼睛\",\n      \"font_class\": \"yanjing\",\n      \"unicode\": \"e8c7\",\n      \"unicode_decimal\": 59591\n    },\n    {\n      \"icon_id\": \"13014641\",\n      \"name\": \"人员\",\n      \"font_class\": \"renyuan\",\n      \"unicode\": \"e61a\",\n      \"unicode_decimal\": 58906\n    }\n  ]\n}\n"
  },
  {
    "path": "src/views/info/index.vue",
    "content": "<template>\n  <div>\n    <div class=\"infoZhan\" v-if=\"infoShow\" :style=\"'width:calc(100% - '+ treeWidth +'px );'\"></div>\n    <iframe id=\"mainIframe\" v-if=\"previewSrc\" class=\"iframe\" :src=\"previewSrc\" ref=\"iframe\"></iframe>\n    <div class=\"contInfo\" v-if=\"boolShow && !previewSrc\">\n      <Tiptap\n        @contetnChange=\"contetnChange\"\n        v-if=\"\n          nodeInfo.type == 'document_html' &&\n          typeof content == 'string' &&\n          type == 'edit'\n        \"\n        :content=\"content\"\n      ></Tiptap>\n      <LuckySheet\n        @contetnChange=\"contetnChange\"\n        v-if=\"\n          nodeInfo.type == 'document_xlsx' &&\n          typeof content == 'object' &&\n          type == 'edit'\n        \"\n        :content=\"content\"\n      ></LuckySheet>\n      <MindElixir\n        ref=\"mapNode\"\n        v-if=\"\n          nodeInfo.type == 'document_map' &&\n          typeof content == 'object' &&\n          type == 'edit'\n        \"\n        :content=\"content\"\n      ></MindElixir>\n      <Topology\n        ref=\"flowNode\"\n        v-if=\"\n          nodeInfo.type == 'document_flow' &&\n          typeof content == 'object' &&\n          type == 'edit'\n        \"\n        :content=\"content\"\n      ></Topology>\n      <viewContainer\n        v-if=\"type == 'read'\"\n        :type=\"nodeInfo.type\"\n        :content=\"nodeInfo.type == 'document_map'||nodeInfo.type == 'document_flow'?content:null\"\n        :tipcont=\"nodeInfo.type == 'document_html'?tipcontent:null\"\n        :excelcont=\"nodeInfo.type == 'document_xlsx'?excelcontent:null\"\n      ></viewContainer>\n      <div\n        class=\"other\"\n        v-if=\"\n          !(\n            nodeInfo.type == 'document_html' ||\n            nodeInfo.type == 'document_xlsx' ||\n            nodeInfo.type == 'document_map' ||\n            nodeInfo.type == 'document_flow'\n          )\n        \"\n      >\n        <div>\n          <figure>\n<!--            <img src=\"@/views/info/img/file.png\" alt=\"\" />-->\n            <img src=\"@/views/my/icon/other.png\" alt=\"\" />\n            <figcaption>{{ nodeInfo.name }}</figcaption>\n          </figure>\n<!--          <el-button class=\"btns\" type=\"primary\" @click=\"download\"-->\n<!--            >下载文件</el-button-->\n<!--          >-->\n          <el-button v-if=\"nodeInfo.content || previewUrl\" size=\"small\" type=\"primary\" @click=\"handlePreview\">预览文件</el-button>\n          <el-upload\n            v-else\n            class=\"upload-demo\"\n            :action=\"`/mgr/document//dcLibrary/upload/${nodeInfo.id}`\"\n            :data=\"paramData\"\n            :headers=\"header\"\n            :on-success=\"handleSuccess\"\n            :before-remove=\"beforeRemove\"\n            :show-file-list=\"false\"\n            :file-list=\"fileList\">\n            <el-button size=\"small\" style=\"margin-left: 16px;\" type=\"primary\">点击上传</el-button>\n          </el-upload>\n          <div class=\"upload-explain\">\n            <p>支持word excel ppt，pdf等办公文档</p>\n            <p>支持txt,java,php,py,md,js,css等所有纯文本</p>\n            <p>支持jpg，jpeg，png，gif等图片预览（翻转，缩放，镜像）</p>\n            <p>支持mp3，mp4，flv等多媒体文件预览</p>\n          </div>\n<!--          <div class=\"lines\"></div>-->\n<!--          <p>-->\n<!--            文档只能处理识别部分文件格式，或特定格式，其它格式将无法处理。请在本地使用专业软件打开。-->\n<!--          </p>-->\n        </div>\n        <img src=\"@/views/info/img/logor.png\" alt=\"\" />\n      </div>\n    </div>\n    <Comment :nodeInfo=\"nodeInfo\" :pageInfo=\"pageInfo\"></Comment>\n    <i\n      class=\"iconfont icon-fanhuidingbu\"\n      @click=\"handleScrollTop\"\n      v-show=\"gotop\"\n    ></i>\n  </div>\n</template>\n<script>\nimport Tiptap from \"@/views/common/Tiptap.vue\";\nimport LuckySheet from \"@/views/common/LuckySheet.vue\";\nimport MindElixir from \"@/views/common/MindElixir.vue\";\nimport Topology from \"@/views/common/Topology.vue\";\nimport Comment from \"@/views/common/Comment.vue\";\nimport { preview, queryMember, saveContent } from \"@/views/common/api\";\nimport viewContainer from \"@/views/common/show.vue\";\nimport { getStore } from \"@/util/store.js\";\nimport eventBus from \"@/util/eventBus\";\nimport store from \"@/store\";\nimport {Base64} from \"js-base64\";\nexport default {\n  props: {\n    nodeInfo: {\n      type: Object,\n      default: () => {\n        return {};\n      },\n    },\n    treeWidth: {\n      type: Number\n    }\n  },\n  components: {\n    Tiptap,\n    LuckySheet,\n    MindElixir,\n    Topology,\n    Comment,\n    viewContainer,\n  },\n  data() {\n    return {\n      previewSrc: null,\n      header: {\n        \"Authorization\": 'Bearer ' + store.getters.access_token\n      },\n      paramData: {\n      }, // 上传参数\n      fileList: [],\n      dialogVisible: false,\n      title: \"\",\n      infos: {},\n      content: null,\n      tipcontent:null,\n      excelcontent:null,\n      boolShow: false,\n      infoShow:false,\n      pageInfo: {},\n      userIno: {},\n      type: \"read\",\n      viewString: \"\",\n      gotop: false,\n      scrollHeight: 100,\n      scrollTop: 0,\n      previewUrl: null,\n    };\n  },\n  methods: {\n    handlePreview() {\n      const urlTemp = this.nodeInfo.content || this.previewUrl\n      let url = Base64.encode(urlTemp)\n      // this.$openUrl(`http://file.preview.jvs.bctools.cn/onlinePreview?url=${url}`, \"_blank\")\n      this.previewSrc = `http://file.preview.jvs.bctools.cn/onlinePreview?url=${url}`\n    },\n    beforeRemove(file, fileList) {\n      return this.$confirm(`确定移除 ${ file.name }？`);\n    },\n    handleSuccess(response, file, fileList) {\n      this.$message.success('上传成功！')\n      this.$emit('refreshTree')\n      this.previewUrl = response.data\n      const urlTemp = this.nodeInfo.content || this.previewUrl\n      let url = Base64.encode(urlTemp)\n      this.previewSrc = `http://file.preview.jvs.bctools.cn/onlinePreview?url=${url}`\n    },\n    // 滚动事件\n    handleScroll(e) {\n      const that = this;\n      const scrollTop =\n        document.getElementsByClassName(\"view-right\")[0].scrollTop;\n      that.scrollTop = scrollTop;\n      that.scrollTop > this.scrollHeight\n        ? (this.gotop = true)\n        : (this.gotop = false);\n    },\n    // 点击回到顶部事件\n    handleScrollTop() {\n      const that = this;\n      const timer = setInterval(() => {\n        const ispeed = Math.floor(-that.scrollTop / 5);\n        document.getElementsByClassName(\"view-right\")[0].scrollTop =\n          that.scrollTop + ispeed;\n        if (that.scrollTop === 0) {\n          clearInterval(timer);\n        }\n      }, 16);\n    },\n    contetnChange (str) {\n      if (this.nodeInfo.type == \"document_xlsx\") {\n        this.viewString = JSON.stringify(str);\n      } else {\n        this.viewString = str;\n      }\n      if(this.nodeInfo.type == 'document_html') {\n        this.$store.state.editStatus = 'ing'\n      }else{\n        this.$store.state.editStatus = 'end'\n      }\n    },\n    // 保存\n    async saveHandle() {\n      if (this.nodeInfo.type == \"document_map\") {\n        this.viewString = this.$refs.mapNode.mind.getAllDataString();\n      }\n      if (this.nodeInfo.type == \"document_flow\") {\n        this.viewString = this.$refs.flowNode.getVal();\n      }\n      await saveContent(this.nodeInfo.id, { content: this.viewString }).then( (res) => {\n        if (res.data.code == 0) {\n          this.$store.state.editStatus = 'end'\n          this.$notify({\n            title: \"保存成功\",\n            // message: '右下角弹出的消息',\n            type: \"success\",\n            position: \"bottom-right\",\n          });\n        }\n      });\n    },\n    handleEvent(e) {\n      if (\n        e.keyCode == 83 &&\n        (navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey)\n      ) {\n        e.preventDefault();\n        if (this.type == \"edit\") {\n          return this.saveHandle();\n        } else {\n          return false;\n        }\n      }\n    },\n    // 判断权限\n    jurisdiction(id) {\n      // 人员列表\n      queryMember(id, {size: 1000}).then((res) => {\n        if (res.data.code == 0) {\n          let list = res.data.data.records;\n          list.forEach((item) => {\n            if (item.userId == this.userIno.id) {\n              if (item.role != \"member\") {\n                this.type = \"edit\";\n              }\n            }\n          });\n        }\n      });\n      if(this.userIno && this.userIno.id==this.nodeInfo.createById){\n        this.type = \"edit\";\n      }\n    },\n    // 拉取数据\n    getData() {\n      this.infoShow = true;\n      preview(this.nodeInfo.id).then((res) => {\n        if (res.data.code == 0 && res.data.data) {\n          this.pageInfo = res.data.data;\n          if (res.data.data.content && res.data.data.content.startsWith(\"{\")) {\n            let resData = JSON.parse(res.data.data.content).content;\n            if (resData.startsWith(\"[\")) {\n              this.content = JSON.parse(resData);\n              this.excelcontent= JSON.parse(resData)\n            } else if (resData.startsWith(\"{\")) {\n              this.content = JSON.parse(resData);\n            } else {\n              this.content = resData;\n              this.tipcontent = resData;\n            }\n          } else {\n            this.content = \"\";\n          }\n          if (!this.content) {\n            if (this.nodeInfo.type == \"document_xlsx\") {\n              this.content = [];\n            }\n            if (\n              [\"document_map\", \"document_flow\"].indexOf(this.nodeInfo.type) > -1\n            ) {\n              this.content = {};\n            }\n          }\n          this.boolShow = true;\n          this.infoShow = false;\n        }\n        if (typeof this.content != \"string\") {\n          this.viewString = JSON.stringify(this.content);\n        } else {\n          this.viewString = this.content;\n        }\n        this.infoShow = false;\n      });\n      const urlTemp = this.nodeInfo.content || this.previewUrl\n      if(urlTemp) {\n        let url = Base64.encode(urlTemp)\n        this.previewSrc = `http://file.preview.jvs.bctools.cn/onlinePreview?url=${url}`\n      }\n    },\n    download() {\n    },\n  },\n  mounted() {\n    window.addEventListener(\"scroll\", this.handleScroll, true); // 注册滚动事件\n    document.addEventListener(\"keydown\", this.handleEvent);\n  },\n  destroyed() {\n    window.removeEventListener(\"scroll\", this.handleScroll, true);\n    document.removeEventListener(\"keydown\", this.handleEvent);\n  },\n  created() {\n    this.getData();\n    this.userIno = getStore({ name: \"userInfo\" });\n    this.jurisdiction(this.nodeInfo.knowledgeId);\n    this.handleScrollTop()\n    eventBus.$off(\"editSaveEvent\")\n    eventBus.$on(\"editSaveEvent\", type => {\n      switch(type) {\n        case 'save':\n          this.saveHandle()\n          break;\n        default: ;break;\n      }\n    });\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.iframe{\n  width: 100%;\n  height: calc(100vh - 80px);\n  border: none;\n}\n.infoZhan{\n  width: 100%;\n  height: 100%;\n  position: fixed;\n  background-image: url('../../styles/loading.gif');\n  background-repeat: no-repeat;\n  background-position: center;\n  //background-size: 450px 360px;\n  background-size: 300px 240px;\n  background-color: rgba(255, 255, 255, 0.9);\n  z-index: 9999999;\n}\n.other {\n  padding: 40px 40px 0;\n  display: flex;\n  justify-content: space-between;\n  img{\n    width: 475px; height: 324px;\n  }\n  .upload-explain{\n    margin-left: 16px;\n    p{\n      font-size: 14px;\n      line-height: 14px;\n      margin: 10px 0;\n    }\n  }\n}\n.other figure {\n  display: flex;\n  align-items: center;\n  img {\n    width: 150px;\n    height: auto;\n  }\n}\nfigcaption {\n  margin-left: 34px;\n  font-size: 30px;\n  font-weight: 400;\n}\n.btns {\n  width: 180px;\n  height: 50px;\n  margin-top: 45px;\n}\n.lines {\n  display: block;\n  width: 680px;\n  height: 1px;\n  background: #eeeeee;\n  margin-top: 70px;\n}\n.other p {\n  width: 680px;\n  font-size: 16px;\n  font-weight: 400;\n  margin-top: 20px;\n  color: #868ba1;\n}\n.icon-fanhuidingbu {\n  font-size: 55px;\n  color: #868ba1;\n  position: fixed;\n  bottom: 25px;\n  right: 21px;\n  cursor: pointer;\n}\n.icon-fanhuidingbu:hover {\n  color: #a5abc0;\n}\n</style>\n"
  },
  {
    "path": "src/views/main/wx/login.vue",
    "content": "<template>\n  <div></div>\n</template>\n<script>\nimport { mapGetters } from 'vuex'\nexport default {\n  computed: {\n    ...mapGetters([\"tagWel\"])\n  },\n  data () {\n    return {}\n  },\n  created () {\n    if(this.$route.query) {\n      let query = this.$route.query\n      query.loginType = 'weixin'\n      if(query) {\n        this.$store.dispatch(\"LoginByUsername\", Object.assign({}, query)).then((data) => {\n          localStorage.setItem('loginRandom', '')\n          this.getTenantByUserList(data)\n        }).catch(() => {\n          this.$router.push({ path: '/index' });\n        })\n      }\n    }\n  },\n  methods: {\n    // 获取该用户下所有的租户列表\n    getTenantByUserList (data) {\n      // console.log(data)\n      let list = []\n      if(data.userDto && data.userDto.tenants) {\n        list = data.userDto.tenants\n        if(list.length > 0) {\n          // 只有一个租户直接进去\n          if(list.length == 1) {\n            this.$store.commit(\"SET_SwitchTenant\", false)\n            this.setUserInfoData(data)\n          }else{\n            this.$store.commit(\"SET_SwitchTenant\", true)\n            this.switchTenant(list)\n          }\n        }\n      }\n    },\n    // 加入成功后写入数据\n    setUserInfoData (data) {\n      if(data) {\n        this.$store.commit(\"SET_ACCESS_TOKEN\", data.access_token);\n        this.$store.commit(\"SET_REFRESH_TOKEN\", data.refresh_token);\n        this.$store.commit(\"SET_EXPIRES_IN\", data.expires_in);\n        this.$store.commit(\"CLEAR_LOCK\");\n        this.$store.commit(\"SET_USER_INFO\", data.userDto);\n        this.$store.commit(\"SET_ROLES\", data.roles || []);\n        this.$store.commit(\"SET_PERMISSIONS\", data.permissions || []);\n        this.$store.commit(\"SET_TENANTId\", data.userDto.tenantId);\n        this.$store.commit(\"DEL_ALL_TAG\"); // 关闭之前打开的所有tag\n        this.$store.commit(\"SET_THEME_NAME\", \"\"); // 清除主题\n        this.$store.commit(\"SET_TENANTINFO\", data.userDto.tenant)\n\n        this.$router.push({ path: '/index' });\n      }   \n    },\n    // 选择租户登录\n    switchTenant (list) {\n      this.$openLogin({\n        successClose: false,\n        switchTenant: true,\n        switchList: list,\n        afterLogin: (dialog, res) => {\n          dialog.handleClose()\n          this.$router.push({ path: '/index' });\n        }\n      })\n    }\n  }\n}\n</script>"
  },
  {
    "path": "src/views/my/icon/index.js",
    "content": "import docType from './wendang.png'\nimport set from './shezhi.png'\nimport share from './fenxiang.png'\nimport liebiao from './liebiaozhanshi.png'\n\nimport file from './wenjianjia.png'\nimport world from './world.png'\nimport ppt from './PPT.png'\nimport excel from './excel.png'\nimport txt from './txt.png'\nimport naotu from './naotu.png'\nimport flow from './liuchengtu.png'\nimport tupian from './tupian.png'\nimport other from './other.png'\n\nexport const imgIcon = {\n  docType: docType,\n  set: set,\n  share: share,\n  liebiao: liebiao,\n\n  file: file,\n  world: world,\n  ppt: ppt,\n  excel: excel,\n  txt: txt,\n  naotu: naotu,\n  flow: flow,\n  tupian: tupian,\n  other: other,\n}\n"
  },
  {
    "path": "src/views/view/api.js",
    "content": "import request from '@/router/axios'\n\n// 获取目录树\nexport function getLibTree(id) {\n  return request({\n    url: `/mgr/document/dcLibrary/tree`,\n    method: \"get\",\n    params: {id: id}\n  });\n}\n\n// 查询文档编辑记录\nexport function getLibEditLog(params) {\n  return request({\n    url: `/mgr/document/dcLibrary/document/recently/updated`,\n    method: \"get\",\n    params: params\n  });\n}\n\n// 查询知识库成员\nexport function getLibMember(id,params) {\n  return request({\n    url: `/mgr/document/dcLibrary/query/member/${id}`,\n    method: \"get\",\n    params: params\n  });\n}\n\n// 查询指定目录下(不含子目录)所有文件\nexport function getDocumentList(id) {\n  return request({\n    url: `/mgr/document/dcLibrary/document/list/${id}`,\n    method: \"get\"\n  });\n}\n"
  },
  {
    "path": "src/views/view/diclibApi.js",
    "content": "import request from '@/router/axios'\n\n// 分页查询\nexport const pageList = (params) => {\n  return request({\n    url: `/mgr/document/dcLibrary/page`,\n    method: 'get',\n    params:  params\n  })\n}\n\n// 获取文件树\nexport const dcLibTree = () => {\n  return request({\n    url: `/mgr/document/dcLibrary/tree`,\n    method: 'get'\n  })\n}\n\n// 添加知识库、目录、文件\nexport const addLib = (data) => {\n  return request({\n    url: `/mgr/document/dcLibrary`,\n    method: 'post',\n    data: data\n  })\n}\n\n// 删除\nexport const delLib = (id) => {\n  return request({\n    url: `/mgr/document/dcLibrary/${id}`,\n    method: 'delete'\n  })\n}\n\n// 修改知识库设置\nexport const editLib = (data) => {\n  return request({\n    url: `/mgr/document/dcLibrary`,\n    method: 'put',\n    data: data\n  })\n}\n\n// 预览文档\nexport const preview = (id) => {\n  return request({\n    url: `/mgr/document/dcLibrary/preview/document/${id}`,\n    method: 'get'\n  })\n}\n\n// 查询知识库成员\nexport const queryUser = (id, params) => {\n  return request({\n    url: `/mgr/document/dcLibrary/query/member/${id}`,\n    method: 'get',\n    params: params\n  })\n}\n\n// 添加知识库成员\nexport const addmember = (data) => {\n  return request({\n    url: `/mgr/document/dcLibrary/add/member`,\n    method: 'put',\n    data: data\n  })\n}\n\n// 知识库成员角色修改\nexport const modifyRole = (documentId, userId, role) => {\n  return request({\n    url: `/mgr/document/dcLibrary/modify/role/${documentId}/${userId}/${role}`,\n    method: 'put'\n  })\n}\n\n// 删除知识库成员\nexport const delmember = (documentId, userId) => {\n  return request({\n    url: `/mgr/document/dcLibrary/delete/member/${documentId}/${userId}`,\n    method: 'delete'\n  })\n}\n"
  },
  {
    "path": "src/views/view/index.vue",
    "content": "<template>\n  <div class=\"konwledge-base-view\">\n    <topbar :inKeyword=\"topKeyword\" @searchChange=\"allSearchChange\"></topbar>\n    <div class=\"search-box\" v-if=\"topIsSearch\">\n      <searchTool :keyword=\"topKeyword\" @openDoc=\"openDoc\"></searchTool>\n    </div>\n    <div v-else class=\"view-content\">\n      <div class=\"view-left\" :style=\"'width:' + treeWidth+ 'px;'\">\n        <!-- <i class=\"el-icon-s-home\"></i> -->\n        <h5 @click=\"homeClick\" style=\"text-indent: 40px;\">{{knowledgeName}}</h5>\n        <h5 class=\"directorytitle\">\n          <span><i class=\"el-icon-menu\"></i><span>目录</span></span>\n          <el-popover\n            v-if=\"addCatalogueRight\"\n            popper-class=\"hover-popver-list\"\n            v-model=\"addDictool\"\n            placement=\"right\"\n            width=\"50\"\n            trigger=\"click\">\n            <ul class=\"base-type-list\">\n              <li v-for=\"(item, index) in doc_type_list\" v-if=\"item.type == 'directory' ? addCatalogueRight : addCatalogueRight\" :key=\"item.name+item.icon+index\" @click=\"addChange(null, item)\">\n                <i :class=\"item.icon\"></i>\n                <span>{{item.name}}</span>\n              </li>\n            </ul>\n            <i class=\"addDirectory el-icon-plus\" slot=\"reference\" @click=\"closeLastAdd\"></i>\n          </el-popover>\n          <!-- <i v-if=\"addCatalogueRight\" class=\"addDirectory el-icon-plus\" @click.stop='addChange(null, {icon: \"el-icon-folder\", name: \"目录\", type: \"directory\"})'></i> -->\n        </h5>\n        <el-tree\n          class=\"tree-list\"\n          ref=\"nodeTree\"\n          :data=\"treeData\"\n          :props=\"defaultProps\"\n          accordion\n          node-key=\"id\"\n          :default-expanded-keys=\"expandKey\"\n          :expand-on-click-node=\"false\"\n          @node-expand=\"nodeExpand\"\n          @node-drag-start=\"handleDragStart\"\n          @node-drag-end=\"handleDragEnd\"\n          @node-drop=\"handleDrop\"\n          :draggable=\"false\"\n          :allow-drop=\"allowDrop\"\n          :allow-drag=\"allowDrag\"\n        >\n        <!-- @node-click=\"handleNodeClick\" -->\n          <span class=\"custom-tree-node\" slot-scope=\"{ node, data }\">\n            <!-- <i class=\"el-icon-tickets\"></i> -->\n            <img :src=\"getIcon(data.type)\" alt=\"\"/>\n            <el-input\n              ref=\"editInput\"\n              v-if=\"changeNode && changeNode.changeNodeShow && changeNode.id == data.id\"\n              size=\"mini\"\n              v-model=\"changeName\"\n              :style=\"'width: ' + (treeWidth - getRightWidth(data) - node.level * 20) + 'px;'\"\n              @keyup.enter.native=\"nameChange\"\n              @blur=\"nameChange\"\n            ></el-input>\n            <span\n              v-else\n              @click=\"handleNodeClick(data, node)\"\n              @dblclick=\"editName(data)\"\n              class=\"text\" :style=\"'width: ' + (treeWidth - getRightWidth(data) - node.level * 20) + 'px;'\"\n            >{{node.label}}</span>\n            <span class=\"tree-right-tool\">\n              <el-popover\n                v-if=\"enableDelete(data, more_list)\"\n                popper-class=\"hover-popver-list\"\n                placement=\"right\"\n                width=\"50\"\n                v-model=\"data.moretool\"\n                trigger=\"click\">\n                <ul class=\"base-type-list\">\n                  <li v-for=\"item in more_list\" v-if=\"item.enable\" :key=\"item.name+item.icon\" @click.stop=\"moreChange(data, item)\">\n                    <i :class=\"item.icon\"></i>\n                    <span>{{item.name}}</span>\n                  </li>\n                  <li v-if=\"data.type == 'knowledge' && data.isOwner === true\" @click.stop=\"moreChange(data, {name: '设置', type: 'set'})\">\n                    <i class=\"el-icon-setting\"></i>\n                    <span>设置</span>\n                  </li>\n                </ul>\n                <i slot=\"reference\" class=\"el-icon-more iconhover\" @click=\"openAdd(data)\"></i>\n              </el-popover>\n              <!-- addFileRight -->\n              <el-popover\n                v-if=\"['knowledge', 'directory'].indexOf(data.type) > -1 && addCatalogueRight\"\n                popper-class=\"hover-popver-list\"\n                v-model=\"data.addtool\"\n                placement=\"right\"\n                width=\"50\"\n                trigger=\"click\">\n                <ul class=\"base-type-list\">\n                  <li v-for=\"(item, index) in doc_type_list\" :key=\"item.name+item.icon+index\" @click=\"addChange(data, item)\">\n                    <i :class=\"item.icon\"></i>\n                    <span>{{item.name}}</span>\n                  </li>\n                </ul>\n                <i class=\"el-icon-plus iconhover\" slot=\"reference\" @click=\"openAdd(data)\"></i>\n              </el-popover>\n            </span>\n          </span>\n        </el-tree>\n        <div class=\"divider-line\" :style=\"'left:' + (treeWidth - 10)+'px;'\" :draggable=\"true\" @dragstart=\"dragstart\" @dragend=\"dragend\"></div>\n      </div>\n      <div class=\"view-right\" :style=\"'width: calc(100% - '+ treeWidth +'px);'\">\n        <div class=\"tool-box\" v-if=\"boolShow && boolMyInfo\">\n          <toolbar\n            :id=\"konwledgeInfo.id + ''\"\n            :nodeInfo=\"konwledgeInfo\"\n            :hasRight=\"hasRight\"\n            @fresh=\"freshHandle\"\n          ></toolbar>\n        </div>\n        <!-- 文档 -->\n        <div class=\"knowledge-box\" v-if=\"boolShow && konwledgeInfo.type == 'knowledge'\">\n          <div class=\"base-introduce\">\n            <div class=\"info\">\n              <div class=\"intrduce\">\n                <!-- <img :src=\"konwledgeInfo.coverImage ? konwledgeInfo.coverImage : iconImg\" /> -->\n                <div\n                  class=\"cover-info\"\n                  :style=\"\n                    konwledgeInfo.color\n                      ? 'background: ' + konwledgeInfo.color + ';'\n                      : ''\n                  \"\n                >\n                  <img class=\"mark\" :src=\"markImg\" />\n<!--                  <img class=\"desktop\" :src=\"desktopImg\" />-->\n                </div>\n                <div>\n                  <h5>{{ konwledgeInfo.name }}</h5>\n                  <section>{{ konwledgeInfo.description }}</section>\n                </div>\n              </div>\n              <div class=\"search\">\n                <el-input\n                  placeholder=\"请输入内容搜索\"\n                  prefix-icon=\"el-icon-search\"\n                  v-model=\"keyword\"\n                  @keyup.enter.native=\"searchHandle\"\n                >\n                </el-input>\n              </div>\n            </div>\n            <img class=\"infoImage\" :src=\"infoImg\" />\n          </div>\n          <div class=\"search-boxs\" v-if=\"isSearch\">\n            <searchTool\n              :id=\"konwledgeInfo.id + ''\"\n              :keyword=\"keyword\"\n              @openDoc=\"openDoc\"\n            ></searchTool>\n          </div>\n          <div v-else>\n            <div class=\"person-list\">\n              <h5>协作人员 ({{ personList.length }}人)</h5>\n              <div>\n                <p\n                  class=\"person-list-item\"\n                  v-for=\"(item, index) in personList\"\n                  :key=\"item.realName + '-persion' + index\"\n                >\n                  <img :src=\"item.headImg ? item.headImg : userImg\" />\n                  <span>{{ item.realName }}</span>\n                </p>\n              </div>\n            </div>\n            <div class=\"lasted-update\">\n              <h5>最新动态</h5>\n              <div class=\"lasted-update-list\">\n                <h4\n                  v-if=\"!updateList || updateList.length == 0\"\n                  style=\"font-size: 16px; margin: 5px 0px\"\n                >\n                  暂无更新\n                </h4>\n                <div\n                  class=\"lasted-update-list-item\"\n                  v-for=\"(item, index) in updateList\"\n                  :key=\"'update-item' + index + '-' + item.name\"\n                  @click=\"openItem(item)\"\n                >\n                  <p>\n                    <!-- :src=\"docitemImg\"  -->\n                    <img :src=\"getIcon(item.type)\" />\n                    <span>{{ item.name }}</span>\n                  </p>\n                  <p class=\"right-tip-info\">\n                    <span>{{ item.createTime }}</span>\n                    <span>{{ item.realName }}</span>\n                  </p>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n        <!-- 目录 -->\n        <div\n          class=\"directory-box\"\n          v-if=\"boolShow && konwledgeInfo.type == 'directory'\"\n        >\n          <directoryView\n            :nodeInfo=\"konwledgeInfo\"\n            :treeWidth=\"treeWidth\"\n            @openDoc=\"openDoc\"\n            @openFile=\"openItem\"\n          ></directoryView>\n        </div>\n        <div\n          class=\"file-box\"\n          v-if=\"\n            boolShow &&\n            ['knowledge', 'directory'].indexOf(konwledgeInfo.type) == -1\n          \"\n        >\n          <fileView :nodeInfo=\"konwledgeInfo\" :treeWidth=\"treeWidth\" @refreshTree=\"refreshTree\"></fileView>\n        </div>\n      </div>\n    </div>\n    <el-dialog\n      :width=\"dialogType == 'setting' ? '60%' : '50%'\"\n      :fullscreen=\"dialogType == 'setting' ? true : false\"\n      :class=\"{'form-fullscreen-dialog': dialogType == 'setting', 'dialog': true}\"\n      :visible.sync=\"dialogVisible\"\n      :before-close=\"handleClose\">\n      <span slot=\"title\" class=\"dialogHeader\">\n        <div class=\"dialogLine\"></div>\n        <span>{{title}}</span>\n      </span>\n      <!-- 新增 知识库  树形操作 -->\n      <jvs-form v-if=\"dialogVisible && ['knowledge', 'directory', 'document_html', 'document_xlsx', 'document_map', 'document_flow'].indexOf(dialogType) > -1\" :option=\"baseFormOption\" :formData=\"baseForm\" @submit=\"baseSubmit\"></jvs-form>\n    </el-dialog>\n  </div>\n</template>\n<script>\nimport eventBus from \"@/util/eventBus\";\nimport topbar from \"@/views/common/topbar\";\nimport icon from \"./img/docicon.png\";\nimport info from \"./img/docinfo.png\";\nimport user from \"@/views/common/img/user.png\";\nimport docitem from \"./img/docitem.png\";\nimport toolbar from \"@/views/common/toolbar\";\nimport searchTool from \"@/views/common/search\";\nimport directoryView from \"@/views/catalogview/index\";\nimport fileView from \"@/views/info/index\";\nimport mark from \"@/views/index/img/mark.png\";\nimport desktop from \"@/views/index/img/desktop.png\";\nimport {pageList, dcLibTree, addLib, delLib, editLib, preview, queryUser, addmember, modifyRole, delmember} from './diclibApi'\nimport {\n  getLibTree,\n  getLibEditLog,\n  getLibMember,\n  getDocumentList,\n} from \"./api\";\nimport { getStore } from \"@/util/store\";\nimport {imgIcon} from '../my/icon/index'\nexport default {\n  components: { topbar, toolbar, searchTool, directoryView, fileView },\n  data() {\n    return {\n      knowledgeName:\"\",\n      clickTimer:null,\n      xjname:\"未命名文件\",\n      sendQuery:{},\n      myInfo:{},\n      boolMyInfo:false,\n      iconImg: icon,\n      infoImg: info,\n      userImg: user,\n      docitemImg: docitem,\n      markImg: mark,\n      desktopImg: desktop,\n      id: \"\",\n      keyword: \"\",\n      defaultProps: {\n        children: \"children\",\n        label: \"name\",\n      },\n      konwledgeInfo: {},\n      treeData: [],\n      personList: [],\n      updateList: [],\n      isSearch: false, // false\n      expandKey: [],\n      topIsSearch: false,\n      topKeyword: \"\",\n      boolShow: true,\n      imgIconList: imgIcon,\n      currentId: '',\n      currentNode: null,\n      treeWidth: 310,\n      more_list: [\n        // {icon: \"el-icon-document\", name: \"复制链接\", type: 'copy'},\n        {icon: \"el-icon-tickets\", name: \"删除\", type: 'del'},\n        // {icon: \"el-icon-tickets\", name: \"导出\", type: 'export'},\n        // {icon: \"el-icon-tickets\", name: \"重命名\", type: 'rename'},\n        // {icon: \"el-icon-tickets\", name: \"上传文件\", type: 'rename'}\n      ],\n      doc_type_list: [\n        {icon: \"el-icon-folder\", name: \"文件夹\", type: \"directory\"},\n        {icon: \"el-icon-document\", name: \"文本文档\", type: \"document_html\"},\n        {icon: \"el-icon-notebook-2\", name: \"表格文档\", type: \"document_xlsx\"},\n        {icon: \"icon-liucheng11\", name: \"脑图文档\", type: \"document_map\"},\n        {icon: \"icon-liucheng\", name: \"流程文档\", type: \"document_flow\"},\n        {icon: \"el-icon-folder-opened\", name: \"其他文档\", type: \"document_unrecognized\"},\n      ],\n      selectType: \"\", // 表单操作选择的类型\n      opType: \"\", // 操作类型  区分 新增  或 修改\n      title: \"\",\n      dialogVisible: false, // 弹框\n      baseForm: {},\n      dialogType: \"\", // 弹框类型\n      addMess: \"\", // 提示信息\n      baseFormOption: {\n        cancal: false,\n        column: [\n          {\n            label: \"知识库名\",\n            prop: \"name\",\n            rules: [\n              { required: true, message: '请输入知识库名', trigger: 'blur' },\n            ]\n          },\n          {\n            label: \"描述\",\n            prop: \"description\",\n            rules: [\n              { required: false, message: '请输入描述', trigger: 'blur' },\n            ]\n          }\n        ]\n      },\n      hasRight: false,\n      addCatalogueRight: false,\n      addFileRight: false,\n      lastAdd: null,\n      originName: '',\n      changeName: '',\n      changeNode: null,\n      addDictool: false\n    };\n  },\n  methods: {\n    refreshTree() {\n      this.getLibTreeHandle(this.id);\n    },\n    async init (oprate) {\n      if(this.$route.query) {\n          if (this.$route.query && this.$route.query.id) {\n            this.id = this.$route.query.id;\n            this.currentId = this.id\n            if(oprate && oprate == 'home') {\n              this.initKonwledge()\n            }else{\n              if(this.$route.query.docId) {\n                this.konwledgeInfo = {\n                  type: this.$route.query.type,\n                  knowledgeId: this.id,\n                  id: this.$route.query.docId\n                }\n                await this.getLibMemberHandle(this.id);\n                this.getLibTreeHandle(this.id, {openId: this.$route.query.docId});\n              }else{\n                this.initKonwledge()\n              }\n            }\n          }\n        }\n    },\n    async initKonwledge () {\n      if (getStore({ name: \"konwledgeInfo\" })) {\n        this.konwledgeInfo = getStore({ name: \"konwledgeInfo\" });\n        this.boolMyInfo=false\n        if(this.myInfo){\n          if(this.myInfo.id==this.konwledgeInfo.createById){\n            this.boolMyInfo=true\n          }\n        }\n      }else{\n        this.konwledgeInfo = {\n          type: this.$route.query.type,\n          id: this.id\n        }\n      }\n      await this.getLibMemberHandle(this.id);\n      this.getLibEditLogHandle({ id: this.id, size: 10 });\n      this.getLibTreeHandle(this.id);\n      this.boolShow = true;\n    },\n    // 点击节点\n    handleNodeClick (data, node) {\n      if(this.$store.state.editStatus && this.$store.state.editStatus == 'ing') {\n        this.$confirm('该文档存在改动, 是否保存?', '提示', {\n          confirmButtonText: '保存',\n          cancelButtonText: '放弃',\n          type: 'warning'\n        }).then(() => {\n          this.getItemOfTree(this.$refs.nodeTree.children, this.currentId)\n          this.$refs.nodeTree.setCurrentNode(this.currentNode)\n          this.expandKey = [this.currentNode.parentId]\n          eventBus.$emit('editSaveEvent', 'save')\n          return false\n        }).catch(() => {\n          this.changeNodeHandle(data, node)\n          this.$store.state.editStatus = 'end'\n        });\n      }else{\n        this.changeNodeHandle(data, node)\n      }\n    },\n    changeNodeHandle (data, node) {\n      if(window.luckysheet) {\n        window.luckysheet.exitEditMode()\n      }\n      let _this=this\n      if (this.clickTimer) {\n        window.clearTimeout(this.clickTimer);\n        this.clickTimer = null;\n      }\n      this.clickTimer = window.setTimeout(function() {\n        _this.boolShow = false;\n        _this.$set(_this, 'konwledgeInfo', JSON.parse(JSON.stringify(data)))\n        _this.currentId = data.id\n        _this.keyword = \"\";\n        if (data.type == \"knowledge\") {\n          _this.getLibMemberHandle(data.id);\n          _this.getLibEditLogHandle({ id: data.id, size: 10 });\n        }\n        if ([\"directory\"].indexOf(data.type) > -1) {\n          _this.nodeExpand(data, node);\n        }\n        _this.$nextTick(() => {\n          _this.boolShow = true;\n        });\n      }, 300);\n    },\n    nodeExpand(data, node, self) {\n      return false;\n      if ([\"knowledge\", \"directory\"].indexOf(data.type) > -1) {\n        let hasFile = false;\n        if (data.children && data.children.length > 0) {\n          for (let d in data.children) {\n            if (\n              [\"knowledge\", \"directory\"].indexOf(data.children[d].type) == -1\n            ) {\n              hasFile = true;\n            }\n          }\n        }\n        getDocumentList(data.id).then((res) => {\n          if (res.data.code == 0) {\n            if (res.data.data && res.data.data.length > 0) {\n              if (!data.children || data.children.length == 0) {\n                data.children = res.data.data;\n              } else {\n                for (let r in res.data.data) {\n                  let bool = true;\n                  for (let c in data.children) {\n                    console.log(\n                      res.data.data[r].id,\n                      data.children[c].id,\n                      res.data.data[r].id == data.children[c].id\n                    );\n                    if (res.data.data[r].id == data.children[c].id) {\n                      bool = false;\n                    }\n                  }\n                  if (bool) {\n                    data.children.push(res.data.data[r]);\n                  }\n                }\n              }\n            }\n            for (let i in data.children) {\n              this.$refs.nodeTree.append(data.children[i], node);\n            }\n            node.expanded = true;\n            this.$forceUpdate();\n          }\n        });\n      }\n    },\n    // 获取树形结构\n    getLibTreeHandle (id, openNode) {\n      getLibTree(id).then((res) => {\n        if (res.data.code == 0) {\n          this.knowledgeName=res.data.data[0].name\n          if(res.data.data && res.data.data.length > 0 && res.data.data[0].children) {\n            this.$store.commit(\"SET_KONWLEDGE\", res.data.data[0])\n            this.treeData = res.data.data[0].children\n          }\n          this.formatTreeData(this.treeData, 1);\n          this.$nextTick(() => {\n            if(openNode) {\n              this.getItemOfTree(this.$refs.nodeTree.children, openNode.openId)\n              this.$refs.nodeTree.setCurrentNode(this.currentNode)\n              this.expandKey = [this.currentNode.parentId]\n            }\n          })\n        }\n      });\n    },\n    // 格式化树形，添加level\n    formatTreeData(list, level) {\n      for (let i in list) {\n        list[i].level = level;\n        if (list[i].children && list[i].children.length > 0) {\n          this.formatTreeData(list[i].children, level + 1);\n        }\n      }\n    },\n    // 人员列表\n    async getLibMemberHandle (id) {\n      await getLibMember(id,{size:10000}).then((res) => {\n        if (res.data.code == 0) {\n          this.personList = res.data.data.records;\n          let userInfo = getStore({name: 'userInfo'})\n          this.addCatalogueRight=false\n          for(let i in this.personList) {\n            if(this.personList[i].userId == userInfo.id) {\n              this.hasRight = this.personList[i].role == 'owner' ? true : false\n              this.addCatalogueRight = (['owner', 'admin'].indexOf(this.personList[i].role) > -1) ? true : false\n              this.addFileRight = true\n            }\n          }\n        }\n      });\n    },\n    // 更新记录\n    async getLibEditLogHandle(params) {\n      await getLibEditLog(params).then((res) => {\n        if (res.data.code == 0) {\n          this.updateList = res.data.data;\n        }\n      });\n    },\n    // 搜索\n    searchHandle() {\n      if (this.keyword && this.keyword.replace(/^(\\s|\\xA0)+|(\\s|\\xA0)+$/g, '')) {\n        this.isSearch = true;\n      } else {\n        this.isSearch = false;\n      }\n    },\n    // 回到首页\n    homeClick () {\n      if(this.$store.state.editStatus && this.$store.state.editStatus == 'ing') {\n        this.$confirm('该文档存在改动, 是否保存?', '提示', {\n          confirmButtonText: '保存',\n          cancelButtonText: '放弃',\n          type: 'warning'\n        }).then(() => {\n          eventBus.$emit('editSaveEvent', 'save')\n          if(this.$store.state.editStatus != 'ing') {\n            this.goHome()\n          }\n          return false\n        }).catch(() => {\n          this.goHome()\n          this.$store.state.editStatus = 'end'\n        });\n      }else{\n        this.goHome()\n      }\n    },\n    goHome() {\n      // this.$router.push({ path: \"/index\" });\n      this.boolShow = false;\n      this.init('home')\n    },\n    allSearchChange(val) {\n      this.topKeyword = val;\n      if (val && val.replace(/^(\\s|\\xA0)+|(\\s|\\xA0)+$/g, '')) {\n        this.topIsSearch = true;\n      } else {\n        this.topIsSearch = false;\n      }\n    },\n    freshHandle(data) {\n      if (typeof data == \"boolean\") {\n        this.getLibTreeHandle(this.konwledgeInfo.id);\n        this.getLibMemberHandle(this.konwledgeInfo.id);\n        this.getLibEditLogHandle({ id: this.konwledgeInfo.id, size: 10 });\n      } else {\n        this.$set(this, \"konwledgeInfo\", data);\n        this.$store.commit(\"SET_KONWLEDGE\", data)\n        this.knowledgeName = data.name\n      }\n    },\n    openDoc (item) {\n      this.$set(this.konwledgeInfo, 'type', item.type)\n      this.$set(this.konwledgeInfo, 'knowledgeId', item.knowledgeId)\n      this.$set(this.konwledgeInfo, 'id', item.docId)\n      this.isSearch = false\n      this.topIsSearch = false\n      this.$set(this, 'keyword', '')\n      this.$set(this, 'topKeyword', '')\n      this.init()\n    },\n    getIcon (type) {\n      let src = \"\"\n      switch(type) {\n        case 'directory': src = this.imgIconList.file;break;\n        case 'document_html': src = this.imgIconList.world;break;\n        case 'document_xlsx': src = this.imgIconList.excel;break;\n        case 'document_map': src = this.imgIconList.naotu;break;\n        case 'document_flow': src = this.imgIconList.flow;break;\n        case 'document_image': src = this.imgIconList.tupian;break;\n        case 'document_txt': src = this.imgIconList.txt;break;\n        case 'document_ppt': src = this.imgIconList.ppt;break;\n        case 'document_unrecognized': src = this.imgIconList.other;break;\n        default: src = this.imgIconList.file;break;\n      }\n      return src\n    },\n    openItem (item) {\n      this.$set(this.konwledgeInfo, 'type', item.type)\n      this.$set(this.konwledgeInfo, 'knowledgeId', this.id)\n      this.$set(this.konwledgeInfo, 'id', item.docId)\n      this.getItemOfTree(this.$refs.nodeTree.children, item.docId)\n      this.$refs.nodeTree.setCurrentNode(this.currentNode)\n      this.expandKey = [this.currentNode.parentId]\n    },\n    getItemOfTree (list, id) {\n      for(let i in list) {\n        if(list[i].id == id) {\n          this.currentNode = list[i]\n        }\n        if(list[i].children) {\n          this.getItemOfTree(list[i].children, id)\n        }\n      }\n    },\n    dragstart (e) {\n      // console.log(e)\n    },\n    dragend (e) {\n      if(e.pageX < 310) {\n        this.treeWidth = 310\n      }else if(e.pageX > 500) {\n        this.treeWidth = 500\n      }else{\n        this.treeWidth = e.pageX\n      }\n    },\n    openAdd (node) {\n      this.addDictool=false\n      if(this.lastAdd) {\n        this.lastAdd.addtool = false\n        this.lastAdd.moretool = false\n      }\n      this.lastAdd = node\n    },\n    closeLastAdd () {\n      if(this.lastAdd) {\n        this.lastAdd.moretool=false\n      }\n    },\n    addChange (node, item) {\n      this.selectType = item.type\n      if(node) {\n        node.addtool = false\n        this.currentNodeData = node\n        // this.addBaseHandle(node.type, item.name, 'add')\n        if(this.selectType==\"directory\"){\n          this.xjname=\"未命名文件夹\"\n        }else{\n          this.xjname=\"未命名文件\"\n        }\n        this.sendQuery ={fileType:this.selectType,id:this.currentNodeData.id,name:this.xjname}\n      }else{\n        this.currentNode = null\n        // this.addBaseHandle('knowledge', item.name, 'add')\n        if(this.selectType==\"directory\"){\n          this.xjname=\"未命名文件夹\"\n        }else{\n          this.xjname=\"未命名文件\"\n        }\n        this.sendQuery ={fileType:this.selectType,id:this.id,name:this.xjname}\n      }\n      addLib(this.sendQuery).then(res => {\n        if(res.data.code == 0) {\n          this.addDictool=false\n          this.$notify({\n            title: (\"新建\"+ this.addMess +\"成功\"),\n            // message: '右下角弹出的消息',\n            type: 'success',\n            position: 'bottom-right'\n          });\n          this.handleClose()\n          let openNode = null\n          if(res.data.data) {\n            openNode = {\n              openId: res.data.data.id\n            }\n          }\n          this.getLibTreeHandle(this.id, openNode);\n          this.$set(this, 'konwledgeInfo', JSON.parse(JSON.stringify(res.data.data)))\n          this.boolShow=false\n          this.$nextTick(() => {\n            this.boolShow=true\n          })\n        }\n      })\n    },\n    moreChange (node, item) {\n      node.moretool = false\n      let str = '文件？'\n      if(node.type == 'directory') {\n        str = '目录？目录下所有文件将被删除！'\n      }\n      // 删除\n      if(item.type == 'del') {\n        this.$confirm(`确定要删除此${str}`, '提示', {\n          confirmButtonText: '确定',\n          cancelButtonText: '取消',\n          type: 'warning'\n        }).then(() => {\n          delLib(node.id).then(res => {\n            if(res.data.code == 0) {\n              this.$notify({\n                title: '删除成功',\n                // message: '右下角弹出的消息',\n                type: 'success',\n                position: 'bottom-right'\n              });\n              this.getLibTreeHandle(this.id);\n              this.goHome()\n              if(this.currentNode.id == node.id) {\n                this.currentNode = null\n              }\n            }\n          })\n        }).catch(e => {})\n      }\n      if(item.type == 'rename') {\n        this.currentNodeData = node\n        let mess = \"\"\n        switch(node.type) {\n          case 'directory': mess = \"文件夹\";break;\n          case 'document_html': mess = \"文本文档\";break;\n          case 'document_xlsx': mess = \"表格文档\";break;\n          case 'document_map': mess = \"脑图文档\";break;\n          case 'document_flow': mess = \"流程文档\";break;\n          case 'document_image': mess = \"图片\";break;\n          case 'document_txt': mess = \"文本\";break;\n          case 'document_ppt': mess = \"ppt\";break;\n          default: mess = \"知识库\";break;\n        }\n        this.addBaseHandle(node.type, mess, 'edit')\n        this.title = '重命名'\n      }\n      // 复制链接\n      if(item.type == 'copy') {\n        preview(node.id).then(res => {\n          if(res.data.code == 0) {\n            // this.$openUrl(`/mgr/document/dcLibrary/preview/document/${node.id}`, \"_blank\")\n          }\n        }).catch(e => {\n          node.moretool = false\n        })\n\n      }\n      // 导出\n      if(item.type == 'export') {\n        //\n      }\n      // 设置\n      if(item.type == 'set') {\n        this.currentRow = node\n        this.setHandle()\n        this.title = '设置'\n      }\n    },\n    enableDelete (node, list) {\n      let bool = true\n      let userInfo = getStore({name: 'userInfo'})\n      for(let i in list) {\n        let tb = true\n        if(this.addCatalogueRight) {\n          tb = true\n        }else{\n          if(node.createById && node.createById == userInfo.id) {\n            tb = true\n          }else{\n            tb = false\n          }\n          tb = false // 成员只能查看，不可编辑、新增、删除\n        }\n        list[i].enable = tb\n        bool = (bool && tb)\n      }\n      return bool\n    },\n    addBaseHandle (type, mess, op) {\n      this.dialogType = type\n      this.addMess = mess\n      this.opType = op\n      this.title = '新建' + mess\n      this.baseFormOption.column.filter(it => {\n        if(it.prop == \"name\") {\n          it.label = mess + \"名称\"\n          it.rules = [{ required: true, message: `请输入${mess}名称`, trigger: 'blur' }]\n        }\n      })\n      if(this.opType == 'edit' && this.currentNodeData && this.currentNodeData.name) {\n        this.baseForm = {\n          description:this.currentNodeData.description,\n          name: this.currentNodeData.name\n        }\n        this.title = '编辑' + mess\n      }\n      this.dialogVisible = true\n    },\n    handleClose () {\n      this.dialogVisible = false\n      this.baseForm = {}\n      this.setTab = \"doc\"\n      this.searchUserName = \"\"\n      this.userData = []\n      this.settingForm = {\n        shareRole: \"user\",\n        share: false\n      }\n      this.currentNodeData = null\n      this.selectType = \"\"\n      this.title = \"\"\n      this.openNode = null\n    },\n    baseSubmit (form) {\n      if(this.opType == 'add') {\n        let obj = JSON.parse(JSON.stringify(form))\n        if(this.currentNodeData) {\n          obj.id = this.currentNodeData.id\n        }else{\n          obj.id = this.id\n        }\n        if(this.selectType) {\n          obj.fileType = this.selectType\n        }\n        // addLib(obj).then(res => {\n        //   if(res.data.code == 0) {\n        //     this.$notify({\n        //       title: (\"新建\"+ this.addMess +\"成功\"),\n        //       // message: '右下角弹出的消息',\n        //       type: 'success',\n        //       position: 'bottom-right'\n        //     });\n        //     this.handleClose()\n        //     let openNode = null\n        //     if(res.data.data) {\n        //       openNode = {\n        //         openId: res.data.data.id\n        //       }\n        //     }\n        //     this.getLibTreeHandle(this.id, openNode);\n        //   }\n        // })\n      }\n      if(this.opType == 'edit') {\n        let obj = JSON.parse(JSON.stringify(this.currentNodeData))\n        obj.name = form.name\n        obj.description = form.description\n        editLib(obj).then(res => {\n          if(res.data.code == 0) {\n            this.$notify({\n              title: (\"重命名\"+ this.addMess +\"成功\"),\n              // message: '右下角弹出的消息',\n              type: 'success',\n              position: 'bottom-right'\n            });\n            this.handleClose()\n            this.getLibTreeHandle(this.id);\n          }\n        })\n      }\n    },\n    getRightWidth (data) {\n      let w = 95\n      if(['knowledge', 'directory'].indexOf(data.type) > -1) {\n        if(!this.enableDelete(data, this.more_list)) { // 没有更多\n          w = w - 30\n        }\n      }else{\n        if(this.enableDelete(data, this.more_list)) {\n          w = 65\n        }else{\n          w = 35\n        }\n      }\n      return w\n    },\n    // 双击修改名称\n    editName (data) {\n      if (this.clickTimer) {\n        window.clearTimeout(this.clickTimer);\n        this.clickTimer = null;\n      }\n      let bool = true\n      let userInfo = getStore({name: 'userInfo'})\n      if(this.addCatalogueRight) {\n        bool = true\n      }else{\n        if(data.createById && data.createById == userInfo.id) {\n          bool = true\n        }else{\n          bool = false\n        }\n      }\n      if(bool) {\n        this.originName = JSON.parse(JSON.stringify(data)).name\n        if(this.changeNode) {\n          this.changeNode.changeNodeShow = false\n        }\n        data.changeNodeShow = true\n        this.changeNode = data\n        this.changeName = data.name\n      }\n      this.$nextTick(() => {\n        this.$refs.editInput.focus()\n      })\n    },\n    nameChange () {\n      if(this.changeName == this.originName) {\n        this.changeNode = null\n        this.changeName = ''\n        this.originName = ''\n      }else{\n        let obj = JSON.parse(JSON.stringify(this.changeNode))\n        obj.name = this.changeName\n        editLib(obj).then(res => {\n          if(res.data.code == 0) {\n            this.$notify({\n              title: (\"重命名\"+ this.addMess +\"成功\"),\n              // message: '右下角弹出的消息',\n              type: 'success',\n              position: 'bottom-right'\n            });\n            this.getLibTreeHandle(this.id, {openId: obj.id})\n            this.konwledgeInfo = obj\n            this.changeNode = null\n            this.changeName = ''\n            this.originName = ''\n          }\n        }).catch(e => {\n          this.changeNode = null\n          this.changeName = ''\n          this.originName = ''\n        })\n      }\n    },\n    /**\n     * 拖拽树形\n     * 监听各状态\n    **/\n    handleDragStart(node, ev) {\n      console.log('drag start', node);\n    },\n    handleDragEnd(draggingNode, dropNode, dropType, ev) {\n      // console.log('tree drag end: ', dropNode && dropNode.label, dropType);\n    },\n    handleDrop(draggingNode, dropNode, dropType, ev) {\n      console.log('tree drop: ', dropNode.label, dropType);\n    },\n    allowDrop(draggingNode, dropNode, type) {\n      if (['knowledge', 'directory'].indexOf(dropNode.data.type) === -1) {\n        return type !== 'inner';\n      } else {\n        return true;\n      }\n    },\n    allowDrag(draggingNode) {\n      // 判断节点能否被拖拽\n      return true\n    }\n  },\n  created() {\n    this.init()\n    this.myInfo = getStore({ name: \"userInfo\" });\n    if(this.myInfo){\n      if(this.myInfo.id==this.konwledgeInfo.createById){\n        this.boolMyInfo=true\n      }\n    }\n  },\n  watch: {\n    keyword: {\n      handler(newVal, oldVal) {\n        if(newVal && newVal.replace(/^(\\s|\\xA0)+|(\\s|\\xA0)+$/g, '')) {\n          this.isSearch = true;\n        }else{\n          this.isSearch = false;\n        }\n      },\n    },\n  },\n};\n</script>\n<style lang=\"scss\" scoped>\n.base-type-list li{\n  margin-bottom: 0;\n  line-height: 26px;\n}\n.dialogHeader {\n  display: flex;\n  font-size: 20px;\n  font-family: SourceHanSansCN-Regular;\n  color: #333333;\n}\n.dialogHeader span {\n  margin-left: 20px;\n  font-size: 20px;\n}\n.dialogLine {\n  width: 4px;\n  height: 30px;\n  background: #4b90ee;\n  border-radius: 2px;\n}\n</style>\n<style lang=\"scss\">\n.konwledge-base-view {\n  height: 100%;\n  overflow-y: auto;\n  .search-box{\n    padding: 40px 145px;\n  }\n  .view-content {\n    height: calc(100vh - 79px);\n    display: flex;\n    overflow: hidden;\n    .view-left {\n      width: 310px;\n      box-sizing: border-box;\n      // border-right: 1px solid #eeeeee;\n      height: 100%;\n      overflow: hidden;\n      overflow-y: auto;\n      // padding-left: 33px;\n      padding-top: 15px;\n      position: relative;\n      h5 {\n        width: 100%;\n        overflow: hidden;\n        white-space: nowrap;\n        text-overflow: ellipsis;\n        font-size: 16px;\n        font-family: SourceHanSansCN-Regular;\n        line-height: 25px;\n        margin-bottom: 20px;\n        //margin-left: -20px;\n        cursor: pointer;\n        text-indent: 20px;\n        color: #333333;\n      }\n      .directorytitle{\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        span{\n          text-indent: 20px;\n          i{\n            margin-right: 5px;\n            color: #868BA1;\n          }\n        }\n        .addDirectory{\n          margin-right: 34px;\n        }\n      }\n      .tree-list{\n        height: calc(100% - 85px);\n        padding: 0 20px;\n      }\n      .el-tree-node.is-current{\n        >.el-tree-node__content{\n          background: #F5F7FA;\n        }\n        .el-tree-node:not(.is-expanded) span:not(.el-tree-node__expand-icon){\n          color: #333333;\n        }\n      }\n      .custom-tree-node {\n        padding-right: 50px;\n        display: flex;\n        align-items: center;\n        width: 100%;\n        .el-input--mini .el-input__inner{\n          border: none;\n          font-size: 18px;\n        }\n        i {\n          color: #868ba1;\n          font-size: 20px;\n          margin-right: 10px;\n        }\n        img{\n          display: block;\n          //width: 16px;\n          //height: 20px;\n          width: 0;\n          margin-right: 10px;\n        }\n        span.text {\n          font-size: 14px;\n          font-family: SourceHanSansCN-Regular;\n          line-height: 25px;\n          color: #222222;\n          display: inline-block;\n          overflow: hidden;\n          text-overflow: ellipsis;\n          white-space: pre;\n        }\n        .tree-right-tool{\n          display: none;\n          i{\n            font-size: 16px;\n            margin-left: 5px;\n          }\n        }\n      }\n      .custom-tree-node:hover{\n        .tree-right-tool{\n          display: block;\n        }\n      }\n      .divider-line{\n        position: fixed;\n        width: 10px;\n        background: #eeeeee;\n        height: 100%;\n        left: 310px;\n        height: calc(100%);\n        top: 79px;\n        cursor: e-resize;\n        z-index: 1;\n      }\n    }\n    .view-left::-webkit-scrollbar{\n      display: none;\n    }\n    .view-right {\n      width: calc(100% - 310px);\n      height: calc(100vh - 79px);\n      overflow: hidden;\n      overflow-y: auto;\n      position: relative;\n      .tool-box {\n        position: fixed;\n        top: 110px;\n        right: 30px;\n      }\n      .knowledge-box{\n        .search-boxs{\n          padding: 30px 40px;\n        }\n      }\n      .base-introduce {\n        display: flex;\n        padding-top: 60px; // 85px;\n        border-bottom: 1px solid #ebecee;\n        padding-bottom: 40px;\n        justify-content: space-between;\n        .info {\n          padding-left: 40px;\n          .intrduce {\n            display: flex;\n            img {\n              display: block;\n              width: 204px;\n              height: 160px;\n              margin-right: 33px;\n            }\n            .cover-info {\n              border-radius: 4px;\n              width: 204px;\n              height: 160px;\n              background-image: url(\"../index/img/bg.png\");\n              background-repeat: no-repeat;\n              position: relative;\n              margin-right: 33px;\n              img {\n                display: block;\n              }\n              .mark {\n                position: absolute;\n                left: 5px;\n                top: 5px;\n                width: 15px;\n                height: 20px;\n              }\n              .desktop {\n                width: 80px;\n                height: 70px;\n                position: absolute;\n                top: 0;\n                left: 0;\n                bottom: 0;\n                right: 0;\n                margin: auto;\n              }\n            }\n            div {\n              h5 {\n                margin: 0;\n                font-size: 22px;\n                font-family: Source Han Sans CN;\n                font-weight: 400;\n                line-height: 54px;\n                color: #333333;\n              }\n              section {\n                min-width: 300px;\n                max-width: 600px;\n                font-size: 16px;\n                font-family: Source Han Sans CN;\n                font-weight: 400;\n                line-height: 25px;\n                color: #868ba1;\n                margin-top: 10px;\n                text-overflow: -o-ellipsis-lastline;\n                overflow: hidden;\n                text-overflow: ellipsis;\n                display: -webkit-box;\n                -webkit-line-clamp: 2;\n                line-clamp: 2;\n                -webkit-box-orient: vertical;\n              }\n            }\n          }\n          .search {\n            margin-top: 55px;\n            .el-input {\n              width: 389px;\n              height: 45px;\n              .el-input__inner {\n                height: 45px;\n                font-size: 16px;\n                font-family: Source Han Sans CN;\n                font-weight: 400;\n                line-height: 27px;\n                color: #868ba1;\n                padding-left: 40px;\n                border-color: #f3f3f3;\n                border-radius: 30px;\n                outline: none;\n                background: #f3f3f3;\n              }\n              .el-input__prefix {\n                left: 15px;\n                i {\n                  font-size: 20px;\n                  line-height: 45px;\n                }\n              }\n            }\n          }\n        }\n        .infoImage {\n          width: 460px;\n          height: 288px;\n          margin-right: 150px;\n        }\n      }\n      .person-list {\n        padding: 40px 40px 26px 40px;\n        h5 {\n          font-size: 20px;\n          font-family: Source Han Sans CN;\n          font-weight: 500;\n          line-height: 20px;\n          color: #333333;\n          margin-top: 0;\n          // margin-bottom: 25px;\n        }\n        div {\n          display: flex;\n          align-items: center;\n          margin-top: 16px;\n          flex-wrap: wrap;\n          .person-list-item {\n            width: 60px;\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            margin: 10px 32px;\n            img {\n              display: block;\n              width: 40px;\n              height: 40px;\n              margin-bottom: 10px;\n              border-radius: 50%;\n              overflow: hidden;\n            }\n            span{\n              width: 100%;\n              text-align: center;\n              font-size: 14px;\n              color: #333333;\n              text-overflow: ellipsis;\n              overflow: hidden;\n              white-space: nowrap;\n            }\n          }\n          // .person-list-item:nth-of-type(1) {\n          //   margin-left: 0;\n          // }\n          // .person-list-item:nth-last-of-type(1) {\n          //   margin-right: 0;\n          // }\n        }\n      }\n      .lasted-update {\n        padding: 0 40px;\n        h5 {\n          font-size: 20px;\n          font-family: Source Han Sans CN;\n          font-weight: 500;\n          color: #333333;\n          margin: 0;\n          line-height: 20px;\n        }\n        .lasted-update-list {\n          margin: 22px 0;\n          .lasted-update-list-item {\n            margin: 0;\n            line-height: 40px;\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            padding: 0 20px;\n            font-size: 14px;\n            cursor: pointer;\n            p {\n              display: flex;\n              align-items: center;\n              margin: 0;\n              img {\n                display: block;\n                width: 18px;\n                height: 20px;\n                margin-right: 27px;\n              }\n            }\n            .right-tip-info {\n              color: #868ba1;\n              span:nth-last-of-type(1) {\n                margin-left: 100px;\n                width: 60px;\n                overflow: hidden;\n                text-overflow: ellipsis;\n                white-space: nowrap;\n              }\n            }\n          }\n          .lasted-update-list-item:hover {\n            background: #f6f6f6;\n          }\n        }\n      }\n    }\n  }\n}\n.el-tiptap-editor .ProseMirror {\n  font-size: 18px;\n}\n.el-tiptap-editor__menu-bubble{\n  width: 300px;\n  flex-wrap: wrap;\n}\n.el-tiptap-editor__menu-bar{\n  border: none;\n}\n.el-tiptap-editor__menu-bar:before{\n  display: none;\n}\n.el-tiptap-editor>.el-tiptap-editor__content{\n  border: none;\n}\n.el-tiptap-editor__content .iframe__embed{\n  border: 1px solid #FFFFFF;\n}\n.el-tiptap-editor__content .iframe__embed:hover{\n  border: 1px solid #c0bfbf;\n}\n</style>\n"
  },
  {
    "path": "vue.config.js",
    "content": "/**\n * 配置该文件可以参考:\n * https://cli.vuejs.org/zh/config/#%E7%9B%AE%E6%A0%87%E6%B5%8F%E8%A7%88%E5%99%A8\n *\n */\nconst url = \"http://localhost:10000\" \n// 基础路径，发布前修改这里,当前配置打包出来的资源都是相对路径\nlet path = \"jvs-knowledge-ui\" // fixme 请修改为自己的前端项目名称\nmodule.exports = {\n  runtimeCompiler: true,\n  //项目路径地址\n  publicPath: \"/\",\n  // publicPath: process.env.NODE_ENV !== 'development' ? '/' : ('/' +path),\n  //静态资源文件地址\n  assetsDir: path + '/static',\n  //静太资源文件\n  indexPath: path + '/index.html',\n  //打包文件路径\n  outputDir: 'docker/dist',\n  lintOnSave: true,\n  productionSourceMap: false,\n  chainWebpack: config => {\n    // 忽略的打包文件\n    config.externals({\n      'axios': 'axios'\n    })\n    const entry = config.entry('app')\n    entry\n      .add('babel-polyfill')\n      .end()\n    entry\n      .add('classlist-polyfill')\n      .end()\n  },\n  // 配置转发代理\n  devServer: {\n    port: 8081,\n    proxy: {\n      '/mgr': {\n        target: url,\n        ws: true,\n        pathRewrite: {\n          '^/mgr': '/mgr'\n        }\n      },\n      '/auth': {\n        target: url,\n        ws: true,\n        pathRewrite: {\n          '^/auth': '/auth'\n        }\n      },\n      '/api': {\n        target: url,\n        ws: true,\n        pathRewrite: {\n          '^/api': '/api'\n        }\n      },\n      \"^/agreement\": {\n        target: url,\n        ws: true,\n        pathRewrite: {\n          \"^/agreement\": \"/agreement\"\n        }\n      },\n    }\n  },\n  css: {\n    loaderOptions: {\n      // 给 sass-loader 传递选项\n      sass: {\n        // @/ 是 src/ 的别名\n        // 注意：在 sass-loader v8 中，这个选项名是 \"prependData\"  v8以下使用 additionalData\n        prependData: `@import \"~@/styles/themes/index.scss\"`\n      },\n      // 默认情况下 `sass` 选项会同时对 `sass` 和 `scss` 语法同时生效\n      // 因为 `scss` 语法在内部也是由 sass-loader 处理的\n      // 但是在配置 `prependData` 选项的时候\n      // `scss` 语法会要求语句结尾必须有分号，`sass` 则要求必须没有分号\n      // 在这种情况下，我们可以使用 `scss` 选项，对 `scss` 语法进行单独配置\n      scss: {\n        prependData: `@import \"~@/styles/themes/index.scss\";`\n      },\n    }\n  }\n}\n"
  }
]