From f8947d332ace32154bca0380aac66b931b5d2f1e Mon Sep 17 00:00:00 2001 From: ks3356143 <314298729@qq.com> Date: Thu, 8 Jun 2023 21:09:28 +0800 Subject: [PATCH] 1122 --- cdTMP/package-lock.json | 50 + cdTMP/package.json | 4 + cdTMP/src/api/common.js | 24 + cdTMP/src/api/system/user.js | 94 + cdTMP/src/api/testmanage/project.js | 14 + cdTMP/src/assets/avatar/zhu.jpg | Bin 0 -> 98569 bytes cdTMP/src/components/index.js | 57 +- cdTMP/src/components/ma-charts/index.vue | 44 + cdTMP/src/components/ma-cityLinkage/index.vue | 161 + .../components/ma-cityLinkage/lib/city.json | 5302 +++++++++++++++++ cdTMP/src/components/ma-codeEditor/index.vue | 92 + cdTMP/src/components/ma-colorPicker/index.vue | 76 + .../components/ma-crud/components/column.vue | 293 + .../ma-crud/components/contextMenu.vue | 157 + .../components/ma-crud/components/form.vue | 350 ++ .../components/ma-crud/components/import.vue | 69 + .../components/ma-crud/components/search.vue | 180 + .../searchFormItem/form-cascader.vue | 42 + .../components/searchFormItem/form-input.vue | 37 + .../components/searchFormItem/form-picker.vue | 61 + .../components/searchFormItem/form-select.vue | 60 + .../searchFormItem/form-tree-select.vue | 52 + .../components/ma-crud/components/setting.vue | 178 + cdTMP/src/components/ma-crud/index.vue | 841 +++ .../components/ma-crud/js/columnService.js | 111 + .../components/ma-crud/js/custom-render.js | 16 + .../components/ma-crud/js/defaultOptions.js | 277 + cdTMP/src/components/ma-crud/types/columns.ts | 116 + cdTMP/src/components/ma-crud/types/crud.ts | 189 + cdTMP/src/components/ma-crud/types/index.ts | 2 + cdTMP/src/components/ma-editor/index.vue | 146 + cdTMP/src/components/ma-form-modal/index.vue | 73 + .../components/ma-form/containerItem/card.vue | 54 + .../ma-form/containerItem/children-form.vue | 219 + .../ma-form/containerItem/grid-col.vue | 39 + .../containerItem/grid-tailwind-col.vue | 36 + .../ma-form/containerItem/grid-tailwind.vue | 78 + .../components/ma-form/containerItem/grid.vue | 40 + .../ma-form/containerItem/table-cell.vue | 32 + .../ma-form/containerItem/table.vue | 57 + .../components/ma-form/containerItem/tabs.vue | 66 + .../ma-form/formItem/form-auto-complete.vue | 68 + .../ma-form/formItem/form-button.vue | 43 + .../ma-form/formItem/form-cascader.vue | 106 + .../ma-form/formItem/form-checkbox.vue | 70 + .../ma-form/formItem/form-city-linkage.vue | 55 + .../ma-form/formItem/form-code-editor.vue | 62 + .../ma-form/formItem/form-color-picker.vue | 54 + .../ma-form/formItem/form-component.vue | 47 + .../ma-form/formItem/form-divider.vue | 37 + .../ma-form/formItem/form-editor.vue | 60 + .../ma-form/formItem/form-icon-picker.vue | 54 + .../ma-form/formItem/form-input-number.vue | 81 + .../ma-form/formItem/form-input-tag.vue | 80 + .../ma-form/formItem/form-input.vue | 102 + .../components/ma-form/formItem/form-item.vue | 42 + .../components/ma-form/formItem/form-link.vue | 39 + .../ma-form/formItem/form-mention.vue | 71 + .../ma-form/formItem/form-picker.vue | 116 + .../ma-form/formItem/form-radio.vue | 97 + .../components/ma-form/formItem/form-rate.vue | 65 + .../ma-form/formItem/form-resource.vue | 71 + .../ma-form/formItem/form-select.vue | 168 + .../ma-form/formItem/form-slider.vue | 68 + .../ma-form/formItem/form-static-text.vue | 33 + .../ma-form/formItem/form-switch.vue | 79 + .../ma-form/formItem/form-textarea.vue | 71 + .../ma-form/formItem/form-transfer.vue | 73 + .../ma-form/formItem/form-tree-select.vue | 101 + .../ma-form/formItem/form-upload.vue | 73 + .../ma-form/formItem/form-user-select.vue | 63 + .../ma-form/formItem/form-userinfo.vue | 53 + .../ma-form/formItem/form-verify-code.vue | 85 + cdTMP/src/components/ma-form/index.vue | 278 + .../ma-form/js/defaultArrayComponent.js | 1 + .../components/ma-form/js/defaultOptions.js | 51 + .../components/ma-form/js/formItemMixin.js | 50 + .../components/ma-form/js/networkRequest.js | 141 + cdTMP/src/components/ma-form/js/utils.js | 104 + cdTMP/src/components/ma-icon/index.vue | 126 + cdTMP/src/components/ma-info-modal/index.vue | 131 + cdTMP/src/components/ma-info/index.vue | 120 + cdTMP/src/components/ma-resource/button.vue | 88 + cdTMP/src/components/ma-resource/index.vue | 287 + cdTMP/src/components/ma-treeSlider/index.vue | 106 + .../ma-upload/components/chunk-upload.vue | 239 + .../ma-upload/components/file-upload.vue | 169 + .../ma-upload/components/image-upload.vue | 192 + cdTMP/src/components/ma-upload/index.vue | 63 + cdTMP/src/components/ma-upload/js/utils.js | 36 + cdTMP/src/components/ma-user/index.vue | 142 + cdTMP/src/components/ma-userInfo/index.vue | 41 + cdTMP/src/config/column.js | 1 + cdTMP/src/config/crud.js | 25 + cdTMP/src/config/upload.js | 15 + cdTMP/src/directives/auth/auth.js | 8 + cdTMP/src/directives/auth/index.js | 29 + cdTMP/src/directives/copy/index.js | 27 + cdTMP/src/directives/index.js | 11 + cdTMP/src/directives/role/index.js | 29 + cdTMP/src/directives/role/role.js | 11 + cdTMP/src/hooks/permission.js | 1 + cdTMP/src/hooks/responsive.ts | 32 + cdTMP/src/layout/404.vue | 25 + cdTMP/src/layout/components/footer.vue | 15 + cdTMP/src/layout/components/navbar.vue | 4 +- cdTMP/src/layout/components/tab-bar.vue | 117 +- cdTMP/src/layout/components/tab-item.vue | 185 + cdTMP/src/layout/default-layout.vue | 19 +- cdTMP/src/layout/page-layout.vue | 21 + cdTMP/src/main.js | 4 +- cdTMP/src/router/index.js | 1 + cdTMP/src/router/routes/modules/dashboard.js | 29 +- cdTMP/src/router/routes/modules/testmanage.js | 28 + cdTMP/src/store/index.js | 7 +- cdTMP/src/store/modules/form.js | 24 + cdTMP/src/store/modules/keepAlive.js | 46 + cdTMP/src/store/modules/tab-bar.js | 64 + cdTMP/src/store/modules/tag.js | 70 + cdTMP/src/store/modules/user.js | 3 +- cdTMP/src/utils/common.js | 250 + cdTMP/src/utils/event.ts | 21 + cdTMP/src/utils/is.ts | 53 + cdTMP/src/utils/print.js | 140 + cdTMP/src/utils/request.js | 119 + .../usercenter/components/editpassword.vue | 112 + .../usercenter/components/userInfo.vue | 40 + .../src/views/dashboard/usercenter/index.vue | 82 + .../src/views/dashboard/usermanage/index.vue | 249 + .../components/cpns/st-announced.vue | 62 + .../components/cpns/st-cdtestmanage-info.vue | 29 + .../workplace/components/cpns/st-count.vue | 115 + .../components/cpns/st-project-chart.vue | 164 + .../workplace/components/cpns/st-welcome.vue | 53 + .../workplace/components/statistics.vue | 19 + cdTMP/src/views/dashboard/workplace/index.vue | 10 +- cdTMP/src/views/redirect/index.vue | 13 + .../testmanage/projmanage/cpns/preview.vue | 26 + .../src/views/testmanage/projmanage/index.vue | 422 ++ .../src/components/ma-crud/index.vue | 9 - .../src/components/ma-treeSlider/index.vue | 9 - .../src/components/ma-upload/index.vue | 9 - chengduTestPlant/src/config/upload.js | 2 +- .../components/components/st-announced.vue | 9 - .../components/components/st-count.vue | 9 - .../components/components/st-loginChart.vue | 29 +- .../components/components/st-mineadmin.vue | 9 - .../components/components/st-welcome.vue | 9 - .../views/dashboard/components/statistics.vue | 9 - .../setting/code/components/editInfo.vue | 9 - .../views/setting/code/components/preview.vue | 9 - .../src/views/setting/code/index.vue | 21 +- .../src/views/system/app/index.vue | 9 - .../src/views/system/notice/index.vue | 9 - .../userCenter/components/modifyPassword.vue | 9 - .../userCenter/components/userInfomation.vue | 9 - .../src/views/userCenter/index.vue | 9 - .../src/views/userCenter/message.vue | 11 +- 158 files changed, 17210 insertions(+), 259 deletions(-) create mode 100644 cdTMP/src/api/common.js create mode 100644 cdTMP/src/api/system/user.js create mode 100644 cdTMP/src/api/testmanage/project.js create mode 100644 cdTMP/src/assets/avatar/zhu.jpg create mode 100644 cdTMP/src/components/ma-charts/index.vue create mode 100644 cdTMP/src/components/ma-cityLinkage/index.vue create mode 100644 cdTMP/src/components/ma-cityLinkage/lib/city.json create mode 100644 cdTMP/src/components/ma-codeEditor/index.vue create mode 100644 cdTMP/src/components/ma-colorPicker/index.vue create mode 100644 cdTMP/src/components/ma-crud/components/column.vue create mode 100644 cdTMP/src/components/ma-crud/components/contextMenu.vue create mode 100644 cdTMP/src/components/ma-crud/components/form.vue create mode 100644 cdTMP/src/components/ma-crud/components/import.vue create mode 100644 cdTMP/src/components/ma-crud/components/search.vue create mode 100644 cdTMP/src/components/ma-crud/components/searchFormItem/form-cascader.vue create mode 100644 cdTMP/src/components/ma-crud/components/searchFormItem/form-input.vue create mode 100644 cdTMP/src/components/ma-crud/components/searchFormItem/form-picker.vue create mode 100644 cdTMP/src/components/ma-crud/components/searchFormItem/form-select.vue create mode 100644 cdTMP/src/components/ma-crud/components/searchFormItem/form-tree-select.vue create mode 100644 cdTMP/src/components/ma-crud/components/setting.vue create mode 100644 cdTMP/src/components/ma-crud/index.vue create mode 100644 cdTMP/src/components/ma-crud/js/columnService.js create mode 100644 cdTMP/src/components/ma-crud/js/custom-render.js create mode 100644 cdTMP/src/components/ma-crud/js/defaultOptions.js create mode 100644 cdTMP/src/components/ma-crud/types/columns.ts create mode 100644 cdTMP/src/components/ma-crud/types/crud.ts create mode 100644 cdTMP/src/components/ma-crud/types/index.ts create mode 100644 cdTMP/src/components/ma-editor/index.vue create mode 100644 cdTMP/src/components/ma-form-modal/index.vue create mode 100644 cdTMP/src/components/ma-form/containerItem/card.vue create mode 100644 cdTMP/src/components/ma-form/containerItem/children-form.vue create mode 100644 cdTMP/src/components/ma-form/containerItem/grid-col.vue create mode 100644 cdTMP/src/components/ma-form/containerItem/grid-tailwind-col.vue create mode 100644 cdTMP/src/components/ma-form/containerItem/grid-tailwind.vue create mode 100644 cdTMP/src/components/ma-form/containerItem/grid.vue create mode 100644 cdTMP/src/components/ma-form/containerItem/table-cell.vue create mode 100644 cdTMP/src/components/ma-form/containerItem/table.vue create mode 100644 cdTMP/src/components/ma-form/containerItem/tabs.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-auto-complete.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-button.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-cascader.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-checkbox.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-city-linkage.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-code-editor.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-color-picker.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-component.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-divider.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-editor.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-icon-picker.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-input-number.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-input-tag.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-input.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-item.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-link.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-mention.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-picker.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-radio.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-rate.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-resource.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-select.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-slider.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-static-text.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-switch.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-textarea.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-transfer.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-tree-select.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-upload.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-user-select.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-userinfo.vue create mode 100644 cdTMP/src/components/ma-form/formItem/form-verify-code.vue create mode 100644 cdTMP/src/components/ma-form/index.vue create mode 100644 cdTMP/src/components/ma-form/js/defaultArrayComponent.js create mode 100644 cdTMP/src/components/ma-form/js/defaultOptions.js create mode 100644 cdTMP/src/components/ma-form/js/formItemMixin.js create mode 100644 cdTMP/src/components/ma-form/js/networkRequest.js create mode 100644 cdTMP/src/components/ma-form/js/utils.js create mode 100644 cdTMP/src/components/ma-icon/index.vue create mode 100644 cdTMP/src/components/ma-info-modal/index.vue create mode 100644 cdTMP/src/components/ma-info/index.vue create mode 100644 cdTMP/src/components/ma-resource/button.vue create mode 100644 cdTMP/src/components/ma-resource/index.vue create mode 100644 cdTMP/src/components/ma-treeSlider/index.vue create mode 100644 cdTMP/src/components/ma-upload/components/chunk-upload.vue create mode 100644 cdTMP/src/components/ma-upload/components/file-upload.vue create mode 100644 cdTMP/src/components/ma-upload/components/image-upload.vue create mode 100644 cdTMP/src/components/ma-upload/index.vue create mode 100644 cdTMP/src/components/ma-upload/js/utils.js create mode 100644 cdTMP/src/components/ma-user/index.vue create mode 100644 cdTMP/src/components/ma-userInfo/index.vue create mode 100644 cdTMP/src/config/column.js create mode 100644 cdTMP/src/config/crud.js create mode 100644 cdTMP/src/config/upload.js create mode 100644 cdTMP/src/directives/auth/auth.js create mode 100644 cdTMP/src/directives/auth/index.js create mode 100644 cdTMP/src/directives/copy/index.js create mode 100644 cdTMP/src/directives/index.js create mode 100644 cdTMP/src/directives/role/index.js create mode 100644 cdTMP/src/directives/role/role.js create mode 100644 cdTMP/src/hooks/responsive.ts create mode 100644 cdTMP/src/layout/404.vue create mode 100644 cdTMP/src/layout/components/footer.vue create mode 100644 cdTMP/src/layout/components/tab-item.vue create mode 100644 cdTMP/src/layout/page-layout.vue create mode 100644 cdTMP/src/router/routes/modules/testmanage.js create mode 100644 cdTMP/src/store/modules/form.js create mode 100644 cdTMP/src/store/modules/keepAlive.js create mode 100644 cdTMP/src/store/modules/tab-bar.js create mode 100644 cdTMP/src/store/modules/tag.js create mode 100644 cdTMP/src/utils/common.js create mode 100644 cdTMP/src/utils/event.ts create mode 100644 cdTMP/src/utils/is.ts create mode 100644 cdTMP/src/utils/print.js create mode 100644 cdTMP/src/utils/request.js create mode 100644 cdTMP/src/views/dashboard/usercenter/components/editpassword.vue create mode 100644 cdTMP/src/views/dashboard/usercenter/components/userInfo.vue create mode 100644 cdTMP/src/views/dashboard/usercenter/index.vue create mode 100644 cdTMP/src/views/dashboard/usermanage/index.vue create mode 100644 cdTMP/src/views/dashboard/workplace/components/cpns/st-announced.vue create mode 100644 cdTMP/src/views/dashboard/workplace/components/cpns/st-cdtestmanage-info.vue create mode 100644 cdTMP/src/views/dashboard/workplace/components/cpns/st-count.vue create mode 100644 cdTMP/src/views/dashboard/workplace/components/cpns/st-project-chart.vue create mode 100644 cdTMP/src/views/dashboard/workplace/components/cpns/st-welcome.vue create mode 100644 cdTMP/src/views/dashboard/workplace/components/statistics.vue create mode 100644 cdTMP/src/views/redirect/index.vue create mode 100644 cdTMP/src/views/testmanage/projmanage/cpns/preview.vue create mode 100644 cdTMP/src/views/testmanage/projmanage/index.vue diff --git a/cdTMP/package-lock.json b/cdTMP/package-lock.json index 45a2b36..2218ed0 100644 --- a/cdTMP/package-lock.json +++ b/cdTMP/package-lock.json @@ -10,13 +10,16 @@ "dependencies": { "@arco-design/color": "^0.4.0", "@arco-design/web-vue": "^2.46.2", + "@tinymce/tinymce-vue": "^5.0.0", "@vueuse/core": "^10.1.2", "axios": "^1.4.0", "crypto-js": "^4.1.1", "dayjs": "^1.11.7", "echarts": "^5.4.2", + "file2md5": "^1.3.0", "lodash": "^4.17.21", "mitt": "^3.0.0", + "monaco-editor": "^0.33.0", "nprogress": "^0.2.0", "pinia": "^2.1.3", "postcss-import": "^15.1.0", @@ -31,6 +34,7 @@ }, "devDependencies": { "@types/lodash": "^4.14.195", + "@types/mockjs": "^1.0.7", "@types/node": "^20.2.5", "@types/nprogress": "^0.2.0", "@types/qs": "^6.9.7", @@ -1071,6 +1075,17 @@ "node": ">= 8" } }, + "node_modules/@tinymce/tinymce-vue": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/@tinymce/tinymce-vue/-/tinymce-vue-5.1.0.tgz", + "integrity": "sha512-Z4R8zaOKrAXBhHWsq+qUlwHY+rvze2RgxHDrZ5+qTYkGvRofW5880HLG9gvv6TRPVsNSQBNMdsaOjJ/eueccgA==", + "dependencies": { + "tinymce": "^6.0.0 || ^5.5.1" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, "node_modules/@types/eslint": { "version": "8.40.0", "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.40.0.tgz", @@ -1113,6 +1128,12 @@ "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==", "dev": true }, + "node_modules/@types/mockjs": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/@types/mockjs/-/mockjs-1.0.7.tgz", + "integrity": "sha512-OCxXz6hEaJOVpRwuJMiVY5a6LtJcih+br9gwB/Q8ooOBikvk5FpBQ31OlNimXo3EqKha1Z7PFBni+q9m+8NCWg==", + "dev": true + }, "node_modules/@types/node": { "version": "20.2.5", "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.2.5.tgz", @@ -2504,6 +2525,15 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file2md5": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/file2md5/-/file2md5-1.3.0.tgz", + "integrity": "sha512-UysPqnleJEvDU9rFXJH+jtwSrrD6saZGKGAvp4A1SSOxAAI9v+6O3Jut1qEeIqvbn3hSiL0NTBQbXlhQowfIgg==", + "dependencies": { + "lodash.noop": "^3.0.1", + "spark-md5": "^3.0.1" + } + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", @@ -3107,6 +3137,11 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.noop": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/lodash.noop/-/lodash.noop-3.0.1.tgz", + "integrity": "sha512-TmYdmu/pebrdTIBDK/FDx9Bmfzs9x0sZG6QIJuMDTqEPfeciLcN13ij+cOd0i9vwJfBtbG9UQ+C7MkXgYxrIJg==" + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", @@ -3229,6 +3264,11 @@ "resolved": "https://registry.npmmirror.com/mitt/-/mitt-3.0.0.tgz", "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==" }, + "node_modules/monaco-editor": { + "version": "0.33.0", + "resolved": "https://registry.npmmirror.com/monaco-editor/-/monaco-editor-0.33.0.tgz", + "integrity": "sha512-VcRWPSLIUEgQJQIE0pVT8FcGBIgFoxz7jtqctE+IiCxWugD0DwgyQBcZBhdSrdMC84eumoqMZsGl2GTreOzwqw==" + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", @@ -3962,6 +4002,11 @@ "source-map": "^0.6.0" } }, + "node_modules/spark-md5": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/spark-md5/-/spark-md5-3.0.2.tgz", + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==" + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4185,6 +4230,11 @@ "resolved": "https://registry.npmmirror.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz", "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" }, + "node_modules/tinymce": { + "version": "6.4.2", + "resolved": "https://registry.npmmirror.com/tinymce/-/tinymce-6.4.2.tgz", + "integrity": "sha512-te+4c8PoAwTKPMBQtMQehnSZlOO9Ay5tDgaRFJKBehYb6SlX2PYZ0v3oe/cmiv5EfqdwZLkEMXk2MNOeApZZLg==" + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz", diff --git a/cdTMP/package.json b/cdTMP/package.json index 2b4ec15..04cd8c8 100644 --- a/cdTMP/package.json +++ b/cdTMP/package.json @@ -15,13 +15,16 @@ "@vueuse/core": "^10.1.2", "axios": "^1.4.0", "crypto-js": "^4.1.1", + "file2md5": "^1.3.0", "dayjs": "^1.11.7", "echarts": "^5.4.2", "lodash": "^4.17.21", "mitt": "^3.0.0", "nprogress": "^0.2.0", "pinia": "^2.1.3", + "@tinymce/tinymce-vue": "^5.0.0", "postcss-import": "^15.1.0", + "monaco-editor": "^0.33.0", "qs": "^6.11.2", "sortablejs": "^1.15.0", "vue": "^3.3.0", @@ -33,6 +36,7 @@ }, "devDependencies": { "@types/lodash": "^4.14.195", + "@types/mockjs": "^1.0.7", "@types/node": "^20.2.5", "@types/nprogress": "^0.2.0", "@types/qs": "^6.9.7", diff --git a/cdTMP/src/api/common.js b/cdTMP/src/api/common.js new file mode 100644 index 0000000..381d979 --- /dev/null +++ b/cdTMP/src/api/common.js @@ -0,0 +1,24 @@ +import { request } from "@/api/request" + +export default { + /** + * 获取公告信息 + * @returns + */ + getNoticeList(params = {}) { + return request({ + url: "common/getNoticeList", + method: "get", + params + }) + }, + /** + * 快捷查询字典 + */ + getDict(code) { + return request({ + url: "system/dataDict/list?code=" + code, + method: "get" + }) + } +} diff --git a/cdTMP/src/api/system/user.js b/cdTMP/src/api/system/user.js new file mode 100644 index 0000000..6b95035 --- /dev/null +++ b/cdTMP/src/api/system/user.js @@ -0,0 +1,94 @@ +import { request } from "@/api/request" + +export default { + /** + * 更新用户信息 + * @returns + */ + updateInfo(data = {}) { + return request({ + url: "system/user/updateInfo", + method: "post", + data + }) + }, + /** + * 用户修改密码 + * @returns + */ + modifyPassword(data = {}) { + return request({ + url: "system/user/modifyPassword", + method: "post", + data + }) + }, + + /** + * 获取用户信息列表 + * @returns + */ + getPageList(params = {}) { + return request({ + url: "system/user/index", + method: "get", + params + }) + }, + // ~~~~~~usermanage~~~~~~页面的 + /** + * 添加用户 + * @returns + */ + save(params = {}) { + return request({ + url: "system/user/save", + method: "post", + data: params + }) + }, + /** + * 更新数据 + * @returns + */ + update(id, data = {}) { + return request({ + url: "system/user/update/" + id, + method: "put", + data + }) + }, + /** + * 移到回收站 + * @returns + */ + delete(data) { + return request({ + url: "system/user/delete", + method: "delete", + data + }) + }, + /** + * 真实删除 + * @returns + */ + realDeletes(data) { + return request({ + url: "system/user/realDelete", + method: "delete", + data + }) + }, + /** + * 恢复数据 + * @returns + */ + recoverys(data) { + return request({ + url: "system/user/recovery", + method: "put", + data + }) + } +} diff --git a/cdTMP/src/api/testmanage/project.js b/cdTMP/src/api/testmanage/project.js new file mode 100644 index 0000000..29bc5ab --- /dev/null +++ b/cdTMP/src/api/testmanage/project.js @@ -0,0 +1,14 @@ +import { request } from "@/api/request" +export default { + /** + * 获取项目列表信息 + * @returns {Array} + */ + getPageList(params = {}) { + return request({ + url: "testmanage/project/index", + method: "get", + params + }) + } +} diff --git a/cdTMP/src/assets/avatar/zhu.jpg b/cdTMP/src/assets/avatar/zhu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..088996859de5d3975f1ba8f21cf0006174eb87ff GIT binary patch literal 98569 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

`vk|KZ^L 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 QmHP{Qzrc_a`R3jK0m6oN`v3p{ literal 0 HcmV?d00001 diff --git a/cdTMP/src/components/index.js b/cdTMP/src/components/index.js index 016a048..e6698f2 100644 --- a/cdTMP/src/components/index.js +++ b/cdTMP/src/components/index.js @@ -1,3 +1,56 @@ -// echarts的东西 +import { use } from "echarts/core" +import { CanvasRenderer } from "echarts/renderers" +import { BarChart, LineChart, PieChart, RadarChart, GaugeChart } from "echarts/charts" +import { + GridComponent, + TooltipComponent, + LegendComponent, + DataZoomComponent, + GraphicComponent +} from "echarts/components" -// ma组件相关东西 +import MaCrud from "./ma-crud/index.vue" +import MaForm from "./ma-form/index.vue" +import MaChart from "./ma-charts/index.vue" +import MaUpload from "./ma-upload/index.vue" +import MaTreeSlider from "./ma-treeSlider/index.vue" +import MaResource from "./ma-resource/index.vue" +import MaResourceButton from "./ma-resource/button.vue" +import MaUser from "./ma-user/index.vue" +import MaEditor from "./ma-editor/index.vue" +import MaIcon from "./ma-icon/index.vue" +import MaCodeEditor from "./ma-codeEditor/index.vue" +import MaUserInfo from "./ma-userInfo/index.vue" +import MaCityLinkage from "./ma-cityLinkage/index.vue" + +use([ + CanvasRenderer, + BarChart, + LineChart, + PieChart, + RadarChart, + GaugeChart, + GridComponent, + TooltipComponent, + LegendComponent, + DataZoomComponent, + GraphicComponent +]) + +export default { + install(Vue) { + Vue.component("MaChart", MaChart) + Vue.component("MaCrud", MaCrud) + Vue.component("MaForm", MaForm) + Vue.component("MaUpload", MaUpload) + Vue.component("MaTreeSlider", MaTreeSlider) + Vue.component("MaResource", MaResource) + Vue.component("MaResourceButton", MaResourceButton) + Vue.component("MaUser", MaUser) + Vue.component("MaEditor", MaEditor) + Vue.component("MaIcon", MaIcon) + Vue.component("MaCodeEditor", MaCodeEditor) + Vue.component("MaUserInfo", MaUserInfo) + Vue.component("MaCityLinkage", MaCityLinkage) + } +} diff --git a/cdTMP/src/components/ma-charts/index.vue b/cdTMP/src/components/ma-charts/index.vue new file mode 100644 index 0000000..4fe0ded --- /dev/null +++ b/cdTMP/src/components/ma-charts/index.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/cdTMP/src/components/ma-cityLinkage/index.vue b/cdTMP/src/components/ma-cityLinkage/index.vue new file mode 100644 index 0000000..ae42317 --- /dev/null +++ b/cdTMP/src/components/ma-cityLinkage/index.vue @@ -0,0 +1,161 @@ + + + diff --git a/cdTMP/src/components/ma-cityLinkage/lib/city.json b/cdTMP/src/components/ma-cityLinkage/lib/city.json new file mode 100644 index 0000000..a3b2f6a --- /dev/null +++ b/cdTMP/src/components/ma-cityLinkage/lib/city.json @@ -0,0 +1,5302 @@ +[ + { + "code": "11", + "name": "北京市", + "children": [ + { + "code": "1101", + "name": "市辖区", + "children": [ + { "code": "110101", "name": "东城区" }, + { "code": "110102", "name": "西城区" }, + { "code": "110105", "name": "朝阳区" }, + { "code": "110106", "name": "丰台区" }, + { "code": "110107", "name": "石景山区" }, + { "code": "110108", "name": "海淀区" }, + { "code": "110109", "name": "门头沟区" }, + { "code": "110111", "name": "房山区" }, + { "code": "110112", "name": "通州区" }, + { "code": "110113", "name": "顺义区" }, + { "code": "110114", "name": "昌平区" }, + { "code": "110115", "name": "大兴区" }, + { "code": "110116", "name": "怀柔区" }, + { "code": "110117", "name": "平谷区" }, + { "code": "110118", "name": "密云区" }, + { "code": "110119", "name": "延庆区" } + ] + } + ] + }, + { + "code": "12", + "name": "天津市", + "children": [ + { + "code": "1201", + "name": "市辖区", + "children": [ + { "code": "120101", "name": "和平区" }, + { "code": "120102", "name": "河东区" }, + { "code": "120103", "name": "河西区" }, + { "code": "120104", "name": "南开区" }, + { "code": "120105", "name": "河北区" }, + { "code": "120106", "name": "红桥区" }, + { "code": "120110", "name": "东丽区" }, + { "code": "120111", "name": "西青区" }, + { "code": "120112", "name": "津南区" }, + { "code": "120113", "name": "北辰区" }, + { "code": "120114", "name": "武清区" }, + { "code": "120115", "name": "宝坻区" }, + { "code": "120116", "name": "滨海新区" }, + { "code": "120117", "name": "宁河区" }, + { "code": "120118", "name": "静海区" }, + { "code": "120119", "name": "蓟州区" } + ] + } + ] + }, + { + "code": "13", + "name": "河北省", + "children": [ + { + "code": "1301", + "name": "石家庄市", + "children": [ + { "code": "130102", "name": "长安区" }, + { "code": "130104", "name": "桥西区" }, + { "code": "130105", "name": "新华区" }, + { "code": "130107", "name": "井陉矿区" }, + { "code": "130108", "name": "裕华区" }, + { "code": "130109", "name": "藁城区" }, + { "code": "130110", "name": "鹿泉区" }, + { "code": "130111", "name": "栾城区" }, + { "code": "130121", "name": "井陉县" }, + { "code": "130123", "name": "正定县" }, + { "code": "130125", "name": "行唐县" }, + { "code": "130126", "name": "灵寿县" }, + { "code": "130127", "name": "高邑县" }, + { "code": "130128", "name": "深泽县" }, + { "code": "130129", "name": "赞皇县" }, + { "code": "130130", "name": "无极县" }, + { "code": "130131", "name": "平山县" }, + { "code": "130132", "name": "元氏县" }, + { "code": "130133", "name": "赵县" }, + { "code": "130171", "name": "石家庄高新技术产业开发区" }, + { "code": "130172", "name": "石家庄循环化工园区" }, + { "code": "130181", "name": "辛集市" }, + { "code": "130183", "name": "晋州市" }, + { "code": "130184", "name": "新乐市" } + ] + }, + { + "code": "1302", + "name": "唐山市", + "children": [ + { "code": "130202", "name": "路南区" }, + { "code": "130203", "name": "路北区" }, + { "code": "130204", "name": "古冶区" }, + { "code": "130205", "name": "开平区" }, + { "code": "130207", "name": "丰南区" }, + { "code": "130208", "name": "丰润区" }, + { "code": "130209", "name": "曹妃甸区" }, + { "code": "130224", "name": "滦南县" }, + { "code": "130225", "name": "乐亭县" }, + { "code": "130227", "name": "迁西县" }, + { "code": "130229", "name": "玉田县" }, + { "code": "130271", "name": "河北唐山芦台经济开发区" }, + { "code": "130272", "name": "唐山市汉沽管理区" }, + { "code": "130273", "name": "唐山高新技术产业开发区" }, + { "code": "130274", "name": "河北唐山海港经济开发区" }, + { "code": "130281", "name": "遵化市" }, + { "code": "130283", "name": "迁安市" }, + { "code": "130284", "name": "滦州市" } + ] + }, + { + "code": "1303", + "name": "秦皇岛市", + "children": [ + { "code": "130302", "name": "海港区" }, + { "code": "130303", "name": "山海关区" }, + { "code": "130304", "name": "北戴河区" }, + { "code": "130306", "name": "抚宁区" }, + { "code": "130321", "name": "青龙满族自治县" }, + { "code": "130322", "name": "昌黎县" }, + { "code": "130324", "name": "卢龙县" }, + { "code": "130371", "name": "秦皇岛市经济技术开发区" }, + { "code": "130372", "name": "北戴河新区" } + ] + }, + { + "code": "1304", + "name": "邯郸市", + "children": [ + { "code": "130402", "name": "邯山区" }, + { "code": "130403", "name": "丛台区" }, + { "code": "130404", "name": "复兴区" }, + { "code": "130406", "name": "峰峰矿区" }, + { "code": "130407", "name": "肥乡区" }, + { "code": "130408", "name": "永年区" }, + { "code": "130423", "name": "临漳县" }, + { "code": "130424", "name": "成安县" }, + { "code": "130425", "name": "大名县" }, + { "code": "130426", "name": "涉县" }, + { "code": "130427", "name": "磁县" }, + { "code": "130430", "name": "邱县" }, + { "code": "130431", "name": "鸡泽县" }, + { "code": "130432", "name": "广平县" }, + { "code": "130433", "name": "馆陶县" }, + { "code": "130434", "name": "魏县" }, + { "code": "130435", "name": "曲周县" }, + { "code": "130471", "name": "邯郸经济技术开发区" }, + { "code": "130473", "name": "邯郸冀南新区" }, + { "code": "130481", "name": "武安市" } + ] + }, + { + "code": "1305", + "name": "邢台市", + "children": [ + { "code": "130502", "name": "襄都区" }, + { "code": "130503", "name": "信都区" }, + { "code": "130505", "name": "任泽区" }, + { "code": "130506", "name": "南和区" }, + { "code": "130522", "name": "临城县" }, + { "code": "130523", "name": "内丘县" }, + { "code": "130524", "name": "柏乡县" }, + { "code": "130525", "name": "隆尧县" }, + { "code": "130528", "name": "宁晋县" }, + { "code": "130529", "name": "巨鹿县" }, + { "code": "130530", "name": "新河县" }, + { "code": "130531", "name": "广宗县" }, + { "code": "130532", "name": "平乡县" }, + { "code": "130533", "name": "威县" }, + { "code": "130534", "name": "清河县" }, + { "code": "130535", "name": "临西县" }, + { "code": "130571", "name": "河北邢台经济开发区" }, + { "code": "130581", "name": "南宫市" }, + { "code": "130582", "name": "沙河市" } + ] + }, + { + "code": "1306", + "name": "保定市", + "children": [ + { "code": "130602", "name": "竞秀区" }, + { "code": "130606", "name": "莲池区" }, + { "code": "130607", "name": "满城区" }, + { "code": "130608", "name": "清苑区" }, + { "code": "130609", "name": "徐水区" }, + { "code": "130623", "name": "涞水县" }, + { "code": "130624", "name": "阜平县" }, + { "code": "130626", "name": "定兴县" }, + { "code": "130627", "name": "唐县" }, + { "code": "130628", "name": "高阳县" }, + { "code": "130629", "name": "容城县" }, + { "code": "130630", "name": "涞源县" }, + { "code": "130631", "name": "望都县" }, + { "code": "130632", "name": "安新县" }, + { "code": "130633", "name": "易县" }, + { "code": "130634", "name": "曲阳县" }, + { "code": "130635", "name": "蠡县" }, + { "code": "130636", "name": "顺平县" }, + { "code": "130637", "name": "博野县" }, + { "code": "130638", "name": "雄县" }, + { "code": "130671", "name": "保定高新技术产业开发区" }, + { "code": "130672", "name": "保定白沟新城" }, + { "code": "130681", "name": "涿州市" }, + { "code": "130682", "name": "定州市" }, + { "code": "130683", "name": "安国市" }, + { "code": "130684", "name": "高碑店市" } + ] + }, + { + "code": "1307", + "name": "张家口市", + "children": [ + { "code": "130702", "name": "桥东区" }, + { "code": "130703", "name": "桥西区" }, + { "code": "130705", "name": "宣化区" }, + { "code": "130706", "name": "下花园区" }, + { "code": "130708", "name": "万全区" }, + { "code": "130709", "name": "崇礼区" }, + { "code": "130722", "name": "张北县" }, + { "code": "130723", "name": "康保县" }, + { "code": "130724", "name": "沽源县" }, + { "code": "130725", "name": "尚义县" }, + { "code": "130726", "name": "蔚县" }, + { "code": "130727", "name": "阳原县" }, + { "code": "130728", "name": "怀安县" }, + { "code": "130730", "name": "怀来县" }, + { "code": "130731", "name": "涿鹿县" }, + { "code": "130732", "name": "赤城县" }, + { "code": "130771", "name": "张家口经济开发区" }, + { "code": "130772", "name": "张家口市察北管理区" }, + { "code": "130773", "name": "张家口市塞北管理区" } + ] + }, + { + "code": "1308", + "name": "承德市", + "children": [ + { "code": "130802", "name": "双桥区" }, + { "code": "130803", "name": "双滦区" }, + { "code": "130804", "name": "鹰手营子矿区" }, + { "code": "130821", "name": "承德县" }, + { "code": "130822", "name": "兴隆县" }, + { "code": "130824", "name": "滦平县" }, + { "code": "130825", "name": "隆化县" }, + { "code": "130826", "name": "丰宁满族自治县" }, + { "code": "130827", "name": "宽城满族自治县" }, + { "code": "130828", "name": "围场满族蒙古族自治县" }, + { "code": "130871", "name": "承德高新技术产业开发区" }, + { "code": "130881", "name": "平泉市" } + ] + }, + { + "code": "1309", + "name": "沧州市", + "children": [ + { "code": "130902", "name": "新华区" }, + { "code": "130903", "name": "运河区" }, + { "code": "130921", "name": "沧县" }, + { "code": "130922", "name": "青县" }, + { "code": "130923", "name": "东光县" }, + { "code": "130924", "name": "海兴县" }, + { "code": "130925", "name": "盐山县" }, + { "code": "130926", "name": "肃宁县" }, + { "code": "130927", "name": "南皮县" }, + { "code": "130928", "name": "吴桥县" }, + { "code": "130929", "name": "献县" }, + { "code": "130930", "name": "孟村回族自治县" }, + { "code": "130971", "name": "河北沧州经济开发区" }, + { "code": "130972", "name": "沧州高新技术产业开发区" }, + { "code": "130973", "name": "沧州渤海新区" }, + { "code": "130981", "name": "泊头市" }, + { "code": "130982", "name": "任丘市" }, + { "code": "130983", "name": "黄骅市" }, + { "code": "130984", "name": "河间市" } + ] + }, + { + "code": "1310", + "name": "廊坊市", + "children": [ + { "code": "131002", "name": "安次区" }, + { "code": "131003", "name": "广阳区" }, + { "code": "131022", "name": "固安县" }, + { "code": "131023", "name": "永清县" }, + { "code": "131024", "name": "香河县" }, + { "code": "131025", "name": "大城县" }, + { "code": "131026", "name": "文安县" }, + { "code": "131028", "name": "大厂回族自治县" }, + { "code": "131071", "name": "廊坊经济技术开发区" }, + { "code": "131081", "name": "霸州市" }, + { "code": "131082", "name": "三河市" } + ] + }, + { + "code": "1311", + "name": "衡水市", + "children": [ + { "code": "131102", "name": "桃城区" }, + { "code": "131103", "name": "冀州区" }, + { "code": "131121", "name": "枣强县" }, + { "code": "131122", "name": "武邑县" }, + { "code": "131123", "name": "武强县" }, + { "code": "131124", "name": "饶阳县" }, + { "code": "131125", "name": "安平县" }, + { "code": "131126", "name": "故城县" }, + { "code": "131127", "name": "景县" }, + { "code": "131128", "name": "阜城县" }, + { "code": "131171", "name": "河北衡水高新技术产业开发区" }, + { "code": "131172", "name": "衡水滨湖新区" }, + { "code": "131182", "name": "深州市" } + ] + } + ] + }, + { + "code": "14", + "name": "山西省", + "children": [ + { + "code": "1401", + "name": "太原市", + "children": [ + { "code": "140105", "name": "小店区" }, + { "code": "140106", "name": "迎泽区" }, + { "code": "140107", "name": "杏花岭区" }, + { "code": "140108", "name": "尖草坪区" }, + { "code": "140109", "name": "万柏林区" }, + { "code": "140110", "name": "晋源区" }, + { "code": "140121", "name": "清徐县" }, + { "code": "140122", "name": "阳曲县" }, + { "code": "140123", "name": "娄烦县" }, + { "code": "140171", "name": "山西转型综合改革示范区" }, + { "code": "140181", "name": "古交市" } + ] + }, + { + "code": "1402", + "name": "大同市", + "children": [ + { "code": "140212", "name": "新荣区" }, + { "code": "140213", "name": "平城区" }, + { "code": "140214", "name": "云冈区" }, + { "code": "140215", "name": "云州区" }, + { "code": "140221", "name": "阳高县" }, + { "code": "140222", "name": "天镇县" }, + { "code": "140223", "name": "广灵县" }, + { "code": "140224", "name": "灵丘县" }, + { "code": "140225", "name": "浑源县" }, + { "code": "140226", "name": "左云县" }, + { "code": "140271", "name": "山西大同经济开发区" } + ] + }, + { + "code": "1403", + "name": "阳泉市", + "children": [ + { "code": "140302", "name": "城区" }, + { "code": "140303", "name": "矿区" }, + { "code": "140311", "name": "郊区" }, + { "code": "140321", "name": "平定县" }, + { "code": "140322", "name": "盂县" } + ] + }, + { + "code": "1404", + "name": "长治市", + "children": [ + { "code": "140403", "name": "潞州区" }, + { "code": "140404", "name": "上党区" }, + { "code": "140405", "name": "屯留区" }, + { "code": "140406", "name": "潞城区" }, + { "code": "140423", "name": "襄垣县" }, + { "code": "140425", "name": "平顺县" }, + { "code": "140426", "name": "黎城县" }, + { "code": "140427", "name": "壶关县" }, + { "code": "140428", "name": "长子县" }, + { "code": "140429", "name": "武乡县" }, + { "code": "140430", "name": "沁县" }, + { "code": "140431", "name": "沁源县" }, + { "code": "140471", "name": "山西长治高新技术产业园区" } + ] + }, + { + "code": "1405", + "name": "晋城市", + "children": [ + { "code": "140502", "name": "城区" }, + { "code": "140521", "name": "沁水县" }, + { "code": "140522", "name": "阳城县" }, + { "code": "140524", "name": "陵川县" }, + { "code": "140525", "name": "泽州县" }, + { "code": "140581", "name": "高平市" } + ] + }, + { + "code": "1406", + "name": "朔州市", + "children": [ + { "code": "140602", "name": "朔城区" }, + { "code": "140603", "name": "平鲁区" }, + { "code": "140621", "name": "山阴县" }, + { "code": "140622", "name": "应县" }, + { "code": "140623", "name": "右玉县" }, + { "code": "140671", "name": "山西朔州经济开发区" }, + { "code": "140681", "name": "怀仁市" } + ] + }, + { + "code": "1407", + "name": "晋中市", + "children": [ + { "code": "140702", "name": "榆次区" }, + { "code": "140703", "name": "太谷区" }, + { "code": "140721", "name": "榆社县" }, + { "code": "140722", "name": "左权县" }, + { "code": "140723", "name": "和顺县" }, + { "code": "140724", "name": "昔阳县" }, + { "code": "140725", "name": "寿阳县" }, + { "code": "140727", "name": "祁县" }, + { "code": "140728", "name": "平遥县" }, + { "code": "140729", "name": "灵石县" }, + { "code": "140781", "name": "介休市" } + ] + }, + { + "code": "1408", + "name": "运城市", + "children": [ + { "code": "140802", "name": "盐湖区" }, + { "code": "140821", "name": "临猗县" }, + { "code": "140822", "name": "万荣县" }, + { "code": "140823", "name": "闻喜县" }, + { "code": "140824", "name": "稷山县" }, + { "code": "140825", "name": "新绛县" }, + { "code": "140826", "name": "绛县" }, + { "code": "140827", "name": "垣曲县" }, + { "code": "140828", "name": "夏县" }, + { "code": "140829", "name": "平陆县" }, + { "code": "140830", "name": "芮城县" }, + { "code": "140881", "name": "永济市" }, + { "code": "140882", "name": "河津市" } + ] + }, + { + "code": "1409", + "name": "忻州市", + "children": [ + { "code": "140902", "name": "忻府区" }, + { "code": "140921", "name": "定襄县" }, + { "code": "140922", "name": "五台县" }, + { "code": "140923", "name": "代县" }, + { "code": "140924", "name": "繁峙县" }, + { "code": "140925", "name": "宁武县" }, + { "code": "140926", "name": "静乐县" }, + { "code": "140927", "name": "神池县" }, + { "code": "140928", "name": "五寨县" }, + { "code": "140929", "name": "岢岚县" }, + { "code": "140930", "name": "河曲县" }, + { "code": "140931", "name": "保德县" }, + { "code": "140932", "name": "偏关县" }, + { "code": "140971", "name": "五台山风景名胜区" }, + { "code": "140981", "name": "原平市" } + ] + }, + { + "code": "1410", + "name": "临汾市", + "children": [ + { "code": "141002", "name": "尧都区" }, + { "code": "141021", "name": "曲沃县" }, + { "code": "141022", "name": "翼城县" }, + { "code": "141023", "name": "襄汾县" }, + { "code": "141024", "name": "洪洞县" }, + { "code": "141025", "name": "古县" }, + { "code": "141026", "name": "安泽县" }, + { "code": "141027", "name": "浮山县" }, + { "code": "141028", "name": "吉县" }, + { "code": "141029", "name": "乡宁县" }, + { "code": "141030", "name": "大宁县" }, + { "code": "141031", "name": "隰县" }, + { "code": "141032", "name": "永和县" }, + { "code": "141033", "name": "蒲县" }, + { "code": "141034", "name": "汾西县" }, + { "code": "141081", "name": "侯马市" }, + { "code": "141082", "name": "霍州市" } + ] + }, + { + "code": "1411", + "name": "吕梁市", + "children": [ + { "code": "141102", "name": "离石区" }, + { "code": "141121", "name": "文水县" }, + { "code": "141122", "name": "交城县" }, + { "code": "141123", "name": "兴县" }, + { "code": "141124", "name": "临县" }, + { "code": "141125", "name": "柳林县" }, + { "code": "141126", "name": "石楼县" }, + { "code": "141127", "name": "岚县" }, + { "code": "141128", "name": "方山县" }, + { "code": "141129", "name": "中阳县" }, + { "code": "141130", "name": "交口县" }, + { "code": "141181", "name": "孝义市" }, + { "code": "141182", "name": "汾阳市" } + ] + } + ] + }, + { + "code": "15", + "name": "内蒙古自治区", + "children": [ + { + "code": "1501", + "name": "呼和浩特市", + "children": [ + { "code": "150102", "name": "新城区" }, + { "code": "150103", "name": "回民区" }, + { "code": "150104", "name": "玉泉区" }, + { "code": "150105", "name": "赛罕区" }, + { "code": "150121", "name": "土默特左旗" }, + { "code": "150122", "name": "托克托县" }, + { "code": "150123", "name": "和林格尔县" }, + { "code": "150124", "name": "清水河县" }, + { "code": "150125", "name": "武川县" }, + { "code": "150172", "name": "呼和浩特经济技术开发区" } + ] + }, + { + "code": "1502", + "name": "包头市", + "children": [ + { "code": "150202", "name": "东河区" }, + { "code": "150203", "name": "昆都仑区" }, + { "code": "150204", "name": "青山区" }, + { "code": "150205", "name": "石拐区" }, + { "code": "150206", "name": "白云鄂博矿区" }, + { "code": "150207", "name": "九原区" }, + { "code": "150221", "name": "土默特右旗" }, + { "code": "150222", "name": "固阳县" }, + { "code": "150223", "name": "达尔罕茂明安联合旗" }, + { "code": "150271", "name": "包头稀土高新技术产业开发区" } + ] + }, + { + "code": "1503", + "name": "乌海市", + "children": [ + { "code": "150302", "name": "海勃湾区" }, + { "code": "150303", "name": "海南区" }, + { "code": "150304", "name": "乌达区" } + ] + }, + { + "code": "1504", + "name": "赤峰市", + "children": [ + { "code": "150402", "name": "红山区" }, + { "code": "150403", "name": "元宝山区" }, + { "code": "150404", "name": "松山区" }, + { "code": "150421", "name": "阿鲁科尔沁旗" }, + { "code": "150422", "name": "巴林左旗" }, + { "code": "150423", "name": "巴林右旗" }, + { "code": "150424", "name": "林西县" }, + { "code": "150425", "name": "克什克腾旗" }, + { "code": "150426", "name": "翁牛特旗" }, + { "code": "150428", "name": "喀喇沁旗" }, + { "code": "150429", "name": "宁城县" }, + { "code": "150430", "name": "敖汉旗" } + ] + }, + { + "code": "1505", + "name": "通辽市", + "children": [ + { "code": "150502", "name": "科尔沁区" }, + { "code": "150521", "name": "科尔沁左翼中旗" }, + { "code": "150522", "name": "科尔沁左翼后旗" }, + { "code": "150523", "name": "开鲁县" }, + { "code": "150524", "name": "库伦旗" }, + { "code": "150525", "name": "奈曼旗" }, + { "code": "150526", "name": "扎鲁特旗" }, + { "code": "150571", "name": "通辽经济技术开发区" }, + { "code": "150581", "name": "霍林郭勒市" } + ] + }, + { + "code": "1506", + "name": "鄂尔多斯市", + "children": [ + { "code": "150602", "name": "东胜区" }, + { "code": "150603", "name": "康巴什区" }, + { "code": "150621", "name": "达拉特旗" }, + { "code": "150622", "name": "准格尔旗" }, + { "code": "150623", "name": "鄂托克前旗" }, + { "code": "150624", "name": "鄂托克旗" }, + { "code": "150625", "name": "杭锦旗" }, + { "code": "150626", "name": "乌审旗" }, + { "code": "150627", "name": "伊金霍洛旗" } + ] + }, + { + "code": "1507", + "name": "呼伦贝尔市", + "children": [ + { "code": "150702", "name": "海拉尔区" }, + { "code": "150703", "name": "扎赉诺尔区" }, + { "code": "150721", "name": "阿荣旗" }, + { "code": "150722", "name": "莫力达瓦达斡尔族自治旗" }, + { "code": "150723", "name": "鄂伦春自治旗" }, + { "code": "150724", "name": "鄂温克族自治旗" }, + { "code": "150725", "name": "陈巴尔虎旗" }, + { "code": "150726", "name": "新巴尔虎左旗" }, + { "code": "150727", "name": "新巴尔虎右旗" }, + { "code": "150781", "name": "满洲里市" }, + { "code": "150782", "name": "牙克石市" }, + { "code": "150783", "name": "扎兰屯市" }, + { "code": "150784", "name": "额尔古纳市" }, + { "code": "150785", "name": "根河市" } + ] + }, + { + "code": "1508", + "name": "巴彦淖尔市", + "children": [ + { "code": "150802", "name": "临河区" }, + { "code": "150821", "name": "五原县" }, + { "code": "150822", "name": "磴口县" }, + { "code": "150823", "name": "乌拉特前旗" }, + { "code": "150824", "name": "乌拉特中旗" }, + { "code": "150825", "name": "乌拉特后旗" }, + { "code": "150826", "name": "杭锦后旗" } + ] + }, + { + "code": "1509", + "name": "乌兰察布市", + "children": [ + { "code": "150902", "name": "集宁区" }, + { "code": "150921", "name": "卓资县" }, + { "code": "150922", "name": "化德县" }, + { "code": "150923", "name": "商都县" }, + { "code": "150924", "name": "兴和县" }, + { "code": "150925", "name": "凉城县" }, + { "code": "150926", "name": "察哈尔右翼前旗" }, + { "code": "150927", "name": "察哈尔右翼中旗" }, + { "code": "150928", "name": "察哈尔右翼后旗" }, + { "code": "150929", "name": "四子王旗" }, + { "code": "150981", "name": "丰镇市" } + ] + }, + { + "code": "1522", + "name": "兴安盟", + "children": [ + { "code": "152201", "name": "乌兰浩特市" }, + { "code": "152202", "name": "阿尔山市" }, + { "code": "152221", "name": "科尔沁右翼前旗" }, + { "code": "152222", "name": "科尔沁右翼中旗" }, + { "code": "152223", "name": "扎赉特旗" }, + { "code": "152224", "name": "突泉县" } + ] + }, + { + "code": "1525", + "name": "锡林郭勒盟", + "children": [ + { "code": "152501", "name": "二连浩特市" }, + { "code": "152502", "name": "锡林浩特市" }, + { "code": "152522", "name": "阿巴嘎旗" }, + { "code": "152523", "name": "苏尼特左旗" }, + { "code": "152524", "name": "苏尼特右旗" }, + { "code": "152525", "name": "东乌珠穆沁旗" }, + { "code": "152526", "name": "西乌珠穆沁旗" }, + { "code": "152527", "name": "太仆寺旗" }, + { "code": "152528", "name": "镶黄旗" }, + { "code": "152529", "name": "正镶白旗" }, + { "code": "152530", "name": "正蓝旗" }, + { "code": "152531", "name": "多伦县" }, + { "code": "152571", "name": "乌拉盖管委会" } + ] + }, + { + "code": "1529", + "name": "阿拉善盟", + "children": [ + { "code": "152921", "name": "阿拉善左旗" }, + { "code": "152922", "name": "阿拉善右旗" }, + { "code": "152923", "name": "额济纳旗" }, + { "code": "152971", "name": "内蒙古阿拉善高新技术产业开发区" } + ] + } + ] + }, + { + "code": "21", + "name": "辽宁省", + "children": [ + { + "code": "2101", + "name": "沈阳市", + "children": [ + { "code": "210102", "name": "和平区" }, + { "code": "210103", "name": "沈河区" }, + { "code": "210104", "name": "大东区" }, + { "code": "210105", "name": "皇姑区" }, + { "code": "210106", "name": "铁西区" }, + { "code": "210111", "name": "苏家屯区" }, + { "code": "210112", "name": "浑南区" }, + { "code": "210113", "name": "沈北新区" }, + { "code": "210114", "name": "于洪区" }, + { "code": "210115", "name": "辽中区" }, + { "code": "210123", "name": "康平县" }, + { "code": "210124", "name": "法库县" }, + { "code": "210181", "name": "新民市" } + ] + }, + { + "code": "2102", + "name": "大连市", + "children": [ + { "code": "210202", "name": "中山区" }, + { "code": "210203", "name": "西岗区" }, + { "code": "210204", "name": "沙河口区" }, + { "code": "210211", "name": "甘井子区" }, + { "code": "210212", "name": "旅顺口区" }, + { "code": "210213", "name": "金州区" }, + { "code": "210214", "name": "普兰店区" }, + { "code": "210224", "name": "长海县" }, + { "code": "210281", "name": "瓦房店市" }, + { "code": "210283", "name": "庄河市" } + ] + }, + { + "code": "2103", + "name": "鞍山市", + "children": [ + { "code": "210302", "name": "铁东区" }, + { "code": "210303", "name": "铁西区" }, + { "code": "210304", "name": "立山区" }, + { "code": "210311", "name": "千山区" }, + { "code": "210321", "name": "台安县" }, + { "code": "210323", "name": "岫岩满族自治县" }, + { "code": "210381", "name": "海城市" } + ] + }, + { + "code": "2104", + "name": "抚顺市", + "children": [ + { "code": "210402", "name": "新抚区" }, + { "code": "210403", "name": "东洲区" }, + { "code": "210404", "name": "望花区" }, + { "code": "210411", "name": "顺城区" }, + { "code": "210421", "name": "抚顺县" }, + { "code": "210422", "name": "新宾满族自治县" }, + { "code": "210423", "name": "清原满族自治县" } + ] + }, + { + "code": "2105", + "name": "本溪市", + "children": [ + { "code": "210502", "name": "平山区" }, + { "code": "210503", "name": "溪湖区" }, + { "code": "210504", "name": "明山区" }, + { "code": "210505", "name": "南芬区" }, + { "code": "210521", "name": "本溪满族自治县" }, + { "code": "210522", "name": "桓仁满族自治县" } + ] + }, + { + "code": "2106", + "name": "丹东市", + "children": [ + { "code": "210602", "name": "元宝区" }, + { "code": "210603", "name": "振兴区" }, + { "code": "210604", "name": "振安区" }, + { "code": "210624", "name": "宽甸满族自治县" }, + { "code": "210681", "name": "东港市" }, + { "code": "210682", "name": "凤城市" } + ] + }, + { + "code": "2107", + "name": "锦州市", + "children": [ + { "code": "210702", "name": "古塔区" }, + { "code": "210703", "name": "凌河区" }, + { "code": "210711", "name": "太和区" }, + { "code": "210726", "name": "黑山县" }, + { "code": "210727", "name": "义县" }, + { "code": "210781", "name": "凌海市" }, + { "code": "210782", "name": "北镇市" } + ] + }, + { + "code": "2108", + "name": "营口市", + "children": [ + { "code": "210802", "name": "站前区" }, + { "code": "210803", "name": "西市区" }, + { "code": "210804", "name": "鲅鱼圈区" }, + { "code": "210811", "name": "老边区" }, + { "code": "210881", "name": "盖州市" }, + { "code": "210882", "name": "大石桥市" } + ] + }, + { + "code": "2109", + "name": "阜新市", + "children": [ + { "code": "210902", "name": "海州区" }, + { "code": "210903", "name": "新邱区" }, + { "code": "210904", "name": "太平区" }, + { "code": "210905", "name": "清河门区" }, + { "code": "210911", "name": "细河区" }, + { "code": "210921", "name": "阜新蒙古族自治县" }, + { "code": "210922", "name": "彰武县" } + ] + }, + { + "code": "2110", + "name": "辽阳市", + "children": [ + { "code": "211002", "name": "白塔区" }, + { "code": "211003", "name": "文圣区" }, + { "code": "211004", "name": "宏伟区" }, + { "code": "211005", "name": "弓长岭区" }, + { "code": "211011", "name": "太子河区" }, + { "code": "211021", "name": "辽阳县" }, + { "code": "211081", "name": "灯塔市" } + ] + }, + { + "code": "2111", + "name": "盘锦市", + "children": [ + { "code": "211102", "name": "双台子区" }, + { "code": "211103", "name": "兴隆台区" }, + { "code": "211104", "name": "大洼区" }, + { "code": "211122", "name": "盘山县" } + ] + }, + { + "code": "2112", + "name": "铁岭市", + "children": [ + { "code": "211202", "name": "银州区" }, + { "code": "211204", "name": "清河区" }, + { "code": "211221", "name": "铁岭县" }, + { "code": "211223", "name": "西丰县" }, + { "code": "211224", "name": "昌图县" }, + { "code": "211281", "name": "调兵山市" }, + { "code": "211282", "name": "开原市" } + ] + }, + { + "code": "2113", + "name": "朝阳市", + "children": [ + { "code": "211302", "name": "双塔区" }, + { "code": "211303", "name": "龙城区" }, + { "code": "211321", "name": "朝阳县" }, + { "code": "211322", "name": "建平县" }, + { "code": "211324", "name": "喀喇沁左翼蒙古族自治县" }, + { "code": "211381", "name": "北票市" }, + { "code": "211382", "name": "凌源市" } + ] + }, + { + "code": "2114", + "name": "葫芦岛市", + "children": [ + { "code": "211402", "name": "连山区" }, + { "code": "211403", "name": "龙港区" }, + { "code": "211404", "name": "南票区" }, + { "code": "211421", "name": "绥中县" }, + { "code": "211422", "name": "建昌县" }, + { "code": "211481", "name": "兴城市" } + ] + } + ] + }, + { + "code": "22", + "name": "吉林省", + "children": [ + { + "code": "2201", + "name": "长春市", + "children": [ + { "code": "220102", "name": "南关区" }, + { "code": "220103", "name": "宽城区" }, + { "code": "220104", "name": "朝阳区" }, + { "code": "220105", "name": "二道区" }, + { "code": "220106", "name": "绿园区" }, + { "code": "220112", "name": "双阳区" }, + { "code": "220113", "name": "九台区" }, + { "code": "220122", "name": "农安县" }, + { "code": "220171", "name": "长春经济技术开发区" }, + { "code": "220172", "name": "长春净月高新技术产业开发区" }, + { "code": "220173", "name": "长春高新技术产业开发区" }, + { "code": "220174", "name": "长春汽车经济技术开发区" }, + { "code": "220182", "name": "榆树市" }, + { "code": "220183", "name": "德惠市" }, + { "code": "220184", "name": "公主岭市" } + ] + }, + { + "code": "2202", + "name": "吉林市", + "children": [ + { "code": "220202", "name": "昌邑区" }, + { "code": "220203", "name": "龙潭区" }, + { "code": "220204", "name": "船营区" }, + { "code": "220211", "name": "丰满区" }, + { "code": "220221", "name": "永吉县" }, + { "code": "220271", "name": "吉林经济开发区" }, + { "code": "220272", "name": "吉林高新技术产业开发区" }, + { "code": "220273", "name": "吉林中国新加坡食品区" }, + { "code": "220281", "name": "蛟河市" }, + { "code": "220282", "name": "桦甸市" }, + { "code": "220283", "name": "舒兰市" }, + { "code": "220284", "name": "磐石市" } + ] + }, + { + "code": "2203", + "name": "四平市", + "children": [ + { "code": "220302", "name": "铁西区" }, + { "code": "220303", "name": "铁东区" }, + { "code": "220322", "name": "梨树县" }, + { "code": "220323", "name": "伊通满族自治县" }, + { "code": "220382", "name": "双辽市" } + ] + }, + { + "code": "2204", + "name": "辽源市", + "children": [ + { "code": "220402", "name": "龙山区" }, + { "code": "220403", "name": "西安区" }, + { "code": "220421", "name": "东丰县" }, + { "code": "220422", "name": "东辽县" } + ] + }, + { + "code": "2205", + "name": "通化市", + "children": [ + { "code": "220502", "name": "东昌区" }, + { "code": "220503", "name": "二道江区" }, + { "code": "220521", "name": "通化县" }, + { "code": "220523", "name": "辉南县" }, + { "code": "220524", "name": "柳河县" }, + { "code": "220581", "name": "梅河口市" }, + { "code": "220582", "name": "集安市" } + ] + }, + { + "code": "2206", + "name": "白山市", + "children": [ + { "code": "220602", "name": "浑江区" }, + { "code": "220605", "name": "江源区" }, + { "code": "220621", "name": "抚松县" }, + { "code": "220622", "name": "靖宇县" }, + { "code": "220623", "name": "长白朝鲜族自治县" }, + { "code": "220681", "name": "临江市" } + ] + }, + { + "code": "2207", + "name": "松原市", + "children": [ + { "code": "220702", "name": "宁江区" }, + { "code": "220721", "name": "前郭尔罗斯蒙古族自治县" }, + { "code": "220722", "name": "长岭县" }, + { "code": "220723", "name": "乾安县" }, + { "code": "220771", "name": "吉林松原经济开发区" }, + { "code": "220781", "name": "扶余市" } + ] + }, + { + "code": "2208", + "name": "白城市", + "children": [ + { "code": "220802", "name": "洮北区" }, + { "code": "220821", "name": "镇赉县" }, + { "code": "220822", "name": "通榆县" }, + { "code": "220871", "name": "吉林白城经济开发区" }, + { "code": "220881", "name": "洮南市" }, + { "code": "220882", "name": "大安市" } + ] + }, + { + "code": "2224", + "name": "延边朝鲜族自治州", + "children": [ + { "code": "222401", "name": "延吉市" }, + { "code": "222402", "name": "图们市" }, + { "code": "222403", "name": "敦化市" }, + { "code": "222404", "name": "珲春市" }, + { "code": "222405", "name": "龙井市" }, + { "code": "222406", "name": "和龙市" }, + { "code": "222424", "name": "汪清县" }, + { "code": "222426", "name": "安图县" } + ] + } + ] + }, + { + "code": "23", + "name": "黑龙江省", + "children": [ + { + "code": "2301", + "name": "哈尔滨市", + "children": [ + { "code": "230102", "name": "道里区" }, + { "code": "230103", "name": "南岗区" }, + { "code": "230104", "name": "道外区" }, + { "code": "230108", "name": "平房区" }, + { "code": "230109", "name": "松北区" }, + { "code": "230110", "name": "香坊区" }, + { "code": "230111", "name": "呼兰区" }, + { "code": "230112", "name": "阿城区" }, + { "code": "230113", "name": "双城区" }, + { "code": "230123", "name": "依兰县" }, + { "code": "230124", "name": "方正县" }, + { "code": "230125", "name": "宾县" }, + { "code": "230126", "name": "巴彦县" }, + { "code": "230127", "name": "木兰县" }, + { "code": "230128", "name": "通河县" }, + { "code": "230129", "name": "延寿县" }, + { "code": "230183", "name": "尚志市" }, + { "code": "230184", "name": "五常市" } + ] + }, + { + "code": "2302", + "name": "齐齐哈尔市", + "children": [ + { "code": "230202", "name": "龙沙区" }, + { "code": "230203", "name": "建华区" }, + { "code": "230204", "name": "铁锋区" }, + { "code": "230205", "name": "昂昂溪区" }, + { "code": "230206", "name": "富拉尔基区" }, + { "code": "230207", "name": "碾子山区" }, + { "code": "230208", "name": "梅里斯达斡尔族区" }, + { "code": "230221", "name": "龙江县" }, + { "code": "230223", "name": "依安县" }, + { "code": "230224", "name": "泰来县" }, + { "code": "230225", "name": "甘南县" }, + { "code": "230227", "name": "富裕县" }, + { "code": "230229", "name": "克山县" }, + { "code": "230230", "name": "克东县" }, + { "code": "230231", "name": "拜泉县" }, + { "code": "230281", "name": "讷河市" } + ] + }, + { + "code": "2303", + "name": "鸡西市", + "children": [ + { "code": "230302", "name": "鸡冠区" }, + { "code": "230303", "name": "恒山区" }, + { "code": "230304", "name": "滴道区" }, + { "code": "230305", "name": "梨树区" }, + { "code": "230306", "name": "城子河区" }, + { "code": "230307", "name": "麻山区" }, + { "code": "230321", "name": "鸡东县" }, + { "code": "230381", "name": "虎林市" }, + { "code": "230382", "name": "密山市" } + ] + }, + { + "code": "2304", + "name": "鹤岗市", + "children": [ + { "code": "230402", "name": "向阳区" }, + { "code": "230403", "name": "工农区" }, + { "code": "230404", "name": "南山区" }, + { "code": "230405", "name": "兴安区" }, + { "code": "230406", "name": "东山区" }, + { "code": "230407", "name": "兴山区" }, + { "code": "230421", "name": "萝北县" }, + { "code": "230422", "name": "绥滨县" } + ] + }, + { + "code": "2305", + "name": "双鸭山市", + "children": [ + { "code": "230502", "name": "尖山区" }, + { "code": "230503", "name": "岭东区" }, + { "code": "230505", "name": "四方台区" }, + { "code": "230506", "name": "宝山区" }, + { "code": "230521", "name": "集贤县" }, + { "code": "230522", "name": "友谊县" }, + { "code": "230523", "name": "宝清县" }, + { "code": "230524", "name": "饶河县" } + ] + }, + { + "code": "2306", + "name": "大庆市", + "children": [ + { "code": "230602", "name": "萨尔图区" }, + { "code": "230603", "name": "龙凤区" }, + { "code": "230604", "name": "让胡路区" }, + { "code": "230605", "name": "红岗区" }, + { "code": "230606", "name": "大同区" }, + { "code": "230621", "name": "肇州县" }, + { "code": "230622", "name": "肇源县" }, + { "code": "230623", "name": "林甸县" }, + { "code": "230624", "name": "杜尔伯特蒙古族自治县" }, + { "code": "230671", "name": "大庆高新技术产业开发区" } + ] + }, + { + "code": "2307", + "name": "伊春市", + "children": [ + { "code": "230717", "name": "伊美区" }, + { "code": "230718", "name": "乌翠区" }, + { "code": "230719", "name": "友好区" }, + { "code": "230722", "name": "嘉荫县" }, + { "code": "230723", "name": "汤旺县" }, + { "code": "230724", "name": "丰林县" }, + { "code": "230725", "name": "大箐山县" }, + { "code": "230726", "name": "南岔县" }, + { "code": "230751", "name": "金林区" }, + { "code": "230781", "name": "铁力市" } + ] + }, + { + "code": "2308", + "name": "佳木斯市", + "children": [ + { "code": "230803", "name": "向阳区" }, + { "code": "230804", "name": "前进区" }, + { "code": "230805", "name": "东风区" }, + { "code": "230811", "name": "郊区" }, + { "code": "230822", "name": "桦南县" }, + { "code": "230826", "name": "桦川县" }, + { "code": "230828", "name": "汤原县" }, + { "code": "230881", "name": "同江市" }, + { "code": "230882", "name": "富锦市" }, + { "code": "230883", "name": "抚远市" } + ] + }, + { + "code": "2309", + "name": "七台河市", + "children": [ + { "code": "230902", "name": "新兴区" }, + { "code": "230903", "name": "桃山区" }, + { "code": "230904", "name": "茄子河区" }, + { "code": "230921", "name": "勃利县" } + ] + }, + { + "code": "2310", + "name": "牡丹江市", + "children": [ + { "code": "231002", "name": "东安区" }, + { "code": "231003", "name": "阳明区" }, + { "code": "231004", "name": "爱民区" }, + { "code": "231005", "name": "西安区" }, + { "code": "231025", "name": "林口县" }, + { "code": "231071", "name": "牡丹江经济技术开发区" }, + { "code": "231081", "name": "绥芬河市" }, + { "code": "231083", "name": "海林市" }, + { "code": "231084", "name": "宁安市" }, + { "code": "231085", "name": "穆棱市" }, + { "code": "231086", "name": "东宁市" } + ] + }, + { + "code": "2311", + "name": "黑河市", + "children": [ + { "code": "231102", "name": "爱辉区" }, + { "code": "231123", "name": "逊克县" }, + { "code": "231124", "name": "孙吴县" }, + { "code": "231181", "name": "北安市" }, + { "code": "231182", "name": "五大连池市" }, + { "code": "231183", "name": "嫩江市" } + ] + }, + { + "code": "2312", + "name": "绥化市", + "children": [ + { "code": "231202", "name": "北林区" }, + { "code": "231221", "name": "望奎县" }, + { "code": "231222", "name": "兰西县" }, + { "code": "231223", "name": "青冈县" }, + { "code": "231224", "name": "庆安县" }, + { "code": "231225", "name": "明水县" }, + { "code": "231226", "name": "绥棱县" }, + { "code": "231281", "name": "安达市" }, + { "code": "231282", "name": "肇东市" }, + { "code": "231283", "name": "海伦市" } + ] + }, + { + "code": "2327", + "name": "大兴安岭地区", + "children": [ + { "code": "232701", "name": "漠河市" }, + { "code": "232721", "name": "呼玛县" }, + { "code": "232722", "name": "塔河县" }, + { "code": "232761", "name": "加格达奇区" }, + { "code": "232762", "name": "松岭区" }, + { "code": "232763", "name": "新林区" }, + { "code": "232764", "name": "呼中区" } + ] + } + ] + }, + { + "code": "31", + "name": "上海市", + "children": [ + { + "code": "3101", + "name": "市辖区", + "children": [ + { "code": "310101", "name": "黄浦区" }, + { "code": "310104", "name": "徐汇区" }, + { "code": "310105", "name": "长宁区" }, + { "code": "310106", "name": "静安区" }, + { "code": "310107", "name": "普陀区" }, + { "code": "310109", "name": "虹口区" }, + { "code": "310110", "name": "杨浦区" }, + { "code": "310112", "name": "闵行区" }, + { "code": "310113", "name": "宝山区" }, + { "code": "310114", "name": "嘉定区" }, + { "code": "310115", "name": "浦东新区" }, + { "code": "310116", "name": "金山区" }, + { "code": "310117", "name": "松江区" }, + { "code": "310118", "name": "青浦区" }, + { "code": "310120", "name": "奉贤区" }, + { "code": "310151", "name": "崇明区" } + ] + } + ] + }, + { + "code": "32", + "name": "江苏省", + "children": [ + { + "code": "3201", + "name": "南京市", + "children": [ + { "code": "320102", "name": "玄武区" }, + { "code": "320104", "name": "秦淮区" }, + { "code": "320105", "name": "建邺区" }, + { "code": "320106", "name": "鼓楼区" }, + { "code": "320111", "name": "浦口区" }, + { "code": "320113", "name": "栖霞区" }, + { "code": "320114", "name": "雨花台区" }, + { "code": "320115", "name": "江宁区" }, + { "code": "320116", "name": "六合区" }, + { "code": "320117", "name": "溧水区" }, + { "code": "320118", "name": "高淳区" } + ] + }, + { + "code": "3202", + "name": "无锡市", + "children": [ + { "code": "320205", "name": "锡山区" }, + { "code": "320206", "name": "惠山区" }, + { "code": "320211", "name": "滨湖区" }, + { "code": "320213", "name": "梁溪区" }, + { "code": "320214", "name": "新吴区" }, + { "code": "320281", "name": "江阴市" }, + { "code": "320282", "name": "宜兴市" } + ] + }, + { + "code": "3203", + "name": "徐州市", + "children": [ + { "code": "320302", "name": "鼓楼区" }, + { "code": "320303", "name": "云龙区" }, + { "code": "320305", "name": "贾汪区" }, + { "code": "320311", "name": "泉山区" }, + { "code": "320312", "name": "铜山区" }, + { "code": "320321", "name": "丰县" }, + { "code": "320322", "name": "沛县" }, + { "code": "320324", "name": "睢宁县" }, + { "code": "320371", "name": "徐州经济技术开发区" }, + { "code": "320381", "name": "新沂市" }, + { "code": "320382", "name": "邳州市" } + ] + }, + { + "code": "3204", + "name": "常州市", + "children": [ + { "code": "320402", "name": "天宁区" }, + { "code": "320404", "name": "钟楼区" }, + { "code": "320411", "name": "新北区" }, + { "code": "320412", "name": "武进区" }, + { "code": "320413", "name": "金坛区" }, + { "code": "320481", "name": "溧阳市" } + ] + }, + { + "code": "3205", + "name": "苏州市", + "children": [ + { "code": "320505", "name": "虎丘区" }, + { "code": "320506", "name": "吴中区" }, + { "code": "320507", "name": "相城区" }, + { "code": "320508", "name": "姑苏区" }, + { "code": "320509", "name": "吴江区" }, + { "code": "320571", "name": "苏州工业园区" }, + { "code": "320581", "name": "常熟市" }, + { "code": "320582", "name": "张家港市" }, + { "code": "320583", "name": "昆山市" }, + { "code": "320585", "name": "太仓市" } + ] + }, + { + "code": "3206", + "name": "南通市", + "children": [ + { "code": "320612", "name": "通州区" }, + { "code": "320613", "name": "崇川区" }, + { "code": "320614", "name": "海门区" }, + { "code": "320623", "name": "如东县" }, + { "code": "320671", "name": "南通经济技术开发区" }, + { "code": "320681", "name": "启东市" }, + { "code": "320682", "name": "如皋市" }, + { "code": "320685", "name": "海安市" } + ] + }, + { + "code": "3207", + "name": "连云港市", + "children": [ + { "code": "320703", "name": "连云区" }, + { "code": "320706", "name": "海州区" }, + { "code": "320707", "name": "赣榆区" }, + { "code": "320722", "name": "东海县" }, + { "code": "320723", "name": "灌云县" }, + { "code": "320724", "name": "灌南县" }, + { "code": "320771", "name": "连云港经济技术开发区" }, + { "code": "320772", "name": "连云港高新技术产业开发区" } + ] + }, + { + "code": "3208", + "name": "淮安市", + "children": [ + { "code": "320803", "name": "淮安区" }, + { "code": "320804", "name": "淮阴区" }, + { "code": "320812", "name": "清江浦区" }, + { "code": "320813", "name": "洪泽区" }, + { "code": "320826", "name": "涟水县" }, + { "code": "320830", "name": "盱眙县" }, + { "code": "320831", "name": "金湖县" }, + { "code": "320871", "name": "淮安经济技术开发区" } + ] + }, + { + "code": "3209", + "name": "盐城市", + "children": [ + { "code": "320902", "name": "亭湖区" }, + { "code": "320903", "name": "盐都区" }, + { "code": "320904", "name": "大丰区" }, + { "code": "320921", "name": "响水县" }, + { "code": "320922", "name": "滨海县" }, + { "code": "320923", "name": "阜宁县" }, + { "code": "320924", "name": "射阳县" }, + { "code": "320925", "name": "建湖县" }, + { "code": "320971", "name": "盐城经济技术开发区" }, + { "code": "320981", "name": "东台市" } + ] + }, + { + "code": "3210", + "name": "扬州市", + "children": [ + { "code": "321002", "name": "广陵区" }, + { "code": "321003", "name": "邗江区" }, + { "code": "321012", "name": "江都区" }, + { "code": "321023", "name": "宝应县" }, + { "code": "321071", "name": "扬州经济技术开发区" }, + { "code": "321081", "name": "仪征市" }, + { "code": "321084", "name": "高邮市" } + ] + }, + { + "code": "3211", + "name": "镇江市", + "children": [ + { "code": "321102", "name": "京口区" }, + { "code": "321111", "name": "润州区" }, + { "code": "321112", "name": "丹徒区" }, + { "code": "321171", "name": "镇江新区" }, + { "code": "321181", "name": "丹阳市" }, + { "code": "321182", "name": "扬中市" }, + { "code": "321183", "name": "句容市" } + ] + }, + { + "code": "3212", + "name": "泰州市", + "children": [ + { "code": "321202", "name": "海陵区" }, + { "code": "321203", "name": "高港区" }, + { "code": "321204", "name": "姜堰区" }, + { "code": "321271", "name": "泰州医药高新技术产业开发区" }, + { "code": "321281", "name": "兴化市" }, + { "code": "321282", "name": "靖江市" }, + { "code": "321283", "name": "泰兴市" } + ] + }, + { + "code": "3213", + "name": "宿迁市", + "children": [ + { "code": "321302", "name": "宿城区" }, + { "code": "321311", "name": "宿豫区" }, + { "code": "321322", "name": "沭阳县" }, + { "code": "321323", "name": "泗阳县" }, + { "code": "321324", "name": "泗洪县" }, + { "code": "321371", "name": "宿迁经济技术开发区" } + ] + } + ] + }, + { + "code": "33", + "name": "浙江省", + "children": [ + { + "code": "3301", + "name": "杭州市", + "children": [ + { "code": "330102", "name": "上城区" }, + { "code": "330105", "name": "拱墅区" }, + { "code": "330106", "name": "西湖区" }, + { "code": "330108", "name": "滨江区" }, + { "code": "330109", "name": "萧山区" }, + { "code": "330110", "name": "余杭区" }, + { "code": "330111", "name": "富阳区" }, + { "code": "330112", "name": "临安区" }, + { "code": "330113", "name": "临平区" }, + { "code": "330114", "name": "钱塘区" }, + { "code": "330122", "name": "桐庐县" }, + { "code": "330127", "name": "淳安县" }, + { "code": "330182", "name": "建德市" } + ] + }, + { + "code": "3302", + "name": "宁波市", + "children": [ + { "code": "330203", "name": "海曙区" }, + { "code": "330205", "name": "江北区" }, + { "code": "330206", "name": "北仑区" }, + { "code": "330211", "name": "镇海区" }, + { "code": "330212", "name": "鄞州区" }, + { "code": "330213", "name": "奉化区" }, + { "code": "330225", "name": "象山县" }, + { "code": "330226", "name": "宁海县" }, + { "code": "330281", "name": "余姚市" }, + { "code": "330282", "name": "慈溪市" } + ] + }, + { + "code": "3303", + "name": "温州市", + "children": [ + { "code": "330302", "name": "鹿城区" }, + { "code": "330303", "name": "龙湾区" }, + { "code": "330304", "name": "瓯海区" }, + { "code": "330305", "name": "洞头区" }, + { "code": "330324", "name": "永嘉县" }, + { "code": "330326", "name": "平阳县" }, + { "code": "330327", "name": "苍南县" }, + { "code": "330328", "name": "文成县" }, + { "code": "330329", "name": "泰顺县" }, + { "code": "330371", "name": "温州经济技术开发区" }, + { "code": "330381", "name": "瑞安市" }, + { "code": "330382", "name": "乐清市" }, + { "code": "330383", "name": "龙港市" } + ] + }, + { + "code": "3304", + "name": "嘉兴市", + "children": [ + { "code": "330402", "name": "南湖区" }, + { "code": "330411", "name": "秀洲区" }, + { "code": "330421", "name": "嘉善县" }, + { "code": "330424", "name": "海盐县" }, + { "code": "330481", "name": "海宁市" }, + { "code": "330482", "name": "平湖市" }, + { "code": "330483", "name": "桐乡市" } + ] + }, + { + "code": "3305", + "name": "湖州市", + "children": [ + { "code": "330502", "name": "吴兴区" }, + { "code": "330503", "name": "南浔区" }, + { "code": "330521", "name": "德清县" }, + { "code": "330522", "name": "长兴县" }, + { "code": "330523", "name": "安吉县" } + ] + }, + { + "code": "3306", + "name": "绍兴市", + "children": [ + { "code": "330602", "name": "越城区" }, + { "code": "330603", "name": "柯桥区" }, + { "code": "330604", "name": "上虞区" }, + { "code": "330624", "name": "新昌县" }, + { "code": "330681", "name": "诸暨市" }, + { "code": "330683", "name": "嵊州市" } + ] + }, + { + "code": "3307", + "name": "金华市", + "children": [ + { "code": "330702", "name": "婺城区" }, + { "code": "330703", "name": "金东区" }, + { "code": "330723", "name": "武义县" }, + { "code": "330726", "name": "浦江县" }, + { "code": "330727", "name": "磐安县" }, + { "code": "330781", "name": "兰溪市" }, + { "code": "330782", "name": "义乌市" }, + { "code": "330783", "name": "东阳市" }, + { "code": "330784", "name": "永康市" } + ] + }, + { + "code": "3308", + "name": "衢州市", + "children": [ + { "code": "330802", "name": "柯城区" }, + { "code": "330803", "name": "衢江区" }, + { "code": "330822", "name": "常山县" }, + { "code": "330824", "name": "开化县" }, + { "code": "330825", "name": "龙游县" }, + { "code": "330881", "name": "江山市" } + ] + }, + { + "code": "3309", + "name": "舟山市", + "children": [ + { "code": "330902", "name": "定海区" }, + { "code": "330903", "name": "普陀区" }, + { "code": "330921", "name": "岱山县" }, + { "code": "330922", "name": "嵊泗县" } + ] + }, + { + "code": "3310", + "name": "台州市", + "children": [ + { "code": "331002", "name": "椒江区" }, + { "code": "331003", "name": "黄岩区" }, + { "code": "331004", "name": "路桥区" }, + { "code": "331022", "name": "三门县" }, + { "code": "331023", "name": "天台县" }, + { "code": "331024", "name": "仙居县" }, + { "code": "331081", "name": "温岭市" }, + { "code": "331082", "name": "临海市" }, + { "code": "331083", "name": "玉环市" } + ] + }, + { + "code": "3311", + "name": "丽水市", + "children": [ + { "code": "331102", "name": "莲都区" }, + { "code": "331121", "name": "青田县" }, + { "code": "331122", "name": "缙云县" }, + { "code": "331123", "name": "遂昌县" }, + { "code": "331124", "name": "松阳县" }, + { "code": "331125", "name": "云和县" }, + { "code": "331126", "name": "庆元县" }, + { "code": "331127", "name": "景宁畲族自治县" }, + { "code": "331181", "name": "龙泉市" } + ] + } + ] + }, + { + "code": "34", + "name": "安徽省", + "children": [ + { + "code": "3401", + "name": "合肥市", + "children": [ + { "code": "340102", "name": "瑶海区" }, + { "code": "340103", "name": "庐阳区" }, + { "code": "340104", "name": "蜀山区" }, + { "code": "340111", "name": "包河区" }, + { "code": "340121", "name": "长丰县" }, + { "code": "340122", "name": "肥东县" }, + { "code": "340123", "name": "肥西县" }, + { "code": "340124", "name": "庐江县" }, + { "code": "340171", "name": "合肥高新技术产业开发区" }, + { "code": "340172", "name": "合肥经济技术开发区" }, + { "code": "340173", "name": "合肥新站高新技术产业开发区" }, + { "code": "340181", "name": "巢湖市" } + ] + }, + { + "code": "3402", + "name": "芜湖市", + "children": [ + { "code": "340202", "name": "镜湖区" }, + { "code": "340207", "name": "鸠江区" }, + { "code": "340209", "name": "弋江区" }, + { "code": "340210", "name": "湾沚区" }, + { "code": "340212", "name": "繁昌区" }, + { "code": "340223", "name": "南陵县" }, + { "code": "340271", "name": "芜湖经济技术开发区" }, + { "code": "340272", "name": "安徽芜湖三山经济开发区" }, + { "code": "340281", "name": "无为市" } + ] + }, + { + "code": "3403", + "name": "蚌埠市", + "children": [ + { "code": "340302", "name": "龙子湖区" }, + { "code": "340303", "name": "蚌山区" }, + { "code": "340304", "name": "禹会区" }, + { "code": "340311", "name": "淮上区" }, + { "code": "340321", "name": "怀远县" }, + { "code": "340322", "name": "五河县" }, + { "code": "340323", "name": "固镇县" }, + { "code": "340371", "name": "蚌埠市高新技术开发区" }, + { "code": "340372", "name": "蚌埠市经济开发区" } + ] + }, + { + "code": "3404", + "name": "淮南市", + "children": [ + { "code": "340402", "name": "大通区" }, + { "code": "340403", "name": "田家庵区" }, + { "code": "340404", "name": "谢家集区" }, + { "code": "340405", "name": "八公山区" }, + { "code": "340406", "name": "潘集区" }, + { "code": "340421", "name": "凤台县" }, + { "code": "340422", "name": "寿县" } + ] + }, + { + "code": "3405", + "name": "马鞍山市", + "children": [ + { "code": "340503", "name": "花山区" }, + { "code": "340504", "name": "雨山区" }, + { "code": "340506", "name": "博望区" }, + { "code": "340521", "name": "当涂县" }, + { "code": "340522", "name": "含山县" }, + { "code": "340523", "name": "和县" } + ] + }, + { + "code": "3406", + "name": "淮北市", + "children": [ + { "code": "340602", "name": "杜集区" }, + { "code": "340603", "name": "相山区" }, + { "code": "340604", "name": "烈山区" }, + { "code": "340621", "name": "濉溪县" } + ] + }, + { + "code": "3407", + "name": "铜陵市", + "children": [ + { "code": "340705", "name": "铜官区" }, + { "code": "340706", "name": "义安区" }, + { "code": "340711", "name": "郊区" }, + { "code": "340722", "name": "枞阳县" } + ] + }, + { + "code": "3408", + "name": "安庆市", + "children": [ + { "code": "340802", "name": "迎江区" }, + { "code": "340803", "name": "大观区" }, + { "code": "340811", "name": "宜秀区" }, + { "code": "340822", "name": "怀宁县" }, + { "code": "340825", "name": "太湖县" }, + { "code": "340826", "name": "宿松县" }, + { "code": "340827", "name": "望江县" }, + { "code": "340828", "name": "岳西县" }, + { "code": "340871", "name": "安徽安庆经济开发区" }, + { "code": "340881", "name": "桐城市" }, + { "code": "340882", "name": "潜山市" } + ] + }, + { + "code": "3410", + "name": "黄山市", + "children": [ + { "code": "341002", "name": "屯溪区" }, + { "code": "341003", "name": "黄山区" }, + { "code": "341004", "name": "徽州区" }, + { "code": "341021", "name": "歙县" }, + { "code": "341022", "name": "休宁县" }, + { "code": "341023", "name": "黟县" }, + { "code": "341024", "name": "祁门县" } + ] + }, + { + "code": "3411", + "name": "滁州市", + "children": [ + { "code": "341102", "name": "琅琊区" }, + { "code": "341103", "name": "南谯区" }, + { "code": "341122", "name": "来安县" }, + { "code": "341124", "name": "全椒县" }, + { "code": "341125", "name": "定远县" }, + { "code": "341126", "name": "凤阳县" }, + { "code": "341171", "name": "中新苏滁高新技术产业开发区" }, + { "code": "341172", "name": "滁州经济技术开发区" }, + { "code": "341181", "name": "天长市" }, + { "code": "341182", "name": "明光市" } + ] + }, + { + "code": "3412", + "name": "阜阳市", + "children": [ + { "code": "341202", "name": "颍州区" }, + { "code": "341203", "name": "颍东区" }, + { "code": "341204", "name": "颍泉区" }, + { "code": "341221", "name": "临泉县" }, + { "code": "341222", "name": "太和县" }, + { "code": "341225", "name": "阜南县" }, + { "code": "341226", "name": "颍上县" }, + { "code": "341271", "name": "阜阳合肥现代产业园区" }, + { "code": "341272", "name": "阜阳经济技术开发区" }, + { "code": "341282", "name": "界首市" } + ] + }, + { + "code": "3413", + "name": "宿州市", + "children": [ + { "code": "341302", "name": "埇桥区" }, + { "code": "341321", "name": "砀山县" }, + { "code": "341322", "name": "萧县" }, + { "code": "341323", "name": "灵璧县" }, + { "code": "341324", "name": "泗县" }, + { "code": "341371", "name": "宿州马鞍山现代产业园区" }, + { "code": "341372", "name": "宿州经济技术开发区" } + ] + }, + { + "code": "3415", + "name": "六安市", + "children": [ + { "code": "341502", "name": "金安区" }, + { "code": "341503", "name": "裕安区" }, + { "code": "341504", "name": "叶集区" }, + { "code": "341522", "name": "霍邱县" }, + { "code": "341523", "name": "舒城县" }, + { "code": "341524", "name": "金寨县" }, + { "code": "341525", "name": "霍山县" } + ] + }, + { + "code": "3416", + "name": "亳州市", + "children": [ + { "code": "341602", "name": "谯城区" }, + { "code": "341621", "name": "涡阳县" }, + { "code": "341622", "name": "蒙城县" }, + { "code": "341623", "name": "利辛县" } + ] + }, + { + "code": "3417", + "name": "池州市", + "children": [ + { "code": "341702", "name": "贵池区" }, + { "code": "341721", "name": "东至县" }, + { "code": "341722", "name": "石台县" }, + { "code": "341723", "name": "青阳县" } + ] + }, + { + "code": "3418", + "name": "宣城市", + "children": [ + { "code": "341802", "name": "宣州区" }, + { "code": "341821", "name": "郎溪县" }, + { "code": "341823", "name": "泾县" }, + { "code": "341824", "name": "绩溪县" }, + { "code": "341825", "name": "旌德县" }, + { "code": "341871", "name": "宣城市经济开发区" }, + { "code": "341881", "name": "宁国市" }, + { "code": "341882", "name": "广德市" } + ] + } + ] + }, + { + "code": "35", + "name": "福建省", + "children": [ + { + "code": "3501", + "name": "福州市", + "children": [ + { "code": "350102", "name": "鼓楼区" }, + { "code": "350103", "name": "台江区" }, + { "code": "350104", "name": "仓山区" }, + { "code": "350105", "name": "马尾区" }, + { "code": "350111", "name": "晋安区" }, + { "code": "350112", "name": "长乐区" }, + { "code": "350121", "name": "闽侯县" }, + { "code": "350122", "name": "连江县" }, + { "code": "350123", "name": "罗源县" }, + { "code": "350124", "name": "闽清县" }, + { "code": "350125", "name": "永泰县" }, + { "code": "350128", "name": "平潭县" }, + { "code": "350181", "name": "福清市" } + ] + }, + { + "code": "3502", + "name": "厦门市", + "children": [ + { "code": "350203", "name": "思明区" }, + { "code": "350205", "name": "海沧区" }, + { "code": "350206", "name": "湖里区" }, + { "code": "350211", "name": "集美区" }, + { "code": "350212", "name": "同安区" }, + { "code": "350213", "name": "翔安区" } + ] + }, + { + "code": "3503", + "name": "莆田市", + "children": [ + { "code": "350302", "name": "城厢区" }, + { "code": "350303", "name": "涵江区" }, + { "code": "350304", "name": "荔城区" }, + { "code": "350305", "name": "秀屿区" }, + { "code": "350322", "name": "仙游县" } + ] + }, + { + "code": "3504", + "name": "三明市", + "children": [ + { "code": "350404", "name": "三元区" }, + { "code": "350405", "name": "沙县区" }, + { "code": "350421", "name": "明溪县" }, + { "code": "350423", "name": "清流县" }, + { "code": "350424", "name": "宁化县" }, + { "code": "350425", "name": "大田县" }, + { "code": "350426", "name": "尤溪县" }, + { "code": "350428", "name": "将乐县" }, + { "code": "350429", "name": "泰宁县" }, + { "code": "350430", "name": "建宁县" }, + { "code": "350481", "name": "永安市" } + ] + }, + { + "code": "3505", + "name": "泉州市", + "children": [ + { "code": "350502", "name": "鲤城区" }, + { "code": "350503", "name": "丰泽区" }, + { "code": "350504", "name": "洛江区" }, + { "code": "350505", "name": "泉港区" }, + { "code": "350521", "name": "惠安县" }, + { "code": "350524", "name": "安溪县" }, + { "code": "350525", "name": "永春县" }, + { "code": "350526", "name": "德化县" }, + { "code": "350527", "name": "金门县" }, + { "code": "350581", "name": "石狮市" }, + { "code": "350582", "name": "晋江市" }, + { "code": "350583", "name": "南安市" } + ] + }, + { + "code": "3506", + "name": "漳州市", + "children": [ + { "code": "350602", "name": "芗城区" }, + { "code": "350603", "name": "龙文区" }, + { "code": "350604", "name": "龙海区" }, + { "code": "350605", "name": "长泰区" }, + { "code": "350622", "name": "云霄县" }, + { "code": "350623", "name": "漳浦县" }, + { "code": "350624", "name": "诏安县" }, + { "code": "350626", "name": "东山县" }, + { "code": "350627", "name": "南靖县" }, + { "code": "350628", "name": "平和县" }, + { "code": "350629", "name": "华安县" } + ] + }, + { + "code": "3507", + "name": "南平市", + "children": [ + { "code": "350702", "name": "延平区" }, + { "code": "350703", "name": "建阳区" }, + { "code": "350721", "name": "顺昌县" }, + { "code": "350722", "name": "浦城县" }, + { "code": "350723", "name": "光泽县" }, + { "code": "350724", "name": "松溪县" }, + { "code": "350725", "name": "政和县" }, + { "code": "350781", "name": "邵武市" }, + { "code": "350782", "name": "武夷山市" }, + { "code": "350783", "name": "建瓯市" } + ] + }, + { + "code": "3508", + "name": "龙岩市", + "children": [ + { "code": "350802", "name": "新罗区" }, + { "code": "350803", "name": "永定区" }, + { "code": "350821", "name": "长汀县" }, + { "code": "350823", "name": "上杭县" }, + { "code": "350824", "name": "武平县" }, + { "code": "350825", "name": "连城县" }, + { "code": "350881", "name": "漳平市" } + ] + }, + { + "code": "3509", + "name": "宁德市", + "children": [ + { "code": "350902", "name": "蕉城区" }, + { "code": "350921", "name": "霞浦县" }, + { "code": "350922", "name": "古田县" }, + { "code": "350923", "name": "屏南县" }, + { "code": "350924", "name": "寿宁县" }, + { "code": "350925", "name": "周宁县" }, + { "code": "350926", "name": "柘荣县" }, + { "code": "350981", "name": "福安市" }, + { "code": "350982", "name": "福鼎市" } + ] + } + ] + }, + { + "code": "36", + "name": "江西省", + "children": [ + { + "code": "3601", + "name": "南昌市", + "children": [ + { "code": "360102", "name": "东湖区" }, + { "code": "360103", "name": "西湖区" }, + { "code": "360104", "name": "青云谱区" }, + { "code": "360111", "name": "青山湖区" }, + { "code": "360112", "name": "新建区" }, + { "code": "360113", "name": "红谷滩区" }, + { "code": "360121", "name": "南昌县" }, + { "code": "360123", "name": "安义县" }, + { "code": "360124", "name": "进贤县" } + ] + }, + { + "code": "3602", + "name": "景德镇市", + "children": [ + { "code": "360202", "name": "昌江区" }, + { "code": "360203", "name": "珠山区" }, + { "code": "360222", "name": "浮梁县" }, + { "code": "360281", "name": "乐平市" } + ] + }, + { + "code": "3603", + "name": "萍乡市", + "children": [ + { "code": "360302", "name": "安源区" }, + { "code": "360313", "name": "湘东区" }, + { "code": "360321", "name": "莲花县" }, + { "code": "360322", "name": "上栗县" }, + { "code": "360323", "name": "芦溪县" } + ] + }, + { + "code": "3604", + "name": "九江市", + "children": [ + { "code": "360402", "name": "濂溪区" }, + { "code": "360403", "name": "浔阳区" }, + { "code": "360404", "name": "柴桑区" }, + { "code": "360423", "name": "武宁县" }, + { "code": "360424", "name": "修水县" }, + { "code": "360425", "name": "永修县" }, + { "code": "360426", "name": "德安县" }, + { "code": "360428", "name": "都昌县" }, + { "code": "360429", "name": "湖口县" }, + { "code": "360430", "name": "彭泽县" }, + { "code": "360481", "name": "瑞昌市" }, + { "code": "360482", "name": "共青城市" }, + { "code": "360483", "name": "庐山市" } + ] + }, + { + "code": "3605", + "name": "新余市", + "children": [ + { "code": "360502", "name": "渝水区" }, + { "code": "360521", "name": "分宜县" } + ] + }, + { + "code": "3606", + "name": "鹰潭市", + "children": [ + { "code": "360602", "name": "月湖区" }, + { "code": "360603", "name": "余江区" }, + { "code": "360681", "name": "贵溪市" } + ] + }, + { + "code": "3607", + "name": "赣州市", + "children": [ + { "code": "360702", "name": "章贡区" }, + { "code": "360703", "name": "南康区" }, + { "code": "360704", "name": "赣县区" }, + { "code": "360722", "name": "信丰县" }, + { "code": "360723", "name": "大余县" }, + { "code": "360724", "name": "上犹县" }, + { "code": "360725", "name": "崇义县" }, + { "code": "360726", "name": "安远县" }, + { "code": "360728", "name": "定南县" }, + { "code": "360729", "name": "全南县" }, + { "code": "360730", "name": "宁都县" }, + { "code": "360731", "name": "于都县" }, + { "code": "360732", "name": "兴国县" }, + { "code": "360733", "name": "会昌县" }, + { "code": "360734", "name": "寻乌县" }, + { "code": "360735", "name": "石城县" }, + { "code": "360781", "name": "瑞金市" }, + { "code": "360783", "name": "龙南市" } + ] + }, + { + "code": "3608", + "name": "吉安市", + "children": [ + { "code": "360802", "name": "吉州区" }, + { "code": "360803", "name": "青原区" }, + { "code": "360821", "name": "吉安县" }, + { "code": "360822", "name": "吉水县" }, + { "code": "360823", "name": "峡江县" }, + { "code": "360824", "name": "新干县" }, + { "code": "360825", "name": "永丰县" }, + { "code": "360826", "name": "泰和县" }, + { "code": "360827", "name": "遂川县" }, + { "code": "360828", "name": "万安县" }, + { "code": "360829", "name": "安福县" }, + { "code": "360830", "name": "永新县" }, + { "code": "360881", "name": "井冈山市" } + ] + }, + { + "code": "3609", + "name": "宜春市", + "children": [ + { "code": "360902", "name": "袁州区" }, + { "code": "360921", "name": "奉新县" }, + { "code": "360922", "name": "万载县" }, + { "code": "360923", "name": "上高县" }, + { "code": "360924", "name": "宜丰县" }, + { "code": "360925", "name": "靖安县" }, + { "code": "360926", "name": "铜鼓县" }, + { "code": "360981", "name": "丰城市" }, + { "code": "360982", "name": "樟树市" }, + { "code": "360983", "name": "高安市" } + ] + }, + { + "code": "3610", + "name": "抚州市", + "children": [ + { "code": "361002", "name": "临川区" }, + { "code": "361003", "name": "东乡区" }, + { "code": "361021", "name": "南城县" }, + { "code": "361022", "name": "黎川县" }, + { "code": "361023", "name": "南丰县" }, + { "code": "361024", "name": "崇仁县" }, + { "code": "361025", "name": "乐安县" }, + { "code": "361026", "name": "宜黄县" }, + { "code": "361027", "name": "金溪县" }, + { "code": "361028", "name": "资溪县" }, + { "code": "361030", "name": "广昌县" } + ] + }, + { + "code": "3611", + "name": "上饶市", + "children": [ + { "code": "361102", "name": "信州区" }, + { "code": "361103", "name": "广丰区" }, + { "code": "361104", "name": "广信区" }, + { "code": "361123", "name": "玉山县" }, + { "code": "361124", "name": "铅山县" }, + { "code": "361125", "name": "横峰县" }, + { "code": "361126", "name": "弋阳县" }, + { "code": "361127", "name": "余干县" }, + { "code": "361128", "name": "鄱阳县" }, + { "code": "361129", "name": "万年县" }, + { "code": "361130", "name": "婺源县" }, + { "code": "361181", "name": "德兴市" } + ] + } + ] + }, + { + "code": "37", + "name": "山东省", + "children": [ + { + "code": "3701", + "name": "济南市", + "children": [ + { "code": "370102", "name": "历下区" }, + { "code": "370103", "name": "市中区" }, + { "code": "370104", "name": "槐荫区" }, + { "code": "370105", "name": "天桥区" }, + { "code": "370112", "name": "历城区" }, + { "code": "370113", "name": "长清区" }, + { "code": "370114", "name": "章丘区" }, + { "code": "370115", "name": "济阳区" }, + { "code": "370116", "name": "莱芜区" }, + { "code": "370117", "name": "钢城区" }, + { "code": "370124", "name": "平阴县" }, + { "code": "370126", "name": "商河县" }, + { "code": "370171", "name": "济南高新技术产业开发区" } + ] + }, + { + "code": "3702", + "name": "青岛市", + "children": [ + { "code": "370202", "name": "市南区" }, + { "code": "370203", "name": "市北区" }, + { "code": "370211", "name": "黄岛区" }, + { "code": "370212", "name": "崂山区" }, + { "code": "370213", "name": "李沧区" }, + { "code": "370214", "name": "城阳区" }, + { "code": "370215", "name": "即墨区" }, + { "code": "370271", "name": "青岛高新技术产业开发区" }, + { "code": "370281", "name": "胶州市" }, + { "code": "370283", "name": "平度市" }, + { "code": "370285", "name": "莱西市" } + ] + }, + { + "code": "3703", + "name": "淄博市", + "children": [ + { "code": "370302", "name": "淄川区" }, + { "code": "370303", "name": "张店区" }, + { "code": "370304", "name": "博山区" }, + { "code": "370305", "name": "临淄区" }, + { "code": "370306", "name": "周村区" }, + { "code": "370321", "name": "桓台县" }, + { "code": "370322", "name": "高青县" }, + { "code": "370323", "name": "沂源县" } + ] + }, + { + "code": "3704", + "name": "枣庄市", + "children": [ + { "code": "370402", "name": "市中区" }, + { "code": "370403", "name": "薛城区" }, + { "code": "370404", "name": "峄城区" }, + { "code": "370405", "name": "台儿庄区" }, + { "code": "370406", "name": "山亭区" }, + { "code": "370481", "name": "滕州市" } + ] + }, + { + "code": "3705", + "name": "东营市", + "children": [ + { "code": "370502", "name": "东营区" }, + { "code": "370503", "name": "河口区" }, + { "code": "370505", "name": "垦利区" }, + { "code": "370522", "name": "利津县" }, + { "code": "370523", "name": "广饶县" }, + { "code": "370571", "name": "东营经济技术开发区" }, + { "code": "370572", "name": "东营港经济开发区" } + ] + }, + { + "code": "3706", + "name": "烟台市", + "children": [ + { "code": "370602", "name": "芝罘区" }, + { "code": "370611", "name": "福山区" }, + { "code": "370612", "name": "牟平区" }, + { "code": "370613", "name": "莱山区" }, + { "code": "370614", "name": "蓬莱区" }, + { "code": "370671", "name": "烟台高新技术产业开发区" }, + { "code": "370672", "name": "烟台经济技术开发区" }, + { "code": "370681", "name": "龙口市" }, + { "code": "370682", "name": "莱阳市" }, + { "code": "370683", "name": "莱州市" }, + { "code": "370685", "name": "招远市" }, + { "code": "370686", "name": "栖霞市" }, + { "code": "370687", "name": "海阳市" } + ] + }, + { + "code": "3707", + "name": "潍坊市", + "children": [ + { "code": "370702", "name": "潍城区" }, + { "code": "370703", "name": "寒亭区" }, + { "code": "370704", "name": "坊子区" }, + { "code": "370705", "name": "奎文区" }, + { "code": "370724", "name": "临朐县" }, + { "code": "370725", "name": "昌乐县" }, + { "code": "370772", "name": "潍坊滨海经济技术开发区" }, + { "code": "370781", "name": "青州市" }, + { "code": "370782", "name": "诸城市" }, + { "code": "370783", "name": "寿光市" }, + { "code": "370784", "name": "安丘市" }, + { "code": "370785", "name": "高密市" }, + { "code": "370786", "name": "昌邑市" } + ] + }, + { + "code": "3708", + "name": "济宁市", + "children": [ + { "code": "370811", "name": "任城区" }, + { "code": "370812", "name": "兖州区" }, + { "code": "370826", "name": "微山县" }, + { "code": "370827", "name": "鱼台县" }, + { "code": "370828", "name": "金乡县" }, + { "code": "370829", "name": "嘉祥县" }, + { "code": "370830", "name": "汶上县" }, + { "code": "370831", "name": "泗水县" }, + { "code": "370832", "name": "梁山县" }, + { "code": "370871", "name": "济宁高新技术产业开发区" }, + { "code": "370881", "name": "曲阜市" }, + { "code": "370883", "name": "邹城市" } + ] + }, + { + "code": "3709", + "name": "泰安市", + "children": [ + { "code": "370902", "name": "泰山区" }, + { "code": "370911", "name": "岱岳区" }, + { "code": "370921", "name": "宁阳县" }, + { "code": "370923", "name": "东平县" }, + { "code": "370982", "name": "新泰市" }, + { "code": "370983", "name": "肥城市" } + ] + }, + { + "code": "3710", + "name": "威海市", + "children": [ + { "code": "371002", "name": "环翠区" }, + { "code": "371003", "name": "文登区" }, + { "code": "371071", "name": "威海火炬高技术产业开发区" }, + { "code": "371072", "name": "威海经济技术开发区" }, + { "code": "371073", "name": "威海临港经济技术开发区" }, + { "code": "371082", "name": "荣成市" }, + { "code": "371083", "name": "乳山市" } + ] + }, + { + "code": "3711", + "name": "日照市", + "children": [ + { "code": "371102", "name": "东港区" }, + { "code": "371103", "name": "岚山区" }, + { "code": "371121", "name": "五莲县" }, + { "code": "371122", "name": "莒县" }, + { "code": "371171", "name": "日照经济技术开发区" } + ] + }, + { + "code": "3713", + "name": "临沂市", + "children": [ + { "code": "371302", "name": "兰山区" }, + { "code": "371311", "name": "罗庄区" }, + { "code": "371312", "name": "河东区" }, + { "code": "371321", "name": "沂南县" }, + { "code": "371322", "name": "郯城县" }, + { "code": "371323", "name": "沂水县" }, + { "code": "371324", "name": "兰陵县" }, + { "code": "371325", "name": "费县" }, + { "code": "371326", "name": "平邑县" }, + { "code": "371327", "name": "莒南县" }, + { "code": "371328", "name": "蒙阴县" }, + { "code": "371329", "name": "临沭县" }, + { "code": "371371", "name": "临沂高新技术产业开发区" } + ] + }, + { + "code": "3714", + "name": "德州市", + "children": [ + { "code": "371402", "name": "德城区" }, + { "code": "371403", "name": "陵城区" }, + { "code": "371422", "name": "宁津县" }, + { "code": "371423", "name": "庆云县" }, + { "code": "371424", "name": "临邑县" }, + { "code": "371425", "name": "齐河县" }, + { "code": "371426", "name": "平原县" }, + { "code": "371427", "name": "夏津县" }, + { "code": "371428", "name": "武城县" }, + { "code": "371471", "name": "德州经济技术开发区" }, + { "code": "371472", "name": "德州运河经济开发区" }, + { "code": "371481", "name": "乐陵市" }, + { "code": "371482", "name": "禹城市" } + ] + }, + { + "code": "3715", + "name": "聊城市", + "children": [ + { "code": "371502", "name": "东昌府区" }, + { "code": "371503", "name": "茌平区" }, + { "code": "371521", "name": "阳谷县" }, + { "code": "371522", "name": "莘县" }, + { "code": "371524", "name": "东阿县" }, + { "code": "371525", "name": "冠县" }, + { "code": "371526", "name": "高唐县" }, + { "code": "371581", "name": "临清市" } + ] + }, + { + "code": "3716", + "name": "滨州市", + "children": [ + { "code": "371602", "name": "滨城区" }, + { "code": "371603", "name": "沾化区" }, + { "code": "371621", "name": "惠民县" }, + { "code": "371622", "name": "阳信县" }, + { "code": "371623", "name": "无棣县" }, + { "code": "371625", "name": "博兴县" }, + { "code": "371681", "name": "邹平市" } + ] + }, + { + "code": "3717", + "name": "菏泽市", + "children": [ + { "code": "371702", "name": "牡丹区" }, + { "code": "371703", "name": "定陶区" }, + { "code": "371721", "name": "曹县" }, + { "code": "371722", "name": "单县" }, + { "code": "371723", "name": "成武县" }, + { "code": "371724", "name": "巨野县" }, + { "code": "371725", "name": "郓城县" }, + { "code": "371726", "name": "鄄城县" }, + { "code": "371728", "name": "东明县" }, + { "code": "371771", "name": "菏泽经济技术开发区" }, + { "code": "371772", "name": "菏泽高新技术开发区" } + ] + } + ] + }, + { + "code": "41", + "name": "河南省", + "children": [ + { + "code": "4101", + "name": "郑州市", + "children": [ + { "code": "410102", "name": "中原区" }, + { "code": "410103", "name": "二七区" }, + { "code": "410104", "name": "管城回族区" }, + { "code": "410105", "name": "金水区" }, + { "code": "410106", "name": "上街区" }, + { "code": "410108", "name": "惠济区" }, + { "code": "410122", "name": "中牟县" }, + { "code": "410171", "name": "郑州经济技术开发区" }, + { "code": "410172", "name": "郑州高新技术产业开发区" }, + { "code": "410173", "name": "郑州航空港经济综合实验区" }, + { "code": "410181", "name": "巩义市" }, + { "code": "410182", "name": "荥阳市" }, + { "code": "410183", "name": "新密市" }, + { "code": "410184", "name": "新郑市" }, + { "code": "410185", "name": "登封市" } + ] + }, + { + "code": "4102", + "name": "开封市", + "children": [ + { "code": "410202", "name": "龙亭区" }, + { "code": "410203", "name": "顺河回族区" }, + { "code": "410204", "name": "鼓楼区" }, + { "code": "410205", "name": "禹王台区" }, + { "code": "410212", "name": "祥符区" }, + { "code": "410221", "name": "杞县" }, + { "code": "410222", "name": "通许县" }, + { "code": "410223", "name": "尉氏县" }, + { "code": "410225", "name": "兰考县" } + ] + }, + { + "code": "4103", + "name": "洛阳市", + "children": [ + { "code": "410302", "name": "老城区" }, + { "code": "410303", "name": "西工区" }, + { "code": "410304", "name": "瀍河回族区" }, + { "code": "410305", "name": "涧西区" }, + { "code": "410307", "name": "偃师区" }, + { "code": "410308", "name": "孟津区" }, + { "code": "410311", "name": "洛龙区" }, + { "code": "410323", "name": "新安县" }, + { "code": "410324", "name": "栾川县" }, + { "code": "410325", "name": "嵩县" }, + { "code": "410326", "name": "汝阳县" }, + { "code": "410327", "name": "宜阳县" }, + { "code": "410328", "name": "洛宁县" }, + { "code": "410329", "name": "伊川县" }, + { "code": "410371", "name": "洛阳高新技术产业开发区" } + ] + }, + { + "code": "4104", + "name": "平顶山市", + "children": [ + { "code": "410402", "name": "新华区" }, + { "code": "410403", "name": "卫东区" }, + { "code": "410404", "name": "石龙区" }, + { "code": "410411", "name": "湛河区" }, + { "code": "410421", "name": "宝丰县" }, + { "code": "410422", "name": "叶县" }, + { "code": "410423", "name": "鲁山县" }, + { "code": "410425", "name": "郏县" }, + { "code": "410471", "name": "平顶山高新技术产业开发区" }, + { "code": "410472", "name": "平顶山市城乡一体化示范区" }, + { "code": "410481", "name": "舞钢市" }, + { "code": "410482", "name": "汝州市" } + ] + }, + { + "code": "4105", + "name": "安阳市", + "children": [ + { "code": "410502", "name": "文峰区" }, + { "code": "410503", "name": "北关区" }, + { "code": "410505", "name": "殷都区" }, + { "code": "410506", "name": "龙安区" }, + { "code": "410522", "name": "安阳县" }, + { "code": "410523", "name": "汤阴县" }, + { "code": "410526", "name": "滑县" }, + { "code": "410527", "name": "内黄县" }, + { "code": "410571", "name": "安阳高新技术产业开发区" }, + { "code": "410581", "name": "林州市" } + ] + }, + { + "code": "4106", + "name": "鹤壁市", + "children": [ + { "code": "410602", "name": "鹤山区" }, + { "code": "410603", "name": "山城区" }, + { "code": "410611", "name": "淇滨区" }, + { "code": "410621", "name": "浚县" }, + { "code": "410622", "name": "淇县" }, + { "code": "410671", "name": "鹤壁经济技术开发区" } + ] + }, + { + "code": "4107", + "name": "新乡市", + "children": [ + { "code": "410702", "name": "红旗区" }, + { "code": "410703", "name": "卫滨区" }, + { "code": "410704", "name": "凤泉区" }, + { "code": "410711", "name": "牧野区" }, + { "code": "410721", "name": "新乡县" }, + { "code": "410724", "name": "获嘉县" }, + { "code": "410725", "name": "原阳县" }, + { "code": "410726", "name": "延津县" }, + { "code": "410727", "name": "封丘县" }, + { "code": "410771", "name": "新乡高新技术产业开发区" }, + { "code": "410772", "name": "新乡经济技术开发区" }, + { "code": "410773", "name": "新乡市平原城乡一体化示范区" }, + { "code": "410781", "name": "卫辉市" }, + { "code": "410782", "name": "辉县市" }, + { "code": "410783", "name": "长垣市" } + ] + }, + { + "code": "4108", + "name": "焦作市", + "children": [ + { "code": "410802", "name": "解放区" }, + { "code": "410803", "name": "中站区" }, + { "code": "410804", "name": "马村区" }, + { "code": "410811", "name": "山阳区" }, + { "code": "410821", "name": "修武县" }, + { "code": "410822", "name": "博爱县" }, + { "code": "410823", "name": "武陟县" }, + { "code": "410825", "name": "温县" }, + { "code": "410871", "name": "焦作城乡一体化示范区" }, + { "code": "410882", "name": "沁阳市" }, + { "code": "410883", "name": "孟州市" } + ] + }, + { + "code": "4109", + "name": "濮阳市", + "children": [ + { "code": "410902", "name": "华龙区" }, + { "code": "410922", "name": "清丰县" }, + { "code": "410923", "name": "南乐县" }, + { "code": "410926", "name": "范县" }, + { "code": "410927", "name": "台前县" }, + { "code": "410928", "name": "濮阳县" }, + { "code": "410971", "name": "河南濮阳工业园区" }, + { "code": "410972", "name": "濮阳经济技术开发区" } + ] + }, + { + "code": "4110", + "name": "许昌市", + "children": [ + { "code": "411002", "name": "魏都区" }, + { "code": "411003", "name": "建安区" }, + { "code": "411024", "name": "鄢陵县" }, + { "code": "411025", "name": "襄城县" }, + { "code": "411071", "name": "许昌经济技术开发区" }, + { "code": "411081", "name": "禹州市" }, + { "code": "411082", "name": "长葛市" } + ] + }, + { + "code": "4111", + "name": "漯河市", + "children": [ + { "code": "411102", "name": "源汇区" }, + { "code": "411103", "name": "郾城区" }, + { "code": "411104", "name": "召陵区" }, + { "code": "411121", "name": "舞阳县" }, + { "code": "411122", "name": "临颍县" }, + { "code": "411171", "name": "漯河经济技术开发区" } + ] + }, + { + "code": "4112", + "name": "三门峡市", + "children": [ + { "code": "411202", "name": "湖滨区" }, + { "code": "411203", "name": "陕州区" }, + { "code": "411221", "name": "渑池县" }, + { "code": "411224", "name": "卢氏县" }, + { "code": "411271", "name": "河南三门峡经济开发区" }, + { "code": "411281", "name": "义马市" }, + { "code": "411282", "name": "灵宝市" } + ] + }, + { + "code": "4113", + "name": "南阳市", + "children": [ + { "code": "411302", "name": "宛城区" }, + { "code": "411303", "name": "卧龙区" }, + { "code": "411321", "name": "南召县" }, + { "code": "411322", "name": "方城县" }, + { "code": "411323", "name": "西峡县" }, + { "code": "411324", "name": "镇平县" }, + { "code": "411325", "name": "内乡县" }, + { "code": "411326", "name": "淅川县" }, + { "code": "411327", "name": "社旗县" }, + { "code": "411328", "name": "唐河县" }, + { "code": "411329", "name": "新野县" }, + { "code": "411330", "name": "桐柏县" }, + { "code": "411371", "name": "南阳高新技术产业开发区" }, + { "code": "411372", "name": "南阳市城乡一体化示范区" }, + { "code": "411381", "name": "邓州市" } + ] + }, + { + "code": "4114", + "name": "商丘市", + "children": [ + { "code": "411402", "name": "梁园区" }, + { "code": "411403", "name": "睢阳区" }, + { "code": "411421", "name": "民权县" }, + { "code": "411422", "name": "睢县" }, + { "code": "411423", "name": "宁陵县" }, + { "code": "411424", "name": "柘城县" }, + { "code": "411425", "name": "虞城县" }, + { "code": "411426", "name": "夏邑县" }, + { "code": "411471", "name": "豫东综合物流产业聚集区" }, + { "code": "411472", "name": "河南商丘经济开发区" }, + { "code": "411481", "name": "永城市" } + ] + }, + { + "code": "4115", + "name": "信阳市", + "children": [ + { "code": "411502", "name": "浉河区" }, + { "code": "411503", "name": "平桥区" }, + { "code": "411521", "name": "罗山县" }, + { "code": "411522", "name": "光山县" }, + { "code": "411523", "name": "新县" }, + { "code": "411524", "name": "商城县" }, + { "code": "411525", "name": "固始县" }, + { "code": "411526", "name": "潢川县" }, + { "code": "411527", "name": "淮滨县" }, + { "code": "411528", "name": "息县" }, + { "code": "411571", "name": "信阳高新技术产业开发区" } + ] + }, + { + "code": "4116", + "name": "周口市", + "children": [ + { "code": "411602", "name": "川汇区" }, + { "code": "411603", "name": "淮阳区" }, + { "code": "411621", "name": "扶沟县" }, + { "code": "411622", "name": "西华县" }, + { "code": "411623", "name": "商水县" }, + { "code": "411624", "name": "沈丘县" }, + { "code": "411625", "name": "郸城县" }, + { "code": "411627", "name": "太康县" }, + { "code": "411628", "name": "鹿邑县" }, + { "code": "411671", "name": "河南周口经济开发区" }, + { "code": "411681", "name": "项城市" } + ] + }, + { + "code": "4117", + "name": "驻马店市", + "children": [ + { "code": "411702", "name": "驿城区" }, + { "code": "411721", "name": "西平县" }, + { "code": "411722", "name": "上蔡县" }, + { "code": "411723", "name": "平舆县" }, + { "code": "411724", "name": "正阳县" }, + { "code": "411725", "name": "确山县" }, + { "code": "411726", "name": "泌阳县" }, + { "code": "411727", "name": "汝南县" }, + { "code": "411728", "name": "遂平县" }, + { "code": "411729", "name": "新蔡县" }, + { "code": "411771", "name": "河南驻马店经济开发区" } + ] + }, + { "code": "4190", "name": "省直辖县级行政区划", "children": [{ "code": "419001", "name": "济源市" }] } + ] + }, + { + "code": "42", + "name": "湖北省", + "children": [ + { + "code": "4201", + "name": "武汉市", + "children": [ + { "code": "420102", "name": "江岸区" }, + { "code": "420103", "name": "江汉区" }, + { "code": "420104", "name": "硚口区" }, + { "code": "420105", "name": "汉阳区" }, + { "code": "420106", "name": "武昌区" }, + { "code": "420107", "name": "青山区" }, + { "code": "420111", "name": "洪山区" }, + { "code": "420112", "name": "东西湖区" }, + { "code": "420113", "name": "汉南区" }, + { "code": "420114", "name": "蔡甸区" }, + { "code": "420115", "name": "江夏区" }, + { "code": "420116", "name": "黄陂区" }, + { "code": "420117", "name": "新洲区" } + ] + }, + { + "code": "4202", + "name": "黄石市", + "children": [ + { "code": "420202", "name": "黄石港区" }, + { "code": "420203", "name": "西塞山区" }, + { "code": "420204", "name": "下陆区" }, + { "code": "420205", "name": "铁山区" }, + { "code": "420222", "name": "阳新县" }, + { "code": "420281", "name": "大冶市" } + ] + }, + { + "code": "4203", + "name": "十堰市", + "children": [ + { "code": "420302", "name": "茅箭区" }, + { "code": "420303", "name": "张湾区" }, + { "code": "420304", "name": "郧阳区" }, + { "code": "420322", "name": "郧西县" }, + { "code": "420323", "name": "竹山县" }, + { "code": "420324", "name": "竹溪县" }, + { "code": "420325", "name": "房县" }, + { "code": "420381", "name": "丹江口市" } + ] + }, + { + "code": "4205", + "name": "宜昌市", + "children": [ + { "code": "420502", "name": "西陵区" }, + { "code": "420503", "name": "伍家岗区" }, + { "code": "420504", "name": "点军区" }, + { "code": "420505", "name": "猇亭区" }, + { "code": "420506", "name": "夷陵区" }, + { "code": "420525", "name": "远安县" }, + { "code": "420526", "name": "兴山县" }, + { "code": "420527", "name": "秭归县" }, + { "code": "420528", "name": "长阳土家族自治县" }, + { "code": "420529", "name": "五峰土家族自治县" }, + { "code": "420581", "name": "宜都市" }, + { "code": "420582", "name": "当阳市" }, + { "code": "420583", "name": "枝江市" } + ] + }, + { + "code": "4206", + "name": "襄阳市", + "children": [ + { "code": "420602", "name": "襄城区" }, + { "code": "420606", "name": "樊城区" }, + { "code": "420607", "name": "襄州区" }, + { "code": "420624", "name": "南漳县" }, + { "code": "420625", "name": "谷城县" }, + { "code": "420626", "name": "保康县" }, + { "code": "420682", "name": "老河口市" }, + { "code": "420683", "name": "枣阳市" }, + { "code": "420684", "name": "宜城市" } + ] + }, + { + "code": "4207", + "name": "鄂州市", + "children": [ + { "code": "420702", "name": "梁子湖区" }, + { "code": "420703", "name": "华容区" }, + { "code": "420704", "name": "鄂城区" } + ] + }, + { + "code": "4208", + "name": "荆门市", + "children": [ + { "code": "420802", "name": "东宝区" }, + { "code": "420804", "name": "掇刀区" }, + { "code": "420822", "name": "沙洋县" }, + { "code": "420881", "name": "钟祥市" }, + { "code": "420882", "name": "京山市" } + ] + }, + { + "code": "4209", + "name": "孝感市", + "children": [ + { "code": "420902", "name": "孝南区" }, + { "code": "420921", "name": "孝昌县" }, + { "code": "420922", "name": "大悟县" }, + { "code": "420923", "name": "云梦县" }, + { "code": "420981", "name": "应城市" }, + { "code": "420982", "name": "安陆市" }, + { "code": "420984", "name": "汉川市" } + ] + }, + { + "code": "4210", + "name": "荆州市", + "children": [ + { "code": "421002", "name": "沙市区" }, + { "code": "421003", "name": "荆州区" }, + { "code": "421022", "name": "公安县" }, + { "code": "421024", "name": "江陵县" }, + { "code": "421071", "name": "荆州经济技术开发区" }, + { "code": "421081", "name": "石首市" }, + { "code": "421083", "name": "洪湖市" }, + { "code": "421087", "name": "松滋市" }, + { "code": "421088", "name": "监利市" } + ] + }, + { + "code": "4211", + "name": "黄冈市", + "children": [ + { "code": "421102", "name": "黄州区" }, + { "code": "421121", "name": "团风县" }, + { "code": "421122", "name": "红安县" }, + { "code": "421123", "name": "罗田县" }, + { "code": "421124", "name": "英山县" }, + { "code": "421125", "name": "浠水县" }, + { "code": "421126", "name": "蕲春县" }, + { "code": "421127", "name": "黄梅县" }, + { "code": "421171", "name": "龙感湖管理区" }, + { "code": "421181", "name": "麻城市" }, + { "code": "421182", "name": "武穴市" } + ] + }, + { + "code": "4212", + "name": "咸宁市", + "children": [ + { "code": "421202", "name": "咸安区" }, + { "code": "421221", "name": "嘉鱼县" }, + { "code": "421222", "name": "通城县" }, + { "code": "421223", "name": "崇阳县" }, + { "code": "421224", "name": "通山县" }, + { "code": "421281", "name": "赤壁市" } + ] + }, + { + "code": "4213", + "name": "随州市", + "children": [ + { "code": "421303", "name": "曾都区" }, + { "code": "421321", "name": "随县" }, + { "code": "421381", "name": "广水市" } + ] + }, + { + "code": "4228", + "name": "恩施土家族苗族自治州", + "children": [ + { "code": "422801", "name": "恩施市" }, + { "code": "422802", "name": "利川市" }, + { "code": "422822", "name": "建始县" }, + { "code": "422823", "name": "巴东县" }, + { "code": "422825", "name": "宣恩县" }, + { "code": "422826", "name": "咸丰县" }, + { "code": "422827", "name": "来凤县" }, + { "code": "422828", "name": "鹤峰县" } + ] + }, + { + "code": "4290", + "name": "省直辖县级行政区划", + "children": [ + { "code": "429004", "name": "仙桃市" }, + { "code": "429005", "name": "潜江市" }, + { "code": "429006", "name": "天门市" }, + { "code": "429021", "name": "神农架林区" } + ] + } + ] + }, + { + "code": "43", + "name": "湖南省", + "children": [ + { + "code": "4301", + "name": "长沙市", + "children": [ + { "code": "430102", "name": "芙蓉区" }, + { "code": "430103", "name": "天心区" }, + { "code": "430104", "name": "岳麓区" }, + { "code": "430105", "name": "开福区" }, + { "code": "430111", "name": "雨花区" }, + { "code": "430112", "name": "望城区" }, + { "code": "430121", "name": "长沙县" }, + { "code": "430181", "name": "浏阳市" }, + { "code": "430182", "name": "宁乡市" } + ] + }, + { + "code": "4302", + "name": "株洲市", + "children": [ + { "code": "430202", "name": "荷塘区" }, + { "code": "430203", "name": "芦淞区" }, + { "code": "430204", "name": "石峰区" }, + { "code": "430211", "name": "天元区" }, + { "code": "430212", "name": "渌口区" }, + { "code": "430223", "name": "攸县" }, + { "code": "430224", "name": "茶陵县" }, + { "code": "430225", "name": "炎陵县" }, + { "code": "430271", "name": "云龙示范区" }, + { "code": "430281", "name": "醴陵市" } + ] + }, + { + "code": "4303", + "name": "湘潭市", + "children": [ + { "code": "430302", "name": "雨湖区" }, + { "code": "430304", "name": "岳塘区" }, + { "code": "430321", "name": "湘潭县" }, + { "code": "430371", "name": "湖南湘潭高新技术产业园区" }, + { "code": "430372", "name": "湘潭昭山示范区" }, + { "code": "430373", "name": "湘潭九华示范区" }, + { "code": "430381", "name": "湘乡市" }, + { "code": "430382", "name": "韶山市" } + ] + }, + { + "code": "4304", + "name": "衡阳市", + "children": [ + { "code": "430405", "name": "珠晖区" }, + { "code": "430406", "name": "雁峰区" }, + { "code": "430407", "name": "石鼓区" }, + { "code": "430408", "name": "蒸湘区" }, + { "code": "430412", "name": "南岳区" }, + { "code": "430421", "name": "衡阳县" }, + { "code": "430422", "name": "衡南县" }, + { "code": "430423", "name": "衡山县" }, + { "code": "430424", "name": "衡东县" }, + { "code": "430426", "name": "祁东县" }, + { "code": "430471", "name": "衡阳综合保税区" }, + { "code": "430472", "name": "湖南衡阳高新技术产业园区" }, + { "code": "430473", "name": "湖南衡阳松木经济开发区" }, + { "code": "430481", "name": "耒阳市" }, + { "code": "430482", "name": "常宁市" } + ] + }, + { + "code": "4305", + "name": "邵阳市", + "children": [ + { "code": "430502", "name": "双清区" }, + { "code": "430503", "name": "大祥区" }, + { "code": "430511", "name": "北塔区" }, + { "code": "430522", "name": "新邵县" }, + { "code": "430523", "name": "邵阳县" }, + { "code": "430524", "name": "隆回县" }, + { "code": "430525", "name": "洞口县" }, + { "code": "430527", "name": "绥宁县" }, + { "code": "430528", "name": "新宁县" }, + { "code": "430529", "name": "城步苗族自治县" }, + { "code": "430581", "name": "武冈市" }, + { "code": "430582", "name": "邵东市" } + ] + }, + { + "code": "4306", + "name": "岳阳市", + "children": [ + { "code": "430602", "name": "岳阳楼区" }, + { "code": "430603", "name": "云溪区" }, + { "code": "430611", "name": "君山区" }, + { "code": "430621", "name": "岳阳县" }, + { "code": "430623", "name": "华容县" }, + { "code": "430624", "name": "湘阴县" }, + { "code": "430626", "name": "平江县" }, + { "code": "430671", "name": "岳阳市屈原管理区" }, + { "code": "430681", "name": "汨罗市" }, + { "code": "430682", "name": "临湘市" } + ] + }, + { + "code": "4307", + "name": "常德市", + "children": [ + { "code": "430702", "name": "武陵区" }, + { "code": "430703", "name": "鼎城区" }, + { "code": "430721", "name": "安乡县" }, + { "code": "430722", "name": "汉寿县" }, + { "code": "430723", "name": "澧县" }, + { "code": "430724", "name": "临澧县" }, + { "code": "430725", "name": "桃源县" }, + { "code": "430726", "name": "石门县" }, + { "code": "430771", "name": "常德市西洞庭管理区" }, + { "code": "430781", "name": "津市市" } + ] + }, + { + "code": "4308", + "name": "张家界市", + "children": [ + { "code": "430802", "name": "永定区" }, + { "code": "430811", "name": "武陵源区" }, + { "code": "430821", "name": "慈利县" }, + { "code": "430822", "name": "桑植县" } + ] + }, + { + "code": "4309", + "name": "益阳市", + "children": [ + { "code": "430902", "name": "资阳区" }, + { "code": "430903", "name": "赫山区" }, + { "code": "430921", "name": "南县" }, + { "code": "430922", "name": "桃江县" }, + { "code": "430923", "name": "安化县" }, + { "code": "430971", "name": "益阳市大通湖管理区" }, + { "code": "430972", "name": "湖南益阳高新技术产业园区" }, + { "code": "430981", "name": "沅江市" } + ] + }, + { + "code": "4310", + "name": "郴州市", + "children": [ + { "code": "431002", "name": "北湖区" }, + { "code": "431003", "name": "苏仙区" }, + { "code": "431021", "name": "桂阳县" }, + { "code": "431022", "name": "宜章县" }, + { "code": "431023", "name": "永兴县" }, + { "code": "431024", "name": "嘉禾县" }, + { "code": "431025", "name": "临武县" }, + { "code": "431026", "name": "汝城县" }, + { "code": "431027", "name": "桂东县" }, + { "code": "431028", "name": "安仁县" }, + { "code": "431081", "name": "资兴市" } + ] + }, + { + "code": "4311", + "name": "永州市", + "children": [ + { "code": "431102", "name": "零陵区" }, + { "code": "431103", "name": "冷水滩区" }, + { "code": "431122", "name": "东安县" }, + { "code": "431123", "name": "双牌县" }, + { "code": "431124", "name": "道县" }, + { "code": "431125", "name": "江永县" }, + { "code": "431126", "name": "宁远县" }, + { "code": "431127", "name": "蓝山县" }, + { "code": "431128", "name": "新田县" }, + { "code": "431129", "name": "江华瑶族自治县" }, + { "code": "431171", "name": "永州经济技术开发区" }, + { "code": "431173", "name": "永州市回龙圩管理区" }, + { "code": "431181", "name": "祁阳市" } + ] + }, + { + "code": "4312", + "name": "怀化市", + "children": [ + { "code": "431202", "name": "鹤城区" }, + { "code": "431221", "name": "中方县" }, + { "code": "431222", "name": "沅陵县" }, + { "code": "431223", "name": "辰溪县" }, + { "code": "431224", "name": "溆浦县" }, + { "code": "431225", "name": "会同县" }, + { "code": "431226", "name": "麻阳苗族自治县" }, + { "code": "431227", "name": "新晃侗族自治县" }, + { "code": "431228", "name": "芷江侗族自治县" }, + { "code": "431229", "name": "靖州苗族侗族自治县" }, + { "code": "431230", "name": "通道侗族自治县" }, + { "code": "431271", "name": "怀化市洪江管理区" }, + { "code": "431281", "name": "洪江市" } + ] + }, + { + "code": "4313", + "name": "娄底市", + "children": [ + { "code": "431302", "name": "娄星区" }, + { "code": "431321", "name": "双峰县" }, + { "code": "431322", "name": "新化县" }, + { "code": "431381", "name": "冷水江市" }, + { "code": "431382", "name": "涟源市" } + ] + }, + { + "code": "4331", + "name": "湘西土家族苗族自治州", + "children": [ + { "code": "433101", "name": "吉首市" }, + { "code": "433122", "name": "泸溪县" }, + { "code": "433123", "name": "凤凰县" }, + { "code": "433124", "name": "花垣县" }, + { "code": "433125", "name": "保靖县" }, + { "code": "433126", "name": "古丈县" }, + { "code": "433127", "name": "永顺县" }, + { "code": "433130", "name": "龙山县" } + ] + } + ] + }, + { + "code": "44", + "name": "广东省", + "children": [ + { + "code": "4401", + "name": "广州市", + "children": [ + { "code": "440103", "name": "荔湾区" }, + { "code": "440104", "name": "越秀区" }, + { "code": "440105", "name": "海珠区" }, + { "code": "440106", "name": "天河区" }, + { "code": "440111", "name": "白云区" }, + { "code": "440112", "name": "黄埔区" }, + { "code": "440113", "name": "番禺区" }, + { "code": "440114", "name": "花都区" }, + { "code": "440115", "name": "南沙区" }, + { "code": "440117", "name": "从化区" }, + { "code": "440118", "name": "增城区" } + ] + }, + { + "code": "4402", + "name": "韶关市", + "children": [ + { "code": "440203", "name": "武江区" }, + { "code": "440204", "name": "浈江区" }, + { "code": "440205", "name": "曲江区" }, + { "code": "440222", "name": "始兴县" }, + { "code": "440224", "name": "仁化县" }, + { "code": "440229", "name": "翁源县" }, + { "code": "440232", "name": "乳源瑶族自治县" }, + { "code": "440233", "name": "新丰县" }, + { "code": "440281", "name": "乐昌市" }, + { "code": "440282", "name": "南雄市" } + ] + }, + { + "code": "4403", + "name": "深圳市", + "children": [ + { "code": "440303", "name": "罗湖区" }, + { "code": "440304", "name": "福田区" }, + { "code": "440305", "name": "南山区" }, + { "code": "440306", "name": "宝安区" }, + { "code": "440307", "name": "龙岗区" }, + { "code": "440308", "name": "盐田区" }, + { "code": "440309", "name": "龙华区" }, + { "code": "440310", "name": "坪山区" }, + { "code": "440311", "name": "光明区" } + ] + }, + { + "code": "4404", + "name": "珠海市", + "children": [ + { "code": "440402", "name": "香洲区" }, + { "code": "440403", "name": "斗门区" }, + { "code": "440404", "name": "金湾区" } + ] + }, + { + "code": "4405", + "name": "汕头市", + "children": [ + { "code": "440507", "name": "龙湖区" }, + { "code": "440511", "name": "金平区" }, + { "code": "440512", "name": "濠江区" }, + { "code": "440513", "name": "潮阳区" }, + { "code": "440514", "name": "潮南区" }, + { "code": "440515", "name": "澄海区" }, + { "code": "440523", "name": "南澳县" } + ] + }, + { + "code": "4406", + "name": "佛山市", + "children": [ + { "code": "440604", "name": "禅城区" }, + { "code": "440605", "name": "南海区" }, + { "code": "440606", "name": "顺德区" }, + { "code": "440607", "name": "三水区" }, + { "code": "440608", "name": "高明区" } + ] + }, + { + "code": "4407", + "name": "江门市", + "children": [ + { "code": "440703", "name": "蓬江区" }, + { "code": "440704", "name": "江海区" }, + { "code": "440705", "name": "新会区" }, + { "code": "440781", "name": "台山市" }, + { "code": "440783", "name": "开平市" }, + { "code": "440784", "name": "鹤山市" }, + { "code": "440785", "name": "恩平市" } + ] + }, + { + "code": "4408", + "name": "湛江市", + "children": [ + { "code": "440802", "name": "赤坎区" }, + { "code": "440803", "name": "霞山区" }, + { "code": "440804", "name": "坡头区" }, + { "code": "440811", "name": "麻章区" }, + { "code": "440823", "name": "遂溪县" }, + { "code": "440825", "name": "徐闻县" }, + { "code": "440881", "name": "廉江市" }, + { "code": "440882", "name": "雷州市" }, + { "code": "440883", "name": "吴川市" } + ] + }, + { + "code": "4409", + "name": "茂名市", + "children": [ + { "code": "440902", "name": "茂南区" }, + { "code": "440904", "name": "电白区" }, + { "code": "440981", "name": "高州市" }, + { "code": "440982", "name": "化州市" }, + { "code": "440983", "name": "信宜市" } + ] + }, + { + "code": "4412", + "name": "肇庆市", + "children": [ + { "code": "441202", "name": "端州区" }, + { "code": "441203", "name": "鼎湖区" }, + { "code": "441204", "name": "高要区" }, + { "code": "441223", "name": "广宁县" }, + { "code": "441224", "name": "怀集县" }, + { "code": "441225", "name": "封开县" }, + { "code": "441226", "name": "德庆县" }, + { "code": "441284", "name": "四会市" } + ] + }, + { + "code": "4413", + "name": "惠州市", + "children": [ + { "code": "441302", "name": "惠城区" }, + { "code": "441303", "name": "惠阳区" }, + { "code": "441322", "name": "博罗县" }, + { "code": "441323", "name": "惠东县" }, + { "code": "441324", "name": "龙门县" } + ] + }, + { + "code": "4414", + "name": "梅州市", + "children": [ + { "code": "441402", "name": "梅江区" }, + { "code": "441403", "name": "梅县区" }, + { "code": "441422", "name": "大埔县" }, + { "code": "441423", "name": "丰顺县" }, + { "code": "441424", "name": "五华县" }, + { "code": "441426", "name": "平远县" }, + { "code": "441427", "name": "蕉岭县" }, + { "code": "441481", "name": "兴宁市" } + ] + }, + { + "code": "4415", + "name": "汕尾市", + "children": [ + { "code": "441502", "name": "城区" }, + { "code": "441521", "name": "海丰县" }, + { "code": "441523", "name": "陆河县" }, + { "code": "441581", "name": "陆丰市" } + ] + }, + { + "code": "4416", + "name": "河源市", + "children": [ + { "code": "441602", "name": "源城区" }, + { "code": "441621", "name": "紫金县" }, + { "code": "441622", "name": "龙川县" }, + { "code": "441623", "name": "连平县" }, + { "code": "441624", "name": "和平县" }, + { "code": "441625", "name": "东源县" } + ] + }, + { + "code": "4417", + "name": "阳江市", + "children": [ + { "code": "441702", "name": "江城区" }, + { "code": "441704", "name": "阳东区" }, + { "code": "441721", "name": "阳西县" }, + { "code": "441781", "name": "阳春市" } + ] + }, + { + "code": "4418", + "name": "清远市", + "children": [ + { "code": "441802", "name": "清城区" }, + { "code": "441803", "name": "清新区" }, + { "code": "441821", "name": "佛冈县" }, + { "code": "441823", "name": "阳山县" }, + { "code": "441825", "name": "连山壮族瑶族自治县" }, + { "code": "441826", "name": "连南瑶族自治县" }, + { "code": "441881", "name": "英德市" }, + { "code": "441882", "name": "连州市" } + ] + }, + { + "code": "4419", + "name": "东莞市", + "children": [ + { "code": "441900003", "name": "东城街道" }, + { "code": "441900004", "name": "南城街道" }, + { "code": "441900005", "name": "万江街道" }, + { "code": "441900006", "name": "莞城街道" }, + { "code": "441900101", "name": "石碣镇" }, + { "code": "441900102", "name": "石龙镇" }, + { "code": "441900103", "name": "茶山镇" }, + { "code": "441900104", "name": "石排镇" }, + { "code": "441900105", "name": "企石镇" }, + { "code": "441900106", "name": "横沥镇" }, + { "code": "441900107", "name": "桥头镇" }, + { "code": "441900108", "name": "谢岗镇" }, + { "code": "441900109", "name": "东坑镇" }, + { "code": "441900110", "name": "常平镇" }, + { "code": "441900111", "name": "寮步镇" }, + { "code": "441900112", "name": "樟木头镇" }, + { "code": "441900113", "name": "大朗镇" }, + { "code": "441900114", "name": "黄江镇" }, + { "code": "441900115", "name": "清溪镇" }, + { "code": "441900116", "name": "塘厦镇" }, + { "code": "441900117", "name": "凤岗镇" }, + { "code": "441900118", "name": "大岭山镇" }, + { "code": "441900119", "name": "长安镇" }, + { "code": "441900121", "name": "虎门镇" }, + { "code": "441900122", "name": "厚街镇" }, + { "code": "441900123", "name": "沙田镇" }, + { "code": "441900124", "name": "道滘镇" }, + { "code": "441900125", "name": "洪梅镇" }, + { "code": "441900126", "name": "麻涌镇" }, + { "code": "441900127", "name": "望牛墩镇" }, + { "code": "441900128", "name": "中堂镇" }, + { "code": "441900129", "name": "高埗镇" }, + { "code": "441900401", "name": "松山湖" }, + { "code": "441900402", "name": "东莞港" }, + { "code": "441900403", "name": "东莞生态园" }, + { "code": "441900404", "name": "东莞滨海湾新区" } + ] + }, + { + "code": "4420", + "name": "中山市", + "children": [ + { "code": "442000001", "name": "石岐街道" }, + { "code": "442000002", "name": "东区街道" }, + { "code": "442000003", "name": "中山港街道" }, + { "code": "442000004", "name": "西区街道" }, + { "code": "442000005", "name": "南区街道" }, + { "code": "442000006", "name": "五桂山街道" }, + { "code": "442000007", "name": "民众街道" }, + { "code": "442000008", "name": "南朗街道" }, + { "code": "442000101", "name": "黄圃镇" }, + { "code": "442000103", "name": "东凤镇" }, + { "code": "442000105", "name": "古镇镇" }, + { "code": "442000106", "name": "沙溪镇" }, + { "code": "442000107", "name": "坦洲镇" }, + { "code": "442000108", "name": "港口镇" }, + { "code": "442000109", "name": "三角镇" }, + { "code": "442000110", "name": "横栏镇" }, + { "code": "442000111", "name": "南头镇" }, + { "code": "442000112", "name": "阜沙镇" }, + { "code": "442000114", "name": "三乡镇" }, + { "code": "442000115", "name": "板芙镇" }, + { "code": "442000116", "name": "大涌镇" }, + { "code": "442000117", "name": "神湾镇" }, + { "code": "442000118", "name": "小榄镇" } + ] + }, + { + "code": "4451", + "name": "潮州市", + "children": [ + { "code": "445102", "name": "湘桥区" }, + { "code": "445103", "name": "潮安区" }, + { "code": "445122", "name": "饶平县" } + ] + }, + { + "code": "4452", + "name": "揭阳市", + "children": [ + { "code": "445202", "name": "榕城区" }, + { "code": "445203", "name": "揭东区" }, + { "code": "445222", "name": "揭西县" }, + { "code": "445224", "name": "惠来县" }, + { "code": "445281", "name": "普宁市" } + ] + }, + { + "code": "4453", + "name": "云浮市", + "children": [ + { "code": "445302", "name": "云城区" }, + { "code": "445303", "name": "云安区" }, + { "code": "445321", "name": "新兴县" }, + { "code": "445322", "name": "郁南县" }, + { "code": "445381", "name": "罗定市" } + ] + } + ] + }, + { + "code": "45", + "name": "广西壮族自治区", + "children": [ + { + "code": "4501", + "name": "南宁市", + "children": [ + { "code": "450102", "name": "兴宁区" }, + { "code": "450103", "name": "青秀区" }, + { "code": "450105", "name": "江南区" }, + { "code": "450107", "name": "西乡塘区" }, + { "code": "450108", "name": "良庆区" }, + { "code": "450109", "name": "邕宁区" }, + { "code": "450110", "name": "武鸣区" }, + { "code": "450123", "name": "隆安县" }, + { "code": "450124", "name": "马山县" }, + { "code": "450125", "name": "上林县" }, + { "code": "450126", "name": "宾阳县" }, + { "code": "450181", "name": "横州市" } + ] + }, + { + "code": "4502", + "name": "柳州市", + "children": [ + { "code": "450202", "name": "城中区" }, + { "code": "450203", "name": "鱼峰区" }, + { "code": "450204", "name": "柳南区" }, + { "code": "450205", "name": "柳北区" }, + { "code": "450206", "name": "柳江区" }, + { "code": "450222", "name": "柳城县" }, + { "code": "450223", "name": "鹿寨县" }, + { "code": "450224", "name": "融安县" }, + { "code": "450225", "name": "融水苗族自治县" }, + { "code": "450226", "name": "三江侗族自治县" } + ] + }, + { + "code": "4503", + "name": "桂林市", + "children": [ + { "code": "450302", "name": "秀峰区" }, + { "code": "450303", "name": "叠彩区" }, + { "code": "450304", "name": "象山区" }, + { "code": "450305", "name": "七星区" }, + { "code": "450311", "name": "雁山区" }, + { "code": "450312", "name": "临桂区" }, + { "code": "450321", "name": "阳朔县" }, + { "code": "450323", "name": "灵川县" }, + { "code": "450324", "name": "全州县" }, + { "code": "450325", "name": "兴安县" }, + { "code": "450326", "name": "永福县" }, + { "code": "450327", "name": "灌阳县" }, + { "code": "450328", "name": "龙胜各族自治县" }, + { "code": "450329", "name": "资源县" }, + { "code": "450330", "name": "平乐县" }, + { "code": "450332", "name": "恭城瑶族自治县" }, + { "code": "450381", "name": "荔浦市" } + ] + }, + { + "code": "4504", + "name": "梧州市", + "children": [ + { "code": "450403", "name": "万秀区" }, + { "code": "450405", "name": "长洲区" }, + { "code": "450406", "name": "龙圩区" }, + { "code": "450421", "name": "苍梧县" }, + { "code": "450422", "name": "藤县" }, + { "code": "450423", "name": "蒙山县" }, + { "code": "450481", "name": "岑溪市" } + ] + }, + { + "code": "4505", + "name": "北海市", + "children": [ + { "code": "450502", "name": "海城区" }, + { "code": "450503", "name": "银海区" }, + { "code": "450512", "name": "铁山港区" }, + { "code": "450521", "name": "合浦县" } + ] + }, + { + "code": "4506", + "name": "防城港市", + "children": [ + { "code": "450602", "name": "港口区" }, + { "code": "450603", "name": "防城区" }, + { "code": "450621", "name": "上思县" }, + { "code": "450681", "name": "东兴市" } + ] + }, + { + "code": "4507", + "name": "钦州市", + "children": [ + { "code": "450702", "name": "钦南区" }, + { "code": "450703", "name": "钦北区" }, + { "code": "450721", "name": "灵山县" }, + { "code": "450722", "name": "浦北县" } + ] + }, + { + "code": "4508", + "name": "贵港市", + "children": [ + { "code": "450802", "name": "港北区" }, + { "code": "450803", "name": "港南区" }, + { "code": "450804", "name": "覃塘区" }, + { "code": "450821", "name": "平南县" }, + { "code": "450881", "name": "桂平市" } + ] + }, + { + "code": "4509", + "name": "玉林市", + "children": [ + { "code": "450902", "name": "玉州区" }, + { "code": "450903", "name": "福绵区" }, + { "code": "450921", "name": "容县" }, + { "code": "450922", "name": "陆川县" }, + { "code": "450923", "name": "博白县" }, + { "code": "450924", "name": "兴业县" }, + { "code": "450981", "name": "北流市" } + ] + }, + { + "code": "4510", + "name": "百色市", + "children": [ + { "code": "451002", "name": "右江区" }, + { "code": "451003", "name": "田阳区" }, + { "code": "451022", "name": "田东县" }, + { "code": "451024", "name": "德保县" }, + { "code": "451026", "name": "那坡县" }, + { "code": "451027", "name": "凌云县" }, + { "code": "451028", "name": "乐业县" }, + { "code": "451029", "name": "田林县" }, + { "code": "451030", "name": "西林县" }, + { "code": "451031", "name": "隆林各族自治县" }, + { "code": "451081", "name": "靖西市" }, + { "code": "451082", "name": "平果市" } + ] + }, + { + "code": "4511", + "name": "贺州市", + "children": [ + { "code": "451102", "name": "八步区" }, + { "code": "451103", "name": "平桂区" }, + { "code": "451121", "name": "昭平县" }, + { "code": "451122", "name": "钟山县" }, + { "code": "451123", "name": "富川瑶族自治县" } + ] + }, + { + "code": "4512", + "name": "河池市", + "children": [ + { "code": "451202", "name": "金城江区" }, + { "code": "451203", "name": "宜州区" }, + { "code": "451221", "name": "南丹县" }, + { "code": "451222", "name": "天峨县" }, + { "code": "451223", "name": "凤山县" }, + { "code": "451224", "name": "东兰县" }, + { "code": "451225", "name": "罗城仫佬族自治县" }, + { "code": "451226", "name": "环江毛南族自治县" }, + { "code": "451227", "name": "巴马瑶族自治县" }, + { "code": "451228", "name": "都安瑶族自治县" }, + { "code": "451229", "name": "大化瑶族自治县" } + ] + }, + { + "code": "4513", + "name": "来宾市", + "children": [ + { "code": "451302", "name": "兴宾区" }, + { "code": "451321", "name": "忻城县" }, + { "code": "451322", "name": "象州县" }, + { "code": "451323", "name": "武宣县" }, + { "code": "451324", "name": "金秀瑶族自治县" }, + { "code": "451381", "name": "合山市" } + ] + }, + { + "code": "4514", + "name": "崇左市", + "children": [ + { "code": "451402", "name": "江州区" }, + { "code": "451421", "name": "扶绥县" }, + { "code": "451422", "name": "宁明县" }, + { "code": "451423", "name": "龙州县" }, + { "code": "451424", "name": "大新县" }, + { "code": "451425", "name": "天等县" }, + { "code": "451481", "name": "凭祥市" } + ] + } + ] + }, + { + "code": "46", + "name": "海南省", + "children": [ + { + "code": "4601", + "name": "海口市", + "children": [ + { "code": "460105", "name": "秀英区" }, + { "code": "460106", "name": "龙华区" }, + { "code": "460107", "name": "琼山区" }, + { "code": "460108", "name": "美兰区" } + ] + }, + { + "code": "4602", + "name": "三亚市", + "children": [ + { "code": "460202", "name": "海棠区" }, + { "code": "460203", "name": "吉阳区" }, + { "code": "460204", "name": "天涯区" }, + { "code": "460205", "name": "崖州区" } + ] + }, + { + "code": "4603", + "name": "三沙市", + "children": [ + { "code": "460321", "name": "西沙群岛" }, + { "code": "460322", "name": "南沙群岛" }, + { "code": "460323", "name": "中沙群岛的岛礁及其海域" } + ] + }, + { + "code": "4604", + "name": "儋州市", + "children": [ + { "code": "460400100", "name": "那大镇" }, + { "code": "460400101", "name": "和庆镇" }, + { "code": "460400102", "name": "南丰镇" }, + { "code": "460400103", "name": "大成镇" }, + { "code": "460400104", "name": "雅星镇" }, + { "code": "460400105", "name": "兰洋镇" }, + { "code": "460400106", "name": "光村镇" }, + { "code": "460400107", "name": "木棠镇" }, + { "code": "460400108", "name": "海头镇" }, + { "code": "460400109", "name": "峨蔓镇" }, + { "code": "460400111", "name": "王五镇" }, + { "code": "460400112", "name": "白马井镇" }, + { "code": "460400113", "name": "中和镇" }, + { "code": "460400114", "name": "排浦镇" }, + { "code": "460400115", "name": "东成镇" }, + { "code": "460400116", "name": "新州镇" }, + { "code": "460400499", "name": "洋浦经济开发区" }, + { "code": "460400500", "name": "华南热作学院" } + ] + }, + { + "code": "4690", + "name": "省直辖县级行政区划", + "children": [ + { "code": "469001", "name": "五指山市" }, + { "code": "469002", "name": "琼海市" }, + { "code": "469005", "name": "文昌市" }, + { "code": "469006", "name": "万宁市" }, + { "code": "469007", "name": "东方市" }, + { "code": "469021", "name": "定安县" }, + { "code": "469022", "name": "屯昌县" }, + { "code": "469023", "name": "澄迈县" }, + { "code": "469024", "name": "临高县" }, + { "code": "469025", "name": "白沙黎族自治县" }, + { "code": "469026", "name": "昌江黎族自治县" }, + { "code": "469027", "name": "乐东黎族自治县" }, + { "code": "469028", "name": "陵水黎族自治县" }, + { "code": "469029", "name": "保亭黎族苗族自治县" }, + { "code": "469030", "name": "琼中黎族苗族自治县" } + ] + } + ] + }, + { + "code": "50", + "name": "重庆市", + "children": [ + { + "code": "5001", + "name": "市辖区", + "children": [ + { "code": "500101", "name": "万州区" }, + { "code": "500102", "name": "涪陵区" }, + { "code": "500103", "name": "渝中区" }, + { "code": "500104", "name": "大渡口区" }, + { "code": "500105", "name": "江北区" }, + { "code": "500106", "name": "沙坪坝区" }, + { "code": "500107", "name": "九龙坡区" }, + { "code": "500108", "name": "南岸区" }, + { "code": "500109", "name": "北碚区" }, + { "code": "500110", "name": "綦江区" }, + { "code": "500111", "name": "大足区" }, + { "code": "500112", "name": "渝北区" }, + { "code": "500113", "name": "巴南区" }, + { "code": "500114", "name": "黔江区" }, + { "code": "500115", "name": "长寿区" }, + { "code": "500116", "name": "江津区" }, + { "code": "500117", "name": "合川区" }, + { "code": "500118", "name": "永川区" }, + { "code": "500119", "name": "南川区" }, + { "code": "500120", "name": "璧山区" }, + { "code": "500151", "name": "铜梁区" }, + { "code": "500152", "name": "潼南区" }, + { "code": "500153", "name": "荣昌区" }, + { "code": "500154", "name": "开州区" }, + { "code": "500155", "name": "梁平区" }, + { "code": "500156", "name": "武隆区" } + ] + }, + { + "code": "5002", + "name": "县", + "children": [ + { "code": "500229", "name": "城口县" }, + { "code": "500230", "name": "丰都县" }, + { "code": "500231", "name": "垫江县" }, + { "code": "500233", "name": "忠县" }, + { "code": "500235", "name": "云阳县" }, + { "code": "500236", "name": "奉节县" }, + { "code": "500237", "name": "巫山县" }, + { "code": "500238", "name": "巫溪县" }, + { "code": "500240", "name": "石柱土家族自治县" }, + { "code": "500241", "name": "秀山土家族苗族自治县" }, + { "code": "500242", "name": "酉阳土家族苗族自治县" }, + { "code": "500243", "name": "彭水苗族土家族自治县" } + ] + } + ] + }, + { + "code": "51", + "name": "四川省", + "children": [ + { + "code": "5101", + "name": "成都市", + "children": [ + { "code": "510104", "name": "锦江区" }, + { "code": "510105", "name": "青羊区" }, + { "code": "510106", "name": "金牛区" }, + { "code": "510107", "name": "武侯区" }, + { "code": "510108", "name": "成华区" }, + { "code": "510112", "name": "龙泉驿区" }, + { "code": "510113", "name": "青白江区" }, + { "code": "510114", "name": "新都区" }, + { "code": "510115", "name": "温江区" }, + { "code": "510116", "name": "双流区" }, + { "code": "510117", "name": "郫都区" }, + { "code": "510118", "name": "新津区" }, + { "code": "510121", "name": "金堂县" }, + { "code": "510129", "name": "大邑县" }, + { "code": "510131", "name": "蒲江县" }, + { "code": "510181", "name": "都江堰市" }, + { "code": "510182", "name": "彭州市" }, + { "code": "510183", "name": "邛崃市" }, + { "code": "510184", "name": "崇州市" }, + { "code": "510185", "name": "简阳市" } + ] + }, + { + "code": "5103", + "name": "自贡市", + "children": [ + { "code": "510302", "name": "自流井区" }, + { "code": "510303", "name": "贡井区" }, + { "code": "510304", "name": "大安区" }, + { "code": "510311", "name": "沿滩区" }, + { "code": "510321", "name": "荣县" }, + { "code": "510322", "name": "富顺县" } + ] + }, + { + "code": "5104", + "name": "攀枝花市", + "children": [ + { "code": "510402", "name": "东区" }, + { "code": "510403", "name": "西区" }, + { "code": "510411", "name": "仁和区" }, + { "code": "510421", "name": "米易县" }, + { "code": "510422", "name": "盐边县" } + ] + }, + { + "code": "5105", + "name": "泸州市", + "children": [ + { "code": "510502", "name": "江阳区" }, + { "code": "510503", "name": "纳溪区" }, + { "code": "510504", "name": "龙马潭区" }, + { "code": "510521", "name": "泸县" }, + { "code": "510522", "name": "合江县" }, + { "code": "510524", "name": "叙永县" }, + { "code": "510525", "name": "古蔺县" } + ] + }, + { + "code": "5106", + "name": "德阳市", + "children": [ + { "code": "510603", "name": "旌阳区" }, + { "code": "510604", "name": "罗江区" }, + { "code": "510623", "name": "中江县" }, + { "code": "510681", "name": "广汉市" }, + { "code": "510682", "name": "什邡市" }, + { "code": "510683", "name": "绵竹市" } + ] + }, + { + "code": "5107", + "name": "绵阳市", + "children": [ + { "code": "510703", "name": "涪城区" }, + { "code": "510704", "name": "游仙区" }, + { "code": "510705", "name": "安州区" }, + { "code": "510722", "name": "三台县" }, + { "code": "510723", "name": "盐亭县" }, + { "code": "510725", "name": "梓潼县" }, + { "code": "510726", "name": "北川羌族自治县" }, + { "code": "510727", "name": "平武县" }, + { "code": "510781", "name": "江油市" } + ] + }, + { + "code": "5108", + "name": "广元市", + "children": [ + { "code": "510802", "name": "利州区" }, + { "code": "510811", "name": "昭化区" }, + { "code": "510812", "name": "朝天区" }, + { "code": "510821", "name": "旺苍县" }, + { "code": "510822", "name": "青川县" }, + { "code": "510823", "name": "剑阁县" }, + { "code": "510824", "name": "苍溪县" } + ] + }, + { + "code": "5109", + "name": "遂宁市", + "children": [ + { "code": "510903", "name": "船山区" }, + { "code": "510904", "name": "安居区" }, + { "code": "510921", "name": "蓬溪县" }, + { "code": "510923", "name": "大英县" }, + { "code": "510981", "name": "射洪市" } + ] + }, + { + "code": "5110", + "name": "内江市", + "children": [ + { "code": "511002", "name": "市中区" }, + { "code": "511011", "name": "东兴区" }, + { "code": "511024", "name": "威远县" }, + { "code": "511025", "name": "资中县" }, + { "code": "511071", "name": "内江经济开发区" }, + { "code": "511083", "name": "隆昌市" } + ] + }, + { + "code": "5111", + "name": "乐山市", + "children": [ + { "code": "511102", "name": "市中区" }, + { "code": "511111", "name": "沙湾区" }, + { "code": "511112", "name": "五通桥区" }, + { "code": "511113", "name": "金口河区" }, + { "code": "511123", "name": "犍为县" }, + { "code": "511124", "name": "井研县" }, + { "code": "511126", "name": "夹江县" }, + { "code": "511129", "name": "沐川县" }, + { "code": "511132", "name": "峨边彝族自治县" }, + { "code": "511133", "name": "马边彝族自治县" }, + { "code": "511181", "name": "峨眉山市" } + ] + }, + { + "code": "5113", + "name": "南充市", + "children": [ + { "code": "511302", "name": "顺庆区" }, + { "code": "511303", "name": "高坪区" }, + { "code": "511304", "name": "嘉陵区" }, + { "code": "511321", "name": "南部县" }, + { "code": "511322", "name": "营山县" }, + { "code": "511323", "name": "蓬安县" }, + { "code": "511324", "name": "仪陇县" }, + { "code": "511325", "name": "西充县" }, + { "code": "511381", "name": "阆中市" } + ] + }, + { + "code": "5114", + "name": "眉山市", + "children": [ + { "code": "511402", "name": "东坡区" }, + { "code": "511403", "name": "彭山区" }, + { "code": "511421", "name": "仁寿县" }, + { "code": "511423", "name": "洪雅县" }, + { "code": "511424", "name": "丹棱县" }, + { "code": "511425", "name": "青神县" } + ] + }, + { + "code": "5115", + "name": "宜宾市", + "children": [ + { "code": "511502", "name": "翠屏区" }, + { "code": "511503", "name": "南溪区" }, + { "code": "511504", "name": "叙州区" }, + { "code": "511523", "name": "江安县" }, + { "code": "511524", "name": "长宁县" }, + { "code": "511525", "name": "高县" }, + { "code": "511526", "name": "珙县" }, + { "code": "511527", "name": "筠连县" }, + { "code": "511528", "name": "兴文县" }, + { "code": "511529", "name": "屏山县" } + ] + }, + { + "code": "5116", + "name": "广安市", + "children": [ + { "code": "511602", "name": "广安区" }, + { "code": "511603", "name": "前锋区" }, + { "code": "511621", "name": "岳池县" }, + { "code": "511622", "name": "武胜县" }, + { "code": "511623", "name": "邻水县" }, + { "code": "511681", "name": "华蓥市" } + ] + }, + { + "code": "5117", + "name": "达州市", + "children": [ + { "code": "511702", "name": "通川区" }, + { "code": "511703", "name": "达川区" }, + { "code": "511722", "name": "宣汉县" }, + { "code": "511723", "name": "开江县" }, + { "code": "511724", "name": "大竹县" }, + { "code": "511725", "name": "渠县" }, + { "code": "511771", "name": "达州经济开发区" }, + { "code": "511781", "name": "万源市" } + ] + }, + { + "code": "5118", + "name": "雅安市", + "children": [ + { "code": "511802", "name": "雨城区" }, + { "code": "511803", "name": "名山区" }, + { "code": "511822", "name": "荥经县" }, + { "code": "511823", "name": "汉源县" }, + { "code": "511824", "name": "石棉县" }, + { "code": "511825", "name": "天全县" }, + { "code": "511826", "name": "芦山县" }, + { "code": "511827", "name": "宝兴县" } + ] + }, + { + "code": "5119", + "name": "巴中市", + "children": [ + { "code": "511902", "name": "巴州区" }, + { "code": "511903", "name": "恩阳区" }, + { "code": "511921", "name": "通江县" }, + { "code": "511922", "name": "南江县" }, + { "code": "511923", "name": "平昌县" }, + { "code": "511971", "name": "巴中经济开发区" } + ] + }, + { + "code": "5120", + "name": "资阳市", + "children": [ + { "code": "512002", "name": "雁江区" }, + { "code": "512021", "name": "安岳县" }, + { "code": "512022", "name": "乐至县" } + ] + }, + { + "code": "5132", + "name": "阿坝藏族羌族自治州", + "children": [ + { "code": "513201", "name": "马尔康市" }, + { "code": "513221", "name": "汶川县" }, + { "code": "513222", "name": "理县" }, + { "code": "513223", "name": "茂县" }, + { "code": "513224", "name": "松潘县" }, + { "code": "513225", "name": "九寨沟县" }, + { "code": "513226", "name": "金川县" }, + { "code": "513227", "name": "小金县" }, + { "code": "513228", "name": "黑水县" }, + { "code": "513230", "name": "壤塘县" }, + { "code": "513231", "name": "阿坝县" }, + { "code": "513232", "name": "若尔盖县" }, + { "code": "513233", "name": "红原县" } + ] + }, + { + "code": "5133", + "name": "甘孜藏族自治州", + "children": [ + { "code": "513301", "name": "康定市" }, + { "code": "513322", "name": "泸定县" }, + { "code": "513323", "name": "丹巴县" }, + { "code": "513324", "name": "九龙县" }, + { "code": "513325", "name": "雅江县" }, + { "code": "513326", "name": "道孚县" }, + { "code": "513327", "name": "炉霍县" }, + { "code": "513328", "name": "甘孜县" }, + { "code": "513329", "name": "新龙县" }, + { "code": "513330", "name": "德格县" }, + { "code": "513331", "name": "白玉县" }, + { "code": "513332", "name": "石渠县" }, + { "code": "513333", "name": "色达县" }, + { "code": "513334", "name": "理塘县" }, + { "code": "513335", "name": "巴塘县" }, + { "code": "513336", "name": "乡城县" }, + { "code": "513337", "name": "稻城县" }, + { "code": "513338", "name": "得荣县" } + ] + }, + { + "code": "5134", + "name": "凉山彝族自治州", + "children": [ + { "code": "513401", "name": "西昌市" }, + { "code": "513402", "name": "会理市" }, + { "code": "513422", "name": "木里藏族自治县" }, + { "code": "513423", "name": "盐源县" }, + { "code": "513424", "name": "德昌县" }, + { "code": "513426", "name": "会东县" }, + { "code": "513427", "name": "宁南县" }, + { "code": "513428", "name": "普格县" }, + { "code": "513429", "name": "布拖县" }, + { "code": "513430", "name": "金阳县" }, + { "code": "513431", "name": "昭觉县" }, + { "code": "513432", "name": "喜德县" }, + { "code": "513433", "name": "冕宁县" }, + { "code": "513434", "name": "越西县" }, + { "code": "513435", "name": "甘洛县" }, + { "code": "513436", "name": "美姑县" }, + { "code": "513437", "name": "雷波县" } + ] + } + ] + }, + { + "code": "52", + "name": "贵州省", + "children": [ + { + "code": "5201", + "name": "贵阳市", + "children": [ + { "code": "520102", "name": "南明区" }, + { "code": "520103", "name": "云岩区" }, + { "code": "520111", "name": "花溪区" }, + { "code": "520112", "name": "乌当区" }, + { "code": "520113", "name": "白云区" }, + { "code": "520115", "name": "观山湖区" }, + { "code": "520121", "name": "开阳县" }, + { "code": "520122", "name": "息烽县" }, + { "code": "520123", "name": "修文县" }, + { "code": "520181", "name": "清镇市" } + ] + }, + { + "code": "5202", + "name": "六盘水市", + "children": [ + { "code": "520201", "name": "钟山区" }, + { "code": "520203", "name": "六枝特区" }, + { "code": "520204", "name": "水城区" }, + { "code": "520281", "name": "盘州市" } + ] + }, + { + "code": "5203", + "name": "遵义市", + "children": [ + { "code": "520302", "name": "红花岗区" }, + { "code": "520303", "name": "汇川区" }, + { "code": "520304", "name": "播州区" }, + { "code": "520322", "name": "桐梓县" }, + { "code": "520323", "name": "绥阳县" }, + { "code": "520324", "name": "正安县" }, + { "code": "520325", "name": "道真仡佬族苗族自治县" }, + { "code": "520326", "name": "务川仡佬族苗族自治县" }, + { "code": "520327", "name": "凤冈县" }, + { "code": "520328", "name": "湄潭县" }, + { "code": "520329", "name": "余庆县" }, + { "code": "520330", "name": "习水县" }, + { "code": "520381", "name": "赤水市" }, + { "code": "520382", "name": "仁怀市" } + ] + }, + { + "code": "5204", + "name": "安顺市", + "children": [ + { "code": "520402", "name": "西秀区" }, + { "code": "520403", "name": "平坝区" }, + { "code": "520422", "name": "普定县" }, + { "code": "520423", "name": "镇宁布依族苗族自治县" }, + { "code": "520424", "name": "关岭布依族苗族自治县" }, + { "code": "520425", "name": "紫云苗族布依族自治县" } + ] + }, + { + "code": "5205", + "name": "毕节市", + "children": [ + { "code": "520502", "name": "七星关区" }, + { "code": "520521", "name": "大方县" }, + { "code": "520523", "name": "金沙县" }, + { "code": "520524", "name": "织金县" }, + { "code": "520525", "name": "纳雍县" }, + { "code": "520526", "name": "威宁彝族回族苗族自治县" }, + { "code": "520527", "name": "赫章县" }, + { "code": "520581", "name": "黔西市" } + ] + }, + { + "code": "5206", + "name": "铜仁市", + "children": [ + { "code": "520602", "name": "碧江区" }, + { "code": "520603", "name": "万山区" }, + { "code": "520621", "name": "江口县" }, + { "code": "520622", "name": "玉屏侗族自治县" }, + { "code": "520623", "name": "石阡县" }, + { "code": "520624", "name": "思南县" }, + { "code": "520625", "name": "印江土家族苗族自治县" }, + { "code": "520626", "name": "德江县" }, + { "code": "520627", "name": "沿河土家族自治县" }, + { "code": "520628", "name": "松桃苗族自治县" } + ] + }, + { + "code": "5223", + "name": "黔西南布依族苗族自治州", + "children": [ + { "code": "522301", "name": "兴义市" }, + { "code": "522302", "name": "兴仁市" }, + { "code": "522323", "name": "普安县" }, + { "code": "522324", "name": "晴隆县" }, + { "code": "522325", "name": "贞丰县" }, + { "code": "522326", "name": "望谟县" }, + { "code": "522327", "name": "册亨县" }, + { "code": "522328", "name": "安龙县" } + ] + }, + { + "code": "5226", + "name": "黔东南苗族侗族自治州", + "children": [ + { "code": "522601", "name": "凯里市" }, + { "code": "522622", "name": "黄平县" }, + { "code": "522623", "name": "施秉县" }, + { "code": "522624", "name": "三穗县" }, + { "code": "522625", "name": "镇远县" }, + { "code": "522626", "name": "岑巩县" }, + { "code": "522627", "name": "天柱县" }, + { "code": "522628", "name": "锦屏县" }, + { "code": "522629", "name": "剑河县" }, + { "code": "522630", "name": "台江县" }, + { "code": "522631", "name": "黎平县" }, + { "code": "522632", "name": "榕江县" }, + { "code": "522633", "name": "从江县" }, + { "code": "522634", "name": "雷山县" }, + { "code": "522635", "name": "麻江县" }, + { "code": "522636", "name": "丹寨县" } + ] + }, + { + "code": "5227", + "name": "黔南布依族苗族自治州", + "children": [ + { "code": "522701", "name": "都匀市" }, + { "code": "522702", "name": "福泉市" }, + { "code": "522722", "name": "荔波县" }, + { "code": "522723", "name": "贵定县" }, + { "code": "522725", "name": "瓮安县" }, + { "code": "522726", "name": "独山县" }, + { "code": "522727", "name": "平塘县" }, + { "code": "522728", "name": "罗甸县" }, + { "code": "522729", "name": "长顺县" }, + { "code": "522730", "name": "龙里县" }, + { "code": "522731", "name": "惠水县" }, + { "code": "522732", "name": "三都水族自治县" } + ] + } + ] + }, + { + "code": "53", + "name": "云南省", + "children": [ + { + "code": "5301", + "name": "昆明市", + "children": [ + { "code": "530102", "name": "五华区" }, + { "code": "530103", "name": "盘龙区" }, + { "code": "530111", "name": "官渡区" }, + { "code": "530112", "name": "西山区" }, + { "code": "530113", "name": "东川区" }, + { "code": "530114", "name": "呈贡区" }, + { "code": "530115", "name": "晋宁区" }, + { "code": "530124", "name": "富民县" }, + { "code": "530125", "name": "宜良县" }, + { "code": "530126", "name": "石林彝族自治县" }, + { "code": "530127", "name": "嵩明县" }, + { "code": "530128", "name": "禄劝彝族苗族自治县" }, + { "code": "530129", "name": "寻甸回族彝族自治县" }, + { "code": "530181", "name": "安宁市" } + ] + }, + { + "code": "5303", + "name": "曲靖市", + "children": [ + { "code": "530302", "name": "麒麟区" }, + { "code": "530303", "name": "沾益区" }, + { "code": "530304", "name": "马龙区" }, + { "code": "530322", "name": "陆良县" }, + { "code": "530323", "name": "师宗县" }, + { "code": "530324", "name": "罗平县" }, + { "code": "530325", "name": "富源县" }, + { "code": "530326", "name": "会泽县" }, + { "code": "530381", "name": "宣威市" } + ] + }, + { + "code": "5304", + "name": "玉溪市", + "children": [ + { "code": "530402", "name": "红塔区" }, + { "code": "530403", "name": "江川区" }, + { "code": "530423", "name": "通海县" }, + { "code": "530424", "name": "华宁县" }, + { "code": "530425", "name": "易门县" }, + { "code": "530426", "name": "峨山彝族自治县" }, + { "code": "530427", "name": "新平彝族傣族自治县" }, + { "code": "530428", "name": "元江哈尼族彝族傣族自治县" }, + { "code": "530481", "name": "澄江市" } + ] + }, + { + "code": "5305", + "name": "保山市", + "children": [ + { "code": "530502", "name": "隆阳区" }, + { "code": "530521", "name": "施甸县" }, + { "code": "530523", "name": "龙陵县" }, + { "code": "530524", "name": "昌宁县" }, + { "code": "530581", "name": "腾冲市" } + ] + }, + { + "code": "5306", + "name": "昭通市", + "children": [ + { "code": "530602", "name": "昭阳区" }, + { "code": "530621", "name": "鲁甸县" }, + { "code": "530622", "name": "巧家县" }, + { "code": "530623", "name": "盐津县" }, + { "code": "530624", "name": "大关县" }, + { "code": "530625", "name": "永善县" }, + { "code": "530626", "name": "绥江县" }, + { "code": "530627", "name": "镇雄县" }, + { "code": "530628", "name": "彝良县" }, + { "code": "530629", "name": "威信县" }, + { "code": "530681", "name": "水富市" } + ] + }, + { + "code": "5307", + "name": "丽江市", + "children": [ + { "code": "530702", "name": "古城区" }, + { "code": "530721", "name": "玉龙纳西族自治县" }, + { "code": "530722", "name": "永胜县" }, + { "code": "530723", "name": "华坪县" }, + { "code": "530724", "name": "宁蒗彝族自治县" } + ] + }, + { + "code": "5308", + "name": "普洱市", + "children": [ + { "code": "530802", "name": "思茅区" }, + { "code": "530821", "name": "宁洱哈尼族彝族自治县" }, + { "code": "530822", "name": "墨江哈尼族自治县" }, + { "code": "530823", "name": "景东彝族自治县" }, + { "code": "530824", "name": "景谷傣族彝族自治县" }, + { "code": "530825", "name": "镇沅彝族哈尼族拉祜族自治县" }, + { "code": "530826", "name": "江城哈尼族彝族自治县" }, + { "code": "530827", "name": "孟连傣族拉祜族佤族自治县" }, + { "code": "530828", "name": "澜沧拉祜族自治县" }, + { "code": "530829", "name": "西盟佤族自治县" } + ] + }, + { + "code": "5309", + "name": "临沧市", + "children": [ + { "code": "530902", "name": "临翔区" }, + { "code": "530921", "name": "凤庆县" }, + { "code": "530922", "name": "云县" }, + { "code": "530923", "name": "永德县" }, + { "code": "530924", "name": "镇康县" }, + { "code": "530925", "name": "双江拉祜族佤族布朗族傣族自治县" }, + { "code": "530926", "name": "耿马傣族佤族自治县" }, + { "code": "530927", "name": "沧源佤族自治县" } + ] + }, + { + "code": "5323", + "name": "楚雄彝族自治州", + "children": [ + { "code": "532301", "name": "楚雄市" }, + { "code": "532302", "name": "禄丰市" }, + { "code": "532322", "name": "双柏县" }, + { "code": "532323", "name": "牟定县" }, + { "code": "532324", "name": "南华县" }, + { "code": "532325", "name": "姚安县" }, + { "code": "532326", "name": "大姚县" }, + { "code": "532327", "name": "永仁县" }, + { "code": "532328", "name": "元谋县" }, + { "code": "532329", "name": "武定县" } + ] + }, + { + "code": "5325", + "name": "红河哈尼族彝族自治州", + "children": [ + { "code": "532501", "name": "个旧市" }, + { "code": "532502", "name": "开远市" }, + { "code": "532503", "name": "蒙自市" }, + { "code": "532504", "name": "弥勒市" }, + { "code": "532523", "name": "屏边苗族自治县" }, + { "code": "532524", "name": "建水县" }, + { "code": "532525", "name": "石屏县" }, + { "code": "532527", "name": "泸西县" }, + { "code": "532528", "name": "元阳县" }, + { "code": "532529", "name": "红河县" }, + { "code": "532530", "name": "金平苗族瑶族傣族自治县" }, + { "code": "532531", "name": "绿春县" }, + { "code": "532532", "name": "河口瑶族自治县" } + ] + }, + { + "code": "5326", + "name": "文山壮族苗族自治州", + "children": [ + { "code": "532601", "name": "文山市" }, + { "code": "532622", "name": "砚山县" }, + { "code": "532623", "name": "西畴县" }, + { "code": "532624", "name": "麻栗坡县" }, + { "code": "532625", "name": "马关县" }, + { "code": "532626", "name": "丘北县" }, + { "code": "532627", "name": "广南县" }, + { "code": "532628", "name": "富宁县" } + ] + }, + { + "code": "5328", + "name": "西双版纳傣族自治州", + "children": [ + { "code": "532801", "name": "景洪市" }, + { "code": "532822", "name": "勐海县" }, + { "code": "532823", "name": "勐腊县" } + ] + }, + { + "code": "5329", + "name": "大理白族自治州", + "children": [ + { "code": "532901", "name": "大理市" }, + { "code": "532922", "name": "漾濞彝族自治县" }, + { "code": "532923", "name": "祥云县" }, + { "code": "532924", "name": "宾川县" }, + { "code": "532925", "name": "弥渡县" }, + { "code": "532926", "name": "南涧彝族自治县" }, + { "code": "532927", "name": "巍山彝族回族自治县" }, + { "code": "532928", "name": "永平县" }, + { "code": "532929", "name": "云龙县" }, + { "code": "532930", "name": "洱源县" }, + { "code": "532931", "name": "剑川县" }, + { "code": "532932", "name": "鹤庆县" } + ] + }, + { + "code": "5331", + "name": "德宏傣族景颇族自治州", + "children": [ + { "code": "533102", "name": "瑞丽市" }, + { "code": "533103", "name": "芒市" }, + { "code": "533122", "name": "梁河县" }, + { "code": "533123", "name": "盈江县" }, + { "code": "533124", "name": "陇川县" } + ] + }, + { + "code": "5333", + "name": "怒江傈僳族自治州", + "children": [ + { "code": "533301", "name": "泸水市" }, + { "code": "533323", "name": "福贡县" }, + { "code": "533324", "name": "贡山独龙族怒族自治县" }, + { "code": "533325", "name": "兰坪白族普米族自治县" } + ] + }, + { + "code": "5334", + "name": "迪庆藏族自治州", + "children": [ + { "code": "533401", "name": "香格里拉市" }, + { "code": "533422", "name": "德钦县" }, + { "code": "533423", "name": "维西傈僳族自治县" } + ] + } + ] + }, + { + "code": "54", + "name": "西藏自治区", + "children": [ + { + "code": "5401", + "name": "拉萨市", + "children": [ + { "code": "540102", "name": "城关区" }, + { "code": "540103", "name": "堆龙德庆区" }, + { "code": "540104", "name": "达孜区" }, + { "code": "540121", "name": "林周县" }, + { "code": "540122", "name": "当雄县" }, + { "code": "540123", "name": "尼木县" }, + { "code": "540124", "name": "曲水县" }, + { "code": "540127", "name": "墨竹工卡县" }, + { "code": "540171", "name": "格尔木藏青工业园区" }, + { "code": "540172", "name": "拉萨经济技术开发区" }, + { "code": "540173", "name": "西藏文化旅游创意园区" }, + { "code": "540174", "name": "达孜工业园区" } + ] + }, + { + "code": "5402", + "name": "日喀则市", + "children": [ + { "code": "540202", "name": "桑珠孜区" }, + { "code": "540221", "name": "南木林县" }, + { "code": "540222", "name": "江孜县" }, + { "code": "540223", "name": "定日县" }, + { "code": "540224", "name": "萨迦县" }, + { "code": "540225", "name": "拉孜县" }, + { "code": "540226", "name": "昂仁县" }, + { "code": "540227", "name": "谢通门县" }, + { "code": "540228", "name": "白朗县" }, + { "code": "540229", "name": "仁布县" }, + { "code": "540230", "name": "康马县" }, + { "code": "540231", "name": "定结县" }, + { "code": "540232", "name": "仲巴县" }, + { "code": "540233", "name": "亚东县" }, + { "code": "540234", "name": "吉隆县" }, + { "code": "540235", "name": "聂拉木县" }, + { "code": "540236", "name": "萨嘎县" }, + { "code": "540237", "name": "岗巴县" } + ] + }, + { + "code": "5403", + "name": "昌都市", + "children": [ + { "code": "540302", "name": "卡若区" }, + { "code": "540321", "name": "江达县" }, + { "code": "540322", "name": "贡觉县" }, + { "code": "540323", "name": "类乌齐县" }, + { "code": "540324", "name": "丁青县" }, + { "code": "540325", "name": "察雅县" }, + { "code": "540326", "name": "八宿县" }, + { "code": "540327", "name": "左贡县" }, + { "code": "540328", "name": "芒康县" }, + { "code": "540329", "name": "洛隆县" }, + { "code": "540330", "name": "边坝县" } + ] + }, + { + "code": "5404", + "name": "林芝市", + "children": [ + { "code": "540402", "name": "巴宜区" }, + { "code": "540421", "name": "工布江达县" }, + { "code": "540422", "name": "米林县" }, + { "code": "540423", "name": "墨脱县" }, + { "code": "540424", "name": "波密县" }, + { "code": "540425", "name": "察隅县" }, + { "code": "540426", "name": "朗县" } + ] + }, + { + "code": "5405", + "name": "山南市", + "children": [ + { "code": "540502", "name": "乃东区" }, + { "code": "540521", "name": "扎囊县" }, + { "code": "540522", "name": "贡嘎县" }, + { "code": "540523", "name": "桑日县" }, + { "code": "540524", "name": "琼结县" }, + { "code": "540525", "name": "曲松县" }, + { "code": "540526", "name": "措美县" }, + { "code": "540527", "name": "洛扎县" }, + { "code": "540528", "name": "加查县" }, + { "code": "540529", "name": "隆子县" }, + { "code": "540530", "name": "错那县" }, + { "code": "540531", "name": "浪卡子县" } + ] + }, + { + "code": "5406", + "name": "那曲市", + "children": [ + { "code": "540602", "name": "色尼区" }, + { "code": "540621", "name": "嘉黎县" }, + { "code": "540622", "name": "比如县" }, + { "code": "540623", "name": "聂荣县" }, + { "code": "540624", "name": "安多县" }, + { "code": "540625", "name": "申扎县" }, + { "code": "540626", "name": "索县" }, + { "code": "540627", "name": "班戈县" }, + { "code": "540628", "name": "巴青县" }, + { "code": "540629", "name": "尼玛县" }, + { "code": "540630", "name": "双湖县" } + ] + }, + { + "code": "5425", + "name": "阿里地区", + "children": [ + { "code": "542521", "name": "普兰县" }, + { "code": "542522", "name": "札达县" }, + { "code": "542523", "name": "噶尔县" }, + { "code": "542524", "name": "日土县" }, + { "code": "542525", "name": "革吉县" }, + { "code": "542526", "name": "改则县" }, + { "code": "542527", "name": "措勤县" } + ] + } + ] + }, + { + "code": "61", + "name": "陕西省", + "children": [ + { + "code": "6101", + "name": "西安市", + "children": [ + { "code": "610102", "name": "新城区" }, + { "code": "610103", "name": "碑林区" }, + { "code": "610104", "name": "莲湖区" }, + { "code": "610111", "name": "灞桥区" }, + { "code": "610112", "name": "未央区" }, + { "code": "610113", "name": "雁塔区" }, + { "code": "610114", "name": "阎良区" }, + { "code": "610115", "name": "临潼区" }, + { "code": "610116", "name": "长安区" }, + { "code": "610117", "name": "高陵区" }, + { "code": "610118", "name": "鄠邑区" }, + { "code": "610122", "name": "蓝田县" }, + { "code": "610124", "name": "周至县" } + ] + }, + { + "code": "6102", + "name": "铜川市", + "children": [ + { "code": "610202", "name": "王益区" }, + { "code": "610203", "name": "印台区" }, + { "code": "610204", "name": "耀州区" }, + { "code": "610222", "name": "宜君县" } + ] + }, + { + "code": "6103", + "name": "宝鸡市", + "children": [ + { "code": "610302", "name": "渭滨区" }, + { "code": "610303", "name": "金台区" }, + { "code": "610304", "name": "陈仓区" }, + { "code": "610305", "name": "凤翔区" }, + { "code": "610323", "name": "岐山县" }, + { "code": "610324", "name": "扶风县" }, + { "code": "610326", "name": "眉县" }, + { "code": "610327", "name": "陇县" }, + { "code": "610328", "name": "千阳县" }, + { "code": "610329", "name": "麟游县" }, + { "code": "610330", "name": "凤县" }, + { "code": "610331", "name": "太白县" } + ] + }, + { + "code": "6104", + "name": "咸阳市", + "children": [ + { "code": "610402", "name": "秦都区" }, + { "code": "610403", "name": "杨陵区" }, + { "code": "610404", "name": "渭城区" }, + { "code": "610422", "name": "三原县" }, + { "code": "610423", "name": "泾阳县" }, + { "code": "610424", "name": "乾县" }, + { "code": "610425", "name": "礼泉县" }, + { "code": "610426", "name": "永寿县" }, + { "code": "610428", "name": "长武县" }, + { "code": "610429", "name": "旬邑县" }, + { "code": "610430", "name": "淳化县" }, + { "code": "610431", "name": "武功县" }, + { "code": "610481", "name": "兴平市" }, + { "code": "610482", "name": "彬州市" } + ] + }, + { + "code": "6105", + "name": "渭南市", + "children": [ + { "code": "610502", "name": "临渭区" }, + { "code": "610503", "name": "华州区" }, + { "code": "610522", "name": "潼关县" }, + { "code": "610523", "name": "大荔县" }, + { "code": "610524", "name": "合阳县" }, + { "code": "610525", "name": "澄城县" }, + { "code": "610526", "name": "蒲城县" }, + { "code": "610527", "name": "白水县" }, + { "code": "610528", "name": "富平县" }, + { "code": "610581", "name": "韩城市" }, + { "code": "610582", "name": "华阴市" } + ] + }, + { + "code": "6106", + "name": "延安市", + "children": [ + { "code": "610602", "name": "宝塔区" }, + { "code": "610603", "name": "安塞区" }, + { "code": "610621", "name": "延长县" }, + { "code": "610622", "name": "延川县" }, + { "code": "610625", "name": "志丹县" }, + { "code": "610626", "name": "吴起县" }, + { "code": "610627", "name": "甘泉县" }, + { "code": "610628", "name": "富县" }, + { "code": "610629", "name": "洛川县" }, + { "code": "610630", "name": "宜川县" }, + { "code": "610631", "name": "黄龙县" }, + { "code": "610632", "name": "黄陵县" }, + { "code": "610681", "name": "子长市" } + ] + }, + { + "code": "6107", + "name": "汉中市", + "children": [ + { "code": "610702", "name": "汉台区" }, + { "code": "610703", "name": "南郑区" }, + { "code": "610722", "name": "城固县" }, + { "code": "610723", "name": "洋县" }, + { "code": "610724", "name": "西乡县" }, + { "code": "610725", "name": "勉县" }, + { "code": "610726", "name": "宁强县" }, + { "code": "610727", "name": "略阳县" }, + { "code": "610728", "name": "镇巴县" }, + { "code": "610729", "name": "留坝县" }, + { "code": "610730", "name": "佛坪县" } + ] + }, + { + "code": "6108", + "name": "榆林市", + "children": [ + { "code": "610802", "name": "榆阳区" }, + { "code": "610803", "name": "横山区" }, + { "code": "610822", "name": "府谷县" }, + { "code": "610824", "name": "靖边县" }, + { "code": "610825", "name": "定边县" }, + { "code": "610826", "name": "绥德县" }, + { "code": "610827", "name": "米脂县" }, + { "code": "610828", "name": "佳县" }, + { "code": "610829", "name": "吴堡县" }, + { "code": "610830", "name": "清涧县" }, + { "code": "610831", "name": "子洲县" }, + { "code": "610881", "name": "神木市" } + ] + }, + { + "code": "6109", + "name": "安康市", + "children": [ + { "code": "610902", "name": "汉滨区" }, + { "code": "610921", "name": "汉阴县" }, + { "code": "610922", "name": "石泉县" }, + { "code": "610923", "name": "宁陕县" }, + { "code": "610924", "name": "紫阳县" }, + { "code": "610925", "name": "岚皋县" }, + { "code": "610926", "name": "平利县" }, + { "code": "610927", "name": "镇坪县" }, + { "code": "610929", "name": "白河县" }, + { "code": "610981", "name": "旬阳市" } + ] + }, + { + "code": "6110", + "name": "商洛市", + "children": [ + { "code": "611002", "name": "商州区" }, + { "code": "611021", "name": "洛南县" }, + { "code": "611022", "name": "丹凤县" }, + { "code": "611023", "name": "商南县" }, + { "code": "611024", "name": "山阳县" }, + { "code": "611025", "name": "镇安县" }, + { "code": "611026", "name": "柞水县" } + ] + } + ] + }, + { + "code": "62", + "name": "甘肃省", + "children": [ + { + "code": "6201", + "name": "兰州市", + "children": [ + { "code": "620102", "name": "城关区" }, + { "code": "620103", "name": "七里河区" }, + { "code": "620104", "name": "西固区" }, + { "code": "620105", "name": "安宁区" }, + { "code": "620111", "name": "红古区" }, + { "code": "620121", "name": "永登县" }, + { "code": "620122", "name": "皋兰县" }, + { "code": "620123", "name": "榆中县" }, + { "code": "620171", "name": "兰州新区" } + ] + }, + { + "code": "6202", + "name": "嘉峪关市", + "children": [ + { "code": "620201001", "name": "雄关街道" }, + { "code": "620201002", "name": "钢城街道" }, + { "code": "620201100", "name": "新城镇" }, + { "code": "620201101", "name": "峪泉镇" }, + { "code": "620201102", "name": "文殊镇" } + ] + }, + { + "code": "6203", + "name": "金昌市", + "children": [ + { "code": "620302", "name": "金川区" }, + { "code": "620321", "name": "永昌县" } + ] + }, + { + "code": "6204", + "name": "白银市", + "children": [ + { "code": "620402", "name": "白银区" }, + { "code": "620403", "name": "平川区" }, + { "code": "620421", "name": "靖远县" }, + { "code": "620422", "name": "会宁县" }, + { "code": "620423", "name": "景泰县" } + ] + }, + { + "code": "6205", + "name": "天水市", + "children": [ + { "code": "620502", "name": "秦州区" }, + { "code": "620503", "name": "麦积区" }, + { "code": "620521", "name": "清水县" }, + { "code": "620522", "name": "秦安县" }, + { "code": "620523", "name": "甘谷县" }, + { "code": "620524", "name": "武山县" }, + { "code": "620525", "name": "张家川回族自治县" } + ] + }, + { + "code": "6206", + "name": "武威市", + "children": [ + { "code": "620602", "name": "凉州区" }, + { "code": "620621", "name": "民勤县" }, + { "code": "620622", "name": "古浪县" }, + { "code": "620623", "name": "天祝藏族自治县" } + ] + }, + { + "code": "6207", + "name": "张掖市", + "children": [ + { "code": "620702", "name": "甘州区" }, + { "code": "620721", "name": "肃南裕固族自治县" }, + { "code": "620722", "name": "民乐县" }, + { "code": "620723", "name": "临泽县" }, + { "code": "620724", "name": "高台县" }, + { "code": "620725", "name": "山丹县" } + ] + }, + { + "code": "6208", + "name": "平凉市", + "children": [ + { "code": "620802", "name": "崆峒区" }, + { "code": "620821", "name": "泾川县" }, + { "code": "620822", "name": "灵台县" }, + { "code": "620823", "name": "崇信县" }, + { "code": "620825", "name": "庄浪县" }, + { "code": "620826", "name": "静宁县" }, + { "code": "620881", "name": "华亭市" } + ] + }, + { + "code": "6209", + "name": "酒泉市", + "children": [ + { "code": "620902", "name": "肃州区" }, + { "code": "620921", "name": "金塔县" }, + { "code": "620922", "name": "瓜州县" }, + { "code": "620923", "name": "肃北蒙古族自治县" }, + { "code": "620924", "name": "阿克塞哈萨克族自治县" }, + { "code": "620981", "name": "玉门市" }, + { "code": "620982", "name": "敦煌市" } + ] + }, + { + "code": "6210", + "name": "庆阳市", + "children": [ + { "code": "621002", "name": "西峰区" }, + { "code": "621021", "name": "庆城县" }, + { "code": "621022", "name": "环县" }, + { "code": "621023", "name": "华池县" }, + { "code": "621024", "name": "合水县" }, + { "code": "621025", "name": "正宁县" }, + { "code": "621026", "name": "宁县" }, + { "code": "621027", "name": "镇原县" } + ] + }, + { + "code": "6211", + "name": "定西市", + "children": [ + { "code": "621102", "name": "安定区" }, + { "code": "621121", "name": "通渭县" }, + { "code": "621122", "name": "陇西县" }, + { "code": "621123", "name": "渭源县" }, + { "code": "621124", "name": "临洮县" }, + { "code": "621125", "name": "漳县" }, + { "code": "621126", "name": "岷县" } + ] + }, + { + "code": "6212", + "name": "陇南市", + "children": [ + { "code": "621202", "name": "武都区" }, + { "code": "621221", "name": "成县" }, + { "code": "621222", "name": "文县" }, + { "code": "621223", "name": "宕昌县" }, + { "code": "621224", "name": "康县" }, + { "code": "621225", "name": "西和县" }, + { "code": "621226", "name": "礼县" }, + { "code": "621227", "name": "徽县" }, + { "code": "621228", "name": "两当县" } + ] + }, + { + "code": "6229", + "name": "临夏回族自治州", + "children": [ + { "code": "622901", "name": "临夏市" }, + { "code": "622921", "name": "临夏县" }, + { "code": "622922", "name": "康乐县" }, + { "code": "622923", "name": "永靖县" }, + { "code": "622924", "name": "广河县" }, + { "code": "622925", "name": "和政县" }, + { "code": "622926", "name": "东乡族自治县" }, + { "code": "622927", "name": "积石山保安族东乡族撒拉族自治县" } + ] + }, + { + "code": "6230", + "name": "甘南藏族自治州", + "children": [ + { "code": "623001", "name": "合作市" }, + { "code": "623021", "name": "临潭县" }, + { "code": "623022", "name": "卓尼县" }, + { "code": "623023", "name": "舟曲县" }, + { "code": "623024", "name": "迭部县" }, + { "code": "623025", "name": "玛曲县" }, + { "code": "623026", "name": "碌曲县" }, + { "code": "623027", "name": "夏河县" } + ] + } + ] + }, + { + "code": "63", + "name": "青海省", + "children": [ + { + "code": "6301", + "name": "西宁市", + "children": [ + { "code": "630102", "name": "城东区" }, + { "code": "630103", "name": "城中区" }, + { "code": "630104", "name": "城西区" }, + { "code": "630105", "name": "城北区" }, + { "code": "630106", "name": "湟中区" }, + { "code": "630121", "name": "大通回族土族自治县" }, + { "code": "630123", "name": "湟源县" } + ] + }, + { + "code": "6302", + "name": "海东市", + "children": [ + { "code": "630202", "name": "乐都区" }, + { "code": "630203", "name": "平安区" }, + { "code": "630222", "name": "民和回族土族自治县" }, + { "code": "630223", "name": "互助土族自治县" }, + { "code": "630224", "name": "化隆回族自治县" }, + { "code": "630225", "name": "循化撒拉族自治县" } + ] + }, + { + "code": "6322", + "name": "海北藏族自治州", + "children": [ + { "code": "632221", "name": "门源回族自治县" }, + { "code": "632222", "name": "祁连县" }, + { "code": "632223", "name": "海晏县" }, + { "code": "632224", "name": "刚察县" } + ] + }, + { + "code": "6323", + "name": "黄南藏族自治州", + "children": [ + { "code": "632301", "name": "同仁市" }, + { "code": "632322", "name": "尖扎县" }, + { "code": "632323", "name": "泽库县" }, + { "code": "632324", "name": "河南蒙古族自治县" } + ] + }, + { + "code": "6325", + "name": "海南藏族自治州", + "children": [ + { "code": "632521", "name": "共和县" }, + { "code": "632522", "name": "同德县" }, + { "code": "632523", "name": "贵德县" }, + { "code": "632524", "name": "兴海县" }, + { "code": "632525", "name": "贵南县" } + ] + }, + { + "code": "6326", + "name": "果洛藏族自治州", + "children": [ + { "code": "632621", "name": "玛沁县" }, + { "code": "632622", "name": "班玛县" }, + { "code": "632623", "name": "甘德县" }, + { "code": "632624", "name": "达日县" }, + { "code": "632625", "name": "久治县" }, + { "code": "632626", "name": "玛多县" } + ] + }, + { + "code": "6327", + "name": "玉树藏族自治州", + "children": [ + { "code": "632701", "name": "玉树市" }, + { "code": "632722", "name": "杂多县" }, + { "code": "632723", "name": "称多县" }, + { "code": "632724", "name": "治多县" }, + { "code": "632725", "name": "囊谦县" }, + { "code": "632726", "name": "曲麻莱县" } + ] + }, + { + "code": "6328", + "name": "海西蒙古族藏族自治州", + "children": [ + { "code": "632801", "name": "格尔木市" }, + { "code": "632802", "name": "德令哈市" }, + { "code": "632803", "name": "茫崖市" }, + { "code": "632821", "name": "乌兰县" }, + { "code": "632822", "name": "都兰县" }, + { "code": "632823", "name": "天峻县" }, + { "code": "632857", "name": "大柴旦行政委员会" } + ] + } + ] + }, + { + "code": "64", + "name": "宁夏回族自治区", + "children": [ + { + "code": "6401", + "name": "银川市", + "children": [ + { "code": "640104", "name": "兴庆区" }, + { "code": "640105", "name": "西夏区" }, + { "code": "640106", "name": "金凤区" }, + { "code": "640121", "name": "永宁县" }, + { "code": "640122", "name": "贺兰县" }, + { "code": "640181", "name": "灵武市" } + ] + }, + { + "code": "6402", + "name": "石嘴山市", + "children": [ + { "code": "640202", "name": "大武口区" }, + { "code": "640205", "name": "惠农区" }, + { "code": "640221", "name": "平罗县" } + ] + }, + { + "code": "6403", + "name": "吴忠市", + "children": [ + { "code": "640302", "name": "利通区" }, + { "code": "640303", "name": "红寺堡区" }, + { "code": "640323", "name": "盐池县" }, + { "code": "640324", "name": "同心县" }, + { "code": "640381", "name": "青铜峡市" } + ] + }, + { + "code": "6404", + "name": "固原市", + "children": [ + { "code": "640402", "name": "原州区" }, + { "code": "640422", "name": "西吉县" }, + { "code": "640423", "name": "隆德县" }, + { "code": "640424", "name": "泾源县" }, + { "code": "640425", "name": "彭阳县" } + ] + }, + { + "code": "6405", + "name": "中卫市", + "children": [ + { "code": "640502", "name": "沙坡头区" }, + { "code": "640521", "name": "中宁县" }, + { "code": "640522", "name": "海原县" } + ] + } + ] + }, + { + "code": "65", + "name": "新疆维吾尔自治区", + "children": [ + { + "code": "6501", + "name": "乌鲁木齐市", + "children": [ + { "code": "650102", "name": "天山区" }, + { "code": "650103", "name": "沙依巴克区" }, + { "code": "650104", "name": "新市区" }, + { "code": "650105", "name": "水磨沟区" }, + { "code": "650106", "name": "头屯河区" }, + { "code": "650107", "name": "达坂城区" }, + { "code": "650109", "name": "米东区" }, + { "code": "650121", "name": "乌鲁木齐县" } + ] + }, + { + "code": "6502", + "name": "克拉玛依市", + "children": [ + { "code": "650202", "name": "独山子区" }, + { "code": "650203", "name": "克拉玛依区" }, + { "code": "650204", "name": "白碱滩区" }, + { "code": "650205", "name": "乌尔禾区" } + ] + }, + { + "code": "6504", + "name": "吐鲁番市", + "children": [ + { "code": "650402", "name": "高昌区" }, + { "code": "650421", "name": "鄯善县" }, + { "code": "650422", "name": "托克逊县" } + ] + }, + { + "code": "6505", + "name": "哈密市", + "children": [ + { "code": "650502", "name": "伊州区" }, + { "code": "650521", "name": "巴里坤哈萨克自治县" }, + { "code": "650522", "name": "伊吾县" } + ] + }, + { + "code": "6523", + "name": "昌吉回族自治州", + "children": [ + { "code": "652301", "name": "昌吉市" }, + { "code": "652302", "name": "阜康市" }, + { "code": "652323", "name": "呼图壁县" }, + { "code": "652324", "name": "玛纳斯县" }, + { "code": "652325", "name": "奇台县" }, + { "code": "652327", "name": "吉木萨尔县" }, + { "code": "652328", "name": "木垒哈萨克自治县" } + ] + }, + { + "code": "6527", + "name": "博尔塔拉蒙古自治州", + "children": [ + { "code": "652701", "name": "博乐市" }, + { "code": "652702", "name": "阿拉山口市" }, + { "code": "652722", "name": "精河县" }, + { "code": "652723", "name": "温泉县" } + ] + }, + { + "code": "6528", + "name": "巴音郭楞蒙古自治州", + "children": [ + { "code": "652801", "name": "库尔勒市" }, + { "code": "652822", "name": "轮台县" }, + { "code": "652823", "name": "尉犁县" }, + { "code": "652824", "name": "若羌县" }, + { "code": "652825", "name": "且末县" }, + { "code": "652826", "name": "焉耆回族自治县" }, + { "code": "652827", "name": "和静县" }, + { "code": "652828", "name": "和硕县" }, + { "code": "652829", "name": "博湖县" }, + { "code": "652871", "name": "库尔勒经济技术开发区" } + ] + }, + { + "code": "6529", + "name": "阿克苏地区", + "children": [ + { "code": "652901", "name": "阿克苏市" }, + { "code": "652902", "name": "库车市" }, + { "code": "652922", "name": "温宿县" }, + { "code": "652924", "name": "沙雅县" }, + { "code": "652925", "name": "新和县" }, + { "code": "652926", "name": "拜城县" }, + { "code": "652927", "name": "乌什县" }, + { "code": "652928", "name": "阿瓦提县" }, + { "code": "652929", "name": "柯坪县" } + ] + }, + { + "code": "6530", + "name": "克孜勒苏柯尔克孜自治州", + "children": [ + { "code": "653001", "name": "阿图什市" }, + { "code": "653022", "name": "阿克陶县" }, + { "code": "653023", "name": "阿合奇县" }, + { "code": "653024", "name": "乌恰县" } + ] + }, + { + "code": "6531", + "name": "喀什地区", + "children": [ + { "code": "653101", "name": "喀什市" }, + { "code": "653121", "name": "疏附县" }, + { "code": "653122", "name": "疏勒县" }, + { "code": "653123", "name": "英吉沙县" }, + { "code": "653124", "name": "泽普县" }, + { "code": "653125", "name": "莎车县" }, + { "code": "653126", "name": "叶城县" }, + { "code": "653127", "name": "麦盖提县" }, + { "code": "653128", "name": "岳普湖县" }, + { "code": "653129", "name": "伽师县" }, + { "code": "653130", "name": "巴楚县" }, + { "code": "653131", "name": "塔什库尔干塔吉克自治县" } + ] + }, + { + "code": "6532", + "name": "和田地区", + "children": [ + { "code": "653201", "name": "和田市" }, + { "code": "653221", "name": "和田县" }, + { "code": "653222", "name": "墨玉县" }, + { "code": "653223", "name": "皮山县" }, + { "code": "653224", "name": "洛浦县" }, + { "code": "653225", "name": "策勒县" }, + { "code": "653226", "name": "于田县" }, + { "code": "653227", "name": "民丰县" } + ] + }, + { + "code": "6540", + "name": "伊犁哈萨克自治州", + "children": [ + { "code": "654002", "name": "伊宁市" }, + { "code": "654003", "name": "奎屯市" }, + { "code": "654004", "name": "霍尔果斯市" }, + { "code": "654021", "name": "伊宁县" }, + { "code": "654022", "name": "察布查尔锡伯自治县" }, + { "code": "654023", "name": "霍城县" }, + { "code": "654024", "name": "巩留县" }, + { "code": "654025", "name": "新源县" }, + { "code": "654026", "name": "昭苏县" }, + { "code": "654027", "name": "特克斯县" }, + { "code": "654028", "name": "尼勒克县" } + ] + }, + { + "code": "6542", + "name": "塔城地区", + "children": [ + { "code": "654201", "name": "塔城市" }, + { "code": "654202", "name": "乌苏市" }, + { "code": "654203", "name": "沙湾市" }, + { "code": "654221", "name": "额敏县" }, + { "code": "654224", "name": "托里县" }, + { "code": "654225", "name": "裕民县" }, + { "code": "654226", "name": "和布克赛尔蒙古自治县" } + ] + }, + { + "code": "6543", + "name": "阿勒泰地区", + "children": [ + { "code": "654301", "name": "阿勒泰市" }, + { "code": "654321", "name": "布尔津县" }, + { "code": "654322", "name": "富蕴县" }, + { "code": "654323", "name": "福海县" }, + { "code": "654324", "name": "哈巴河县" }, + { "code": "654325", "name": "青河县" }, + { "code": "654326", "name": "吉木乃县" } + ] + }, + { + "code": "6590", + "name": "自治区直辖县级行政区划", + "children": [ + { "code": "659001", "name": "石河子市" }, + { "code": "659002", "name": "阿拉尔市" }, + { "code": "659003", "name": "图木舒克市" }, + { "code": "659004", "name": "五家渠市" }, + { "code": "659005", "name": "北屯市" }, + { "code": "659006", "name": "铁门关市" }, + { "code": "659007", "name": "双河市" }, + { "code": "659008", "name": "可克达拉市" }, + { "code": "659009", "name": "昆玉市" }, + { "code": "659010", "name": "胡杨河市" }, + { "code": "659011", "name": "新星市" } + ] + } + ] + } +] diff --git a/cdTMP/src/components/ma-codeEditor/index.vue b/cdTMP/src/components/ma-codeEditor/index.vue new file mode 100644 index 0000000..55c2f68 --- /dev/null +++ b/cdTMP/src/components/ma-codeEditor/index.vue @@ -0,0 +1,92 @@ + + + + + + diff --git a/cdTMP/src/components/ma-colorPicker/index.vue b/cdTMP/src/components/ma-colorPicker/index.vue new file mode 100644 index 0000000..bb7fa07 --- /dev/null +++ b/cdTMP/src/components/ma-colorPicker/index.vue @@ -0,0 +1,76 @@ + + diff --git a/cdTMP/src/components/ma-crud/components/column.vue b/cdTMP/src/components/ma-crud/components/column.vue new file mode 100644 index 0000000..03dae18 --- /dev/null +++ b/cdTMP/src/components/ma-crud/components/column.vue @@ -0,0 +1,293 @@ + + + + + diff --git a/cdTMP/src/components/ma-crud/components/contextMenu.vue b/cdTMP/src/components/ma-crud/components/contextMenu.vue new file mode 100644 index 0000000..44472d2 --- /dev/null +++ b/cdTMP/src/components/ma-crud/components/contextMenu.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/cdTMP/src/components/ma-crud/components/form.vue b/cdTMP/src/components/ma-crud/components/form.vue new file mode 100644 index 0000000..b7dd732 --- /dev/null +++ b/cdTMP/src/components/ma-crud/components/form.vue @@ -0,0 +1,350 @@ + + + + diff --git a/cdTMP/src/components/ma-crud/components/import.vue b/cdTMP/src/components/ma-crud/components/import.vue new file mode 100644 index 0000000..6168bf0 --- /dev/null +++ b/cdTMP/src/components/ma-crud/components/import.vue @@ -0,0 +1,69 @@ + + + + diff --git a/cdTMP/src/components/ma-crud/components/search.vue b/cdTMP/src/components/ma-crud/components/search.vue new file mode 100644 index 0000000..3bce0d0 --- /dev/null +++ b/cdTMP/src/components/ma-crud/components/search.vue @@ -0,0 +1,180 @@ + + + + + + diff --git a/cdTMP/src/components/ma-crud/components/searchFormItem/form-cascader.vue b/cdTMP/src/components/ma-crud/components/searchFormItem/form-cascader.vue new file mode 100644 index 0000000..0c1a6fe --- /dev/null +++ b/cdTMP/src/components/ma-crud/components/searchFormItem/form-cascader.vue @@ -0,0 +1,42 @@ + + + + diff --git a/cdTMP/src/components/ma-crud/components/searchFormItem/form-input.vue b/cdTMP/src/components/ma-crud/components/searchFormItem/form-input.vue new file mode 100644 index 0000000..4d00392 --- /dev/null +++ b/cdTMP/src/components/ma-crud/components/searchFormItem/form-input.vue @@ -0,0 +1,37 @@ + + + + diff --git a/cdTMP/src/components/ma-crud/components/searchFormItem/form-picker.vue b/cdTMP/src/components/ma-crud/components/searchFormItem/form-picker.vue new file mode 100644 index 0000000..48dfc46 --- /dev/null +++ b/cdTMP/src/components/ma-crud/components/searchFormItem/form-picker.vue @@ -0,0 +1,61 @@ + + + + diff --git a/cdTMP/src/components/ma-crud/components/searchFormItem/form-select.vue b/cdTMP/src/components/ma-crud/components/searchFormItem/form-select.vue new file mode 100644 index 0000000..4065ecb --- /dev/null +++ b/cdTMP/src/components/ma-crud/components/searchFormItem/form-select.vue @@ -0,0 +1,60 @@ + + + + diff --git a/cdTMP/src/components/ma-crud/components/searchFormItem/form-tree-select.vue b/cdTMP/src/components/ma-crud/components/searchFormItem/form-tree-select.vue new file mode 100644 index 0000000..483b2a1 --- /dev/null +++ b/cdTMP/src/components/ma-crud/components/searchFormItem/form-tree-select.vue @@ -0,0 +1,52 @@ + + + + diff --git a/cdTMP/src/components/ma-crud/components/setting.vue b/cdTMP/src/components/ma-crud/components/setting.vue new file mode 100644 index 0000000..3dc48b8 --- /dev/null +++ b/cdTMP/src/components/ma-crud/components/setting.vue @@ -0,0 +1,178 @@ + + + + diff --git a/cdTMP/src/components/ma-crud/index.vue b/cdTMP/src/components/ma-crud/index.vue new file mode 100644 index 0000000..4f4b617 --- /dev/null +++ b/cdTMP/src/components/ma-crud/index.vue @@ -0,0 +1,841 @@ + + + + + diff --git a/cdTMP/src/components/ma-crud/js/columnService.js b/cdTMP/src/components/ma-crud/js/columnService.js new file mode 100644 index 0000000..678a313 --- /dev/null +++ b/cdTMP/src/components/ma-crud/js/columnService.js @@ -0,0 +1,111 @@ +import { loadDict } from "@cps/ma-form/js/networkRequest" + +/** + * columnService 列服务处理类 + * 首先感谢 @NEKGod 提交的PR,此功能原本写在了 Ma-Crud 组件,我特意摘出来,封装成类通过引用来调用 + * @author NEKGod, X.Mo + */ + +const objectService = function (item) { + this.setAttr = (key, value) => { + item[key] = value + } + + this.getAttr = (key) => { + return item[key] + } + + this.get = () => { + return item + } + + this.set = (config = {}) => { + for (let [key, value] of Object.entries(config)) { + item[key] = value + } + } +} + +class ColumnService { + /** + * @type {Map} + */ + columnMap = new Map() + + columns + + cascaders + + dicts + + strictMode + + /** + * @param data + * @param strictMode + */ + constructor(data, strictMode) { + this.columns = data.columns + this.cascaders = data.cascaders + this.dicts = data.dicts + this.strictMode = strictMode + + this.columns.forEach((item) => { + this.columnMap.set(item.dataIndex, new objectService(item)) + }) + } + + get(dataIndex) { + return this.columnMap.get(dataIndex) + } + + isEmpty(dataIndex) { + return !this.columnMap.has(dataIndex) + } + + exist(dataIndex) { + return !this.isEmpty(dataIndex) + } + + async append(item, appendStartDataIndex = null) { + if (this.strictMode === true && item.dataIndex && this.exist(item.dataIndex)) { + console.warn( + `严格模式:columnService.append(item) 参数中未有item.dataIndex属性或者item.dataIndex已存在column.${item.dataIndex}` + ) + return false + } + if (this.cascaders.includes(item.dataIndex) && item.dict) { + await loadDict(this.dicts, item) + } + this.columns.push(item) + this.columnMap.set(item.dataIndex, new objectService(item)) + // 获取排序 + if (appendStartDataIndex !== null) { + let appendIndex = + this.columns + .map((item) => { + return item.dataIndex + }) + ?.indexOf(appendStartDataIndex) ?? -1 + if (appendIndex === -1) { + return this.append(item, null) + } + let sortIndex = 0 + let appendPosIndex = 0 + this.columns.forEach((sortItem) => { + if (sortItem.dataIndex === appendStartDataIndex) { + appendPosIndex = sortIndex + } else if (sortItem.dataIndex === item.dataIndex) { + sortIndex = appendPosIndex + 1 + } else { + } + sortItem.sortIndex = sortIndex + sortIndex += 2 + }) + this.columns.sort((a, b) => a.sortIndex - b.sortIndex) + } + return true + } +} + +export default ColumnService diff --git a/cdTMP/src/components/ma-crud/js/custom-render.js b/cdTMP/src/components/ma-crud/js/custom-render.js new file mode 100644 index 0000000..52b66a6 --- /dev/null +++ b/cdTMP/src/components/ma-crud/js/custom-render.js @@ -0,0 +1,16 @@ +import { defineComponent } from "vue" +export default defineComponent({ + name: "CustomRender", + props: { + record: Object, + render: Function, + rowIndex: Number, + column: { + type: Object, + default: null + } + }, + render() { + return this.render({ record: this.record, column: this.column, rowIndex: this.rowIndex }) + } +}) diff --git a/cdTMP/src/components/ma-crud/js/defaultOptions.js b/cdTMP/src/components/ma-crud/js/defaultOptions.js new file mode 100644 index 0000000..10e7ac5 --- /dev/null +++ b/cdTMP/src/components/ma-crud/js/defaultOptions.js @@ -0,0 +1,277 @@ +export default { + // 当前crud组件的 id,全局唯一,不指定则随机生成一个 + id: undefined, + // 主键名称 + pk: "id", + // 表单是否排除PK + formExcludePk: true, + // 请求api方法 + api: () => {}, + // 请求回收站api方法 + recycleApi: () => {}, + // 是否自动请求 + autoRequest: true, + // 请求参数 + requestParams: {}, + // 设置分页组件每页记录数 + pageSizeOption: [10, 20, 30, 50, 100], + // 是否开启表格分页 + tablePagination: false, + // 设置选择列 + rowSelection: undefined, + // 是否显示边框 + bordered: { wrapper: true, cell: false }, + // 是否开启拖拽排序 + dragSort: false, + // 每页记录数 + pageSize: 10, + // 子节点为空隐藏节点按钮 + hideExpandButtonOnEmpty: true, + // 默认展开所有行 + expandAllRows: false, + // 默认展开搜索 + expandSearch: true, + // 斑马线 + stripe: true, + // 新增、编辑、删除完成后是否刷新表格 + dataCompleteRefresh: true, + // 表格大小 + size: "large", + // 是否开启双击编辑数据 + isDbClickEdit: true, + // 是否显示展开/折叠按钮 + isExpand: false, + // 是否显示自定义 + showExpandRow: false, + // 是否显示总结行 + showSummary: false, + // 自定义总结行,要传入函数 + customerSummary: false, + // 是否显示工具栏 + showTools: true, + // 表头是否吸顶 + stickyHeader: true, + // 页面布局方式,支持 normal(标准)和 fixed(固定)两种 + pageLayout: "normal", + // 默认统一设置列宽度 + columnWidth: 100, + // 搜索标签对齐方式 + searchLabelAlign: "right", + // 全局搜索标签宽度 + searchLabelWidth: "85px", + // 搜索每行列数 + searchColNumber: 4, + // 搜索提交按钮文案 + searchSubmitButtonText: "搜索", + // 搜索重置按钮文案 + searchResetButtonText: "重置", + // 搜索栏加载提示文案 + searchLoadingText: "加载数据中...", + + // 搜索提交前置方法 + beforeSearch: (requestParams) => {}, + // 搜索提交后置方法 + afterSearch: (requestParams) => {}, + + // 重置搜索钩子 + resetSearch: (searchData) => {}, + + // 请求前置处理 + beforeRequest: (requestParams) => {}, + // 请求后置处理 + afterRequest: (tableData) => {}, + // 新增打开前方法 + beforeOpenAdd: () => {}, + // 新增提交前方法 + beforeAdd: (formData) => {}, + // 新增提交后方法 + afterAdd: (response, formData) => {}, + // 编辑打开前方法 + beforeOpenEdit: (record) => {}, + // 编辑提交前方法 + beforeEdit: (formData) => {}, + // 编辑提交后方法 + afterEdit: (response, formData) => {}, + // 删除前方法 + beforeDelete: (ids) => {}, + // 删除后方法 + afterDelete: (response) => {}, + + // 组件初始化事件 + onInit: () => {}, + + // 列表 选项卡 参数配置项 + tabs: { + // 选项卡类型,参考 arco 官方 tabs 的api + type: "line", + // 选项卡触发方式: click | hover + trigger: "click", + // 指定一个字段作为选项卡,该字段的 search 必须为 true, 并且使用了字典 + dataIndex: undefined, + // 自定义选项卡项 [{ label: 'tab 1', value: 1, disabled: false }],也可函数返回一个数组 + data: undefined, + // 默认选中的 tab + defaultKey: undefined, + // 切换选项卡时,请求后台数据的参数名 + searchKey: undefined, + // 选项卡切换事件 + onChange: (value) => {}, + // 选项卡单击事件 + onClick: (value) => {} + }, + + // 表单配置项 + formOption: { + // 显示方式支持模态框和抽屉: modal drawer tag + viewType: "modal", + // 只有 viewType 为 tag 时生效,此值在所有 MaCrud 内唯一 + tagId: "", + // 只有 viewType 为 tag 时生效,tag标题名称 + tagName: "", + // tag页设置标签标题的字段名称 + titleDataIndex: undefined, + // 显示宽度 + width: 600, + // 是否全屏,只有modal有效 + isFull: false, + // 表单布局 + layout: [] + }, + add: { + // 新增api + api: undefined, + // 显示新增按钮的权限 + auth: [], + // 显示新增按钮的角色 + role: [], + // 按钮文案 + text: "新增", + // 是否显示 + show: false + }, + edit: { + // 编辑api + api: undefined, + // 显示编辑按钮的权限 + auth: [], + // 显示编辑按钮的角色 + role: [], + // 按钮文案 + text: "编辑", + // 是否显示 + show: false + }, + delete: { + // 删除api + api: undefined, + // 显示删除按钮的权限 + auth: [], + // 显示删除按钮的角色 + role: [], + // 按钮文案 + text: "删除", + + // 真实删除api + realApi: undefined, + // 显示真实删除按钮的权限 + realAuth: [], + // 显示真实删除按钮的角色 + realRole: [], + // 真实按钮文案 + realText: "删除", + + // 是否显示 + show: false + }, + recovery: { + // 恢复api + api: undefined, + // 显示恢复按钮的权限 + auth: [], + // 显示恢复按钮的角色 + role: [], + // 按钮文案 + text: "恢复", + // 是否显示 + show: false + }, + // see: { + // // 显示查看按钮的权限 + // auth: [], + // // 显示查看按钮的角色 + // role: [], + // // 按钮文案 + // text: '查看', + // // 是否显示 + // show: false, + // }, + import: { + // 导入url + url: undefined, + // 下载模板地址 + templateUrl: undefined, + // 显示导入按钮的权限 + auth: [], + // 显示导入按钮的角色 + role: [], + // 按钮文案 + text: "导入", + // 是否显示 + show: false + }, + export: { + // 导出url + url: undefined, + // 显示导出按钮的权限 + auth: [], + // 显示导出按钮的角色 + role: [], + // 按钮文案 + text: "导出", + // 是否显示 + show: false + }, + // 行自定义 class 名称 + rowCustomClass: (record, rowIndex) => [], + // 是否显示索引列 + showIndex: false, + // 索引列名称 + indexLabel: "序号", + // 索引列宽度 + indexColumnWidth: 70, + // 索引列固定方向,false 为不固定 + indexColumnFixed: "left", + // 设置请求数据label + requestParamsLabel: undefined, + // 表格滚动默认宽高 + scroll: { x: "100%", y: "100%" }, + // 调整列宽 + resizable: true, + // 是否显示操作列 + operationColumn: false, + // 操作列宽度 + operationWidth: 160, + // 操作列宽度 (新api) + operationColumnWidth: 160, + // 操作列名称 + operationColumnText: "操作", + // 操作列文字对齐方式 + operationColumnAlign: "right", + // 操作列固定方向,false 为不固定 + operationColumnFixed: "right", + + // 右键菜单配置 + contextMenu: { + // 是否开启右键菜单 + enabled: true, + // 右键菜单配置 + items: [ + { operation: "print" }, + { operation: "refresh" }, + { operation: "divider" }, + { operation: "add" }, + { operation: "edit" }, + { operation: "delete" } + ] + } +} diff --git a/cdTMP/src/components/ma-crud/types/columns.ts b/cdTMP/src/components/ma-crud/types/columns.ts new file mode 100644 index 0000000..57bdd95 --- /dev/null +++ b/cdTMP/src/components/ma-crud/types/columns.ts @@ -0,0 +1,116 @@ +import { VNodeChild } from "vue" + +/** + * 表单组件类型 + */ +import { FieldRule } from "@arco-design/web-vue" + +export type FormDateType = + | "radio" + | "checkbox" + | "select" + | "transfer" + | "tree-select" + | "cascader" + | "date" + | "month" + | "year" + | "week" + | "quarter" + | "range" + | "time" + | "input" + | "password" + | "textarea" + | "upload" + | "select-user" + | "editor" + | "code-editor" + | "icon" + | "user-info" + | "city-linkage" + | "form-group" + | "select-resource" +/** + * 列字典 + */ +export interface ColumnDict { + // 字典名称,快捷查询字典接口查询 + name?: string + // 自定义url查询 + url?: string + // url查询方法,填写url之后生效 + method?: "GET" | "POST" | "PUT" | "DELETE" + // url查询params数据,填写url之后生效 + params?: object + // url查询body数据,填写url之后生效 + body?: object + // 直接设置字典值 + data?: object | Function + // 表格列的值是否翻译为字典对应标签 + translation?: boolean + // 表格key 和 value的props设置 + props?: { + label?: string + value?: string + } +} + +export interface BasicColumn { + // 标题 + title: string + // 字段名称 + dataIndex: string + // 组件类型 + formType?: FormDateType + // 表格列对齐方式 + align?: "center" | "right" | "left" + // 字段是否加入搜索 + search?: boolean + // 列宽 + width?: number | "auto" + // 表格列是否隐藏 + hide?: boolean + // 编辑|创建 通用是否显示字段 + display?: boolean + // 添加弹窗是否显示字段 + addDisplay?: boolean + // 编辑弹窗是否显示字段 + editDisplay?: boolean + // 编辑|创建 通用是否禁用字段 + disabled?: boolean + // 添加弹窗是否禁用字段 + addDisabled?: boolean + // 编辑弹窗是否禁用字段 + editDisabled?: boolean + // 编辑|创建 通用是否只读字段 + readonly?: boolean + // 添加弹窗是否只读字段 + addReadonly?: boolean + // 编辑弹窗是否只读字段 + editReadonly?: boolean + // 自定义渲染 + customRender?: (({ record, column, rowIndex }) => VNodeChild | JSX.Element) | VNodeChild | JSX.Element + // 字段新增时默认值 + addDefaultValue?: number | string | boolean | undefined | ((record) => number | string | boolean | undefined) + // 字段编辑时默认值 + editDefaultValue?: number | string | boolean | undefined | ((record) => number | string | boolean | undefined) + // select,radio,treeSelect,下拉字典配置 + dict?: ColumnDict + // 继承公用配置 + common?: boolean + // select 和 tree-select 组件是否开启虚拟列表 + virtualList?: boolean + // 搜索默认值 + searchDefaultValue?: number | string | undefined + // 搜索描述 + searchPlaceholder?: string + //编辑|创建 通用规则 + commonRules?: FieldRule | FieldRule[] + // 创建时规则 + addRules?: FieldRule | FieldRule[] + // 编辑时规则 + editRules?: FieldRule | FieldRule[] + // 子表单数据 + children?: BasicColumn[] +} diff --git a/cdTMP/src/components/ma-crud/types/crud.ts b/cdTMP/src/components/ma-crud/types/crud.ts new file mode 100644 index 0000000..6c3abb6 --- /dev/null +++ b/cdTMP/src/components/ma-crud/types/crud.ts @@ -0,0 +1,189 @@ +export interface BasicCrud { + // 表格接口 + api?: undefined | any + // 主键名称 + pk?: string + // 设置选择列 + rowSelection?: + | undefined + | { + // 选择值的标识,默认id + key?: string + // 选择列是否显示全选 + showCheckedAll?: boolean + // 行选择器类型 + type?: "checkbox" | "radio" + // 选择器列标题 + title?: string | "#" + // 列宽度 + width?: number | 60 + // 是否固定 + fixed?: boolean | false + // 是否仅展示当前页的keys + onlyCurrent?: boolean | true + } + // 搜索label宽度 + searchLabelWidth?: string | "auto" + // 搜索label对齐方式 + searchLabelAlign?: "center" | "right" | "left" + // 一行多少列 + searchLabelCols?: number + // 是否显示边框 + bordered?: { wrapper?: boolean; cell?: boolean } + // 是否开启拖拽排序 + dragSort?: boolean + // 子节点为空隐藏节点按钮 + hideExpandButtonOnEmpty?: boolean + // 默认展开所有行 + expandAllRows?: boolean + // 斑马线 + stripe?: boolean + // 新增、编辑、删除完成后是否刷新表格 + dataCompleteRefresh?: boolean + // 表格大小 + size?: "mini" | "small" | "medium" | "large" + // 是否开启双击编辑数据 + isDbClickEdit?: boolean + // 是否显示展开/折叠按钮 + isExpand?: boolean + // 是否显示自定义 + showExpandRow?: boolean + // 是否显示总结行 + showSummary?: boolean + // 自定义总结行,要传入函数 + customerSummary?: boolean + // 是否显示工具栏 + showTools?: boolean + // 新增和编辑显示设置 + formOption?: { + // 显示方式支持模态框和抽屉?: modal drawer + viewType?: "modal" | "drawer" + // 显示宽度 + width?: number + // 是否全屏,只有modal有效 + isFull?: boolean + } + //新增确定之前修改form值 + beforeAdd?: (form) => void + //新增确定之后调用,返回接口response和form值 + afterAdd?: (response, form) => void + //编辑确定之前修改form值 + beforeEdit?: (form) => void + //编辑确定之后调用,返回接口response和form值 + afterEdit?: (response, form) => void + add?: { + // 新增api + api?: undefined | any + // 显示新增按钮的权限 + auth?: string[] + // 显示新增按钮的角色 + role?: string[] + // 按钮文案 + text?: string + // 是否显示 + show?: boolean + } + edit?: { + // 编辑api + api?: undefined | any + // 显示编辑按钮的权限 + auth?: string[] + // 显示编辑按钮的角色 + role?: string[] + // 按钮文案 + text?: string + // 是否显示 + show?: boolean + } + delete?: { + // 删除api + api?: undefined | any + // 显示删除按钮的权限 + auth?: string[] + // 显示删除按钮的角色 + role?: string[] + // 按钮文案 + text?: string + + // 真实删除api + realApi?: undefined | any + // 显示真实删除按钮的权限 + realAuth?: string[] + // 显示真实删除按钮的角色 + realRole?: string[] + // 真实按钮文案 + realText?: string + + // 是否显示 + show?: boolean + } + // Todo + recycleApi?: any + recovery?: { + // 显示恢复按钮的权限 + auth?: string[] + // 显示恢复按钮的角色 + role?: string[] + // 按钮文案 + text?: string + // 是否显示 + show?: boolean + // 恢复列表查询api + api?: undefined | any + } + // see?: { + // // 显示查看按钮的权限 + // auth?: string[] + // // 显示查看按钮的角色 + // role?: string[] + // // 按钮文案 + // text?: string + // // 是否显示 + // show?: boolean + // } + import?: { + // 导入url + url?: undefined | any + // 下载模板地址 + templateUrl?: undefined | any + // 显示导入按钮的权限 + auth?: string[] + // 显示导入按钮的角色 + role?: string[] + // 按钮文案 + text?: string + // 是否显示 + show?: boolean + } + export?: { + // 导出url + url?: undefined | any + // 显示导出按钮的权限 + auth?: string[] + // 显示导出按钮的角色 + role?: string[] + // 按钮文案 + text?: string + // 是否显示 + show?: boolean + } + // 是否显示索引列 + showIndex?: boolean + // 索引列名称 + indexLabel?: string + // 设置请求数据label + requestParamsLabel?: undefined + // 表格滚动默认宽高 + scroll?: { + x?: string + y?: string + } + // 调整列宽 + resizable?: boolean + // 是否显示操作列 + operationColumn?: boolean + // 操作列宽度 + operationWidth?: number + // 操作列名称 + operationColumnText?: string +} diff --git a/cdTMP/src/components/ma-crud/types/index.ts b/cdTMP/src/components/ma-crud/types/index.ts new file mode 100644 index 0000000..4cb6198 --- /dev/null +++ b/cdTMP/src/components/ma-crud/types/index.ts @@ -0,0 +1,2 @@ +export * from "./columns" +export * from "./crud" diff --git a/cdTMP/src/components/ma-editor/index.vue b/cdTMP/src/components/ma-editor/index.vue new file mode 100644 index 0000000..f4a5f99 --- /dev/null +++ b/cdTMP/src/components/ma-editor/index.vue @@ -0,0 +1,146 @@ + + + + diff --git a/cdTMP/src/components/ma-form-modal/index.vue b/cdTMP/src/components/ma-form-modal/index.vue new file mode 100644 index 0000000..3d182ff --- /dev/null +++ b/cdTMP/src/components/ma-form-modal/index.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/cdTMP/src/components/ma-form/containerItem/card.vue b/cdTMP/src/components/ma-form/containerItem/card.vue new file mode 100644 index 0000000..a87b522 --- /dev/null +++ b/cdTMP/src/components/ma-form/containerItem/card.vue @@ -0,0 +1,54 @@ + + + + diff --git a/cdTMP/src/components/ma-form/containerItem/children-form.vue b/cdTMP/src/components/ma-form/containerItem/children-form.vue new file mode 100644 index 0000000..66b3ddd --- /dev/null +++ b/cdTMP/src/components/ma-form/containerItem/children-form.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/cdTMP/src/components/ma-form/containerItem/grid-col.vue b/cdTMP/src/components/ma-form/containerItem/grid-col.vue new file mode 100644 index 0000000..696e730 --- /dev/null +++ b/cdTMP/src/components/ma-form/containerItem/grid-col.vue @@ -0,0 +1,39 @@ + + + + diff --git a/cdTMP/src/components/ma-form/containerItem/grid-tailwind-col.vue b/cdTMP/src/components/ma-form/containerItem/grid-tailwind-col.vue new file mode 100644 index 0000000..9b8f051 --- /dev/null +++ b/cdTMP/src/components/ma-form/containerItem/grid-tailwind-col.vue @@ -0,0 +1,36 @@ + + + + + + diff --git a/cdTMP/src/components/ma-form/containerItem/grid-tailwind.vue b/cdTMP/src/components/ma-form/containerItem/grid-tailwind.vue new file mode 100644 index 0000000..998e55d --- /dev/null +++ b/cdTMP/src/components/ma-form/containerItem/grid-tailwind.vue @@ -0,0 +1,78 @@ + + + + + + diff --git a/cdTMP/src/components/ma-form/containerItem/grid.vue b/cdTMP/src/components/ma-form/containerItem/grid.vue new file mode 100644 index 0000000..9f233b0 --- /dev/null +++ b/cdTMP/src/components/ma-form/containerItem/grid.vue @@ -0,0 +1,40 @@ + + + + diff --git a/cdTMP/src/components/ma-form/containerItem/table-cell.vue b/cdTMP/src/components/ma-form/containerItem/table-cell.vue new file mode 100644 index 0000000..4409a76 --- /dev/null +++ b/cdTMP/src/components/ma-form/containerItem/table-cell.vue @@ -0,0 +1,32 @@ + + + + diff --git a/cdTMP/src/components/ma-form/containerItem/table.vue b/cdTMP/src/components/ma-form/containerItem/table.vue new file mode 100644 index 0000000..3e156bc --- /dev/null +++ b/cdTMP/src/components/ma-form/containerItem/table.vue @@ -0,0 +1,57 @@ + + + + + + diff --git a/cdTMP/src/components/ma-form/containerItem/tabs.vue b/cdTMP/src/components/ma-form/containerItem/tabs.vue new file mode 100644 index 0000000..ee5dbb9 --- /dev/null +++ b/cdTMP/src/components/ma-form/containerItem/tabs.vue @@ -0,0 +1,66 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-auto-complete.vue b/cdTMP/src/components/ma-form/formItem/form-auto-complete.vue new file mode 100644 index 0000000..23a7699 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-auto-complete.vue @@ -0,0 +1,68 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-button.vue b/cdTMP/src/components/ma-form/formItem/form-button.vue new file mode 100644 index 0000000..856c681 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-button.vue @@ -0,0 +1,43 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-cascader.vue b/cdTMP/src/components/ma-form/formItem/form-cascader.vue new file mode 100644 index 0000000..1ac7806 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-cascader.vue @@ -0,0 +1,106 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-checkbox.vue b/cdTMP/src/components/ma-form/formItem/form-checkbox.vue new file mode 100644 index 0000000..7cde243 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-checkbox.vue @@ -0,0 +1,70 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-city-linkage.vue b/cdTMP/src/components/ma-form/formItem/form-city-linkage.vue new file mode 100644 index 0000000..b5b4672 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-city-linkage.vue @@ -0,0 +1,55 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-code-editor.vue b/cdTMP/src/components/ma-form/formItem/form-code-editor.vue new file mode 100644 index 0000000..37e1ad1 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-code-editor.vue @@ -0,0 +1,62 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-color-picker.vue b/cdTMP/src/components/ma-form/formItem/form-color-picker.vue new file mode 100644 index 0000000..7fcc8b6 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-color-picker.vue @@ -0,0 +1,54 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-component.vue b/cdTMP/src/components/ma-form/formItem/form-component.vue new file mode 100644 index 0000000..73a7999 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-component.vue @@ -0,0 +1,47 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-divider.vue b/cdTMP/src/components/ma-form/formItem/form-divider.vue new file mode 100644 index 0000000..5d875cd --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-divider.vue @@ -0,0 +1,37 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-editor.vue b/cdTMP/src/components/ma-form/formItem/form-editor.vue new file mode 100644 index 0000000..6eb7209 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-editor.vue @@ -0,0 +1,60 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-icon-picker.vue b/cdTMP/src/components/ma-form/formItem/form-icon-picker.vue new file mode 100644 index 0000000..e3e35e4 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-icon-picker.vue @@ -0,0 +1,54 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-input-number.vue b/cdTMP/src/components/ma-form/formItem/form-input-number.vue new file mode 100644 index 0000000..aef3e4f --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-input-number.vue @@ -0,0 +1,81 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-input-tag.vue b/cdTMP/src/components/ma-form/formItem/form-input-tag.vue new file mode 100644 index 0000000..424b1e4 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-input-tag.vue @@ -0,0 +1,80 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-input.vue b/cdTMP/src/components/ma-form/formItem/form-input.vue new file mode 100644 index 0000000..afcfe2a --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-input.vue @@ -0,0 +1,102 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-item.vue b/cdTMP/src/components/ma-form/formItem/form-item.vue new file mode 100644 index 0000000..9e6a8f9 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-item.vue @@ -0,0 +1,42 @@ + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-link.vue b/cdTMP/src/components/ma-form/formItem/form-link.vue new file mode 100644 index 0000000..271eadd --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-link.vue @@ -0,0 +1,39 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-mention.vue b/cdTMP/src/components/ma-form/formItem/form-mention.vue new file mode 100644 index 0000000..22f064d --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-mention.vue @@ -0,0 +1,71 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-picker.vue b/cdTMP/src/components/ma-form/formItem/form-picker.vue new file mode 100644 index 0000000..ba0e43c --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-picker.vue @@ -0,0 +1,116 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-radio.vue b/cdTMP/src/components/ma-form/formItem/form-radio.vue new file mode 100644 index 0000000..179b888 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-radio.vue @@ -0,0 +1,97 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-rate.vue b/cdTMP/src/components/ma-form/formItem/form-rate.vue new file mode 100644 index 0000000..4c9bc0d --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-rate.vue @@ -0,0 +1,65 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-resource.vue b/cdTMP/src/components/ma-form/formItem/form-resource.vue new file mode 100644 index 0000000..20341e8 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-resource.vue @@ -0,0 +1,71 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-select.vue b/cdTMP/src/components/ma-form/formItem/form-select.vue new file mode 100644 index 0000000..e5b40c1 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-select.vue @@ -0,0 +1,168 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-slider.vue b/cdTMP/src/components/ma-form/formItem/form-slider.vue new file mode 100644 index 0000000..a0d58ed --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-slider.vue @@ -0,0 +1,68 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-static-text.vue b/cdTMP/src/components/ma-form/formItem/form-static-text.vue new file mode 100644 index 0000000..4b1dcc9 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-static-text.vue @@ -0,0 +1,33 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-switch.vue b/cdTMP/src/components/ma-form/formItem/form-switch.vue new file mode 100644 index 0000000..97cdd92 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-switch.vue @@ -0,0 +1,79 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-textarea.vue b/cdTMP/src/components/ma-form/formItem/form-textarea.vue new file mode 100644 index 0000000..1c004ec --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-textarea.vue @@ -0,0 +1,71 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-transfer.vue b/cdTMP/src/components/ma-form/formItem/form-transfer.vue new file mode 100644 index 0000000..b6f62b0 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-transfer.vue @@ -0,0 +1,73 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-tree-select.vue b/cdTMP/src/components/ma-form/formItem/form-tree-select.vue new file mode 100644 index 0000000..e2723c5 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-tree-select.vue @@ -0,0 +1,101 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-upload.vue b/cdTMP/src/components/ma-form/formItem/form-upload.vue new file mode 100644 index 0000000..07540aa --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-upload.vue @@ -0,0 +1,73 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-user-select.vue b/cdTMP/src/components/ma-form/formItem/form-user-select.vue new file mode 100644 index 0000000..32951f9 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-user-select.vue @@ -0,0 +1,63 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-userinfo.vue b/cdTMP/src/components/ma-form/formItem/form-userinfo.vue new file mode 100644 index 0000000..02c14e4 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-userinfo.vue @@ -0,0 +1,53 @@ + + + + diff --git a/cdTMP/src/components/ma-form/formItem/form-verify-code.vue b/cdTMP/src/components/ma-form/formItem/form-verify-code.vue new file mode 100644 index 0000000..74ec0e2 --- /dev/null +++ b/cdTMP/src/components/ma-form/formItem/form-verify-code.vue @@ -0,0 +1,85 @@ + + + + + + diff --git a/cdTMP/src/components/ma-form/index.vue b/cdTMP/src/components/ma-form/index.vue new file mode 100644 index 0000000..cf99372 --- /dev/null +++ b/cdTMP/src/components/ma-form/index.vue @@ -0,0 +1,278 @@ + + + + + diff --git a/cdTMP/src/components/ma-form/js/defaultArrayComponent.js b/cdTMP/src/components/ma-form/js/defaultArrayComponent.js new file mode 100644 index 0000000..b6cf71f --- /dev/null +++ b/cdTMP/src/components/ma-form/js/defaultArrayComponent.js @@ -0,0 +1 @@ +export default ["checkbox", "user-select", "children-form", "resource"] diff --git a/cdTMP/src/components/ma-form/js/defaultOptions.js b/cdTMP/src/components/ma-form/js/defaultOptions.js new file mode 100644 index 0000000..43c2618 --- /dev/null +++ b/cdTMP/src/components/ma-form/js/defaultOptions.js @@ -0,0 +1,51 @@ +export default { + // 是否自动初始化表单并加载字典及联动远程数据 + init: true, + // 表单加载数据中提示文案 + loadingText: "加载中...", + // 表单样式class + customClass: [], + // 表单控件尺寸(全局) 'mini' | 'small' | 'medium' | 'large' + size: "medium", + // 标签的对齐方向 + labelAlign: "right", + // horizontal 水平排列 vertical 垂直排列 inline 行内排列 + layout: "horizontal", + // 表单是否禁用 + disabled: false, + // 表单项验证规则整体配置,例子:{ title: [{ required: true, message: '请输入标题'}] } + rules: [], + // 是否显示按钮 + showButtons: true, + + // 提交按钮图标 + submitIcon: "icon-send", + // 提交按钮类型 + submitType: "primary", + // 提交按钮状态 + submitStatus: "normal", + // 提交按钮文案 + submitText: "提交", + // 是否显示提交按钮 + submitShowBtn: true, + + // 重置按钮图标 + resetIcon: "icon-refresh", + // 重置按钮类型 + resetType: "secondary", + // 重置按钮状态 + resetStatus: "normal", + // 重置按钮文案 + resetText: "重置", + // 是否显示重置按钮 + resetShowBtn: true, + + // 表单标题文案 + formTitle: "未命名表单", + // 是否显示表单标题 + showFormTitle: false, + // 自定义标题样式css + formTitleStyle: "", + // 自定义标题样式class + formTitleClass: [] +} diff --git a/cdTMP/src/components/ma-form/js/formItemMixin.js b/cdTMP/src/components/ma-form/js/formItemMixin.js new file mode 100644 index 0000000..2173ece --- /dev/null +++ b/cdTMP/src/components/ma-form/js/formItemMixin.js @@ -0,0 +1,50 @@ +import { isString, isFunction } from "lodash" +export const maEvent = { + customeEvent: async (component, value, evName) => { + if (component[evName]) { + if (isFunction(component[evName])) { + return await component[evName](value) + } + if (isString(component[evName])) { + let customFn = new Function("value", component[evName]) + return await customFn.call(component, value) + } + } + }, + + handleCommonEvent: (component, evName) => { + if (component[evName]) { + if (isFunction(component[evName])) { + return component[evName]() + } + if (isString(component[evName])) { + let customFn = new Function("value", component[evName]) + return customFn.call(component[evName]) + } + } + }, + + handleInputEvent: (component, value) => { + maEvent.customeEvent(component, value, "onInput") + }, + + handleChangeEvent: (component, value) => { + maEvent.customeEvent(component, value, "onChange") + }, + + handleInputSearchEvent: (component, value) => { + maEvent.customeEvent(component, value, "onInputSearch") + }, + + handleTabClickEvent: (component, value) => { + maEvent.customeEvent(component, value, "onTabClick") + }, + + handleTabAddEvent: (component) => { + maEvent.customeEvent(component, component?.tabs, "onTabAdd") + }, + + handleTabDeleteEvent: (component, value) => { + maEvent.customeEvent(component, { tabs: component?.tabs, value }, "onTabDelete") + } +} diff --git a/cdTMP/src/components/ma-form/js/networkRequest.js b/cdTMP/src/components/ma-form/js/networkRequest.js new file mode 100644 index 0000000..17d83d8 --- /dev/null +++ b/cdTMP/src/components/ma-form/js/networkRequest.js @@ -0,0 +1,141 @@ +import { isArray, isFunction, set } from "lodash" +import { request } from "@/utils/request" +import commonApi from "@/api/common" +import tool from "@/utils/tool" + +export const allowUseDictComponent = [ + "radio", + "checkbox", + "select", + "transfer", + "treeSelect", + "tree-select", + "cascader" +] +export const allowCoverComponent = ["radio", "checkbox", "select", "transfer", "cascader"] + +export const requestDict = (url, method, params, data, timeout = 10 * 1000) => + request({ url, method, params, data, timeout }) + +export const handlerDictProps = (item, tmpArr) => { + let data = [] + let tran = {} + let colors = {} + let labelName = "label" + let valueName = "value" + if (item.dict.name && (!item.dict.url || !item.dict.data)) { + labelName = "title" + valueName = "key" + } + if (allowCoverComponent.includes(item.formType)) { + data = tmpArr.map((dicItem) => { + const label = dicItem[(item.dict.props && item.dict.props.label) || labelName] + let tmp = dicItem[(item.dict.props && item.dict.props.value) || valueName] + let disabled = + typeof dicItem["disabled"] == "undefined" ? false : dicItem["disabled"] === true ? true : false + let indeterminate = + typeof dicItem["indeterminate"] == "undefined" + ? false + : dicItem["indeterminate"] === true + ? true + : false + let value + if (item.dict.name || item.dict.data) value = tmp.toString() + else if (tmp === "true") value = true + else if (tmp === "false") value = false + else value = tmp + tran[value] = label + colors[value] = (item.dict.tagColors && item.dict.tagColors[value]) || undefined + return { label, value, disabled, indeterminate } + }) + } else { + data = tmpArr + } + data.tran = tran + data.colors = colors + return data +} + +export const loadDict = async (dictList, item) => { + if (allowUseDictComponent.includes(item.formType) && item.dict) { + if (item.dict.name) { + const response = await commonApi.getDict(item.dict.name) + if (response.data) { + dictList[item.dataIndex] = handlerDictProps(item, response.data) + } + } else if (item.dict.url) { + const dictData = tool.local.get("dictData") + if (item.dict.cache && dictData[item.dataIndex]) { + dictList[item.dataIndex] = dictData[item.dataIndex] + } else { + const response = await requestDict( + item.dict.url, + item.dict.method || "GET", + item.dict.params || {}, + item.dict.body || {} + ) + if (response.data) { + dictList[item.dataIndex] = handlerDictProps(item, response.data) + if (item.dict.cache) { + dictData[item.dataIndex] = dictList[item.dataIndex] + tool.local.set("dictData", dictData) + } + } + } + } else if (item.dict.data) { + if (isArray(item.dict.data)) { + dictList[item.dataIndex] = handlerDictProps(item, item.dict.data) + } else if (isFunction(item.dict.data)) { + const response = await item.dict.data() + dictList[item.dataIndex] = handlerDictProps(item, response) + } + } + } +} + +const requestCascaderData = async (val, dict, dictList, name) => { + if (dict && dict.url) { + let response + if (dict && dict.url.indexOf("{{key}}") > 0) { + response = await requestDict( + dict.url.replace("{{key}}", val), + dict.method || "GET", + dict.params || {}, + dict.data || {} + ) + } else { + let temp = { key: val } + const params = Object.assign(dict.params || {}, temp) + const data = Object.assign(dict.data || {}, temp) + response = await requestDict(dict.url, dict.method || "GET", params || {}, data || {}) + } + if (response.data && response.code === 200) { + dictList[name] = response.data.map((dicItem) => { + return { + label: dicItem[(dict.props && dict.props.label) || "label"], + value: dicItem[(dict.props && dict.props.value) || "value"], + disabled: + typeof dicItem["disabled"] == "undefined" ? false : dicItem["disabled"] === true ? true : false, + indeterminate: + typeof dicItem["indeterminate"] == "undefined" + ? false + : dicItem["indeterminate"] === true + ? true + : false + } + }) + } else { + console.error(response) + } + } +} + +export const handlerCascader = async (val, column, columns, dictList, formModel, clearData = true) => { + if (column.cascaderItem && isArray(column.cascaderItem)) { + column.cascaderItem.map(async (name) => { + const dict = columns.find((col) => col.dataIndex === name && col.dict).dict + clearData && set(formModel, name, undefined) + requestCascaderData(val, dict, dictList, name) + }) + } +} diff --git a/cdTMP/src/components/ma-form/js/utils.js b/cdTMP/src/components/ma-form/js/utils.js new file mode 100644 index 0000000..2938a20 --- /dev/null +++ b/cdTMP/src/components/ma-form/js/utils.js @@ -0,0 +1,104 @@ +import { isEmpty, isFunction, get, set } from "lodash" + +export const containerItems = ["tabs", "table", "card", "grid", "grid-tailwind", "children-form"] +export const inputType = ["input", "input-password", "input-search"] +export const pickerType = ["date", "month", "year", "week", "quarter", "range", "time"] + +export const interactiveControl = (form, columns) => { + const obj = [] + for (let name in form) { + columns.map((item) => { + if (item.dataIndex === name && item.control && isFunction(item.control)) { + obj.push(item.control(get(form, name), form)) + } + }) + } + obj.map((changItem) => { + columns.map((item, idx) => { + for (let name in changItem) { + if (name === item.dataIndex) { + columns[idx] = Object.assign(item, changItem[name] || {}) + } + } + }) + }) +} + +export const upperCaseFirst = (str) => { + if (isEmpty(str)) return "" + return str[0].toUpperCase() + str.substr(1) +} + +export const toHump = (str) => { + let temp = str[0].toUpperCase() + let step = 1 + while (str.indexOf("-") > -1) { + let index = str.indexOf("-") + temp += str.substring(step, index) + temp += str[index + 1].toUpperCase() + str = str.replace("-", "") + step = index + 1 + } + temp += str.substring(step) + return temp +} + +export const getComponentName = (formType) => { + if (containerItems.includes(formType)) { + return `Ma${toHump(formType)}` + } + if (pickerType.includes(formType)) { + return "MaFormPicker" + } + if (inputType.includes(formType)) { + return "MaFormInput" + } + return `MaForm${toHump(formType)}` +} + +export const handleFlatteningColumns = (data, columns, isChildrenForm = undefined) => { + for (let key in data) { + const item = data[key] + if (containerItems.includes(item.formType)) { + switch (item.formType) { + case "tabs": + if (item.tabs) { + item.tabs.map((tab) => { + tab.formList && handleFlatteningColumns(tab.formList, columns) + }) + } + break + case "card": + item.formList && handleFlatteningColumns(item.formList, columns) + break + case "grid-tailwind": + case "grid": + if (item.cols) { + item.cols.map((col) => { + col.formList && handleFlatteningColumns(col.formList, columns) + }) + } + break + case "table": + if (item.rows) { + item.rows.map((row) => { + if (row.cols) { + row.cols.map((col) => { + col.formList && handleFlatteningColumns(col.formList, columns) + }) + } + }) + } + break + // case 'children-form': + // item.formList && handleFlatteningColumns(item.formList, columns, item.dataIndex, true) + // break + } + } else { + // if (isChildrenForm) { + // item['isChildrenForm'] = true + // } + columns.push(item) + } + } +} diff --git a/cdTMP/src/components/ma-icon/index.vue b/cdTMP/src/components/ma-icon/index.vue new file mode 100644 index 0000000..807b6be --- /dev/null +++ b/cdTMP/src/components/ma-icon/index.vue @@ -0,0 +1,126 @@ + + + + + + diff --git a/cdTMP/src/components/ma-info-modal/index.vue b/cdTMP/src/components/ma-info-modal/index.vue new file mode 100644 index 0000000..8282fc1 --- /dev/null +++ b/cdTMP/src/components/ma-info-modal/index.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/cdTMP/src/components/ma-info/index.vue b/cdTMP/src/components/ma-info/index.vue new file mode 100644 index 0000000..a48d593 --- /dev/null +++ b/cdTMP/src/components/ma-info/index.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/cdTMP/src/components/ma-resource/button.vue b/cdTMP/src/components/ma-resource/button.vue new file mode 100644 index 0000000..c698e8d --- /dev/null +++ b/cdTMP/src/components/ma-resource/button.vue @@ -0,0 +1,88 @@ + + + + + + diff --git a/cdTMP/src/components/ma-resource/index.vue b/cdTMP/src/components/ma-resource/index.vue new file mode 100644 index 0000000..2448b3d --- /dev/null +++ b/cdTMP/src/components/ma-resource/index.vue @@ -0,0 +1,287 @@ + + + + + diff --git a/cdTMP/src/components/ma-treeSlider/index.vue b/cdTMP/src/components/ma-treeSlider/index.vue new file mode 100644 index 0000000..83e99b3 --- /dev/null +++ b/cdTMP/src/components/ma-treeSlider/index.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/cdTMP/src/components/ma-upload/components/chunk-upload.vue b/cdTMP/src/components/ma-upload/components/chunk-upload.vue new file mode 100644 index 0000000..2e14a9b --- /dev/null +++ b/cdTMP/src/components/ma-upload/components/chunk-upload.vue @@ -0,0 +1,239 @@ + + + diff --git a/cdTMP/src/components/ma-upload/components/file-upload.vue b/cdTMP/src/components/ma-upload/components/file-upload.vue new file mode 100644 index 0000000..b408cbb --- /dev/null +++ b/cdTMP/src/components/ma-upload/components/file-upload.vue @@ -0,0 +1,169 @@ + + + + diff --git a/cdTMP/src/components/ma-upload/components/image-upload.vue b/cdTMP/src/components/ma-upload/components/image-upload.vue new file mode 100644 index 0000000..db92526 --- /dev/null +++ b/cdTMP/src/components/ma-upload/components/image-upload.vue @@ -0,0 +1,192 @@ + + + + diff --git a/cdTMP/src/components/ma-upload/index.vue b/cdTMP/src/components/ma-upload/index.vue new file mode 100644 index 0000000..46cb62a --- /dev/null +++ b/cdTMP/src/components/ma-upload/index.vue @@ -0,0 +1,63 @@ + + diff --git a/cdTMP/src/components/ma-upload/js/utils.js b/cdTMP/src/components/ma-upload/js/utils.js new file mode 100644 index 0000000..2523fc4 --- /dev/null +++ b/cdTMP/src/components/ma-upload/js/utils.js @@ -0,0 +1,36 @@ +import commonApi from "@/api/common" +import tool from "@/utils/tool" +import file2md5 from "file2md5" + +export const getFileUrl = async (returnType, value, storageMode) => { + if (returnType === "url") { + return value + } else if (returnType === "id") { + const { data } = await commonApi.getFileInfoById(value) + if (data) { + data.url = tool.attachUrl(data.url, storageMode[data.storage_mode]) + return data + } + return "" + } else if (returnType === "hash") { + const { data } = await commonApi.getFileInfoByHash(value) + if (data) { + data.url = tool.attachUrl(data.url, storageMode[data.storage_mode]) + return data + } + return "" + } +} + +export const uploadRequest = async (file, type, method, requestData = {}) => { + const hash = await file2md5(file) + const dataForm = new FormData() + dataForm.append(type, file) + dataForm.append("isChunk", false) + dataForm.append("hash", hash) + for (let name in requestData) { + dataForm.append(name, requestData[name]) + } + const response = await commonApi[method](dataForm) + return response.data +} diff --git a/cdTMP/src/components/ma-user/index.vue b/cdTMP/src/components/ma-user/index.vue new file mode 100644 index 0000000..371fa38 --- /dev/null +++ b/cdTMP/src/components/ma-user/index.vue @@ -0,0 +1,142 @@ + + + + + + diff --git a/cdTMP/src/components/ma-userInfo/index.vue b/cdTMP/src/components/ma-userInfo/index.vue new file mode 100644 index 0000000..b5a616d --- /dev/null +++ b/cdTMP/src/components/ma-userInfo/index.vue @@ -0,0 +1,41 @@ + + + + + + diff --git a/cdTMP/src/config/column.js b/cdTMP/src/config/column.js new file mode 100644 index 0000000..b1c6ea4 --- /dev/null +++ b/cdTMP/src/config/column.js @@ -0,0 +1 @@ +export default {} diff --git a/cdTMP/src/config/crud.js b/cdTMP/src/config/crud.js new file mode 100644 index 0000000..8f96bb5 --- /dev/null +++ b/cdTMP/src/config/crud.js @@ -0,0 +1,25 @@ +export default { + // 响应返回解析 + parseResponseData: (res) => { + return res?.data?.items + ? // 分页响应字段结构定义 + { + rows: res?.data?.items ?? [], // 分析行数据字段结构 + pageInfo: res?.data?.pageInfo, // 分析总数字段结构 + message: res?.message, // 分析描述字段结构 + code: res?.code // 分析状态字段结构 + } + : // 无分页响应字段结构定义 + { + rows: res?.data ?? [], // 分析行数据字段结构 + message: res?.message, // 分析描述字段结构 + code: res?.code // 分析状态字段结构 + } + }, + + // 请求字段结构定义 + request: { + page: "page", //规定当前分页字段 + pageSize: "pageSize" //规定一页条数字段 + } +} diff --git a/cdTMP/src/config/upload.js b/cdTMP/src/config/upload.js new file mode 100644 index 0000000..e45f3e6 --- /dev/null +++ b/cdTMP/src/config/upload.js @@ -0,0 +1,15 @@ +export default { + storage: { + LOCAL: "http://127.0.0.1:8000", + OSS: "", + COS: "", + QINIU: "" + }, + + storageMode: { + 1: "LOCAL", + 2: "OSS", + 3: "QINIU", + 4: "COS" + } +} diff --git a/cdTMP/src/directives/auth/auth.js b/cdTMP/src/directives/auth/auth.js new file mode 100644 index 0000000..ea70ed6 --- /dev/null +++ b/cdTMP/src/directives/auth/auth.js @@ -0,0 +1,8 @@ +import { useUserStore } from "@/store" + +const auth = (name) => { + const userStore = useUserStore() + return (userStore.codes && userStore.codes.includes(name)) || (userStore.codes && userStore.codes.includes("*")) +} + +export default auth diff --git a/cdTMP/src/directives/auth/index.js b/cdTMP/src/directives/auth/index.js new file mode 100644 index 0000000..0537606 --- /dev/null +++ b/cdTMP/src/directives/auth/index.js @@ -0,0 +1,29 @@ +import auth from "./auth" + +const checkAuth = (el, binding) => { + const { value } = binding + + if (Array.isArray(value)) { + if (value.length > 0) { + let isHas = false + value.map((item) => { + isHas = auth(item) + }) + + if (!isHas && el.parentNode) { + el.parentNode.removeChild(el) + } + } + } else { + throw new Error(`need permission! Like v-auth="['admin','user']"`) + } +} + +export default { + mounted(el, binding) { + checkAuth(el, binding) + }, + updated(el, binding) { + checkAuth(el, binding) + } +} diff --git a/cdTMP/src/directives/copy/index.js b/cdTMP/src/directives/copy/index.js new file mode 100644 index 0000000..e271b6e --- /dev/null +++ b/cdTMP/src/directives/copy/index.js @@ -0,0 +1,27 @@ +import useClipboard from "vue-clipboard3" +import { Message } from "@arco-design/web-vue" + +const copy = (el, binding) => { + const { value } = binding + el.addEventListener("click", async () => { + if (value && value !== "") { + try { + await useClipboard().toClipboard(value) + Message.success("已成功复制到剪切板") + } catch (e) { + Message.error("复制失败") + } + } else { + throw new Error(`need for copy content! Like v-copy="Hello World"`) + } + }) +} + +export default { + mounted(el, binding) { + copy(el, binding) + }, + updated(el, binding) { + copy(el, binding) + } +} diff --git a/cdTMP/src/directives/index.js b/cdTMP/src/directives/index.js new file mode 100644 index 0000000..ac0ac0d --- /dev/null +++ b/cdTMP/src/directives/index.js @@ -0,0 +1,11 @@ +import auth from "./auth/index" +import role from "./role/index" +import copy from "./copy/index" + +export default { + install(Vue) { + Vue.directive("auth", auth) + Vue.directive("role", role) + Vue.directive("copy", copy) + } +} diff --git a/cdTMP/src/directives/role/index.js b/cdTMP/src/directives/role/index.js new file mode 100644 index 0000000..16e97d4 --- /dev/null +++ b/cdTMP/src/directives/role/index.js @@ -0,0 +1,29 @@ +import role from "./role" + +const checkRole = (el, binding) => { + const { value } = binding + + if (Array.isArray(value)) { + if (value.length > 0) { + let isHas = false + value.map((item) => { + isHas = role(item) + }) + + if (!isHas && el.parentNode) { + el.parentNode.removeChild(el) + } + } + } else { + throw new Error(`need role! Like v-role="['seo', 'cfo']"`) + } +} + +export default { + mounted(el, binding) { + checkRole(el, binding) + }, + updated(el, binding) { + checkRole(el, binding) + } +} diff --git a/cdTMP/src/directives/role/role.js b/cdTMP/src/directives/role/role.js new file mode 100644 index 0000000..6e2b28b --- /dev/null +++ b/cdTMP/src/directives/role/role.js @@ -0,0 +1,11 @@ +import { useUserStore } from "@/store" + +const role = (name) => { + const userStore = useUserStore() + return ( + (userStore.roles && userStore.roles.includes(name)) || + (userStore.roles && userStore.roles.includes("superAdmin")) + ) +} + +export default role diff --git a/cdTMP/src/hooks/permission.js b/cdTMP/src/hooks/permission.js index f477e12..e01dbda 100644 --- a/cdTMP/src/hooks/permission.js +++ b/cdTMP/src/hooks/permission.js @@ -12,6 +12,7 @@ export default function usePermission() { route.meta?.roles?.includes(userStore.role) ) }, + // 返回第一个可访问的路径 findFirstPermissionRoute(_routers, role = "admin") { const cloneRouters = [..._routers] while (cloneRouters.length) { diff --git a/cdTMP/src/hooks/responsive.ts b/cdTMP/src/hooks/responsive.ts new file mode 100644 index 0000000..d397d14 --- /dev/null +++ b/cdTMP/src/hooks/responsive.ts @@ -0,0 +1,32 @@ +import { onMounted, onBeforeMount, onBeforeUnmount } from 'vue' +import { useDebounceFn } from '@vueuse/core' +import { useAppStore } from '@/store' +import { addEventListen, removeEventListen } from '@/utils/event' + +const WIDTH = 992 // https://arco.design/vue/component/grid#responsivevalue + +function queryDevice() { + const rect = document.body.getBoundingClientRect() + return rect.width - 1 < WIDTH +} + +export default function useResponsive(immediate?: boolean) { + const appStore = useAppStore() + function resizeHandler() { + if (!document.hidden) { + const isMobile = queryDevice() + appStore.toggleDevice(isMobile ? 'mobile' : 'desktop') + appStore.toggleMenu(isMobile) + } + } + const debounceFn = useDebounceFn(resizeHandler, 100) + onMounted(() => { + if (immediate) debounceFn() + }) + onBeforeMount(() => { + addEventListen(window, 'resize', debounceFn) + }) + onBeforeUnmount(() => { + removeEventListen(window, 'resize', debounceFn) + }) +} diff --git a/cdTMP/src/layout/404.vue b/cdTMP/src/layout/404.vue new file mode 100644 index 0000000..abc7de5 --- /dev/null +++ b/cdTMP/src/layout/404.vue @@ -0,0 +1,25 @@ + + + diff --git a/cdTMP/src/layout/components/footer.vue b/cdTMP/src/layout/components/footer.vue new file mode 100644 index 0000000..ade2866 --- /dev/null +++ b/cdTMP/src/layout/components/footer.vue @@ -0,0 +1,15 @@ + + + + + diff --git a/cdTMP/src/layout/components/navbar.vue b/cdTMP/src/layout/components/navbar.vue index 481b14f..fd6b066 100644 --- a/cdTMP/src/layout/components/navbar.vue +++ b/cdTMP/src/layout/components/navbar.vue @@ -77,13 +77,13 @@ - + 用户中心 - + 用户设置 diff --git a/cdTMP/src/layout/components/tab-bar.vue b/cdTMP/src/layout/components/tab-bar.vue index f55216e..986dd77 100644 --- a/cdTMP/src/layout/components/tab-bar.vue +++ b/cdTMP/src/layout/components/tab-bar.vue @@ -13,78 +13,77 @@ - diff --git a/cdTMP/src/layout/components/tab-item.vue b/cdTMP/src/layout/components/tab-item.vue new file mode 100644 index 0000000..efcceda --- /dev/null +++ b/cdTMP/src/layout/components/tab-item.vue @@ -0,0 +1,185 @@ + + + + + diff --git a/cdTMP/src/layout/default-layout.vue b/cdTMP/src/layout/default-layout.vue index a3beae8..c892693 100644 --- a/cdTMP/src/layout/default-layout.vue +++ b/cdTMP/src/layout/default-layout.vue @@ -3,8 +3,8 @@

- - + + - + + + + +