diff --git a/web-ui/.editorconfig b/platform-web-ui/.editorconfig similarity index 100% rename from web-ui/.editorconfig rename to platform-web-ui/.editorconfig diff --git a/web-ui/.env b/platform-web-ui/.env similarity index 67% rename from web-ui/.env rename to platform-web-ui/.env index 471a330..5974833 100644 --- a/web-ui/.env +++ b/platform-web-ui/.env @@ -1,4 +1,4 @@ # 所有环境自定义的环境变量(命名必须以 VITE_ 开头) ## 项目标题 -VITE_APP_TITLE = "Molly租户管理系统" +VITE_APP_TITLE = "Molly平台管理系统" diff --git a/platform-web-ui/.env.development b/platform-web-ui/.env.development new file mode 100644 index 0000000..30cf5db --- /dev/null +++ b/platform-web-ui/.env.development @@ -0,0 +1,10 @@ +# 开发环境自定义的环境变量(命名必须以 VITE_ 开头) + +## 后端接口公共路径(如果解决跨域问题采用反向代理就只需写公共路径) +VITE_BASE_API = 'http://localhost:18891' + +## 路由模式 hash 或 html5 +VITE_ROUTER_HISTORY = 'hash' + +## 开发环境地址前缀(一般 '/','./' 都可以) +VITE_PUBLIC_PATH = '/platform/' diff --git a/web-ui/.env.production b/platform-web-ui/.env.production similarity index 91% rename from web-ui/.env.production rename to platform-web-ui/.env.production index b15e347..1b42164 100644 --- a/web-ui/.env.production +++ b/platform-web-ui/.env.production @@ -7,4 +7,4 @@ VITE_BASE_API = 'http://localhost:18891' VITE_ROUTER_HISTORY = 'hash' ## 打包路径(就是网站前缀,例如部署到 https://un-pany.github.io/v3-admin-vite/ 域名下,就需要填写 /v3-admin-vite/) -VITE_PUBLIC_PATH = '/v3-admin-vite/' +VITE_PUBLIC_PATH = '/platform/' diff --git a/web-ui/.env.staging b/platform-web-ui/.env.staging similarity index 91% rename from web-ui/.env.staging rename to platform-web-ui/.env.staging index 2bd8d06..b994687 100644 --- a/web-ui/.env.staging +++ b/platform-web-ui/.env.staging @@ -7,4 +7,4 @@ VITE_BASE_API = 'http://localhost:18891' VITE_ROUTER_HISTORY = 'hash' ## 打包路径(就是网站前缀,例如部署到 https://un-pany.github.io/v3-admin-vite/ 域名下,就需要填写 /v3-admin-vite/) -VITE_PUBLIC_PATH = '/v3-admin-vite/' +VITE_PUBLIC_PATH = '/platform/' diff --git a/web-ui/.eslintignore b/platform-web-ui/.eslintignore similarity index 100% rename from web-ui/.eslintignore rename to platform-web-ui/.eslintignore diff --git a/web-ui/.eslintrc.js b/platform-web-ui/.eslintrc.js similarity index 100% rename from web-ui/.eslintrc.js rename to platform-web-ui/.eslintrc.js diff --git a/web-ui/.gitignore b/platform-web-ui/.gitignore similarity index 100% rename from web-ui/.gitignore rename to platform-web-ui/.gitignore diff --git a/web-ui/.npmrc b/platform-web-ui/.npmrc similarity index 100% rename from web-ui/.npmrc rename to platform-web-ui/.npmrc diff --git a/web-ui/.prettierignore b/platform-web-ui/.prettierignore similarity index 100% rename from web-ui/.prettierignore rename to platform-web-ui/.prettierignore diff --git a/web-ui/README.md b/platform-web-ui/README.md similarity index 100% rename from web-ui/README.md rename to platform-web-ui/README.md diff --git a/web-ui/index.html b/platform-web-ui/index.html similarity index 100% rename from web-ui/index.html rename to platform-web-ui/index.html diff --git a/web-ui/package.json b/platform-web-ui/package.json similarity index 100% rename from web-ui/package.json rename to platform-web-ui/package.json diff --git a/web-ui/pnpm-lock.yaml b/platform-web-ui/pnpm-lock.yaml similarity index 100% rename from web-ui/pnpm-lock.yaml rename to platform-web-ui/pnpm-lock.yaml diff --git a/web-ui/prettier.config.js b/platform-web-ui/prettier.config.js similarity index 100% rename from web-ui/prettier.config.js rename to platform-web-ui/prettier.config.js diff --git a/web-ui/public/app-loading.css b/platform-web-ui/public/app-loading.css similarity index 100% rename from web-ui/public/app-loading.css rename to platform-web-ui/public/app-loading.css diff --git a/web-ui/public/favicon.ico b/platform-web-ui/public/favicon.ico similarity index 100% rename from web-ui/public/favicon.ico rename to platform-web-ui/public/favicon.ico diff --git a/web-ui/src/App.vue b/platform-web-ui/src/App.vue similarity index 100% rename from web-ui/src/App.vue rename to platform-web-ui/src/App.vue diff --git a/web-ui/src/api/config.ts b/platform-web-ui/src/api/config.ts similarity index 100% rename from web-ui/src/api/config.ts rename to platform-web-ui/src/api/config.ts diff --git a/web-ui/src/api/dept.ts b/platform-web-ui/src/api/dept.ts similarity index 100% rename from web-ui/src/api/dept.ts rename to platform-web-ui/src/api/dept.ts diff --git a/web-ui/src/api/device.ts b/platform-web-ui/src/api/device.ts similarity index 100% rename from web-ui/src/api/device.ts rename to platform-web-ui/src/api/device.ts diff --git a/web-ui/src/api/dict.ts b/platform-web-ui/src/api/dict.ts similarity index 100% rename from web-ui/src/api/dict.ts rename to platform-web-ui/src/api/dict.ts diff --git a/web-ui/src/api/login.ts b/platform-web-ui/src/api/login.ts similarity index 100% rename from web-ui/src/api/login.ts rename to platform-web-ui/src/api/login.ts diff --git a/web-ui/src/api/loginLog.ts b/platform-web-ui/src/api/loginLog.ts similarity index 100% rename from web-ui/src/api/loginLog.ts rename to platform-web-ui/src/api/loginLog.ts diff --git a/web-ui/src/api/menu.ts b/platform-web-ui/src/api/menu.ts similarity index 100% rename from web-ui/src/api/menu.ts rename to platform-web-ui/src/api/menu.ts diff --git a/web-ui/src/api/project.ts b/platform-web-ui/src/api/project.ts similarity index 100% rename from web-ui/src/api/project.ts rename to platform-web-ui/src/api/project.ts diff --git a/web-ui/src/api/role.ts b/platform-web-ui/src/api/role.ts similarity index 100% rename from web-ui/src/api/role.ts rename to platform-web-ui/src/api/role.ts diff --git a/web-ui/src/api/server.ts b/platform-web-ui/src/api/server.ts similarity index 100% rename from web-ui/src/api/server.ts rename to platform-web-ui/src/api/server.ts diff --git a/web-ui/src/api/template.ts b/platform-web-ui/src/api/template.ts similarity index 100% rename from web-ui/src/api/template.ts rename to platform-web-ui/src/api/template.ts diff --git a/web-ui/src/api/tenant.ts b/platform-web-ui/src/api/tenant.ts similarity index 100% rename from web-ui/src/api/tenant.ts rename to platform-web-ui/src/api/tenant.ts diff --git a/web-ui/src/api/upload.ts b/platform-web-ui/src/api/upload.ts similarity index 100% rename from web-ui/src/api/upload.ts rename to platform-web-ui/src/api/upload.ts diff --git a/web-ui/src/api/user.ts b/platform-web-ui/src/api/user.ts similarity index 100% rename from web-ui/src/api/user.ts rename to platform-web-ui/src/api/user.ts diff --git a/web-ui/src/assets/ChinaArea.json b/platform-web-ui/src/assets/ChinaArea.json similarity index 100% rename from web-ui/src/assets/ChinaArea.json rename to platform-web-ui/src/assets/ChinaArea.json diff --git a/web-ui/src/assets/docs/preview1.png b/platform-web-ui/src/assets/docs/preview1.png similarity index 100% rename from web-ui/src/assets/docs/preview1.png rename to platform-web-ui/src/assets/docs/preview1.png diff --git a/web-ui/src/assets/docs/preview2.png b/platform-web-ui/src/assets/docs/preview2.png similarity index 100% rename from web-ui/src/assets/docs/preview2.png rename to platform-web-ui/src/assets/docs/preview2.png diff --git a/web-ui/src/assets/docs/preview3.png b/platform-web-ui/src/assets/docs/preview3.png similarity index 100% rename from web-ui/src/assets/docs/preview3.png rename to platform-web-ui/src/assets/docs/preview3.png diff --git a/web-ui/src/assets/docs/qq.png b/platform-web-ui/src/assets/docs/qq.png similarity index 100% rename from web-ui/src/assets/docs/qq.png rename to platform-web-ui/src/assets/docs/qq.png diff --git a/web-ui/src/assets/docs/wechat.png b/platform-web-ui/src/assets/docs/wechat.png similarity index 100% rename from web-ui/src/assets/docs/wechat.png rename to platform-web-ui/src/assets/docs/wechat.png diff --git a/web-ui/src/assets/error-page/403.svg b/platform-web-ui/src/assets/error-page/403.svg similarity index 100% rename from web-ui/src/assets/error-page/403.svg rename to platform-web-ui/src/assets/error-page/403.svg diff --git a/web-ui/src/assets/error-page/404.svg b/platform-web-ui/src/assets/error-page/404.svg similarity index 100% rename from web-ui/src/assets/error-page/404.svg rename to platform-web-ui/src/assets/error-page/404.svg diff --git a/web-ui/src/assets/layouts/logo-text-1.png b/platform-web-ui/src/assets/layouts/logo-text-1.png similarity index 100% rename from web-ui/src/assets/layouts/logo-text-1.png rename to platform-web-ui/src/assets/layouts/logo-text-1.png diff --git a/web-ui/src/assets/layouts/logo-text-2.png b/platform-web-ui/src/assets/layouts/logo-text-2.png similarity index 100% rename from web-ui/src/assets/layouts/logo-text-2.png rename to platform-web-ui/src/assets/layouts/logo-text-2.png diff --git a/web-ui/src/assets/layouts/logo.png b/platform-web-ui/src/assets/layouts/logo.png similarity index 100% rename from web-ui/src/assets/layouts/logo.png rename to platform-web-ui/src/assets/layouts/logo.png diff --git a/web-ui/src/assets/login-bg3.svg b/platform-web-ui/src/assets/login-bg3.svg similarity index 100% rename from web-ui/src/assets/login-bg3.svg rename to platform-web-ui/src/assets/login-bg3.svg diff --git a/web-ui/src/components/CascaderDept/index.vue b/platform-web-ui/src/components/CascaderDept/index.vue similarity index 100% rename from web-ui/src/components/CascaderDept/index.vue rename to platform-web-ui/src/components/CascaderDept/index.vue diff --git a/web-ui/src/components/ImageUpload/index.vue b/platform-web-ui/src/components/ImageUpload/index.vue similarity index 100% rename from web-ui/src/components/ImageUpload/index.vue rename to platform-web-ui/src/components/ImageUpload/index.vue diff --git a/web-ui/src/components/Notify/NotifyList.vue b/platform-web-ui/src/components/Notify/NotifyList.vue similarity index 100% rename from web-ui/src/components/Notify/NotifyList.vue rename to platform-web-ui/src/components/Notify/NotifyList.vue diff --git a/web-ui/src/components/Notify/index.vue b/platform-web-ui/src/components/Notify/index.vue similarity index 100% rename from web-ui/src/components/Notify/index.vue rename to platform-web-ui/src/components/Notify/index.vue diff --git a/web-ui/src/components/OperateUser/index.vue b/platform-web-ui/src/components/OperateUser/index.vue similarity index 100% rename from web-ui/src/components/OperateUser/index.vue rename to platform-web-ui/src/components/OperateUser/index.vue diff --git a/web-ui/src/components/Screenfull/index.vue b/platform-web-ui/src/components/Screenfull/index.vue similarity index 100% rename from web-ui/src/components/Screenfull/index.vue rename to platform-web-ui/src/components/Screenfull/index.vue diff --git a/web-ui/src/components/SearchChinaArea/index.vue b/platform-web-ui/src/components/SearchChinaArea/index.vue similarity index 100% rename from web-ui/src/components/SearchChinaArea/index.vue rename to platform-web-ui/src/components/SearchChinaArea/index.vue diff --git a/web-ui/src/components/SearchMenu/SearchFooter.vue b/platform-web-ui/src/components/SearchMenu/SearchFooter.vue similarity index 100% rename from web-ui/src/components/SearchMenu/SearchFooter.vue rename to platform-web-ui/src/components/SearchMenu/SearchFooter.vue diff --git a/web-ui/src/components/SearchMenu/SearchModal.vue b/platform-web-ui/src/components/SearchMenu/SearchModal.vue similarity index 100% rename from web-ui/src/components/SearchMenu/SearchModal.vue rename to platform-web-ui/src/components/SearchMenu/SearchModal.vue diff --git a/web-ui/src/components/SearchMenu/SearchResult.vue b/platform-web-ui/src/components/SearchMenu/SearchResult.vue similarity index 100% rename from web-ui/src/components/SearchMenu/SearchResult.vue rename to platform-web-ui/src/components/SearchMenu/SearchResult.vue diff --git a/web-ui/src/components/SearchMenu/index.vue b/platform-web-ui/src/components/SearchMenu/index.vue similarity index 100% rename from web-ui/src/components/SearchMenu/index.vue rename to platform-web-ui/src/components/SearchMenu/index.vue diff --git a/web-ui/src/components/SearchProject/index.vue b/platform-web-ui/src/components/SearchProject/index.vue similarity index 100% rename from web-ui/src/components/SearchProject/index.vue rename to platform-web-ui/src/components/SearchProject/index.vue diff --git a/web-ui/src/components/SearchTenant/index.vue b/platform-web-ui/src/components/SearchTenant/index.vue similarity index 100% rename from web-ui/src/components/SearchTenant/index.vue rename to platform-web-ui/src/components/SearchTenant/index.vue diff --git a/web-ui/src/components/SelectDictData/index.vue b/platform-web-ui/src/components/SelectDictData/index.vue similarity index 100% rename from web-ui/src/components/SelectDictData/index.vue rename to platform-web-ui/src/components/SelectDictData/index.vue diff --git a/web-ui/src/components/SvgIcon/index.vue b/platform-web-ui/src/components/SvgIcon/index.vue similarity index 100% rename from web-ui/src/components/SvgIcon/index.vue rename to platform-web-ui/src/components/SvgIcon/index.vue diff --git a/web-ui/src/components/SvgIconSelect/index.vue b/platform-web-ui/src/components/SvgIconSelect/index.vue similarity index 100% rename from web-ui/src/components/SvgIconSelect/index.vue rename to platform-web-ui/src/components/SvgIconSelect/index.vue diff --git a/web-ui/src/components/SvgLoading/index.vue b/platform-web-ui/src/components/SvgLoading/index.vue similarity index 100% rename from web-ui/src/components/SvgLoading/index.vue rename to platform-web-ui/src/components/SvgLoading/index.vue diff --git a/web-ui/src/components/ThemeSwitch/index.vue b/platform-web-ui/src/components/ThemeSwitch/index.vue similarity index 100% rename from web-ui/src/components/ThemeSwitch/index.vue rename to platform-web-ui/src/components/ThemeSwitch/index.vue diff --git a/web-ui/src/components/UserAvatar/index.vue b/platform-web-ui/src/components/UserAvatar/index.vue similarity index 100% rename from web-ui/src/components/UserAvatar/index.vue rename to platform-web-ui/src/components/UserAvatar/index.vue diff --git a/web-ui/src/components/UserLoginLog/index.vue b/platform-web-ui/src/components/UserLoginLog/index.vue similarity index 100% rename from web-ui/src/components/UserLoginLog/index.vue rename to platform-web-ui/src/components/UserLoginLog/index.vue diff --git a/web-ui/src/components/index.ts b/platform-web-ui/src/components/index.ts similarity index 100% rename from web-ui/src/components/index.ts rename to platform-web-ui/src/components/index.ts diff --git a/web-ui/src/config/layouts.ts b/platform-web-ui/src/config/layouts.ts similarity index 100% rename from web-ui/src/config/layouts.ts rename to platform-web-ui/src/config/layouts.ts diff --git a/web-ui/src/config/route.ts b/platform-web-ui/src/config/route.ts similarity index 100% rename from web-ui/src/config/route.ts rename to platform-web-ui/src/config/route.ts diff --git a/web-ui/src/config/white-list.ts b/platform-web-ui/src/config/white-list.ts similarity index 100% rename from web-ui/src/config/white-list.ts rename to platform-web-ui/src/config/white-list.ts diff --git a/web-ui/src/constants/app-key.ts b/platform-web-ui/src/constants/app-key.ts similarity index 100% rename from web-ui/src/constants/app-key.ts rename to platform-web-ui/src/constants/app-key.ts diff --git a/web-ui/src/constants/cache-key.ts b/platform-web-ui/src/constants/cache-key.ts similarity index 100% rename from web-ui/src/constants/cache-key.ts rename to platform-web-ui/src/constants/cache-key.ts diff --git a/web-ui/src/directives/index.ts b/platform-web-ui/src/directives/index.ts similarity index 100% rename from web-ui/src/directives/index.ts rename to platform-web-ui/src/directives/index.ts diff --git a/web-ui/src/hooks/useFetchSelect.ts b/platform-web-ui/src/hooks/useFetchSelect.ts similarity index 100% rename from web-ui/src/hooks/useFetchSelect.ts rename to platform-web-ui/src/hooks/useFetchSelect.ts diff --git a/web-ui/src/hooks/useFullscreenLoading.ts b/platform-web-ui/src/hooks/useFullscreenLoading.ts similarity index 100% rename from web-ui/src/hooks/useFullscreenLoading.ts rename to platform-web-ui/src/hooks/useFullscreenLoading.ts diff --git a/web-ui/src/hooks/useIndex.ts b/platform-web-ui/src/hooks/useIndex.ts similarity index 100% rename from web-ui/src/hooks/useIndex.ts rename to platform-web-ui/src/hooks/useIndex.ts diff --git a/web-ui/src/hooks/usePagination.ts b/platform-web-ui/src/hooks/usePagination.ts similarity index 100% rename from web-ui/src/hooks/usePagination.ts rename to platform-web-ui/src/hooks/usePagination.ts diff --git a/web-ui/src/hooks/useRouteListener.ts b/platform-web-ui/src/hooks/useRouteListener.ts similarity index 100% rename from web-ui/src/hooks/useRouteListener.ts rename to platform-web-ui/src/hooks/useRouteListener.ts diff --git a/web-ui/src/hooks/useTenantAndProject.ts b/platform-web-ui/src/hooks/useTenantAndProject.ts similarity index 100% rename from web-ui/src/hooks/useTenantAndProject.ts rename to platform-web-ui/src/hooks/useTenantAndProject.ts diff --git a/web-ui/src/hooks/useTheme.ts b/platform-web-ui/src/hooks/useTheme.ts similarity index 100% rename from web-ui/src/hooks/useTheme.ts rename to platform-web-ui/src/hooks/useTheme.ts diff --git a/web-ui/src/hooks/useTitle.ts b/platform-web-ui/src/hooks/useTitle.ts similarity index 100% rename from web-ui/src/hooks/useTitle.ts rename to platform-web-ui/src/hooks/useTitle.ts diff --git a/web-ui/src/hooks/useWatermark.ts b/platform-web-ui/src/hooks/useWatermark.ts similarity index 100% rename from web-ui/src/hooks/useWatermark.ts rename to platform-web-ui/src/hooks/useWatermark.ts diff --git a/web-ui/src/icons/index.ts b/platform-web-ui/src/icons/index.ts similarity index 100% rename from web-ui/src/icons/index.ts rename to platform-web-ui/src/icons/index.ts diff --git a/web-ui/src/icons/svg/404.svg b/platform-web-ui/src/icons/svg/404.svg similarity index 100% rename from web-ui/src/icons/svg/404.svg rename to platform-web-ui/src/icons/svg/404.svg diff --git a/web-ui/src/icons/svg/bug.svg b/platform-web-ui/src/icons/svg/bug.svg similarity index 100% rename from web-ui/src/icons/svg/bug.svg rename to platform-web-ui/src/icons/svg/bug.svg diff --git a/web-ui/src/icons/svg/component.svg b/platform-web-ui/src/icons/svg/component.svg similarity index 100% rename from web-ui/src/icons/svg/component.svg rename to platform-web-ui/src/icons/svg/component.svg diff --git a/web-ui/src/icons/svg/config.svg b/platform-web-ui/src/icons/svg/config.svg similarity index 100% rename from web-ui/src/icons/svg/config.svg rename to platform-web-ui/src/icons/svg/config.svg diff --git a/web-ui/src/icons/svg/dashboard.svg b/platform-web-ui/src/icons/svg/dashboard.svg similarity index 100% rename from web-ui/src/icons/svg/dashboard.svg rename to platform-web-ui/src/icons/svg/dashboard.svg diff --git a/web-ui/src/icons/svg/device.svg b/platform-web-ui/src/icons/svg/device.svg similarity index 100% rename from web-ui/src/icons/svg/device.svg rename to platform-web-ui/src/icons/svg/device.svg diff --git a/web-ui/src/icons/svg/device_deploy.svg b/platform-web-ui/src/icons/svg/device_deploy.svg similarity index 100% rename from web-ui/src/icons/svg/device_deploy.svg rename to platform-web-ui/src/icons/svg/device_deploy.svg diff --git a/web-ui/src/icons/svg/device_list.svg b/platform-web-ui/src/icons/svg/device_list.svg similarity index 100% rename from web-ui/src/icons/svg/device_list.svg rename to platform-web-ui/src/icons/svg/device_list.svg diff --git a/web-ui/src/icons/svg/doc.svg b/platform-web-ui/src/icons/svg/doc.svg similarity index 100% rename from web-ui/src/icons/svg/doc.svg rename to platform-web-ui/src/icons/svg/doc.svg diff --git a/web-ui/src/icons/svg/enter_outlined.svg b/platform-web-ui/src/icons/svg/enter_outlined.svg similarity index 100% rename from web-ui/src/icons/svg/enter_outlined.svg rename to platform-web-ui/src/icons/svg/enter_outlined.svg diff --git a/web-ui/src/icons/svg/fullscreen-exit.svg b/platform-web-ui/src/icons/svg/fullscreen-exit.svg similarity index 100% rename from web-ui/src/icons/svg/fullscreen-exit.svg rename to platform-web-ui/src/icons/svg/fullscreen-exit.svg diff --git a/web-ui/src/icons/svg/fullscreen.svg b/platform-web-ui/src/icons/svg/fullscreen.svg similarity index 100% rename from web-ui/src/icons/svg/fullscreen.svg rename to platform-web-ui/src/icons/svg/fullscreen.svg diff --git a/web-ui/src/icons/svg/github.svg b/platform-web-ui/src/icons/svg/github.svg similarity index 100% rename from web-ui/src/icons/svg/github.svg rename to platform-web-ui/src/icons/svg/github.svg diff --git a/web-ui/src/icons/svg/help.svg b/platform-web-ui/src/icons/svg/help.svg similarity index 100% rename from web-ui/src/icons/svg/help.svg rename to platform-web-ui/src/icons/svg/help.svg diff --git a/web-ui/src/icons/svg/interface.svg b/platform-web-ui/src/icons/svg/interface.svg similarity index 100% rename from web-ui/src/icons/svg/interface.svg rename to platform-web-ui/src/icons/svg/interface.svg diff --git a/web-ui/src/icons/svg/keyboard-down.svg b/platform-web-ui/src/icons/svg/keyboard-down.svg similarity index 100% rename from web-ui/src/icons/svg/keyboard-down.svg rename to platform-web-ui/src/icons/svg/keyboard-down.svg diff --git a/web-ui/src/icons/svg/keyboard-enter.svg b/platform-web-ui/src/icons/svg/keyboard-enter.svg similarity index 100% rename from web-ui/src/icons/svg/keyboard-enter.svg rename to platform-web-ui/src/icons/svg/keyboard-enter.svg diff --git a/web-ui/src/icons/svg/keyboard-esc.svg b/platform-web-ui/src/icons/svg/keyboard-esc.svg similarity index 100% rename from web-ui/src/icons/svg/keyboard-esc.svg rename to platform-web-ui/src/icons/svg/keyboard-esc.svg diff --git a/web-ui/src/icons/svg/keyboard-up.svg b/platform-web-ui/src/icons/svg/keyboard-up.svg similarity index 100% rename from web-ui/src/icons/svg/keyboard-up.svg rename to platform-web-ui/src/icons/svg/keyboard-up.svg diff --git a/web-ui/src/icons/svg/keyboard_esc.svg b/platform-web-ui/src/icons/svg/keyboard_esc.svg similarity index 100% rename from web-ui/src/icons/svg/keyboard_esc.svg rename to platform-web-ui/src/icons/svg/keyboard_esc.svg diff --git a/web-ui/src/icons/svg/link.svg b/platform-web-ui/src/icons/svg/link.svg similarity index 100% rename from web-ui/src/icons/svg/link.svg rename to platform-web-ui/src/icons/svg/link.svg diff --git a/web-ui/src/icons/svg/lock.svg b/platform-web-ui/src/icons/svg/lock.svg similarity index 100% rename from web-ui/src/icons/svg/lock.svg rename to platform-web-ui/src/icons/svg/lock.svg diff --git a/web-ui/src/icons/svg/menu.svg b/platform-web-ui/src/icons/svg/menu.svg similarity index 100% rename from web-ui/src/icons/svg/menu.svg rename to platform-web-ui/src/icons/svg/menu.svg diff --git a/web-ui/src/icons/svg/message.svg b/platform-web-ui/src/icons/svg/message.svg similarity index 100% rename from web-ui/src/icons/svg/message.svg rename to platform-web-ui/src/icons/svg/message.svg diff --git a/web-ui/src/icons/svg/money.svg b/platform-web-ui/src/icons/svg/money.svg similarity index 100% rename from web-ui/src/icons/svg/money.svg rename to platform-web-ui/src/icons/svg/money.svg diff --git a/web-ui/src/icons/svg/monitor.svg b/platform-web-ui/src/icons/svg/monitor.svg similarity index 100% rename from web-ui/src/icons/svg/monitor.svg rename to platform-web-ui/src/icons/svg/monitor.svg diff --git a/web-ui/src/icons/svg/notice.svg b/platform-web-ui/src/icons/svg/notice.svg similarity index 100% rename from web-ui/src/icons/svg/notice.svg rename to platform-web-ui/src/icons/svg/notice.svg diff --git a/web-ui/src/icons/svg/peoples.svg b/platform-web-ui/src/icons/svg/peoples.svg similarity index 100% rename from web-ui/src/icons/svg/peoples.svg rename to platform-web-ui/src/icons/svg/peoples.svg diff --git a/web-ui/src/icons/svg/pre.svg b/platform-web-ui/src/icons/svg/pre.svg similarity index 100% rename from web-ui/src/icons/svg/pre.svg rename to platform-web-ui/src/icons/svg/pre.svg diff --git a/web-ui/src/icons/svg/pre_dept.svg b/platform-web-ui/src/icons/svg/pre_dept.svg similarity index 100% rename from web-ui/src/icons/svg/pre_dept.svg rename to platform-web-ui/src/icons/svg/pre_dept.svg diff --git a/web-ui/src/icons/svg/pre_perm.svg b/platform-web-ui/src/icons/svg/pre_perm.svg similarity index 100% rename from web-ui/src/icons/svg/pre_perm.svg rename to platform-web-ui/src/icons/svg/pre_perm.svg diff --git a/web-ui/src/icons/svg/pre_role.svg b/platform-web-ui/src/icons/svg/pre_role.svg similarity index 100% rename from web-ui/src/icons/svg/pre_role.svg rename to platform-web-ui/src/icons/svg/pre_role.svg diff --git a/web-ui/src/icons/svg/pre_user.svg b/platform-web-ui/src/icons/svg/pre_user.svg similarity index 100% rename from web-ui/src/icons/svg/pre_user.svg rename to platform-web-ui/src/icons/svg/pre_user.svg diff --git a/web-ui/src/icons/svg/project.svg b/platform-web-ui/src/icons/svg/project.svg similarity index 100% rename from web-ui/src/icons/svg/project.svg rename to platform-web-ui/src/icons/svg/project.svg diff --git a/web-ui/src/icons/svg/project_list.svg b/platform-web-ui/src/icons/svg/project_list.svg similarity index 100% rename from web-ui/src/icons/svg/project_list.svg rename to platform-web-ui/src/icons/svg/project_list.svg diff --git a/web-ui/src/icons/svg/search.svg b/platform-web-ui/src/icons/svg/search.svg similarity index 100% rename from web-ui/src/icons/svg/search.svg rename to platform-web-ui/src/icons/svg/search.svg diff --git a/web-ui/src/icons/svg/server_monitor.svg b/platform-web-ui/src/icons/svg/server_monitor.svg similarity index 100% rename from web-ui/src/icons/svg/server_monitor.svg rename to platform-web-ui/src/icons/svg/server_monitor.svg diff --git a/web-ui/src/icons/svg/size.svg b/platform-web-ui/src/icons/svg/size.svg similarity index 100% rename from web-ui/src/icons/svg/size.svg rename to platform-web-ui/src/icons/svg/size.svg diff --git a/web-ui/src/icons/svg/statistics.svg b/platform-web-ui/src/icons/svg/statistics.svg similarity index 100% rename from web-ui/src/icons/svg/statistics.svg rename to platform-web-ui/src/icons/svg/statistics.svg diff --git a/web-ui/src/icons/svg/statistics_energy.svg b/platform-web-ui/src/icons/svg/statistics_energy.svg similarity index 100% rename from web-ui/src/icons/svg/statistics_energy.svg rename to platform-web-ui/src/icons/svg/statistics_energy.svg diff --git a/web-ui/src/icons/svg/statistics_trend.svg b/platform-web-ui/src/icons/svg/statistics_trend.svg similarity index 100% rename from web-ui/src/icons/svg/statistics_trend.svg rename to platform-web-ui/src/icons/svg/statistics_trend.svg diff --git a/web-ui/src/icons/svg/sys.svg b/platform-web-ui/src/icons/svg/sys.svg similarity index 100% rename from web-ui/src/icons/svg/sys.svg rename to platform-web-ui/src/icons/svg/sys.svg diff --git a/web-ui/src/icons/svg/sys_china_area.svg b/platform-web-ui/src/icons/svg/sys_china_area.svg similarity index 100% rename from web-ui/src/icons/svg/sys_china_area.svg rename to platform-web-ui/src/icons/svg/sys_china_area.svg diff --git a/web-ui/src/icons/svg/sys_dictionary.svg b/platform-web-ui/src/icons/svg/sys_dictionary.svg similarity index 100% rename from web-ui/src/icons/svg/sys_dictionary.svg rename to platform-web-ui/src/icons/svg/sys_dictionary.svg diff --git a/web-ui/src/icons/svg/sys_login_log.svg b/platform-web-ui/src/icons/svg/sys_login_log.svg similarity index 100% rename from web-ui/src/icons/svg/sys_login_log.svg rename to platform-web-ui/src/icons/svg/sys_login_log.svg diff --git a/web-ui/src/icons/svg/sys_logs.svg b/platform-web-ui/src/icons/svg/sys_logs.svg similarity index 100% rename from web-ui/src/icons/svg/sys_logs.svg rename to platform-web-ui/src/icons/svg/sys_logs.svg diff --git a/web-ui/src/icons/svg/sys_oper_log.svg b/platform-web-ui/src/icons/svg/sys_oper_log.svg similarity index 100% rename from web-ui/src/icons/svg/sys_oper_log.svg rename to platform-web-ui/src/icons/svg/sys_oper_log.svg diff --git a/web-ui/src/icons/svg/sys_swagger2.svg b/platform-web-ui/src/icons/svg/sys_swagger2.svg similarity index 100% rename from web-ui/src/icons/svg/sys_swagger2.svg rename to platform-web-ui/src/icons/svg/sys_swagger2.svg diff --git a/web-ui/src/icons/svg/template.svg b/platform-web-ui/src/icons/svg/template.svg similarity index 100% rename from web-ui/src/icons/svg/template.svg rename to platform-web-ui/src/icons/svg/template.svg diff --git a/web-ui/src/icons/svg/unocss.svg b/platform-web-ui/src/icons/svg/unocss.svg similarity index 100% rename from web-ui/src/icons/svg/unocss.svg rename to platform-web-ui/src/icons/svg/unocss.svg diff --git a/web-ui/src/icons/svg/user.svg b/platform-web-ui/src/icons/svg/user.svg similarity index 100% rename from web-ui/src/icons/svg/user.svg rename to platform-web-ui/src/icons/svg/user.svg diff --git a/web-ui/src/layouts/LeftMode.vue b/platform-web-ui/src/layouts/LeftMode.vue similarity index 100% rename from web-ui/src/layouts/LeftMode.vue rename to platform-web-ui/src/layouts/LeftMode.vue diff --git a/web-ui/src/layouts/LeftTopMode.vue b/platform-web-ui/src/layouts/LeftTopMode.vue similarity index 100% rename from web-ui/src/layouts/LeftTopMode.vue rename to platform-web-ui/src/layouts/LeftTopMode.vue diff --git a/web-ui/src/layouts/TopMode.vue b/platform-web-ui/src/layouts/TopMode.vue similarity index 100% rename from web-ui/src/layouts/TopMode.vue rename to platform-web-ui/src/layouts/TopMode.vue diff --git a/web-ui/src/layouts/components/AppMain.vue b/platform-web-ui/src/layouts/components/AppMain.vue similarity index 100% rename from web-ui/src/layouts/components/AppMain.vue rename to platform-web-ui/src/layouts/components/AppMain.vue diff --git a/web-ui/src/layouts/components/Breadcrumb/index.vue b/platform-web-ui/src/layouts/components/Breadcrumb/index.vue similarity index 100% rename from web-ui/src/layouts/components/Breadcrumb/index.vue rename to platform-web-ui/src/layouts/components/Breadcrumb/index.vue diff --git a/web-ui/src/layouts/components/CompConsumer/index.ts b/platform-web-ui/src/layouts/components/CompConsumer/index.ts similarity index 100% rename from web-ui/src/layouts/components/CompConsumer/index.ts rename to platform-web-ui/src/layouts/components/CompConsumer/index.ts diff --git a/web-ui/src/layouts/components/Footer/index.vue b/platform-web-ui/src/layouts/components/Footer/index.vue similarity index 100% rename from web-ui/src/layouts/components/Footer/index.vue rename to platform-web-ui/src/layouts/components/Footer/index.vue diff --git a/web-ui/src/layouts/components/Hamburger/index.vue b/platform-web-ui/src/layouts/components/Hamburger/index.vue similarity index 100% rename from web-ui/src/layouts/components/Hamburger/index.vue rename to platform-web-ui/src/layouts/components/Hamburger/index.vue diff --git a/web-ui/src/layouts/components/Logo/index.vue b/platform-web-ui/src/layouts/components/Logo/index.vue similarity index 100% rename from web-ui/src/layouts/components/Logo/index.vue rename to platform-web-ui/src/layouts/components/Logo/index.vue diff --git a/web-ui/src/layouts/components/NavigationBar/index.vue b/platform-web-ui/src/layouts/components/NavigationBar/index.vue similarity index 100% rename from web-ui/src/layouts/components/NavigationBar/index.vue rename to platform-web-ui/src/layouts/components/NavigationBar/index.vue diff --git a/web-ui/src/layouts/components/RightPanel/index.vue b/platform-web-ui/src/layouts/components/RightPanel/index.vue similarity index 100% rename from web-ui/src/layouts/components/RightPanel/index.vue rename to platform-web-ui/src/layouts/components/RightPanel/index.vue diff --git a/web-ui/src/layouts/components/SearchTenantAndTenant/index.vue b/platform-web-ui/src/layouts/components/SearchTenantAndTenant/index.vue similarity index 100% rename from web-ui/src/layouts/components/SearchTenantAndTenant/index.vue rename to platform-web-ui/src/layouts/components/SearchTenantAndTenant/index.vue diff --git a/web-ui/src/layouts/components/SelectControlSize/index.vue b/platform-web-ui/src/layouts/components/SelectControlSize/index.vue similarity index 100% rename from web-ui/src/layouts/components/SelectControlSize/index.vue rename to platform-web-ui/src/layouts/components/SelectControlSize/index.vue diff --git a/web-ui/src/layouts/components/Settings/SelectLayoutMode.vue b/platform-web-ui/src/layouts/components/Settings/SelectLayoutMode.vue similarity index 100% rename from web-ui/src/layouts/components/Settings/SelectLayoutMode.vue rename to platform-web-ui/src/layouts/components/Settings/SelectLayoutMode.vue diff --git a/web-ui/src/layouts/components/Settings/index.vue b/platform-web-ui/src/layouts/components/Settings/index.vue similarity index 100% rename from web-ui/src/layouts/components/Settings/index.vue rename to platform-web-ui/src/layouts/components/Settings/index.vue diff --git a/web-ui/src/layouts/components/Sidebar/SidebarItem.vue b/platform-web-ui/src/layouts/components/Sidebar/SidebarItem.vue similarity index 100% rename from web-ui/src/layouts/components/Sidebar/SidebarItem.vue rename to platform-web-ui/src/layouts/components/Sidebar/SidebarItem.vue diff --git a/web-ui/src/layouts/components/Sidebar/SidebarItemLink.vue b/platform-web-ui/src/layouts/components/Sidebar/SidebarItemLink.vue similarity index 100% rename from web-ui/src/layouts/components/Sidebar/SidebarItemLink.vue rename to platform-web-ui/src/layouts/components/Sidebar/SidebarItemLink.vue diff --git a/web-ui/src/layouts/components/Sidebar/index.vue b/platform-web-ui/src/layouts/components/Sidebar/index.vue similarity index 100% rename from web-ui/src/layouts/components/Sidebar/index.vue rename to platform-web-ui/src/layouts/components/Sidebar/index.vue diff --git a/web-ui/src/layouts/components/TagsView/ScrollPane.vue b/platform-web-ui/src/layouts/components/TagsView/ScrollPane.vue similarity index 100% rename from web-ui/src/layouts/components/TagsView/ScrollPane.vue rename to platform-web-ui/src/layouts/components/TagsView/ScrollPane.vue diff --git a/web-ui/src/layouts/components/TagsView/index.vue b/platform-web-ui/src/layouts/components/TagsView/index.vue similarity index 100% rename from web-ui/src/layouts/components/TagsView/index.vue rename to platform-web-ui/src/layouts/components/TagsView/index.vue diff --git a/web-ui/src/layouts/components/index.ts b/platform-web-ui/src/layouts/components/index.ts similarity index 100% rename from web-ui/src/layouts/components/index.ts rename to platform-web-ui/src/layouts/components/index.ts diff --git a/web-ui/src/layouts/hooks/useResize.ts b/platform-web-ui/src/layouts/hooks/useResize.ts similarity index 100% rename from web-ui/src/layouts/hooks/useResize.ts rename to platform-web-ui/src/layouts/hooks/useResize.ts diff --git a/web-ui/src/layouts/index.vue b/platform-web-ui/src/layouts/index.vue similarity index 100% rename from web-ui/src/layouts/index.vue rename to platform-web-ui/src/layouts/index.vue diff --git a/web-ui/src/main.ts b/platform-web-ui/src/main.ts similarity index 100% rename from web-ui/src/main.ts rename to platform-web-ui/src/main.ts diff --git a/web-ui/src/plugins/element-plus-icon/index.ts b/platform-web-ui/src/plugins/element-plus-icon/index.ts similarity index 100% rename from web-ui/src/plugins/element-plus-icon/index.ts rename to platform-web-ui/src/plugins/element-plus-icon/index.ts diff --git a/web-ui/src/plugins/element-plus/index.ts b/platform-web-ui/src/plugins/element-plus/index.ts similarity index 100% rename from web-ui/src/plugins/element-plus/index.ts rename to platform-web-ui/src/plugins/element-plus/index.ts diff --git a/web-ui/src/plugins/index.ts b/platform-web-ui/src/plugins/index.ts similarity index 100% rename from web-ui/src/plugins/index.ts rename to platform-web-ui/src/plugins/index.ts diff --git a/web-ui/src/plugins/vxe-table/index.ts b/platform-web-ui/src/plugins/vxe-table/index.ts similarity index 100% rename from web-ui/src/plugins/vxe-table/index.ts rename to platform-web-ui/src/plugins/vxe-table/index.ts diff --git a/web-ui/src/router/helper.ts b/platform-web-ui/src/router/helper.ts similarity index 100% rename from web-ui/src/router/helper.ts rename to platform-web-ui/src/router/helper.ts diff --git a/web-ui/src/router/index.ts b/platform-web-ui/src/router/index.ts similarity index 100% rename from web-ui/src/router/index.ts rename to platform-web-ui/src/router/index.ts diff --git a/web-ui/src/router/permission.ts b/platform-web-ui/src/router/permission.ts similarity index 100% rename from web-ui/src/router/permission.ts rename to platform-web-ui/src/router/permission.ts diff --git a/web-ui/src/store/index.ts b/platform-web-ui/src/store/index.ts similarity index 100% rename from web-ui/src/store/index.ts rename to platform-web-ui/src/store/index.ts diff --git a/web-ui/src/store/modules/app.ts b/platform-web-ui/src/store/modules/app.ts similarity index 100% rename from web-ui/src/store/modules/app.ts rename to platform-web-ui/src/store/modules/app.ts diff --git a/web-ui/src/store/modules/dict.ts b/platform-web-ui/src/store/modules/dict.ts similarity index 100% rename from web-ui/src/store/modules/dict.ts rename to platform-web-ui/src/store/modules/dict.ts diff --git a/web-ui/src/store/modules/notice.ts b/platform-web-ui/src/store/modules/notice.ts similarity index 100% rename from web-ui/src/store/modules/notice.ts rename to platform-web-ui/src/store/modules/notice.ts diff --git a/web-ui/src/store/modules/permission.ts b/platform-web-ui/src/store/modules/permission.ts similarity index 100% rename from web-ui/src/store/modules/permission.ts rename to platform-web-ui/src/store/modules/permission.ts diff --git a/web-ui/src/store/modules/project.ts b/platform-web-ui/src/store/modules/project.ts similarity index 100% rename from web-ui/src/store/modules/project.ts rename to platform-web-ui/src/store/modules/project.ts diff --git a/web-ui/src/store/modules/settings.ts b/platform-web-ui/src/store/modules/settings.ts similarity index 100% rename from web-ui/src/store/modules/settings.ts rename to platform-web-ui/src/store/modules/settings.ts diff --git a/web-ui/src/store/modules/tags-view.ts b/platform-web-ui/src/store/modules/tags-view.ts similarity index 100% rename from web-ui/src/store/modules/tags-view.ts rename to platform-web-ui/src/store/modules/tags-view.ts diff --git a/web-ui/src/store/modules/tenant.ts b/platform-web-ui/src/store/modules/tenant.ts similarity index 100% rename from web-ui/src/store/modules/tenant.ts rename to platform-web-ui/src/store/modules/tenant.ts diff --git a/web-ui/src/store/modules/user.ts b/platform-web-ui/src/store/modules/user.ts similarity index 100% rename from web-ui/src/store/modules/user.ts rename to platform-web-ui/src/store/modules/user.ts diff --git a/web-ui/src/styles/element-plus.scss b/platform-web-ui/src/styles/element-plus.scss similarity index 100% rename from web-ui/src/styles/element-plus.scss rename to platform-web-ui/src/styles/element-plus.scss diff --git a/web-ui/src/styles/index.scss b/platform-web-ui/src/styles/index.scss similarity index 100% rename from web-ui/src/styles/index.scss rename to platform-web-ui/src/styles/index.scss diff --git a/web-ui/src/styles/mixins.scss b/platform-web-ui/src/styles/mixins.scss similarity index 100% rename from web-ui/src/styles/mixins.scss rename to platform-web-ui/src/styles/mixins.scss diff --git a/web-ui/src/styles/theme/core/element-plus.scss b/platform-web-ui/src/styles/theme/core/element-plus.scss similarity index 100% rename from web-ui/src/styles/theme/core/element-plus.scss rename to platform-web-ui/src/styles/theme/core/element-plus.scss diff --git a/web-ui/src/styles/theme/core/error-page.scss b/platform-web-ui/src/styles/theme/core/error-page.scss similarity index 100% rename from web-ui/src/styles/theme/core/error-page.scss rename to platform-web-ui/src/styles/theme/core/error-page.scss diff --git a/web-ui/src/styles/theme/core/index.scss b/platform-web-ui/src/styles/theme/core/index.scss similarity index 100% rename from web-ui/src/styles/theme/core/index.scss rename to platform-web-ui/src/styles/theme/core/index.scss diff --git a/web-ui/src/styles/theme/core/layouts.scss b/platform-web-ui/src/styles/theme/core/layouts.scss similarity index 100% rename from web-ui/src/styles/theme/core/layouts.scss rename to platform-web-ui/src/styles/theme/core/layouts.scss diff --git a/web-ui/src/styles/theme/core/login.scss b/platform-web-ui/src/styles/theme/core/login.scss similarity index 100% rename from web-ui/src/styles/theme/core/login.scss rename to platform-web-ui/src/styles/theme/core/login.scss diff --git a/web-ui/src/styles/theme/core/other.scss b/platform-web-ui/src/styles/theme/core/other.scss similarity index 100% rename from web-ui/src/styles/theme/core/other.scss rename to platform-web-ui/src/styles/theme/core/other.scss diff --git a/web-ui/src/styles/theme/core/vxe-table.scss b/platform-web-ui/src/styles/theme/core/vxe-table.scss similarity index 100% rename from web-ui/src/styles/theme/core/vxe-table.scss rename to platform-web-ui/src/styles/theme/core/vxe-table.scss diff --git a/web-ui/src/styles/theme/dark-blue/element-plus.css b/platform-web-ui/src/styles/theme/dark-blue/element-plus.css similarity index 100% rename from web-ui/src/styles/theme/dark-blue/element-plus.css rename to platform-web-ui/src/styles/theme/dark-blue/element-plus.css diff --git a/web-ui/src/styles/theme/dark-blue/element-plus.scss b/platform-web-ui/src/styles/theme/dark-blue/element-plus.scss similarity index 100% rename from web-ui/src/styles/theme/dark-blue/element-plus.scss rename to platform-web-ui/src/styles/theme/dark-blue/element-plus.scss diff --git a/web-ui/src/styles/theme/dark-blue/index.scss b/platform-web-ui/src/styles/theme/dark-blue/index.scss similarity index 100% rename from web-ui/src/styles/theme/dark-blue/index.scss rename to platform-web-ui/src/styles/theme/dark-blue/index.scss diff --git a/web-ui/src/styles/theme/dark-blue/variables.scss b/platform-web-ui/src/styles/theme/dark-blue/variables.scss similarity index 100% rename from web-ui/src/styles/theme/dark-blue/variables.scss rename to platform-web-ui/src/styles/theme/dark-blue/variables.scss diff --git a/web-ui/src/styles/theme/dark/index.scss b/platform-web-ui/src/styles/theme/dark/index.scss similarity index 100% rename from web-ui/src/styles/theme/dark/index.scss rename to platform-web-ui/src/styles/theme/dark/index.scss diff --git a/web-ui/src/styles/theme/dark/variables.scss b/platform-web-ui/src/styles/theme/dark/variables.scss similarity index 100% rename from web-ui/src/styles/theme/dark/variables.scss rename to platform-web-ui/src/styles/theme/dark/variables.scss diff --git a/web-ui/src/styles/theme/register.scss b/platform-web-ui/src/styles/theme/register.scss similarity index 100% rename from web-ui/src/styles/theme/register.scss rename to platform-web-ui/src/styles/theme/register.scss diff --git a/web-ui/src/styles/transition.scss b/platform-web-ui/src/styles/transition.scss similarity index 100% rename from web-ui/src/styles/transition.scss rename to platform-web-ui/src/styles/transition.scss diff --git a/web-ui/src/styles/variables.css b/platform-web-ui/src/styles/variables.css similarity index 100% rename from web-ui/src/styles/variables.css rename to platform-web-ui/src/styles/variables.css diff --git a/web-ui/src/styles/vxe-table.scss b/platform-web-ui/src/styles/vxe-table.scss similarity index 100% rename from web-ui/src/styles/vxe-table.scss rename to platform-web-ui/src/styles/vxe-table.scss diff --git a/web-ui/src/types/base.ts b/platform-web-ui/src/types/base.ts similarity index 100% rename from web-ui/src/types/base.ts rename to platform-web-ui/src/types/base.ts diff --git a/web-ui/src/types/cms.ts b/platform-web-ui/src/types/cms.ts similarity index 100% rename from web-ui/src/types/cms.ts rename to platform-web-ui/src/types/cms.ts diff --git a/web-ui/src/types/dict.ts b/platform-web-ui/src/types/dict.ts similarity index 100% rename from web-ui/src/types/dict.ts rename to platform-web-ui/src/types/dict.ts diff --git a/web-ui/src/types/lms.ts b/platform-web-ui/src/types/lms.ts similarity index 100% rename from web-ui/src/types/lms.ts rename to platform-web-ui/src/types/lms.ts diff --git a/web-ui/src/types/pms.ts b/platform-web-ui/src/types/pms.ts similarity index 100% rename from web-ui/src/types/pms.ts rename to platform-web-ui/src/types/pms.ts diff --git a/web-ui/src/types/sys.ts b/platform-web-ui/src/types/sys.ts similarity index 100% rename from web-ui/src/types/sys.ts rename to platform-web-ui/src/types/sys.ts diff --git a/web-ui/src/utils/cache/cookies.ts b/platform-web-ui/src/utils/cache/cookies.ts similarity index 100% rename from web-ui/src/utils/cache/cookies.ts rename to platform-web-ui/src/utils/cache/cookies.ts diff --git a/web-ui/src/utils/cache/local-storage.ts b/platform-web-ui/src/utils/cache/local-storage.ts similarity index 100% rename from web-ui/src/utils/cache/local-storage.ts rename to platform-web-ui/src/utils/cache/local-storage.ts diff --git a/web-ui/src/utils/fix-blank-page.ts b/platform-web-ui/src/utils/fix-blank-page.ts similarity index 100% rename from web-ui/src/utils/fix-blank-page.ts rename to platform-web-ui/src/utils/fix-blank-page.ts diff --git a/web-ui/src/utils/index.ts b/platform-web-ui/src/utils/index.ts similarity index 100% rename from web-ui/src/utils/index.ts rename to platform-web-ui/src/utils/index.ts diff --git a/web-ui/src/utils/service.ts b/platform-web-ui/src/utils/service.ts similarity index 100% rename from web-ui/src/utils/service.ts rename to platform-web-ui/src/utils/service.ts diff --git a/web-ui/src/utils/validate.ts b/platform-web-ui/src/utils/validate.ts similarity index 100% rename from web-ui/src/utils/validate.ts rename to platform-web-ui/src/utils/validate.ts diff --git a/web-ui/src/views/dashboard/index.vue b/platform-web-ui/src/views/dashboard/index.vue similarity index 100% rename from web-ui/src/views/dashboard/index.vue rename to platform-web-ui/src/views/dashboard/index.vue diff --git a/web-ui/src/views/device/deploy/index.vue b/platform-web-ui/src/views/device/deploy/index.vue similarity index 100% rename from web-ui/src/views/device/deploy/index.vue rename to platform-web-ui/src/views/device/deploy/index.vue diff --git a/web-ui/src/views/device/list/index.vue b/platform-web-ui/src/views/device/list/index.vue similarity index 100% rename from web-ui/src/views/device/list/index.vue rename to platform-web-ui/src/views/device/list/index.vue diff --git a/web-ui/src/views/error-page/403.vue b/platform-web-ui/src/views/error-page/403.vue similarity index 100% rename from web-ui/src/views/error-page/403.vue rename to platform-web-ui/src/views/error-page/403.vue diff --git a/web-ui/src/views/error-page/404.vue b/platform-web-ui/src/views/error-page/404.vue similarity index 100% rename from web-ui/src/views/error-page/404.vue rename to platform-web-ui/src/views/error-page/404.vue diff --git a/web-ui/src/views/error-page/components/ErrorPageLayout.vue b/platform-web-ui/src/views/error-page/components/ErrorPageLayout.vue similarity index 100% rename from web-ui/src/views/error-page/components/ErrorPageLayout.vue rename to platform-web-ui/src/views/error-page/components/ErrorPageLayout.vue diff --git a/web-ui/src/views/hook-demo/use-fetch-select.vue b/platform-web-ui/src/views/hook-demo/use-fetch-select.vue similarity index 100% rename from web-ui/src/views/hook-demo/use-fetch-select.vue rename to platform-web-ui/src/views/hook-demo/use-fetch-select.vue diff --git a/web-ui/src/views/hook-demo/use-fullscreen-loading.vue b/platform-web-ui/src/views/hook-demo/use-fullscreen-loading.vue similarity index 100% rename from web-ui/src/views/hook-demo/use-fullscreen-loading.vue rename to platform-web-ui/src/views/hook-demo/use-fullscreen-loading.vue diff --git a/web-ui/src/views/hook-demo/use-watermark.vue b/platform-web-ui/src/views/hook-demo/use-watermark.vue similarity index 100% rename from web-ui/src/views/hook-demo/use-watermark.vue rename to platform-web-ui/src/views/hook-demo/use-watermark.vue diff --git a/web-ui/src/views/login/index.vue b/platform-web-ui/src/views/login/index.vue similarity index 100% rename from web-ui/src/views/login/index.vue rename to platform-web-ui/src/views/login/index.vue diff --git a/web-ui/src/views/monitor/logininfor/index.vue b/platform-web-ui/src/views/monitor/logininfor/index.vue similarity index 100% rename from web-ui/src/views/monitor/logininfor/index.vue rename to platform-web-ui/src/views/monitor/logininfor/index.vue diff --git a/web-ui/src/views/monitor/operlog/index.vue b/platform-web-ui/src/views/monitor/operlog/index.vue similarity index 100% rename from web-ui/src/views/monitor/operlog/index.vue rename to platform-web-ui/src/views/monitor/operlog/index.vue diff --git a/web-ui/src/views/monitor/server/index.vue b/platform-web-ui/src/views/monitor/server/index.vue similarity index 100% rename from web-ui/src/views/monitor/server/index.vue rename to platform-web-ui/src/views/monitor/server/index.vue diff --git a/web-ui/src/views/personal/index.vue b/platform-web-ui/src/views/personal/index.vue similarity index 100% rename from web-ui/src/views/personal/index.vue rename to platform-web-ui/src/views/personal/index.vue diff --git a/web-ui/src/views/pre/dept/index.vue b/platform-web-ui/src/views/pre/dept/index.vue similarity index 100% rename from web-ui/src/views/pre/dept/index.vue rename to platform-web-ui/src/views/pre/dept/index.vue diff --git a/web-ui/src/views/pre/menu/index.vue b/platform-web-ui/src/views/pre/menu/index.vue similarity index 100% rename from web-ui/src/views/pre/menu/index.vue rename to platform-web-ui/src/views/pre/menu/index.vue diff --git a/web-ui/src/views/pre/role/index.vue b/platform-web-ui/src/views/pre/role/index.vue similarity index 100% rename from web-ui/src/views/pre/role/index.vue rename to platform-web-ui/src/views/pre/role/index.vue diff --git a/web-ui/src/views/pre/user/index.vue b/platform-web-ui/src/views/pre/user/index.vue similarity index 100% rename from web-ui/src/views/pre/user/index.vue rename to platform-web-ui/src/views/pre/user/index.vue diff --git a/web-ui/src/views/project/list/index.vue b/platform-web-ui/src/views/project/list/index.vue similarity index 100% rename from web-ui/src/views/project/list/index.vue rename to platform-web-ui/src/views/project/list/index.vue diff --git a/web-ui/src/views/project/trend/index.vue b/platform-web-ui/src/views/project/trend/index.vue similarity index 100% rename from web-ui/src/views/project/trend/index.vue rename to platform-web-ui/src/views/project/trend/index.vue diff --git a/web-ui/src/views/redirect/index.vue b/platform-web-ui/src/views/redirect/index.vue similarity index 100% rename from web-ui/src/views/redirect/index.vue rename to platform-web-ui/src/views/redirect/index.vue diff --git a/web-ui/src/views/statistics/energy/index.vue b/platform-web-ui/src/views/statistics/energy/index.vue similarity index 100% rename from web-ui/src/views/statistics/energy/index.vue rename to platform-web-ui/src/views/statistics/energy/index.vue diff --git a/web-ui/src/views/statistics/trend/index.vue b/platform-web-ui/src/views/statistics/trend/index.vue similarity index 100% rename from web-ui/src/views/statistics/trend/index.vue rename to platform-web-ui/src/views/statistics/trend/index.vue diff --git a/web-ui/src/views/sys/config/index.vue b/platform-web-ui/src/views/sys/config/index.vue similarity index 100% rename from web-ui/src/views/sys/config/index.vue rename to platform-web-ui/src/views/sys/config/index.vue diff --git a/web-ui/src/views/sys/dict/dictData.vue b/platform-web-ui/src/views/sys/dict/dictData.vue similarity index 100% rename from web-ui/src/views/sys/dict/dictData.vue rename to platform-web-ui/src/views/sys/dict/dictData.vue diff --git a/web-ui/src/views/sys/dict/index.vue b/platform-web-ui/src/views/sys/dict/index.vue similarity index 100% rename from web-ui/src/views/sys/dict/index.vue rename to platform-web-ui/src/views/sys/dict/index.vue diff --git a/web-ui/src/views/sys/notice/index.vue b/platform-web-ui/src/views/sys/notice/index.vue similarity index 100% rename from web-ui/src/views/sys/notice/index.vue rename to platform-web-ui/src/views/sys/notice/index.vue diff --git a/web-ui/src/views/sys/swagger/index.vue b/platform-web-ui/src/views/sys/swagger/index.vue similarity index 100% rename from web-ui/src/views/sys/swagger/index.vue rename to platform-web-ui/src/views/sys/swagger/index.vue diff --git a/web-ui/src/views/sys/template/index.vue b/platform-web-ui/src/views/sys/template/index.vue similarity index 100% rename from web-ui/src/views/sys/template/index.vue rename to platform-web-ui/src/views/sys/template/index.vue diff --git a/web-ui/src/views/sys/tenant/create.vue b/platform-web-ui/src/views/sys/tenant/create.vue similarity index 100% rename from web-ui/src/views/sys/tenant/create.vue rename to platform-web-ui/src/views/sys/tenant/create.vue diff --git a/web-ui/src/views/sys/tenant/index.vue b/platform-web-ui/src/views/sys/tenant/index.vue similarity index 100% rename from web-ui/src/views/sys/tenant/index.vue rename to platform-web-ui/src/views/sys/tenant/index.vue diff --git a/web-ui/src/views/unocss/index.vue b/platform-web-ui/src/views/unocss/index.vue similarity index 100% rename from web-ui/src/views/unocss/index.vue rename to platform-web-ui/src/views/unocss/index.vue diff --git a/web-ui/tests/components/Notify.test.ts b/platform-web-ui/tests/components/Notify.test.ts similarity index 100% rename from web-ui/tests/components/Notify.test.ts rename to platform-web-ui/tests/components/Notify.test.ts diff --git a/web-ui/tests/demo.test.ts b/platform-web-ui/tests/demo.test.ts similarity index 100% rename from web-ui/tests/demo.test.ts rename to platform-web-ui/tests/demo.test.ts diff --git a/web-ui/tests/utils/validate.test.ts b/platform-web-ui/tests/utils/validate.test.ts similarity index 100% rename from web-ui/tests/utils/validate.test.ts rename to platform-web-ui/tests/utils/validate.test.ts diff --git a/web-ui/tsconfig.json b/platform-web-ui/tsconfig.json similarity index 100% rename from web-ui/tsconfig.json rename to platform-web-ui/tsconfig.json diff --git a/web-ui/types/api.d.ts b/platform-web-ui/types/api.d.ts similarity index 100% rename from web-ui/types/api.d.ts rename to platform-web-ui/types/api.d.ts diff --git a/web-ui/types/env.d.ts b/platform-web-ui/types/env.d.ts similarity index 100% rename from web-ui/types/env.d.ts rename to platform-web-ui/types/env.d.ts diff --git a/web-ui/types/global-components.d.ts b/platform-web-ui/types/global-components.d.ts similarity index 100% rename from web-ui/types/global-components.d.ts rename to platform-web-ui/types/global-components.d.ts diff --git a/web-ui/types/shims-vue.d.ts b/platform-web-ui/types/shims-vue.d.ts similarity index 100% rename from web-ui/types/shims-vue.d.ts rename to platform-web-ui/types/shims-vue.d.ts diff --git a/web-ui/types/vue-router.d.ts b/platform-web-ui/types/vue-router.d.ts similarity index 100% rename from web-ui/types/vue-router.d.ts rename to platform-web-ui/types/vue-router.d.ts diff --git a/web-ui/unocss.config.ts b/platform-web-ui/unocss.config.ts similarity index 100% rename from web-ui/unocss.config.ts rename to platform-web-ui/unocss.config.ts diff --git a/web-ui/vite.config.ts b/platform-web-ui/vite.config.ts similarity index 100% rename from web-ui/vite.config.ts rename to platform-web-ui/vite.config.ts diff --git a/tenant-web-ui/.editorconfig b/tenant-web-ui/.editorconfig new file mode 100644 index 0000000..3396d2f --- /dev/null +++ b/tenant-web-ui/.editorconfig @@ -0,0 +1,24 @@ +# 配置项文档:https://editorconfig.org/ + +# 告知 EditorConfig 插件,当前即是根文件 +root = true + +# 适用全部文件 +[*] +## 设置字符集 +charset = utf-8 +## 缩进风格 space | tab,建议 space +indent_style = space +## 缩进的空格数(修改这里的话需要将 prettier.config.js 和 .vscode -> settings.json 也同步修改) +indent_size = 2 +## 换行符类型 lf | cr | crlf,一般都是设置为 lf +end_of_line = lf +## 是否在文件末尾插入空白行 +insert_final_newline = true +## 是否删除一行中的前后空格 +trim_trailing_whitespace = true + +# 适用 .md 文件 +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/tenant-web-ui/.env b/tenant-web-ui/.env new file mode 100644 index 0000000..6b2e05a --- /dev/null +++ b/tenant-web-ui/.env @@ -0,0 +1,4 @@ +# 所有环境自定义的环境变量(命名必须以 VITE_ 开头) + +## 项目标题 +VITE_APP_TITLE = "Molly客户管理系统" diff --git a/web-ui/.env.development b/tenant-web-ui/.env.development similarity index 91% rename from web-ui/.env.development rename to tenant-web-ui/.env.development index 4b0023d..4ab3b34 100644 --- a/web-ui/.env.development +++ b/tenant-web-ui/.env.development @@ -7,4 +7,4 @@ VITE_BASE_API = 'http://localhost:18891' VITE_ROUTER_HISTORY = 'hash' ## 开发环境地址前缀(一般 '/','./' 都可以) -VITE_PUBLIC_PATH = '/' +VITE_PUBLIC_PATH = '/tenant/' diff --git a/tenant-web-ui/.env.production b/tenant-web-ui/.env.production new file mode 100644 index 0000000..fc1b81c --- /dev/null +++ b/tenant-web-ui/.env.production @@ -0,0 +1,10 @@ +# 生产环境自定义的环境变量(命名必须以 VITE_ 开头) + +## 后端接口公共路径(如果解决跨域问题采用 CORS 就需要写全路径) +VITE_BASE_API = 'http://localhost:18891' + +## 路由模式 hash 或 html5 +VITE_ROUTER_HISTORY = 'hash' + +## 打包路径(就是网站前缀,例如部署到 https://un-pany.github.io/v3-admin-vite/ 域名下,就需要填写 /v3-admin-vite/) +VITE_PUBLIC_PATH = '/tenant/' diff --git a/tenant-web-ui/.env.staging b/tenant-web-ui/.env.staging new file mode 100644 index 0000000..9493400 --- /dev/null +++ b/tenant-web-ui/.env.staging @@ -0,0 +1,10 @@ +# 预发布环境自定义的环境变量(命名必须以 VITE_ 开头) + +## 后端接口公共路径(如果解决跨域问题采用 CORS 就需要写全路径) +VITE_BASE_API = 'http://localhost:18891' + +## 路由模式 hash 或 html5 +VITE_ROUTER_HISTORY = 'hash' + +## 打包路径(就是网站前缀,例如部署到 https://un-pany.github.io/v3-admin-vite/ 域名下,就需要填写 /v3-admin-vite/) +VITE_PUBLIC_PATH = '/tenant/' diff --git a/tenant-web-ui/.eslintignore b/tenant-web-ui/.eslintignore new file mode 100644 index 0000000..7ac0eb9 --- /dev/null +++ b/tenant-web-ui/.eslintignore @@ -0,0 +1,8 @@ +# Eslint 会忽略的文件 + +.DS_Store +node_modules +dist +dist-ssr +*.local +.npmrc diff --git a/tenant-web-ui/.eslintrc.js b/tenant-web-ui/.eslintrc.js new file mode 100644 index 0000000..4be78b4 --- /dev/null +++ b/tenant-web-ui/.eslintrc.js @@ -0,0 +1,74 @@ +module.exports = { + root: true, + env: { + browser: true, + node: true, + es6: true + }, + extends: [ + "plugin:vue/vue3-essential", + "eslint:recommended", + "@vue/typescript/recommended", + "@vue/prettier", + "@vue/eslint-config-typescript" + ], + parser: "vue-eslint-parser", + parserOptions: { + parser: "@typescript-eslint/parser", + ecmaVersion: 2020, + sourceType: "module", + jsxPragma: "React", + ecmaFeatures: { + jsx: true, + tsx: true + } + }, + rules: { + // TS + "@typescript-eslint/no-explicit-any": "off", + "no-debugger": "off", + "@typescript-eslint/explicit-module-boundary-types": "off", + "@typescript-eslint/ban-types": "off", + "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-unused-vars": [ + "error", + { + argsIgnorePattern: "^_", + varsIgnorePattern: "^_" + } + ], + "no-unused-vars": [ + "error", + { + argsIgnorePattern: "^_", + varsIgnorePattern: "^_" + } + ], + // Vue + "vue/no-v-html": "off", + "vue/require-default-prop": "off", + "vue/require-explicit-emits": "off", + "vue/multi-word-component-names": "off", + "vue/html-self-closing": [ + "error", + { + html: { + void: "always", + normal: "always", + component: "always" + }, + svg: "always", + math: "always" + } + ], + // Prettier + "prettier/prettier": [ + "error", + { + endOfLine: "auto" + } + ] + } +} diff --git a/tenant-web-ui/.gitignore b/tenant-web-ui/.gitignore new file mode 100644 index 0000000..a1ebec9 --- /dev/null +++ b/tenant-web-ui/.gitignore @@ -0,0 +1,35 @@ +# Git 会忽略的文件 + +.DS_Store +node_modules +dist +dist-ssr +.eslintcache + +# Local env files +*.local + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +!.vscode/settings.json +!.vscode/*.code-snippets +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# Use the PNPM +package-lock.json +yarn.lock diff --git a/tenant-web-ui/.npmrc b/tenant-web-ui/.npmrc new file mode 100644 index 0000000..da691e7 --- /dev/null +++ b/tenant-web-ui/.npmrc @@ -0,0 +1,2 @@ +# 通过该配置兜底解决组件没有类型提示的问题 +shamefully-hoist = true diff --git a/tenant-web-ui/.prettierignore b/tenant-web-ui/.prettierignore new file mode 100644 index 0000000..e7f8c10 --- /dev/null +++ b/tenant-web-ui/.prettierignore @@ -0,0 +1,8 @@ +# Prettier 会忽略的文件 + +.DS_Store +node_modules +dist +dist-ssr +*.local +.npmrc diff --git a/tenant-web-ui/README.md b/tenant-web-ui/README.md new file mode 100644 index 0000000..1a907c2 --- /dev/null +++ b/tenant-web-ui/README.md @@ -0,0 +1,163 @@ +
+ V3 Admin Vite Logo +

V3 Admin Vite

+ English | 中文 +
+ +## ⚡ 简介 + +V3 Admin Vite 是一个免费开源的中后台管理系统基础解决方案,基于 Vue3、TypeScript、Element Plus、Pinia 和 Vite 等主流技术 + +- Vue Cli 5.x 版: [v3-admin](https://github.com/un-pany/v3-admin) +- Electron 桌面版: [v3-electron-vite](https://github.com/un-pany/v3-electron-vite) + +国内仓库:[Gitee](https://gitee.com/un-pany/v3-admin-vite) + +## 📚 文档 + +- 中文文档:[链接](https://juejin.cn/post/7089377403717287972) +- 手摸手教程:[链接](https://juejin.cn/column/7207659644487139387) + +## 📺 在线预览 + +| 位置 | 账号 | 链接 | +| ------------ | --------------- | ----------------------------------------------- | +| github-pages | admin 或 editor | [链接](https://un-pany.github.io/v3-admin-vite) | + +## ❤️ 用爱发电 + +- **完全免费**:但希望你点一个 star !!! +- **非常简洁**:没有复杂的封装,没有复杂的类型体操,开箱即用 +- **详细的注释**:各个配置项都写有尽可能详细的注释 +- **最新的依赖**: 定期更新所有三方依赖至最新版 +- **有一点规整**: 代码风格统一,命名风格统一,注释风格统一 + +## 特性 + +- **Vue3**:采用 Vue3 + script setup 最新的 Vue3 组合式 API +- **Element Plus**:Element UI 的 Vue3 版本 +- **Pinia**: 传说中的 Vuex5 +- **Vite**:真的很快 +- **Vue Router**:路由路由 +- **TypeScript**:JavaScript 语言的超集 +- **PNPM**:更快速的,节省磁盘空间的包管理工具 +- **Scss**:和 Element Plus 保持一致 +- **CSS 变量**:主要控制项目的布局和颜色 +- **ESlint**:代码校验 +- **Prettier**:代码格式化 +- **Axios**:发送网络请求(已封装好) +- **UnoCSS**:具有高性能且极具灵活性的即时原子化 CSS 引擎 +- **兼容移动端**: 布局兼容移动端页面分辨率 + +## 功能 + +- **用户管理**:登录、登出演示 +- **权限管理**:内置页面权限(动态路由)、指令权限、权限函数、路由守卫 +- **多环境**:开发环境(development)、预发布环境(staging)、正式环境(production) +- **多主题**:内置普通、黑暗、深蓝三种主题模式 +- **多布局**:内置左侧、顶部、混合三种布局模式 +- **错误页面**: 403、404 +- **Dashboard**:根据不同用户显示不同的 Dashboard 页面 +- **其他内置功能**:SVG、动态侧边栏、动态面包屑、标签页快捷导航、Screenfull 全屏、自适应收缩侧边栏、Hook(Composables) + +## 🚀 开发 + +```bash +# 配置 +1. 一键安装 .vscode 目录中推荐的插件 +2. node 版本 16+ +3. pnpm 版本 8.x + +# 克隆项目 +git clone https://github.com/un-pany/v3-admin-vite.git + +# 进入项目目录 +cd v3-admin-vite + +# 安装依赖 +pnpm i + +# 启动服务 +pnpm dev +``` + +## ✔️ 预览 + +```bash +# 预览预发布环境 +pnpm preview:stage + +# 预览正式环境 +pnpm preview:prod +``` + +## 📦️ 多环境打包 + +```bash +# 构建预发布环境 +pnpm build:stage + +# 构建正式环境 +pnpm build:prod +``` + +## 🔧 代码检查 + +```bash +# 代码格式化 +pnpm lint + +# 单元测试 +pnpm test +``` + +## Git 提交规范参考 + +- `feat` 增加新的业务功能 +- `fix` 修复业务问题/BUG +- `perf` 优化性能 +- `style` 更改代码风格, 不影响运行结果 +- `refactor` 重构代码 +- `revert` 撤销更改 +- `test` 测试相关, 不涉及业务代码的更改 +- `docs` 文档和注释相关 +- `chore` 更新依赖/修改脚手架配置等琐事 +- `workflow` 工作流改进 +- `ci` 持续集成相关 +- `types` 类型定义文件更改 +- `wip` 开发中 + +## 项目预览图 + +![preview1.png](./src/assets/docs/preview1.png) +![preview2.png](./src/assets/docs/preview2.png) +![preview3.png](./src/assets/docs/preview3.png) + +## 💕 贡献者 + +感谢所有的贡献者! + + + + + +## 💕 感谢 Star + +小项目获取 star 不易,如果你喜欢这个项目的话,欢迎支持一个 star!这是作者持续维护的唯一动力(小声:毕竟是免费的) + +## ☕ Donate + +[查看捐赠方式](https://github.com/un-pany/v3-admin-vite/issues/69) + +## 可有可无的群 + +QQ 群:1014374415(左)&& 加我微信,拉你进微信群(右) + +![qq.png](./src/assets/docs/qq.png) +![wechat.png](./src/assets/docs/wechat.png) + +## 📄 License + +[MIT](./LICENSE) + +Copyright (c) 2022-present [pany](https://github.com/pany-ang) diff --git a/tenant-web-ui/index.html b/tenant-web-ui/index.html new file mode 100644 index 0000000..a9f0259 --- /dev/null +++ b/tenant-web-ui/index.html @@ -0,0 +1,16 @@ + + + + + + + + %VITE_APP_TITLE% + + +
+
+
+ + + diff --git a/tenant-web-ui/package.json b/tenant-web-ui/package.json new file mode 100644 index 0000000..f45f772 --- /dev/null +++ b/tenant-web-ui/package.json @@ -0,0 +1,107 @@ +{ + "name": "v3-admin-vite", + "version": "4.2.4", + "description": "一个免费开源的中后台管理系统基础解决方案,基于 Vue3、TypeScript、Element Plus、Pinia 和 Vite 等主流技术", + "author": { + "name": "pany", + "email": "939630029@qq.com", + "url": "https://github.com/pany-ang" + }, + "repository": { + "type": "git", + "url": "https://github.com/un-pany/v3-admin-vite.git" + }, + "scripts": { + "dev": "vite", + "build:stage": "vue-tsc --noEmit && vite build --mode staging", + "build:prod": "vue-tsc --noEmit && vite build", + "preview:stage": "pnpm build:stage && vite preview", + "preview:prod": "pnpm build:prod && vite preview", + "lint:eslint": "eslint --cache --max-warnings 0 \"{src,tests,types}/**/*.{vue,js,jsx,ts,tsx}\" --fix", + "lint:prettier": "prettier --write \"{src,tests,types}/**/*.{vue,js,jsx,ts,tsx,json,css,less,scss,html,md}\"", + "lint": "pnpm lint:eslint && pnpm lint:prettier", + "test": "vitest" + }, + "dependencies": { + "@element-plus/icons-vue": "2.1.0", + "@stomp/stompjs": "^7.0.0", + "@types/uuid": "^9.0.6", + "axios": "1.5.1", + "dayjs": "1.11.10", + "echarts": "^5.4.3", + "element-plus": "2.4.1", + "js-base64": "^3.7.5", + "js-cookie": "3.0.5", + "lodash-es": "4.17.21", + "mitt": "3.0.1", + "normalize.css": "8.0.1", + "nprogress": "0.2.0", + "path-browserify": "1.0.1", + "path-to-regexp": "6.2.1", + "pinia": "2.1.7", + "screenfull": "6.0.2", + "sockjs-client": "^1.6.1", + "uuid": "^9.0.1", + "vue": "3.3.5", + "vue-echarts": "^6.6.1", + "vue-router": "4.2.5", + "vxe-table": "4.4.1", + "vxe-table-plugin-element": "3.0.7", + "xe-utils": "3.5.11" + }, + "devDependencies": { + "@types/js-cookie": "3.0.5", + "@types/lodash-es": "4.17.10", + "@types/node": "20.8.7", + "@types/nprogress": "0.2.2", + "@types/path-browserify": "1.0.1", + "@typescript-eslint/eslint-plugin": "6.8.0", + "@typescript-eslint/parser": "6.8.0", + "@vitejs/plugin-vue": "4.4.0", + "@vitejs/plugin-vue-jsx": "3.0.2", + "@vue/eslint-config-prettier": "8.0.0", + "@vue/eslint-config-typescript": "12.0.0", + "@vue/test-utils": "2.4.1", + "eslint": "8.51.0", + "eslint-plugin-prettier": "5.0.1", + "eslint-plugin-vue": "9.17.0", + "jsdom": "22.1.0", + "lint-staged": "15.0.2", + "prettier": "3.0.3", + "sass": "1.69.4", + "typescript": "5.2.2", + "unocss": "0.56.5", + "vite": "4.5.0", + "vite-plugin-svg-icons": "2.0.1", + "vite-svg-loader": "4.0.0", + "vitest": "0.34.6", + "vue-eslint-parser": "9.3.2", + "vue-tsc": "1.8.19" + }, + "lint-staged": { + "*.{vue,js,jsx,ts,tsx}": [ + "eslint --fix", + "prettier --write" + ], + "*.{css,less,scss,html,md}": [ + "prettier --write" + ], + "package.json": [ + "prettier --write" + ] + }, + "keywords": [ + "vue", + "vue3", + "admin", + "vue-admin", + "vue3-admin", + "vite", + "vite-admin", + "element-plus", + "element-plus-admin", + "ts", + "typescript" + ], + "license": "MIT" +} diff --git a/tenant-web-ui/pnpm-lock.yaml b/tenant-web-ui/pnpm-lock.yaml new file mode 100644 index 0000000..540d1a9 --- /dev/null +++ b/tenant-web-ui/pnpm-lock.yaml @@ -0,0 +1,5352 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@element-plus/icons-vue': + specifier: 2.1.0 + version: 2.1.0(vue@3.3.5) + '@stomp/stompjs': + specifier: ^7.0.0 + version: 7.0.0 + '@types/uuid': + specifier: ^9.0.6 + version: 9.0.6 + axios: + specifier: 1.5.1 + version: 1.5.1 + dayjs: + specifier: 1.11.10 + version: 1.11.10 + echarts: + specifier: ^5.4.3 + version: 5.4.3 + element-plus: + specifier: 2.4.1 + version: 2.4.1(vue@3.3.5) + js-base64: + specifier: ^3.7.5 + version: 3.7.5 + js-cookie: + specifier: 3.0.5 + version: 3.0.5 + lodash-es: + specifier: 4.17.21 + version: 4.17.21 + mitt: + specifier: 3.0.1 + version: 3.0.1 + normalize.css: + specifier: 8.0.1 + version: 8.0.1 + nprogress: + specifier: 0.2.0 + version: 0.2.0 + path-browserify: + specifier: 1.0.1 + version: 1.0.1 + path-to-regexp: + specifier: 6.2.1 + version: 6.2.1 + pinia: + specifier: 2.1.7 + version: 2.1.7(typescript@5.2.2)(vue@3.3.5) + screenfull: + specifier: 6.0.2 + version: 6.0.2 + sockjs-client: + specifier: ^1.6.1 + version: 1.6.1 + uuid: + specifier: ^9.0.1 + version: 9.0.1 + vue: + specifier: 3.3.5 + version: 3.3.5(typescript@5.2.2) + vue-echarts: + specifier: ^6.6.1 + version: 6.6.1(echarts@5.4.3)(vue@3.3.5) + vue-router: + specifier: 4.2.5 + version: 4.2.5(vue@3.3.5) + vxe-table: + specifier: 4.4.1 + version: 4.4.1(vue@3.3.5)(xe-utils@3.5.11) + vxe-table-plugin-element: + specifier: 3.0.7 + version: 3.0.7(vxe-table@4.4.1) + xe-utils: + specifier: 3.5.11 + version: 3.5.11 + +devDependencies: + '@types/js-cookie': + specifier: 3.0.5 + version: 3.0.5 + '@types/lodash-es': + specifier: 4.17.10 + version: 4.17.10 + '@types/node': + specifier: 20.8.7 + version: 20.8.7 + '@types/nprogress': + specifier: 0.2.2 + version: 0.2.2 + '@types/path-browserify': + specifier: 1.0.1 + version: 1.0.1 + '@typescript-eslint/eslint-plugin': + specifier: 6.8.0 + version: 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/parser': + specifier: 6.8.0 + version: 6.8.0(eslint@8.51.0)(typescript@5.2.2) + '@vitejs/plugin-vue': + specifier: 4.4.0 + version: 4.4.0(vite@4.5.0)(vue@3.3.5) + '@vitejs/plugin-vue-jsx': + specifier: 3.0.2 + version: 3.0.2(vite@4.5.0)(vue@3.3.5) + '@vue/eslint-config-prettier': + specifier: 8.0.0 + version: 8.0.0(eslint@8.51.0)(prettier@3.0.3) + '@vue/eslint-config-typescript': + specifier: 12.0.0 + version: 12.0.0(eslint-plugin-vue@9.17.0)(eslint@8.51.0)(typescript@5.2.2) + '@vue/test-utils': + specifier: 2.4.1 + version: 2.4.1(vue@3.3.5) + eslint: + specifier: 8.51.0 + version: 8.51.0 + eslint-plugin-prettier: + specifier: 5.0.1 + version: 5.0.1(eslint-config-prettier@8.10.0)(eslint@8.51.0)(prettier@3.0.3) + eslint-plugin-vue: + specifier: 9.17.0 + version: 9.17.0(eslint@8.51.0) + jsdom: + specifier: 22.1.0 + version: 22.1.0 + lint-staged: + specifier: 15.0.2 + version: 15.0.2 + prettier: + specifier: 3.0.3 + version: 3.0.3 + sass: + specifier: 1.69.4 + version: 1.69.4 + typescript: + specifier: 5.2.2 + version: 5.2.2 + unocss: + specifier: 0.56.5 + version: 0.56.5(postcss@8.4.31)(vite@4.5.0) + vite: + specifier: 4.5.0 + version: 4.5.0(@types/node@20.8.7)(sass@1.69.4) + vite-plugin-svg-icons: + specifier: 2.0.1 + version: 2.0.1(vite@4.5.0) + vite-svg-loader: + specifier: 4.0.0 + version: 4.0.0 + vitest: + specifier: 0.34.6 + version: 0.34.6(jsdom@22.1.0)(sass@1.69.4) + vue-eslint-parser: + specifier: 9.3.2 + version: 9.3.2(eslint@8.51.0) + vue-tsc: + specifier: 1.8.19 + version: 1.8.19(typescript@5.2.2) + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + dev: true + + /@antfu/install-pkg@0.1.1: + resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} + dependencies: + execa: 5.1.1 + find-up: 5.0.0 + dev: true + + /@antfu/utils@0.7.6: + resolution: {integrity: sha512-pvFiLP2BeOKA/ZOS6jxx4XhKzdVLHDhGlFEaZ2flWWYf2xOqVniqpk38I04DFRyz+L0ASggl7SkItTc+ZLju4w==} + dev: true + + /@babel/code-frame@7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.22.20 + chalk: 2.4.2 + dev: true + + /@babel/compat-data@7.23.2: + resolution: {integrity: sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.23.2: + resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helpers': 7.23.2 + '@babel/parser': 7.23.0 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.23.0: + resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + dev: true + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.2 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.22.1 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: true + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.2): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + dev: true + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.0 + dev: true + + /@babel/helper-string-parser@7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option@7.22.15: + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.23.2: + resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight@7.22.20: + resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser@7.23.0: + resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.0 + + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2) + dev: true + + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + dev: true + + /@babel/traverse@7.23.2: + resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.23.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.23.0: + resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + /@ctrl/tinycolor@3.6.1: + resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} + engines: {node: '>=10'} + dev: false + + /@element-plus/icons-vue@2.1.0(vue@3.3.5): + resolution: {integrity: sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==} + peerDependencies: + vue: ^3.2.0 + dependencies: + vue: 3.3.5(typescript@5.2.2) + dev: false + + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.51.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.51.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.9.1: + resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.2: + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.23.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.51.0: + resolution: {integrity: sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@floating-ui/core@1.5.0: + resolution: {integrity: sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==} + dependencies: + '@floating-ui/utils': 0.1.6 + dev: false + + /@floating-ui/dom@1.5.3: + resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} + dependencies: + '@floating-ui/core': 1.5.0 + '@floating-ui/utils': 0.1.6 + dev: false + + /@floating-ui/utils@0.1.6: + resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} + dev: false + + /@humanwhocodes/config-array@0.11.12: + resolution: {integrity: sha512-NlGesA1usRNn6ctHCZ21M4/dKPgW9Nn1FypRdIKKgZOKzkVV4T1FlK5mBiLhHBCDmEbdQG0idrcXlbZfksJ+RA==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.0 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.0: + resolution: {integrity: sha512-9S9QrXY2K0L4AGDcSgTi9vgiCcG8VcBv4Mp7/1hDPYoswIy6Z6KO5blYto82BT8M0MZNRWmCFLpCs3HlpYGGdw==} + dev: true + + /@iconify/types@2.0.0: + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + dev: true + + /@iconify/utils@2.1.11: + resolution: {integrity: sha512-M/w3PkN8zQYXi8N6qK/KhnYMfEbbb6Sk8RZVn8g+Pmmu5ybw177RpsaGwpziyHeUsu4etrexYSWq3rwnIqzYCg==} + dependencies: + '@antfu/install-pkg': 0.1.1 + '@antfu/utils': 0.7.6 + '@iconify/types': 2.0.0 + debug: 4.3.4 + kolorist: 1.8.0 + local-pkg: 0.4.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 + dev: true + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + dev: true + + /@one-ini/wasm@0.1.1: + resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + dev: true + + /@pkgr/utils@2.4.2: + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.3.1 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.0.0 + tslib: 2.6.2 + dev: true + + /@polka/url@1.0.0-next.23: + resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==} + dev: true + + /@rollup/pluginutils@5.0.5: + resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.3 + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@stomp/stompjs@7.0.0: + resolution: {integrity: sha512-fGdq4wPDnSV/KyOsjq4P+zLc8MFWC3lMmP5FBgLWKPJTYcuCbAIrnRGjB7q2jHZdYCOD5vxLuFoKIYLy5/u8Pw==} + dev: false + + /@sxzz/popperjs-es@2.11.7: + resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==} + dev: false + + /@tootallnate/once@2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + dev: true + + /@trysound/sax@0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + dev: true + + /@types/chai-subset@1.3.4: + resolution: {integrity: sha512-CCWNXrJYSUIojZ1149ksLl3AN9cmZ5djf+yUoVVV+NuYrtydItQVlL2ZDqyC6M6O9LWRnVf8yYDxbXHO2TfQZg==} + dependencies: + '@types/chai': 4.3.9 + dev: true + + /@types/chai@4.3.9: + resolution: {integrity: sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==} + dev: true + + /@types/estree@1.0.3: + resolution: {integrity: sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==} + dev: true + + /@types/js-cookie@3.0.5: + resolution: {integrity: sha512-dtLshqoiGRDHbHueIT9sjkd2F4tW1qPSX2xKAQK8p1e6pM+Z913GM1shv7dOqqasEMYbC5zEaClJomQe8OtQLA==} + dev: true + + /@types/json-schema@7.0.14: + resolution: {integrity: sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==} + dev: true + + /@types/lodash-es@4.17.10: + resolution: {integrity: sha512-YJP+w/2khSBwbUSFdGsSqmDvmnN3cCKoPOL7Zjle6s30ZtemkkqhjVfFqGwPN7ASil5VyjE2GtyU/yqYY6mC0A==} + dependencies: + '@types/lodash': 4.14.200 + + /@types/lodash@4.14.200: + resolution: {integrity: sha512-YI/M/4HRImtNf3pJgbF+W6FrXovqj+T+/HpENLTooK9PnkacBsDpeP3IpHab40CClUfhNmdM2WTNP2sa2dni5Q==} + + /@types/node@20.8.7: + resolution: {integrity: sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==} + dependencies: + undici-types: 5.25.3 + dev: true + + /@types/nprogress@0.2.2: + resolution: {integrity: sha512-2wLrSJXLztGmr7wXwM0hA/wuIOY9DznVdd+ZFofHOiXcj9JnVt+2ZeLRJ7v5ZVlmheSkUOSg3Q3O4Ce7yji79A==} + dev: true + + /@types/path-browserify@1.0.1: + resolution: {integrity: sha512-rUSqIy7fAfK6sRasdFCukWO4S77pXcTxViURlLdo1VKuekTDS8ASMdX1LA0TFlbzT3fZgFlgQTCrqmJBuTHpxA==} + dev: true + + /@types/semver@7.5.4: + resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} + dev: true + + /@types/svgo@2.6.4: + resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} + dependencies: + '@types/node': 20.8.7 + dev: true + + /@types/uuid@9.0.6: + resolution: {integrity: sha512-BT2Krtx4xaO6iwzwMFUYvWBWkV2pr37zD68Vmp1CDV196MzczBRxuEpD6Pr395HAgebC/co7hOphs53r8V7jew==} + dev: false + + /@types/web-bluetooth@0.0.16: + resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} + dev: false + + /@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.9.1 + '@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/type-utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.8.0 + debug: 4.3.4 + eslint: 8.51.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@6.8.0(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.8.0 + debug: 4.3.4 + eslint: 8.51.0 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@6.8.0: + resolution: {integrity: sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/visitor-keys': 6.8.0 + dev: true + + /@typescript-eslint/type-utils@6.8.0(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2) + debug: 4.3.4 + eslint: 8.51.0 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@6.8.0: + resolution: {integrity: sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@6.8.0(typescript@5.2.2): + resolution: {integrity: sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/visitor-keys': 6.8.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@6.8.0(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@types/json-schema': 7.0.14 + '@types/semver': 7.5.4 + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) + eslint: 8.51.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@6.8.0: + resolution: {integrity: sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.8.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@unocss/astro@0.56.5(vite@4.5.0): + resolution: {integrity: sha512-nkxyGV9mA7DZ5LEr4Gap/SggM60MFNUfn56ngpxCqjQHJOMRJrAcR99hCVn+78vZ9xuZl9HxdIwgZLzn41thMw==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + '@unocss/core': 0.56.5 + '@unocss/reset': 0.56.5 + '@unocss/vite': 0.56.5(vite@4.5.0) + vite: 4.5.0(@types/node@20.8.7)(sass@1.69.4) + transitivePeerDependencies: + - rollup + dev: true + + /@unocss/cli@0.56.5: + resolution: {integrity: sha512-VYaqu7Dr1n9ebFFdQM+9Jyg/o9BVKRShlV8bQsBS58gkXiWsA/uAl1Uy2vzpLSrT0F6uGyDmYUF6p4DaUnUO+w==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@ampproject/remapping': 2.2.1 + '@rollup/pluginutils': 5.0.5 + '@unocss/config': 0.56.5 + '@unocss/core': 0.56.5 + '@unocss/preset-uno': 0.56.5 + cac: 6.7.14 + chokidar: 3.5.3 + colorette: 2.0.20 + consola: 3.2.3 + fast-glob: 3.3.1 + magic-string: 0.30.5 + pathe: 1.1.1 + perfect-debounce: 1.0.0 + transitivePeerDependencies: + - rollup + dev: true + + /@unocss/config@0.56.5: + resolution: {integrity: sha512-rscnFIYgUlN/0hXHdhANyjFcDjDutt3JO0ZRITdNLzoglh7GVNiDTURBJwUZejF/vGJ7IkMd3qOdNhPFuRY1Bg==} + engines: {node: '>=14'} + dependencies: + '@unocss/core': 0.56.5 + unconfig: 0.3.11 + dev: true + + /@unocss/core@0.56.5: + resolution: {integrity: sha512-fx5VhOjSHn0HdV2D34pEwFMAHJcJQRTCp1xEE4GzxY1irXzaa+m2aYf5PZjmDxehiOC16IH7TO9FOWANXk1E0w==} + dev: true + + /@unocss/extractor-arbitrary-variants@0.56.5: + resolution: {integrity: sha512-p2pyzz/ONvc5CGcaB9OZvWE8qkRSgyuhaQqFQLdBFeUhveHC0CGP0iSnXwBgAFHWM7DJo4/JpWeZ+mBt0ogVLA==} + dependencies: + '@unocss/core': 0.56.5 + dev: true + + /@unocss/inspector@0.56.5: + resolution: {integrity: sha512-UK/X2JyqxB1uueIFlffFsBioxMptanBbJYjrmOoLPdAFoOPp9o8IIFkFs3OKWc8imvyl3w+F0opncmdJnDMllw==} + dependencies: + '@unocss/rule-utils': 0.56.5 + gzip-size: 6.0.0 + sirv: 2.0.3 + dev: true + + /@unocss/postcss@0.56.5(postcss@8.4.31): + resolution: {integrity: sha512-oDY1vCdrCQZx/oxDkq3z77a0RoO+WVQT090oDZzLFO/cPWH3elSOHwnoJU/KzrpJLbUFpyTQKZ/k3VbBaEdGTA==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + dependencies: + '@unocss/config': 0.56.5 + '@unocss/core': 0.56.5 + '@unocss/rule-utils': 0.56.5 + css-tree: 2.3.1 + fast-glob: 3.3.1 + magic-string: 0.30.5 + postcss: 8.4.31 + dev: true + + /@unocss/preset-attributify@0.56.5: + resolution: {integrity: sha512-476NVv1kUmiD0ObtJceUB1ldiQvGStEUlwoHFOFl8srZbRuRlwq8Uz4sxCePf3sn2FP8UHw+By+nxwxMQuHpww==} + dependencies: + '@unocss/core': 0.56.5 + dev: true + + /@unocss/preset-icons@0.56.5: + resolution: {integrity: sha512-Pc973z/M7+TsIPRli9xSE+rjzQnX9r0PppTOD5lrD8PqvNSGIrSWZUFDc5NqL09hKHkIdVrDLC+2ouLYqTI7iA==} + dependencies: + '@iconify/utils': 2.1.11 + '@unocss/core': 0.56.5 + ofetch: 1.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@unocss/preset-mini@0.56.5: + resolution: {integrity: sha512-/KhlThhs1ilauM7MwRSpahLbIPZ5VGeGvaUsU8+ZlNT3sis4yoVYkPtR14tL2IT6jhOU05N/uu3aBj+1bP8GjQ==} + dependencies: + '@unocss/core': 0.56.5 + '@unocss/extractor-arbitrary-variants': 0.56.5 + '@unocss/rule-utils': 0.56.5 + dev: true + + /@unocss/preset-tagify@0.56.5: + resolution: {integrity: sha512-ANtI7E92fuzF40MD/3V72myNqrcGNXAD3TjXHIxAPQP2F+DcYIl2TBPHVsGUt2Rc5Kid2kvvsWan6sRAQVGPng==} + dependencies: + '@unocss/core': 0.56.5 + dev: true + + /@unocss/preset-typography@0.56.5: + resolution: {integrity: sha512-fA/q5S+s7BV3TRWRvXqG7xpa8WNfG19uaZx288FcKauMR0TX4jUM0EkkngpwrTgeXXohh5awx4OEW3E1s1Q2oA==} + dependencies: + '@unocss/core': 0.56.5 + '@unocss/preset-mini': 0.56.5 + dev: true + + /@unocss/preset-uno@0.56.5: + resolution: {integrity: sha512-3hzE0X1oxMbHLvWyTj/4BrJQ7OAL428BpzEJos0RsxifM04vOJX4GC4khIbmTl8KIMECMtATK3ren3JqzD2bFw==} + dependencies: + '@unocss/core': 0.56.5 + '@unocss/preset-mini': 0.56.5 + '@unocss/preset-wind': 0.56.5 + '@unocss/rule-utils': 0.56.5 + dev: true + + /@unocss/preset-web-fonts@0.56.5: + resolution: {integrity: sha512-1YPbqpHK6NaXWHceNJTl2A+dNbliB6FeU5Tvkox1KOLTTwvzUF80uWHAE/l05Oc9EZyolZ8OsM37p2eJAb0wpw==} + dependencies: + '@unocss/core': 0.56.5 + ofetch: 1.3.3 + dev: true + + /@unocss/preset-wind@0.56.5: + resolution: {integrity: sha512-iyMPvCEZkrGLHFXXlcqxDo/UcSK7KWw4x7/QUz7irrvc78cxYVuPm98QZgpCRcCwKerKVyFLjGOtwQ0kmVSVsQ==} + dependencies: + '@unocss/core': 0.56.5 + '@unocss/preset-mini': 0.56.5 + '@unocss/rule-utils': 0.56.5 + dev: true + + /@unocss/reset@0.56.5: + resolution: {integrity: sha512-//Pv2ITAdnpWB9FIr0JiQVl1rL1XgISR8mu3OikhCfi6d/4OH+o6/WyE7evF1pOmk1JjsQlznOABIZXQlcpbHQ==} + dev: true + + /@unocss/rule-utils@0.56.5: + resolution: {integrity: sha512-CXIGHCIC9B8WUl9KbbFMSZHcsIgfmI/+X0bjBv6xrgBVC1EQ2Acq4PYnJIbaRGBRAhl9wYjNL7Zq2UWOdowHAw==} + engines: {node: '>=14'} + dependencies: + '@unocss/core': 0.56.5 + dev: true + + /@unocss/scope@0.56.5: + resolution: {integrity: sha512-q2eHYLuqF7RZEVGti205X2JOKSH6lBJGoQIjPtWgodNTg3S7qmUinHG0XzikI30L3EF3VljIh5TbtwGPcvbNsA==} + dev: true + + /@unocss/transformer-attributify-jsx-babel@0.56.5: + resolution: {integrity: sha512-QUlbmWpdfzdgEXNcOJwSvKDHB/ID/X3zlpK+fXyCKTkqiYgCwMFmLXll2HtNhIgH2E1gWo/lDlwpiW/QjQb/rw==} + dependencies: + '@unocss/core': 0.56.5 + dev: true + + /@unocss/transformer-attributify-jsx@0.56.5: + resolution: {integrity: sha512-SQW7t58s26qHYuD8v3covXtWoXlflw3FV5dlBCw/2iOfNo3OTVUWReAB5y0XQIT3828nHnPqeQq4IhmnuOENdw==} + dependencies: + '@unocss/core': 0.56.5 + dev: true + + /@unocss/transformer-compile-class@0.56.5: + resolution: {integrity: sha512-uT/+bVDN26hJ4a5FtbOT4PxAVDUTxwZCEVCesPAE5RnGd7f+KYUnk3XdDa77xyklPQsxPhr4MEjA0HGPHtSH8Q==} + dependencies: + '@unocss/core': 0.56.5 + dev: true + + /@unocss/transformer-directives@0.56.5: + resolution: {integrity: sha512-ykXbvG1LbqTqlYImMtkJUeH8BtuiE+8T/txUVyooUoVgr2qSELUu2FxC6rTX2EUx+F5BZhaQd6GsdzgaDwXgIg==} + dependencies: + '@unocss/core': 0.56.5 + '@unocss/rule-utils': 0.56.5 + css-tree: 2.3.1 + dev: true + + /@unocss/transformer-variant-group@0.56.5: + resolution: {integrity: sha512-e+7XtICuOtcOgGyxI06i0LK6R446KLFvzv+lw3WbwhD8OcsSFUAtCaAw0l+cyyiiZ/k2tLdUR0O4hYwQVa8f1A==} + dependencies: + '@unocss/core': 0.56.5 + dev: true + + /@unocss/vite@0.56.5(vite@4.5.0): + resolution: {integrity: sha512-X4nvIukXTH//d+Oc97nJogK04sVGw4fc5LhVV1DjHQVmAOAmhTJCG6SxWGoSeqqUMx5X3gI9fVILK+5O8yl5EA==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 + dependencies: + '@ampproject/remapping': 2.2.1 + '@rollup/pluginutils': 5.0.5 + '@unocss/config': 0.56.5 + '@unocss/core': 0.56.5 + '@unocss/inspector': 0.56.5 + '@unocss/scope': 0.56.5 + '@unocss/transformer-directives': 0.56.5 + chokidar: 3.5.3 + fast-glob: 3.3.1 + magic-string: 0.30.5 + vite: 4.5.0(@types/node@20.8.7)(sass@1.69.4) + transitivePeerDependencies: + - rollup + dev: true + + /@vitejs/plugin-vue-jsx@3.0.2(vite@4.5.0)(vue@3.3.5): + resolution: {integrity: sha512-obF26P2Z4Ogy3cPp07B4VaW6rpiu0ue4OT2Y15UxT5BZZ76haUY9guOsZV3uWh/I6xc+VeiW+ZVabRE82FyzWw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 + vue: ^3.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.23.2) + '@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.23.2) + vite: 4.5.0(@types/node@20.8.7)(sass@1.69.4) + vue: 3.3.5(typescript@5.2.2) + transitivePeerDependencies: + - supports-color + dev: true + + /@vitejs/plugin-vue@4.4.0(vite@4.5.0)(vue@3.3.5): + resolution: {integrity: sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 + vue: ^3.2.25 + dependencies: + vite: 4.5.0(@types/node@20.8.7)(sass@1.69.4) + vue: 3.3.5(typescript@5.2.2) + dev: true + + /@vitest/expect@0.34.6: + resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} + dependencies: + '@vitest/spy': 0.34.6 + '@vitest/utils': 0.34.6 + chai: 4.3.10 + dev: true + + /@vitest/runner@0.34.6: + resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} + dependencies: + '@vitest/utils': 0.34.6 + p-limit: 4.0.0 + pathe: 1.1.1 + dev: true + + /@vitest/snapshot@0.34.6: + resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} + dependencies: + magic-string: 0.30.5 + pathe: 1.1.1 + pretty-format: 29.7.0 + dev: true + + /@vitest/spy@0.34.6: + resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} + dependencies: + tinyspy: 2.2.0 + dev: true + + /@vitest/utils@0.34.6: + resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} + dependencies: + diff-sequences: 29.6.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + dev: true + + /@volar/language-core@1.10.4: + resolution: {integrity: sha512-Na69qA6uwVIdA0rHuOc2W3pHtVQQO8hCNim7FOaKNpRJh0oAFnu5r9i7Oopo5C4cnELZkPNjTrbmpcCTiW+CMQ==} + dependencies: + '@volar/source-map': 1.10.4 + dev: true + + /@volar/source-map@1.10.4: + resolution: {integrity: sha512-RxZdUEL+pV8p+SMqnhVjzy5zpb1QRZTlcwSk4bdcBO7yOu4rtEWqDGahVCEj4CcXour+0yJUMrMczfSCpP9Uxg==} + dependencies: + muggle-string: 0.3.1 + dev: true + + /@volar/typescript@1.10.4: + resolution: {integrity: sha512-BCCUEBASBEMCrz7qmNSi2hBEWYsXD0doaktRKpmmhvb6XntM2sAWYu6gbyK/MluLDgluGLFiFRpWgobgzUqolg==} + dependencies: + '@volar/language-core': 1.10.4 + dev: true + + /@vue/babel-helper-vue-transform-on@1.1.5: + resolution: {integrity: sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==} + dev: true + + /@vue/babel-plugin-jsx@1.1.5(@babel/core@7.23.2): + resolution: {integrity: sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-imports': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 + '@vue/babel-helper-vue-transform-on': 1.1.5 + camelcase: 6.3.0 + html-tags: 3.3.1 + svg-tags: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@vue/compiler-core@3.3.5: + resolution: {integrity: sha512-S8Ma+eICI40Y4UotR+iKR729Bma+wERn/xLc+Jz203s5WIW1Sx3qoiONqXGg3Q4vBMa+QHDncULya19ZSJuhog==} + dependencies: + '@babel/parser': 7.23.0 + '@vue/shared': 3.3.5 + estree-walker: 2.0.2 + source-map-js: 1.0.2 + + /@vue/compiler-dom@3.3.5: + resolution: {integrity: sha512-dxt6QntN9T/NtnV6Pz+/nmcoo3ULnsYCnRpvEyY73wbk1tzzx7dnwngUN1cXkyGNu9c3UE7llhq/5T54lKwyhQ==} + dependencies: + '@vue/compiler-core': 3.3.5 + '@vue/shared': 3.3.5 + + /@vue/compiler-sfc@3.3.5: + resolution: {integrity: sha512-M6ys4iReSbrF4NTcMCnJiBioCpzXjfkfXwkdziknRyps+pG0DkwpDfQT7zQ0q91/rCR/Ejz64b5H6C4HBhX41w==} + dependencies: + '@babel/parser': 7.23.0 + '@vue/compiler-core': 3.3.5 + '@vue/compiler-dom': 3.3.5 + '@vue/compiler-ssr': 3.3.5 + '@vue/reactivity-transform': 3.3.5 + '@vue/shared': 3.3.5 + estree-walker: 2.0.2 + magic-string: 0.30.5 + postcss: 8.4.31 + source-map-js: 1.0.2 + + /@vue/compiler-ssr@3.3.5: + resolution: {integrity: sha512-v7p2XuEpOcgjd6c49NqOnq3UTJOv5Uo9tirOyGnEadwxTov2O1J3/TUt4SgAAnwA+9gcUyH5c3lIOFsBe+UIyw==} + dependencies: + '@vue/compiler-dom': 3.3.5 + '@vue/shared': 3.3.5 + + /@vue/devtools-api@6.5.1: + resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==} + dev: false + + /@vue/eslint-config-prettier@8.0.0(eslint@8.51.0)(prettier@3.0.3): + resolution: {integrity: sha512-55dPqtC4PM/yBjhAr+yEw6+7KzzdkBuLmnhBrDfp4I48+wy+Giqqj9yUr5T2uD/BkBROjjmqnLZmXRdOx/VtQg==} + peerDependencies: + eslint: '>= 8.0.0' + prettier: '>= 3.0.0' + dependencies: + eslint: 8.51.0 + eslint-config-prettier: 8.10.0(eslint@8.51.0) + eslint-plugin-prettier: 5.0.1(eslint-config-prettier@8.10.0)(eslint@8.51.0)(prettier@3.0.3) + prettier: 3.0.3 + transitivePeerDependencies: + - '@types/eslint' + dev: true + + /@vue/eslint-config-typescript@12.0.0(eslint-plugin-vue@9.17.0)(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-StxLFet2Qe97T8+7L8pGlhYBBr8Eg05LPuTDVopQV6il+SK6qqom59BA/rcFipUef2jD8P2X44Vd8tMFytfvlg==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + eslint-plugin-vue: ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@5.2.2) + eslint: 8.51.0 + eslint-plugin-vue: 9.17.0(eslint@8.51.0) + typescript: 5.2.2 + vue-eslint-parser: 9.3.2(eslint@8.51.0) + transitivePeerDependencies: + - supports-color + dev: true + + /@vue/language-core@1.8.19(typescript@5.2.2): + resolution: {integrity: sha512-nt3dodGs97UM6fnxeQBazO50yYCKBK53waFWB3qMbLmR6eL3aUryZgQtZoBe1pye17Wl8fs9HysV3si6xMgndQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@volar/language-core': 1.10.4 + '@volar/source-map': 1.10.4 + '@vue/compiler-dom': 3.3.5 + '@vue/reactivity': 3.3.5 + '@vue/shared': 3.3.5 + minimatch: 9.0.3 + muggle-string: 0.3.1 + typescript: 5.2.2 + vue-template-compiler: 2.7.14 + dev: true + + /@vue/reactivity-transform@3.3.5: + resolution: {integrity: sha512-OhpBD1H32pIapRzqy31hWwTFLf9STP+0uk5bVOQWXACTa2Rt/RPhvX4zixbPgMGo6iP+S+tFpZzUdcG8AASn8A==} + dependencies: + '@babel/parser': 7.23.0 + '@vue/compiler-core': 3.3.5 + '@vue/shared': 3.3.5 + estree-walker: 2.0.2 + magic-string: 0.30.5 + + /@vue/reactivity@3.3.5: + resolution: {integrity: sha512-P7OBfPjsbV5lDCwZQDtWFqPh3uAP3Q6bRqYVgsYr6ki7jiaiHGSLmeaevUi+Nkev8nhublUpApnWevNiACN3sw==} + dependencies: + '@vue/shared': 3.3.5 + + /@vue/runtime-core@3.3.5: + resolution: {integrity: sha512-kxAW3fTzwzZQqiHV1SndTtLMlNfJ/bsvcYku6NDuPzTeG6sMOAIXvuz6N5NUox+P7sNCInESbSOrPMMvtWx3vA==} + dependencies: + '@vue/reactivity': 3.3.5 + '@vue/shared': 3.3.5 + + /@vue/runtime-dom@3.3.5: + resolution: {integrity: sha512-seYSeHmBNlTrR0eFyQFocEBtzljNlKzC2JfdebfBqoEmikyNYzLWTouv71DignLFXEXZKWNTqCIs4d7dk5Q3Ng==} + dependencies: + '@vue/runtime-core': 3.3.5 + '@vue/shared': 3.3.5 + csstype: 3.1.2 + + /@vue/server-renderer@3.3.5(vue@3.3.5): + resolution: {integrity: sha512-7VIZkohYn8GAnNT9chrm0vDpHJ6mWPL+TmUBKtDWcWxYcq33YJP/VHCPQN5TazkxXCtv3c1KfXAMZowX4giLoQ==} + peerDependencies: + vue: 3.3.5 + dependencies: + '@vue/compiler-ssr': 3.3.5 + '@vue/shared': 3.3.5 + vue: 3.3.5(typescript@5.2.2) + + /@vue/shared@3.3.5: + resolution: {integrity: sha512-oNJN1rCtkqm1cIxU1BuZVEVRWIp4DhaxXucEzzZ/iDKHP71ZxhkBPNK+URySiECH6aiOZzC60PS2bd6JFznvNA==} + + /@vue/test-utils@2.4.1(vue@3.3.5): + resolution: {integrity: sha512-VO8nragneNzUZUah6kOjiFmD/gwRjUauG9DROh6oaOeFwX1cZRUNHhdeogE8635cISigXFTtGLUQWx5KCb0xeg==} + peerDependencies: + '@vue/server-renderer': ^3.0.1 + vue: ^3.0.1 + peerDependenciesMeta: + '@vue/server-renderer': + optional: true + dependencies: + js-beautify: 1.14.9 + vue: 3.3.5(typescript@5.2.2) + vue-component-type-helpers: 1.8.4 + dev: true + + /@vue/typescript@1.8.19(typescript@5.2.2): + resolution: {integrity: sha512-k/SHeeQROUgqsxyHQ8Cs3Zz5TnX57p7BcBDVYR2E0c61QL2DJ2G8CsaBremmNGuGE6o1R5D50IHIxFmroMz8iw==} + dependencies: + '@volar/typescript': 1.10.4 + '@vue/language-core': 1.8.19(typescript@5.2.2) + transitivePeerDependencies: + - typescript + dev: true + + /@vueuse/core@9.13.0(vue@3.3.5): + resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==} + dependencies: + '@types/web-bluetooth': 0.0.16 + '@vueuse/metadata': 9.13.0 + '@vueuse/shared': 9.13.0(vue@3.3.5) + vue-demi: 0.14.6(vue@3.3.5) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /@vueuse/metadata@9.13.0: + resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} + dev: false + + /@vueuse/shared@9.13.0(vue@3.3.5): + resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} + dependencies: + vue-demi: 0.14.6(vue@3.3.5) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + dev: true + + /abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: true + + /acorn-jsx@5.3.2(acorn@8.10.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.10.0 + dev: true + + /acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + engines: {node: '>=12'} + dependencies: + type-fest: 1.4.0 + dev: true + + /ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + + /ansi-styles@2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /arr-diff@4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + dev: true + + /arr-flatten@1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + dev: true + + /arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array-unique@0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + dev: true + + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + + /assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + dev: true + + /async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} + dev: false + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + /atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + dev: true + + /axios@1.5.1: + resolution: {integrity: sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==} + dependencies: + follow-redirects: 1.15.3 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /base@0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.0 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + dev: true + + /big-integer@1.6.51: + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + engines: {node: '>=0.6'} + dev: true + + /big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + dev: true + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + dev: true + + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + + /bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + dependencies: + big-integer: 1.6.51 + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.4 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browserslist@4.22.1: + resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001551 + electron-to-chromium: 1.4.561 + node-releases: 2.0.13 + update-browserslist-db: 1.0.13(browserslist@4.22.1) + dev: true + + /bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + dependencies: + run-applescript: 5.0.0 + dev: true + + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + + /cache-base@1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.0 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /caniuse-lite@1.0.30001551: + resolution: {integrity: sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg==} + dev: true + + /chai@4.3.10: + resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + + /chalk@1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /class-utils@0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + dev: true + + /cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + restore-cursor: 4.0.0 + dev: true + + /cli-truncate@3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + slice-ansi: 5.0.0 + string-width: 5.1.2 + dev: true + + /clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + dev: true + + /collection-visit@1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + dev: true + + /commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + dev: true + + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: true + + /component-emitter@1.3.0: + resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + dev: true + + /consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /copy-descriptor@0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + dev: true + + /cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: true + + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + dev: true + + /css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: true + + /css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.0.2 + dev: true + + /css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.0.2 + dev: true + + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + dependencies: + css-tree: 1.1.3 + dev: true + + /csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + dependencies: + css-tree: 2.2.1 + dev: true + + /cssstyle@3.0.0: + resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} + engines: {node: '>=14'} + dependencies: + rrweb-cssom: 0.6.0 + dev: true + + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + + /data-urls@4.0.0: + resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} + engines: {node: '>=14'} + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 12.0.1 + dev: true + + /dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + dev: false + + /de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + dev: true + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: false + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: true + + /decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + dev: true + + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + dev: true + + /default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.2.0 + titleize: 3.0.0 + dev: true + + /define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + dev: true + + /define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 0.1.6 + dev: true + + /define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.2 + dev: true + + /define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.2 + isobject: 3.0.1 + dev: true + + /defu@6.1.2: + resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + /destr@2.0.1: + resolution: {integrity: sha512-M1Ob1zPSIvlARiJUkKqvAZ3VAqQY6Jcuth/pBKQ2b1dX/Qx0OnJ8Vux6J2H5PTMQeRzWrrbTu70VxBfv/OPDJA==} + dev: true + + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dom-serializer@0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + dependencies: + domelementtype: 2.3.0 + entities: 2.2.0 + dev: true + + /dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dev: true + + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: true + + /domelementtype@1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + dev: true + + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true + + /domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + dependencies: + webidl-conversions: 7.0.0 + dev: true + + /domhandler@2.4.2: + resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} + dependencies: + domelementtype: 1.3.1 + dev: true + + /domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domutils@1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + dev: true + + /domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: true + + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: true + + /duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /echarts@5.4.3: + resolution: {integrity: sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==} + dependencies: + tslib: 2.3.0 + zrender: 5.4.4 + dev: false + + /editorconfig@1.0.4: + resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@one-ini/wasm': 0.1.1 + commander: 10.0.1 + minimatch: 9.0.1 + semver: 7.5.4 + dev: true + + /electron-to-chromium@1.4.561: + resolution: {integrity: sha512-eS5t4ulWOBfVHdq9SW2dxEaFarj1lPjvJ8PaYMOjY0DecBaj/t4ARziL2IPpDr4atyWwjLFGQ2vo/VCgQFezVQ==} + dev: true + + /element-plus@2.4.1(vue@3.3.5): + resolution: {integrity: sha512-t7nl+vQlkBKVk1Ag6AufSDyFV8YIXxTFsaya4Nz/0tiRlcz65WPN4WMFeNURuFJleu1HLNtP4YyQKMuS7El8uA==} + peerDependencies: + vue: ^3.2.0 + dependencies: + '@ctrl/tinycolor': 3.6.1 + '@element-plus/icons-vue': 2.1.0(vue@3.3.5) + '@floating-ui/dom': 1.5.3 + '@popperjs/core': /@sxzz/popperjs-es@2.11.7 + '@types/lodash': 4.14.200 + '@types/lodash-es': 4.17.10 + '@vueuse/core': 9.13.0(vue@3.3.5) + async-validator: 4.2.5 + dayjs: 1.11.10 + escape-html: 1.0.3 + lodash: 4.17.21 + lodash-es: 4.17.21 + lodash-unified: 1.0.3(@types/lodash-es@4.17.10)(lodash-es@4.17.21)(lodash@4.17.21) + memoize-one: 6.0.0 + normalize-wheel-es: 1.2.0 + vue: 3.3.5(typescript@5.2.2) + transitivePeerDependencies: + - '@vue/composition-api' + dev: false + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + dev: true + + /entities@1.1.2: + resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} + dev: true + + /entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: true + + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: false + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-config-prettier@8.10.0(eslint@8.51.0): + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.51.0 + dev: true + + /eslint-plugin-prettier@5.0.1(eslint-config-prettier@8.10.0)(eslint@8.51.0)(prettier@3.0.3): + resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.51.0 + eslint-config-prettier: 8.10.0(eslint@8.51.0) + prettier: 3.0.3 + prettier-linter-helpers: 1.0.0 + synckit: 0.8.5 + dev: true + + /eslint-plugin-vue@9.17.0(eslint@8.51.0): + resolution: {integrity: sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + eslint: 8.51.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.0.13 + semver: 7.5.4 + vue-eslint-parser: 9.3.2(eslint@8.51.0) + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.51.0: + resolution: {integrity: sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@eslint-community/regexpp': 4.9.1 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.51.0 + '@humanwhocodes/config-array': 0.11.12 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.23.0 + graphemer: 1.4.0 + ignore: 5.2.4 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.3 + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: true + + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: true + + /eventsource@2.0.2: + resolution: {integrity: sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==} + engines: {node: '>=12.0.0'} + dev: false + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: true + + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + + /expand-brackets@2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + dependencies: + is-extendable: 0.1.1 + dev: true + + /extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + dev: true + + /extglob@2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true + + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + dev: true + + /faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + dependencies: + websocket-driver: 0.7.4 + dev: false + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.1.1 + dev: true + + /fill-range@4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.1.1: + resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} + engines: {node: '>=12.0.0'} + dependencies: + flatted: 3.2.9 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + dev: true + + /follow-redirects@1.15.3: + resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + + /for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + dev: true + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + /fragment-cache@0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + dependencies: + map-cache: 0.2.2 + dev: true + + /fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + + /get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.1 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + dependencies: + duplexer: 0.1.2 + dev: true + + /has-ansi@2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: true + + /has-flag@1.0.0: + resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} + engines: {node: '>=0.10.0'} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-value@0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + dev: true + + /has-value@1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + dev: true + + /has-values@0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + dev: true + + /has-values@1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + dev: true + + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + dependencies: + whatwg-encoding: 2.0.0 + dev: true + + /html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + dev: true + + /htmlparser2@3.10.1: + resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} + dependencies: + domelementtype: 1.3.1 + domhandler: 2.4.2 + domutils: 1.7.0 + entities: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /http-parser-js@0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + dev: false + + /http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: true + + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + dev: true + + /image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dev: true + + /immutable@4.3.4: + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true + + /is-accessor-descriptor@0.1.6: + resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /is-accessor-descriptor@1.0.0: + resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 6.0.3 + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + dev: true + + /is-data-descriptor@0.1.4: + resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /is-data-descriptor@1.0.0: + resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 6.0.3 + dev: true + + /is-descriptor@0.1.6: + resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} + engines: {node: '>=0.10.0'} + dependencies: + is-accessor-descriptor: 0.1.6 + is-data-descriptor: 0.1.4 + kind-of: 5.1.0 + dev: true + + /is-descriptor@1.0.2: + resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} + engines: {node: '>=0.10.0'} + dependencies: + is-accessor-descriptor: 1.0.0 + is-data-descriptor: 1.0.0 + kind-of: 6.0.3 + dev: true + + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: true + + /is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: true + + /is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: true + + /is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-object: 2.0.4 + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: 3.0.0 + dev: true + + /is-number@3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + dev: true + + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: true + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: true + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /isobject@2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + dependencies: + isarray: 1.0.0 + dev: true + + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + dev: true + + /jiti@1.20.0: + resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==} + hasBin: true + dev: true + + /js-base64@2.6.4: + resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} + dev: true + + /js-base64@3.7.5: + resolution: {integrity: sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==} + dev: false + + /js-beautify@1.14.9: + resolution: {integrity: sha512-coM7xq1syLcMyuVGyToxcj2AlzhkDjmfklL8r0JgJ7A76wyGMpJ1oA35mr4APdYNO/o/4YY8H54NQIJzhMbhBg==} + engines: {node: '>=12'} + hasBin: true + dependencies: + config-chain: 1.1.13 + editorconfig: 1.0.4 + glob: 8.1.0 + nopt: 6.0.0 + dev: true + + /js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} + dev: false + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsdom@22.1.0: + resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} + engines: {node: '>=16'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.6 + cssstyle: 3.0.0 + data-urls: 4.0.0 + decimal.js: 10.4.3 + domexception: 4.0.0 + form-data: 4.0.0 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.7 + parse5: 7.1.2 + rrweb-cssom: 0.6.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.3 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 12.0.1 + ws: 8.14.2 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: true + + /kind-of@4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: true + + /kind-of@5.1.0: + resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} + engines: {node: '>=0.10.0'} + dev: true + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: true + + /lint-staged@15.0.2: + resolution: {integrity: sha512-vnEy7pFTHyVuDmCAIFKR5QDO8XLVlPFQQyujQ/STOxe40ICWqJ6knS2wSJ/ffX/Lw0rz83luRDh+ET7toN+rOw==} + engines: {node: '>=18.12.0'} + hasBin: true + dependencies: + chalk: 5.3.0 + commander: 11.1.0 + debug: 4.3.4 + execa: 8.0.1 + lilconfig: 2.1.0 + listr2: 7.0.2 + micromatch: 4.0.5 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /listr2@7.0.2: + resolution: {integrity: sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==} + engines: {node: '>=16.0.0'} + dependencies: + cli-truncate: 3.1.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 5.0.1 + rfdc: 1.3.0 + wrap-ansi: 8.1.0 + dev: true + + /loader-utils@1.4.2: + resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} + engines: {node: '>=4.0.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 1.0.2 + dev: true + + /local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: false + + /lodash-unified@1.0.3(@types/lodash-es@4.17.10)(lodash-es@4.17.21)(lodash@4.17.21): + resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==} + peerDependencies: + '@types/lodash-es': '*' + lodash: '*' + lodash-es: '*' + dependencies: + '@types/lodash-es': 4.17.10 + lodash: 4.17.21 + lodash-es: 4.17.21 + dev: false + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + /log-update@5.0.1: + resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + ansi-escapes: 5.0.0 + cli-cursor: 4.0.0 + slice-ansi: 5.0.0 + strip-ansi: 7.1.0 + wrap-ansi: 8.1.0 + dev: true + + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + /map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + dev: true + + /map-visit@1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} + dependencies: + object-visit: 1.0.1 + dev: true + + /mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: true + + /mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + dev: true + + /mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + dev: true + + /memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + dev: false + + /merge-options@1.0.1: + resolution: {integrity: sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==} + engines: {node: '>=4'} + dependencies: + is-plain-obj: 1.1.0 + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch@3.1.0: + resolution: {integrity: sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 1.0.0 + extend-shallow: 2.0.1 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 5.1.0 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.1: + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + dev: false + + /mixin-deep@1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + dev: true + + /mlly@1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + dependencies: + acorn: 8.10.0 + pathe: 1.1.1 + pkg-types: 1.0.3 + ufo: 1.3.1 + dev: true + + /mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + dev: true + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /muggle-string@0.3.1: + resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + dev: true + + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /nanomatch@1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /node-fetch-native@1.4.0: + resolution: {integrity: sha512-F5kfEj95kX8tkDhUCYdV8dg3/8Olx/94zB8+ZNthFs6Bz31UpUi8Xh40TN3thLwXgrwXry1pEg9lJ++tLWTcqA==} + dev: true + + /node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + dev: true + + /nopt@6.0.0: + resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-wheel-es@1.2.0: + resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==} + dev: false + + /normalize.css@8.0.1: + resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==} + dev: false + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + + /nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + dev: false + + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + + /nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + + /object-copy@0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + dev: true + + /object-visit@1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /ofetch@1.3.3: + resolution: {integrity: sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==} + dependencies: + destr: 2.0.1 + node-fetch-native: 1.4.0 + ufo: 1.3.1 + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + + /open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + dev: true + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.0.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 + dev: true + + /pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + dev: true + + /path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: false + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + + /path-to-regexp@6.2.1: + resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} + dev: false + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /pathe@0.2.0: + resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} + dev: true + + /pathe@1.1.1: + resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + dev: true + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + + /perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + dev: true + + /pinia@2.1.7(typescript@5.2.2)(vue@3.3.5): + resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==} + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.3.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + dependencies: + '@vue/devtools-api': 6.5.1 + typescript: 5.2.2 + vue: 3.3.5(typescript@5.2.2) + vue-demi: 0.14.6(vue@3.3.5) + dev: false + + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + dependencies: + jsonc-parser: 3.2.0 + mlly: 1.4.2 + pathe: 1.1.1 + dev: true + + /posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + dev: true + + /postcss-prefix-selector@1.16.0(postcss@5.2.18): + resolution: {integrity: sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==} + peerDependencies: + postcss: '>4 <9' + dependencies: + postcss: 5.2.18 + dev: true + + /postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss@5.2.18: + resolution: {integrity: sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==} + engines: {node: '>=0.12'} + dependencies: + chalk: 1.1.3 + js-base64: 2.6.4 + source-map: 0.5.7 + supports-color: 3.2.3 + dev: true + + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /posthtml-parser@0.2.1: + resolution: {integrity: sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==} + dependencies: + htmlparser2: 3.10.1 + isobject: 2.1.0 + dev: true + + /posthtml-rename-id@1.0.12: + resolution: {integrity: sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /posthtml-render@1.4.0: + resolution: {integrity: sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==} + engines: {node: '>=10'} + dev: true + + /posthtml-svg-mode@1.0.3: + resolution: {integrity: sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==} + dependencies: + merge-options: 1.0.1 + posthtml: 0.9.2 + posthtml-parser: 0.2.1 + posthtml-render: 1.4.0 + dev: true + + /posthtml@0.9.2: + resolution: {integrity: sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==} + engines: {node: '>=0.10.0'} + dependencies: + posthtml-parser: 0.2.1 + posthtml-render: 1.4.0 + dev: true + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.3.0 + dev: true + + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + dev: true + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false + + /psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true + + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + dev: true + + /query-string@4.3.4: + resolution: {integrity: sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==} + engines: {node: '>=0.10.0'} + dependencies: + object-assign: 4.1.1 + strict-uri-encode: 1.1.0 + dev: true + + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /regex-not@1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + dev: true + + /repeat-element@1.1.4: + resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} + engines: {node: '>=0.10.0'} + dev: true + + /repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + dev: true + + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + /resize-detector@0.3.0: + resolution: {integrity: sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ==} + dev: false + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + dev: true + + /restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rfdc@1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + dev: true + + /run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + dependencies: + execa: 5.1.1 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + /safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + dependencies: + ret: 0.1.15 + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /sass@1.69.4: + resolution: {integrity: sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 3.5.3 + immutable: 4.3.4 + source-map-js: 1.0.2 + dev: true + + /saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + dependencies: + xmlchars: 2.2.0 + dev: true + + /screenfull@6.0.2: + resolution: {integrity: sha512-AQdy8s4WhNvUZ6P8F6PB21tSPIYKniic+Ogx0AacBMjKP1GUHN2E9URxQHtCusiwxudnCKkdy4GrHXPPJSkCCw==} + engines: {node: ^14.13.1 || >=16.0.0} + dev: false + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + + /sirv@2.0.3: + resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.23 + mrmime: 1.0.1 + totalist: 3.0.1 + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + dev: true + + /snapdragon-node@2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + dev: true + + /snapdragon-util@3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /snapdragon@0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /sockjs-client@1.6.1: + resolution: {integrity: sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==} + engines: {node: '>=12'} + dependencies: + debug: 3.2.7 + eventsource: 2.0.2 + faye-websocket: 0.11.4 + inherits: 2.0.4 + url-parse: 1.5.10 + transitivePeerDependencies: + - supports-color + dev: false + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + /source-map-resolve@0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + dev: true + + /source-map-url@0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + dev: true + + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + dev: true + + /stable@0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + dev: true + + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true + + /static-extend@0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + dev: true + + /std-env@3.4.3: + resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} + dev: true + + /strict-uri-encode@1.1.0: + resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} + engines: {node: '>=0.10.0'} + dev: true + + /string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + dev: true + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + dependencies: + acorn: 8.10.0 + dev: true + + /supports-color@2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + dev: true + + /supports-color@3.2.3: + resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==} + engines: {node: '>=0.8.0'} + dependencies: + has-flag: 1.0.0 + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /svg-baker@1.7.0: + resolution: {integrity: sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==} + dependencies: + bluebird: 3.7.2 + clone: 2.1.2 + he: 1.2.0 + image-size: 0.5.5 + loader-utils: 1.4.2 + merge-options: 1.0.1 + micromatch: 3.1.0 + postcss: 5.2.18 + postcss-prefix-selector: 1.16.0(postcss@5.2.18) + posthtml-rename-id: 1.0.12 + posthtml-svg-mode: 1.0.3 + query-string: 4.3.4 + traverse: 0.6.7 + transitivePeerDependencies: + - supports-color + dev: true + + /svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + dev: true + + /svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.0.0 + stable: 0.1.8 + dev: true + + /svgo@3.0.2: + resolution: {integrity: sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.1.0 + css-tree: 2.3.1 + csso: 5.0.5 + picocolors: 1.0.0 + dev: true + + /symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true + + /synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.4.2 + tslib: 2.6.2 + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /tinybench@2.5.1: + resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} + dev: true + + /tinypool@0.7.0: + resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy@2.2.0: + resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} + engines: {node: '>=14.0.0'} + dev: true + + /titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /to-object-path@0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /to-regex-range@2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /to-regex@3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + dev: true + + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: true + + /tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.3.0 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: true + + /tr46@4.1.1: + resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} + engines: {node: '>=14'} + dependencies: + punycode: 2.3.0 + dev: true + + /traverse@0.6.7: + resolution: {integrity: sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==} + dev: true + + /ts-api-utils@1.0.3(typescript@5.2.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.2.2 + dev: true + + /tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + dev: false + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: true + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + dev: true + + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + + /ufo@1.3.1: + resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} + dev: true + + /unconfig@0.3.11: + resolution: {integrity: sha512-bV/nqePAKv71v3HdVUn6UefbsDKQWRX+bJIkiSm0+twIds6WiD2bJLWWT3i214+J/B4edufZpG2w7Y63Vbwxow==} + dependencies: + '@antfu/utils': 0.7.6 + defu: 6.1.2 + jiti: 1.20.0 + mlly: 1.4.2 + dev: true + + /undici-types@5.25.3: + resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} + dev: true + + /union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + dev: true + + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify@2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + dev: true + + /unocss@0.56.5(postcss@8.4.31)(vite@4.5.0): + resolution: {integrity: sha512-tO+9St4CntSjHpLXZqBo0/etS06MtvFF1NEny/qFJCL9sCopWwmDKuzW6/LIb4wfqZLdMpVFoEACMNv8nP849A==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 0.56.5 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + dependencies: + '@unocss/astro': 0.56.5(vite@4.5.0) + '@unocss/cli': 0.56.5 + '@unocss/core': 0.56.5 + '@unocss/extractor-arbitrary-variants': 0.56.5 + '@unocss/postcss': 0.56.5(postcss@8.4.31) + '@unocss/preset-attributify': 0.56.5 + '@unocss/preset-icons': 0.56.5 + '@unocss/preset-mini': 0.56.5 + '@unocss/preset-tagify': 0.56.5 + '@unocss/preset-typography': 0.56.5 + '@unocss/preset-uno': 0.56.5 + '@unocss/preset-web-fonts': 0.56.5 + '@unocss/preset-wind': 0.56.5 + '@unocss/reset': 0.56.5 + '@unocss/transformer-attributify-jsx': 0.56.5 + '@unocss/transformer-attributify-jsx-babel': 0.56.5 + '@unocss/transformer-compile-class': 0.56.5 + '@unocss/transformer-directives': 0.56.5 + '@unocss/transformer-variant-group': 0.56.5 + '@unocss/vite': 0.56.5(vite@4.5.0) + vite: 4.5.0(@types/node@20.8.7)(sass@1.69.4) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + dev: true + + /unset-value@1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + dev: true + + /untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.22.1): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.1 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.0 + dev: true + + /urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + dev: true + + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + /use@3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false + + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: true + + /vite-node@0.34.6(@types/node@20.8.7)(sass@1.69.4): + resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} + engines: {node: '>=v14.18.0'} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + mlly: 1.4.2 + pathe: 1.1.1 + picocolors: 1.0.0 + vite: 4.5.0(@types/node@20.8.7)(sass@1.69.4) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vite-plugin-svg-icons@2.0.1(vite@4.5.0): + resolution: {integrity: sha512-6ktD+DhV6Rz3VtedYvBKKVA2eXF+sAQVaKkKLDSqGUfnhqXl3bj5PPkVTl3VexfTuZy66PmINi8Q6eFnVfRUmA==} + peerDependencies: + vite: '>=2.0.0' + dependencies: + '@types/svgo': 2.6.4 + cors: 2.8.5 + debug: 4.3.4 + etag: 1.8.1 + fs-extra: 10.1.0 + pathe: 0.2.0 + svg-baker: 1.7.0 + svgo: 2.8.0 + vite: 4.5.0(@types/node@20.8.7)(sass@1.69.4) + transitivePeerDependencies: + - supports-color + dev: true + + /vite-svg-loader@4.0.0: + resolution: {integrity: sha512-0MMf1yzzSYlV4MGePsLVAOqXsbF5IVxbn4EEzqRnWxTQl8BJg/cfwIzfQNmNQxZp5XXwd4kyRKF1LytuHZTnqA==} + dependencies: + '@vue/compiler-sfc': 3.3.5 + svgo: 3.0.2 + dev: true + + /vite@4.5.0(@types/node@20.8.7)(sass@1.69.4): + resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.8.7 + esbuild: 0.18.20 + postcss: 8.4.31 + rollup: 3.29.4 + sass: 1.69.4 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vitest@0.34.6(jsdom@22.1.0)(sass@1.69.4): + resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} + engines: {node: '>=v14.18.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true + dependencies: + '@types/chai': 4.3.9 + '@types/chai-subset': 1.3.4 + '@types/node': 20.8.7 + '@vitest/expect': 0.34.6 + '@vitest/runner': 0.34.6 + '@vitest/snapshot': 0.34.6 + '@vitest/spy': 0.34.6 + '@vitest/utils': 0.34.6 + acorn: 8.10.0 + acorn-walk: 8.2.0 + cac: 6.7.14 + chai: 4.3.10 + debug: 4.3.4 + jsdom: 22.1.0 + local-pkg: 0.4.3 + magic-string: 0.30.5 + pathe: 1.1.1 + picocolors: 1.0.0 + std-env: 3.4.3 + strip-literal: 1.3.0 + tinybench: 2.5.1 + tinypool: 0.7.0 + vite: 4.5.0(@types/node@20.8.7)(sass@1.69.4) + vite-node: 0.34.6(@types/node@20.8.7)(sass@1.69.4) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vue-component-type-helpers@1.8.4: + resolution: {integrity: sha512-6bnLkn8O0JJyiFSIF0EfCogzeqNXpnjJ0vW/SZzNHfe6sPx30lTtTXlE5TFs2qhJlAtDFybStVNpL73cPe3OMQ==} + dev: true + + /vue-demi@0.13.11(vue@3.3.5): + resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.3.5(typescript@5.2.2) + dev: false + + /vue-demi@0.14.6(vue@3.3.5): + resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.3.5(typescript@5.2.2) + dev: false + + /vue-echarts@6.6.1(echarts@5.4.3)(vue@3.3.5): + resolution: {integrity: sha512-EpreTzlNeJ+eaUn0AhXEmKJk98xJGecgTqAdyZovoXWnhTxnlW2HuBM0ei3y8rLw1JCUabf8/sYvxjlr8SzBKQ==} + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.5 + echarts: ^5.4.1 + vue: ^2.6.12 || ^3.1.1 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + echarts: 5.4.3 + resize-detector: 0.3.0 + vue: 3.3.5(typescript@5.2.2) + vue-demi: 0.13.11(vue@3.3.5) + dev: false + + /vue-eslint-parser@9.3.2(eslint@8.51.0): + resolution: {integrity: sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.4 + eslint: 8.51.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + lodash: 4.17.21 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /vue-router@4.2.5(vue@3.3.5): + resolution: {integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==} + peerDependencies: + vue: ^3.2.0 + dependencies: + '@vue/devtools-api': 6.5.1 + vue: 3.3.5(typescript@5.2.2) + dev: false + + /vue-template-compiler@2.7.14: + resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + dev: true + + /vue-tsc@1.8.19(typescript@5.2.2): + resolution: {integrity: sha512-tacMQLQ0CXAfbhRycCL5sWIy1qujXaIEtP1hIQpzHWOUuICbtTj9gJyFf91PvzG5KCNIkA5Eg7k2Fmgt28l5DQ==} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@vue/language-core': 1.8.19(typescript@5.2.2) + '@vue/typescript': 1.8.19(typescript@5.2.2) + semver: 7.5.4 + typescript: 5.2.2 + dev: true + + /vue@3.3.5(typescript@5.2.2): + resolution: {integrity: sha512-xYpLEGb25yYU1ul9ZhCcavNZ4YW6PS7YTDdDAd0yc/3w69Tra2BwY4EpKguKddfD56QApXQ17XHq+fJJwEP+UQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@vue/compiler-dom': 3.3.5 + '@vue/compiler-sfc': 3.3.5 + '@vue/runtime-dom': 3.3.5 + '@vue/server-renderer': 3.3.5(vue@3.3.5) + '@vue/shared': 3.3.5 + typescript: 5.2.2 + + /vxe-table-plugin-element@3.0.7(vxe-table@4.4.1): + resolution: {integrity: sha512-cw9krtPRkqCxszWCnVxzgLOEt1HYN2W5AN+AovlN6i7/4gtp1O7YFFVbqmpGYfUU2uf0deXgJXru53Bx9WY20Q==} + peerDependencies: + vxe-table: ^4.2.0 + dependencies: + vxe-table: 4.4.1(vue@3.3.5)(xe-utils@3.5.11) + dev: false + + /vxe-table@4.4.1(vue@3.3.5)(xe-utils@3.5.11): + resolution: {integrity: sha512-yq19+sds2Av625YiS3vpYjdXUN2BFTAyboOT+v5yhi6sroR7WwOnH7jkJ7/Q4U6ZhCDT59u0UOGAPVT27/4OWQ==} + peerDependencies: + vue: ^3.2.28 + xe-utils: ^3.5.0 + dependencies: + vue: 3.3.5(typescript@5.2.2) + xe-utils: 3.5.11 + dev: false + + /w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} + dependencies: + xml-name-validator: 4.0.0 + dev: true + + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true + + /websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + dependencies: + http-parser-js: 0.5.8 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + dev: false + + /websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + dev: false + + /whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + dependencies: + iconv-lite: 0.6.3 + dev: true + + /whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + dev: true + + /whatwg-url@12.0.1: + resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} + engines: {node: '>=14'} + dependencies: + tr46: 4.1.1 + webidl-conversions: 7.0.0 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /ws@8.14.2: + resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /xe-utils@3.5.11: + resolution: {integrity: sha512-lyKc/lTBga1Zb63p+FED8mtxLnYIjSS8PVJM1N64NGdCu/3d1XubaVeke2p91RHssP0ExVAl2LUqZYperoz76Q==} + dev: false + + /xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + dev: true + + /xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yaml@2.3.3: + resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==} + engines: {node: '>= 14'} + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true + + /zrender@5.4.4: + resolution: {integrity: sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==} + dependencies: + tslib: 2.3.0 + dev: false diff --git a/tenant-web-ui/prettier.config.js b/tenant-web-ui/prettier.config.js new file mode 100644 index 0000000..b38ea19 --- /dev/null +++ b/tenant-web-ui/prettier.config.js @@ -0,0 +1,21 @@ +/** 配置项文档:https://prettier.io/docs/en/configuration.html */ +module.exports = { + /** 每一行的宽度 */ + printWidth: 120, + /** Tab 键的空格数 */ + tabWidth: 2, + /** 在对象中的括号之间是否用空格来间隔 */ + bracketSpacing: true, + /** 箭头函数的参数无论有几个,都要括号包裹 */ + arrowParens: "always", + /** 换行符的使用 */ + endOfLine: "auto", + /** 是否采用单引号 */ + singleQuote: false, + /** 对象或者数组的最后一个元素后面不要加逗号 */ + trailingComma: "none", + /** 是否加分号 */ + semi: false, + /** 是否使用 Tab 格式化 */ + useTabs: false +} diff --git a/tenant-web-ui/public/app-loading.css b/tenant-web-ui/public/app-loading.css new file mode 100644 index 0000000..4f1346d --- /dev/null +++ b/tenant-web-ui/public/app-loading.css @@ -0,0 +1,45 @@ +/** 白屏阶段会执行的 CSS 加载动画 */ + +#app-loading { + position: relative; + top: 45vh; + margin: 0 auto; + color: #409eff; + font-size: 12px; +} + +#app-loading, +#app-loading::before, +#app-loading::after { + width: 2em; + height: 2em; + border-radius: 50%; + animation: 2s ease-in-out infinite app-loading-animation; +} + +#app-loading::before, +#app-loading::after { + content: ""; + position: absolute; +} + +#app-loading::before { + left: -4em; + animation-delay: -0.2s; +} + +#app-loading::after { + left: 4em; + animation-delay: 0.2s; +} + +@keyframes app-loading-animation { + 0%, + 80%, + 100% { + box-shadow: 0 2em 0 -2em; + } + 40% { + box-shadow: 0 2em 0 0; + } +} diff --git a/tenant-web-ui/public/favicon.ico b/tenant-web-ui/public/favicon.ico new file mode 100644 index 0000000..3ed5950 Binary files /dev/null and b/tenant-web-ui/public/favicon.ico differ diff --git a/tenant-web-ui/src/App.vue b/tenant-web-ui/src/App.vue new file mode 100644 index 0000000..ceedb68 --- /dev/null +++ b/tenant-web-ui/src/App.vue @@ -0,0 +1,24 @@ + + + diff --git a/tenant-web-ui/src/api/config.ts b/tenant-web-ui/src/api/config.ts new file mode 100644 index 0000000..38525e8 --- /dev/null +++ b/tenant-web-ui/src/api/config.ts @@ -0,0 +1,33 @@ +import { ISearchQuery } from "@/types/base" +import { ISysConfig } from "@/types/sys" +import { httpDelete, httpGet, httpPost, httpPut } from "@/utils/service" + +/** 根据Id查询 */ +export const getConfigApi = (id: number) => { + return httpGet>(`/sys/config/${id}`) +} + +/** 分页查询所有 */ +export const queryConfigApi = (data: ISearchQuery) => { + return httpGet>("/sys/config/query", data) +} + +/** 查询所有 */ +export const listConfigApi = () => { + return httpGet>("/sys/config/list") +} + +/** 新增 */ +export const saveConfigApi = (data: ISysConfig) => { + return httpPost>("/sys/config", data) +} + +/** 修改 */ +export const updateConfigApi = (data: ISysConfig) => { + return httpPut>("/sys/config", data) +} + +/** 删除 */ +export const deleteConfigApi = (id: number) => { + return httpDelete>(`/sys/config/${id}`) +} diff --git a/tenant-web-ui/src/api/dept.ts b/tenant-web-ui/src/api/dept.ts new file mode 100644 index 0000000..747400c --- /dev/null +++ b/tenant-web-ui/src/api/dept.ts @@ -0,0 +1,38 @@ +import { ISearchQuery } from "@/types/base" +import { IPmsDept } from "@/types/pms" +import { httpDelete, httpGet, httpPost, httpPut } from "@/utils/service" + +/** 根据Id查询 */ +export const getDeptApi = (id: number) => { + return httpGet>(`/pms/dept/${id}`) +} + +/** 分页查询所有 */ +export const queryDeptApi = (data: ISearchQuery) => { + return httpGet>("/pms/dept/query", data) +} + +/** 查询所有 */ +export const listDeptApi = () => { + return httpGet>("/pms/dept/list") +} + +/** 查询树节点 */ +export const treeDeptApi = () => { + return httpGet>("/pms/dept/tree") +} + +/** 新增 */ +export const saveDeptApi = (data: IPmsDept) => { + return httpPost>("/pms/dept", data) +} + +/** 修改 */ +export const updateDeptApi = (data: IPmsDept) => { + return httpPut>("/pms/dept", data) +} + +/** 删除 */ +export const deleteDeptApi = (id: number) => { + return httpDelete>(`/pms/dept/${id}`) +} diff --git a/tenant-web-ui/src/api/device.ts b/tenant-web-ui/src/api/device.ts new file mode 100644 index 0000000..f631766 --- /dev/null +++ b/tenant-web-ui/src/api/device.ts @@ -0,0 +1,33 @@ +import { ISearchQuery } from "@/types/base" +import { ICmsDevice } from "@/types/cms" +import { httpDelete, httpGet, httpPost, httpPut } from "@/utils/service" + +/** 根据Id查询 */ +export const getDeviceApi = (id: number) => { + return httpGet>(`/cms/device/${id}`) +} + +/** 分页查询所有 */ +export const queryDeviceApi = (data: ISearchQuery) => { + return httpGet>("/cms/device/query", data) +} + +/** 查询所有 */ +export const listDeviceApi = () => { + return httpGet>("/cms/device/list") +} + +/** 新增 */ +export const saveDeviceApi = (data: ICmsDevice) => { + return httpPost>("/cms/device", data) +} + +/** 修改 */ +export const updateDeviceApi = (data: ICmsDevice) => { + return httpPut>("/cms/device", data) +} + +/** 删除 */ +export const deleteDeviceApi = (id: number) => { + return httpDelete>(`/cms/device/${id}`) +} diff --git a/tenant-web-ui/src/api/dict.ts b/tenant-web-ui/src/api/dict.ts new file mode 100644 index 0000000..89adc77 --- /dev/null +++ b/tenant-web-ui/src/api/dict.ts @@ -0,0 +1,60 @@ +import { ISearchQuery } from "@/types/base" +import { httpDelete, httpGet, httpPost, httpPut } from "@/utils/service" +import { IMapDictData, IDictType, IDictData, IDictSearchQuery } from "@/types/dict" + +/** [Map]查询所有 */ +export const mapKeysApi = () => { + return httpGet>>("/dict/data/mapKeys") +} + +/** 根据Id查询 */ +export const getDictTypeApi = (id: number) => { + return httpGet>(`/dict/type/${id}`) +} + +/** 分页查询所有 */ +export const queryDictTypeApi = (data: ISearchQuery) => { + return httpGet>("/dict/type/query", data) +} + +/** 查询所有 */ +export const listDictTypeApi = () => { + return httpGet>("/dict/type/list") +} + +/** 新增 */ +export const saveDictTypeApi = (data: IDictType) => { + return httpPost>("/dict/type", data) +} + +/** 修改 */ +export const updateDictTypeApi = (data: IDictType) => { + return httpPut>("/dict/type", data) +} + +/** 删除 */ +export const deleteDictTypeApi = (id: number) => { + return httpDelete>(`/dict/type/${id}`) +} + +/// ---------------------- 字典数据 -------------------------------- + +/** 分页查询所有 */ +export const queryDictDataApi = (data: IDictSearchQuery) => { + return httpGet>("/dict/data/query", data) +} + +/** 新增 */ +export const saveDictDataApi = (data: IDictData) => { + return httpPost>("/dict/data", data) +} + +/** 修改 */ +export const updateDictDataApi = (data: IDictData) => { + return httpPut>("/dict/data", data) +} + +/** 删除 */ +export const deleteDictDataApi = (id: number) => { + return httpDelete>(`/dict/data/${id}`) +} diff --git a/tenant-web-ui/src/api/login.ts b/tenant-web-ui/src/api/login.ts new file mode 100644 index 0000000..73775e7 --- /dev/null +++ b/tenant-web-ui/src/api/login.ts @@ -0,0 +1,22 @@ +import { ILoginData, ILoginUserInfo, IOAuth2Token, IUserPerms } from "@/types/pms" +import { httpGet, httpPost } from "@/utils/service" + +/** 登录 */ +export const loginApi = (data?: ILoginData) => { + return httpPost>("/auth/login", data) +} + +/** 退出登录 */ +export const logoutApi = () => { + return httpPost>("/auth/logout") +} + +/** 获取用户详情 */ +export const getUserInfoApi = () => { + return httpGet>("/auth/login/user") +} + +/** 获取用户权限 */ +export const getUserPermsApi = () => { + return httpGet>("/pms/user/rights") +} diff --git a/tenant-web-ui/src/api/loginLog.ts b/tenant-web-ui/src/api/loginLog.ts new file mode 100644 index 0000000..cb67143 --- /dev/null +++ b/tenant-web-ui/src/api/loginLog.ts @@ -0,0 +1,28 @@ +import { ISearchQuery } from "@/types/base" +import { ILoginLog, IOperLog } from "@/types/lms" +import { httpPost, httpGet } from "@/utils/service" + +/** 根据Id查询 */ +export const getLoginLogApi = (id: String) => { + return httpGet>(`/lms/lgoin/${id}`) +} + +/** 分页查询 登录日志 */ +export const queryLoginLogApi = (data: ISearchQuery) => { + return httpGet>("/lms/lgoin/query", data) +} + +/** 删除 登录日志 */ +export const deleteLoginLogApi = (ids: string[]) => { + return httpPost>("/lms/lgoin", ids) +} + +/** 分页查询 操作日志 */ +export const queryOperLogApi = (data: ISearchQuery) => { + return httpGet>("/lms/oper/query", data) +} + +/** 删除 操作日志 */ +export const deleteOperLogApi = (ids: string[]) => { + return httpPost>("/lms/oper", ids) +} diff --git a/tenant-web-ui/src/api/menu.ts b/tenant-web-ui/src/api/menu.ts new file mode 100644 index 0000000..449ea3f --- /dev/null +++ b/tenant-web-ui/src/api/menu.ts @@ -0,0 +1,38 @@ +import { ISearchQuery } from "@/types/base" +import { ISysMenu } from "@/types/pms" +import { httpDelete, httpGet, httpPost, httpPut } from "@/utils/service" + +/** 根据Id查询 */ +export const getMenuApi = (id: number) => { + return httpGet>(`/sys/menu/${id}`) +} + +/** 分页查询所有 */ +export const queryMenuApi = (data: ISearchQuery) => { + return httpGet>("/sys/menu/query", data) +} + +/** 查询所有 */ +export const listMenuApi = () => { + return httpGet>("/sys/menu/list") +} + +/** 查询树节点 */ +export const treeMenuApi = () => { + return httpGet>("/sys/menu/tree") +} + +/** 新增 */ +export const saveMenuApi = (data: ISysMenu) => { + return httpPost>("/sys/menu", data) +} + +/** 修改 */ +export const updateMenuApi = (data: ISysMenu) => { + return httpPut>("/sys/menu", data) +} + +/** 删除 */ +export const deleteMenuApi = (id: number) => { + return httpDelete>(`/sys/menu/${id}`) +} diff --git a/tenant-web-ui/src/api/project.ts b/tenant-web-ui/src/api/project.ts new file mode 100644 index 0000000..c710fc2 --- /dev/null +++ b/tenant-web-ui/src/api/project.ts @@ -0,0 +1,47 @@ +import { ISearchQuery, ISimpleProject } from "@/types/base" +import { ICmsProject } from "@/types/cms" +import { httpDelete, httpGet, httpPost, httpPut } from "@/utils/service" + +/** 根据Id查询 */ +export const getProjectApi = (id: number) => { + return httpGet>(`/cms/project/${id}`) +} + +// 简单查询 +export const simpleQueryProjectApi = (params: ISearchQuery) => { + return httpGet>("/cms/project/simple/query", params) +} + +/** 分页查询所有 */ +export const queryProjectApi = (data: ISearchQuery) => { + return httpGet>("/cms/project/query", data) +} + +/** 查询所有 */ +export const listProjectApi = () => { + return httpGet>("/cms/project/list") +} + +/** 新增 */ +export const saveProjectApi = (data: ICmsProject) => { + return httpPost>("/cms/project", data) +} + +/** 修改 */ +export const updateProjectApi = (data: ICmsProject) => { + return httpPut>("/cms/project", data) +} + +/** 删除 */ +export const deleteProjectApi = (id: number, password: string) => { + const params = { + projectId: id, + password: password + } + return httpDelete>("/cms/project", params) +} + +/** 重置密码 */ +export const resetPasswordApi = (data: any) => { + return httpPost>("/cms/project/reset/password", data) +} diff --git a/tenant-web-ui/src/api/role.ts b/tenant-web-ui/src/api/role.ts new file mode 100644 index 0000000..05c2418 --- /dev/null +++ b/tenant-web-ui/src/api/role.ts @@ -0,0 +1,43 @@ +import { ISearchQuery, IUpdateMenus } from "@/types/base" +import { IPmsRole } from "@/types/pms" +import { httpDelete, httpGet, httpPost, httpPut } from "@/utils/service" + +/** 根据Id查询 */ +export const getRoleApi = (id: number) => { + return httpGet>(`/pms/role/${id}`) +} + +/** 分页查询所有 */ +export const queryRoleApi = (data: ISearchQuery) => { + return httpGet>("/pms/role/query", data) +} + +/** 查询所有 */ +export const listRoleApi = () => { + return httpGet>("/pms/role/list") +} + +/** 新增 */ +export const saveRoleApi = (data: IPmsRole) => { + return httpPost>("/pms/role", data) +} + +/** 修改 */ +export const updateRoleApi = (data: IPmsRole) => { + return httpPut>("/pms/role", data) +} + +/** 删除 */ +export const deleteRoleApi = (id: number) => { + return httpDelete>(`/pms/role/${id}`) +} + +/** 拥有的权限 */ +export const getRoleMenusApi = (data: number) => { + return httpGet>(`/pms/role/menus/${data}`) +} + +/** 修改拥有的权限 */ +export const updateRoleMenusApi = (data: any) => { + return httpPost>("/pms/role/menus", data) +} diff --git a/tenant-web-ui/src/api/server.ts b/tenant-web-ui/src/api/server.ts new file mode 100644 index 0000000..4d8c92c --- /dev/null +++ b/tenant-web-ui/src/api/server.ts @@ -0,0 +1,7 @@ +import { IServerInfo } from "@/types/sys" +import { httpGet } from "@/utils/service" + +/** 查询服务器信息 */ +export const getServerInfoApi = () => { + return httpGet>("/server/info") +} diff --git a/tenant-web-ui/src/api/template.ts b/tenant-web-ui/src/api/template.ts new file mode 100644 index 0000000..a69ff58 --- /dev/null +++ b/tenant-web-ui/src/api/template.ts @@ -0,0 +1,43 @@ +import { ISearchQuery, IUpdateMenus } from "@/types/base" +import { ISysTemplate } from "@/types/sys" +import { httpDelete, httpGet, httpPost, httpPut } from "@/utils/service" + +/** 根据Id查询 */ +export const getTemplateApi = (id: number) => { + return httpGet>(`/sys/template/${id}`) +} + +/** 分页查询所有 */ +export const queryTemplateApi = (data: ISearchQuery) => { + return httpGet>("/sys/template/query", data) +} + +/** 查询所有 */ +export const listTemplateApi = () => { + return httpGet>("/sys/template/list") +} + +/** 新增 */ +export const saveTemplateApi = (data: ISysTemplate) => { + return httpPost>("/sys/template", data) +} + +/** 修改 */ +export const updateTemplateApi = (data: ISysTemplate) => { + return httpPut>("/sys/template", data) +} + +/** 删除 */ +export const deleteTemplateApi = (id: number) => { + return httpDelete>(`/sys/template/${id}`) +} + +/** 拥有的权限 */ +export const getTemplateMenusApi = (data: number) => { + return httpGet>(`/sys/template/menus/${data}`) +} + +/** 修改拥有的权限 */ +export const updateTemplateMenusApi = (data: any) => { + return httpPost>("/sys/template/menus", data) +} diff --git a/tenant-web-ui/src/api/tenant.ts b/tenant-web-ui/src/api/tenant.ts new file mode 100644 index 0000000..f60333e --- /dev/null +++ b/tenant-web-ui/src/api/tenant.ts @@ -0,0 +1,38 @@ +import { ISearchQuery, ISimpleTenant } from "@/types/base" +import { ISysTenant, ICreateTenant, ICreateTenantAdmin } from "@/types/sys" +import { httpDelete, httpGet, httpPost, httpPut } from "@/utils/service" + +// 简单查询 +export const simpleQueryTenantApi = (params: ISearchQuery) => { + return httpGet>("/sys/tenant/simple/query", params) +} + +/** 根据Id查询 */ +export const getTenantApi = (id: number) => { + return httpGet>(`/sys/tenant/${id}`) +} + +/** 分页查询所有 */ +export const queryTenantApi = (data: ISearchQuery) => { + return httpGet>("/sys/tenant/query", data) +} + +/** 查询所有 */ +export const listTenantApi = () => { + return httpGet>("/sys/tenant/list") +} + +/** 新增 */ +export const saveTenantApi = (data: ICreateTenant) => { + return httpPost>("/sys/tenant", data) +} + +/** 修改 */ +export const updateTenantApi = (data: ISysTenant) => { + return httpPut>("/sys/tenant", data) +} + +/** 删除 */ +export const deleteTenantApi = (id: string) => { + return httpDelete>(`/sys/tenant/${id}`) +} diff --git a/tenant-web-ui/src/api/upload.ts b/tenant-web-ui/src/api/upload.ts new file mode 100644 index 0000000..fa9e9e1 --- /dev/null +++ b/tenant-web-ui/src/api/upload.ts @@ -0,0 +1,6 @@ +import { httpDelete } from "@/utils/service" + +// 删除 oss 上的图片 +export const deleteFile = (params: string) => { + return httpDelete>("/upload", { fileUrl: params }) +} diff --git a/tenant-web-ui/src/api/user.ts b/tenant-web-ui/src/api/user.ts new file mode 100644 index 0000000..ec40a06 --- /dev/null +++ b/tenant-web-ui/src/api/user.ts @@ -0,0 +1,53 @@ +import { ISearchQuery } from "@/types/base" +import { IPmsUser, IUserListTenant } from "@/types/pms" +import { httpPost, httpPut, httpGet, httpDelete } from "@/utils/service" + +/** 修改密码 */ +export const updatePasswordApi = (data: any) => { + return httpPost>("/pms/user/update/password", data) +} + +/** 重置密码 */ +export const resetPasswordApi = (data: any) => { + return httpPost>("/pms/user/reset/password", data) +} + +/** 查询用户 */ +export const queryUserApi = (params: ISearchQuery) => { + return httpGet>("/pms/user/query", params) +} + +/** 查询所有 */ +export const listUserApi = () => { + return httpGet>("/pms/user/list") +} + +/** 新增 */ +export const saveUserApi = (data: IPmsUser) => { + return httpPost>("/pms/user", data) +} + +/** 修改用户信息 */ +export const updateUserApi = (data: any) => { + return httpPut>("/pms/user", data) +} + +/** 修改当前登录的用户信息 */ +export const updateUserInfoApi = (data: any) => { + return httpPut>("/pms/user/info", data) +} + +/** 删除 */ +export const deleteUserApi = (id: number) => { + return httpDelete>(`/pms/user/${id}`) +} + +/** 查询系统用户 关联的租户Id */ +export const listSysUserTenantIdApi = (userId: number) => { + return httpGet>(`/sys/user/list/tenant?userId=${userId}`) +} + +/** 系统用户 关联的租户Id */ +export const updateSysUserTenantIdApi = (data: any) => { + return httpPost>("/sys/user/update/tenant", data) +} diff --git a/tenant-web-ui/src/assets/ChinaArea.json b/tenant-web-ui/src/assets/ChinaArea.json new file mode 100644 index 0000000..7bab6f0 --- /dev/null +++ b/tenant-web-ui/src/assets/ChinaArea.json @@ -0,0 +1,25320 @@ +[ + { + "children": [ + { + "children": [ + { + "areaCode": 110101000000, + "name": "东城区", + "parentCode": 110100000000, + "mergerName": "北京市-直辖区-东城区" + }, + { + "areaCode": 110102000000, + "name": "西城区", + "parentCode": 110100000000, + "mergerName": "北京市-直辖区-西城区" + }, + { + "areaCode": 110105000000, + "name": "朝阳区", + "parentCode": 110100000000, + "mergerName": "北京市-直辖区-朝阳区" + }, + { + "areaCode": 110106000000, + "name": "丰台区", + "parentCode": 110100000000, + "mergerName": "北京市-直辖区-丰台区" + }, + { + "areaCode": 110107000000, + "name": "石景山区", + "parentCode": 110100000000, + "mergerName": "北京市-直辖区-石景山区" + }, + { + "areaCode": 110108000000, + "name": "海淀区", + "parentCode": 110100000000, + "mergerName": "北京市-直辖区-海淀区" + }, + { + "areaCode": 110109000000, + "name": "门头沟区", + "parentCode": 110100000000, + "mergerName": "北京市-直辖区-门头沟区" + }, + { + "areaCode": 110111000000, + "name": "房山区", + "parentCode": 110100000000, + "mergerName": "北京市-直辖区-房山区" + }, + { + "areaCode": 110112000000, + "name": "通州区", + "parentCode": 110100000000, + "mergerName": "北京市-直辖区-通州区" + }, + { + "areaCode": 110113000000, + "name": "顺义区", + "parentCode": 110100000000, + "mergerName": "北京市-直辖区-顺义区" + }, + { + "areaCode": 110114000000, + "name": "昌平区", + "parentCode": 110100000000, + "mergerName": "北京市-直辖区-昌平区" + }, + { + "areaCode": 110115000000, + "name": "大兴区", + "parentCode": 110100000000, + "mergerName": "北京市-直辖区-大兴区" + }, + { + "areaCode": 110116000000, + "name": "怀柔区", + "parentCode": 110100000000, + "mergerName": "北京市-直辖区-怀柔区" + }, + { + "areaCode": 110117000000, + "name": "平谷区", + "parentCode": 110100000000, + "mergerName": "北京市-直辖区-平谷区" + }, + { + "areaCode": 110118000000, + "name": "密云区", + "parentCode": 110100000000, + "mergerName": "北京市-直辖区-密云区" + }, + { + "areaCode": 110119000000, + "name": "延庆区", + "parentCode": 110100000000, + "mergerName": "北京市-直辖区-延庆区" + } + ], + "areaCode": 110100000000, + "name": "直辖区", + "parentCode": 110000000000, + "mergerName": "北京市-直辖区" + } + ], + "areaCode": 110000000000, + "name": "北京市", + "parentCode": 0, + "mergerName": "北京市" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 120101000000, + "name": "和平区", + "parentCode": 120100000000, + "mergerName": "天津市-直辖区-和平区" + }, + { + "areaCode": 120102000000, + "name": "河东区", + "parentCode": 120100000000, + "mergerName": "天津市-直辖区-河东区" + }, + { + "areaCode": 120103000000, + "name": "河西区", + "parentCode": 120100000000, + "mergerName": "天津市-直辖区-河西区" + }, + { + "areaCode": 120104000000, + "name": "南开区", + "parentCode": 120100000000, + "mergerName": "天津市-直辖区-南开区" + }, + { + "areaCode": 120105000000, + "name": "河北区", + "parentCode": 120100000000, + "mergerName": "天津市-直辖区-河北区" + }, + { + "areaCode": 120106000000, + "name": "红桥区", + "parentCode": 120100000000, + "mergerName": "天津市-直辖区-红桥区" + }, + { + "areaCode": 120110000000, + "name": "东丽区", + "parentCode": 120100000000, + "mergerName": "天津市-直辖区-东丽区" + }, + { + "areaCode": 120111000000, + "name": "西青区", + "parentCode": 120100000000, + "mergerName": "天津市-直辖区-西青区" + }, + { + "areaCode": 120112000000, + "name": "津南区", + "parentCode": 120100000000, + "mergerName": "天津市-直辖区-津南区" + }, + { + "areaCode": 120113000000, + "name": "北辰区", + "parentCode": 120100000000, + "mergerName": "天津市-直辖区-北辰区" + }, + { + "areaCode": 120114000000, + "name": "武清区", + "parentCode": 120100000000, + "mergerName": "天津市-直辖区-武清区" + }, + { + "areaCode": 120115000000, + "name": "宝坻区", + "parentCode": 120100000000, + "mergerName": "天津市-直辖区-宝坻区" + }, + { + "areaCode": 120116000000, + "name": "滨海新区", + "parentCode": 120100000000, + "mergerName": "天津市-直辖区-滨海新区" + }, + { + "areaCode": 120117000000, + "name": "宁河区", + "parentCode": 120100000000, + "mergerName": "天津市-直辖区-宁河区" + }, + { + "areaCode": 120118000000, + "name": "静海区", + "parentCode": 120100000000, + "mergerName": "天津市-直辖区-静海区" + }, + { + "areaCode": 120119000000, + "name": "蓟州区", + "parentCode": 120100000000, + "mergerName": "天津市-直辖区-蓟州区" + } + ], + "areaCode": 120100000000, + "name": "直辖区", + "parentCode": 120000000000, + "mergerName": "天津市-直辖区" + } + ], + "areaCode": 120000000000, + "name": "天津市", + "parentCode": 0, + "mergerName": "天津市" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 130101000000, + "name": "市辖区", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-市辖区" + }, + { + "areaCode": 130102000000, + "name": "长安区", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-长安区" + }, + { + "areaCode": 130104000000, + "name": "桥西区", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-桥西区" + }, + { + "areaCode": 130105000000, + "name": "新华区", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-新华区" + }, + { + "areaCode": 130107000000, + "name": "井陉矿区", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-井陉矿区" + }, + { + "areaCode": 130108000000, + "name": "裕华区", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-裕华区" + }, + { + "areaCode": 130109000000, + "name": "藁城区", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-藁城区" + }, + { + "areaCode": 130110000000, + "name": "鹿泉区", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-鹿泉区" + }, + { + "areaCode": 130111000000, + "name": "栾城区", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-栾城区" + }, + { + "areaCode": 130121000000, + "name": "井陉县", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-井陉县" + }, + { + "areaCode": 130123000000, + "name": "正定县", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-正定县" + }, + { + "areaCode": 130125000000, + "name": "行唐县", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-行唐县" + }, + { + "areaCode": 130126000000, + "name": "灵寿县", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-灵寿县" + }, + { + "areaCode": 130127000000, + "name": "高邑县", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-高邑县" + }, + { + "areaCode": 130128000000, + "name": "深泽县", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-深泽县" + }, + { + "areaCode": 130129000000, + "name": "赞皇县", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-赞皇县" + }, + { + "areaCode": 130130000000, + "name": "无极县", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-无极县" + }, + { + "areaCode": 130131000000, + "name": "平山县", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-平山县" + }, + { + "areaCode": 130132000000, + "name": "元氏县", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-元氏县" + }, + { + "areaCode": 130133000000, + "name": "赵县", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-赵县" + }, + { + "areaCode": 130171000000, + "name": "石家庄高新技术产业开发区", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-石家庄高新技术产业开发区" + }, + { + "areaCode": 130172000000, + "name": "石家庄循环化工园区", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-石家庄循环化工园区" + }, + { + "areaCode": 130181000000, + "name": "辛集市", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-辛集市" + }, + { + "areaCode": 130183000000, + "name": "晋州市", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-晋州市" + }, + { + "areaCode": 130184000000, + "name": "新乐市", + "parentCode": 130100000000, + "mergerName": "河北省-石家庄市-新乐市" + } + ], + "areaCode": 130100000000, + "name": "石家庄市", + "parentCode": 130000000000, + "mergerName": "河北省-石家庄市" + }, + { + "children": [ + { + "areaCode": 130201000000, + "name": "市辖区", + "parentCode": 130200000000, + "mergerName": "河北省-唐山市-市辖区" + }, + { + "areaCode": 130202000000, + "name": "路南区", + "parentCode": 130200000000, + "mergerName": "河北省-唐山市-路南区" + }, + { + "areaCode": 130203000000, + "name": "路北区", + "parentCode": 130200000000, + "mergerName": "河北省-唐山市-路北区" + }, + { + "areaCode": 130204000000, + "name": "古冶区", + "parentCode": 130200000000, + "mergerName": "河北省-唐山市-古冶区" + }, + { + "areaCode": 130205000000, + "name": "开平区", + "parentCode": 130200000000, + "mergerName": "河北省-唐山市-开平区" + }, + { + "areaCode": 130207000000, + "name": "丰南区", + "parentCode": 130200000000, + "mergerName": "河北省-唐山市-丰南区" + }, + { + "areaCode": 130208000000, + "name": "丰润区", + "parentCode": 130200000000, + "mergerName": "河北省-唐山市-丰润区" + }, + { + "areaCode": 130209000000, + "name": "曹妃甸区", + "parentCode": 130200000000, + "mergerName": "河北省-唐山市-曹妃甸区" + }, + { + "areaCode": 130224000000, + "name": "滦南县", + "parentCode": 130200000000, + "mergerName": "河北省-唐山市-滦南县" + }, + { + "areaCode": 130225000000, + "name": "乐亭县", + "parentCode": 130200000000, + "mergerName": "河北省-唐山市-乐亭县" + }, + { + "areaCode": 130227000000, + "name": "迁西县", + "parentCode": 130200000000, + "mergerName": "河北省-唐山市-迁西县" + }, + { + "areaCode": 130229000000, + "name": "玉田县", + "parentCode": 130200000000, + "mergerName": "河北省-唐山市-玉田县" + }, + { + "areaCode": 130271000000, + "name": "唐山市芦台经济技术开发区", + "parentCode": 130200000000, + "mergerName": "河北省-唐山市-唐山市芦台经济技术开发区" + }, + { + "areaCode": 130272000000, + "name": "唐山市汉沽管理区", + "parentCode": 130200000000, + "mergerName": "河北省-唐山市-唐山市汉沽管理区" + }, + { + "areaCode": 130273000000, + "name": "唐山高新技术产业开发区", + "parentCode": 130200000000, + "mergerName": "河北省-唐山市-唐山高新技术产业开发区" + }, + { + "areaCode": 130274000000, + "name": "河北唐山海港经济开发区", + "parentCode": 130200000000, + "mergerName": "河北省-唐山市-河北唐山海港经济开发区" + }, + { + "areaCode": 130281000000, + "name": "遵化市", + "parentCode": 130200000000, + "mergerName": "河北省-唐山市-遵化市" + }, + { + "areaCode": 130283000000, + "name": "迁安市", + "parentCode": 130200000000, + "mergerName": "河北省-唐山市-迁安市" + }, + { + "areaCode": 130284000000, + "name": "滦州市", + "parentCode": 130200000000, + "mergerName": "河北省-唐山市-滦州市" + } + ], + "areaCode": 130200000000, + "name": "唐山市", + "parentCode": 130000000000, + "mergerName": "河北省-唐山市" + }, + { + "children": [ + { + "areaCode": 130301000000, + "name": "市辖区", + "parentCode": 130300000000, + "mergerName": "河北省-秦皇岛市-市辖区" + }, + { + "areaCode": 130302000000, + "name": "海港区", + "parentCode": 130300000000, + "mergerName": "河北省-秦皇岛市-海港区" + }, + { + "areaCode": 130303000000, + "name": "山海关区", + "parentCode": 130300000000, + "mergerName": "河北省-秦皇岛市-山海关区" + }, + { + "areaCode": 130304000000, + "name": "北戴河区", + "parentCode": 130300000000, + "mergerName": "河北省-秦皇岛市-北戴河区" + }, + { + "areaCode": 130306000000, + "name": "抚宁区", + "parentCode": 130300000000, + "mergerName": "河北省-秦皇岛市-抚宁区" + }, + { + "areaCode": 130321000000, + "name": "青龙满族自治县", + "parentCode": 130300000000, + "mergerName": "河北省-秦皇岛市-青龙满族自治县" + }, + { + "areaCode": 130322000000, + "name": "昌黎县", + "parentCode": 130300000000, + "mergerName": "河北省-秦皇岛市-昌黎县" + }, + { + "areaCode": 130324000000, + "name": "卢龙县", + "parentCode": 130300000000, + "mergerName": "河北省-秦皇岛市-卢龙县" + }, + { + "areaCode": 130371000000, + "name": "秦皇岛市经济技术开发区", + "parentCode": 130300000000, + "mergerName": "河北省-秦皇岛市-秦皇岛市经济技术开发区" + }, + { + "areaCode": 130372000000, + "name": "北戴河新区", + "parentCode": 130300000000, + "mergerName": "河北省-秦皇岛市-北戴河新区" + } + ], + "areaCode": 130300000000, + "name": "秦皇岛市", + "parentCode": 130000000000, + "mergerName": "河北省-秦皇岛市" + }, + { + "children": [ + { + "areaCode": 130401000000, + "name": "市辖区", + "parentCode": 130400000000, + "mergerName": "河北省-邯郸市-市辖区" + }, + { + "areaCode": 130402000000, + "name": "邯山区", + "parentCode": 130400000000, + "mergerName": "河北省-邯郸市-邯山区" + }, + { + "areaCode": 130403000000, + "name": "丛台区", + "parentCode": 130400000000, + "mergerName": "河北省-邯郸市-丛台区" + }, + { + "areaCode": 130404000000, + "name": "复兴区", + "parentCode": 130400000000, + "mergerName": "河北省-邯郸市-复兴区" + }, + { + "areaCode": 130406000000, + "name": "峰峰矿区", + "parentCode": 130400000000, + "mergerName": "河北省-邯郸市-峰峰矿区" + }, + { + "areaCode": 130407000000, + "name": "肥乡区", + "parentCode": 130400000000, + "mergerName": "河北省-邯郸市-肥乡区" + }, + { + "areaCode": 130408000000, + "name": "永年区", + "parentCode": 130400000000, + "mergerName": "河北省-邯郸市-永年区" + }, + { + "areaCode": 130423000000, + "name": "临漳县", + "parentCode": 130400000000, + "mergerName": "河北省-邯郸市-临漳县" + }, + { + "areaCode": 130424000000, + "name": "成安县", + "parentCode": 130400000000, + "mergerName": "河北省-邯郸市-成安县" + }, + { + "areaCode": 130425000000, + "name": "大名县", + "parentCode": 130400000000, + "mergerName": "河北省-邯郸市-大名县" + }, + { "areaCode": 130426000000, "name": "涉县", "parentCode": 130400000000, "mergerName": "河北省-邯郸市-涉县" }, + { "areaCode": 130427000000, "name": "磁县", "parentCode": 130400000000, "mergerName": "河北省-邯郸市-磁县" }, + { "areaCode": 130430000000, "name": "邱县", "parentCode": 130400000000, "mergerName": "河北省-邯郸市-邱县" }, + { + "areaCode": 130431000000, + "name": "鸡泽县", + "parentCode": 130400000000, + "mergerName": "河北省-邯郸市-鸡泽县" + }, + { + "areaCode": 130432000000, + "name": "广平县", + "parentCode": 130400000000, + "mergerName": "河北省-邯郸市-广平县" + }, + { + "areaCode": 130433000000, + "name": "馆陶县", + "parentCode": 130400000000, + "mergerName": "河北省-邯郸市-馆陶县" + }, + { "areaCode": 130434000000, "name": "魏县", "parentCode": 130400000000, "mergerName": "河北省-邯郸市-魏县" }, + { + "areaCode": 130435000000, + "name": "曲周县", + "parentCode": 130400000000, + "mergerName": "河北省-邯郸市-曲周县" + }, + { + "areaCode": 130471000000, + "name": "邯郸经济技术开发区", + "parentCode": 130400000000, + "mergerName": "河北省-邯郸市-邯郸经济技术开发区" + }, + { + "areaCode": 130473000000, + "name": "邯郸冀南新区", + "parentCode": 130400000000, + "mergerName": "河北省-邯郸市-邯郸冀南新区" + }, + { + "areaCode": 130481000000, + "name": "武安市", + "parentCode": 130400000000, + "mergerName": "河北省-邯郸市-武安市" + } + ], + "areaCode": 130400000000, + "name": "邯郸市", + "parentCode": 130000000000, + "mergerName": "河北省-邯郸市" + }, + { + "children": [ + { + "areaCode": 130501000000, + "name": "市辖区", + "parentCode": 130500000000, + "mergerName": "河北省-邢台市-市辖区" + }, + { + "areaCode": 130502000000, + "name": "桥东区", + "parentCode": 130500000000, + "mergerName": "河北省-邢台市-桥东区" + }, + { + "areaCode": 130503000000, + "name": "桥西区", + "parentCode": 130500000000, + "mergerName": "河北省-邢台市-桥西区" + }, + { + "areaCode": 130521000000, + "name": "邢台县", + "parentCode": 130500000000, + "mergerName": "河北省-邢台市-邢台县" + }, + { + "areaCode": 130522000000, + "name": "临城县", + "parentCode": 130500000000, + "mergerName": "河北省-邢台市-临城县" + }, + { + "areaCode": 130523000000, + "name": "内丘县", + "parentCode": 130500000000, + "mergerName": "河北省-邢台市-内丘县" + }, + { + "areaCode": 130524000000, + "name": "柏乡县", + "parentCode": 130500000000, + "mergerName": "河北省-邢台市-柏乡县" + }, + { + "areaCode": 130525000000, + "name": "隆尧县", + "parentCode": 130500000000, + "mergerName": "河北省-邢台市-隆尧县" + }, + { "areaCode": 130526000000, "name": "任县", "parentCode": 130500000000, "mergerName": "河北省-邢台市-任县" }, + { + "areaCode": 130527000000, + "name": "南和县", + "parentCode": 130500000000, + "mergerName": "河北省-邢台市-南和县" + }, + { + "areaCode": 130528000000, + "name": "宁晋县", + "parentCode": 130500000000, + "mergerName": "河北省-邢台市-宁晋县" + }, + { + "areaCode": 130529000000, + "name": "巨鹿县", + "parentCode": 130500000000, + "mergerName": "河北省-邢台市-巨鹿县" + }, + { + "areaCode": 130530000000, + "name": "新河县", + "parentCode": 130500000000, + "mergerName": "河北省-邢台市-新河县" + }, + { + "areaCode": 130531000000, + "name": "广宗县", + "parentCode": 130500000000, + "mergerName": "河北省-邢台市-广宗县" + }, + { + "areaCode": 130532000000, + "name": "平乡县", + "parentCode": 130500000000, + "mergerName": "河北省-邢台市-平乡县" + }, + { "areaCode": 130533000000, "name": "威县", "parentCode": 130500000000, "mergerName": "河北省-邢台市-威县" }, + { + "areaCode": 130534000000, + "name": "清河县", + "parentCode": 130500000000, + "mergerName": "河北省-邢台市-清河县" + }, + { + "areaCode": 130535000000, + "name": "临西县", + "parentCode": 130500000000, + "mergerName": "河北省-邢台市-临西县" + }, + { + "areaCode": 130571000000, + "name": "河北邢台经济开发区", + "parentCode": 130500000000, + "mergerName": "河北省-邢台市-河北邢台经济开发区" + }, + { + "areaCode": 130581000000, + "name": "南宫市", + "parentCode": 130500000000, + "mergerName": "河北省-邢台市-南宫市" + }, + { + "areaCode": 130582000000, + "name": "沙河市", + "parentCode": 130500000000, + "mergerName": "河北省-邢台市-沙河市" + } + ], + "areaCode": 130500000000, + "name": "邢台市", + "parentCode": 130000000000, + "mergerName": "河北省-邢台市" + }, + { + "children": [ + { + "areaCode": 130601000000, + "name": "市辖区", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-市辖区" + }, + { + "areaCode": 130602000000, + "name": "竞秀区", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-竞秀区" + }, + { + "areaCode": 130606000000, + "name": "莲池区", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-莲池区" + }, + { + "areaCode": 130607000000, + "name": "满城区", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-满城区" + }, + { + "areaCode": 130608000000, + "name": "清苑区", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-清苑区" + }, + { + "areaCode": 130609000000, + "name": "徐水区", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-徐水区" + }, + { + "areaCode": 130623000000, + "name": "涞水县", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-涞水县" + }, + { + "areaCode": 130624000000, + "name": "阜平县", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-阜平县" + }, + { + "areaCode": 130626000000, + "name": "定兴县", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-定兴县" + }, + { "areaCode": 130627000000, "name": "唐县", "parentCode": 130600000000, "mergerName": "河北省-保定市-唐县" }, + { + "areaCode": 130628000000, + "name": "高阳县", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-高阳县" + }, + { + "areaCode": 130629000000, + "name": "容城县", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-容城县" + }, + { + "areaCode": 130630000000, + "name": "涞源县", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-涞源县" + }, + { + "areaCode": 130631000000, + "name": "望都县", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-望都县" + }, + { + "areaCode": 130632000000, + "name": "安新县", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-安新县" + }, + { "areaCode": 130633000000, "name": "易县", "parentCode": 130600000000, "mergerName": "河北省-保定市-易县" }, + { + "areaCode": 130634000000, + "name": "曲阳县", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-曲阳县" + }, + { "areaCode": 130635000000, "name": "蠡县", "parentCode": 130600000000, "mergerName": "河北省-保定市-蠡县" }, + { + "areaCode": 130636000000, + "name": "顺平县", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-顺平县" + }, + { + "areaCode": 130637000000, + "name": "博野县", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-博野县" + }, + { "areaCode": 130638000000, "name": "雄县", "parentCode": 130600000000, "mergerName": "河北省-保定市-雄县" }, + { + "areaCode": 130671000000, + "name": "保定高新技术产业开发区", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-保定高新技术产业开发区" + }, + { + "areaCode": 130672000000, + "name": "保定白沟新城", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-保定白沟新城" + }, + { + "areaCode": 130681000000, + "name": "涿州市", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-涿州市" + }, + { + "areaCode": 130682000000, + "name": "定州市", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-定州市" + }, + { + "areaCode": 130683000000, + "name": "安国市", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-安国市" + }, + { + "areaCode": 130684000000, + "name": "高碑店市", + "parentCode": 130600000000, + "mergerName": "河北省-保定市-高碑店市" + } + ], + "areaCode": 130600000000, + "name": "保定市", + "parentCode": 130000000000, + "mergerName": "河北省-保定市" + }, + { + "children": [ + { + "areaCode": 130701000000, + "name": "市辖区", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-市辖区" + }, + { + "areaCode": 130702000000, + "name": "桥东区", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-桥东区" + }, + { + "areaCode": 130703000000, + "name": "桥西区", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-桥西区" + }, + { + "areaCode": 130705000000, + "name": "宣化区", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-宣化区" + }, + { + "areaCode": 130706000000, + "name": "下花园区", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-下花园区" + }, + { + "areaCode": 130708000000, + "name": "万全区", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-万全区" + }, + { + "areaCode": 130709000000, + "name": "崇礼区", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-崇礼区" + }, + { + "areaCode": 130722000000, + "name": "张北县", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-张北县" + }, + { + "areaCode": 130723000000, + "name": "康保县", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-康保县" + }, + { + "areaCode": 130724000000, + "name": "沽源县", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-沽源县" + }, + { + "areaCode": 130725000000, + "name": "尚义县", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-尚义县" + }, + { + "areaCode": 130726000000, + "name": "蔚县", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-蔚县" + }, + { + "areaCode": 130727000000, + "name": "阳原县", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-阳原县" + }, + { + "areaCode": 130728000000, + "name": "怀安县", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-怀安县" + }, + { + "areaCode": 130730000000, + "name": "怀来县", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-怀来县" + }, + { + "areaCode": 130731000000, + "name": "涿鹿县", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-涿鹿县" + }, + { + "areaCode": 130732000000, + "name": "赤城县", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-赤城县" + }, + { + "areaCode": 130771000000, + "name": "张家口市高新技术产业开发区", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-张家口市高新技术产业开发区" + }, + { + "areaCode": 130772000000, + "name": "张家口市察北管理区", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-张家口市察北管理区" + }, + { + "areaCode": 130773000000, + "name": "张家口市塞北管理区", + "parentCode": 130700000000, + "mergerName": "河北省-张家口市-张家口市塞北管理区" + } + ], + "areaCode": 130700000000, + "name": "张家口市", + "parentCode": 130000000000, + "mergerName": "河北省-张家口市" + }, + { + "children": [ + { + "areaCode": 130801000000, + "name": "市辖区", + "parentCode": 130800000000, + "mergerName": "河北省-承德市-市辖区" + }, + { + "areaCode": 130802000000, + "name": "双桥区", + "parentCode": 130800000000, + "mergerName": "河北省-承德市-双桥区" + }, + { + "areaCode": 130803000000, + "name": "双滦区", + "parentCode": 130800000000, + "mergerName": "河北省-承德市-双滦区" + }, + { + "areaCode": 130804000000, + "name": "鹰手营子矿区", + "parentCode": 130800000000, + "mergerName": "河北省-承德市-鹰手营子矿区" + }, + { + "areaCode": 130821000000, + "name": "承德县", + "parentCode": 130800000000, + "mergerName": "河北省-承德市-承德县" + }, + { + "areaCode": 130822000000, + "name": "兴隆县", + "parentCode": 130800000000, + "mergerName": "河北省-承德市-兴隆县" + }, + { + "areaCode": 130824000000, + "name": "滦平县", + "parentCode": 130800000000, + "mergerName": "河北省-承德市-滦平县" + }, + { + "areaCode": 130825000000, + "name": "隆化县", + "parentCode": 130800000000, + "mergerName": "河北省-承德市-隆化县" + }, + { + "areaCode": 130826000000, + "name": "丰宁满族自治县", + "parentCode": 130800000000, + "mergerName": "河北省-承德市-丰宁满族自治县" + }, + { + "areaCode": 130827000000, + "name": "宽城满族自治县", + "parentCode": 130800000000, + "mergerName": "河北省-承德市-宽城满族自治县" + }, + { + "areaCode": 130828000000, + "name": "围场满族蒙古族自治县", + "parentCode": 130800000000, + "mergerName": "河北省-承德市-围场满族蒙古族自治县" + }, + { + "areaCode": 130871000000, + "name": "承德高新技术产业开发区", + "parentCode": 130800000000, + "mergerName": "河北省-承德市-承德高新技术产业开发区" + }, + { + "areaCode": 130881000000, + "name": "平泉市", + "parentCode": 130800000000, + "mergerName": "河北省-承德市-平泉市" + } + ], + "areaCode": 130800000000, + "name": "承德市", + "parentCode": 130000000000, + "mergerName": "河北省-承德市" + }, + { + "children": [ + { + "areaCode": 130901000000, + "name": "市辖区", + "parentCode": 130900000000, + "mergerName": "河北省-沧州市-市辖区" + }, + { + "areaCode": 130902000000, + "name": "新华区", + "parentCode": 130900000000, + "mergerName": "河北省-沧州市-新华区" + }, + { + "areaCode": 130903000000, + "name": "运河区", + "parentCode": 130900000000, + "mergerName": "河北省-沧州市-运河区" + }, + { "areaCode": 130921000000, "name": "沧县", "parentCode": 130900000000, "mergerName": "河北省-沧州市-沧县" }, + { "areaCode": 130922000000, "name": "青县", "parentCode": 130900000000, "mergerName": "河北省-沧州市-青县" }, + { + "areaCode": 130923000000, + "name": "东光县", + "parentCode": 130900000000, + "mergerName": "河北省-沧州市-东光县" + }, + { + "areaCode": 130924000000, + "name": "海兴县", + "parentCode": 130900000000, + "mergerName": "河北省-沧州市-海兴县" + }, + { + "areaCode": 130925000000, + "name": "盐山县", + "parentCode": 130900000000, + "mergerName": "河北省-沧州市-盐山县" + }, + { + "areaCode": 130926000000, + "name": "肃宁县", + "parentCode": 130900000000, + "mergerName": "河北省-沧州市-肃宁县" + }, + { + "areaCode": 130927000000, + "name": "南皮县", + "parentCode": 130900000000, + "mergerName": "河北省-沧州市-南皮县" + }, + { + "areaCode": 130928000000, + "name": "吴桥县", + "parentCode": 130900000000, + "mergerName": "河北省-沧州市-吴桥县" + }, + { "areaCode": 130929000000, "name": "献县", "parentCode": 130900000000, "mergerName": "河北省-沧州市-献县" }, + { + "areaCode": 130930000000, + "name": "孟村回族自治县", + "parentCode": 130900000000, + "mergerName": "河北省-沧州市-孟村回族自治县" + }, + { + "areaCode": 130971000000, + "name": "河北沧州经济开发区", + "parentCode": 130900000000, + "mergerName": "河北省-沧州市-河北沧州经济开发区" + }, + { + "areaCode": 130972000000, + "name": "沧州高新技术产业开发区", + "parentCode": 130900000000, + "mergerName": "河北省-沧州市-沧州高新技术产业开发区" + }, + { + "areaCode": 130973000000, + "name": "沧州渤海新区", + "parentCode": 130900000000, + "mergerName": "河北省-沧州市-沧州渤海新区" + }, + { + "areaCode": 130981000000, + "name": "泊头市", + "parentCode": 130900000000, + "mergerName": "河北省-沧州市-泊头市" + }, + { + "areaCode": 130982000000, + "name": "任丘市", + "parentCode": 130900000000, + "mergerName": "河北省-沧州市-任丘市" + }, + { + "areaCode": 130983000000, + "name": "黄骅市", + "parentCode": 130900000000, + "mergerName": "河北省-沧州市-黄骅市" + }, + { + "areaCode": 130984000000, + "name": "河间市", + "parentCode": 130900000000, + "mergerName": "河北省-沧州市-河间市" + } + ], + "areaCode": 130900000000, + "name": "沧州市", + "parentCode": 130000000000, + "mergerName": "河北省-沧州市" + }, + { + "children": [ + { + "areaCode": 131001000000, + "name": "市辖区", + "parentCode": 131000000000, + "mergerName": "河北省-廊坊市-市辖区" + }, + { + "areaCode": 131002000000, + "name": "安次区", + "parentCode": 131000000000, + "mergerName": "河北省-廊坊市-安次区" + }, + { + "areaCode": 131003000000, + "name": "广阳区", + "parentCode": 131000000000, + "mergerName": "河北省-廊坊市-广阳区" + }, + { + "areaCode": 131022000000, + "name": "固安县", + "parentCode": 131000000000, + "mergerName": "河北省-廊坊市-固安县" + }, + { + "areaCode": 131023000000, + "name": "永清县", + "parentCode": 131000000000, + "mergerName": "河北省-廊坊市-永清县" + }, + { + "areaCode": 131024000000, + "name": "香河县", + "parentCode": 131000000000, + "mergerName": "河北省-廊坊市-香河县" + }, + { + "areaCode": 131025000000, + "name": "大城县", + "parentCode": 131000000000, + "mergerName": "河北省-廊坊市-大城县" + }, + { + "areaCode": 131026000000, + "name": "文安县", + "parentCode": 131000000000, + "mergerName": "河北省-廊坊市-文安县" + }, + { + "areaCode": 131028000000, + "name": "大厂回族自治县", + "parentCode": 131000000000, + "mergerName": "河北省-廊坊市-大厂回族自治县" + }, + { + "areaCode": 131071000000, + "name": "廊坊经济技术开发区", + "parentCode": 131000000000, + "mergerName": "河北省-廊坊市-廊坊经济技术开发区" + }, + { + "areaCode": 131081000000, + "name": "霸州市", + "parentCode": 131000000000, + "mergerName": "河北省-廊坊市-霸州市" + }, + { + "areaCode": 131082000000, + "name": "三河市", + "parentCode": 131000000000, + "mergerName": "河北省-廊坊市-三河市" + } + ], + "areaCode": 131000000000, + "name": "廊坊市", + "parentCode": 130000000000, + "mergerName": "河北省-廊坊市" + }, + { + "children": [ + { + "areaCode": 131101000000, + "name": "市辖区", + "parentCode": 131100000000, + "mergerName": "河北省-衡水市-市辖区" + }, + { + "areaCode": 131102000000, + "name": "桃城区", + "parentCode": 131100000000, + "mergerName": "河北省-衡水市-桃城区" + }, + { + "areaCode": 131103000000, + "name": "冀州区", + "parentCode": 131100000000, + "mergerName": "河北省-衡水市-冀州区" + }, + { + "areaCode": 131121000000, + "name": "枣强县", + "parentCode": 131100000000, + "mergerName": "河北省-衡水市-枣强县" + }, + { + "areaCode": 131122000000, + "name": "武邑县", + "parentCode": 131100000000, + "mergerName": "河北省-衡水市-武邑县" + }, + { + "areaCode": 131123000000, + "name": "武强县", + "parentCode": 131100000000, + "mergerName": "河北省-衡水市-武强县" + }, + { + "areaCode": 131124000000, + "name": "饶阳县", + "parentCode": 131100000000, + "mergerName": "河北省-衡水市-饶阳县" + }, + { + "areaCode": 131125000000, + "name": "安平县", + "parentCode": 131100000000, + "mergerName": "河北省-衡水市-安平县" + }, + { + "areaCode": 131126000000, + "name": "故城县", + "parentCode": 131100000000, + "mergerName": "河北省-衡水市-故城县" + }, + { "areaCode": 131127000000, "name": "景县", "parentCode": 131100000000, "mergerName": "河北省-衡水市-景县" }, + { + "areaCode": 131128000000, + "name": "阜城县", + "parentCode": 131100000000, + "mergerName": "河北省-衡水市-阜城县" + }, + { + "areaCode": 131171000000, + "name": "河北衡水高新技术产业开发区", + "parentCode": 131100000000, + "mergerName": "河北省-衡水市-河北衡水高新技术产业开发区" + }, + { + "areaCode": 131172000000, + "name": "衡水滨湖新区", + "parentCode": 131100000000, + "mergerName": "河北省-衡水市-衡水滨湖新区" + }, + { + "areaCode": 131182000000, + "name": "深州市", + "parentCode": 131100000000, + "mergerName": "河北省-衡水市-深州市" + } + ], + "areaCode": 131100000000, + "name": "衡水市", + "parentCode": 130000000000, + "mergerName": "河北省-衡水市" + } + ], + "areaCode": 130000000000, + "name": "河北省", + "parentCode": 0, + "mergerName": "河北省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 140101000000, + "name": "市辖区", + "parentCode": 140100000000, + "mergerName": "山西省-太原市-市辖区" + }, + { + "areaCode": 140105000000, + "name": "小店区", + "parentCode": 140100000000, + "mergerName": "山西省-太原市-小店区" + }, + { + "areaCode": 140106000000, + "name": "迎泽区", + "parentCode": 140100000000, + "mergerName": "山西省-太原市-迎泽区" + }, + { + "areaCode": 140107000000, + "name": "杏花岭区", + "parentCode": 140100000000, + "mergerName": "山西省-太原市-杏花岭区" + }, + { + "areaCode": 140108000000, + "name": "尖草坪区", + "parentCode": 140100000000, + "mergerName": "山西省-太原市-尖草坪区" + }, + { + "areaCode": 140109000000, + "name": "万柏林区", + "parentCode": 140100000000, + "mergerName": "山西省-太原市-万柏林区" + }, + { + "areaCode": 140110000000, + "name": "晋源区", + "parentCode": 140100000000, + "mergerName": "山西省-太原市-晋源区" + }, + { + "areaCode": 140121000000, + "name": "清徐县", + "parentCode": 140100000000, + "mergerName": "山西省-太原市-清徐县" + }, + { + "areaCode": 140122000000, + "name": "阳曲县", + "parentCode": 140100000000, + "mergerName": "山西省-太原市-阳曲县" + }, + { + "areaCode": 140123000000, + "name": "娄烦县", + "parentCode": 140100000000, + "mergerName": "山西省-太原市-娄烦县" + }, + { + "areaCode": 140171000000, + "name": "山西转型综合改革示范区", + "parentCode": 140100000000, + "mergerName": "山西省-太原市-山西转型综合改革示范区" + }, + { + "areaCode": 140181000000, + "name": "古交市", + "parentCode": 140100000000, + "mergerName": "山西省-太原市-古交市" + } + ], + "areaCode": 140100000000, + "name": "太原市", + "parentCode": 140000000000, + "mergerName": "山西省-太原市" + }, + { + "children": [ + { + "areaCode": 140201000000, + "name": "市辖区", + "parentCode": 140200000000, + "mergerName": "山西省-大同市-市辖区" + }, + { + "areaCode": 140212000000, + "name": "新荣区", + "parentCode": 140200000000, + "mergerName": "山西省-大同市-新荣区" + }, + { + "areaCode": 140213000000, + "name": "平城区", + "parentCode": 140200000000, + "mergerName": "山西省-大同市-平城区" + }, + { + "areaCode": 140214000000, + "name": "云冈区", + "parentCode": 140200000000, + "mergerName": "山西省-大同市-云冈区" + }, + { + "areaCode": 140215000000, + "name": "云州区", + "parentCode": 140200000000, + "mergerName": "山西省-大同市-云州区" + }, + { + "areaCode": 140221000000, + "name": "阳高县", + "parentCode": 140200000000, + "mergerName": "山西省-大同市-阳高县" + }, + { + "areaCode": 140222000000, + "name": "天镇县", + "parentCode": 140200000000, + "mergerName": "山西省-大同市-天镇县" + }, + { + "areaCode": 140223000000, + "name": "广灵县", + "parentCode": 140200000000, + "mergerName": "山西省-大同市-广灵县" + }, + { + "areaCode": 140224000000, + "name": "灵丘县", + "parentCode": 140200000000, + "mergerName": "山西省-大同市-灵丘县" + }, + { + "areaCode": 140225000000, + "name": "浑源县", + "parentCode": 140200000000, + "mergerName": "山西省-大同市-浑源县" + }, + { + "areaCode": 140226000000, + "name": "左云县", + "parentCode": 140200000000, + "mergerName": "山西省-大同市-左云县" + }, + { + "areaCode": 140271000000, + "name": "山西大同经济开发区", + "parentCode": 140200000000, + "mergerName": "山西省-大同市-山西大同经济开发区" + } + ], + "areaCode": 140200000000, + "name": "大同市", + "parentCode": 140000000000, + "mergerName": "山西省-大同市" + }, + { + "children": [ + { + "areaCode": 140301000000, + "name": "市辖区", + "parentCode": 140300000000, + "mergerName": "山西省-阳泉市-市辖区" + }, + { "areaCode": 140302000000, "name": "城区", "parentCode": 140300000000, "mergerName": "山西省-阳泉市-城区" }, + { "areaCode": 140303000000, "name": "矿区", "parentCode": 140300000000, "mergerName": "山西省-阳泉市-矿区" }, + { "areaCode": 140311000000, "name": "郊区", "parentCode": 140300000000, "mergerName": "山西省-阳泉市-郊区" }, + { + "areaCode": 140321000000, + "name": "平定县", + "parentCode": 140300000000, + "mergerName": "山西省-阳泉市-平定县" + }, + { "areaCode": 140322000000, "name": "盂县", "parentCode": 140300000000, "mergerName": "山西省-阳泉市-盂县" } + ], + "areaCode": 140300000000, + "name": "阳泉市", + "parentCode": 140000000000, + "mergerName": "山西省-阳泉市" + }, + { + "children": [ + { + "areaCode": 140401000000, + "name": "市辖区", + "parentCode": 140400000000, + "mergerName": "山西省-长治市-市辖区" + }, + { + "areaCode": 140403000000, + "name": "潞州区", + "parentCode": 140400000000, + "mergerName": "山西省-长治市-潞州区" + }, + { + "areaCode": 140404000000, + "name": "上党区", + "parentCode": 140400000000, + "mergerName": "山西省-长治市-上党区" + }, + { + "areaCode": 140405000000, + "name": "屯留区", + "parentCode": 140400000000, + "mergerName": "山西省-长治市-屯留区" + }, + { + "areaCode": 140406000000, + "name": "潞城区", + "parentCode": 140400000000, + "mergerName": "山西省-长治市-潞城区" + }, + { + "areaCode": 140423000000, + "name": "襄垣县", + "parentCode": 140400000000, + "mergerName": "山西省-长治市-襄垣县" + }, + { + "areaCode": 140425000000, + "name": "平顺县", + "parentCode": 140400000000, + "mergerName": "山西省-长治市-平顺县" + }, + { + "areaCode": 140426000000, + "name": "黎城县", + "parentCode": 140400000000, + "mergerName": "山西省-长治市-黎城县" + }, + { + "areaCode": 140427000000, + "name": "壶关县", + "parentCode": 140400000000, + "mergerName": "山西省-长治市-壶关县" + }, + { + "areaCode": 140428000000, + "name": "长子县", + "parentCode": 140400000000, + "mergerName": "山西省-长治市-长子县" + }, + { + "areaCode": 140429000000, + "name": "武乡县", + "parentCode": 140400000000, + "mergerName": "山西省-长治市-武乡县" + }, + { "areaCode": 140430000000, "name": "沁县", "parentCode": 140400000000, "mergerName": "山西省-长治市-沁县" }, + { + "areaCode": 140431000000, + "name": "沁源县", + "parentCode": 140400000000, + "mergerName": "山西省-长治市-沁源县" + }, + { + "areaCode": 140471000000, + "name": "山西长治高新技术产业园区", + "parentCode": 140400000000, + "mergerName": "山西省-长治市-山西长治高新技术产业园区" + } + ], + "areaCode": 140400000000, + "name": "长治市", + "parentCode": 140000000000, + "mergerName": "山西省-长治市" + }, + { + "children": [ + { + "areaCode": 140501000000, + "name": "市辖区", + "parentCode": 140500000000, + "mergerName": "山西省-晋城市-市辖区" + }, + { "areaCode": 140502000000, "name": "城区", "parentCode": 140500000000, "mergerName": "山西省-晋城市-城区" }, + { + "areaCode": 140521000000, + "name": "沁水县", + "parentCode": 140500000000, + "mergerName": "山西省-晋城市-沁水县" + }, + { + "areaCode": 140522000000, + "name": "阳城县", + "parentCode": 140500000000, + "mergerName": "山西省-晋城市-阳城县" + }, + { + "areaCode": 140524000000, + "name": "陵川县", + "parentCode": 140500000000, + "mergerName": "山西省-晋城市-陵川县" + }, + { + "areaCode": 140525000000, + "name": "泽州县", + "parentCode": 140500000000, + "mergerName": "山西省-晋城市-泽州县" + }, + { + "areaCode": 140581000000, + "name": "高平市", + "parentCode": 140500000000, + "mergerName": "山西省-晋城市-高平市" + } + ], + "areaCode": 140500000000, + "name": "晋城市", + "parentCode": 140000000000, + "mergerName": "山西省-晋城市" + }, + { + "children": [ + { + "areaCode": 140601000000, + "name": "市辖区", + "parentCode": 140600000000, + "mergerName": "山西省-朔州市-市辖区" + }, + { + "areaCode": 140602000000, + "name": "朔城区", + "parentCode": 140600000000, + "mergerName": "山西省-朔州市-朔城区" + }, + { + "areaCode": 140603000000, + "name": "平鲁区", + "parentCode": 140600000000, + "mergerName": "山西省-朔州市-平鲁区" + }, + { + "areaCode": 140621000000, + "name": "山阴县", + "parentCode": 140600000000, + "mergerName": "山西省-朔州市-山阴县" + }, + { "areaCode": 140622000000, "name": "应县", "parentCode": 140600000000, "mergerName": "山西省-朔州市-应县" }, + { + "areaCode": 140623000000, + "name": "右玉县", + "parentCode": 140600000000, + "mergerName": "山西省-朔州市-右玉县" + }, + { + "areaCode": 140671000000, + "name": "山西朔州经济开发区", + "parentCode": 140600000000, + "mergerName": "山西省-朔州市-山西朔州经济开发区" + }, + { + "areaCode": 140681000000, + "name": "怀仁市", + "parentCode": 140600000000, + "mergerName": "山西省-朔州市-怀仁市" + } + ], + "areaCode": 140600000000, + "name": "朔州市", + "parentCode": 140000000000, + "mergerName": "山西省-朔州市" + }, + { + "children": [ + { + "areaCode": 140701000000, + "name": "市辖区", + "parentCode": 140700000000, + "mergerName": "山西省-晋中市-市辖区" + }, + { + "areaCode": 140702000000, + "name": "榆次区", + "parentCode": 140700000000, + "mergerName": "山西省-晋中市-榆次区" + }, + { + "areaCode": 140721000000, + "name": "榆社县", + "parentCode": 140700000000, + "mergerName": "山西省-晋中市-榆社县" + }, + { + "areaCode": 140722000000, + "name": "左权县", + "parentCode": 140700000000, + "mergerName": "山西省-晋中市-左权县" + }, + { + "areaCode": 140723000000, + "name": "和顺县", + "parentCode": 140700000000, + "mergerName": "山西省-晋中市-和顺县" + }, + { + "areaCode": 140724000000, + "name": "昔阳县", + "parentCode": 140700000000, + "mergerName": "山西省-晋中市-昔阳县" + }, + { + "areaCode": 140725000000, + "name": "寿阳县", + "parentCode": 140700000000, + "mergerName": "山西省-晋中市-寿阳县" + }, + { + "areaCode": 140726000000, + "name": "太谷县", + "parentCode": 140700000000, + "mergerName": "山西省-晋中市-太谷县" + }, + { "areaCode": 140727000000, "name": "祁县", "parentCode": 140700000000, "mergerName": "山西省-晋中市-祁县" }, + { + "areaCode": 140728000000, + "name": "平遥县", + "parentCode": 140700000000, + "mergerName": "山西省-晋中市-平遥县" + }, + { + "areaCode": 140729000000, + "name": "灵石县", + "parentCode": 140700000000, + "mergerName": "山西省-晋中市-灵石县" + }, + { + "areaCode": 140781000000, + "name": "介休市", + "parentCode": 140700000000, + "mergerName": "山西省-晋中市-介休市" + } + ], + "areaCode": 140700000000, + "name": "晋中市", + "parentCode": 140000000000, + "mergerName": "山西省-晋中市" + }, + { + "children": [ + { + "areaCode": 140801000000, + "name": "市辖区", + "parentCode": 140800000000, + "mergerName": "山西省-运城市-市辖区" + }, + { + "areaCode": 140802000000, + "name": "盐湖区", + "parentCode": 140800000000, + "mergerName": "山西省-运城市-盐湖区" + }, + { + "areaCode": 140821000000, + "name": "临猗县", + "parentCode": 140800000000, + "mergerName": "山西省-运城市-临猗县" + }, + { + "areaCode": 140822000000, + "name": "万荣县", + "parentCode": 140800000000, + "mergerName": "山西省-运城市-万荣县" + }, + { + "areaCode": 140823000000, + "name": "闻喜县", + "parentCode": 140800000000, + "mergerName": "山西省-运城市-闻喜县" + }, + { + "areaCode": 140824000000, + "name": "稷山县", + "parentCode": 140800000000, + "mergerName": "山西省-运城市-稷山县" + }, + { + "areaCode": 140825000000, + "name": "新绛县", + "parentCode": 140800000000, + "mergerName": "山西省-运城市-新绛县" + }, + { "areaCode": 140826000000, "name": "绛县", "parentCode": 140800000000, "mergerName": "山西省-运城市-绛县" }, + { + "areaCode": 140827000000, + "name": "垣曲县", + "parentCode": 140800000000, + "mergerName": "山西省-运城市-垣曲县" + }, + { "areaCode": 140828000000, "name": "夏县", "parentCode": 140800000000, "mergerName": "山西省-运城市-夏县" }, + { + "areaCode": 140829000000, + "name": "平陆县", + "parentCode": 140800000000, + "mergerName": "山西省-运城市-平陆县" + }, + { + "areaCode": 140830000000, + "name": "芮城县", + "parentCode": 140800000000, + "mergerName": "山西省-运城市-芮城县" + }, + { + "areaCode": 140881000000, + "name": "永济市", + "parentCode": 140800000000, + "mergerName": "山西省-运城市-永济市" + }, + { + "areaCode": 140882000000, + "name": "河津市", + "parentCode": 140800000000, + "mergerName": "山西省-运城市-河津市" + } + ], + "areaCode": 140800000000, + "name": "运城市", + "parentCode": 140000000000, + "mergerName": "山西省-运城市" + }, + { + "children": [ + { + "areaCode": 140901000000, + "name": "市辖区", + "parentCode": 140900000000, + "mergerName": "山西省-忻州市-市辖区" + }, + { + "areaCode": 140902000000, + "name": "忻府区", + "parentCode": 140900000000, + "mergerName": "山西省-忻州市-忻府区" + }, + { + "areaCode": 140921000000, + "name": "定襄县", + "parentCode": 140900000000, + "mergerName": "山西省-忻州市-定襄县" + }, + { + "areaCode": 140922000000, + "name": "五台县", + "parentCode": 140900000000, + "mergerName": "山西省-忻州市-五台县" + }, + { "areaCode": 140923000000, "name": "代县", "parentCode": 140900000000, "mergerName": "山西省-忻州市-代县" }, + { + "areaCode": 140924000000, + "name": "繁峙县", + "parentCode": 140900000000, + "mergerName": "山西省-忻州市-繁峙县" + }, + { + "areaCode": 140925000000, + "name": "宁武县", + "parentCode": 140900000000, + "mergerName": "山西省-忻州市-宁武县" + }, + { + "areaCode": 140926000000, + "name": "静乐县", + "parentCode": 140900000000, + "mergerName": "山西省-忻州市-静乐县" + }, + { + "areaCode": 140927000000, + "name": "神池县", + "parentCode": 140900000000, + "mergerName": "山西省-忻州市-神池县" + }, + { + "areaCode": 140928000000, + "name": "五寨县", + "parentCode": 140900000000, + "mergerName": "山西省-忻州市-五寨县" + }, + { + "areaCode": 140929000000, + "name": "岢岚县", + "parentCode": 140900000000, + "mergerName": "山西省-忻州市-岢岚县" + }, + { + "areaCode": 140930000000, + "name": "河曲县", + "parentCode": 140900000000, + "mergerName": "山西省-忻州市-河曲县" + }, + { + "areaCode": 140931000000, + "name": "保德县", + "parentCode": 140900000000, + "mergerName": "山西省-忻州市-保德县" + }, + { + "areaCode": 140932000000, + "name": "偏关县", + "parentCode": 140900000000, + "mergerName": "山西省-忻州市-偏关县" + }, + { + "areaCode": 140971000000, + "name": "五台山风景名胜区", + "parentCode": 140900000000, + "mergerName": "山西省-忻州市-五台山风景名胜区" + }, + { + "areaCode": 140981000000, + "name": "原平市", + "parentCode": 140900000000, + "mergerName": "山西省-忻州市-原平市" + } + ], + "areaCode": 140900000000, + "name": "忻州市", + "parentCode": 140000000000, + "mergerName": "山西省-忻州市" + }, + { + "children": [ + { + "areaCode": 141001000000, + "name": "市辖区", + "parentCode": 141000000000, + "mergerName": "山西省-临汾市-市辖区" + }, + { + "areaCode": 141002000000, + "name": "尧都区", + "parentCode": 141000000000, + "mergerName": "山西省-临汾市-尧都区" + }, + { + "areaCode": 141021000000, + "name": "曲沃县", + "parentCode": 141000000000, + "mergerName": "山西省-临汾市-曲沃县" + }, + { + "areaCode": 141022000000, + "name": "翼城县", + "parentCode": 141000000000, + "mergerName": "山西省-临汾市-翼城县" + }, + { + "areaCode": 141023000000, + "name": "襄汾县", + "parentCode": 141000000000, + "mergerName": "山西省-临汾市-襄汾县" + }, + { + "areaCode": 141024000000, + "name": "洪洞县", + "parentCode": 141000000000, + "mergerName": "山西省-临汾市-洪洞县" + }, + { "areaCode": 141025000000, "name": "古县", "parentCode": 141000000000, "mergerName": "山西省-临汾市-古县" }, + { + "areaCode": 141026000000, + "name": "安泽县", + "parentCode": 141000000000, + "mergerName": "山西省-临汾市-安泽县" + }, + { + "areaCode": 141027000000, + "name": "浮山县", + "parentCode": 141000000000, + "mergerName": "山西省-临汾市-浮山县" + }, + { "areaCode": 141028000000, "name": "吉县", "parentCode": 141000000000, "mergerName": "山西省-临汾市-吉县" }, + { + "areaCode": 141029000000, + "name": "乡宁县", + "parentCode": 141000000000, + "mergerName": "山西省-临汾市-乡宁县" + }, + { + "areaCode": 141030000000, + "name": "大宁县", + "parentCode": 141000000000, + "mergerName": "山西省-临汾市-大宁县" + }, + { "areaCode": 141031000000, "name": "隰县", "parentCode": 141000000000, "mergerName": "山西省-临汾市-隰县" }, + { + "areaCode": 141032000000, + "name": "永和县", + "parentCode": 141000000000, + "mergerName": "山西省-临汾市-永和县" + }, + { "areaCode": 141033000000, "name": "蒲县", "parentCode": 141000000000, "mergerName": "山西省-临汾市-蒲县" }, + { + "areaCode": 141034000000, + "name": "汾西县", + "parentCode": 141000000000, + "mergerName": "山西省-临汾市-汾西县" + }, + { + "areaCode": 141081000000, + "name": "侯马市", + "parentCode": 141000000000, + "mergerName": "山西省-临汾市-侯马市" + }, + { + "areaCode": 141082000000, + "name": "霍州市", + "parentCode": 141000000000, + "mergerName": "山西省-临汾市-霍州市" + } + ], + "areaCode": 141000000000, + "name": "临汾市", + "parentCode": 140000000000, + "mergerName": "山西省-临汾市" + }, + { + "children": [ + { + "areaCode": 141101000000, + "name": "市辖区", + "parentCode": 141100000000, + "mergerName": "山西省-吕梁市-市辖区" + }, + { + "areaCode": 141102000000, + "name": "离石区", + "parentCode": 141100000000, + "mergerName": "山西省-吕梁市-离石区" + }, + { + "areaCode": 141121000000, + "name": "文水县", + "parentCode": 141100000000, + "mergerName": "山西省-吕梁市-文水县" + }, + { + "areaCode": 141122000000, + "name": "交城县", + "parentCode": 141100000000, + "mergerName": "山西省-吕梁市-交城县" + }, + { "areaCode": 141123000000, "name": "兴县", "parentCode": 141100000000, "mergerName": "山西省-吕梁市-兴县" }, + { "areaCode": 141124000000, "name": "临县", "parentCode": 141100000000, "mergerName": "山西省-吕梁市-临县" }, + { + "areaCode": 141125000000, + "name": "柳林县", + "parentCode": 141100000000, + "mergerName": "山西省-吕梁市-柳林县" + }, + { + "areaCode": 141126000000, + "name": "石楼县", + "parentCode": 141100000000, + "mergerName": "山西省-吕梁市-石楼县" + }, + { "areaCode": 141127000000, "name": "岚县", "parentCode": 141100000000, "mergerName": "山西省-吕梁市-岚县" }, + { + "areaCode": 141128000000, + "name": "方山县", + "parentCode": 141100000000, + "mergerName": "山西省-吕梁市-方山县" + }, + { + "areaCode": 141129000000, + "name": "中阳县", + "parentCode": 141100000000, + "mergerName": "山西省-吕梁市-中阳县" + }, + { + "areaCode": 141130000000, + "name": "交口县", + "parentCode": 141100000000, + "mergerName": "山西省-吕梁市-交口县" + }, + { + "areaCode": 141181000000, + "name": "孝义市", + "parentCode": 141100000000, + "mergerName": "山西省-吕梁市-孝义市" + }, + { + "areaCode": 141182000000, + "name": "汾阳市", + "parentCode": 141100000000, + "mergerName": "山西省-吕梁市-汾阳市" + } + ], + "areaCode": 141100000000, + "name": "吕梁市", + "parentCode": 140000000000, + "mergerName": "山西省-吕梁市" + } + ], + "areaCode": 140000000000, + "name": "山西省", + "parentCode": 0, + "mergerName": "-山西省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 150101000000, + "name": "市辖区", + "parentCode": 150100000000, + "mergerName": "内蒙古自治区-呼和浩特市-市辖区" + }, + { + "areaCode": 150102000000, + "name": "新城区", + "parentCode": 150100000000, + "mergerName": "内蒙古自治区-呼和浩特市-新城区" + }, + { + "areaCode": 150103000000, + "name": "回民区", + "parentCode": 150100000000, + "mergerName": "内蒙古自治区-呼和浩特市-回民区" + }, + { + "areaCode": 150104000000, + "name": "玉泉区", + "parentCode": 150100000000, + "mergerName": "内蒙古自治区-呼和浩特市-玉泉区" + }, + { + "areaCode": 150105000000, + "name": "赛罕区", + "parentCode": 150100000000, + "mergerName": "内蒙古自治区-呼和浩特市-赛罕区" + }, + { + "areaCode": 150121000000, + "name": "土默特左旗", + "parentCode": 150100000000, + "mergerName": "内蒙古自治区-呼和浩特市-土默特左旗" + }, + { + "areaCode": 150122000000, + "name": "托克托县", + "parentCode": 150100000000, + "mergerName": "内蒙古自治区-呼和浩特市-托克托县" + }, + { + "areaCode": 150123000000, + "name": "和林格尔县", + "parentCode": 150100000000, + "mergerName": "内蒙古自治区-呼和浩特市-和林格尔县" + }, + { + "areaCode": 150124000000, + "name": "清水河县", + "parentCode": 150100000000, + "mergerName": "内蒙古自治区-呼和浩特市-清水河县" + }, + { + "areaCode": 150125000000, + "name": "武川县", + "parentCode": 150100000000, + "mergerName": "内蒙古自治区-呼和浩特市-武川县" + }, + { + "areaCode": 150171000000, + "name": "呼和浩特金海工业园区", + "parentCode": 150100000000, + "mergerName": "内蒙古自治区-呼和浩特市-呼和浩特金海工业园区" + }, + { + "areaCode": 150172000000, + "name": "呼和浩特经济技术开发区", + "parentCode": 150100000000, + "mergerName": "内蒙古自治区-呼和浩特市-呼和浩特经济技术开发区" + } + ], + "areaCode": 150100000000, + "name": "呼和浩特市", + "parentCode": 150000000000, + "mergerName": "内蒙古自治区-呼和浩特市" + }, + { + "children": [ + { + "areaCode": 150201000000, + "name": "市辖区", + "parentCode": 150200000000, + "mergerName": "内蒙古自治区-包头市-市辖区" + }, + { + "areaCode": 150202000000, + "name": "东河区", + "parentCode": 150200000000, + "mergerName": "内蒙古自治区-包头市-东河区" + }, + { + "areaCode": 150203000000, + "name": "昆都仑区", + "parentCode": 150200000000, + "mergerName": "内蒙古自治区-包头市-昆都仑区" + }, + { + "areaCode": 150204000000, + "name": "青山区", + "parentCode": 150200000000, + "mergerName": "内蒙古自治区-包头市-青山区" + }, + { + "areaCode": 150205000000, + "name": "石拐区", + "parentCode": 150200000000, + "mergerName": "内蒙古自治区-包头市-石拐区" + }, + { + "areaCode": 150206000000, + "name": "白云鄂博矿区", + "parentCode": 150200000000, + "mergerName": "内蒙古自治区-包头市-白云鄂博矿区" + }, + { + "areaCode": 150207000000, + "name": "九原区", + "parentCode": 150200000000, + "mergerName": "内蒙古自治区-包头市-九原区" + }, + { + "areaCode": 150221000000, + "name": "土默特右旗", + "parentCode": 150200000000, + "mergerName": "内蒙古自治区-包头市-土默特右旗" + }, + { + "areaCode": 150222000000, + "name": "固阳县", + "parentCode": 150200000000, + "mergerName": "内蒙古自治区-包头市-固阳县" + }, + { + "areaCode": 150223000000, + "name": "达尔罕茂明安联合旗", + "parentCode": 150200000000, + "mergerName": "内蒙古自治区-包头市-达尔罕茂明安联合旗" + }, + { + "areaCode": 150271000000, + "name": "包头稀土高新技术产业开发区", + "parentCode": 150200000000, + "mergerName": "内蒙古自治区-包头市-包头稀土高新技术产业开发区" + } + ], + "areaCode": 150200000000, + "name": "包头市", + "parentCode": 150000000000, + "mergerName": "内蒙古自治区-包头市" + }, + { + "children": [ + { + "areaCode": 150301000000, + "name": "市辖区", + "parentCode": 150300000000, + "mergerName": "内蒙古自治区-乌海市-市辖区" + }, + { + "areaCode": 150302000000, + "name": "海勃湾区", + "parentCode": 150300000000, + "mergerName": "内蒙古自治区-乌海市-海勃湾区" + }, + { + "areaCode": 150303000000, + "name": "海南区", + "parentCode": 150300000000, + "mergerName": "内蒙古自治区-乌海市-海南区" + }, + { + "areaCode": 150304000000, + "name": "乌达区", + "parentCode": 150300000000, + "mergerName": "内蒙古自治区-乌海市-乌达区" + } + ], + "areaCode": 150300000000, + "name": "乌海市", + "parentCode": 150000000000, + "mergerName": "内蒙古自治区-乌海市" + }, + { + "children": [ + { + "areaCode": 150401000000, + "name": "市辖区", + "parentCode": 150400000000, + "mergerName": "内蒙古自治区-赤峰市-市辖区" + }, + { + "areaCode": 150402000000, + "name": "红山区", + "parentCode": 150400000000, + "mergerName": "内蒙古自治区-赤峰市-红山区" + }, + { + "areaCode": 150403000000, + "name": "元宝山区", + "parentCode": 150400000000, + "mergerName": "内蒙古自治区-赤峰市-元宝山区" + }, + { + "areaCode": 150404000000, + "name": "松山区", + "parentCode": 150400000000, + "mergerName": "内蒙古自治区-赤峰市-松山区" + }, + { + "areaCode": 150421000000, + "name": "阿鲁科尔沁旗", + "parentCode": 150400000000, + "mergerName": "内蒙古自治区-赤峰市-阿鲁科尔沁旗" + }, + { + "areaCode": 150422000000, + "name": "巴林左旗", + "parentCode": 150400000000, + "mergerName": "内蒙古自治区-赤峰市-巴林左旗" + }, + { + "areaCode": 150423000000, + "name": "巴林右旗", + "parentCode": 150400000000, + "mergerName": "内蒙古自治区-赤峰市-巴林右旗" + }, + { + "areaCode": 150424000000, + "name": "林西县", + "parentCode": 150400000000, + "mergerName": "内蒙古自治区-赤峰市-林西县" + }, + { + "areaCode": 150425000000, + "name": "克什克腾旗", + "parentCode": 150400000000, + "mergerName": "内蒙古自治区-赤峰市-克什克腾旗" + }, + { + "areaCode": 150426000000, + "name": "翁牛特旗", + "parentCode": 150400000000, + "mergerName": "内蒙古自治区-赤峰市-翁牛特旗" + }, + { + "areaCode": 150428000000, + "name": "喀喇沁旗", + "parentCode": 150400000000, + "mergerName": "内蒙古自治区-赤峰市-喀喇沁旗" + }, + { + "areaCode": 150429000000, + "name": "宁城县", + "parentCode": 150400000000, + "mergerName": "内蒙古自治区-赤峰市-宁城县" + }, + { + "areaCode": 150430000000, + "name": "敖汉旗", + "parentCode": 150400000000, + "mergerName": "内蒙古自治区-赤峰市-敖汉旗" + } + ], + "areaCode": 150400000000, + "name": "赤峰市", + "parentCode": 150000000000, + "mergerName": "内蒙古自治区-赤峰市" + }, + { + "children": [ + { + "areaCode": 150501000000, + "name": "市辖区", + "parentCode": 150500000000, + "mergerName": "内蒙古自治区-通辽市-市辖区" + }, + { + "areaCode": 150502000000, + "name": "科尔沁区", + "parentCode": 150500000000, + "mergerName": "内蒙古自治区-通辽市-科尔沁区" + }, + { + "areaCode": 150521000000, + "name": "科尔沁左翼中旗", + "parentCode": 150500000000, + "mergerName": "内蒙古自治区-通辽市-科尔沁左翼中旗" + }, + { + "areaCode": 150522000000, + "name": "科尔沁左翼后旗", + "parentCode": 150500000000, + "mergerName": "内蒙古自治区-通辽市-科尔沁左翼后旗" + }, + { + "areaCode": 150523000000, + "name": "开鲁县", + "parentCode": 150500000000, + "mergerName": "内蒙古自治区-通辽市-开鲁县" + }, + { + "areaCode": 150524000000, + "name": "库伦旗", + "parentCode": 150500000000, + "mergerName": "内蒙古自治区-通辽市-库伦旗" + }, + { + "areaCode": 150525000000, + "name": "奈曼旗", + "parentCode": 150500000000, + "mergerName": "内蒙古自治区-通辽市-奈曼旗" + }, + { + "areaCode": 150526000000, + "name": "扎鲁特旗", + "parentCode": 150500000000, + "mergerName": "内蒙古自治区-通辽市-扎鲁特旗" + }, + { + "areaCode": 150571000000, + "name": "通辽经济技术开发区", + "parentCode": 150500000000, + "mergerName": "内蒙古自治区-通辽市-通辽经济技术开发区" + }, + { + "areaCode": 150581000000, + "name": "霍林郭勒市", + "parentCode": 150500000000, + "mergerName": "内蒙古自治区-通辽市-霍林郭勒市" + } + ], + "areaCode": 150500000000, + "name": "通辽市", + "parentCode": 150000000000, + "mergerName": "内蒙古自治区-通辽市" + }, + { + "children": [ + { + "areaCode": 150601000000, + "name": "市辖区", + "parentCode": 150600000000, + "mergerName": "内蒙古自治区-鄂尔多斯市-市辖区" + }, + { + "areaCode": 150602000000, + "name": "东胜区", + "parentCode": 150600000000, + "mergerName": "内蒙古自治区-鄂尔多斯市-东胜区" + }, + { + "areaCode": 150603000000, + "name": "康巴什区", + "parentCode": 150600000000, + "mergerName": "内蒙古自治区-鄂尔多斯市-康巴什区" + }, + { + "areaCode": 150621000000, + "name": "达拉特旗", + "parentCode": 150600000000, + "mergerName": "内蒙古自治区-鄂尔多斯市-达拉特旗" + }, + { + "areaCode": 150622000000, + "name": "准格尔旗", + "parentCode": 150600000000, + "mergerName": "内蒙古自治区-鄂尔多斯市-准格尔旗" + }, + { + "areaCode": 150623000000, + "name": "鄂托克前旗", + "parentCode": 150600000000, + "mergerName": "内蒙古自治区-鄂尔多斯市-鄂托克前旗" + }, + { + "areaCode": 150624000000, + "name": "鄂托克旗", + "parentCode": 150600000000, + "mergerName": "内蒙古自治区-鄂尔多斯市-鄂托克旗" + }, + { + "areaCode": 150625000000, + "name": "杭锦旗", + "parentCode": 150600000000, + "mergerName": "内蒙古自治区-鄂尔多斯市-杭锦旗" + }, + { + "areaCode": 150626000000, + "name": "乌审旗", + "parentCode": 150600000000, + "mergerName": "内蒙古自治区-鄂尔多斯市-乌审旗" + }, + { + "areaCode": 150627000000, + "name": "伊金霍洛旗", + "parentCode": 150600000000, + "mergerName": "内蒙古自治区-鄂尔多斯市-伊金霍洛旗" + } + ], + "areaCode": 150600000000, + "name": "鄂尔多斯市", + "parentCode": 150000000000, + "mergerName": "内蒙古自治区-鄂尔多斯市" + }, + { + "children": [ + { + "areaCode": 150701000000, + "name": "市辖区", + "parentCode": 150700000000, + "mergerName": "内蒙古自治区-呼伦贝尔市-市辖区" + }, + { + "areaCode": 150702000000, + "name": "海拉尔区", + "parentCode": 150700000000, + "mergerName": "内蒙古自治区-呼伦贝尔市-海拉尔区" + }, + { + "areaCode": 150703000000, + "name": "扎赉诺尔区", + "parentCode": 150700000000, + "mergerName": "内蒙古自治区-呼伦贝尔市-扎赉诺尔区" + }, + { + "areaCode": 150721000000, + "name": "阿荣旗", + "parentCode": 150700000000, + "mergerName": "内蒙古自治区-呼伦贝尔市-阿荣旗" + }, + { + "areaCode": 150722000000, + "name": "莫力达瓦达斡尔族自治旗", + "parentCode": 150700000000, + "mergerName": "内蒙古自治区-呼伦贝尔市-莫力达瓦达斡尔族自治旗" + }, + { + "areaCode": 150723000000, + "name": "鄂伦春自治旗", + "parentCode": 150700000000, + "mergerName": "内蒙古自治区-呼伦贝尔市-鄂伦春自治旗" + }, + { + "areaCode": 150724000000, + "name": "鄂温克族自治旗", + "parentCode": 150700000000, + "mergerName": "内蒙古自治区-呼伦贝尔市-鄂温克族自治旗" + }, + { + "areaCode": 150725000000, + "name": "陈巴尔虎旗", + "parentCode": 150700000000, + "mergerName": "内蒙古自治区-呼伦贝尔市-陈巴尔虎旗" + }, + { + "areaCode": 150726000000, + "name": "新巴尔虎左旗", + "parentCode": 150700000000, + "mergerName": "内蒙古自治区-呼伦贝尔市-新巴尔虎左旗" + }, + { + "areaCode": 150727000000, + "name": "新巴尔虎右旗", + "parentCode": 150700000000, + "mergerName": "内蒙古自治区-呼伦贝尔市-新巴尔虎右旗" + }, + { + "areaCode": 150781000000, + "name": "满洲里市", + "parentCode": 150700000000, + "mergerName": "内蒙古自治区-呼伦贝尔市-满洲里市" + }, + { + "areaCode": 150782000000, + "name": "牙克石市", + "parentCode": 150700000000, + "mergerName": "内蒙古自治区-呼伦贝尔市-牙克石市" + }, + { + "areaCode": 150783000000, + "name": "扎兰屯市", + "parentCode": 150700000000, + "mergerName": "内蒙古自治区-呼伦贝尔市-扎兰屯市" + }, + { + "areaCode": 150784000000, + "name": "额尔古纳市", + "parentCode": 150700000000, + "mergerName": "内蒙古自治区-呼伦贝尔市-额尔古纳市" + }, + { + "areaCode": 150785000000, + "name": "根河市", + "parentCode": 150700000000, + "mergerName": "内蒙古自治区-呼伦贝尔市-根河市" + } + ], + "areaCode": 150700000000, + "name": "呼伦贝尔市", + "parentCode": 150000000000, + "mergerName": "内蒙古自治区-呼伦贝尔市" + }, + { + "children": [ + { + "areaCode": 150801000000, + "name": "市辖区", + "parentCode": 150800000000, + "mergerName": "内蒙古自治区-巴彦淖尔市-市辖区" + }, + { + "areaCode": 150802000000, + "name": "临河区", + "parentCode": 150800000000, + "mergerName": "内蒙古自治区-巴彦淖尔市-临河区" + }, + { + "areaCode": 150821000000, + "name": "五原县", + "parentCode": 150800000000, + "mergerName": "内蒙古自治区-巴彦淖尔市-五原县" + }, + { + "areaCode": 150822000000, + "name": "磴口县", + "parentCode": 150800000000, + "mergerName": "内蒙古自治区-巴彦淖尔市-磴口县" + }, + { + "areaCode": 150823000000, + "name": "乌拉特前旗", + "parentCode": 150800000000, + "mergerName": "内蒙古自治区-巴彦淖尔市-乌拉特前旗" + }, + { + "areaCode": 150824000000, + "name": "乌拉特中旗", + "parentCode": 150800000000, + "mergerName": "内蒙古自治区-巴彦淖尔市-乌拉特中旗" + }, + { + "areaCode": 150825000000, + "name": "乌拉特后旗", + "parentCode": 150800000000, + "mergerName": "内蒙古自治区-巴彦淖尔市-乌拉特后旗" + }, + { + "areaCode": 150826000000, + "name": "杭锦后旗", + "parentCode": 150800000000, + "mergerName": "内蒙古自治区-巴彦淖尔市-杭锦后旗" + } + ], + "areaCode": 150800000000, + "name": "巴彦淖尔市", + "parentCode": 150000000000, + "mergerName": "内蒙古自治区-巴彦淖尔市" + }, + { + "children": [ + { + "areaCode": 150901000000, + "name": "市辖区", + "parentCode": 150900000000, + "mergerName": "内蒙古自治区-乌兰察布市-市辖区" + }, + { + "areaCode": 150902000000, + "name": "集宁区", + "parentCode": 150900000000, + "mergerName": "内蒙古自治区-乌兰察布市-集宁区" + }, + { + "areaCode": 150921000000, + "name": "卓资县", + "parentCode": 150900000000, + "mergerName": "内蒙古自治区-乌兰察布市-卓资县" + }, + { + "areaCode": 150922000000, + "name": "化德县", + "parentCode": 150900000000, + "mergerName": "内蒙古自治区-乌兰察布市-化德县" + }, + { + "areaCode": 150923000000, + "name": "商都县", + "parentCode": 150900000000, + "mergerName": "内蒙古自治区-乌兰察布市-商都县" + }, + { + "areaCode": 150924000000, + "name": "兴和县", + "parentCode": 150900000000, + "mergerName": "内蒙古自治区-乌兰察布市-兴和县" + }, + { + "areaCode": 150925000000, + "name": "凉城县", + "parentCode": 150900000000, + "mergerName": "内蒙古自治区-乌兰察布市-凉城县" + }, + { + "areaCode": 150926000000, + "name": "察哈尔右翼前旗", + "parentCode": 150900000000, + "mergerName": "内蒙古自治区-乌兰察布市-察哈尔右翼前旗" + }, + { + "areaCode": 150927000000, + "name": "察哈尔右翼中旗", + "parentCode": 150900000000, + "mergerName": "内蒙古自治区-乌兰察布市-察哈尔右翼中旗" + }, + { + "areaCode": 150928000000, + "name": "察哈尔右翼后旗", + "parentCode": 150900000000, + "mergerName": "内蒙古自治区-乌兰察布市-察哈尔右翼后旗" + }, + { + "areaCode": 150929000000, + "name": "四子王旗", + "parentCode": 150900000000, + "mergerName": "内蒙古自治区-乌兰察布市-四子王旗" + }, + { + "areaCode": 150981000000, + "name": "丰镇市", + "parentCode": 150900000000, + "mergerName": "内蒙古自治区-乌兰察布市-丰镇市" + } + ], + "areaCode": 150900000000, + "name": "乌兰察布市", + "parentCode": 150000000000, + "mergerName": "内蒙古自治区-乌兰察布市" + }, + { + "children": [ + { + "areaCode": 152201000000, + "name": "乌兰浩特市", + "parentCode": 152200000000, + "mergerName": "内蒙古自治区-兴安盟-乌兰浩特市" + }, + { + "areaCode": 152202000000, + "name": "阿尔山市", + "parentCode": 152200000000, + "mergerName": "内蒙古自治区-兴安盟-阿尔山市" + }, + { + "areaCode": 152221000000, + "name": "科尔沁右翼前旗", + "parentCode": 152200000000, + "mergerName": "内蒙古自治区-兴安盟-科尔沁右翼前旗" + }, + { + "areaCode": 152222000000, + "name": "科尔沁右翼中旗", + "parentCode": 152200000000, + "mergerName": "内蒙古自治区-兴安盟-科尔沁右翼中旗" + }, + { + "areaCode": 152223000000, + "name": "扎赉特旗", + "parentCode": 152200000000, + "mergerName": "内蒙古自治区-兴安盟-扎赉特旗" + }, + { + "areaCode": 152224000000, + "name": "突泉县", + "parentCode": 152200000000, + "mergerName": "内蒙古自治区-兴安盟-突泉县" + } + ], + "areaCode": 152200000000, + "name": "兴安盟", + "parentCode": 150000000000, + "mergerName": "内蒙古自治区-兴安盟" + }, + { + "children": [ + { + "areaCode": 152501000000, + "name": "二连浩特市", + "parentCode": 152500000000, + "mergerName": "内蒙古自治区-锡林郭勒盟-二连浩特市" + }, + { + "areaCode": 152502000000, + "name": "锡林浩特市", + "parentCode": 152500000000, + "mergerName": "内蒙古自治区-锡林郭勒盟-锡林浩特市" + }, + { + "areaCode": 152522000000, + "name": "阿巴嘎旗", + "parentCode": 152500000000, + "mergerName": "内蒙古自治区-锡林郭勒盟-阿巴嘎旗" + }, + { + "areaCode": 152523000000, + "name": "苏尼特左旗", + "parentCode": 152500000000, + "mergerName": "内蒙古自治区-锡林郭勒盟-苏尼特左旗" + }, + { + "areaCode": 152524000000, + "name": "苏尼特右旗", + "parentCode": 152500000000, + "mergerName": "内蒙古自治区-锡林郭勒盟-苏尼特右旗" + }, + { + "areaCode": 152525000000, + "name": "东乌珠穆沁旗", + "parentCode": 152500000000, + "mergerName": "内蒙古自治区-锡林郭勒盟-东乌珠穆沁旗" + }, + { + "areaCode": 152526000000, + "name": "西乌珠穆沁旗", + "parentCode": 152500000000, + "mergerName": "内蒙古自治区-锡林郭勒盟-西乌珠穆沁旗" + }, + { + "areaCode": 152527000000, + "name": "太仆寺旗", + "parentCode": 152500000000, + "mergerName": "内蒙古自治区-锡林郭勒盟-太仆寺旗" + }, + { + "areaCode": 152528000000, + "name": "镶黄旗", + "parentCode": 152500000000, + "mergerName": "内蒙古自治区-锡林郭勒盟-镶黄旗" + }, + { + "areaCode": 152529000000, + "name": "正镶白旗", + "parentCode": 152500000000, + "mergerName": "内蒙古自治区-锡林郭勒盟-正镶白旗" + }, + { + "areaCode": 152530000000, + "name": "正蓝旗", + "parentCode": 152500000000, + "mergerName": "内蒙古自治区-锡林郭勒盟-正蓝旗" + }, + { + "areaCode": 152531000000, + "name": "多伦县", + "parentCode": 152500000000, + "mergerName": "内蒙古自治区-锡林郭勒盟-多伦县" + }, + { + "areaCode": 152571000000, + "name": "乌拉盖管委会", + "parentCode": 152500000000, + "mergerName": "内蒙古自治区-锡林郭勒盟-乌拉盖管委会" + } + ], + "areaCode": 152500000000, + "name": "锡林郭勒盟", + "parentCode": 150000000000, + "mergerName": "内蒙古自治区-锡林郭勒盟" + }, + { + "children": [ + { + "areaCode": 152921000000, + "name": "阿拉善左旗", + "parentCode": 152900000000, + "mergerName": "内蒙古自治区-阿拉善盟-阿拉善左旗" + }, + { + "areaCode": 152922000000, + "name": "阿拉善右旗", + "parentCode": 152900000000, + "mergerName": "内蒙古自治区-阿拉善盟-阿拉善右旗" + }, + { + "areaCode": 152923000000, + "name": "额济纳旗", + "parentCode": 152900000000, + "mergerName": "内蒙古自治区-阿拉善盟-额济纳旗" + }, + { + "areaCode": 152971000000, + "name": "内蒙古阿拉善经济开发区", + "parentCode": 152900000000, + "mergerName": "内蒙古自治区-阿拉善盟-内蒙古阿拉善经济开发区" + } + ], + "areaCode": 152900000000, + "name": "阿拉善盟", + "parentCode": 150000000000, + "mergerName": "内蒙古自治区-阿拉善盟" + } + ], + "areaCode": 150000000000, + "name": "内蒙古自治区", + "parentCode": 0, + "mergerName": "-内蒙古自治区" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 210101000000, + "name": "市辖区", + "parentCode": 210100000000, + "mergerName": "辽宁省-沈阳市-市辖区" + }, + { + "areaCode": 210102000000, + "name": "和平区", + "parentCode": 210100000000, + "mergerName": "辽宁省-沈阳市-和平区" + }, + { + "areaCode": 210103000000, + "name": "沈河区", + "parentCode": 210100000000, + "mergerName": "辽宁省-沈阳市-沈河区" + }, + { + "areaCode": 210104000000, + "name": "大东区", + "parentCode": 210100000000, + "mergerName": "辽宁省-沈阳市-大东区" + }, + { + "areaCode": 210105000000, + "name": "皇姑区", + "parentCode": 210100000000, + "mergerName": "辽宁省-沈阳市-皇姑区" + }, + { + "areaCode": 210106000000, + "name": "铁西区", + "parentCode": 210100000000, + "mergerName": "辽宁省-沈阳市-铁西区" + }, + { + "areaCode": 210111000000, + "name": "苏家屯区", + "parentCode": 210100000000, + "mergerName": "辽宁省-沈阳市-苏家屯区" + }, + { + "areaCode": 210112000000, + "name": "浑南区", + "parentCode": 210100000000, + "mergerName": "辽宁省-沈阳市-浑南区" + }, + { + "areaCode": 210113000000, + "name": "沈北新区", + "parentCode": 210100000000, + "mergerName": "辽宁省-沈阳市-沈北新区" + }, + { + "areaCode": 210114000000, + "name": "于洪区", + "parentCode": 210100000000, + "mergerName": "辽宁省-沈阳市-于洪区" + }, + { + "areaCode": 210115000000, + "name": "辽中区", + "parentCode": 210100000000, + "mergerName": "辽宁省-沈阳市-辽中区" + }, + { + "areaCode": 210123000000, + "name": "康平县", + "parentCode": 210100000000, + "mergerName": "辽宁省-沈阳市-康平县" + }, + { + "areaCode": 210124000000, + "name": "法库县", + "parentCode": 210100000000, + "mergerName": "辽宁省-沈阳市-法库县" + }, + { + "areaCode": 210181000000, + "name": "新民市", + "parentCode": 210100000000, + "mergerName": "辽宁省-沈阳市-新民市" + } + ], + "areaCode": 210100000000, + "name": "沈阳市", + "parentCode": 210000000000, + "mergerName": "辽宁省-沈阳市" + }, + { + "children": [ + { + "areaCode": 210201000000, + "name": "市辖区", + "parentCode": 210200000000, + "mergerName": "辽宁省-大连市-市辖区" + }, + { + "areaCode": 210202000000, + "name": "中山区", + "parentCode": 210200000000, + "mergerName": "辽宁省-大连市-中山区" + }, + { + "areaCode": 210203000000, + "name": "西岗区", + "parentCode": 210200000000, + "mergerName": "辽宁省-大连市-西岗区" + }, + { + "areaCode": 210204000000, + "name": "沙河口区", + "parentCode": 210200000000, + "mergerName": "辽宁省-大连市-沙河口区" + }, + { + "areaCode": 210211000000, + "name": "甘井子区", + "parentCode": 210200000000, + "mergerName": "辽宁省-大连市-甘井子区" + }, + { + "areaCode": 210212000000, + "name": "旅顺口区", + "parentCode": 210200000000, + "mergerName": "辽宁省-大连市-旅顺口区" + }, + { + "areaCode": 210213000000, + "name": "金州区", + "parentCode": 210200000000, + "mergerName": "辽宁省-大连市-金州区" + }, + { + "areaCode": 210214000000, + "name": "普兰店区", + "parentCode": 210200000000, + "mergerName": "辽宁省-大连市-普兰店区" + }, + { + "areaCode": 210224000000, + "name": "长海县", + "parentCode": 210200000000, + "mergerName": "辽宁省-大连市-长海县" + }, + { + "areaCode": 210281000000, + "name": "瓦房店市", + "parentCode": 210200000000, + "mergerName": "辽宁省-大连市-瓦房店市" + }, + { + "areaCode": 210283000000, + "name": "庄河市", + "parentCode": 210200000000, + "mergerName": "辽宁省-大连市-庄河市" + } + ], + "areaCode": 210200000000, + "name": "大连市", + "parentCode": 210000000000, + "mergerName": "辽宁省-大连市" + }, + { + "children": [ + { + "areaCode": 210301000000, + "name": "市辖区", + "parentCode": 210300000000, + "mergerName": "辽宁省-鞍山市-市辖区" + }, + { + "areaCode": 210302000000, + "name": "铁东区", + "parentCode": 210300000000, + "mergerName": "辽宁省-鞍山市-铁东区" + }, + { + "areaCode": 210303000000, + "name": "铁西区", + "parentCode": 210300000000, + "mergerName": "辽宁省-鞍山市-铁西区" + }, + { + "areaCode": 210304000000, + "name": "立山区", + "parentCode": 210300000000, + "mergerName": "辽宁省-鞍山市-立山区" + }, + { + "areaCode": 210311000000, + "name": "千山区", + "parentCode": 210300000000, + "mergerName": "辽宁省-鞍山市-千山区" + }, + { + "areaCode": 210321000000, + "name": "台安县", + "parentCode": 210300000000, + "mergerName": "辽宁省-鞍山市-台安县" + }, + { + "areaCode": 210323000000, + "name": "岫岩满族自治县", + "parentCode": 210300000000, + "mergerName": "辽宁省-鞍山市-岫岩满族自治县" + }, + { + "areaCode": 210381000000, + "name": "海城市", + "parentCode": 210300000000, + "mergerName": "辽宁省-鞍山市-海城市" + } + ], + "areaCode": 210300000000, + "name": "鞍山市", + "parentCode": 210000000000, + "mergerName": "辽宁省-鞍山市" + }, + { + "children": [ + { + "areaCode": 210401000000, + "name": "市辖区", + "parentCode": 210400000000, + "mergerName": "辽宁省-抚顺市-市辖区" + }, + { + "areaCode": 210402000000, + "name": "新抚区", + "parentCode": 210400000000, + "mergerName": "辽宁省-抚顺市-新抚区" + }, + { + "areaCode": 210403000000, + "name": "东洲区", + "parentCode": 210400000000, + "mergerName": "辽宁省-抚顺市-东洲区" + }, + { + "areaCode": 210404000000, + "name": "望花区", + "parentCode": 210400000000, + "mergerName": "辽宁省-抚顺市-望花区" + }, + { + "areaCode": 210411000000, + "name": "顺城区", + "parentCode": 210400000000, + "mergerName": "辽宁省-抚顺市-顺城区" + }, + { + "areaCode": 210421000000, + "name": "抚顺县", + "parentCode": 210400000000, + "mergerName": "辽宁省-抚顺市-抚顺县" + }, + { + "areaCode": 210422000000, + "name": "新宾满族自治县", + "parentCode": 210400000000, + "mergerName": "辽宁省-抚顺市-新宾满族自治县" + }, + { + "areaCode": 210423000000, + "name": "清原满族自治县", + "parentCode": 210400000000, + "mergerName": "辽宁省-抚顺市-清原满族自治县" + } + ], + "areaCode": 210400000000, + "name": "抚顺市", + "parentCode": 210000000000, + "mergerName": "辽宁省-抚顺市" + }, + { + "children": [ + { + "areaCode": 210501000000, + "name": "市辖区", + "parentCode": 210500000000, + "mergerName": "辽宁省-本溪市-市辖区" + }, + { + "areaCode": 210502000000, + "name": "平山区", + "parentCode": 210500000000, + "mergerName": "辽宁省-本溪市-平山区" + }, + { + "areaCode": 210503000000, + "name": "溪湖区", + "parentCode": 210500000000, + "mergerName": "辽宁省-本溪市-溪湖区" + }, + { + "areaCode": 210504000000, + "name": "明山区", + "parentCode": 210500000000, + "mergerName": "辽宁省-本溪市-明山区" + }, + { + "areaCode": 210505000000, + "name": "南芬区", + "parentCode": 210500000000, + "mergerName": "辽宁省-本溪市-南芬区" + }, + { + "areaCode": 210521000000, + "name": "本溪满族自治县", + "parentCode": 210500000000, + "mergerName": "辽宁省-本溪市-本溪满族自治县" + }, + { + "areaCode": 210522000000, + "name": "桓仁满族自治县", + "parentCode": 210500000000, + "mergerName": "辽宁省-本溪市-桓仁满族自治县" + } + ], + "areaCode": 210500000000, + "name": "本溪市", + "parentCode": 210000000000, + "mergerName": "辽宁省-本溪市" + }, + { + "children": [ + { + "areaCode": 210601000000, + "name": "市辖区", + "parentCode": 210600000000, + "mergerName": "辽宁省-丹东市-市辖区" + }, + { + "areaCode": 210602000000, + "name": "元宝区", + "parentCode": 210600000000, + "mergerName": "辽宁省-丹东市-元宝区" + }, + { + "areaCode": 210603000000, + "name": "振兴区", + "parentCode": 210600000000, + "mergerName": "辽宁省-丹东市-振兴区" + }, + { + "areaCode": 210604000000, + "name": "振安区", + "parentCode": 210600000000, + "mergerName": "辽宁省-丹东市-振安区" + }, + { + "areaCode": 210624000000, + "name": "宽甸满族自治县", + "parentCode": 210600000000, + "mergerName": "辽宁省-丹东市-宽甸满族自治县" + }, + { + "areaCode": 210681000000, + "name": "东港市", + "parentCode": 210600000000, + "mergerName": "辽宁省-丹东市-东港市" + }, + { + "areaCode": 210682000000, + "name": "凤城市", + "parentCode": 210600000000, + "mergerName": "辽宁省-丹东市-凤城市" + } + ], + "areaCode": 210600000000, + "name": "丹东市", + "parentCode": 210000000000, + "mergerName": "辽宁省-丹东市" + }, + { + "children": [ + { + "areaCode": 210701000000, + "name": "市辖区", + "parentCode": 210700000000, + "mergerName": "辽宁省-锦州市-市辖区" + }, + { + "areaCode": 210702000000, + "name": "古塔区", + "parentCode": 210700000000, + "mergerName": "辽宁省-锦州市-古塔区" + }, + { + "areaCode": 210703000000, + "name": "凌河区", + "parentCode": 210700000000, + "mergerName": "辽宁省-锦州市-凌河区" + }, + { + "areaCode": 210711000000, + "name": "太和区", + "parentCode": 210700000000, + "mergerName": "辽宁省-锦州市-太和区" + }, + { + "areaCode": 210726000000, + "name": "黑山县", + "parentCode": 210700000000, + "mergerName": "辽宁省-锦州市-黑山县" + }, + { "areaCode": 210727000000, "name": "义县", "parentCode": 210700000000, "mergerName": "辽宁省-锦州市-义县" }, + { + "areaCode": 210781000000, + "name": "凌海市", + "parentCode": 210700000000, + "mergerName": "辽宁省-锦州市-凌海市" + }, + { + "areaCode": 210782000000, + "name": "北镇市", + "parentCode": 210700000000, + "mergerName": "辽宁省-锦州市-北镇市" + } + ], + "areaCode": 210700000000, + "name": "锦州市", + "parentCode": 210000000000, + "mergerName": "辽宁省-锦州市" + }, + { + "children": [ + { + "areaCode": 210801000000, + "name": "市辖区", + "parentCode": 210800000000, + "mergerName": "辽宁省-营口市-市辖区" + }, + { + "areaCode": 210802000000, + "name": "站前区", + "parentCode": 210800000000, + "mergerName": "辽宁省-营口市-站前区" + }, + { + "areaCode": 210803000000, + "name": "西市区", + "parentCode": 210800000000, + "mergerName": "辽宁省-营口市-西市区" + }, + { + "areaCode": 210804000000, + "name": "鲅鱼圈区", + "parentCode": 210800000000, + "mergerName": "辽宁省-营口市-鲅鱼圈区" + }, + { + "areaCode": 210811000000, + "name": "老边区", + "parentCode": 210800000000, + "mergerName": "辽宁省-营口市-老边区" + }, + { + "areaCode": 210881000000, + "name": "盖州市", + "parentCode": 210800000000, + "mergerName": "辽宁省-营口市-盖州市" + }, + { + "areaCode": 210882000000, + "name": "大石桥市", + "parentCode": 210800000000, + "mergerName": "辽宁省-营口市-大石桥市" + } + ], + "areaCode": 210800000000, + "name": "营口市", + "parentCode": 210000000000, + "mergerName": "辽宁省-营口市" + }, + { + "children": [ + { + "areaCode": 210901000000, + "name": "市辖区", + "parentCode": 210900000000, + "mergerName": "辽宁省-阜新市-市辖区" + }, + { + "areaCode": 210902000000, + "name": "海州区", + "parentCode": 210900000000, + "mergerName": "辽宁省-阜新市-海州区" + }, + { + "areaCode": 210903000000, + "name": "新邱区", + "parentCode": 210900000000, + "mergerName": "辽宁省-阜新市-新邱区" + }, + { + "areaCode": 210904000000, + "name": "太平区", + "parentCode": 210900000000, + "mergerName": "辽宁省-阜新市-太平区" + }, + { + "areaCode": 210905000000, + "name": "清河门区", + "parentCode": 210900000000, + "mergerName": "辽宁省-阜新市-清河门区" + }, + { + "areaCode": 210911000000, + "name": "细河区", + "parentCode": 210900000000, + "mergerName": "辽宁省-阜新市-细河区" + }, + { + "areaCode": 210921000000, + "name": "阜新蒙古族自治县", + "parentCode": 210900000000, + "mergerName": "辽宁省-阜新市-阜新蒙古族自治县" + }, + { + "areaCode": 210922000000, + "name": "彰武县", + "parentCode": 210900000000, + "mergerName": "辽宁省-阜新市-彰武县" + } + ], + "areaCode": 210900000000, + "name": "阜新市", + "parentCode": 210000000000, + "mergerName": "辽宁省-阜新市" + }, + { + "children": [ + { + "areaCode": 211001000000, + "name": "市辖区", + "parentCode": 211000000000, + "mergerName": "辽宁省-辽阳市-市辖区" + }, + { + "areaCode": 211002000000, + "name": "白塔区", + "parentCode": 211000000000, + "mergerName": "辽宁省-辽阳市-白塔区" + }, + { + "areaCode": 211003000000, + "name": "文圣区", + "parentCode": 211000000000, + "mergerName": "辽宁省-辽阳市-文圣区" + }, + { + "areaCode": 211004000000, + "name": "宏伟区", + "parentCode": 211000000000, + "mergerName": "辽宁省-辽阳市-宏伟区" + }, + { + "areaCode": 211005000000, + "name": "弓长岭区", + "parentCode": 211000000000, + "mergerName": "辽宁省-辽阳市-弓长岭区" + }, + { + "areaCode": 211011000000, + "name": "太子河区", + "parentCode": 211000000000, + "mergerName": "辽宁省-辽阳市-太子河区" + }, + { + "areaCode": 211021000000, + "name": "辽阳县", + "parentCode": 211000000000, + "mergerName": "辽宁省-辽阳市-辽阳县" + }, + { + "areaCode": 211081000000, + "name": "灯塔市", + "parentCode": 211000000000, + "mergerName": "辽宁省-辽阳市-灯塔市" + } + ], + "areaCode": 211000000000, + "name": "辽阳市", + "parentCode": 210000000000, + "mergerName": "辽宁省-辽阳市" + }, + { + "children": [ + { + "areaCode": 211101000000, + "name": "市辖区", + "parentCode": 211100000000, + "mergerName": "辽宁省-盘锦市-市辖区" + }, + { + "areaCode": 211102000000, + "name": "双台子区", + "parentCode": 211100000000, + "mergerName": "辽宁省-盘锦市-双台子区" + }, + { + "areaCode": 211103000000, + "name": "兴隆台区", + "parentCode": 211100000000, + "mergerName": "辽宁省-盘锦市-兴隆台区" + }, + { + "areaCode": 211104000000, + "name": "大洼区", + "parentCode": 211100000000, + "mergerName": "辽宁省-盘锦市-大洼区" + }, + { + "areaCode": 211122000000, + "name": "盘山县", + "parentCode": 211100000000, + "mergerName": "辽宁省-盘锦市-盘山县" + } + ], + "areaCode": 211100000000, + "name": "盘锦市", + "parentCode": 210000000000, + "mergerName": "辽宁省-盘锦市" + }, + { + "children": [ + { + "areaCode": 211201000000, + "name": "市辖区", + "parentCode": 211200000000, + "mergerName": "辽宁省-铁岭市-市辖区" + }, + { + "areaCode": 211202000000, + "name": "银州区", + "parentCode": 211200000000, + "mergerName": "辽宁省-铁岭市-银州区" + }, + { + "areaCode": 211204000000, + "name": "清河区", + "parentCode": 211200000000, + "mergerName": "辽宁省-铁岭市-清河区" + }, + { + "areaCode": 211221000000, + "name": "铁岭县", + "parentCode": 211200000000, + "mergerName": "辽宁省-铁岭市-铁岭县" + }, + { + "areaCode": 211223000000, + "name": "西丰县", + "parentCode": 211200000000, + "mergerName": "辽宁省-铁岭市-西丰县" + }, + { + "areaCode": 211224000000, + "name": "昌图县", + "parentCode": 211200000000, + "mergerName": "辽宁省-铁岭市-昌图县" + }, + { + "areaCode": 211281000000, + "name": "调兵山市", + "parentCode": 211200000000, + "mergerName": "辽宁省-铁岭市-调兵山市" + }, + { + "areaCode": 211282000000, + "name": "开原市", + "parentCode": 211200000000, + "mergerName": "辽宁省-铁岭市-开原市" + } + ], + "areaCode": 211200000000, + "name": "铁岭市", + "parentCode": 210000000000, + "mergerName": "辽宁省-铁岭市" + }, + { + "children": [ + { + "areaCode": 211301000000, + "name": "市辖区", + "parentCode": 211300000000, + "mergerName": "辽宁省-朝阳市-市辖区" + }, + { + "areaCode": 211302000000, + "name": "双塔区", + "parentCode": 211300000000, + "mergerName": "辽宁省-朝阳市-双塔区" + }, + { + "areaCode": 211303000000, + "name": "龙城区", + "parentCode": 211300000000, + "mergerName": "辽宁省-朝阳市-龙城区" + }, + { + "areaCode": 211321000000, + "name": "朝阳县", + "parentCode": 211300000000, + "mergerName": "辽宁省-朝阳市-朝阳县" + }, + { + "areaCode": 211322000000, + "name": "建平县", + "parentCode": 211300000000, + "mergerName": "辽宁省-朝阳市-建平县" + }, + { + "areaCode": 211324000000, + "name": "喀喇沁左翼蒙古族自治县", + "parentCode": 211300000000, + "mergerName": "辽宁省-朝阳市-喀喇沁左翼蒙古族自治县" + }, + { + "areaCode": 211381000000, + "name": "北票市", + "parentCode": 211300000000, + "mergerName": "辽宁省-朝阳市-北票市" + }, + { + "areaCode": 211382000000, + "name": "凌源市", + "parentCode": 211300000000, + "mergerName": "辽宁省-朝阳市-凌源市" + } + ], + "areaCode": 211300000000, + "name": "朝阳市", + "parentCode": 210000000000, + "mergerName": "辽宁省-朝阳市" + }, + { + "children": [ + { + "areaCode": 211401000000, + "name": "市辖区", + "parentCode": 211400000000, + "mergerName": "辽宁省-葫芦岛市-市辖区" + }, + { + "areaCode": 211402000000, + "name": "连山区", + "parentCode": 211400000000, + "mergerName": "辽宁省-葫芦岛市-连山区" + }, + { + "areaCode": 211403000000, + "name": "龙港区", + "parentCode": 211400000000, + "mergerName": "辽宁省-葫芦岛市-龙港区" + }, + { + "areaCode": 211404000000, + "name": "南票区", + "parentCode": 211400000000, + "mergerName": "辽宁省-葫芦岛市-南票区" + }, + { + "areaCode": 211421000000, + "name": "绥中县", + "parentCode": 211400000000, + "mergerName": "辽宁省-葫芦岛市-绥中县" + }, + { + "areaCode": 211422000000, + "name": "建昌县", + "parentCode": 211400000000, + "mergerName": "辽宁省-葫芦岛市-建昌县" + }, + { + "areaCode": 211481000000, + "name": "兴城市", + "parentCode": 211400000000, + "mergerName": "辽宁省-葫芦岛市-兴城市" + } + ], + "areaCode": 211400000000, + "name": "葫芦岛市", + "parentCode": 210000000000, + "mergerName": "辽宁省-葫芦岛市" + } + ], + "areaCode": 210000000000, + "name": "辽宁省", + "parentCode": 0, + "mergerName": "-辽宁省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 220101000000, + "name": "市辖区", + "parentCode": 220100000000, + "mergerName": "吉林省-长春市-市辖区" + }, + { + "areaCode": 220102000000, + "name": "南关区", + "parentCode": 220100000000, + "mergerName": "吉林省-长春市-南关区" + }, + { + "areaCode": 220103000000, + "name": "宽城区", + "parentCode": 220100000000, + "mergerName": "吉林省-长春市-宽城区" + }, + { + "areaCode": 220104000000, + "name": "朝阳区", + "parentCode": 220100000000, + "mergerName": "吉林省-长春市-朝阳区" + }, + { + "areaCode": 220105000000, + "name": "二道区", + "parentCode": 220100000000, + "mergerName": "吉林省-长春市-二道区" + }, + { + "areaCode": 220106000000, + "name": "绿园区", + "parentCode": 220100000000, + "mergerName": "吉林省-长春市-绿园区" + }, + { + "areaCode": 220112000000, + "name": "双阳区", + "parentCode": 220100000000, + "mergerName": "吉林省-长春市-双阳区" + }, + { + "areaCode": 220113000000, + "name": "九台区", + "parentCode": 220100000000, + "mergerName": "吉林省-长春市-九台区" + }, + { + "areaCode": 220122000000, + "name": "农安县", + "parentCode": 220100000000, + "mergerName": "吉林省-长春市-农安县" + }, + { + "areaCode": 220171000000, + "name": "长春经济技术开发区", + "parentCode": 220100000000, + "mergerName": "吉林省-长春市-长春经济技术开发区" + }, + { + "areaCode": 220172000000, + "name": "长春净月高新技术产业开发区", + "parentCode": 220100000000, + "mergerName": "吉林省-长春市-长春净月高新技术产业开发区" + }, + { + "areaCode": 220173000000, + "name": "长春高新技术产业开发区", + "parentCode": 220100000000, + "mergerName": "吉林省-长春市-长春高新技术产业开发区" + }, + { + "areaCode": 220174000000, + "name": "长春汽车经济技术开发区", + "parentCode": 220100000000, + "mergerName": "吉林省-长春市-长春汽车经济技术开发区" + }, + { + "areaCode": 220182000000, + "name": "榆树市", + "parentCode": 220100000000, + "mergerName": "吉林省-长春市-榆树市" + }, + { + "areaCode": 220183000000, + "name": "德惠市", + "parentCode": 220100000000, + "mergerName": "吉林省-长春市-德惠市" + } + ], + "areaCode": 220100000000, + "name": "长春市", + "parentCode": 220000000000, + "mergerName": "吉林省-长春市" + }, + { + "children": [ + { + "areaCode": 220201000000, + "name": "市辖区", + "parentCode": 220200000000, + "mergerName": "吉林省-吉林市-市辖区" + }, + { + "areaCode": 220202000000, + "name": "昌邑区", + "parentCode": 220200000000, + "mergerName": "吉林省-吉林市-昌邑区" + }, + { + "areaCode": 220203000000, + "name": "龙潭区", + "parentCode": 220200000000, + "mergerName": "吉林省-吉林市-龙潭区" + }, + { + "areaCode": 220204000000, + "name": "船营区", + "parentCode": 220200000000, + "mergerName": "吉林省-吉林市-船营区" + }, + { + "areaCode": 220211000000, + "name": "丰满区", + "parentCode": 220200000000, + "mergerName": "吉林省-吉林市-丰满区" + }, + { + "areaCode": 220221000000, + "name": "永吉县", + "parentCode": 220200000000, + "mergerName": "吉林省-吉林市-永吉县" + }, + { + "areaCode": 220271000000, + "name": "吉林经济开发区", + "parentCode": 220200000000, + "mergerName": "吉林省-吉林市-吉林经济开发区" + }, + { + "areaCode": 220272000000, + "name": "吉林高新技术产业开发区", + "parentCode": 220200000000, + "mergerName": "吉林省-吉林市-吉林高新技术产业开发区" + }, + { + "areaCode": 220273000000, + "name": "吉林中国新加坡食品区", + "parentCode": 220200000000, + "mergerName": "吉林省-吉林市-吉林中国新加坡食品区" + }, + { + "areaCode": 220281000000, + "name": "蛟河市", + "parentCode": 220200000000, + "mergerName": "吉林省-吉林市-蛟河市" + }, + { + "areaCode": 220282000000, + "name": "桦甸市", + "parentCode": 220200000000, + "mergerName": "吉林省-吉林市-桦甸市" + }, + { + "areaCode": 220283000000, + "name": "舒兰市", + "parentCode": 220200000000, + "mergerName": "吉林省-吉林市-舒兰市" + }, + { + "areaCode": 220284000000, + "name": "磐石市", + "parentCode": 220200000000, + "mergerName": "吉林省-吉林市-磐石市" + } + ], + "areaCode": 220200000000, + "name": "吉林市", + "parentCode": 220000000000, + "mergerName": "吉林省-吉林市" + }, + { + "children": [ + { + "areaCode": 220301000000, + "name": "市辖区", + "parentCode": 220300000000, + "mergerName": "吉林省-四平市-市辖区" + }, + { + "areaCode": 220302000000, + "name": "铁西区", + "parentCode": 220300000000, + "mergerName": "吉林省-四平市-铁西区" + }, + { + "areaCode": 220303000000, + "name": "铁东区", + "parentCode": 220300000000, + "mergerName": "吉林省-四平市-铁东区" + }, + { + "areaCode": 220322000000, + "name": "梨树县", + "parentCode": 220300000000, + "mergerName": "吉林省-四平市-梨树县" + }, + { + "areaCode": 220323000000, + "name": "伊通满族自治县", + "parentCode": 220300000000, + "mergerName": "吉林省-四平市-伊通满族自治县" + }, + { + "areaCode": 220381000000, + "name": "公主岭市", + "parentCode": 220300000000, + "mergerName": "吉林省-四平市-公主岭市" + }, + { + "areaCode": 220382000000, + "name": "双辽市", + "parentCode": 220300000000, + "mergerName": "吉林省-四平市-双辽市" + } + ], + "areaCode": 220300000000, + "name": "四平市", + "parentCode": 220000000000, + "mergerName": "吉林省-四平市" + }, + { + "children": [ + { + "areaCode": 220401000000, + "name": "市辖区", + "parentCode": 220400000000, + "mergerName": "吉林省-辽源市-市辖区" + }, + { + "areaCode": 220402000000, + "name": "龙山区", + "parentCode": 220400000000, + "mergerName": "吉林省-辽源市-龙山区" + }, + { + "areaCode": 220403000000, + "name": "西安区", + "parentCode": 220400000000, + "mergerName": "吉林省-辽源市-西安区" + }, + { + "areaCode": 220421000000, + "name": "东丰县", + "parentCode": 220400000000, + "mergerName": "吉林省-辽源市-东丰县" + }, + { + "areaCode": 220422000000, + "name": "东辽县", + "parentCode": 220400000000, + "mergerName": "吉林省-辽源市-东辽县" + } + ], + "areaCode": 220400000000, + "name": "辽源市", + "parentCode": 220000000000, + "mergerName": "吉林省-辽源市" + }, + { + "children": [ + { + "areaCode": 220501000000, + "name": "市辖区", + "parentCode": 220500000000, + "mergerName": "吉林省-通化市-市辖区" + }, + { + "areaCode": 220502000000, + "name": "东昌区", + "parentCode": 220500000000, + "mergerName": "吉林省-通化市-东昌区" + }, + { + "areaCode": 220503000000, + "name": "二道江区", + "parentCode": 220500000000, + "mergerName": "吉林省-通化市-二道江区" + }, + { + "areaCode": 220521000000, + "name": "通化县", + "parentCode": 220500000000, + "mergerName": "吉林省-通化市-通化县" + }, + { + "areaCode": 220523000000, + "name": "辉南县", + "parentCode": 220500000000, + "mergerName": "吉林省-通化市-辉南县" + }, + { + "areaCode": 220524000000, + "name": "柳河县", + "parentCode": 220500000000, + "mergerName": "吉林省-通化市-柳河县" + }, + { + "areaCode": 220581000000, + "name": "梅河口市", + "parentCode": 220500000000, + "mergerName": "吉林省-通化市-梅河口市" + }, + { + "areaCode": 220582000000, + "name": "集安市", + "parentCode": 220500000000, + "mergerName": "吉林省-通化市-集安市" + } + ], + "areaCode": 220500000000, + "name": "通化市", + "parentCode": 220000000000, + "mergerName": "吉林省-通化市" + }, + { + "children": [ + { + "areaCode": 220601000000, + "name": "市辖区", + "parentCode": 220600000000, + "mergerName": "吉林省-白山市-市辖区" + }, + { + "areaCode": 220602000000, + "name": "浑江区", + "parentCode": 220600000000, + "mergerName": "吉林省-白山市-浑江区" + }, + { + "areaCode": 220605000000, + "name": "江源区", + "parentCode": 220600000000, + "mergerName": "吉林省-白山市-江源区" + }, + { + "areaCode": 220621000000, + "name": "抚松县", + "parentCode": 220600000000, + "mergerName": "吉林省-白山市-抚松县" + }, + { + "areaCode": 220622000000, + "name": "靖宇县", + "parentCode": 220600000000, + "mergerName": "吉林省-白山市-靖宇县" + }, + { + "areaCode": 220623000000, + "name": "长白朝鲜族自治县", + "parentCode": 220600000000, + "mergerName": "吉林省-白山市-长白朝鲜族自治县" + }, + { + "areaCode": 220681000000, + "name": "临江市", + "parentCode": 220600000000, + "mergerName": "吉林省-白山市-临江市" + } + ], + "areaCode": 220600000000, + "name": "白山市", + "parentCode": 220000000000, + "mergerName": "吉林省-白山市" + }, + { + "children": [ + { + "areaCode": 220701000000, + "name": "市辖区", + "parentCode": 220700000000, + "mergerName": "吉林省-松原市-市辖区" + }, + { + "areaCode": 220702000000, + "name": "宁江区", + "parentCode": 220700000000, + "mergerName": "吉林省-松原市-宁江区" + }, + { + "areaCode": 220721000000, + "name": "前郭尔罗斯蒙古族自治县", + "parentCode": 220700000000, + "mergerName": "吉林省-松原市-前郭尔罗斯蒙古族自治县" + }, + { + "areaCode": 220722000000, + "name": "长岭县", + "parentCode": 220700000000, + "mergerName": "吉林省-松原市-长岭县" + }, + { + "areaCode": 220723000000, + "name": "乾安县", + "parentCode": 220700000000, + "mergerName": "吉林省-松原市-乾安县" + }, + { + "areaCode": 220771000000, + "name": "吉林松原经济开发区", + "parentCode": 220700000000, + "mergerName": "吉林省-松原市-吉林松原经济开发区" + }, + { + "areaCode": 220781000000, + "name": "扶余市", + "parentCode": 220700000000, + "mergerName": "吉林省-松原市-扶余市" + } + ], + "areaCode": 220700000000, + "name": "松原市", + "parentCode": 220000000000, + "mergerName": "吉林省-松原市" + }, + { + "children": [ + { + "areaCode": 220801000000, + "name": "市辖区", + "parentCode": 220800000000, + "mergerName": "吉林省-白城市-市辖区" + }, + { + "areaCode": 220802000000, + "name": "洮北区", + "parentCode": 220800000000, + "mergerName": "吉林省-白城市-洮北区" + }, + { + "areaCode": 220821000000, + "name": "镇赉县", + "parentCode": 220800000000, + "mergerName": "吉林省-白城市-镇赉县" + }, + { + "areaCode": 220822000000, + "name": "通榆县", + "parentCode": 220800000000, + "mergerName": "吉林省-白城市-通榆县" + }, + { + "areaCode": 220871000000, + "name": "吉林白城经济开发区", + "parentCode": 220800000000, + "mergerName": "吉林省-白城市-吉林白城经济开发区" + }, + { + "areaCode": 220881000000, + "name": "洮南市", + "parentCode": 220800000000, + "mergerName": "吉林省-白城市-洮南市" + }, + { + "areaCode": 220882000000, + "name": "大安市", + "parentCode": 220800000000, + "mergerName": "吉林省-白城市-大安市" + } + ], + "areaCode": 220800000000, + "name": "白城市", + "parentCode": 220000000000, + "mergerName": "吉林省-白城市" + }, + { + "children": [ + { + "areaCode": 222401000000, + "name": "延吉市", + "parentCode": 222400000000, + "mergerName": "吉林省-延边朝鲜族自治州-延吉市" + }, + { + "areaCode": 222402000000, + "name": "图们市", + "parentCode": 222400000000, + "mergerName": "吉林省-延边朝鲜族自治州-图们市" + }, + { + "areaCode": 222403000000, + "name": "敦化市", + "parentCode": 222400000000, + "mergerName": "吉林省-延边朝鲜族自治州-敦化市" + }, + { + "areaCode": 222404000000, + "name": "珲春市", + "parentCode": 222400000000, + "mergerName": "吉林省-延边朝鲜族自治州-珲春市" + }, + { + "areaCode": 222405000000, + "name": "龙井市", + "parentCode": 222400000000, + "mergerName": "吉林省-延边朝鲜族自治州-龙井市" + }, + { + "areaCode": 222406000000, + "name": "和龙市", + "parentCode": 222400000000, + "mergerName": "吉林省-延边朝鲜族自治州-和龙市" + }, + { + "areaCode": 222424000000, + "name": "汪清县", + "parentCode": 222400000000, + "mergerName": "吉林省-延边朝鲜族自治州-汪清县" + }, + { + "areaCode": 222426000000, + "name": "安图县", + "parentCode": 222400000000, + "mergerName": "吉林省-延边朝鲜族自治州-安图县" + } + ], + "areaCode": 222400000000, + "name": "延边朝鲜族自治州", + "parentCode": 220000000000, + "mergerName": "吉林省-延边朝鲜族自治州" + } + ], + "areaCode": 220000000000, + "name": "吉林省", + "parentCode": 0, + "mergerName": "-吉林省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 230101000000, + "name": "市辖区", + "parentCode": 230100000000, + "mergerName": "黑龙江省-哈尔滨市-市辖区" + }, + { + "areaCode": 230102000000, + "name": "道里区", + "parentCode": 230100000000, + "mergerName": "黑龙江省-哈尔滨市-道里区" + }, + { + "areaCode": 230103000000, + "name": "南岗区", + "parentCode": 230100000000, + "mergerName": "黑龙江省-哈尔滨市-南岗区" + }, + { + "areaCode": 230104000000, + "name": "道外区", + "parentCode": 230100000000, + "mergerName": "黑龙江省-哈尔滨市-道外区" + }, + { + "areaCode": 230108000000, + "name": "平房区", + "parentCode": 230100000000, + "mergerName": "黑龙江省-哈尔滨市-平房区" + }, + { + "areaCode": 230109000000, + "name": "松北区", + "parentCode": 230100000000, + "mergerName": "黑龙江省-哈尔滨市-松北区" + }, + { + "areaCode": 230110000000, + "name": "香坊区", + "parentCode": 230100000000, + "mergerName": "黑龙江省-哈尔滨市-香坊区" + }, + { + "areaCode": 230111000000, + "name": "呼兰区", + "parentCode": 230100000000, + "mergerName": "黑龙江省-哈尔滨市-呼兰区" + }, + { + "areaCode": 230112000000, + "name": "阿城区", + "parentCode": 230100000000, + "mergerName": "黑龙江省-哈尔滨市-阿城区" + }, + { + "areaCode": 230113000000, + "name": "双城区", + "parentCode": 230100000000, + "mergerName": "黑龙江省-哈尔滨市-双城区" + }, + { + "areaCode": 230123000000, + "name": "依兰县", + "parentCode": 230100000000, + "mergerName": "黑龙江省-哈尔滨市-依兰县" + }, + { + "areaCode": 230124000000, + "name": "方正县", + "parentCode": 230100000000, + "mergerName": "黑龙江省-哈尔滨市-方正县" + }, + { + "areaCode": 230125000000, + "name": "宾县", + "parentCode": 230100000000, + "mergerName": "黑龙江省-哈尔滨市-宾县" + }, + { + "areaCode": 230126000000, + "name": "巴彦县", + "parentCode": 230100000000, + "mergerName": "黑龙江省-哈尔滨市-巴彦县" + }, + { + "areaCode": 230127000000, + "name": "木兰县", + "parentCode": 230100000000, + "mergerName": "黑龙江省-哈尔滨市-木兰县" + }, + { + "areaCode": 230128000000, + "name": "通河县", + "parentCode": 230100000000, + "mergerName": "黑龙江省-哈尔滨市-通河县" + }, + { + "areaCode": 230129000000, + "name": "延寿县", + "parentCode": 230100000000, + "mergerName": "黑龙江省-哈尔滨市-延寿县" + }, + { + "areaCode": 230183000000, + "name": "尚志市", + "parentCode": 230100000000, + "mergerName": "黑龙江省-哈尔滨市-尚志市" + }, + { + "areaCode": 230184000000, + "name": "五常市", + "parentCode": 230100000000, + "mergerName": "黑龙江省-哈尔滨市-五常市" + } + ], + "areaCode": 230100000000, + "name": "哈尔滨市", + "parentCode": 230000000000, + "mergerName": "黑龙江省-哈尔滨市" + }, + { + "children": [ + { + "areaCode": 230201000000, + "name": "市辖区", + "parentCode": 230200000000, + "mergerName": "黑龙江省-齐齐哈尔市-市辖区" + }, + { + "areaCode": 230202000000, + "name": "龙沙区", + "parentCode": 230200000000, + "mergerName": "黑龙江省-齐齐哈尔市-龙沙区" + }, + { + "areaCode": 230203000000, + "name": "建华区", + "parentCode": 230200000000, + "mergerName": "黑龙江省-齐齐哈尔市-建华区" + }, + { + "areaCode": 230204000000, + "name": "铁锋区", + "parentCode": 230200000000, + "mergerName": "黑龙江省-齐齐哈尔市-铁锋区" + }, + { + "areaCode": 230205000000, + "name": "昂昂溪区", + "parentCode": 230200000000, + "mergerName": "黑龙江省-齐齐哈尔市-昂昂溪区" + }, + { + "areaCode": 230206000000, + "name": "富拉尔基区", + "parentCode": 230200000000, + "mergerName": "黑龙江省-齐齐哈尔市-富拉尔基区" + }, + { + "areaCode": 230207000000, + "name": "碾子山区", + "parentCode": 230200000000, + "mergerName": "黑龙江省-齐齐哈尔市-碾子山区" + }, + { + "areaCode": 230208000000, + "name": "梅里斯达斡尔族区", + "parentCode": 230200000000, + "mergerName": "黑龙江省-齐齐哈尔市-梅里斯达斡尔族区" + }, + { + "areaCode": 230221000000, + "name": "龙江县", + "parentCode": 230200000000, + "mergerName": "黑龙江省-齐齐哈尔市-龙江县" + }, + { + "areaCode": 230223000000, + "name": "依安县", + "parentCode": 230200000000, + "mergerName": "黑龙江省-齐齐哈尔市-依安县" + }, + { + "areaCode": 230224000000, + "name": "泰来县", + "parentCode": 230200000000, + "mergerName": "黑龙江省-齐齐哈尔市-泰来县" + }, + { + "areaCode": 230225000000, + "name": "甘南县", + "parentCode": 230200000000, + "mergerName": "黑龙江省-齐齐哈尔市-甘南县" + }, + { + "areaCode": 230227000000, + "name": "富裕县", + "parentCode": 230200000000, + "mergerName": "黑龙江省-齐齐哈尔市-富裕县" + }, + { + "areaCode": 230229000000, + "name": "克山县", + "parentCode": 230200000000, + "mergerName": "黑龙江省-齐齐哈尔市-克山县" + }, + { + "areaCode": 230230000000, + "name": "克东县", + "parentCode": 230200000000, + "mergerName": "黑龙江省-齐齐哈尔市-克东县" + }, + { + "areaCode": 230231000000, + "name": "拜泉县", + "parentCode": 230200000000, + "mergerName": "黑龙江省-齐齐哈尔市-拜泉县" + }, + { + "areaCode": 230281000000, + "name": "讷河市", + "parentCode": 230200000000, + "mergerName": "黑龙江省-齐齐哈尔市-讷河市" + } + ], + "areaCode": 230200000000, + "name": "齐齐哈尔市", + "parentCode": 230000000000, + "mergerName": "黑龙江省-齐齐哈尔市" + }, + { + "children": [ + { + "areaCode": 230301000000, + "name": "市辖区", + "parentCode": 230300000000, + "mergerName": "黑龙江省-鸡西市-市辖区" + }, + { + "areaCode": 230302000000, + "name": "鸡冠区", + "parentCode": 230300000000, + "mergerName": "黑龙江省-鸡西市-鸡冠区" + }, + { + "areaCode": 230303000000, + "name": "恒山区", + "parentCode": 230300000000, + "mergerName": "黑龙江省-鸡西市-恒山区" + }, + { + "areaCode": 230304000000, + "name": "滴道区", + "parentCode": 230300000000, + "mergerName": "黑龙江省-鸡西市-滴道区" + }, + { + "areaCode": 230305000000, + "name": "梨树区", + "parentCode": 230300000000, + "mergerName": "黑龙江省-鸡西市-梨树区" + }, + { + "areaCode": 230306000000, + "name": "城子河区", + "parentCode": 230300000000, + "mergerName": "黑龙江省-鸡西市-城子河区" + }, + { + "areaCode": 230307000000, + "name": "麻山区", + "parentCode": 230300000000, + "mergerName": "黑龙江省-鸡西市-麻山区" + }, + { + "areaCode": 230321000000, + "name": "鸡东县", + "parentCode": 230300000000, + "mergerName": "黑龙江省-鸡西市-鸡东县" + }, + { + "areaCode": 230381000000, + "name": "虎林市", + "parentCode": 230300000000, + "mergerName": "黑龙江省-鸡西市-虎林市" + }, + { + "areaCode": 230382000000, + "name": "密山市", + "parentCode": 230300000000, + "mergerName": "黑龙江省-鸡西市-密山市" + } + ], + "areaCode": 230300000000, + "name": "鸡西市", + "parentCode": 230000000000, + "mergerName": "黑龙江省-鸡西市" + }, + { + "children": [ + { + "areaCode": 230401000000, + "name": "市辖区", + "parentCode": 230400000000, + "mergerName": "黑龙江省-鹤岗市-市辖区" + }, + { + "areaCode": 230402000000, + "name": "向阳区", + "parentCode": 230400000000, + "mergerName": "黑龙江省-鹤岗市-向阳区" + }, + { + "areaCode": 230403000000, + "name": "工农区", + "parentCode": 230400000000, + "mergerName": "黑龙江省-鹤岗市-工农区" + }, + { + "areaCode": 230404000000, + "name": "南山区", + "parentCode": 230400000000, + "mergerName": "黑龙江省-鹤岗市-南山区" + }, + { + "areaCode": 230405000000, + "name": "兴安区", + "parentCode": 230400000000, + "mergerName": "黑龙江省-鹤岗市-兴安区" + }, + { + "areaCode": 230406000000, + "name": "东山区", + "parentCode": 230400000000, + "mergerName": "黑龙江省-鹤岗市-东山区" + }, + { + "areaCode": 230407000000, + "name": "兴山区", + "parentCode": 230400000000, + "mergerName": "黑龙江省-鹤岗市-兴山区" + }, + { + "areaCode": 230421000000, + "name": "萝北县", + "parentCode": 230400000000, + "mergerName": "黑龙江省-鹤岗市-萝北县" + }, + { + "areaCode": 230422000000, + "name": "绥滨县", + "parentCode": 230400000000, + "mergerName": "黑龙江省-鹤岗市-绥滨县" + } + ], + "areaCode": 230400000000, + "name": "鹤岗市", + "parentCode": 230000000000, + "mergerName": "黑龙江省-鹤岗市" + }, + { + "children": [ + { + "areaCode": 230501000000, + "name": "市辖区", + "parentCode": 230500000000, + "mergerName": "黑龙江省-双鸭山市-市辖区" + }, + { + "areaCode": 230502000000, + "name": "尖山区", + "parentCode": 230500000000, + "mergerName": "黑龙江省-双鸭山市-尖山区" + }, + { + "areaCode": 230503000000, + "name": "岭东区", + "parentCode": 230500000000, + "mergerName": "黑龙江省-双鸭山市-岭东区" + }, + { + "areaCode": 230505000000, + "name": "四方台区", + "parentCode": 230500000000, + "mergerName": "黑龙江省-双鸭山市-四方台区" + }, + { + "areaCode": 230506000000, + "name": "宝山区", + "parentCode": 230500000000, + "mergerName": "黑龙江省-双鸭山市-宝山区" + }, + { + "areaCode": 230521000000, + "name": "集贤县", + "parentCode": 230500000000, + "mergerName": "黑龙江省-双鸭山市-集贤县" + }, + { + "areaCode": 230522000000, + "name": "友谊县", + "parentCode": 230500000000, + "mergerName": "黑龙江省-双鸭山市-友谊县" + }, + { + "areaCode": 230523000000, + "name": "宝清县", + "parentCode": 230500000000, + "mergerName": "黑龙江省-双鸭山市-宝清县" + }, + { + "areaCode": 230524000000, + "name": "饶河县", + "parentCode": 230500000000, + "mergerName": "黑龙江省-双鸭山市-饶河县" + } + ], + "areaCode": 230500000000, + "name": "双鸭山市", + "parentCode": 230000000000, + "mergerName": "黑龙江省-双鸭山市" + }, + { + "children": [ + { + "areaCode": 230601000000, + "name": "市辖区", + "parentCode": 230600000000, + "mergerName": "黑龙江省-大庆市-市辖区" + }, + { + "areaCode": 230602000000, + "name": "萨尔图区", + "parentCode": 230600000000, + "mergerName": "黑龙江省-大庆市-萨尔图区" + }, + { + "areaCode": 230603000000, + "name": "龙凤区", + "parentCode": 230600000000, + "mergerName": "黑龙江省-大庆市-龙凤区" + }, + { + "areaCode": 230604000000, + "name": "让胡路区", + "parentCode": 230600000000, + "mergerName": "黑龙江省-大庆市-让胡路区" + }, + { + "areaCode": 230605000000, + "name": "红岗区", + "parentCode": 230600000000, + "mergerName": "黑龙江省-大庆市-红岗区" + }, + { + "areaCode": 230606000000, + "name": "大同区", + "parentCode": 230600000000, + "mergerName": "黑龙江省-大庆市-大同区" + }, + { + "areaCode": 230621000000, + "name": "肇州县", + "parentCode": 230600000000, + "mergerName": "黑龙江省-大庆市-肇州县" + }, + { + "areaCode": 230622000000, + "name": "肇源县", + "parentCode": 230600000000, + "mergerName": "黑龙江省-大庆市-肇源县" + }, + { + "areaCode": 230623000000, + "name": "林甸县", + "parentCode": 230600000000, + "mergerName": "黑龙江省-大庆市-林甸县" + }, + { + "areaCode": 230624000000, + "name": "杜尔伯特蒙古族自治县", + "parentCode": 230600000000, + "mergerName": "黑龙江省-大庆市-杜尔伯特蒙古族自治县" + }, + { + "areaCode": 230671000000, + "name": "大庆高新技术产业开发区", + "parentCode": 230600000000, + "mergerName": "黑龙江省-大庆市-大庆高新技术产业开发区" + } + ], + "areaCode": 230600000000, + "name": "大庆市", + "parentCode": 230000000000, + "mergerName": "黑龙江省-大庆市" + }, + { + "children": [ + { + "areaCode": 230701000000, + "name": "市辖区", + "parentCode": 230700000000, + "mergerName": "黑龙江省-伊春市-市辖区" + }, + { + "areaCode": 230702000000, + "name": "伊春区", + "parentCode": 230700000000, + "mergerName": "黑龙江省-伊春市-伊春区" + }, + { + "areaCode": 230703000000, + "name": "南岔区", + "parentCode": 230700000000, + "mergerName": "黑龙江省-伊春市-南岔区" + }, + { + "areaCode": 230704000000, + "name": "友好区", + "parentCode": 230700000000, + "mergerName": "黑龙江省-伊春市-友好区" + }, + { + "areaCode": 230705000000, + "name": "西林区", + "parentCode": 230700000000, + "mergerName": "黑龙江省-伊春市-西林区" + }, + { + "areaCode": 230706000000, + "name": "翠峦区", + "parentCode": 230700000000, + "mergerName": "黑龙江省-伊春市-翠峦区" + }, + { + "areaCode": 230707000000, + "name": "新青区", + "parentCode": 230700000000, + "mergerName": "黑龙江省-伊春市-新青区" + }, + { + "areaCode": 230708000000, + "name": "美溪区", + "parentCode": 230700000000, + "mergerName": "黑龙江省-伊春市-美溪区" + }, + { + "areaCode": 230709000000, + "name": "金山屯区", + "parentCode": 230700000000, + "mergerName": "黑龙江省-伊春市-金山屯区" + }, + { + "areaCode": 230710000000, + "name": "五营区", + "parentCode": 230700000000, + "mergerName": "黑龙江省-伊春市-五营区" + }, + { + "areaCode": 230711000000, + "name": "乌马河区", + "parentCode": 230700000000, + "mergerName": "黑龙江省-伊春市-乌马河区" + }, + { + "areaCode": 230712000000, + "name": "汤旺河区", + "parentCode": 230700000000, + "mergerName": "黑龙江省-伊春市-汤旺河区" + }, + { + "areaCode": 230713000000, + "name": "带岭区", + "parentCode": 230700000000, + "mergerName": "黑龙江省-伊春市-带岭区" + }, + { + "areaCode": 230714000000, + "name": "乌伊岭区", + "parentCode": 230700000000, + "mergerName": "黑龙江省-伊春市-乌伊岭区" + }, + { + "areaCode": 230715000000, + "name": "红星区", + "parentCode": 230700000000, + "mergerName": "黑龙江省-伊春市-红星区" + }, + { + "areaCode": 230716000000, + "name": "上甘岭区", + "parentCode": 230700000000, + "mergerName": "黑龙江省-伊春市-上甘岭区" + }, + { + "areaCode": 230722000000, + "name": "嘉荫县", + "parentCode": 230700000000, + "mergerName": "黑龙江省-伊春市-嘉荫县" + }, + { + "areaCode": 230781000000, + "name": "铁力市", + "parentCode": 230700000000, + "mergerName": "黑龙江省-伊春市-铁力市" + } + ], + "areaCode": 230700000000, + "name": "伊春市", + "parentCode": 230000000000, + "mergerName": "黑龙江省-伊春市" + }, + { + "children": [ + { + "areaCode": 230801000000, + "name": "市辖区", + "parentCode": 230800000000, + "mergerName": "黑龙江省-佳木斯市-市辖区" + }, + { + "areaCode": 230803000000, + "name": "向阳区", + "parentCode": 230800000000, + "mergerName": "黑龙江省-佳木斯市-向阳区" + }, + { + "areaCode": 230804000000, + "name": "前进区", + "parentCode": 230800000000, + "mergerName": "黑龙江省-佳木斯市-前进区" + }, + { + "areaCode": 230805000000, + "name": "东风区", + "parentCode": 230800000000, + "mergerName": "黑龙江省-佳木斯市-东风区" + }, + { + "areaCode": 230811000000, + "name": "郊区", + "parentCode": 230800000000, + "mergerName": "黑龙江省-佳木斯市-郊区" + }, + { + "areaCode": 230822000000, + "name": "桦南县", + "parentCode": 230800000000, + "mergerName": "黑龙江省-佳木斯市-桦南县" + }, + { + "areaCode": 230826000000, + "name": "桦川县", + "parentCode": 230800000000, + "mergerName": "黑龙江省-佳木斯市-桦川县" + }, + { + "areaCode": 230828000000, + "name": "汤原县", + "parentCode": 230800000000, + "mergerName": "黑龙江省-佳木斯市-汤原县" + }, + { + "areaCode": 230881000000, + "name": "同江市", + "parentCode": 230800000000, + "mergerName": "黑龙江省-佳木斯市-同江市" + }, + { + "areaCode": 230882000000, + "name": "富锦市", + "parentCode": 230800000000, + "mergerName": "黑龙江省-佳木斯市-富锦市" + }, + { + "areaCode": 230883000000, + "name": "抚远市", + "parentCode": 230800000000, + "mergerName": "黑龙江省-佳木斯市-抚远市" + } + ], + "areaCode": 230800000000, + "name": "佳木斯市", + "parentCode": 230000000000, + "mergerName": "黑龙江省-佳木斯市" + }, + { + "children": [ + { + "areaCode": 230901000000, + "name": "市辖区", + "parentCode": 230900000000, + "mergerName": "黑龙江省-七台河市-市辖区" + }, + { + "areaCode": 230902000000, + "name": "新兴区", + "parentCode": 230900000000, + "mergerName": "黑龙江省-七台河市-新兴区" + }, + { + "areaCode": 230903000000, + "name": "桃山区", + "parentCode": 230900000000, + "mergerName": "黑龙江省-七台河市-桃山区" + }, + { + "areaCode": 230904000000, + "name": "茄子河区", + "parentCode": 230900000000, + "mergerName": "黑龙江省-七台河市-茄子河区" + }, + { + "areaCode": 230921000000, + "name": "勃利县", + "parentCode": 230900000000, + "mergerName": "黑龙江省-七台河市-勃利县" + } + ], + "areaCode": 230900000000, + "name": "七台河市", + "parentCode": 230000000000, + "mergerName": "黑龙江省-七台河市" + }, + { + "children": [ + { + "areaCode": 231001000000, + "name": "市辖区", + "parentCode": 231000000000, + "mergerName": "黑龙江省-牡丹江市-市辖区" + }, + { + "areaCode": 231002000000, + "name": "东安区", + "parentCode": 231000000000, + "mergerName": "黑龙江省-牡丹江市-东安区" + }, + { + "areaCode": 231003000000, + "name": "阳明区", + "parentCode": 231000000000, + "mergerName": "黑龙江省-牡丹江市-阳明区" + }, + { + "areaCode": 231004000000, + "name": "爱民区", + "parentCode": 231000000000, + "mergerName": "黑龙江省-牡丹江市-爱民区" + }, + { + "areaCode": 231005000000, + "name": "西安区", + "parentCode": 231000000000, + "mergerName": "黑龙江省-牡丹江市-西安区" + }, + { + "areaCode": 231025000000, + "name": "林口县", + "parentCode": 231000000000, + "mergerName": "黑龙江省-牡丹江市-林口县" + }, + { + "areaCode": 231071000000, + "name": "牡丹江经济技术开发区", + "parentCode": 231000000000, + "mergerName": "黑龙江省-牡丹江市-牡丹江经济技术开发区" + }, + { + "areaCode": 231081000000, + "name": "绥芬河市", + "parentCode": 231000000000, + "mergerName": "黑龙江省-牡丹江市-绥芬河市" + }, + { + "areaCode": 231083000000, + "name": "海林市", + "parentCode": 231000000000, + "mergerName": "黑龙江省-牡丹江市-海林市" + }, + { + "areaCode": 231084000000, + "name": "宁安市", + "parentCode": 231000000000, + "mergerName": "黑龙江省-牡丹江市-宁安市" + }, + { + "areaCode": 231085000000, + "name": "穆棱市", + "parentCode": 231000000000, + "mergerName": "黑龙江省-牡丹江市-穆棱市" + }, + { + "areaCode": 231086000000, + "name": "东宁市", + "parentCode": 231000000000, + "mergerName": "黑龙江省-牡丹江市-东宁市" + } + ], + "areaCode": 231000000000, + "name": "牡丹江市", + "parentCode": 230000000000, + "mergerName": "黑龙江省-牡丹江市" + }, + { + "children": [ + { + "areaCode": 231101000000, + "name": "市辖区", + "parentCode": 231100000000, + "mergerName": "黑龙江省-黑河市-市辖区" + }, + { + "areaCode": 231102000000, + "name": "爱辉区", + "parentCode": 231100000000, + "mergerName": "黑龙江省-黑河市-爱辉区" + }, + { + "areaCode": 231121000000, + "name": "嫩江县", + "parentCode": 231100000000, + "mergerName": "黑龙江省-黑河市-嫩江县" + }, + { + "areaCode": 231123000000, + "name": "逊克县", + "parentCode": 231100000000, + "mergerName": "黑龙江省-黑河市-逊克县" + }, + { + "areaCode": 231124000000, + "name": "孙吴县", + "parentCode": 231100000000, + "mergerName": "黑龙江省-黑河市-孙吴县" + }, + { + "areaCode": 231181000000, + "name": "北安市", + "parentCode": 231100000000, + "mergerName": "黑龙江省-黑河市-北安市" + }, + { + "areaCode": 231182000000, + "name": "五大连池市", + "parentCode": 231100000000, + "mergerName": "黑龙江省-黑河市-五大连池市" + } + ], + "areaCode": 231100000000, + "name": "黑河市", + "parentCode": 230000000000, + "mergerName": "黑龙江省-黑河市" + }, + { + "children": [ + { + "areaCode": 231201000000, + "name": "市辖区", + "parentCode": 231200000000, + "mergerName": "黑龙江省-绥化市-市辖区" + }, + { + "areaCode": 231202000000, + "name": "北林区", + "parentCode": 231200000000, + "mergerName": "黑龙江省-绥化市-北林区" + }, + { + "areaCode": 231221000000, + "name": "望奎县", + "parentCode": 231200000000, + "mergerName": "黑龙江省-绥化市-望奎县" + }, + { + "areaCode": 231222000000, + "name": "兰西县", + "parentCode": 231200000000, + "mergerName": "黑龙江省-绥化市-兰西县" + }, + { + "areaCode": 231223000000, + "name": "青冈县", + "parentCode": 231200000000, + "mergerName": "黑龙江省-绥化市-青冈县" + }, + { + "areaCode": 231224000000, + "name": "庆安县", + "parentCode": 231200000000, + "mergerName": "黑龙江省-绥化市-庆安县" + }, + { + "areaCode": 231225000000, + "name": "明水县", + "parentCode": 231200000000, + "mergerName": "黑龙江省-绥化市-明水县" + }, + { + "areaCode": 231226000000, + "name": "绥棱县", + "parentCode": 231200000000, + "mergerName": "黑龙江省-绥化市-绥棱县" + }, + { + "areaCode": 231281000000, + "name": "安达市", + "parentCode": 231200000000, + "mergerName": "黑龙江省-绥化市-安达市" + }, + { + "areaCode": 231282000000, + "name": "肇东市", + "parentCode": 231200000000, + "mergerName": "黑龙江省-绥化市-肇东市" + }, + { + "areaCode": 231283000000, + "name": "海伦市", + "parentCode": 231200000000, + "mergerName": "黑龙江省-绥化市-海伦市" + } + ], + "areaCode": 231200000000, + "name": "绥化市", + "parentCode": 230000000000, + "mergerName": "黑龙江省-绥化市" + }, + { + "children": [ + { + "areaCode": 232701000000, + "name": "漠河市", + "parentCode": 232700000000, + "mergerName": "黑龙江省-大兴安岭地区-漠河市" + }, + { + "areaCode": 232721000000, + "name": "呼玛县", + "parentCode": 232700000000, + "mergerName": "黑龙江省-大兴安岭地区-呼玛县" + }, + { + "areaCode": 232722000000, + "name": "塔河县", + "parentCode": 232700000000, + "mergerName": "黑龙江省-大兴安岭地区-塔河县" + }, + { + "areaCode": 232761000000, + "name": "加格达奇区", + "parentCode": 232700000000, + "mergerName": "黑龙江省-大兴安岭地区-加格达奇区" + }, + { + "areaCode": 232762000000, + "name": "松岭区", + "parentCode": 232700000000, + "mergerName": "黑龙江省-大兴安岭地区-松岭区" + }, + { + "areaCode": 232763000000, + "name": "新林区", + "parentCode": 232700000000, + "mergerName": "黑龙江省-大兴安岭地区-新林区" + }, + { + "areaCode": 232764000000, + "name": "呼中区", + "parentCode": 232700000000, + "mergerName": "黑龙江省-大兴安岭地区-呼中区" + } + ], + "areaCode": 232700000000, + "name": "大兴安岭地区", + "parentCode": 230000000000, + "mergerName": "黑龙江省-大兴安岭地区" + } + ], + "areaCode": 230000000000, + "name": "黑龙江省", + "parentCode": 0, + "mergerName": "-黑龙江省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 310101000000, + "name": "黄浦区", + "parentCode": 310100000000, + "mergerName": "上海市-直辖区-黄浦区" + }, + { + "areaCode": 310104000000, + "name": "徐汇区", + "parentCode": 310100000000, + "mergerName": "上海市-直辖区-徐汇区" + }, + { + "areaCode": 310105000000, + "name": "长宁区", + "parentCode": 310100000000, + "mergerName": "上海市-直辖区-长宁区" + }, + { + "areaCode": 310106000000, + "name": "静安区", + "parentCode": 310100000000, + "mergerName": "上海市-直辖区-静安区" + }, + { + "areaCode": 310107000000, + "name": "普陀区", + "parentCode": 310100000000, + "mergerName": "上海市-直辖区-普陀区" + }, + { + "areaCode": 310109000000, + "name": "虹口区", + "parentCode": 310100000000, + "mergerName": "上海市-直辖区-虹口区" + }, + { + "areaCode": 310110000000, + "name": "杨浦区", + "parentCode": 310100000000, + "mergerName": "上海市-直辖区-杨浦区" + }, + { + "areaCode": 310112000000, + "name": "闵行区", + "parentCode": 310100000000, + "mergerName": "上海市-直辖区-闵行区" + }, + { + "areaCode": 310113000000, + "name": "宝山区", + "parentCode": 310100000000, + "mergerName": "上海市-直辖区-宝山区" + }, + { + "areaCode": 310114000000, + "name": "嘉定区", + "parentCode": 310100000000, + "mergerName": "上海市-直辖区-嘉定区" + }, + { + "areaCode": 310115000000, + "name": "浦东新区", + "parentCode": 310100000000, + "mergerName": "上海市-直辖区-浦东新区" + }, + { + "areaCode": 310116000000, + "name": "金山区", + "parentCode": 310100000000, + "mergerName": "上海市-直辖区-金山区" + }, + { + "areaCode": 310117000000, + "name": "松江区", + "parentCode": 310100000000, + "mergerName": "上海市-直辖区-松江区" + }, + { + "areaCode": 310118000000, + "name": "青浦区", + "parentCode": 310100000000, + "mergerName": "上海市-直辖区-青浦区" + }, + { + "areaCode": 310120000000, + "name": "奉贤区", + "parentCode": 310100000000, + "mergerName": "上海市-直辖区-奉贤区" + }, + { + "areaCode": 310151000000, + "name": "崇明区", + "parentCode": 310100000000, + "mergerName": "上海市-直辖区-崇明区" + } + ], + "areaCode": 310100000000, + "name": "直辖区", + "parentCode": 310000000000, + "mergerName": "上海市-直辖区" + } + ], + "areaCode": 310000000000, + "name": "上海市", + "parentCode": 0, + "mergerName": "-上海市" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 320101000000, + "name": "市辖区", + "parentCode": 320100000000, + "mergerName": "江苏省-南京市-市辖区" + }, + { + "areaCode": 320102000000, + "name": "玄武区", + "parentCode": 320100000000, + "mergerName": "江苏省-南京市-玄武区" + }, + { + "areaCode": 320104000000, + "name": "秦淮区", + "parentCode": 320100000000, + "mergerName": "江苏省-南京市-秦淮区" + }, + { + "areaCode": 320105000000, + "name": "建邺区", + "parentCode": 320100000000, + "mergerName": "江苏省-南京市-建邺区" + }, + { + "areaCode": 320106000000, + "name": "鼓楼区", + "parentCode": 320100000000, + "mergerName": "江苏省-南京市-鼓楼区" + }, + { + "areaCode": 320111000000, + "name": "浦口区", + "parentCode": 320100000000, + "mergerName": "江苏省-南京市-浦口区" + }, + { + "areaCode": 320113000000, + "name": "栖霞区", + "parentCode": 320100000000, + "mergerName": "江苏省-南京市-栖霞区" + }, + { + "areaCode": 320114000000, + "name": "雨花台区", + "parentCode": 320100000000, + "mergerName": "江苏省-南京市-雨花台区" + }, + { + "areaCode": 320115000000, + "name": "江宁区", + "parentCode": 320100000000, + "mergerName": "江苏省-南京市-江宁区" + }, + { + "areaCode": 320116000000, + "name": "六合区", + "parentCode": 320100000000, + "mergerName": "江苏省-南京市-六合区" + }, + { + "areaCode": 320117000000, + "name": "溧水区", + "parentCode": 320100000000, + "mergerName": "江苏省-南京市-溧水区" + }, + { + "areaCode": 320118000000, + "name": "高淳区", + "parentCode": 320100000000, + "mergerName": "江苏省-南京市-高淳区" + } + ], + "areaCode": 320100000000, + "name": "南京市", + "parentCode": 320000000000, + "mergerName": "江苏省-南京市" + }, + { + "children": [ + { + "areaCode": 320201000000, + "name": "市辖区", + "parentCode": 320200000000, + "mergerName": "江苏省-无锡市-市辖区" + }, + { + "areaCode": 320205000000, + "name": "锡山区", + "parentCode": 320200000000, + "mergerName": "江苏省-无锡市-锡山区" + }, + { + "areaCode": 320206000000, + "name": "惠山区", + "parentCode": 320200000000, + "mergerName": "江苏省-无锡市-惠山区" + }, + { + "areaCode": 320211000000, + "name": "滨湖区", + "parentCode": 320200000000, + "mergerName": "江苏省-无锡市-滨湖区" + }, + { + "areaCode": 320213000000, + "name": "梁溪区", + "parentCode": 320200000000, + "mergerName": "江苏省-无锡市-梁溪区" + }, + { + "areaCode": 320214000000, + "name": "新吴区", + "parentCode": 320200000000, + "mergerName": "江苏省-无锡市-新吴区" + }, + { + "areaCode": 320281000000, + "name": "江阴市", + "parentCode": 320200000000, + "mergerName": "江苏省-无锡市-江阴市" + }, + { + "areaCode": 320282000000, + "name": "宜兴市", + "parentCode": 320200000000, + "mergerName": "江苏省-无锡市-宜兴市" + } + ], + "areaCode": 320200000000, + "name": "无锡市", + "parentCode": 320000000000, + "mergerName": "江苏省-无锡市" + }, + { + "children": [ + { + "areaCode": 320301000000, + "name": "市辖区", + "parentCode": 320300000000, + "mergerName": "江苏省-徐州市-市辖区" + }, + { + "areaCode": 320302000000, + "name": "鼓楼区", + "parentCode": 320300000000, + "mergerName": "江苏省-徐州市-鼓楼区" + }, + { + "areaCode": 320303000000, + "name": "云龙区", + "parentCode": 320300000000, + "mergerName": "江苏省-徐州市-云龙区" + }, + { + "areaCode": 320305000000, + "name": "贾汪区", + "parentCode": 320300000000, + "mergerName": "江苏省-徐州市-贾汪区" + }, + { + "areaCode": 320311000000, + "name": "泉山区", + "parentCode": 320300000000, + "mergerName": "江苏省-徐州市-泉山区" + }, + { + "areaCode": 320312000000, + "name": "铜山区", + "parentCode": 320300000000, + "mergerName": "江苏省-徐州市-铜山区" + }, + { "areaCode": 320321000000, "name": "丰县", "parentCode": 320300000000, "mergerName": "江苏省-徐州市-丰县" }, + { "areaCode": 320322000000, "name": "沛县", "parentCode": 320300000000, "mergerName": "江苏省-徐州市-沛县" }, + { + "areaCode": 320324000000, + "name": "睢宁县", + "parentCode": 320300000000, + "mergerName": "江苏省-徐州市-睢宁县" + }, + { + "areaCode": 320371000000, + "name": "徐州经济技术开发区", + "parentCode": 320300000000, + "mergerName": "江苏省-徐州市-徐州经济技术开发区" + }, + { + "areaCode": 320381000000, + "name": "新沂市", + "parentCode": 320300000000, + "mergerName": "江苏省-徐州市-新沂市" + }, + { + "areaCode": 320382000000, + "name": "邳州市", + "parentCode": 320300000000, + "mergerName": "江苏省-徐州市-邳州市" + } + ], + "areaCode": 320300000000, + "name": "徐州市", + "parentCode": 320000000000, + "mergerName": "江苏省-徐州市" + }, + { + "children": [ + { + "areaCode": 320401000000, + "name": "市辖区", + "parentCode": 320400000000, + "mergerName": "江苏省-常州市-市辖区" + }, + { + "areaCode": 320402000000, + "name": "天宁区", + "parentCode": 320400000000, + "mergerName": "江苏省-常州市-天宁区" + }, + { + "areaCode": 320404000000, + "name": "钟楼区", + "parentCode": 320400000000, + "mergerName": "江苏省-常州市-钟楼区" + }, + { + "areaCode": 320411000000, + "name": "新北区", + "parentCode": 320400000000, + "mergerName": "江苏省-常州市-新北区" + }, + { + "areaCode": 320412000000, + "name": "武进区", + "parentCode": 320400000000, + "mergerName": "江苏省-常州市-武进区" + }, + { + "areaCode": 320413000000, + "name": "金坛区", + "parentCode": 320400000000, + "mergerName": "江苏省-常州市-金坛区" + }, + { + "areaCode": 320481000000, + "name": "溧阳市", + "parentCode": 320400000000, + "mergerName": "江苏省-常州市-溧阳市" + } + ], + "areaCode": 320400000000, + "name": "常州市", + "parentCode": 320000000000, + "mergerName": "江苏省-常州市" + }, + { + "children": [ + { + "areaCode": 320501000000, + "name": "市辖区", + "parentCode": 320500000000, + "mergerName": "江苏省-苏州市-市辖区" + }, + { + "areaCode": 320505000000, + "name": "虎丘区", + "parentCode": 320500000000, + "mergerName": "江苏省-苏州市-虎丘区" + }, + { + "areaCode": 320506000000, + "name": "吴中区", + "parentCode": 320500000000, + "mergerName": "江苏省-苏州市-吴中区" + }, + { + "areaCode": 320507000000, + "name": "相城区", + "parentCode": 320500000000, + "mergerName": "江苏省-苏州市-相城区" + }, + { + "areaCode": 320508000000, + "name": "姑苏区", + "parentCode": 320500000000, + "mergerName": "江苏省-苏州市-姑苏区" + }, + { + "areaCode": 320509000000, + "name": "吴江区", + "parentCode": 320500000000, + "mergerName": "江苏省-苏州市-吴江区" + }, + { + "areaCode": 320571000000, + "name": "苏州工业园区", + "parentCode": 320500000000, + "mergerName": "江苏省-苏州市-苏州工业园区" + }, + { + "areaCode": 320581000000, + "name": "常熟市", + "parentCode": 320500000000, + "mergerName": "江苏省-苏州市-常熟市" + }, + { + "areaCode": 320582000000, + "name": "张家港市", + "parentCode": 320500000000, + "mergerName": "江苏省-苏州市-张家港市" + }, + { + "areaCode": 320583000000, + "name": "昆山市", + "parentCode": 320500000000, + "mergerName": "江苏省-苏州市-昆山市" + }, + { + "areaCode": 320585000000, + "name": "太仓市", + "parentCode": 320500000000, + "mergerName": "江苏省-苏州市-太仓市" + } + ], + "areaCode": 320500000000, + "name": "苏州市", + "parentCode": 320000000000, + "mergerName": "江苏省-苏州市" + }, + { + "children": [ + { + "areaCode": 320601000000, + "name": "市辖区", + "parentCode": 320600000000, + "mergerName": "江苏省-南通市-市辖区" + }, + { + "areaCode": 320602000000, + "name": "崇川区", + "parentCode": 320600000000, + "mergerName": "江苏省-南通市-崇川区" + }, + { + "areaCode": 320611000000, + "name": "港闸区", + "parentCode": 320600000000, + "mergerName": "江苏省-南通市-港闸区" + }, + { + "areaCode": 320612000000, + "name": "通州区", + "parentCode": 320600000000, + "mergerName": "江苏省-南通市-通州区" + }, + { + "areaCode": 320623000000, + "name": "如东县", + "parentCode": 320600000000, + "mergerName": "江苏省-南通市-如东县" + }, + { + "areaCode": 320671000000, + "name": "南通经济技术开发区", + "parentCode": 320600000000, + "mergerName": "江苏省-南通市-南通经济技术开发区" + }, + { + "areaCode": 320681000000, + "name": "启东市", + "parentCode": 320600000000, + "mergerName": "江苏省-南通市-启东市" + }, + { + "areaCode": 320682000000, + "name": "如皋市", + "parentCode": 320600000000, + "mergerName": "江苏省-南通市-如皋市" + }, + { + "areaCode": 320684000000, + "name": "海门市", + "parentCode": 320600000000, + "mergerName": "江苏省-南通市-海门市" + }, + { + "areaCode": 320685000000, + "name": "海安市", + "parentCode": 320600000000, + "mergerName": "江苏省-南通市-海安市" + } + ], + "areaCode": 320600000000, + "name": "南通市", + "parentCode": 320000000000, + "mergerName": "江苏省-南通市" + }, + { + "children": [ + { + "areaCode": 320701000000, + "name": "市辖区", + "parentCode": 320700000000, + "mergerName": "江苏省-连云港市-市辖区" + }, + { + "areaCode": 320703000000, + "name": "连云区", + "parentCode": 320700000000, + "mergerName": "江苏省-连云港市-连云区" + }, + { + "areaCode": 320706000000, + "name": "海州区", + "parentCode": 320700000000, + "mergerName": "江苏省-连云港市-海州区" + }, + { + "areaCode": 320707000000, + "name": "赣榆区", + "parentCode": 320700000000, + "mergerName": "江苏省-连云港市-赣榆区" + }, + { + "areaCode": 320722000000, + "name": "东海县", + "parentCode": 320700000000, + "mergerName": "江苏省-连云港市-东海县" + }, + { + "areaCode": 320723000000, + "name": "灌云县", + "parentCode": 320700000000, + "mergerName": "江苏省-连云港市-灌云县" + }, + { + "areaCode": 320724000000, + "name": "灌南县", + "parentCode": 320700000000, + "mergerName": "江苏省-连云港市-灌南县" + }, + { + "areaCode": 320771000000, + "name": "连云港经济技术开发区", + "parentCode": 320700000000, + "mergerName": "江苏省-连云港市-连云港经济技术开发区" + }, + { + "areaCode": 320772000000, + "name": "连云港高新技术产业开发区", + "parentCode": 320700000000, + "mergerName": "江苏省-连云港市-连云港高新技术产业开发区" + } + ], + "areaCode": 320700000000, + "name": "连云港市", + "parentCode": 320000000000, + "mergerName": "江苏省-连云港市" + }, + { + "children": [ + { + "areaCode": 320801000000, + "name": "市辖区", + "parentCode": 320800000000, + "mergerName": "江苏省-淮安市-市辖区" + }, + { + "areaCode": 320803000000, + "name": "淮安区", + "parentCode": 320800000000, + "mergerName": "江苏省-淮安市-淮安区" + }, + { + "areaCode": 320804000000, + "name": "淮阴区", + "parentCode": 320800000000, + "mergerName": "江苏省-淮安市-淮阴区" + }, + { + "areaCode": 320812000000, + "name": "清江浦区", + "parentCode": 320800000000, + "mergerName": "江苏省-淮安市-清江浦区" + }, + { + "areaCode": 320813000000, + "name": "洪泽区", + "parentCode": 320800000000, + "mergerName": "江苏省-淮安市-洪泽区" + }, + { + "areaCode": 320826000000, + "name": "涟水县", + "parentCode": 320800000000, + "mergerName": "江苏省-淮安市-涟水县" + }, + { + "areaCode": 320830000000, + "name": "盱眙县", + "parentCode": 320800000000, + "mergerName": "江苏省-淮安市-盱眙县" + }, + { + "areaCode": 320831000000, + "name": "金湖县", + "parentCode": 320800000000, + "mergerName": "江苏省-淮安市-金湖县" + }, + { + "areaCode": 320871000000, + "name": "淮安经济技术开发区", + "parentCode": 320800000000, + "mergerName": "江苏省-淮安市-淮安经济技术开发区" + } + ], + "areaCode": 320800000000, + "name": "淮安市", + "parentCode": 320000000000, + "mergerName": "江苏省-淮安市" + }, + { + "children": [ + { + "areaCode": 320901000000, + "name": "市辖区", + "parentCode": 320900000000, + "mergerName": "江苏省-盐城市-市辖区" + }, + { + "areaCode": 320902000000, + "name": "亭湖区", + "parentCode": 320900000000, + "mergerName": "江苏省-盐城市-亭湖区" + }, + { + "areaCode": 320903000000, + "name": "盐都区", + "parentCode": 320900000000, + "mergerName": "江苏省-盐城市-盐都区" + }, + { + "areaCode": 320904000000, + "name": "大丰区", + "parentCode": 320900000000, + "mergerName": "江苏省-盐城市-大丰区" + }, + { + "areaCode": 320921000000, + "name": "响水县", + "parentCode": 320900000000, + "mergerName": "江苏省-盐城市-响水县" + }, + { + "areaCode": 320922000000, + "name": "滨海县", + "parentCode": 320900000000, + "mergerName": "江苏省-盐城市-滨海县" + }, + { + "areaCode": 320923000000, + "name": "阜宁县", + "parentCode": 320900000000, + "mergerName": "江苏省-盐城市-阜宁县" + }, + { + "areaCode": 320924000000, + "name": "射阳县", + "parentCode": 320900000000, + "mergerName": "江苏省-盐城市-射阳县" + }, + { + "areaCode": 320925000000, + "name": "建湖县", + "parentCode": 320900000000, + "mergerName": "江苏省-盐城市-建湖县" + }, + { + "areaCode": 320971000000, + "name": "盐城经济技术开发区", + "parentCode": 320900000000, + "mergerName": "江苏省-盐城市-盐城经济技术开发区" + }, + { + "areaCode": 320981000000, + "name": "东台市", + "parentCode": 320900000000, + "mergerName": "江苏省-盐城市-东台市" + } + ], + "areaCode": 320900000000, + "name": "盐城市", + "parentCode": 320000000000, + "mergerName": "江苏省-盐城市" + }, + { + "children": [ + { + "areaCode": 321001000000, + "name": "市辖区", + "parentCode": 321000000000, + "mergerName": "江苏省-扬州市-市辖区" + }, + { + "areaCode": 321002000000, + "name": "广陵区", + "parentCode": 321000000000, + "mergerName": "江苏省-扬州市-广陵区" + }, + { + "areaCode": 321003000000, + "name": "邗江区", + "parentCode": 321000000000, + "mergerName": "江苏省-扬州市-邗江区" + }, + { + "areaCode": 321012000000, + "name": "江都区", + "parentCode": 321000000000, + "mergerName": "江苏省-扬州市-江都区" + }, + { + "areaCode": 321023000000, + "name": "宝应县", + "parentCode": 321000000000, + "mergerName": "江苏省-扬州市-宝应县" + }, + { + "areaCode": 321071000000, + "name": "扬州经济技术开发区", + "parentCode": 321000000000, + "mergerName": "江苏省-扬州市-扬州经济技术开发区" + }, + { + "areaCode": 321081000000, + "name": "仪征市", + "parentCode": 321000000000, + "mergerName": "江苏省-扬州市-仪征市" + }, + { + "areaCode": 321084000000, + "name": "高邮市", + "parentCode": 321000000000, + "mergerName": "江苏省-扬州市-高邮市" + } + ], + "areaCode": 321000000000, + "name": "扬州市", + "parentCode": 320000000000, + "mergerName": "江苏省-扬州市" + }, + { + "children": [ + { + "areaCode": 321101000000, + "name": "市辖区", + "parentCode": 321100000000, + "mergerName": "江苏省-镇江市-市辖区" + }, + { + "areaCode": 321102000000, + "name": "京口区", + "parentCode": 321100000000, + "mergerName": "江苏省-镇江市-京口区" + }, + { + "areaCode": 321111000000, + "name": "润州区", + "parentCode": 321100000000, + "mergerName": "江苏省-镇江市-润州区" + }, + { + "areaCode": 321112000000, + "name": "丹徒区", + "parentCode": 321100000000, + "mergerName": "江苏省-镇江市-丹徒区" + }, + { + "areaCode": 321171000000, + "name": "镇江新区", + "parentCode": 321100000000, + "mergerName": "江苏省-镇江市-镇江新区" + }, + { + "areaCode": 321181000000, + "name": "丹阳市", + "parentCode": 321100000000, + "mergerName": "江苏省-镇江市-丹阳市" + }, + { + "areaCode": 321182000000, + "name": "扬中市", + "parentCode": 321100000000, + "mergerName": "江苏省-镇江市-扬中市" + }, + { + "areaCode": 321183000000, + "name": "句容市", + "parentCode": 321100000000, + "mergerName": "江苏省-镇江市-句容市" + } + ], + "areaCode": 321100000000, + "name": "镇江市", + "parentCode": 320000000000, + "mergerName": "江苏省-镇江市" + }, + { + "children": [ + { + "areaCode": 321201000000, + "name": "市辖区", + "parentCode": 321200000000, + "mergerName": "江苏省-泰州市-市辖区" + }, + { + "areaCode": 321202000000, + "name": "海陵区", + "parentCode": 321200000000, + "mergerName": "江苏省-泰州市-海陵区" + }, + { + "areaCode": 321203000000, + "name": "高港区", + "parentCode": 321200000000, + "mergerName": "江苏省-泰州市-高港区" + }, + { + "areaCode": 321204000000, + "name": "姜堰区", + "parentCode": 321200000000, + "mergerName": "江苏省-泰州市-姜堰区" + }, + { + "areaCode": 321271000000, + "name": "泰州医药高新技术产业开发区", + "parentCode": 321200000000, + "mergerName": "江苏省-泰州市-泰州医药高新技术产业开发区" + }, + { + "areaCode": 321281000000, + "name": "兴化市", + "parentCode": 321200000000, + "mergerName": "江苏省-泰州市-兴化市" + }, + { + "areaCode": 321282000000, + "name": "靖江市", + "parentCode": 321200000000, + "mergerName": "江苏省-泰州市-靖江市" + }, + { + "areaCode": 321283000000, + "name": "泰兴市", + "parentCode": 321200000000, + "mergerName": "江苏省-泰州市-泰兴市" + } + ], + "areaCode": 321200000000, + "name": "泰州市", + "parentCode": 320000000000, + "mergerName": "江苏省-泰州市" + }, + { + "children": [ + { + "areaCode": 321301000000, + "name": "市辖区", + "parentCode": 321300000000, + "mergerName": "江苏省-宿迁市-市辖区" + }, + { + "areaCode": 321302000000, + "name": "宿城区", + "parentCode": 321300000000, + "mergerName": "江苏省-宿迁市-宿城区" + }, + { + "areaCode": 321311000000, + "name": "宿豫区", + "parentCode": 321300000000, + "mergerName": "江苏省-宿迁市-宿豫区" + }, + { + "areaCode": 321322000000, + "name": "沭阳县", + "parentCode": 321300000000, + "mergerName": "江苏省-宿迁市-沭阳县" + }, + { + "areaCode": 321323000000, + "name": "泗阳县", + "parentCode": 321300000000, + "mergerName": "江苏省-宿迁市-泗阳县" + }, + { + "areaCode": 321324000000, + "name": "泗洪县", + "parentCode": 321300000000, + "mergerName": "江苏省-宿迁市-泗洪县" + }, + { + "areaCode": 321371000000, + "name": "宿迁经济技术开发区", + "parentCode": 321300000000, + "mergerName": "江苏省-宿迁市-宿迁经济技术开发区" + } + ], + "areaCode": 321300000000, + "name": "宿迁市", + "parentCode": 320000000000, + "mergerName": "江苏省-宿迁市" + } + ], + "areaCode": 320000000000, + "name": "江苏省", + "parentCode": 0, + "mergerName": "-江苏省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 330101000000, + "name": "市辖区", + "parentCode": 330100000000, + "mergerName": "浙江省-杭州市-市辖区" + }, + { + "areaCode": 330102000000, + "name": "上城区", + "parentCode": 330100000000, + "mergerName": "浙江省-杭州市-上城区" + }, + { + "areaCode": 330103000000, + "name": "下城区", + "parentCode": 330100000000, + "mergerName": "浙江省-杭州市-下城区" + }, + { + "areaCode": 330104000000, + "name": "江干区", + "parentCode": 330100000000, + "mergerName": "浙江省-杭州市-江干区" + }, + { + "areaCode": 330105000000, + "name": "拱墅区", + "parentCode": 330100000000, + "mergerName": "浙江省-杭州市-拱墅区" + }, + { + "areaCode": 330106000000, + "name": "西湖区", + "parentCode": 330100000000, + "mergerName": "浙江省-杭州市-西湖区" + }, + { + "areaCode": 330108000000, + "name": "滨江区", + "parentCode": 330100000000, + "mergerName": "浙江省-杭州市-滨江区" + }, + { + "areaCode": 330109000000, + "name": "萧山区", + "parentCode": 330100000000, + "mergerName": "浙江省-杭州市-萧山区" + }, + { + "areaCode": 330110000000, + "name": "余杭区", + "parentCode": 330100000000, + "mergerName": "浙江省-杭州市-余杭区" + }, + { + "areaCode": 330111000000, + "name": "富阳区", + "parentCode": 330100000000, + "mergerName": "浙江省-杭州市-富阳区" + }, + { + "areaCode": 330112000000, + "name": "临安区", + "parentCode": 330100000000, + "mergerName": "浙江省-杭州市-临安区" + }, + { + "areaCode": 330122000000, + "name": "桐庐县", + "parentCode": 330100000000, + "mergerName": "浙江省-杭州市-桐庐县" + }, + { + "areaCode": 330127000000, + "name": "淳安县", + "parentCode": 330100000000, + "mergerName": "浙江省-杭州市-淳安县" + }, + { + "areaCode": 330182000000, + "name": "建德市", + "parentCode": 330100000000, + "mergerName": "浙江省-杭州市-建德市" + } + ], + "areaCode": 330100000000, + "name": "杭州市", + "parentCode": 330000000000, + "mergerName": "浙江省-杭州市" + }, + { + "children": [ + { + "areaCode": 330201000000, + "name": "市辖区", + "parentCode": 330200000000, + "mergerName": "浙江省-宁波市-市辖区" + }, + { + "areaCode": 330203000000, + "name": "海曙区", + "parentCode": 330200000000, + "mergerName": "浙江省-宁波市-海曙区" + }, + { + "areaCode": 330205000000, + "name": "江北区", + "parentCode": 330200000000, + "mergerName": "浙江省-宁波市-江北区" + }, + { + "areaCode": 330206000000, + "name": "北仑区", + "parentCode": 330200000000, + "mergerName": "浙江省-宁波市-北仑区" + }, + { + "areaCode": 330211000000, + "name": "镇海区", + "parentCode": 330200000000, + "mergerName": "浙江省-宁波市-镇海区" + }, + { + "areaCode": 330212000000, + "name": "鄞州区", + "parentCode": 330200000000, + "mergerName": "浙江省-宁波市-鄞州区" + }, + { + "areaCode": 330213000000, + "name": "奉化区", + "parentCode": 330200000000, + "mergerName": "浙江省-宁波市-奉化区" + }, + { + "areaCode": 330225000000, + "name": "象山县", + "parentCode": 330200000000, + "mergerName": "浙江省-宁波市-象山县" + }, + { + "areaCode": 330226000000, + "name": "宁海县", + "parentCode": 330200000000, + "mergerName": "浙江省-宁波市-宁海县" + }, + { + "areaCode": 330281000000, + "name": "余姚市", + "parentCode": 330200000000, + "mergerName": "浙江省-宁波市-余姚市" + }, + { + "areaCode": 330282000000, + "name": "慈溪市", + "parentCode": 330200000000, + "mergerName": "浙江省-宁波市-慈溪市" + } + ], + "areaCode": 330200000000, + "name": "宁波市", + "parentCode": 330000000000, + "mergerName": "浙江省-宁波市" + }, + { + "children": [ + { + "areaCode": 330301000000, + "name": "市辖区", + "parentCode": 330300000000, + "mergerName": "浙江省-温州市-市辖区" + }, + { + "areaCode": 330302000000, + "name": "鹿城区", + "parentCode": 330300000000, + "mergerName": "浙江省-温州市-鹿城区" + }, + { + "areaCode": 330303000000, + "name": "龙湾区", + "parentCode": 330300000000, + "mergerName": "浙江省-温州市-龙湾区" + }, + { + "areaCode": 330304000000, + "name": "瓯海区", + "parentCode": 330300000000, + "mergerName": "浙江省-温州市-瓯海区" + }, + { + "areaCode": 330305000000, + "name": "洞头区", + "parentCode": 330300000000, + "mergerName": "浙江省-温州市-洞头区" + }, + { + "areaCode": 330324000000, + "name": "永嘉县", + "parentCode": 330300000000, + "mergerName": "浙江省-温州市-永嘉县" + }, + { + "areaCode": 330326000000, + "name": "平阳县", + "parentCode": 330300000000, + "mergerName": "浙江省-温州市-平阳县" + }, + { + "areaCode": 330327000000, + "name": "苍南县", + "parentCode": 330300000000, + "mergerName": "浙江省-温州市-苍南县" + }, + { + "areaCode": 330328000000, + "name": "文成县", + "parentCode": 330300000000, + "mergerName": "浙江省-温州市-文成县" + }, + { + "areaCode": 330329000000, + "name": "泰顺县", + "parentCode": 330300000000, + "mergerName": "浙江省-温州市-泰顺县" + }, + { + "areaCode": 330371000000, + "name": "温州经济技术开发区", + "parentCode": 330300000000, + "mergerName": "浙江省-温州市-温州经济技术开发区" + }, + { + "areaCode": 330381000000, + "name": "瑞安市", + "parentCode": 330300000000, + "mergerName": "浙江省-温州市-瑞安市" + }, + { + "areaCode": 330382000000, + "name": "乐清市", + "parentCode": 330300000000, + "mergerName": "浙江省-温州市-乐清市" + } + ], + "areaCode": 330300000000, + "name": "温州市", + "parentCode": 330000000000, + "mergerName": "浙江省-温州市" + }, + { + "children": [ + { + "areaCode": 330401000000, + "name": "市辖区", + "parentCode": 330400000000, + "mergerName": "浙江省-嘉兴市-市辖区" + }, + { + "areaCode": 330402000000, + "name": "南湖区", + "parentCode": 330400000000, + "mergerName": "浙江省-嘉兴市-南湖区" + }, + { + "areaCode": 330411000000, + "name": "秀洲区", + "parentCode": 330400000000, + "mergerName": "浙江省-嘉兴市-秀洲区" + }, + { + "areaCode": 330421000000, + "name": "嘉善县", + "parentCode": 330400000000, + "mergerName": "浙江省-嘉兴市-嘉善县" + }, + { + "areaCode": 330424000000, + "name": "海盐县", + "parentCode": 330400000000, + "mergerName": "浙江省-嘉兴市-海盐县" + }, + { + "areaCode": 330481000000, + "name": "海宁市", + "parentCode": 330400000000, + "mergerName": "浙江省-嘉兴市-海宁市" + }, + { + "areaCode": 330482000000, + "name": "平湖市", + "parentCode": 330400000000, + "mergerName": "浙江省-嘉兴市-平湖市" + }, + { + "areaCode": 330483000000, + "name": "桐乡市", + "parentCode": 330400000000, + "mergerName": "浙江省-嘉兴市-桐乡市" + } + ], + "areaCode": 330400000000, + "name": "嘉兴市", + "parentCode": 330000000000, + "mergerName": "浙江省-嘉兴市" + }, + { + "children": [ + { + "areaCode": 330501000000, + "name": "市辖区", + "parentCode": 330500000000, + "mergerName": "浙江省-湖州市-市辖区" + }, + { + "areaCode": 330502000000, + "name": "吴兴区", + "parentCode": 330500000000, + "mergerName": "浙江省-湖州市-吴兴区" + }, + { + "areaCode": 330503000000, + "name": "南浔区", + "parentCode": 330500000000, + "mergerName": "浙江省-湖州市-南浔区" + }, + { + "areaCode": 330521000000, + "name": "德清县", + "parentCode": 330500000000, + "mergerName": "浙江省-湖州市-德清县" + }, + { + "areaCode": 330522000000, + "name": "长兴县", + "parentCode": 330500000000, + "mergerName": "浙江省-湖州市-长兴县" + }, + { + "areaCode": 330523000000, + "name": "安吉县", + "parentCode": 330500000000, + "mergerName": "浙江省-湖州市-安吉县" + } + ], + "areaCode": 330500000000, + "name": "湖州市", + "parentCode": 330000000000, + "mergerName": "浙江省-湖州市" + }, + { + "children": [ + { + "areaCode": 330601000000, + "name": "市辖区", + "parentCode": 330600000000, + "mergerName": "浙江省-绍兴市-市辖区" + }, + { + "areaCode": 330602000000, + "name": "越城区", + "parentCode": 330600000000, + "mergerName": "浙江省-绍兴市-越城区" + }, + { + "areaCode": 330603000000, + "name": "柯桥区", + "parentCode": 330600000000, + "mergerName": "浙江省-绍兴市-柯桥区" + }, + { + "areaCode": 330604000000, + "name": "上虞区", + "parentCode": 330600000000, + "mergerName": "浙江省-绍兴市-上虞区" + }, + { + "areaCode": 330624000000, + "name": "新昌县", + "parentCode": 330600000000, + "mergerName": "浙江省-绍兴市-新昌县" + }, + { + "areaCode": 330681000000, + "name": "诸暨市", + "parentCode": 330600000000, + "mergerName": "浙江省-绍兴市-诸暨市" + }, + { + "areaCode": 330683000000, + "name": "嵊州市", + "parentCode": 330600000000, + "mergerName": "浙江省-绍兴市-嵊州市" + } + ], + "areaCode": 330600000000, + "name": "绍兴市", + "parentCode": 330000000000, + "mergerName": "浙江省-绍兴市" + }, + { + "children": [ + { + "areaCode": 330701000000, + "name": "市辖区", + "parentCode": 330700000000, + "mergerName": "浙江省-金华市-市辖区" + }, + { + "areaCode": 330702000000, + "name": "婺城区", + "parentCode": 330700000000, + "mergerName": "浙江省-金华市-婺城区" + }, + { + "areaCode": 330703000000, + "name": "金东区", + "parentCode": 330700000000, + "mergerName": "浙江省-金华市-金东区" + }, + { + "areaCode": 330723000000, + "name": "武义县", + "parentCode": 330700000000, + "mergerName": "浙江省-金华市-武义县" + }, + { + "areaCode": 330726000000, + "name": "浦江县", + "parentCode": 330700000000, + "mergerName": "浙江省-金华市-浦江县" + }, + { + "areaCode": 330727000000, + "name": "磐安县", + "parentCode": 330700000000, + "mergerName": "浙江省-金华市-磐安县" + }, + { + "areaCode": 330781000000, + "name": "兰溪市", + "parentCode": 330700000000, + "mergerName": "浙江省-金华市-兰溪市" + }, + { + "areaCode": 330782000000, + "name": "义乌市", + "parentCode": 330700000000, + "mergerName": "浙江省-金华市-义乌市" + }, + { + "areaCode": 330783000000, + "name": "东阳市", + "parentCode": 330700000000, + "mergerName": "浙江省-金华市-东阳市" + }, + { + "areaCode": 330784000000, + "name": "永康市", + "parentCode": 330700000000, + "mergerName": "浙江省-金华市-永康市" + } + ], + "areaCode": 330700000000, + "name": "金华市", + "parentCode": 330000000000, + "mergerName": "浙江省-金华市" + }, + { + "children": [ + { + "areaCode": 330801000000, + "name": "市辖区", + "parentCode": 330800000000, + "mergerName": "浙江省-衢州市-市辖区" + }, + { + "areaCode": 330802000000, + "name": "柯城区", + "parentCode": 330800000000, + "mergerName": "浙江省-衢州市-柯城区" + }, + { + "areaCode": 330803000000, + "name": "衢江区", + "parentCode": 330800000000, + "mergerName": "浙江省-衢州市-衢江区" + }, + { + "areaCode": 330822000000, + "name": "常山县", + "parentCode": 330800000000, + "mergerName": "浙江省-衢州市-常山县" + }, + { + "areaCode": 330824000000, + "name": "开化县", + "parentCode": 330800000000, + "mergerName": "浙江省-衢州市-开化县" + }, + { + "areaCode": 330825000000, + "name": "龙游县", + "parentCode": 330800000000, + "mergerName": "浙江省-衢州市-龙游县" + }, + { + "areaCode": 330881000000, + "name": "江山市", + "parentCode": 330800000000, + "mergerName": "浙江省-衢州市-江山市" + } + ], + "areaCode": 330800000000, + "name": "衢州市", + "parentCode": 330000000000, + "mergerName": "浙江省-衢州市" + }, + { + "children": [ + { + "areaCode": 330901000000, + "name": "市辖区", + "parentCode": 330900000000, + "mergerName": "浙江省-舟山市-市辖区" + }, + { + "areaCode": 330902000000, + "name": "定海区", + "parentCode": 330900000000, + "mergerName": "浙江省-舟山市-定海区" + }, + { + "areaCode": 330903000000, + "name": "普陀区", + "parentCode": 330900000000, + "mergerName": "浙江省-舟山市-普陀区" + }, + { + "areaCode": 330921000000, + "name": "岱山县", + "parentCode": 330900000000, + "mergerName": "浙江省-舟山市-岱山县" + }, + { + "areaCode": 330922000000, + "name": "嵊泗县", + "parentCode": 330900000000, + "mergerName": "浙江省-舟山市-嵊泗县" + } + ], + "areaCode": 330900000000, + "name": "舟山市", + "parentCode": 330000000000, + "mergerName": "浙江省-舟山市" + }, + { + "children": [ + { + "areaCode": 331001000000, + "name": "市辖区", + "parentCode": 331000000000, + "mergerName": "浙江省-台州市-市辖区" + }, + { + "areaCode": 331002000000, + "name": "椒江区", + "parentCode": 331000000000, + "mergerName": "浙江省-台州市-椒江区" + }, + { + "areaCode": 331003000000, + "name": "黄岩区", + "parentCode": 331000000000, + "mergerName": "浙江省-台州市-黄岩区" + }, + { + "areaCode": 331004000000, + "name": "路桥区", + "parentCode": 331000000000, + "mergerName": "浙江省-台州市-路桥区" + }, + { + "areaCode": 331022000000, + "name": "三门县", + "parentCode": 331000000000, + "mergerName": "浙江省-台州市-三门县" + }, + { + "areaCode": 331023000000, + "name": "天台县", + "parentCode": 331000000000, + "mergerName": "浙江省-台州市-天台县" + }, + { + "areaCode": 331024000000, + "name": "仙居县", + "parentCode": 331000000000, + "mergerName": "浙江省-台州市-仙居县" + }, + { + "areaCode": 331081000000, + "name": "温岭市", + "parentCode": 331000000000, + "mergerName": "浙江省-台州市-温岭市" + }, + { + "areaCode": 331082000000, + "name": "临海市", + "parentCode": 331000000000, + "mergerName": "浙江省-台州市-临海市" + }, + { + "areaCode": 331083000000, + "name": "玉环市", + "parentCode": 331000000000, + "mergerName": "浙江省-台州市-玉环市" + } + ], + "areaCode": 331000000000, + "name": "台州市", + "parentCode": 330000000000, + "mergerName": "浙江省-台州市" + }, + { + "children": [ + { + "areaCode": 331101000000, + "name": "市辖区", + "parentCode": 331100000000, + "mergerName": "浙江省-丽水市-市辖区" + }, + { + "areaCode": 331102000000, + "name": "莲都区", + "parentCode": 331100000000, + "mergerName": "浙江省-丽水市-莲都区" + }, + { + "areaCode": 331121000000, + "name": "青田县", + "parentCode": 331100000000, + "mergerName": "浙江省-丽水市-青田县" + }, + { + "areaCode": 331122000000, + "name": "缙云县", + "parentCode": 331100000000, + "mergerName": "浙江省-丽水市-缙云县" + }, + { + "areaCode": 331123000000, + "name": "遂昌县", + "parentCode": 331100000000, + "mergerName": "浙江省-丽水市-遂昌县" + }, + { + "areaCode": 331124000000, + "name": "松阳县", + "parentCode": 331100000000, + "mergerName": "浙江省-丽水市-松阳县" + }, + { + "areaCode": 331125000000, + "name": "云和县", + "parentCode": 331100000000, + "mergerName": "浙江省-丽水市-云和县" + }, + { + "areaCode": 331126000000, + "name": "庆元县", + "parentCode": 331100000000, + "mergerName": "浙江省-丽水市-庆元县" + }, + { + "areaCode": 331127000000, + "name": "景宁畲族自治县", + "parentCode": 331100000000, + "mergerName": "浙江省-丽水市-景宁畲族自治县" + }, + { + "areaCode": 331181000000, + "name": "龙泉市", + "parentCode": 331100000000, + "mergerName": "浙江省-丽水市-龙泉市" + } + ], + "areaCode": 331100000000, + "name": "丽水市", + "parentCode": 330000000000, + "mergerName": "浙江省-丽水市" + } + ], + "areaCode": 330000000000, + "name": "浙江省", + "parentCode": 0, + "mergerName": "-浙江省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 340101000000, + "name": "市辖区", + "parentCode": 340100000000, + "mergerName": "安徽省-合肥市-市辖区" + }, + { + "areaCode": 340102000000, + "name": "瑶海区", + "parentCode": 340100000000, + "mergerName": "安徽省-合肥市-瑶海区" + }, + { + "areaCode": 340103000000, + "name": "庐阳区", + "parentCode": 340100000000, + "mergerName": "安徽省-合肥市-庐阳区" + }, + { + "areaCode": 340104000000, + "name": "蜀山区", + "parentCode": 340100000000, + "mergerName": "安徽省-合肥市-蜀山区" + }, + { + "areaCode": 340111000000, + "name": "包河区", + "parentCode": 340100000000, + "mergerName": "安徽省-合肥市-包河区" + }, + { + "areaCode": 340121000000, + "name": "长丰县", + "parentCode": 340100000000, + "mergerName": "安徽省-合肥市-长丰县" + }, + { + "areaCode": 340122000000, + "name": "肥东县", + "parentCode": 340100000000, + "mergerName": "安徽省-合肥市-肥东县" + }, + { + "areaCode": 340123000000, + "name": "肥西县", + "parentCode": 340100000000, + "mergerName": "安徽省-合肥市-肥西县" + }, + { + "areaCode": 340124000000, + "name": "庐江县", + "parentCode": 340100000000, + "mergerName": "安徽省-合肥市-庐江县" + }, + { + "areaCode": 340171000000, + "name": "合肥高新技术产业开发区", + "parentCode": 340100000000, + "mergerName": "安徽省-合肥市-合肥高新技术产业开发区" + }, + { + "areaCode": 340172000000, + "name": "合肥经济技术开发区", + "parentCode": 340100000000, + "mergerName": "安徽省-合肥市-合肥经济技术开发区" + }, + { + "areaCode": 340173000000, + "name": "合肥新站高新技术产业开发区", + "parentCode": 340100000000, + "mergerName": "安徽省-合肥市-合肥新站高新技术产业开发区" + }, + { + "areaCode": 340181000000, + "name": "巢湖市", + "parentCode": 340100000000, + "mergerName": "安徽省-合肥市-巢湖市" + } + ], + "areaCode": 340100000000, + "name": "合肥市", + "parentCode": 340000000000, + "mergerName": "安徽省-合肥市" + }, + { + "children": [ + { + "areaCode": 340201000000, + "name": "市辖区", + "parentCode": 340200000000, + "mergerName": "安徽省-芜湖市-市辖区" + }, + { + "areaCode": 340202000000, + "name": "镜湖区", + "parentCode": 340200000000, + "mergerName": "安徽省-芜湖市-镜湖区" + }, + { + "areaCode": 340203000000, + "name": "弋江区", + "parentCode": 340200000000, + "mergerName": "安徽省-芜湖市-弋江区" + }, + { + "areaCode": 340207000000, + "name": "鸠江区", + "parentCode": 340200000000, + "mergerName": "安徽省-芜湖市-鸠江区" + }, + { + "areaCode": 340208000000, + "name": "三山区", + "parentCode": 340200000000, + "mergerName": "安徽省-芜湖市-三山区" + }, + { + "areaCode": 340221000000, + "name": "芜湖县", + "parentCode": 340200000000, + "mergerName": "安徽省-芜湖市-芜湖县" + }, + { + "areaCode": 340222000000, + "name": "繁昌县", + "parentCode": 340200000000, + "mergerName": "安徽省-芜湖市-繁昌县" + }, + { + "areaCode": 340223000000, + "name": "南陵县", + "parentCode": 340200000000, + "mergerName": "安徽省-芜湖市-南陵县" + }, + { + "areaCode": 340225000000, + "name": "无为县", + "parentCode": 340200000000, + "mergerName": "安徽省-芜湖市-无为县" + }, + { + "areaCode": 340271000000, + "name": "芜湖经济技术开发区", + "parentCode": 340200000000, + "mergerName": "安徽省-芜湖市-芜湖经济技术开发区" + }, + { + "areaCode": 340272000000, + "name": "安徽芜湖长江大桥经济开发区", + "parentCode": 340200000000, + "mergerName": "安徽省-芜湖市-安徽芜湖长江大桥经济开发区" + } + ], + "areaCode": 340200000000, + "name": "芜湖市", + "parentCode": 340000000000, + "mergerName": "安徽省-芜湖市" + }, + { + "children": [ + { + "areaCode": 340301000000, + "name": "市辖区", + "parentCode": 340300000000, + "mergerName": "安徽省-蚌埠市-市辖区" + }, + { + "areaCode": 340302000000, + "name": "龙子湖区", + "parentCode": 340300000000, + "mergerName": "安徽省-蚌埠市-龙子湖区" + }, + { + "areaCode": 340303000000, + "name": "蚌山区", + "parentCode": 340300000000, + "mergerName": "安徽省-蚌埠市-蚌山区" + }, + { + "areaCode": 340304000000, + "name": "禹会区", + "parentCode": 340300000000, + "mergerName": "安徽省-蚌埠市-禹会区" + }, + { + "areaCode": 340311000000, + "name": "淮上区", + "parentCode": 340300000000, + "mergerName": "安徽省-蚌埠市-淮上区" + }, + { + "areaCode": 340321000000, + "name": "怀远县", + "parentCode": 340300000000, + "mergerName": "安徽省-蚌埠市-怀远县" + }, + { + "areaCode": 340322000000, + "name": "五河县", + "parentCode": 340300000000, + "mergerName": "安徽省-蚌埠市-五河县" + }, + { + "areaCode": 340323000000, + "name": "固镇县", + "parentCode": 340300000000, + "mergerName": "安徽省-蚌埠市-固镇县" + }, + { + "areaCode": 340371000000, + "name": "蚌埠市高新技术开发区", + "parentCode": 340300000000, + "mergerName": "安徽省-蚌埠市-蚌埠市高新技术开发区" + }, + { + "areaCode": 340372000000, + "name": "蚌埠市经济开发区", + "parentCode": 340300000000, + "mergerName": "安徽省-蚌埠市-蚌埠市经济开发区" + } + ], + "areaCode": 340300000000, + "name": "蚌埠市", + "parentCode": 340000000000, + "mergerName": "安徽省-蚌埠市" + }, + { + "children": [ + { + "areaCode": 340401000000, + "name": "市辖区", + "parentCode": 340400000000, + "mergerName": "安徽省-淮南市-市辖区" + }, + { + "areaCode": 340402000000, + "name": "大通区", + "parentCode": 340400000000, + "mergerName": "安徽省-淮南市-大通区" + }, + { + "areaCode": 340403000000, + "name": "田家庵区", + "parentCode": 340400000000, + "mergerName": "安徽省-淮南市-田家庵区" + }, + { + "areaCode": 340404000000, + "name": "谢家集区", + "parentCode": 340400000000, + "mergerName": "安徽省-淮南市-谢家集区" + }, + { + "areaCode": 340405000000, + "name": "八公山区", + "parentCode": 340400000000, + "mergerName": "安徽省-淮南市-八公山区" + }, + { + "areaCode": 340406000000, + "name": "潘集区", + "parentCode": 340400000000, + "mergerName": "安徽省-淮南市-潘集区" + }, + { + "areaCode": 340421000000, + "name": "凤台县", + "parentCode": 340400000000, + "mergerName": "安徽省-淮南市-凤台县" + }, + { "areaCode": 340422000000, "name": "寿县", "parentCode": 340400000000, "mergerName": "安徽省-淮南市-寿县" } + ], + "areaCode": 340400000000, + "name": "淮南市", + "parentCode": 340000000000, + "mergerName": "安徽省-淮南市" + }, + { + "children": [ + { + "areaCode": 340501000000, + "name": "市辖区", + "parentCode": 340500000000, + "mergerName": "安徽省-马鞍山市-市辖区" + }, + { + "areaCode": 340503000000, + "name": "花山区", + "parentCode": 340500000000, + "mergerName": "安徽省-马鞍山市-花山区" + }, + { + "areaCode": 340504000000, + "name": "雨山区", + "parentCode": 340500000000, + "mergerName": "安徽省-马鞍山市-雨山区" + }, + { + "areaCode": 340506000000, + "name": "博望区", + "parentCode": 340500000000, + "mergerName": "安徽省-马鞍山市-博望区" + }, + { + "areaCode": 340521000000, + "name": "当涂县", + "parentCode": 340500000000, + "mergerName": "安徽省-马鞍山市-当涂县" + }, + { + "areaCode": 340522000000, + "name": "含山县", + "parentCode": 340500000000, + "mergerName": "安徽省-马鞍山市-含山县" + }, + { "areaCode": 340523000000, "name": "和县", "parentCode": 340500000000, "mergerName": "安徽省-马鞍山市-和县" } + ], + "areaCode": 340500000000, + "name": "马鞍山市", + "parentCode": 340000000000, + "mergerName": "安徽省-马鞍山市" + }, + { + "children": [ + { + "areaCode": 340601000000, + "name": "市辖区", + "parentCode": 340600000000, + "mergerName": "安徽省-淮北市-市辖区" + }, + { + "areaCode": 340602000000, + "name": "杜集区", + "parentCode": 340600000000, + "mergerName": "安徽省-淮北市-杜集区" + }, + { + "areaCode": 340603000000, + "name": "相山区", + "parentCode": 340600000000, + "mergerName": "安徽省-淮北市-相山区" + }, + { + "areaCode": 340604000000, + "name": "烈山区", + "parentCode": 340600000000, + "mergerName": "安徽省-淮北市-烈山区" + }, + { + "areaCode": 340621000000, + "name": "濉溪县", + "parentCode": 340600000000, + "mergerName": "安徽省-淮北市-濉溪县" + } + ], + "areaCode": 340600000000, + "name": "淮北市", + "parentCode": 340000000000, + "mergerName": "安徽省-淮北市" + }, + { + "children": [ + { + "areaCode": 340701000000, + "name": "市辖区", + "parentCode": 340700000000, + "mergerName": "安徽省-铜陵市-市辖区" + }, + { + "areaCode": 340705000000, + "name": "铜官区", + "parentCode": 340700000000, + "mergerName": "安徽省-铜陵市-铜官区" + }, + { + "areaCode": 340706000000, + "name": "义安区", + "parentCode": 340700000000, + "mergerName": "安徽省-铜陵市-义安区" + }, + { "areaCode": 340711000000, "name": "郊区", "parentCode": 340700000000, "mergerName": "安徽省-铜陵市-郊区" }, + { + "areaCode": 340722000000, + "name": "枞阳县", + "parentCode": 340700000000, + "mergerName": "安徽省-铜陵市-枞阳县" + } + ], + "areaCode": 340700000000, + "name": "铜陵市", + "parentCode": 340000000000, + "mergerName": "安徽省-铜陵市" + }, + { + "children": [ + { + "areaCode": 340801000000, + "name": "市辖区", + "parentCode": 340800000000, + "mergerName": "安徽省-安庆市-市辖区" + }, + { + "areaCode": 340802000000, + "name": "迎江区", + "parentCode": 340800000000, + "mergerName": "安徽省-安庆市-迎江区" + }, + { + "areaCode": 340803000000, + "name": "大观区", + "parentCode": 340800000000, + "mergerName": "安徽省-安庆市-大观区" + }, + { + "areaCode": 340811000000, + "name": "宜秀区", + "parentCode": 340800000000, + "mergerName": "安徽省-安庆市-宜秀区" + }, + { + "areaCode": 340822000000, + "name": "怀宁县", + "parentCode": 340800000000, + "mergerName": "安徽省-安庆市-怀宁县" + }, + { + "areaCode": 340825000000, + "name": "太湖县", + "parentCode": 340800000000, + "mergerName": "安徽省-安庆市-太湖县" + }, + { + "areaCode": 340826000000, + "name": "宿松县", + "parentCode": 340800000000, + "mergerName": "安徽省-安庆市-宿松县" + }, + { + "areaCode": 340827000000, + "name": "望江县", + "parentCode": 340800000000, + "mergerName": "安徽省-安庆市-望江县" + }, + { + "areaCode": 340828000000, + "name": "岳西县", + "parentCode": 340800000000, + "mergerName": "安徽省-安庆市-岳西县" + }, + { + "areaCode": 340871000000, + "name": "安徽安庆经济开发区", + "parentCode": 340800000000, + "mergerName": "安徽省-安庆市-安徽安庆经济开发区" + }, + { + "areaCode": 340881000000, + "name": "桐城市", + "parentCode": 340800000000, + "mergerName": "安徽省-安庆市-桐城市" + }, + { + "areaCode": 340882000000, + "name": "潜山市", + "parentCode": 340800000000, + "mergerName": "安徽省-安庆市-潜山市" + } + ], + "areaCode": 340800000000, + "name": "安庆市", + "parentCode": 340000000000, + "mergerName": "安徽省-安庆市" + }, + { + "children": [ + { + "areaCode": 341001000000, + "name": "市辖区", + "parentCode": 341000000000, + "mergerName": "安徽省-黄山市-市辖区" + }, + { + "areaCode": 341002000000, + "name": "屯溪区", + "parentCode": 341000000000, + "mergerName": "安徽省-黄山市-屯溪区" + }, + { + "areaCode": 341003000000, + "name": "黄山区", + "parentCode": 341000000000, + "mergerName": "安徽省-黄山市-黄山区" + }, + { + "areaCode": 341004000000, + "name": "徽州区", + "parentCode": 341000000000, + "mergerName": "安徽省-黄山市-徽州区" + }, + { "areaCode": 341021000000, "name": "歙县", "parentCode": 341000000000, "mergerName": "安徽省-黄山市-歙县" }, + { + "areaCode": 341022000000, + "name": "休宁县", + "parentCode": 341000000000, + "mergerName": "安徽省-黄山市-休宁县" + }, + { "areaCode": 341023000000, "name": "黟县", "parentCode": 341000000000, "mergerName": "安徽省-黄山市-黟县" }, + { + "areaCode": 341024000000, + "name": "祁门县", + "parentCode": 341000000000, + "mergerName": "安徽省-黄山市-祁门县" + } + ], + "areaCode": 341000000000, + "name": "黄山市", + "parentCode": 340000000000, + "mergerName": "安徽省-黄山市" + }, + { + "children": [ + { + "areaCode": 341101000000, + "name": "市辖区", + "parentCode": 341100000000, + "mergerName": "安徽省-滁州市-市辖区" + }, + { + "areaCode": 341102000000, + "name": "琅琊区", + "parentCode": 341100000000, + "mergerName": "安徽省-滁州市-琅琊区" + }, + { + "areaCode": 341103000000, + "name": "南谯区", + "parentCode": 341100000000, + "mergerName": "安徽省-滁州市-南谯区" + }, + { + "areaCode": 341122000000, + "name": "来安县", + "parentCode": 341100000000, + "mergerName": "安徽省-滁州市-来安县" + }, + { + "areaCode": 341124000000, + "name": "全椒县", + "parentCode": 341100000000, + "mergerName": "安徽省-滁州市-全椒县" + }, + { + "areaCode": 341125000000, + "name": "定远县", + "parentCode": 341100000000, + "mergerName": "安徽省-滁州市-定远县" + }, + { + "areaCode": 341126000000, + "name": "凤阳县", + "parentCode": 341100000000, + "mergerName": "安徽省-滁州市-凤阳县" + }, + { + "areaCode": 341171000000, + "name": "苏滁现代产业园", + "parentCode": 341100000000, + "mergerName": "安徽省-滁州市-苏滁现代产业园" + }, + { + "areaCode": 341172000000, + "name": "滁州经济技术开发区", + "parentCode": 341100000000, + "mergerName": "安徽省-滁州市-滁州经济技术开发区" + }, + { + "areaCode": 341181000000, + "name": "天长市", + "parentCode": 341100000000, + "mergerName": "安徽省-滁州市-天长市" + }, + { + "areaCode": 341182000000, + "name": "明光市", + "parentCode": 341100000000, + "mergerName": "安徽省-滁州市-明光市" + } + ], + "areaCode": 341100000000, + "name": "滁州市", + "parentCode": 340000000000, + "mergerName": "安徽省-滁州市" + }, + { + "children": [ + { + "areaCode": 341201000000, + "name": "市辖区", + "parentCode": 341200000000, + "mergerName": "安徽省-阜阳市-市辖区" + }, + { + "areaCode": 341202000000, + "name": "颍州区", + "parentCode": 341200000000, + "mergerName": "安徽省-阜阳市-颍州区" + }, + { + "areaCode": 341203000000, + "name": "颍东区", + "parentCode": 341200000000, + "mergerName": "安徽省-阜阳市-颍东区" + }, + { + "areaCode": 341204000000, + "name": "颍泉区", + "parentCode": 341200000000, + "mergerName": "安徽省-阜阳市-颍泉区" + }, + { + "areaCode": 341221000000, + "name": "临泉县", + "parentCode": 341200000000, + "mergerName": "安徽省-阜阳市-临泉县" + }, + { + "areaCode": 341222000000, + "name": "太和县", + "parentCode": 341200000000, + "mergerName": "安徽省-阜阳市-太和县" + }, + { + "areaCode": 341225000000, + "name": "阜南县", + "parentCode": 341200000000, + "mergerName": "安徽省-阜阳市-阜南县" + }, + { + "areaCode": 341226000000, + "name": "颍上县", + "parentCode": 341200000000, + "mergerName": "安徽省-阜阳市-颍上县" + }, + { + "areaCode": 341271000000, + "name": "阜阳合肥现代产业园区", + "parentCode": 341200000000, + "mergerName": "安徽省-阜阳市-阜阳合肥现代产业园区" + }, + { + "areaCode": 341272000000, + "name": "阜阳经济技术开发区", + "parentCode": 341200000000, + "mergerName": "安徽省-阜阳市-阜阳经济技术开发区" + }, + { + "areaCode": 341282000000, + "name": "界首市", + "parentCode": 341200000000, + "mergerName": "安徽省-阜阳市-界首市" + } + ], + "areaCode": 341200000000, + "name": "阜阳市", + "parentCode": 340000000000, + "mergerName": "安徽省-阜阳市" + }, + { + "children": [ + { + "areaCode": 341301000000, + "name": "市辖区", + "parentCode": 341300000000, + "mergerName": "安徽省-宿州市-市辖区" + }, + { + "areaCode": 341302000000, + "name": "埇桥区", + "parentCode": 341300000000, + "mergerName": "安徽省-宿州市-埇桥区" + }, + { + "areaCode": 341321000000, + "name": "砀山县", + "parentCode": 341300000000, + "mergerName": "安徽省-宿州市-砀山县" + }, + { "areaCode": 341322000000, "name": "萧县", "parentCode": 341300000000, "mergerName": "安徽省-宿州市-萧县" }, + { + "areaCode": 341323000000, + "name": "灵璧县", + "parentCode": 341300000000, + "mergerName": "安徽省-宿州市-灵璧县" + }, + { "areaCode": 341324000000, "name": "泗县", "parentCode": 341300000000, "mergerName": "安徽省-宿州市-泗县" }, + { + "areaCode": 341371000000, + "name": "宿州马鞍山现代产业园区", + "parentCode": 341300000000, + "mergerName": "安徽省-宿州市-宿州马鞍山现代产业园区" + }, + { + "areaCode": 341372000000, + "name": "宿州经济技术开发区", + "parentCode": 341300000000, + "mergerName": "安徽省-宿州市-宿州经济技术开发区" + } + ], + "areaCode": 341300000000, + "name": "宿州市", + "parentCode": 340000000000, + "mergerName": "安徽省-宿州市" + }, + { + "children": [ + { + "areaCode": 341501000000, + "name": "市辖区", + "parentCode": 341500000000, + "mergerName": "安徽省-六安市-市辖区" + }, + { + "areaCode": 341502000000, + "name": "金安区", + "parentCode": 341500000000, + "mergerName": "安徽省-六安市-金安区" + }, + { + "areaCode": 341503000000, + "name": "裕安区", + "parentCode": 341500000000, + "mergerName": "安徽省-六安市-裕安区" + }, + { + "areaCode": 341504000000, + "name": "叶集区", + "parentCode": 341500000000, + "mergerName": "安徽省-六安市-叶集区" + }, + { + "areaCode": 341522000000, + "name": "霍邱县", + "parentCode": 341500000000, + "mergerName": "安徽省-六安市-霍邱县" + }, + { + "areaCode": 341523000000, + "name": "舒城县", + "parentCode": 341500000000, + "mergerName": "安徽省-六安市-舒城县" + }, + { + "areaCode": 341524000000, + "name": "金寨县", + "parentCode": 341500000000, + "mergerName": "安徽省-六安市-金寨县" + }, + { + "areaCode": 341525000000, + "name": "霍山县", + "parentCode": 341500000000, + "mergerName": "安徽省-六安市-霍山县" + } + ], + "areaCode": 341500000000, + "name": "六安市", + "parentCode": 340000000000, + "mergerName": "安徽省-六安市" + }, + { + "children": [ + { + "areaCode": 341601000000, + "name": "市辖区", + "parentCode": 341600000000, + "mergerName": "安徽省-亳州市-市辖区" + }, + { + "areaCode": 341602000000, + "name": "谯城区", + "parentCode": 341600000000, + "mergerName": "安徽省-亳州市-谯城区" + }, + { + "areaCode": 341621000000, + "name": "涡阳县", + "parentCode": 341600000000, + "mergerName": "安徽省-亳州市-涡阳县" + }, + { + "areaCode": 341622000000, + "name": "蒙城县", + "parentCode": 341600000000, + "mergerName": "安徽省-亳州市-蒙城县" + }, + { + "areaCode": 341623000000, + "name": "利辛县", + "parentCode": 341600000000, + "mergerName": "安徽省-亳州市-利辛县" + } + ], + "areaCode": 341600000000, + "name": "亳州市", + "parentCode": 340000000000, + "mergerName": "安徽省-亳州市" + }, + { + "children": [ + { + "areaCode": 341701000000, + "name": "市辖区", + "parentCode": 341700000000, + "mergerName": "安徽省-池州市-市辖区" + }, + { + "areaCode": 341702000000, + "name": "贵池区", + "parentCode": 341700000000, + "mergerName": "安徽省-池州市-贵池区" + }, + { + "areaCode": 341721000000, + "name": "东至县", + "parentCode": 341700000000, + "mergerName": "安徽省-池州市-东至县" + }, + { + "areaCode": 341722000000, + "name": "石台县", + "parentCode": 341700000000, + "mergerName": "安徽省-池州市-石台县" + }, + { + "areaCode": 341723000000, + "name": "青阳县", + "parentCode": 341700000000, + "mergerName": "安徽省-池州市-青阳县" + } + ], + "areaCode": 341700000000, + "name": "池州市", + "parentCode": 340000000000, + "mergerName": "安徽省-池州市" + }, + { + "children": [ + { + "areaCode": 341801000000, + "name": "市辖区", + "parentCode": 341800000000, + "mergerName": "安徽省-宣城市-市辖区" + }, + { + "areaCode": 341802000000, + "name": "宣州区", + "parentCode": 341800000000, + "mergerName": "安徽省-宣城市-宣州区" + }, + { + "areaCode": 341821000000, + "name": "郎溪县", + "parentCode": 341800000000, + "mergerName": "安徽省-宣城市-郎溪县" + }, + { + "areaCode": 341822000000, + "name": "广德县", + "parentCode": 341800000000, + "mergerName": "安徽省-宣城市-广德县" + }, + { "areaCode": 341823000000, "name": "泾县", "parentCode": 341800000000, "mergerName": "安徽省-宣城市-泾县" }, + { + "areaCode": 341824000000, + "name": "绩溪县", + "parentCode": 341800000000, + "mergerName": "安徽省-宣城市-绩溪县" + }, + { + "areaCode": 341825000000, + "name": "旌德县", + "parentCode": 341800000000, + "mergerName": "安徽省-宣城市-旌德县" + }, + { + "areaCode": 341871000000, + "name": "宣城市经济开发区", + "parentCode": 341800000000, + "mergerName": "安徽省-宣城市-宣城市经济开发区" + }, + { + "areaCode": 341881000000, + "name": "宁国市", + "parentCode": 341800000000, + "mergerName": "安徽省-宣城市-宁国市" + } + ], + "areaCode": 341800000000, + "name": "宣城市", + "parentCode": 340000000000, + "mergerName": "安徽省-宣城市" + } + ], + "areaCode": 340000000000, + "name": "安徽省", + "parentCode": 0, + "mergerName": "-安徽省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 350101000000, + "name": "市辖区", + "parentCode": 350100000000, + "mergerName": "福建省-福州市-市辖区" + }, + { + "areaCode": 350102000000, + "name": "鼓楼区", + "parentCode": 350100000000, + "mergerName": "福建省-福州市-鼓楼区" + }, + { + "areaCode": 350103000000, + "name": "台江区", + "parentCode": 350100000000, + "mergerName": "福建省-福州市-台江区" + }, + { + "areaCode": 350104000000, + "name": "仓山区", + "parentCode": 350100000000, + "mergerName": "福建省-福州市-仓山区" + }, + { + "areaCode": 350105000000, + "name": "马尾区", + "parentCode": 350100000000, + "mergerName": "福建省-福州市-马尾区" + }, + { + "areaCode": 350111000000, + "name": "晋安区", + "parentCode": 350100000000, + "mergerName": "福建省-福州市-晋安区" + }, + { + "areaCode": 350112000000, + "name": "长乐区", + "parentCode": 350100000000, + "mergerName": "福建省-福州市-长乐区" + }, + { + "areaCode": 350121000000, + "name": "闽侯县", + "parentCode": 350100000000, + "mergerName": "福建省-福州市-闽侯县" + }, + { + "areaCode": 350122000000, + "name": "连江县", + "parentCode": 350100000000, + "mergerName": "福建省-福州市-连江县" + }, + { + "areaCode": 350123000000, + "name": "罗源县", + "parentCode": 350100000000, + "mergerName": "福建省-福州市-罗源县" + }, + { + "areaCode": 350124000000, + "name": "闽清县", + "parentCode": 350100000000, + "mergerName": "福建省-福州市-闽清县" + }, + { + "areaCode": 350125000000, + "name": "永泰县", + "parentCode": 350100000000, + "mergerName": "福建省-福州市-永泰县" + }, + { + "areaCode": 350128000000, + "name": "平潭县", + "parentCode": 350100000000, + "mergerName": "福建省-福州市-平潭县" + }, + { + "areaCode": 350181000000, + "name": "福清市", + "parentCode": 350100000000, + "mergerName": "福建省-福州市-福清市" + } + ], + "areaCode": 350100000000, + "name": "福州市", + "parentCode": 350000000000, + "mergerName": "福建省-福州市" + }, + { + "children": [ + { + "areaCode": 350201000000, + "name": "市辖区", + "parentCode": 350200000000, + "mergerName": "福建省-厦门市-市辖区" + }, + { + "areaCode": 350203000000, + "name": "思明区", + "parentCode": 350200000000, + "mergerName": "福建省-厦门市-思明区" + }, + { + "areaCode": 350205000000, + "name": "海沧区", + "parentCode": 350200000000, + "mergerName": "福建省-厦门市-海沧区" + }, + { + "areaCode": 350206000000, + "name": "湖里区", + "parentCode": 350200000000, + "mergerName": "福建省-厦门市-湖里区" + }, + { + "areaCode": 350211000000, + "name": "集美区", + "parentCode": 350200000000, + "mergerName": "福建省-厦门市-集美区" + }, + { + "areaCode": 350212000000, + "name": "同安区", + "parentCode": 350200000000, + "mergerName": "福建省-厦门市-同安区" + }, + { + "areaCode": 350213000000, + "name": "翔安区", + "parentCode": 350200000000, + "mergerName": "福建省-厦门市-翔安区" + } + ], + "areaCode": 350200000000, + "name": "厦门市", + "parentCode": 350000000000, + "mergerName": "福建省-厦门市" + }, + { + "children": [ + { + "areaCode": 350301000000, + "name": "市辖区", + "parentCode": 350300000000, + "mergerName": "福建省-莆田市-市辖区" + }, + { + "areaCode": 350302000000, + "name": "城厢区", + "parentCode": 350300000000, + "mergerName": "福建省-莆田市-城厢区" + }, + { + "areaCode": 350303000000, + "name": "涵江区", + "parentCode": 350300000000, + "mergerName": "福建省-莆田市-涵江区" + }, + { + "areaCode": 350304000000, + "name": "荔城区", + "parentCode": 350300000000, + "mergerName": "福建省-莆田市-荔城区" + }, + { + "areaCode": 350305000000, + "name": "秀屿区", + "parentCode": 350300000000, + "mergerName": "福建省-莆田市-秀屿区" + }, + { + "areaCode": 350322000000, + "name": "仙游县", + "parentCode": 350300000000, + "mergerName": "福建省-莆田市-仙游县" + } + ], + "areaCode": 350300000000, + "name": "莆田市", + "parentCode": 350000000000, + "mergerName": "福建省-莆田市" + }, + { + "children": [ + { + "areaCode": 350401000000, + "name": "市辖区", + "parentCode": 350400000000, + "mergerName": "福建省-三明市-市辖区" + }, + { + "areaCode": 350402000000, + "name": "梅列区", + "parentCode": 350400000000, + "mergerName": "福建省-三明市-梅列区" + }, + { + "areaCode": 350403000000, + "name": "三元区", + "parentCode": 350400000000, + "mergerName": "福建省-三明市-三元区" + }, + { + "areaCode": 350421000000, + "name": "明溪县", + "parentCode": 350400000000, + "mergerName": "福建省-三明市-明溪县" + }, + { + "areaCode": 350423000000, + "name": "清流县", + "parentCode": 350400000000, + "mergerName": "福建省-三明市-清流县" + }, + { + "areaCode": 350424000000, + "name": "宁化县", + "parentCode": 350400000000, + "mergerName": "福建省-三明市-宁化县" + }, + { + "areaCode": 350425000000, + "name": "大田县", + "parentCode": 350400000000, + "mergerName": "福建省-三明市-大田县" + }, + { + "areaCode": 350426000000, + "name": "尤溪县", + "parentCode": 350400000000, + "mergerName": "福建省-三明市-尤溪县" + }, + { "areaCode": 350427000000, "name": "沙县", "parentCode": 350400000000, "mergerName": "福建省-三明市-沙县" }, + { + "areaCode": 350428000000, + "name": "将乐县", + "parentCode": 350400000000, + "mergerName": "福建省-三明市-将乐县" + }, + { + "areaCode": 350429000000, + "name": "泰宁县", + "parentCode": 350400000000, + "mergerName": "福建省-三明市-泰宁县" + }, + { + "areaCode": 350430000000, + "name": "建宁县", + "parentCode": 350400000000, + "mergerName": "福建省-三明市-建宁县" + }, + { + "areaCode": 350481000000, + "name": "永安市", + "parentCode": 350400000000, + "mergerName": "福建省-三明市-永安市" + } + ], + "areaCode": 350400000000, + "name": "三明市", + "parentCode": 350000000000, + "mergerName": "福建省-三明市" + }, + { + "children": [ + { + "areaCode": 350501000000, + "name": "市辖区", + "parentCode": 350500000000, + "mergerName": "福建省-泉州市-市辖区" + }, + { + "areaCode": 350502000000, + "name": "鲤城区", + "parentCode": 350500000000, + "mergerName": "福建省-泉州市-鲤城区" + }, + { + "areaCode": 350503000000, + "name": "丰泽区", + "parentCode": 350500000000, + "mergerName": "福建省-泉州市-丰泽区" + }, + { + "areaCode": 350504000000, + "name": "洛江区", + "parentCode": 350500000000, + "mergerName": "福建省-泉州市-洛江区" + }, + { + "areaCode": 350505000000, + "name": "泉港区", + "parentCode": 350500000000, + "mergerName": "福建省-泉州市-泉港区" + }, + { + "areaCode": 350521000000, + "name": "惠安县", + "parentCode": 350500000000, + "mergerName": "福建省-泉州市-惠安县" + }, + { + "areaCode": 350524000000, + "name": "安溪县", + "parentCode": 350500000000, + "mergerName": "福建省-泉州市-安溪县" + }, + { + "areaCode": 350525000000, + "name": "永春县", + "parentCode": 350500000000, + "mergerName": "福建省-泉州市-永春县" + }, + { + "areaCode": 350526000000, + "name": "德化县", + "parentCode": 350500000000, + "mergerName": "福建省-泉州市-德化县" + }, + { + "areaCode": 350527000000, + "name": "金门县", + "parentCode": 350500000000, + "mergerName": "福建省-泉州市-金门县" + }, + { + "areaCode": 350581000000, + "name": "石狮市", + "parentCode": 350500000000, + "mergerName": "福建省-泉州市-石狮市" + }, + { + "areaCode": 350582000000, + "name": "晋江市", + "parentCode": 350500000000, + "mergerName": "福建省-泉州市-晋江市" + }, + { + "areaCode": 350583000000, + "name": "南安市", + "parentCode": 350500000000, + "mergerName": "福建省-泉州市-南安市" + } + ], + "areaCode": 350500000000, + "name": "泉州市", + "parentCode": 350000000000, + "mergerName": "福建省-泉州市" + }, + { + "children": [ + { + "areaCode": 350601000000, + "name": "市辖区", + "parentCode": 350600000000, + "mergerName": "福建省-漳州市-市辖区" + }, + { + "areaCode": 350602000000, + "name": "芗城区", + "parentCode": 350600000000, + "mergerName": "福建省-漳州市-芗城区" + }, + { + "areaCode": 350603000000, + "name": "龙文区", + "parentCode": 350600000000, + "mergerName": "福建省-漳州市-龙文区" + }, + { + "areaCode": 350622000000, + "name": "云霄县", + "parentCode": 350600000000, + "mergerName": "福建省-漳州市-云霄县" + }, + { + "areaCode": 350623000000, + "name": "漳浦县", + "parentCode": 350600000000, + "mergerName": "福建省-漳州市-漳浦县" + }, + { + "areaCode": 350624000000, + "name": "诏安县", + "parentCode": 350600000000, + "mergerName": "福建省-漳州市-诏安县" + }, + { + "areaCode": 350625000000, + "name": "长泰县", + "parentCode": 350600000000, + "mergerName": "福建省-漳州市-长泰县" + }, + { + "areaCode": 350626000000, + "name": "东山县", + "parentCode": 350600000000, + "mergerName": "福建省-漳州市-东山县" + }, + { + "areaCode": 350627000000, + "name": "南靖县", + "parentCode": 350600000000, + "mergerName": "福建省-漳州市-南靖县" + }, + { + "areaCode": 350628000000, + "name": "平和县", + "parentCode": 350600000000, + "mergerName": "福建省-漳州市-平和县" + }, + { + "areaCode": 350629000000, + "name": "华安县", + "parentCode": 350600000000, + "mergerName": "福建省-漳州市-华安县" + }, + { + "areaCode": 350681000000, + "name": "龙海市", + "parentCode": 350600000000, + "mergerName": "福建省-漳州市-龙海市" + } + ], + "areaCode": 350600000000, + "name": "漳州市", + "parentCode": 350000000000, + "mergerName": "福建省-漳州市" + }, + { + "children": [ + { + "areaCode": 350701000000, + "name": "市辖区", + "parentCode": 350700000000, + "mergerName": "福建省-南平市-市辖区" + }, + { + "areaCode": 350702000000, + "name": "延平区", + "parentCode": 350700000000, + "mergerName": "福建省-南平市-延平区" + }, + { + "areaCode": 350703000000, + "name": "建阳区", + "parentCode": 350700000000, + "mergerName": "福建省-南平市-建阳区" + }, + { + "areaCode": 350721000000, + "name": "顺昌县", + "parentCode": 350700000000, + "mergerName": "福建省-南平市-顺昌县" + }, + { + "areaCode": 350722000000, + "name": "浦城县", + "parentCode": 350700000000, + "mergerName": "福建省-南平市-浦城县" + }, + { + "areaCode": 350723000000, + "name": "光泽县", + "parentCode": 350700000000, + "mergerName": "福建省-南平市-光泽县" + }, + { + "areaCode": 350724000000, + "name": "松溪县", + "parentCode": 350700000000, + "mergerName": "福建省-南平市-松溪县" + }, + { + "areaCode": 350725000000, + "name": "政和县", + "parentCode": 350700000000, + "mergerName": "福建省-南平市-政和县" + }, + { + "areaCode": 350781000000, + "name": "邵武市", + "parentCode": 350700000000, + "mergerName": "福建省-南平市-邵武市" + }, + { + "areaCode": 350782000000, + "name": "武夷山市", + "parentCode": 350700000000, + "mergerName": "福建省-南平市-武夷山市" + }, + { + "areaCode": 350783000000, + "name": "建瓯市", + "parentCode": 350700000000, + "mergerName": "福建省-南平市-建瓯市" + } + ], + "areaCode": 350700000000, + "name": "南平市", + "parentCode": 350000000000, + "mergerName": "福建省-南平市" + }, + { + "children": [ + { + "areaCode": 350801000000, + "name": "市辖区", + "parentCode": 350800000000, + "mergerName": "福建省-龙岩市-市辖区" + }, + { + "areaCode": 350802000000, + "name": "新罗区", + "parentCode": 350800000000, + "mergerName": "福建省-龙岩市-新罗区" + }, + { + "areaCode": 350803000000, + "name": "永定区", + "parentCode": 350800000000, + "mergerName": "福建省-龙岩市-永定区" + }, + { + "areaCode": 350821000000, + "name": "长汀县", + "parentCode": 350800000000, + "mergerName": "福建省-龙岩市-长汀县" + }, + { + "areaCode": 350823000000, + "name": "上杭县", + "parentCode": 350800000000, + "mergerName": "福建省-龙岩市-上杭县" + }, + { + "areaCode": 350824000000, + "name": "武平县", + "parentCode": 350800000000, + "mergerName": "福建省-龙岩市-武平县" + }, + { + "areaCode": 350825000000, + "name": "连城县", + "parentCode": 350800000000, + "mergerName": "福建省-龙岩市-连城县" + }, + { + "areaCode": 350881000000, + "name": "漳平市", + "parentCode": 350800000000, + "mergerName": "福建省-龙岩市-漳平市" + } + ], + "areaCode": 350800000000, + "name": "龙岩市", + "parentCode": 350000000000, + "mergerName": "福建省-龙岩市" + }, + { + "children": [ + { + "areaCode": 350901000000, + "name": "市辖区", + "parentCode": 350900000000, + "mergerName": "福建省-宁德市-市辖区" + }, + { + "areaCode": 350902000000, + "name": "蕉城区", + "parentCode": 350900000000, + "mergerName": "福建省-宁德市-蕉城区" + }, + { + "areaCode": 350921000000, + "name": "霞浦县", + "parentCode": 350900000000, + "mergerName": "福建省-宁德市-霞浦县" + }, + { + "areaCode": 350922000000, + "name": "古田县", + "parentCode": 350900000000, + "mergerName": "福建省-宁德市-古田县" + }, + { + "areaCode": 350923000000, + "name": "屏南县", + "parentCode": 350900000000, + "mergerName": "福建省-宁德市-屏南县" + }, + { + "areaCode": 350924000000, + "name": "寿宁县", + "parentCode": 350900000000, + "mergerName": "福建省-宁德市-寿宁县" + }, + { + "areaCode": 350925000000, + "name": "周宁县", + "parentCode": 350900000000, + "mergerName": "福建省-宁德市-周宁县" + }, + { + "areaCode": 350926000000, + "name": "柘荣县", + "parentCode": 350900000000, + "mergerName": "福建省-宁德市-柘荣县" + }, + { + "areaCode": 350981000000, + "name": "福安市", + "parentCode": 350900000000, + "mergerName": "福建省-宁德市-福安市" + }, + { + "areaCode": 350982000000, + "name": "福鼎市", + "parentCode": 350900000000, + "mergerName": "福建省-宁德市-福鼎市" + } + ], + "areaCode": 350900000000, + "name": "宁德市", + "parentCode": 350000000000, + "mergerName": "福建省-宁德市" + } + ], + "areaCode": 350000000000, + "name": "福建省", + "parentCode": 0, + "mergerName": "-福建省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 360101000000, + "name": "市辖区", + "parentCode": 360100000000, + "mergerName": "江西省-南昌市-市辖区" + }, + { + "areaCode": 360102000000, + "name": "东湖区", + "parentCode": 360100000000, + "mergerName": "江西省-南昌市-东湖区" + }, + { + "areaCode": 360103000000, + "name": "西湖区", + "parentCode": 360100000000, + "mergerName": "江西省-南昌市-西湖区" + }, + { + "areaCode": 360104000000, + "name": "青云谱区", + "parentCode": 360100000000, + "mergerName": "江西省-南昌市-青云谱区" + }, + { + "areaCode": 360105000000, + "name": "湾里区", + "parentCode": 360100000000, + "mergerName": "江西省-南昌市-湾里区" + }, + { + "areaCode": 360111000000, + "name": "青山湖区", + "parentCode": 360100000000, + "mergerName": "江西省-南昌市-青山湖区" + }, + { + "areaCode": 360112000000, + "name": "新建区", + "parentCode": 360100000000, + "mergerName": "江西省-南昌市-新建区" + }, + { + "areaCode": 360121000000, + "name": "南昌县", + "parentCode": 360100000000, + "mergerName": "江西省-南昌市-南昌县" + }, + { + "areaCode": 360123000000, + "name": "安义县", + "parentCode": 360100000000, + "mergerName": "江西省-南昌市-安义县" + }, + { + "areaCode": 360124000000, + "name": "进贤县", + "parentCode": 360100000000, + "mergerName": "江西省-南昌市-进贤县" + } + ], + "areaCode": 360100000000, + "name": "南昌市", + "parentCode": 360000000000, + "mergerName": "江西省-南昌市" + }, + { + "children": [ + { + "areaCode": 360201000000, + "name": "市辖区", + "parentCode": 360200000000, + "mergerName": "江西省-景德镇市-市辖区" + }, + { + "areaCode": 360202000000, + "name": "昌江区", + "parentCode": 360200000000, + "mergerName": "江西省-景德镇市-昌江区" + }, + { + "areaCode": 360203000000, + "name": "珠山区", + "parentCode": 360200000000, + "mergerName": "江西省-景德镇市-珠山区" + }, + { + "areaCode": 360222000000, + "name": "浮梁县", + "parentCode": 360200000000, + "mergerName": "江西省-景德镇市-浮梁县" + }, + { + "areaCode": 360281000000, + "name": "乐平市", + "parentCode": 360200000000, + "mergerName": "江西省-景德镇市-乐平市" + } + ], + "areaCode": 360200000000, + "name": "景德镇市", + "parentCode": 360000000000, + "mergerName": "江西省-景德镇市" + }, + { + "children": [ + { + "areaCode": 360301000000, + "name": "市辖区", + "parentCode": 360300000000, + "mergerName": "江西省-萍乡市-市辖区" + }, + { + "areaCode": 360302000000, + "name": "安源区", + "parentCode": 360300000000, + "mergerName": "江西省-萍乡市-安源区" + }, + { + "areaCode": 360313000000, + "name": "湘东区", + "parentCode": 360300000000, + "mergerName": "江西省-萍乡市-湘东区" + }, + { + "areaCode": 360321000000, + "name": "莲花县", + "parentCode": 360300000000, + "mergerName": "江西省-萍乡市-莲花县" + }, + { + "areaCode": 360322000000, + "name": "上栗县", + "parentCode": 360300000000, + "mergerName": "江西省-萍乡市-上栗县" + }, + { + "areaCode": 360323000000, + "name": "芦溪县", + "parentCode": 360300000000, + "mergerName": "江西省-萍乡市-芦溪县" + } + ], + "areaCode": 360300000000, + "name": "萍乡市", + "parentCode": 360000000000, + "mergerName": "江西省-萍乡市" + }, + { + "children": [ + { + "areaCode": 360401000000, + "name": "市辖区", + "parentCode": 360400000000, + "mergerName": "江西省-九江市-市辖区" + }, + { + "areaCode": 360402000000, + "name": "濂溪区", + "parentCode": 360400000000, + "mergerName": "江西省-九江市-濂溪区" + }, + { + "areaCode": 360403000000, + "name": "浔阳区", + "parentCode": 360400000000, + "mergerName": "江西省-九江市-浔阳区" + }, + { + "areaCode": 360404000000, + "name": "柴桑区", + "parentCode": 360400000000, + "mergerName": "江西省-九江市-柴桑区" + }, + { + "areaCode": 360423000000, + "name": "武宁县", + "parentCode": 360400000000, + "mergerName": "江西省-九江市-武宁县" + }, + { + "areaCode": 360424000000, + "name": "修水县", + "parentCode": 360400000000, + "mergerName": "江西省-九江市-修水县" + }, + { + "areaCode": 360425000000, + "name": "永修县", + "parentCode": 360400000000, + "mergerName": "江西省-九江市-永修县" + }, + { + "areaCode": 360426000000, + "name": "德安县", + "parentCode": 360400000000, + "mergerName": "江西省-九江市-德安县" + }, + { + "areaCode": 360428000000, + "name": "都昌县", + "parentCode": 360400000000, + "mergerName": "江西省-九江市-都昌县" + }, + { + "areaCode": 360429000000, + "name": "湖口县", + "parentCode": 360400000000, + "mergerName": "江西省-九江市-湖口县" + }, + { + "areaCode": 360430000000, + "name": "彭泽县", + "parentCode": 360400000000, + "mergerName": "江西省-九江市-彭泽县" + }, + { + "areaCode": 360481000000, + "name": "瑞昌市", + "parentCode": 360400000000, + "mergerName": "江西省-九江市-瑞昌市" + }, + { + "areaCode": 360482000000, + "name": "共青城市", + "parentCode": 360400000000, + "mergerName": "江西省-九江市-共青城市" + }, + { + "areaCode": 360483000000, + "name": "庐山市", + "parentCode": 360400000000, + "mergerName": "江西省-九江市-庐山市" + } + ], + "areaCode": 360400000000, + "name": "九江市", + "parentCode": 360000000000, + "mergerName": "江西省-九江市" + }, + { + "children": [ + { + "areaCode": 360501000000, + "name": "市辖区", + "parentCode": 360500000000, + "mergerName": "江西省-新余市-市辖区" + }, + { + "areaCode": 360502000000, + "name": "渝水区", + "parentCode": 360500000000, + "mergerName": "江西省-新余市-渝水区" + }, + { + "areaCode": 360521000000, + "name": "分宜县", + "parentCode": 360500000000, + "mergerName": "江西省-新余市-分宜县" + } + ], + "areaCode": 360500000000, + "name": "新余市", + "parentCode": 360000000000, + "mergerName": "江西省-新余市" + }, + { + "children": [ + { + "areaCode": 360601000000, + "name": "市辖区", + "parentCode": 360600000000, + "mergerName": "江西省-鹰潭市-市辖区" + }, + { + "areaCode": 360602000000, + "name": "月湖区", + "parentCode": 360600000000, + "mergerName": "江西省-鹰潭市-月湖区" + }, + { + "areaCode": 360603000000, + "name": "余江区", + "parentCode": 360600000000, + "mergerName": "江西省-鹰潭市-余江区" + }, + { + "areaCode": 360681000000, + "name": "贵溪市", + "parentCode": 360600000000, + "mergerName": "江西省-鹰潭市-贵溪市" + } + ], + "areaCode": 360600000000, + "name": "鹰潭市", + "parentCode": 360000000000, + "mergerName": "江西省-鹰潭市" + }, + { + "children": [ + { + "areaCode": 360701000000, + "name": "市辖区", + "parentCode": 360700000000, + "mergerName": "江西省-赣州市-市辖区" + }, + { + "areaCode": 360702000000, + "name": "章贡区", + "parentCode": 360700000000, + "mergerName": "江西省-赣州市-章贡区" + }, + { + "areaCode": 360703000000, + "name": "南康区", + "parentCode": 360700000000, + "mergerName": "江西省-赣州市-南康区" + }, + { + "areaCode": 360704000000, + "name": "赣县区", + "parentCode": 360700000000, + "mergerName": "江西省-赣州市-赣县区" + }, + { + "areaCode": 360722000000, + "name": "信丰县", + "parentCode": 360700000000, + "mergerName": "江西省-赣州市-信丰县" + }, + { + "areaCode": 360723000000, + "name": "大余县", + "parentCode": 360700000000, + "mergerName": "江西省-赣州市-大余县" + }, + { + "areaCode": 360724000000, + "name": "上犹县", + "parentCode": 360700000000, + "mergerName": "江西省-赣州市-上犹县" + }, + { + "areaCode": 360725000000, + "name": "崇义县", + "parentCode": 360700000000, + "mergerName": "江西省-赣州市-崇义县" + }, + { + "areaCode": 360726000000, + "name": "安远县", + "parentCode": 360700000000, + "mergerName": "江西省-赣州市-安远县" + }, + { + "areaCode": 360727000000, + "name": "龙南县", + "parentCode": 360700000000, + "mergerName": "江西省-赣州市-龙南县" + }, + { + "areaCode": 360728000000, + "name": "定南县", + "parentCode": 360700000000, + "mergerName": "江西省-赣州市-定南县" + }, + { + "areaCode": 360729000000, + "name": "全南县", + "parentCode": 360700000000, + "mergerName": "江西省-赣州市-全南县" + }, + { + "areaCode": 360730000000, + "name": "宁都县", + "parentCode": 360700000000, + "mergerName": "江西省-赣州市-宁都县" + }, + { + "areaCode": 360731000000, + "name": "于都县", + "parentCode": 360700000000, + "mergerName": "江西省-赣州市-于都县" + }, + { + "areaCode": 360732000000, + "name": "兴国县", + "parentCode": 360700000000, + "mergerName": "江西省-赣州市-兴国县" + }, + { + "areaCode": 360733000000, + "name": "会昌县", + "parentCode": 360700000000, + "mergerName": "江西省-赣州市-会昌县" + }, + { + "areaCode": 360734000000, + "name": "寻乌县", + "parentCode": 360700000000, + "mergerName": "江西省-赣州市-寻乌县" + }, + { + "areaCode": 360735000000, + "name": "石城县", + "parentCode": 360700000000, + "mergerName": "江西省-赣州市-石城县" + }, + { + "areaCode": 360781000000, + "name": "瑞金市", + "parentCode": 360700000000, + "mergerName": "江西省-赣州市-瑞金市" + } + ], + "areaCode": 360700000000, + "name": "赣州市", + "parentCode": 360000000000, + "mergerName": "江西省-赣州市" + }, + { + "children": [ + { + "areaCode": 360801000000, + "name": "市辖区", + "parentCode": 360800000000, + "mergerName": "江西省-吉安市-市辖区" + }, + { + "areaCode": 360802000000, + "name": "吉州区", + "parentCode": 360800000000, + "mergerName": "江西省-吉安市-吉州区" + }, + { + "areaCode": 360803000000, + "name": "青原区", + "parentCode": 360800000000, + "mergerName": "江西省-吉安市-青原区" + }, + { + "areaCode": 360821000000, + "name": "吉安县", + "parentCode": 360800000000, + "mergerName": "江西省-吉安市-吉安县" + }, + { + "areaCode": 360822000000, + "name": "吉水县", + "parentCode": 360800000000, + "mergerName": "江西省-吉安市-吉水县" + }, + { + "areaCode": 360823000000, + "name": "峡江县", + "parentCode": 360800000000, + "mergerName": "江西省-吉安市-峡江县" + }, + { + "areaCode": 360824000000, + "name": "新干县", + "parentCode": 360800000000, + "mergerName": "江西省-吉安市-新干县" + }, + { + "areaCode": 360825000000, + "name": "永丰县", + "parentCode": 360800000000, + "mergerName": "江西省-吉安市-永丰县" + }, + { + "areaCode": 360826000000, + "name": "泰和县", + "parentCode": 360800000000, + "mergerName": "江西省-吉安市-泰和县" + }, + { + "areaCode": 360827000000, + "name": "遂川县", + "parentCode": 360800000000, + "mergerName": "江西省-吉安市-遂川县" + }, + { + "areaCode": 360828000000, + "name": "万安县", + "parentCode": 360800000000, + "mergerName": "江西省-吉安市-万安县" + }, + { + "areaCode": 360829000000, + "name": "安福县", + "parentCode": 360800000000, + "mergerName": "江西省-吉安市-安福县" + }, + { + "areaCode": 360830000000, + "name": "永新县", + "parentCode": 360800000000, + "mergerName": "江西省-吉安市-永新县" + }, + { + "areaCode": 360881000000, + "name": "井冈山市", + "parentCode": 360800000000, + "mergerName": "江西省-吉安市-井冈山市" + } + ], + "areaCode": 360800000000, + "name": "吉安市", + "parentCode": 360000000000, + "mergerName": "江西省-吉安市" + }, + { + "children": [ + { + "areaCode": 360901000000, + "name": "市辖区", + "parentCode": 360900000000, + "mergerName": "江西省-宜春市-市辖区" + }, + { + "areaCode": 360902000000, + "name": "袁州区", + "parentCode": 360900000000, + "mergerName": "江西省-宜春市-袁州区" + }, + { + "areaCode": 360921000000, + "name": "奉新县", + "parentCode": 360900000000, + "mergerName": "江西省-宜春市-奉新县" + }, + { + "areaCode": 360922000000, + "name": "万载县", + "parentCode": 360900000000, + "mergerName": "江西省-宜春市-万载县" + }, + { + "areaCode": 360923000000, + "name": "上高县", + "parentCode": 360900000000, + "mergerName": "江西省-宜春市-上高县" + }, + { + "areaCode": 360924000000, + "name": "宜丰县", + "parentCode": 360900000000, + "mergerName": "江西省-宜春市-宜丰县" + }, + { + "areaCode": 360925000000, + "name": "靖安县", + "parentCode": 360900000000, + "mergerName": "江西省-宜春市-靖安县" + }, + { + "areaCode": 360926000000, + "name": "铜鼓县", + "parentCode": 360900000000, + "mergerName": "江西省-宜春市-铜鼓县" + }, + { + "areaCode": 360981000000, + "name": "丰城市", + "parentCode": 360900000000, + "mergerName": "江西省-宜春市-丰城市" + }, + { + "areaCode": 360982000000, + "name": "樟树市", + "parentCode": 360900000000, + "mergerName": "江西省-宜春市-樟树市" + }, + { + "areaCode": 360983000000, + "name": "高安市", + "parentCode": 360900000000, + "mergerName": "江西省-宜春市-高安市" + } + ], + "areaCode": 360900000000, + "name": "宜春市", + "parentCode": 360000000000, + "mergerName": "江西省-宜春市" + }, + { + "children": [ + { + "areaCode": 361001000000, + "name": "市辖区", + "parentCode": 361000000000, + "mergerName": "江西省-抚州市-市辖区" + }, + { + "areaCode": 361002000000, + "name": "临川区", + "parentCode": 361000000000, + "mergerName": "江西省-抚州市-临川区" + }, + { + "areaCode": 361003000000, + "name": "东乡区", + "parentCode": 361000000000, + "mergerName": "江西省-抚州市-东乡区" + }, + { + "areaCode": 361021000000, + "name": "南城县", + "parentCode": 361000000000, + "mergerName": "江西省-抚州市-南城县" + }, + { + "areaCode": 361022000000, + "name": "黎川县", + "parentCode": 361000000000, + "mergerName": "江西省-抚州市-黎川县" + }, + { + "areaCode": 361023000000, + "name": "南丰县", + "parentCode": 361000000000, + "mergerName": "江西省-抚州市-南丰县" + }, + { + "areaCode": 361024000000, + "name": "崇仁县", + "parentCode": 361000000000, + "mergerName": "江西省-抚州市-崇仁县" + }, + { + "areaCode": 361025000000, + "name": "乐安县", + "parentCode": 361000000000, + "mergerName": "江西省-抚州市-乐安县" + }, + { + "areaCode": 361026000000, + "name": "宜黄县", + "parentCode": 361000000000, + "mergerName": "江西省-抚州市-宜黄县" + }, + { + "areaCode": 361027000000, + "name": "金溪县", + "parentCode": 361000000000, + "mergerName": "江西省-抚州市-金溪县" + }, + { + "areaCode": 361028000000, + "name": "资溪县", + "parentCode": 361000000000, + "mergerName": "江西省-抚州市-资溪县" + }, + { + "areaCode": 361030000000, + "name": "广昌县", + "parentCode": 361000000000, + "mergerName": "江西省-抚州市-广昌县" + } + ], + "areaCode": 361000000000, + "name": "抚州市", + "parentCode": 360000000000, + "mergerName": "江西省-抚州市" + }, + { + "children": [ + { + "areaCode": 361101000000, + "name": "市辖区", + "parentCode": 361100000000, + "mergerName": "江西省-上饶市-市辖区" + }, + { + "areaCode": 361102000000, + "name": "信州区", + "parentCode": 361100000000, + "mergerName": "江西省-上饶市-信州区" + }, + { + "areaCode": 361103000000, + "name": "广丰区", + "parentCode": 361100000000, + "mergerName": "江西省-上饶市-广丰区" + }, + { + "areaCode": 361121000000, + "name": "上饶县", + "parentCode": 361100000000, + "mergerName": "江西省-上饶市-上饶县" + }, + { + "areaCode": 361123000000, + "name": "玉山县", + "parentCode": 361100000000, + "mergerName": "江西省-上饶市-玉山县" + }, + { + "areaCode": 361124000000, + "name": "铅山县", + "parentCode": 361100000000, + "mergerName": "江西省-上饶市-铅山县" + }, + { + "areaCode": 361125000000, + "name": "横峰县", + "parentCode": 361100000000, + "mergerName": "江西省-上饶市-横峰县" + }, + { + "areaCode": 361126000000, + "name": "弋阳县", + "parentCode": 361100000000, + "mergerName": "江西省-上饶市-弋阳县" + }, + { + "areaCode": 361127000000, + "name": "余干县", + "parentCode": 361100000000, + "mergerName": "江西省-上饶市-余干县" + }, + { + "areaCode": 361128000000, + "name": "鄱阳县", + "parentCode": 361100000000, + "mergerName": "江西省-上饶市-鄱阳县" + }, + { + "areaCode": 361129000000, + "name": "万年县", + "parentCode": 361100000000, + "mergerName": "江西省-上饶市-万年县" + }, + { + "areaCode": 361130000000, + "name": "婺源县", + "parentCode": 361100000000, + "mergerName": "江西省-上饶市-婺源县" + }, + { + "areaCode": 361181000000, + "name": "德兴市", + "parentCode": 361100000000, + "mergerName": "江西省-上饶市-德兴市" + } + ], + "areaCode": 361100000000, + "name": "上饶市", + "parentCode": 360000000000, + "mergerName": "江西省-上饶市" + } + ], + "areaCode": 360000000000, + "name": "江西省", + "parentCode": 0, + "mergerName": "-江西省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 370101000000, + "name": "市辖区", + "parentCode": 370100000000, + "mergerName": "山东省-济南市-市辖区" + }, + { + "areaCode": 370102000000, + "name": "历下区", + "parentCode": 370100000000, + "mergerName": "山东省-济南市-历下区" + }, + { + "areaCode": 370103000000, + "name": "市中区", + "parentCode": 370100000000, + "mergerName": "山东省-济南市-市中区" + }, + { + "areaCode": 370104000000, + "name": "槐荫区", + "parentCode": 370100000000, + "mergerName": "山东省-济南市-槐荫区" + }, + { + "areaCode": 370105000000, + "name": "天桥区", + "parentCode": 370100000000, + "mergerName": "山东省-济南市-天桥区" + }, + { + "areaCode": 370112000000, + "name": "历城区", + "parentCode": 370100000000, + "mergerName": "山东省-济南市-历城区" + }, + { + "areaCode": 370113000000, + "name": "长清区", + "parentCode": 370100000000, + "mergerName": "山东省-济南市-长清区" + }, + { + "areaCode": 370114000000, + "name": "章丘区", + "parentCode": 370100000000, + "mergerName": "山东省-济南市-章丘区" + }, + { + "areaCode": 370115000000, + "name": "济阳区", + "parentCode": 370100000000, + "mergerName": "山东省-济南市-济阳区" + }, + { + "areaCode": 370124000000, + "name": "平阴县", + "parentCode": 370100000000, + "mergerName": "山东省-济南市-平阴县" + }, + { + "areaCode": 370126000000, + "name": "商河县", + "parentCode": 370100000000, + "mergerName": "山东省-济南市-商河县" + }, + { + "areaCode": 370171000000, + "name": "济南高新技术产业开发区", + "parentCode": 370100000000, + "mergerName": "山东省-济南市-济南高新技术产业开发区" + } + ], + "areaCode": 370100000000, + "name": "济南市", + "parentCode": 370000000000, + "mergerName": "山东省-济南市" + }, + { + "children": [ + { + "areaCode": 370201000000, + "name": "市辖区", + "parentCode": 370200000000, + "mergerName": "山东省-青岛市-市辖区" + }, + { + "areaCode": 370202000000, + "name": "市南区", + "parentCode": 370200000000, + "mergerName": "山东省-青岛市-市南区" + }, + { + "areaCode": 370203000000, + "name": "市北区", + "parentCode": 370200000000, + "mergerName": "山东省-青岛市-市北区" + }, + { + "areaCode": 370211000000, + "name": "黄岛区", + "parentCode": 370200000000, + "mergerName": "山东省-青岛市-黄岛区" + }, + { + "areaCode": 370212000000, + "name": "崂山区", + "parentCode": 370200000000, + "mergerName": "山东省-青岛市-崂山区" + }, + { + "areaCode": 370213000000, + "name": "李沧区", + "parentCode": 370200000000, + "mergerName": "山东省-青岛市-李沧区" + }, + { + "areaCode": 370214000000, + "name": "城阳区", + "parentCode": 370200000000, + "mergerName": "山东省-青岛市-城阳区" + }, + { + "areaCode": 370215000000, + "name": "即墨区", + "parentCode": 370200000000, + "mergerName": "山东省-青岛市-即墨区" + }, + { + "areaCode": 370271000000, + "name": "青岛高新技术产业开发区", + "parentCode": 370200000000, + "mergerName": "山东省-青岛市-青岛高新技术产业开发区" + }, + { + "areaCode": 370281000000, + "name": "胶州市", + "parentCode": 370200000000, + "mergerName": "山东省-青岛市-胶州市" + }, + { + "areaCode": 370283000000, + "name": "平度市", + "parentCode": 370200000000, + "mergerName": "山东省-青岛市-平度市" + }, + { + "areaCode": 370285000000, + "name": "莱西市", + "parentCode": 370200000000, + "mergerName": "山东省-青岛市-莱西市" + } + ], + "areaCode": 370200000000, + "name": "青岛市", + "parentCode": 370000000000, + "mergerName": "山东省-青岛市" + }, + { + "children": [ + { + "areaCode": 370301000000, + "name": "市辖区", + "parentCode": 370300000000, + "mergerName": "山东省-淄博市-市辖区" + }, + { + "areaCode": 370302000000, + "name": "淄川区", + "parentCode": 370300000000, + "mergerName": "山东省-淄博市-淄川区" + }, + { + "areaCode": 370303000000, + "name": "张店区", + "parentCode": 370300000000, + "mergerName": "山东省-淄博市-张店区" + }, + { + "areaCode": 370304000000, + "name": "博山区", + "parentCode": 370300000000, + "mergerName": "山东省-淄博市-博山区" + }, + { + "areaCode": 370305000000, + "name": "临淄区", + "parentCode": 370300000000, + "mergerName": "山东省-淄博市-临淄区" + }, + { + "areaCode": 370306000000, + "name": "周村区", + "parentCode": 370300000000, + "mergerName": "山东省-淄博市-周村区" + }, + { + "areaCode": 370321000000, + "name": "桓台县", + "parentCode": 370300000000, + "mergerName": "山东省-淄博市-桓台县" + }, + { + "areaCode": 370322000000, + "name": "高青县", + "parentCode": 370300000000, + "mergerName": "山东省-淄博市-高青县" + }, + { + "areaCode": 370323000000, + "name": "沂源县", + "parentCode": 370300000000, + "mergerName": "山东省-淄博市-沂源县" + } + ], + "areaCode": 370300000000, + "name": "淄博市", + "parentCode": 370000000000, + "mergerName": "山东省-淄博市" + }, + { + "children": [ + { + "areaCode": 370401000000, + "name": "市辖区", + "parentCode": 370400000000, + "mergerName": "山东省-枣庄市-市辖区" + }, + { + "areaCode": 370402000000, + "name": "市中区", + "parentCode": 370400000000, + "mergerName": "山东省-枣庄市-市中区" + }, + { + "areaCode": 370403000000, + "name": "薛城区", + "parentCode": 370400000000, + "mergerName": "山东省-枣庄市-薛城区" + }, + { + "areaCode": 370404000000, + "name": "峄城区", + "parentCode": 370400000000, + "mergerName": "山东省-枣庄市-峄城区" + }, + { + "areaCode": 370405000000, + "name": "台儿庄区", + "parentCode": 370400000000, + "mergerName": "山东省-枣庄市-台儿庄区" + }, + { + "areaCode": 370406000000, + "name": "山亭区", + "parentCode": 370400000000, + "mergerName": "山东省-枣庄市-山亭区" + }, + { + "areaCode": 370481000000, + "name": "滕州市", + "parentCode": 370400000000, + "mergerName": "山东省-枣庄市-滕州市" + } + ], + "areaCode": 370400000000, + "name": "枣庄市", + "parentCode": 370000000000, + "mergerName": "山东省-枣庄市" + }, + { + "children": [ + { + "areaCode": 370501000000, + "name": "市辖区", + "parentCode": 370500000000, + "mergerName": "山东省-东营市-市辖区" + }, + { + "areaCode": 370502000000, + "name": "东营区", + "parentCode": 370500000000, + "mergerName": "山东省-东营市-东营区" + }, + { + "areaCode": 370503000000, + "name": "河口区", + "parentCode": 370500000000, + "mergerName": "山东省-东营市-河口区" + }, + { + "areaCode": 370505000000, + "name": "垦利区", + "parentCode": 370500000000, + "mergerName": "山东省-东营市-垦利区" + }, + { + "areaCode": 370522000000, + "name": "利津县", + "parentCode": 370500000000, + "mergerName": "山东省-东营市-利津县" + }, + { + "areaCode": 370523000000, + "name": "广饶县", + "parentCode": 370500000000, + "mergerName": "山东省-东营市-广饶县" + }, + { + "areaCode": 370571000000, + "name": "东营经济技术开发区", + "parentCode": 370500000000, + "mergerName": "山东省-东营市-东营经济技术开发区" + }, + { + "areaCode": 370572000000, + "name": "东营港经济开发区", + "parentCode": 370500000000, + "mergerName": "山东省-东营市-东营港经济开发区" + } + ], + "areaCode": 370500000000, + "name": "东营市", + "parentCode": 370000000000, + "mergerName": "山东省-东营市" + }, + { + "children": [ + { + "areaCode": 370601000000, + "name": "市辖区", + "parentCode": 370600000000, + "mergerName": "山东省-烟台市-市辖区" + }, + { + "areaCode": 370602000000, + "name": "芝罘区", + "parentCode": 370600000000, + "mergerName": "山东省-烟台市-芝罘区" + }, + { + "areaCode": 370611000000, + "name": "福山区", + "parentCode": 370600000000, + "mergerName": "山东省-烟台市-福山区" + }, + { + "areaCode": 370612000000, + "name": "牟平区", + "parentCode": 370600000000, + "mergerName": "山东省-烟台市-牟平区" + }, + { + "areaCode": 370613000000, + "name": "莱山区", + "parentCode": 370600000000, + "mergerName": "山东省-烟台市-莱山区" + }, + { + "areaCode": 370634000000, + "name": "长岛县", + "parentCode": 370600000000, + "mergerName": "山东省-烟台市-长岛县" + }, + { + "areaCode": 370671000000, + "name": "烟台高新技术产业开发区", + "parentCode": 370600000000, + "mergerName": "山东省-烟台市-烟台高新技术产业开发区" + }, + { + "areaCode": 370672000000, + "name": "烟台经济技术开发区", + "parentCode": 370600000000, + "mergerName": "山东省-烟台市-烟台经济技术开发区" + }, + { + "areaCode": 370681000000, + "name": "龙口市", + "parentCode": 370600000000, + "mergerName": "山东省-烟台市-龙口市" + }, + { + "areaCode": 370682000000, + "name": "莱阳市", + "parentCode": 370600000000, + "mergerName": "山东省-烟台市-莱阳市" + }, + { + "areaCode": 370683000000, + "name": "莱州市", + "parentCode": 370600000000, + "mergerName": "山东省-烟台市-莱州市" + }, + { + "areaCode": 370684000000, + "name": "蓬莱市", + "parentCode": 370600000000, + "mergerName": "山东省-烟台市-蓬莱市" + }, + { + "areaCode": 370685000000, + "name": "招远市", + "parentCode": 370600000000, + "mergerName": "山东省-烟台市-招远市" + }, + { + "areaCode": 370686000000, + "name": "栖霞市", + "parentCode": 370600000000, + "mergerName": "山东省-烟台市-栖霞市" + }, + { + "areaCode": 370687000000, + "name": "海阳市", + "parentCode": 370600000000, + "mergerName": "山东省-烟台市-海阳市" + } + ], + "areaCode": 370600000000, + "name": "烟台市", + "parentCode": 370000000000, + "mergerName": "山东省-烟台市" + }, + { + "children": [ + { + "areaCode": 370701000000, + "name": "市辖区", + "parentCode": 370700000000, + "mergerName": "山东省-潍坊市-市辖区" + }, + { + "areaCode": 370702000000, + "name": "潍城区", + "parentCode": 370700000000, + "mergerName": "山东省-潍坊市-潍城区" + }, + { + "areaCode": 370703000000, + "name": "寒亭区", + "parentCode": 370700000000, + "mergerName": "山东省-潍坊市-寒亭区" + }, + { + "areaCode": 370704000000, + "name": "坊子区", + "parentCode": 370700000000, + "mergerName": "山东省-潍坊市-坊子区" + }, + { + "areaCode": 370705000000, + "name": "奎文区", + "parentCode": 370700000000, + "mergerName": "山东省-潍坊市-奎文区" + }, + { + "areaCode": 370724000000, + "name": "临朐县", + "parentCode": 370700000000, + "mergerName": "山东省-潍坊市-临朐县" + }, + { + "areaCode": 370725000000, + "name": "昌乐县", + "parentCode": 370700000000, + "mergerName": "山东省-潍坊市-昌乐县" + }, + { + "areaCode": 370772000000, + "name": "潍坊滨海经济技术开发区", + "parentCode": 370700000000, + "mergerName": "山东省-潍坊市-潍坊滨海经济技术开发区" + }, + { + "areaCode": 370781000000, + "name": "青州市", + "parentCode": 370700000000, + "mergerName": "山东省-潍坊市-青州市" + }, + { + "areaCode": 370782000000, + "name": "诸城市", + "parentCode": 370700000000, + "mergerName": "山东省-潍坊市-诸城市" + }, + { + "areaCode": 370783000000, + "name": "寿光市", + "parentCode": 370700000000, + "mergerName": "山东省-潍坊市-寿光市" + }, + { + "areaCode": 370784000000, + "name": "安丘市", + "parentCode": 370700000000, + "mergerName": "山东省-潍坊市-安丘市" + }, + { + "areaCode": 370785000000, + "name": "高密市", + "parentCode": 370700000000, + "mergerName": "山东省-潍坊市-高密市" + }, + { + "areaCode": 370786000000, + "name": "昌邑市", + "parentCode": 370700000000, + "mergerName": "山东省-潍坊市-昌邑市" + } + ], + "areaCode": 370700000000, + "name": "潍坊市", + "parentCode": 370000000000, + "mergerName": "山东省-潍坊市" + }, + { + "children": [ + { + "areaCode": 370801000000, + "name": "市辖区", + "parentCode": 370800000000, + "mergerName": "山东省-济宁市-市辖区" + }, + { + "areaCode": 370811000000, + "name": "任城区", + "parentCode": 370800000000, + "mergerName": "山东省-济宁市-任城区" + }, + { + "areaCode": 370812000000, + "name": "兖州区", + "parentCode": 370800000000, + "mergerName": "山东省-济宁市-兖州区" + }, + { + "areaCode": 370826000000, + "name": "微山县", + "parentCode": 370800000000, + "mergerName": "山东省-济宁市-微山县" + }, + { + "areaCode": 370827000000, + "name": "鱼台县", + "parentCode": 370800000000, + "mergerName": "山东省-济宁市-鱼台县" + }, + { + "areaCode": 370828000000, + "name": "金乡县", + "parentCode": 370800000000, + "mergerName": "山东省-济宁市-金乡县" + }, + { + "areaCode": 370829000000, + "name": "嘉祥县", + "parentCode": 370800000000, + "mergerName": "山东省-济宁市-嘉祥县" + }, + { + "areaCode": 370830000000, + "name": "汶上县", + "parentCode": 370800000000, + "mergerName": "山东省-济宁市-汶上县" + }, + { + "areaCode": 370831000000, + "name": "泗水县", + "parentCode": 370800000000, + "mergerName": "山东省-济宁市-泗水县" + }, + { + "areaCode": 370832000000, + "name": "梁山县", + "parentCode": 370800000000, + "mergerName": "山东省-济宁市-梁山县" + }, + { + "areaCode": 370871000000, + "name": "济宁高新技术产业开发区", + "parentCode": 370800000000, + "mergerName": "山东省-济宁市-济宁高新技术产业开发区" + }, + { + "areaCode": 370881000000, + "name": "曲阜市", + "parentCode": 370800000000, + "mergerName": "山东省-济宁市-曲阜市" + }, + { + "areaCode": 370883000000, + "name": "邹城市", + "parentCode": 370800000000, + "mergerName": "山东省-济宁市-邹城市" + } + ], + "areaCode": 370800000000, + "name": "济宁市", + "parentCode": 370000000000, + "mergerName": "山东省-济宁市" + }, + { + "children": [ + { + "areaCode": 370901000000, + "name": "市辖区", + "parentCode": 370900000000, + "mergerName": "山东省-泰安市-市辖区" + }, + { + "areaCode": 370902000000, + "name": "泰山区", + "parentCode": 370900000000, + "mergerName": "山东省-泰安市-泰山区" + }, + { + "areaCode": 370911000000, + "name": "岱岳区", + "parentCode": 370900000000, + "mergerName": "山东省-泰安市-岱岳区" + }, + { + "areaCode": 370921000000, + "name": "宁阳县", + "parentCode": 370900000000, + "mergerName": "山东省-泰安市-宁阳县" + }, + { + "areaCode": 370923000000, + "name": "东平县", + "parentCode": 370900000000, + "mergerName": "山东省-泰安市-东平县" + }, + { + "areaCode": 370982000000, + "name": "新泰市", + "parentCode": 370900000000, + "mergerName": "山东省-泰安市-新泰市" + }, + { + "areaCode": 370983000000, + "name": "肥城市", + "parentCode": 370900000000, + "mergerName": "山东省-泰安市-肥城市" + } + ], + "areaCode": 370900000000, + "name": "泰安市", + "parentCode": 370000000000, + "mergerName": "山东省-泰安市" + }, + { + "children": [ + { + "areaCode": 371001000000, + "name": "市辖区", + "parentCode": 371000000000, + "mergerName": "山东省-威海市-市辖区" + }, + { + "areaCode": 371002000000, + "name": "环翠区", + "parentCode": 371000000000, + "mergerName": "山东省-威海市-环翠区" + }, + { + "areaCode": 371003000000, + "name": "文登区", + "parentCode": 371000000000, + "mergerName": "山东省-威海市-文登区" + }, + { + "areaCode": 371071000000, + "name": "威海火炬高技术产业开发区", + "parentCode": 371000000000, + "mergerName": "山东省-威海市-威海火炬高技术产业开发区" + }, + { + "areaCode": 371072000000, + "name": "威海经济技术开发区", + "parentCode": 371000000000, + "mergerName": "山东省-威海市-威海经济技术开发区" + }, + { + "areaCode": 371073000000, + "name": "威海临港经济技术开发区", + "parentCode": 371000000000, + "mergerName": "山东省-威海市-威海临港经济技术开发区" + }, + { + "areaCode": 371082000000, + "name": "荣成市", + "parentCode": 371000000000, + "mergerName": "山东省-威海市-荣成市" + }, + { + "areaCode": 371083000000, + "name": "乳山市", + "parentCode": 371000000000, + "mergerName": "山东省-威海市-乳山市" + } + ], + "areaCode": 371000000000, + "name": "威海市", + "parentCode": 370000000000, + "mergerName": "山东省-威海市" + }, + { + "children": [ + { + "areaCode": 371101000000, + "name": "市辖区", + "parentCode": 371100000000, + "mergerName": "山东省-日照市-市辖区" + }, + { + "areaCode": 371102000000, + "name": "东港区", + "parentCode": 371100000000, + "mergerName": "山东省-日照市-东港区" + }, + { + "areaCode": 371103000000, + "name": "岚山区", + "parentCode": 371100000000, + "mergerName": "山东省-日照市-岚山区" + }, + { + "areaCode": 371121000000, + "name": "五莲县", + "parentCode": 371100000000, + "mergerName": "山东省-日照市-五莲县" + }, + { "areaCode": 371122000000, "name": "莒县", "parentCode": 371100000000, "mergerName": "山东省-日照市-莒县" }, + { + "areaCode": 371171000000, + "name": "日照经济技术开发区", + "parentCode": 371100000000, + "mergerName": "山东省-日照市-日照经济技术开发区" + } + ], + "areaCode": 371100000000, + "name": "日照市", + "parentCode": 370000000000, + "mergerName": "山东省-日照市" + }, + { + "children": [ + { + "areaCode": 371201000000, + "name": "市辖区", + "parentCode": 371200000000, + "mergerName": "山东省-莱芜市-市辖区" + }, + { + "areaCode": 371202000000, + "name": "莱城区", + "parentCode": 371200000000, + "mergerName": "山东省-莱芜市-莱城区" + }, + { + "areaCode": 371203000000, + "name": "钢城区", + "parentCode": 371200000000, + "mergerName": "山东省-莱芜市-钢城区" + } + ], + "areaCode": 371200000000, + "name": "莱芜市", + "parentCode": 370000000000, + "mergerName": "山东省-莱芜市" + }, + { + "children": [ + { + "areaCode": 371301000000, + "name": "市辖区", + "parentCode": 371300000000, + "mergerName": "山东省-临沂市-市辖区" + }, + { + "areaCode": 371302000000, + "name": "兰山区", + "parentCode": 371300000000, + "mergerName": "山东省-临沂市-兰山区" + }, + { + "areaCode": 371311000000, + "name": "罗庄区", + "parentCode": 371300000000, + "mergerName": "山东省-临沂市-罗庄区" + }, + { + "areaCode": 371312000000, + "name": "河东区", + "parentCode": 371300000000, + "mergerName": "山东省-临沂市-河东区" + }, + { + "areaCode": 371321000000, + "name": "沂南县", + "parentCode": 371300000000, + "mergerName": "山东省-临沂市-沂南县" + }, + { + "areaCode": 371322000000, + "name": "郯城县", + "parentCode": 371300000000, + "mergerName": "山东省-临沂市-郯城县" + }, + { + "areaCode": 371323000000, + "name": "沂水县", + "parentCode": 371300000000, + "mergerName": "山东省-临沂市-沂水县" + }, + { + "areaCode": 371324000000, + "name": "兰陵县", + "parentCode": 371300000000, + "mergerName": "山东省-临沂市-兰陵县" + }, + { "areaCode": 371325000000, "name": "费县", "parentCode": 371300000000, "mergerName": "山东省-临沂市-费县" }, + { + "areaCode": 371326000000, + "name": "平邑县", + "parentCode": 371300000000, + "mergerName": "山东省-临沂市-平邑县" + }, + { + "areaCode": 371327000000, + "name": "莒南县", + "parentCode": 371300000000, + "mergerName": "山东省-临沂市-莒南县" + }, + { + "areaCode": 371328000000, + "name": "蒙阴县", + "parentCode": 371300000000, + "mergerName": "山东省-临沂市-蒙阴县" + }, + { + "areaCode": 371329000000, + "name": "临沭县", + "parentCode": 371300000000, + "mergerName": "山东省-临沂市-临沭县" + }, + { + "areaCode": 371371000000, + "name": "临沂高新技术产业开发区", + "parentCode": 371300000000, + "mergerName": "山东省-临沂市-临沂高新技术产业开发区" + }, + { + "areaCode": 371372000000, + "name": "临沂经济技术开发区", + "parentCode": 371300000000, + "mergerName": "山东省-临沂市-临沂经济技术开发区" + }, + { + "areaCode": 371373000000, + "name": "临沂临港经济开发区", + "parentCode": 371300000000, + "mergerName": "山东省-临沂市-临沂临港经济开发区" + } + ], + "areaCode": 371300000000, + "name": "临沂市", + "parentCode": 370000000000, + "mergerName": "山东省-临沂市" + }, + { + "children": [ + { + "areaCode": 371401000000, + "name": "市辖区", + "parentCode": 371400000000, + "mergerName": "山东省-德州市-市辖区" + }, + { + "areaCode": 371402000000, + "name": "德城区", + "parentCode": 371400000000, + "mergerName": "山东省-德州市-德城区" + }, + { + "areaCode": 371403000000, + "name": "陵城区", + "parentCode": 371400000000, + "mergerName": "山东省-德州市-陵城区" + }, + { + "areaCode": 371422000000, + "name": "宁津县", + "parentCode": 371400000000, + "mergerName": "山东省-德州市-宁津县" + }, + { + "areaCode": 371423000000, + "name": "庆云县", + "parentCode": 371400000000, + "mergerName": "山东省-德州市-庆云县" + }, + { + "areaCode": 371424000000, + "name": "临邑县", + "parentCode": 371400000000, + "mergerName": "山东省-德州市-临邑县" + }, + { + "areaCode": 371425000000, + "name": "齐河县", + "parentCode": 371400000000, + "mergerName": "山东省-德州市-齐河县" + }, + { + "areaCode": 371426000000, + "name": "平原县", + "parentCode": 371400000000, + "mergerName": "山东省-德州市-平原县" + }, + { + "areaCode": 371427000000, + "name": "夏津县", + "parentCode": 371400000000, + "mergerName": "山东省-德州市-夏津县" + }, + { + "areaCode": 371428000000, + "name": "武城县", + "parentCode": 371400000000, + "mergerName": "山东省-德州市-武城县" + }, + { + "areaCode": 371471000000, + "name": "德州经济技术开发区", + "parentCode": 371400000000, + "mergerName": "山东省-德州市-德州经济技术开发区" + }, + { + "areaCode": 371472000000, + "name": "德州运河经济开发区", + "parentCode": 371400000000, + "mergerName": "山东省-德州市-德州运河经济开发区" + }, + { + "areaCode": 371481000000, + "name": "乐陵市", + "parentCode": 371400000000, + "mergerName": "山东省-德州市-乐陵市" + }, + { + "areaCode": 371482000000, + "name": "禹城市", + "parentCode": 371400000000, + "mergerName": "山东省-德州市-禹城市" + } + ], + "areaCode": 371400000000, + "name": "德州市", + "parentCode": 370000000000, + "mergerName": "山东省-德州市" + }, + { + "children": [ + { + "areaCode": 371501000000, + "name": "市辖区", + "parentCode": 371500000000, + "mergerName": "山东省-聊城市-市辖区" + }, + { + "areaCode": 371502000000, + "name": "东昌府区", + "parentCode": 371500000000, + "mergerName": "山东省-聊城市-东昌府区" + }, + { + "areaCode": 371521000000, + "name": "阳谷县", + "parentCode": 371500000000, + "mergerName": "山东省-聊城市-阳谷县" + }, + { "areaCode": 371522000000, "name": "莘县", "parentCode": 371500000000, "mergerName": "山东省-聊城市-莘县" }, + { + "areaCode": 371523000000, + "name": "茌平县", + "parentCode": 371500000000, + "mergerName": "山东省-聊城市-茌平县" + }, + { + "areaCode": 371524000000, + "name": "东阿县", + "parentCode": 371500000000, + "mergerName": "山东省-聊城市-东阿县" + }, + { "areaCode": 371525000000, "name": "冠县", "parentCode": 371500000000, "mergerName": "山东省-聊城市-冠县" }, + { + "areaCode": 371526000000, + "name": "高唐县", + "parentCode": 371500000000, + "mergerName": "山东省-聊城市-高唐县" + }, + { + "areaCode": 371581000000, + "name": "临清市", + "parentCode": 371500000000, + "mergerName": "山东省-聊城市-临清市" + } + ], + "areaCode": 371500000000, + "name": "聊城市", + "parentCode": 370000000000, + "mergerName": "山东省-聊城市" + }, + { + "children": [ + { + "areaCode": 371601000000, + "name": "市辖区", + "parentCode": 371600000000, + "mergerName": "山东省-滨州市-市辖区" + }, + { + "areaCode": 371602000000, + "name": "滨城区", + "parentCode": 371600000000, + "mergerName": "山东省-滨州市-滨城区" + }, + { + "areaCode": 371603000000, + "name": "沾化区", + "parentCode": 371600000000, + "mergerName": "山东省-滨州市-沾化区" + }, + { + "areaCode": 371621000000, + "name": "惠民县", + "parentCode": 371600000000, + "mergerName": "山东省-滨州市-惠民县" + }, + { + "areaCode": 371622000000, + "name": "阳信县", + "parentCode": 371600000000, + "mergerName": "山东省-滨州市-阳信县" + }, + { + "areaCode": 371623000000, + "name": "无棣县", + "parentCode": 371600000000, + "mergerName": "山东省-滨州市-无棣县" + }, + { + "areaCode": 371625000000, + "name": "博兴县", + "parentCode": 371600000000, + "mergerName": "山东省-滨州市-博兴县" + }, + { + "areaCode": 371681000000, + "name": "邹平市", + "parentCode": 371600000000, + "mergerName": "山东省-滨州市-邹平市" + } + ], + "areaCode": 371600000000, + "name": "滨州市", + "parentCode": 370000000000, + "mergerName": "山东省-滨州市" + }, + { + "children": [ + { + "areaCode": 371701000000, + "name": "市辖区", + "parentCode": 371700000000, + "mergerName": "山东省-菏泽市-市辖区" + }, + { + "areaCode": 371702000000, + "name": "牡丹区", + "parentCode": 371700000000, + "mergerName": "山东省-菏泽市-牡丹区" + }, + { + "areaCode": 371703000000, + "name": "定陶区", + "parentCode": 371700000000, + "mergerName": "山东省-菏泽市-定陶区" + }, + { "areaCode": 371721000000, "name": "曹县", "parentCode": 371700000000, "mergerName": "山东省-菏泽市-曹县" }, + { "areaCode": 371722000000, "name": "单县", "parentCode": 371700000000, "mergerName": "山东省-菏泽市-单县" }, + { + "areaCode": 371723000000, + "name": "成武县", + "parentCode": 371700000000, + "mergerName": "山东省-菏泽市-成武县" + }, + { + "areaCode": 371724000000, + "name": "巨野县", + "parentCode": 371700000000, + "mergerName": "山东省-菏泽市-巨野县" + }, + { + "areaCode": 371725000000, + "name": "郓城县", + "parentCode": 371700000000, + "mergerName": "山东省-菏泽市-郓城县" + }, + { + "areaCode": 371726000000, + "name": "鄄城县", + "parentCode": 371700000000, + "mergerName": "山东省-菏泽市-鄄城县" + }, + { + "areaCode": 371728000000, + "name": "东明县", + "parentCode": 371700000000, + "mergerName": "山东省-菏泽市-东明县" + }, + { + "areaCode": 371771000000, + "name": "菏泽经济技术开发区", + "parentCode": 371700000000, + "mergerName": "山东省-菏泽市-菏泽经济技术开发区" + }, + { + "areaCode": 371772000000, + "name": "菏泽高新技术开发区", + "parentCode": 371700000000, + "mergerName": "山东省-菏泽市-菏泽高新技术开发区" + } + ], + "areaCode": 371700000000, + "name": "菏泽市", + "parentCode": 370000000000, + "mergerName": "山东省-菏泽市" + } + ], + "areaCode": 370000000000, + "name": "山东省", + "parentCode": 0, + "mergerName": "-山东省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 410101000000, + "name": "市辖区", + "parentCode": 410100000000, + "mergerName": "河南省-郑州市-市辖区" + }, + { + "areaCode": 410102000000, + "name": "中原区", + "parentCode": 410100000000, + "mergerName": "河南省-郑州市-中原区" + }, + { + "areaCode": 410103000000, + "name": "二七区", + "parentCode": 410100000000, + "mergerName": "河南省-郑州市-二七区" + }, + { + "areaCode": 410104000000, + "name": "管城回族区", + "parentCode": 410100000000, + "mergerName": "河南省-郑州市-管城回族区" + }, + { + "areaCode": 410105000000, + "name": "金水区", + "parentCode": 410100000000, + "mergerName": "河南省-郑州市-金水区" + }, + { + "areaCode": 410106000000, + "name": "上街区", + "parentCode": 410100000000, + "mergerName": "河南省-郑州市-上街区" + }, + { + "areaCode": 410108000000, + "name": "惠济区", + "parentCode": 410100000000, + "mergerName": "河南省-郑州市-惠济区" + }, + { + "areaCode": 410122000000, + "name": "中牟县", + "parentCode": 410100000000, + "mergerName": "河南省-郑州市-中牟县" + }, + { + "areaCode": 410171000000, + "name": "郑州经济技术开发区", + "parentCode": 410100000000, + "mergerName": "河南省-郑州市-郑州经济技术开发区" + }, + { + "areaCode": 410172000000, + "name": "郑州高新技术产业开发区", + "parentCode": 410100000000, + "mergerName": "河南省-郑州市-郑州高新技术产业开发区" + }, + { + "areaCode": 410173000000, + "name": "郑州航空港经济综合实验区", + "parentCode": 410100000000, + "mergerName": "河南省-郑州市-郑州航空港经济综合实验区" + }, + { + "areaCode": 410181000000, + "name": "巩义市", + "parentCode": 410100000000, + "mergerName": "河南省-郑州市-巩义市" + }, + { + "areaCode": 410182000000, + "name": "荥阳市", + "parentCode": 410100000000, + "mergerName": "河南省-郑州市-荥阳市" + }, + { + "areaCode": 410183000000, + "name": "新密市", + "parentCode": 410100000000, + "mergerName": "河南省-郑州市-新密市" + }, + { + "areaCode": 410184000000, + "name": "新郑市", + "parentCode": 410100000000, + "mergerName": "河南省-郑州市-新郑市" + }, + { + "areaCode": 410185000000, + "name": "登封市", + "parentCode": 410100000000, + "mergerName": "河南省-郑州市-登封市" + } + ], + "areaCode": 410100000000, + "name": "郑州市", + "parentCode": 410000000000, + "mergerName": "河南省-郑州市" + }, + { + "children": [ + { + "areaCode": 410201000000, + "name": "市辖区", + "parentCode": 410200000000, + "mergerName": "河南省-开封市-市辖区" + }, + { + "areaCode": 410202000000, + "name": "龙亭区", + "parentCode": 410200000000, + "mergerName": "河南省-开封市-龙亭区" + }, + { + "areaCode": 410203000000, + "name": "顺河回族区", + "parentCode": 410200000000, + "mergerName": "河南省-开封市-顺河回族区" + }, + { + "areaCode": 410204000000, + "name": "鼓楼区", + "parentCode": 410200000000, + "mergerName": "河南省-开封市-鼓楼区" + }, + { + "areaCode": 410205000000, + "name": "禹王台区", + "parentCode": 410200000000, + "mergerName": "河南省-开封市-禹王台区" + }, + { + "areaCode": 410212000000, + "name": "祥符区", + "parentCode": 410200000000, + "mergerName": "河南省-开封市-祥符区" + }, + { "areaCode": 410221000000, "name": "杞县", "parentCode": 410200000000, "mergerName": "河南省-开封市-杞县" }, + { + "areaCode": 410222000000, + "name": "通许县", + "parentCode": 410200000000, + "mergerName": "河南省-开封市-通许县" + }, + { + "areaCode": 410223000000, + "name": "尉氏县", + "parentCode": 410200000000, + "mergerName": "河南省-开封市-尉氏县" + }, + { + "areaCode": 410225000000, + "name": "兰考县", + "parentCode": 410200000000, + "mergerName": "河南省-开封市-兰考县" + } + ], + "areaCode": 410200000000, + "name": "开封市", + "parentCode": 410000000000, + "mergerName": "河南省-开封市" + }, + { + "children": [ + { + "areaCode": 410301000000, + "name": "市辖区", + "parentCode": 410300000000, + "mergerName": "河南省-洛阳市-市辖区" + }, + { + "areaCode": 410302000000, + "name": "老城区", + "parentCode": 410300000000, + "mergerName": "河南省-洛阳市-老城区" + }, + { + "areaCode": 410303000000, + "name": "西工区", + "parentCode": 410300000000, + "mergerName": "河南省-洛阳市-西工区" + }, + { + "areaCode": 410304000000, + "name": "瀍河回族区", + "parentCode": 410300000000, + "mergerName": "河南省-洛阳市-瀍河回族区" + }, + { + "areaCode": 410305000000, + "name": "涧西区", + "parentCode": 410300000000, + "mergerName": "河南省-洛阳市-涧西区" + }, + { + "areaCode": 410306000000, + "name": "吉利区", + "parentCode": 410300000000, + "mergerName": "河南省-洛阳市-吉利区" + }, + { + "areaCode": 410311000000, + "name": "洛龙区", + "parentCode": 410300000000, + "mergerName": "河南省-洛阳市-洛龙区" + }, + { + "areaCode": 410322000000, + "name": "孟津县", + "parentCode": 410300000000, + "mergerName": "河南省-洛阳市-孟津县" + }, + { + "areaCode": 410323000000, + "name": "新安县", + "parentCode": 410300000000, + "mergerName": "河南省-洛阳市-新安县" + }, + { + "areaCode": 410324000000, + "name": "栾川县", + "parentCode": 410300000000, + "mergerName": "河南省-洛阳市-栾川县" + }, + { "areaCode": 410325000000, "name": "嵩县", "parentCode": 410300000000, "mergerName": "河南省-洛阳市-嵩县" }, + { + "areaCode": 410326000000, + "name": "汝阳县", + "parentCode": 410300000000, + "mergerName": "河南省-洛阳市-汝阳县" + }, + { + "areaCode": 410327000000, + "name": "宜阳县", + "parentCode": 410300000000, + "mergerName": "河南省-洛阳市-宜阳县" + }, + { + "areaCode": 410328000000, + "name": "洛宁县", + "parentCode": 410300000000, + "mergerName": "河南省-洛阳市-洛宁县" + }, + { + "areaCode": 410329000000, + "name": "伊川县", + "parentCode": 410300000000, + "mergerName": "河南省-洛阳市-伊川县" + }, + { + "areaCode": 410371000000, + "name": "洛阳高新技术产业开发区", + "parentCode": 410300000000, + "mergerName": "河南省-洛阳市-洛阳高新技术产业开发区" + }, + { + "areaCode": 410381000000, + "name": "偃师市", + "parentCode": 410300000000, + "mergerName": "河南省-洛阳市-偃师市" + } + ], + "areaCode": 410300000000, + "name": "洛阳市", + "parentCode": 410000000000, + "mergerName": "河南省-洛阳市" + }, + { + "children": [ + { + "areaCode": 410401000000, + "name": "市辖区", + "parentCode": 410400000000, + "mergerName": "河南省-平顶山市-市辖区" + }, + { + "areaCode": 410402000000, + "name": "新华区", + "parentCode": 410400000000, + "mergerName": "河南省-平顶山市-新华区" + }, + { + "areaCode": 410403000000, + "name": "卫东区", + "parentCode": 410400000000, + "mergerName": "河南省-平顶山市-卫东区" + }, + { + "areaCode": 410404000000, + "name": "石龙区", + "parentCode": 410400000000, + "mergerName": "河南省-平顶山市-石龙区" + }, + { + "areaCode": 410411000000, + "name": "湛河区", + "parentCode": 410400000000, + "mergerName": "河南省-平顶山市-湛河区" + }, + { + "areaCode": 410421000000, + "name": "宝丰县", + "parentCode": 410400000000, + "mergerName": "河南省-平顶山市-宝丰县" + }, + { + "areaCode": 410422000000, + "name": "叶县", + "parentCode": 410400000000, + "mergerName": "河南省-平顶山市-叶县" + }, + { + "areaCode": 410423000000, + "name": "鲁山县", + "parentCode": 410400000000, + "mergerName": "河南省-平顶山市-鲁山县" + }, + { + "areaCode": 410425000000, + "name": "郏县", + "parentCode": 410400000000, + "mergerName": "河南省-平顶山市-郏县" + }, + { + "areaCode": 410471000000, + "name": "平顶山高新技术产业开发区", + "parentCode": 410400000000, + "mergerName": "河南省-平顶山市-平顶山高新技术产业开发区" + }, + { + "areaCode": 410472000000, + "name": "平顶山市新城区", + "parentCode": 410400000000, + "mergerName": "河南省-平顶山市-平顶山市新城区" + }, + { + "areaCode": 410481000000, + "name": "舞钢市", + "parentCode": 410400000000, + "mergerName": "河南省-平顶山市-舞钢市" + }, + { + "areaCode": 410482000000, + "name": "汝州市", + "parentCode": 410400000000, + "mergerName": "河南省-平顶山市-汝州市" + } + ], + "areaCode": 410400000000, + "name": "平顶山市", + "parentCode": 410000000000, + "mergerName": "河南省-平顶山市" + }, + { + "children": [ + { + "areaCode": 410501000000, + "name": "市辖区", + "parentCode": 410500000000, + "mergerName": "河南省-安阳市-市辖区" + }, + { + "areaCode": 410502000000, + "name": "文峰区", + "parentCode": 410500000000, + "mergerName": "河南省-安阳市-文峰区" + }, + { + "areaCode": 410503000000, + "name": "北关区", + "parentCode": 410500000000, + "mergerName": "河南省-安阳市-北关区" + }, + { + "areaCode": 410505000000, + "name": "殷都区", + "parentCode": 410500000000, + "mergerName": "河南省-安阳市-殷都区" + }, + { + "areaCode": 410506000000, + "name": "龙安区", + "parentCode": 410500000000, + "mergerName": "河南省-安阳市-龙安区" + }, + { + "areaCode": 410522000000, + "name": "安阳县", + "parentCode": 410500000000, + "mergerName": "河南省-安阳市-安阳县" + }, + { + "areaCode": 410523000000, + "name": "汤阴县", + "parentCode": 410500000000, + "mergerName": "河南省-安阳市-汤阴县" + }, + { "areaCode": 410526000000, "name": "滑县", "parentCode": 410500000000, "mergerName": "河南省-安阳市-滑县" }, + { + "areaCode": 410527000000, + "name": "内黄县", + "parentCode": 410500000000, + "mergerName": "河南省-安阳市-内黄县" + }, + { + "areaCode": 410571000000, + "name": "安阳高新技术产业开发区", + "parentCode": 410500000000, + "mergerName": "河南省-安阳市-安阳高新技术产业开发区" + }, + { + "areaCode": 410581000000, + "name": "林州市", + "parentCode": 410500000000, + "mergerName": "河南省-安阳市-林州市" + } + ], + "areaCode": 410500000000, + "name": "安阳市", + "parentCode": 410000000000, + "mergerName": "河南省-安阳市" + }, + { + "children": [ + { + "areaCode": 410601000000, + "name": "市辖区", + "parentCode": 410600000000, + "mergerName": "河南省-鹤壁市-市辖区" + }, + { + "areaCode": 410602000000, + "name": "鹤山区", + "parentCode": 410600000000, + "mergerName": "河南省-鹤壁市-鹤山区" + }, + { + "areaCode": 410603000000, + "name": "山城区", + "parentCode": 410600000000, + "mergerName": "河南省-鹤壁市-山城区" + }, + { + "areaCode": 410611000000, + "name": "淇滨区", + "parentCode": 410600000000, + "mergerName": "河南省-鹤壁市-淇滨区" + }, + { "areaCode": 410621000000, "name": "浚县", "parentCode": 410600000000, "mergerName": "河南省-鹤壁市-浚县" }, + { "areaCode": 410622000000, "name": "淇县", "parentCode": 410600000000, "mergerName": "河南省-鹤壁市-淇县" }, + { + "areaCode": 410671000000, + "name": "鹤壁经济技术开发区", + "parentCode": 410600000000, + "mergerName": "河南省-鹤壁市-鹤壁经济技术开发区" + } + ], + "areaCode": 410600000000, + "name": "鹤壁市", + "parentCode": 410000000000, + "mergerName": "河南省-鹤壁市" + }, + { + "children": [ + { + "areaCode": 410701000000, + "name": "市辖区", + "parentCode": 410700000000, + "mergerName": "河南省-新乡市-市辖区" + }, + { + "areaCode": 410702000000, + "name": "红旗区", + "parentCode": 410700000000, + "mergerName": "河南省-新乡市-红旗区" + }, + { + "areaCode": 410703000000, + "name": "卫滨区", + "parentCode": 410700000000, + "mergerName": "河南省-新乡市-卫滨区" + }, + { + "areaCode": 410704000000, + "name": "凤泉区", + "parentCode": 410700000000, + "mergerName": "河南省-新乡市-凤泉区" + }, + { + "areaCode": 410711000000, + "name": "牧野区", + "parentCode": 410700000000, + "mergerName": "河南省-新乡市-牧野区" + }, + { + "areaCode": 410721000000, + "name": "新乡县", + "parentCode": 410700000000, + "mergerName": "河南省-新乡市-新乡县" + }, + { + "areaCode": 410724000000, + "name": "获嘉县", + "parentCode": 410700000000, + "mergerName": "河南省-新乡市-获嘉县" + }, + { + "areaCode": 410725000000, + "name": "原阳县", + "parentCode": 410700000000, + "mergerName": "河南省-新乡市-原阳县" + }, + { + "areaCode": 410726000000, + "name": "延津县", + "parentCode": 410700000000, + "mergerName": "河南省-新乡市-延津县" + }, + { + "areaCode": 410727000000, + "name": "封丘县", + "parentCode": 410700000000, + "mergerName": "河南省-新乡市-封丘县" + }, + { + "areaCode": 410728000000, + "name": "长垣县", + "parentCode": 410700000000, + "mergerName": "河南省-新乡市-长垣县" + }, + { + "areaCode": 410771000000, + "name": "新乡高新技术产业开发区", + "parentCode": 410700000000, + "mergerName": "河南省-新乡市-新乡高新技术产业开发区" + }, + { + "areaCode": 410772000000, + "name": "新乡经济技术开发区", + "parentCode": 410700000000, + "mergerName": "河南省-新乡市-新乡经济技术开发区" + }, + { + "areaCode": 410773000000, + "name": "新乡市平原城乡一体化示范区", + "parentCode": 410700000000, + "mergerName": "河南省-新乡市-新乡市平原城乡一体化示范区" + }, + { + "areaCode": 410781000000, + "name": "卫辉市", + "parentCode": 410700000000, + "mergerName": "河南省-新乡市-卫辉市" + }, + { + "areaCode": 410782000000, + "name": "辉县市", + "parentCode": 410700000000, + "mergerName": "河南省-新乡市-辉县市" + } + ], + "areaCode": 410700000000, + "name": "新乡市", + "parentCode": 410000000000, + "mergerName": "河南省-新乡市" + }, + { + "children": [ + { + "areaCode": 410801000000, + "name": "市辖区", + "parentCode": 410800000000, + "mergerName": "河南省-焦作市-市辖区" + }, + { + "areaCode": 410802000000, + "name": "解放区", + "parentCode": 410800000000, + "mergerName": "河南省-焦作市-解放区" + }, + { + "areaCode": 410803000000, + "name": "中站区", + "parentCode": 410800000000, + "mergerName": "河南省-焦作市-中站区" + }, + { + "areaCode": 410804000000, + "name": "马村区", + "parentCode": 410800000000, + "mergerName": "河南省-焦作市-马村区" + }, + { + "areaCode": 410811000000, + "name": "山阳区", + "parentCode": 410800000000, + "mergerName": "河南省-焦作市-山阳区" + }, + { + "areaCode": 410821000000, + "name": "修武县", + "parentCode": 410800000000, + "mergerName": "河南省-焦作市-修武县" + }, + { + "areaCode": 410822000000, + "name": "博爱县", + "parentCode": 410800000000, + "mergerName": "河南省-焦作市-博爱县" + }, + { + "areaCode": 410823000000, + "name": "武陟县", + "parentCode": 410800000000, + "mergerName": "河南省-焦作市-武陟县" + }, + { "areaCode": 410825000000, "name": "温县", "parentCode": 410800000000, "mergerName": "河南省-焦作市-温县" }, + { + "areaCode": 410871000000, + "name": "焦作城乡一体化示范区", + "parentCode": 410800000000, + "mergerName": "河南省-焦作市-焦作城乡一体化示范区" + }, + { + "areaCode": 410882000000, + "name": "沁阳市", + "parentCode": 410800000000, + "mergerName": "河南省-焦作市-沁阳市" + }, + { + "areaCode": 410883000000, + "name": "孟州市", + "parentCode": 410800000000, + "mergerName": "河南省-焦作市-孟州市" + } + ], + "areaCode": 410800000000, + "name": "焦作市", + "parentCode": 410000000000, + "mergerName": "河南省-焦作市" + }, + { + "children": [ + { + "areaCode": 410901000000, + "name": "市辖区", + "parentCode": 410900000000, + "mergerName": "河南省-濮阳市-市辖区" + }, + { + "areaCode": 410902000000, + "name": "华龙区", + "parentCode": 410900000000, + "mergerName": "河南省-濮阳市-华龙区" + }, + { + "areaCode": 410922000000, + "name": "清丰县", + "parentCode": 410900000000, + "mergerName": "河南省-濮阳市-清丰县" + }, + { + "areaCode": 410923000000, + "name": "南乐县", + "parentCode": 410900000000, + "mergerName": "河南省-濮阳市-南乐县" + }, + { "areaCode": 410926000000, "name": "范县", "parentCode": 410900000000, "mergerName": "河南省-濮阳市-范县" }, + { + "areaCode": 410927000000, + "name": "台前县", + "parentCode": 410900000000, + "mergerName": "河南省-濮阳市-台前县" + }, + { + "areaCode": 410928000000, + "name": "濮阳县", + "parentCode": 410900000000, + "mergerName": "河南省-濮阳市-濮阳县" + }, + { + "areaCode": 410971000000, + "name": "河南濮阳工业园区", + "parentCode": 410900000000, + "mergerName": "河南省-濮阳市-河南濮阳工业园区" + }, + { + "areaCode": 410972000000, + "name": "濮阳经济技术开发区", + "parentCode": 410900000000, + "mergerName": "河南省-濮阳市-濮阳经济技术开发区" + } + ], + "areaCode": 410900000000, + "name": "濮阳市", + "parentCode": 410000000000, + "mergerName": "河南省-濮阳市" + }, + { + "children": [ + { + "areaCode": 411001000000, + "name": "市辖区", + "parentCode": 411000000000, + "mergerName": "河南省-许昌市-市辖区" + }, + { + "areaCode": 411002000000, + "name": "魏都区", + "parentCode": 411000000000, + "mergerName": "河南省-许昌市-魏都区" + }, + { + "areaCode": 411003000000, + "name": "建安区", + "parentCode": 411000000000, + "mergerName": "河南省-许昌市-建安区" + }, + { + "areaCode": 411024000000, + "name": "鄢陵县", + "parentCode": 411000000000, + "mergerName": "河南省-许昌市-鄢陵县" + }, + { + "areaCode": 411025000000, + "name": "襄城县", + "parentCode": 411000000000, + "mergerName": "河南省-许昌市-襄城县" + }, + { + "areaCode": 411071000000, + "name": "许昌经济技术开发区", + "parentCode": 411000000000, + "mergerName": "河南省-许昌市-许昌经济技术开发区" + }, + { + "areaCode": 411081000000, + "name": "禹州市", + "parentCode": 411000000000, + "mergerName": "河南省-许昌市-禹州市" + }, + { + "areaCode": 411082000000, + "name": "长葛市", + "parentCode": 411000000000, + "mergerName": "河南省-许昌市-长葛市" + } + ], + "areaCode": 411000000000, + "name": "许昌市", + "parentCode": 410000000000, + "mergerName": "河南省-许昌市" + }, + { + "children": [ + { + "areaCode": 411101000000, + "name": "市辖区", + "parentCode": 411100000000, + "mergerName": "河南省-漯河市-市辖区" + }, + { + "areaCode": 411102000000, + "name": "源汇区", + "parentCode": 411100000000, + "mergerName": "河南省-漯河市-源汇区" + }, + { + "areaCode": 411103000000, + "name": "郾城区", + "parentCode": 411100000000, + "mergerName": "河南省-漯河市-郾城区" + }, + { + "areaCode": 411104000000, + "name": "召陵区", + "parentCode": 411100000000, + "mergerName": "河南省-漯河市-召陵区" + }, + { + "areaCode": 411121000000, + "name": "舞阳县", + "parentCode": 411100000000, + "mergerName": "河南省-漯河市-舞阳县" + }, + { + "areaCode": 411122000000, + "name": "临颍县", + "parentCode": 411100000000, + "mergerName": "河南省-漯河市-临颍县" + }, + { + "areaCode": 411171000000, + "name": "漯河经济技术开发区", + "parentCode": 411100000000, + "mergerName": "河南省-漯河市-漯河经济技术开发区" + } + ], + "areaCode": 411100000000, + "name": "漯河市", + "parentCode": 410000000000, + "mergerName": "河南省-漯河市" + }, + { + "children": [ + { + "areaCode": 411201000000, + "name": "市辖区", + "parentCode": 411200000000, + "mergerName": "河南省-三门峡市-市辖区" + }, + { + "areaCode": 411202000000, + "name": "湖滨区", + "parentCode": 411200000000, + "mergerName": "河南省-三门峡市-湖滨区" + }, + { + "areaCode": 411203000000, + "name": "陕州区", + "parentCode": 411200000000, + "mergerName": "河南省-三门峡市-陕州区" + }, + { + "areaCode": 411221000000, + "name": "渑池县", + "parentCode": 411200000000, + "mergerName": "河南省-三门峡市-渑池县" + }, + { + "areaCode": 411224000000, + "name": "卢氏县", + "parentCode": 411200000000, + "mergerName": "河南省-三门峡市-卢氏县" + }, + { + "areaCode": 411271000000, + "name": "河南三门峡经济开发区", + "parentCode": 411200000000, + "mergerName": "河南省-三门峡市-河南三门峡经济开发区" + }, + { + "areaCode": 411281000000, + "name": "义马市", + "parentCode": 411200000000, + "mergerName": "河南省-三门峡市-义马市" + }, + { + "areaCode": 411282000000, + "name": "灵宝市", + "parentCode": 411200000000, + "mergerName": "河南省-三门峡市-灵宝市" + } + ], + "areaCode": 411200000000, + "name": "三门峡市", + "parentCode": 410000000000, + "mergerName": "河南省-三门峡市" + }, + { + "children": [ + { + "areaCode": 411301000000, + "name": "市辖区", + "parentCode": 411300000000, + "mergerName": "河南省-南阳市-市辖区" + }, + { + "areaCode": 411302000000, + "name": "宛城区", + "parentCode": 411300000000, + "mergerName": "河南省-南阳市-宛城区" + }, + { + "areaCode": 411303000000, + "name": "卧龙区", + "parentCode": 411300000000, + "mergerName": "河南省-南阳市-卧龙区" + }, + { + "areaCode": 411321000000, + "name": "南召县", + "parentCode": 411300000000, + "mergerName": "河南省-南阳市-南召县" + }, + { + "areaCode": 411322000000, + "name": "方城县", + "parentCode": 411300000000, + "mergerName": "河南省-南阳市-方城县" + }, + { + "areaCode": 411323000000, + "name": "西峡县", + "parentCode": 411300000000, + "mergerName": "河南省-南阳市-西峡县" + }, + { + "areaCode": 411324000000, + "name": "镇平县", + "parentCode": 411300000000, + "mergerName": "河南省-南阳市-镇平县" + }, + { + "areaCode": 411325000000, + "name": "内乡县", + "parentCode": 411300000000, + "mergerName": "河南省-南阳市-内乡县" + }, + { + "areaCode": 411326000000, + "name": "淅川县", + "parentCode": 411300000000, + "mergerName": "河南省-南阳市-淅川县" + }, + { + "areaCode": 411327000000, + "name": "社旗县", + "parentCode": 411300000000, + "mergerName": "河南省-南阳市-社旗县" + }, + { + "areaCode": 411328000000, + "name": "唐河县", + "parentCode": 411300000000, + "mergerName": "河南省-南阳市-唐河县" + }, + { + "areaCode": 411329000000, + "name": "新野县", + "parentCode": 411300000000, + "mergerName": "河南省-南阳市-新野县" + }, + { + "areaCode": 411330000000, + "name": "桐柏县", + "parentCode": 411300000000, + "mergerName": "河南省-南阳市-桐柏县" + }, + { + "areaCode": 411371000000, + "name": "南阳高新技术产业开发区", + "parentCode": 411300000000, + "mergerName": "河南省-南阳市-南阳高新技术产业开发区" + }, + { + "areaCode": 411372000000, + "name": "南阳市城乡一体化示范区", + "parentCode": 411300000000, + "mergerName": "河南省-南阳市-南阳市城乡一体化示范区" + }, + { + "areaCode": 411381000000, + "name": "邓州市", + "parentCode": 411300000000, + "mergerName": "河南省-南阳市-邓州市" + } + ], + "areaCode": 411300000000, + "name": "南阳市", + "parentCode": 410000000000, + "mergerName": "河南省-南阳市" + }, + { + "children": [ + { + "areaCode": 411401000000, + "name": "市辖区", + "parentCode": 411400000000, + "mergerName": "河南省-商丘市-市辖区" + }, + { + "areaCode": 411402000000, + "name": "梁园区", + "parentCode": 411400000000, + "mergerName": "河南省-商丘市-梁园区" + }, + { + "areaCode": 411403000000, + "name": "睢阳区", + "parentCode": 411400000000, + "mergerName": "河南省-商丘市-睢阳区" + }, + { + "areaCode": 411421000000, + "name": "民权县", + "parentCode": 411400000000, + "mergerName": "河南省-商丘市-民权县" + }, + { "areaCode": 411422000000, "name": "睢县", "parentCode": 411400000000, "mergerName": "河南省-商丘市-睢县" }, + { + "areaCode": 411423000000, + "name": "宁陵县", + "parentCode": 411400000000, + "mergerName": "河南省-商丘市-宁陵县" + }, + { + "areaCode": 411424000000, + "name": "柘城县", + "parentCode": 411400000000, + "mergerName": "河南省-商丘市-柘城县" + }, + { + "areaCode": 411425000000, + "name": "虞城县", + "parentCode": 411400000000, + "mergerName": "河南省-商丘市-虞城县" + }, + { + "areaCode": 411426000000, + "name": "夏邑县", + "parentCode": 411400000000, + "mergerName": "河南省-商丘市-夏邑县" + }, + { + "areaCode": 411471000000, + "name": "豫东综合物流产业聚集区", + "parentCode": 411400000000, + "mergerName": "河南省-商丘市-豫东综合物流产业聚集区" + }, + { + "areaCode": 411472000000, + "name": "河南商丘经济开发区", + "parentCode": 411400000000, + "mergerName": "河南省-商丘市-河南商丘经济开发区" + }, + { + "areaCode": 411481000000, + "name": "永城市", + "parentCode": 411400000000, + "mergerName": "河南省-商丘市-永城市" + } + ], + "areaCode": 411400000000, + "name": "商丘市", + "parentCode": 410000000000, + "mergerName": "河南省-商丘市" + }, + { + "children": [ + { + "areaCode": 411501000000, + "name": "市辖区", + "parentCode": 411500000000, + "mergerName": "河南省-信阳市-市辖区" + }, + { + "areaCode": 411502000000, + "name": "浉河区", + "parentCode": 411500000000, + "mergerName": "河南省-信阳市-浉河区" + }, + { + "areaCode": 411503000000, + "name": "平桥区", + "parentCode": 411500000000, + "mergerName": "河南省-信阳市-平桥区" + }, + { + "areaCode": 411521000000, + "name": "罗山县", + "parentCode": 411500000000, + "mergerName": "河南省-信阳市-罗山县" + }, + { + "areaCode": 411522000000, + "name": "光山县", + "parentCode": 411500000000, + "mergerName": "河南省-信阳市-光山县" + }, + { "areaCode": 411523000000, "name": "新县", "parentCode": 411500000000, "mergerName": "河南省-信阳市-新县" }, + { + "areaCode": 411524000000, + "name": "商城县", + "parentCode": 411500000000, + "mergerName": "河南省-信阳市-商城县" + }, + { + "areaCode": 411525000000, + "name": "固始县", + "parentCode": 411500000000, + "mergerName": "河南省-信阳市-固始县" + }, + { + "areaCode": 411526000000, + "name": "潢川县", + "parentCode": 411500000000, + "mergerName": "河南省-信阳市-潢川县" + }, + { + "areaCode": 411527000000, + "name": "淮滨县", + "parentCode": 411500000000, + "mergerName": "河南省-信阳市-淮滨县" + }, + { "areaCode": 411528000000, "name": "息县", "parentCode": 411500000000, "mergerName": "河南省-信阳市-息县" }, + { + "areaCode": 411571000000, + "name": "信阳高新技术产业开发区", + "parentCode": 411500000000, + "mergerName": "河南省-信阳市-信阳高新技术产业开发区" + } + ], + "areaCode": 411500000000, + "name": "信阳市", + "parentCode": 410000000000, + "mergerName": "河南省-信阳市" + }, + { + "children": [ + { + "areaCode": 411601000000, + "name": "市辖区", + "parentCode": 411600000000, + "mergerName": "河南省-周口市-市辖区" + }, + { + "areaCode": 411602000000, + "name": "川汇区", + "parentCode": 411600000000, + "mergerName": "河南省-周口市-川汇区" + }, + { + "areaCode": 411621000000, + "name": "扶沟县", + "parentCode": 411600000000, + "mergerName": "河南省-周口市-扶沟县" + }, + { + "areaCode": 411622000000, + "name": "西华县", + "parentCode": 411600000000, + "mergerName": "河南省-周口市-西华县" + }, + { + "areaCode": 411623000000, + "name": "商水县", + "parentCode": 411600000000, + "mergerName": "河南省-周口市-商水县" + }, + { + "areaCode": 411624000000, + "name": "沈丘县", + "parentCode": 411600000000, + "mergerName": "河南省-周口市-沈丘县" + }, + { + "areaCode": 411625000000, + "name": "郸城县", + "parentCode": 411600000000, + "mergerName": "河南省-周口市-郸城县" + }, + { + "areaCode": 411626000000, + "name": "淮阳县", + "parentCode": 411600000000, + "mergerName": "河南省-周口市-淮阳县" + }, + { + "areaCode": 411627000000, + "name": "太康县", + "parentCode": 411600000000, + "mergerName": "河南省-周口市-太康县" + }, + { + "areaCode": 411628000000, + "name": "鹿邑县", + "parentCode": 411600000000, + "mergerName": "河南省-周口市-鹿邑县" + }, + { + "areaCode": 411671000000, + "name": "河南周口经济开发区", + "parentCode": 411600000000, + "mergerName": "河南省-周口市-河南周口经济开发区" + }, + { + "areaCode": 411681000000, + "name": "项城市", + "parentCode": 411600000000, + "mergerName": "河南省-周口市-项城市" + } + ], + "areaCode": 411600000000, + "name": "周口市", + "parentCode": 410000000000, + "mergerName": "河南省-周口市" + }, + { + "children": [ + { + "areaCode": 411701000000, + "name": "市辖区", + "parentCode": 411700000000, + "mergerName": "河南省-驻马店市-市辖区" + }, + { + "areaCode": 411702000000, + "name": "驿城区", + "parentCode": 411700000000, + "mergerName": "河南省-驻马店市-驿城区" + }, + { + "areaCode": 411721000000, + "name": "西平县", + "parentCode": 411700000000, + "mergerName": "河南省-驻马店市-西平县" + }, + { + "areaCode": 411722000000, + "name": "上蔡县", + "parentCode": 411700000000, + "mergerName": "河南省-驻马店市-上蔡县" + }, + { + "areaCode": 411723000000, + "name": "平舆县", + "parentCode": 411700000000, + "mergerName": "河南省-驻马店市-平舆县" + }, + { + "areaCode": 411724000000, + "name": "正阳县", + "parentCode": 411700000000, + "mergerName": "河南省-驻马店市-正阳县" + }, + { + "areaCode": 411725000000, + "name": "确山县", + "parentCode": 411700000000, + "mergerName": "河南省-驻马店市-确山县" + }, + { + "areaCode": 411726000000, + "name": "泌阳县", + "parentCode": 411700000000, + "mergerName": "河南省-驻马店市-泌阳县" + }, + { + "areaCode": 411727000000, + "name": "汝南县", + "parentCode": 411700000000, + "mergerName": "河南省-驻马店市-汝南县" + }, + { + "areaCode": 411728000000, + "name": "遂平县", + "parentCode": 411700000000, + "mergerName": "河南省-驻马店市-遂平县" + }, + { + "areaCode": 411729000000, + "name": "新蔡县", + "parentCode": 411700000000, + "mergerName": "河南省-驻马店市-新蔡县" + }, + { + "areaCode": 411771000000, + "name": "河南驻马店经济开发区", + "parentCode": 411700000000, + "mergerName": "河南省-驻马店市-河南驻马店经济开发区" + } + ], + "areaCode": 411700000000, + "name": "驻马店市", + "parentCode": 410000000000, + "mergerName": "河南省-驻马店市" + }, + { + "children": [ + { + "areaCode": 419001000000, + "name": "济源市", + "parentCode": 419000000000, + "mergerName": "河南省-直辖县-济源市" + } + ], + "areaCode": 419000000000, + "name": "直辖县", + "parentCode": 410000000000, + "mergerName": "河南省-直辖县" + } + ], + "areaCode": 410000000000, + "name": "河南省", + "parentCode": 0, + "mergerName": "-河南省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 420101000000, + "name": "市辖区", + "parentCode": 420100000000, + "mergerName": "湖北省-武汉市-市辖区" + }, + { + "areaCode": 420102000000, + "name": "江岸区", + "parentCode": 420100000000, + "mergerName": "湖北省-武汉市-江岸区" + }, + { + "areaCode": 420103000000, + "name": "江汉区", + "parentCode": 420100000000, + "mergerName": "湖北省-武汉市-江汉区" + }, + { + "areaCode": 420104000000, + "name": "硚口区", + "parentCode": 420100000000, + "mergerName": "湖北省-武汉市-硚口区" + }, + { + "areaCode": 420105000000, + "name": "汉阳区", + "parentCode": 420100000000, + "mergerName": "湖北省-武汉市-汉阳区" + }, + { + "areaCode": 420106000000, + "name": "武昌区", + "parentCode": 420100000000, + "mergerName": "湖北省-武汉市-武昌区" + }, + { + "areaCode": 420107000000, + "name": "青山区", + "parentCode": 420100000000, + "mergerName": "湖北省-武汉市-青山区" + }, + { + "areaCode": 420111000000, + "name": "洪山区", + "parentCode": 420100000000, + "mergerName": "湖北省-武汉市-洪山区" + }, + { + "areaCode": 420112000000, + "name": "东西湖区", + "parentCode": 420100000000, + "mergerName": "湖北省-武汉市-东西湖区" + }, + { + "areaCode": 420113000000, + "name": "汉南区", + "parentCode": 420100000000, + "mergerName": "湖北省-武汉市-汉南区" + }, + { + "areaCode": 420114000000, + "name": "蔡甸区", + "parentCode": 420100000000, + "mergerName": "湖北省-武汉市-蔡甸区" + }, + { + "areaCode": 420115000000, + "name": "江夏区", + "parentCode": 420100000000, + "mergerName": "湖北省-武汉市-江夏区" + }, + { + "areaCode": 420116000000, + "name": "黄陂区", + "parentCode": 420100000000, + "mergerName": "湖北省-武汉市-黄陂区" + }, + { + "areaCode": 420117000000, + "name": "新洲区", + "parentCode": 420100000000, + "mergerName": "湖北省-武汉市-新洲区" + } + ], + "areaCode": 420100000000, + "name": "武汉市", + "parentCode": 420000000000, + "mergerName": "湖北省-武汉市" + }, + { + "children": [ + { + "areaCode": 420201000000, + "name": "市辖区", + "parentCode": 420200000000, + "mergerName": "湖北省-黄石市-市辖区" + }, + { + "areaCode": 420202000000, + "name": "黄石港区", + "parentCode": 420200000000, + "mergerName": "湖北省-黄石市-黄石港区" + }, + { + "areaCode": 420203000000, + "name": "西塞山区", + "parentCode": 420200000000, + "mergerName": "湖北省-黄石市-西塞山区" + }, + { + "areaCode": 420204000000, + "name": "下陆区", + "parentCode": 420200000000, + "mergerName": "湖北省-黄石市-下陆区" + }, + { + "areaCode": 420205000000, + "name": "铁山区", + "parentCode": 420200000000, + "mergerName": "湖北省-黄石市-铁山区" + }, + { + "areaCode": 420222000000, + "name": "阳新县", + "parentCode": 420200000000, + "mergerName": "湖北省-黄石市-阳新县" + }, + { + "areaCode": 420281000000, + "name": "大冶市", + "parentCode": 420200000000, + "mergerName": "湖北省-黄石市-大冶市" + } + ], + "areaCode": 420200000000, + "name": "黄石市", + "parentCode": 420000000000, + "mergerName": "湖北省-黄石市" + }, + { + "children": [ + { + "areaCode": 420301000000, + "name": "市辖区", + "parentCode": 420300000000, + "mergerName": "湖北省-十堰市-市辖区" + }, + { + "areaCode": 420302000000, + "name": "茅箭区", + "parentCode": 420300000000, + "mergerName": "湖北省-十堰市-茅箭区" + }, + { + "areaCode": 420303000000, + "name": "张湾区", + "parentCode": 420300000000, + "mergerName": "湖北省-十堰市-张湾区" + }, + { + "areaCode": 420304000000, + "name": "郧阳区", + "parentCode": 420300000000, + "mergerName": "湖北省-十堰市-郧阳区" + }, + { + "areaCode": 420322000000, + "name": "郧西县", + "parentCode": 420300000000, + "mergerName": "湖北省-十堰市-郧西县" + }, + { + "areaCode": 420323000000, + "name": "竹山县", + "parentCode": 420300000000, + "mergerName": "湖北省-十堰市-竹山县" + }, + { + "areaCode": 420324000000, + "name": "竹溪县", + "parentCode": 420300000000, + "mergerName": "湖北省-十堰市-竹溪县" + }, + { "areaCode": 420325000000, "name": "房县", "parentCode": 420300000000, "mergerName": "湖北省-十堰市-房县" }, + { + "areaCode": 420381000000, + "name": "丹江口市", + "parentCode": 420300000000, + "mergerName": "湖北省-十堰市-丹江口市" + } + ], + "areaCode": 420300000000, + "name": "十堰市", + "parentCode": 420000000000, + "mergerName": "湖北省-十堰市" + }, + { + "children": [ + { + "areaCode": 420501000000, + "name": "市辖区", + "parentCode": 420500000000, + "mergerName": "湖北省-宜昌市-市辖区" + }, + { + "areaCode": 420502000000, + "name": "西陵区", + "parentCode": 420500000000, + "mergerName": "湖北省-宜昌市-西陵区" + }, + { + "areaCode": 420503000000, + "name": "伍家岗区", + "parentCode": 420500000000, + "mergerName": "湖北省-宜昌市-伍家岗区" + }, + { + "areaCode": 420504000000, + "name": "点军区", + "parentCode": 420500000000, + "mergerName": "湖北省-宜昌市-点军区" + }, + { + "areaCode": 420505000000, + "name": "猇亭区", + "parentCode": 420500000000, + "mergerName": "湖北省-宜昌市-猇亭区" + }, + { + "areaCode": 420506000000, + "name": "夷陵区", + "parentCode": 420500000000, + "mergerName": "湖北省-宜昌市-夷陵区" + }, + { + "areaCode": 420525000000, + "name": "远安县", + "parentCode": 420500000000, + "mergerName": "湖北省-宜昌市-远安县" + }, + { + "areaCode": 420526000000, + "name": "兴山县", + "parentCode": 420500000000, + "mergerName": "湖北省-宜昌市-兴山县" + }, + { + "areaCode": 420527000000, + "name": "秭归县", + "parentCode": 420500000000, + "mergerName": "湖北省-宜昌市-秭归县" + }, + { + "areaCode": 420528000000, + "name": "长阳土家族自治县", + "parentCode": 420500000000, + "mergerName": "湖北省-宜昌市-长阳土家族自治县" + }, + { + "areaCode": 420529000000, + "name": "五峰土家族自治县", + "parentCode": 420500000000, + "mergerName": "湖北省-宜昌市-五峰土家族自治县" + }, + { + "areaCode": 420581000000, + "name": "宜都市", + "parentCode": 420500000000, + "mergerName": "湖北省-宜昌市-宜都市" + }, + { + "areaCode": 420582000000, + "name": "当阳市", + "parentCode": 420500000000, + "mergerName": "湖北省-宜昌市-当阳市" + }, + { + "areaCode": 420583000000, + "name": "枝江市", + "parentCode": 420500000000, + "mergerName": "湖北省-宜昌市-枝江市" + } + ], + "areaCode": 420500000000, + "name": "宜昌市", + "parentCode": 420000000000, + "mergerName": "湖北省-宜昌市" + }, + { + "children": [ + { + "areaCode": 420601000000, + "name": "市辖区", + "parentCode": 420600000000, + "mergerName": "湖北省-襄阳市-市辖区" + }, + { + "areaCode": 420602000000, + "name": "襄城区", + "parentCode": 420600000000, + "mergerName": "湖北省-襄阳市-襄城区" + }, + { + "areaCode": 420606000000, + "name": "樊城区", + "parentCode": 420600000000, + "mergerName": "湖北省-襄阳市-樊城区" + }, + { + "areaCode": 420607000000, + "name": "襄州区", + "parentCode": 420600000000, + "mergerName": "湖北省-襄阳市-襄州区" + }, + { + "areaCode": 420624000000, + "name": "南漳县", + "parentCode": 420600000000, + "mergerName": "湖北省-襄阳市-南漳县" + }, + { + "areaCode": 420625000000, + "name": "谷城县", + "parentCode": 420600000000, + "mergerName": "湖北省-襄阳市-谷城县" + }, + { + "areaCode": 420626000000, + "name": "保康县", + "parentCode": 420600000000, + "mergerName": "湖北省-襄阳市-保康县" + }, + { + "areaCode": 420682000000, + "name": "老河口市", + "parentCode": 420600000000, + "mergerName": "湖北省-襄阳市-老河口市" + }, + { + "areaCode": 420683000000, + "name": "枣阳市", + "parentCode": 420600000000, + "mergerName": "湖北省-襄阳市-枣阳市" + }, + { + "areaCode": 420684000000, + "name": "宜城市", + "parentCode": 420600000000, + "mergerName": "湖北省-襄阳市-宜城市" + } + ], + "areaCode": 420600000000, + "name": "襄阳市", + "parentCode": 420000000000, + "mergerName": "湖北省-襄阳市" + }, + { + "children": [ + { + "areaCode": 420701000000, + "name": "市辖区", + "parentCode": 420700000000, + "mergerName": "湖北省-鄂州市-市辖区" + }, + { + "areaCode": 420702000000, + "name": "梁子湖区", + "parentCode": 420700000000, + "mergerName": "湖北省-鄂州市-梁子湖区" + }, + { + "areaCode": 420703000000, + "name": "华容区", + "parentCode": 420700000000, + "mergerName": "湖北省-鄂州市-华容区" + }, + { + "areaCode": 420704000000, + "name": "鄂城区", + "parentCode": 420700000000, + "mergerName": "湖北省-鄂州市-鄂城区" + } + ], + "areaCode": 420700000000, + "name": "鄂州市", + "parentCode": 420000000000, + "mergerName": "湖北省-鄂州市" + }, + { + "children": [ + { + "areaCode": 420801000000, + "name": "市辖区", + "parentCode": 420800000000, + "mergerName": "湖北省-荆门市-市辖区" + }, + { + "areaCode": 420802000000, + "name": "东宝区", + "parentCode": 420800000000, + "mergerName": "湖北省-荆门市-东宝区" + }, + { + "areaCode": 420804000000, + "name": "掇刀区", + "parentCode": 420800000000, + "mergerName": "湖北省-荆门市-掇刀区" + }, + { + "areaCode": 420822000000, + "name": "沙洋县", + "parentCode": 420800000000, + "mergerName": "湖北省-荆门市-沙洋县" + }, + { + "areaCode": 420881000000, + "name": "钟祥市", + "parentCode": 420800000000, + "mergerName": "湖北省-荆门市-钟祥市" + }, + { + "areaCode": 420882000000, + "name": "京山市", + "parentCode": 420800000000, + "mergerName": "湖北省-荆门市-京山市" + } + ], + "areaCode": 420800000000, + "name": "荆门市", + "parentCode": 420000000000, + "mergerName": "湖北省-荆门市" + }, + { + "children": [ + { + "areaCode": 420901000000, + "name": "市辖区", + "parentCode": 420900000000, + "mergerName": "湖北省-孝感市-市辖区" + }, + { + "areaCode": 420902000000, + "name": "孝南区", + "parentCode": 420900000000, + "mergerName": "湖北省-孝感市-孝南区" + }, + { + "areaCode": 420921000000, + "name": "孝昌县", + "parentCode": 420900000000, + "mergerName": "湖北省-孝感市-孝昌县" + }, + { + "areaCode": 420922000000, + "name": "大悟县", + "parentCode": 420900000000, + "mergerName": "湖北省-孝感市-大悟县" + }, + { + "areaCode": 420923000000, + "name": "云梦县", + "parentCode": 420900000000, + "mergerName": "湖北省-孝感市-云梦县" + }, + { + "areaCode": 420981000000, + "name": "应城市", + "parentCode": 420900000000, + "mergerName": "湖北省-孝感市-应城市" + }, + { + "areaCode": 420982000000, + "name": "安陆市", + "parentCode": 420900000000, + "mergerName": "湖北省-孝感市-安陆市" + }, + { + "areaCode": 420984000000, + "name": "汉川市", + "parentCode": 420900000000, + "mergerName": "湖北省-孝感市-汉川市" + } + ], + "areaCode": 420900000000, + "name": "孝感市", + "parentCode": 420000000000, + "mergerName": "湖北省-孝感市" + }, + { + "children": [ + { + "areaCode": 421001000000, + "name": "市辖区", + "parentCode": 421000000000, + "mergerName": "湖北省-荆州市-市辖区" + }, + { + "areaCode": 421002000000, + "name": "沙市区", + "parentCode": 421000000000, + "mergerName": "湖北省-荆州市-沙市区" + }, + { + "areaCode": 421003000000, + "name": "荆州区", + "parentCode": 421000000000, + "mergerName": "湖北省-荆州市-荆州区" + }, + { + "areaCode": 421022000000, + "name": "公安县", + "parentCode": 421000000000, + "mergerName": "湖北省-荆州市-公安县" + }, + { + "areaCode": 421023000000, + "name": "监利县", + "parentCode": 421000000000, + "mergerName": "湖北省-荆州市-监利县" + }, + { + "areaCode": 421024000000, + "name": "江陵县", + "parentCode": 421000000000, + "mergerName": "湖北省-荆州市-江陵县" + }, + { + "areaCode": 421071000000, + "name": "荆州经济技术开发区", + "parentCode": 421000000000, + "mergerName": "湖北省-荆州市-荆州经济技术开发区" + }, + { + "areaCode": 421081000000, + "name": "石首市", + "parentCode": 421000000000, + "mergerName": "湖北省-荆州市-石首市" + }, + { + "areaCode": 421083000000, + "name": "洪湖市", + "parentCode": 421000000000, + "mergerName": "湖北省-荆州市-洪湖市" + }, + { + "areaCode": 421087000000, + "name": "松滋市", + "parentCode": 421000000000, + "mergerName": "湖北省-荆州市-松滋市" + } + ], + "areaCode": 421000000000, + "name": "荆州市", + "parentCode": 420000000000, + "mergerName": "湖北省-荆州市" + }, + { + "children": [ + { + "areaCode": 421101000000, + "name": "市辖区", + "parentCode": 421100000000, + "mergerName": "湖北省-黄冈市-市辖区" + }, + { + "areaCode": 421102000000, + "name": "黄州区", + "parentCode": 421100000000, + "mergerName": "湖北省-黄冈市-黄州区" + }, + { + "areaCode": 421121000000, + "name": "团风县", + "parentCode": 421100000000, + "mergerName": "湖北省-黄冈市-团风县" + }, + { + "areaCode": 421122000000, + "name": "红安县", + "parentCode": 421100000000, + "mergerName": "湖北省-黄冈市-红安县" + }, + { + "areaCode": 421123000000, + "name": "罗田县", + "parentCode": 421100000000, + "mergerName": "湖北省-黄冈市-罗田县" + }, + { + "areaCode": 421124000000, + "name": "英山县", + "parentCode": 421100000000, + "mergerName": "湖北省-黄冈市-英山县" + }, + { + "areaCode": 421125000000, + "name": "浠水县", + "parentCode": 421100000000, + "mergerName": "湖北省-黄冈市-浠水县" + }, + { + "areaCode": 421126000000, + "name": "蕲春县", + "parentCode": 421100000000, + "mergerName": "湖北省-黄冈市-蕲春县" + }, + { + "areaCode": 421127000000, + "name": "黄梅县", + "parentCode": 421100000000, + "mergerName": "湖北省-黄冈市-黄梅县" + }, + { + "areaCode": 421171000000, + "name": "龙感湖管理区", + "parentCode": 421100000000, + "mergerName": "湖北省-黄冈市-龙感湖管理区" + }, + { + "areaCode": 421181000000, + "name": "麻城市", + "parentCode": 421100000000, + "mergerName": "湖北省-黄冈市-麻城市" + }, + { + "areaCode": 421182000000, + "name": "武穴市", + "parentCode": 421100000000, + "mergerName": "湖北省-黄冈市-武穴市" + } + ], + "areaCode": 421100000000, + "name": "黄冈市", + "parentCode": 420000000000, + "mergerName": "湖北省-黄冈市" + }, + { + "children": [ + { + "areaCode": 421201000000, + "name": "市辖区", + "parentCode": 421200000000, + "mergerName": "湖北省-咸宁市-市辖区" + }, + { + "areaCode": 421202000000, + "name": "咸安区", + "parentCode": 421200000000, + "mergerName": "湖北省-咸宁市-咸安区" + }, + { + "areaCode": 421221000000, + "name": "嘉鱼县", + "parentCode": 421200000000, + "mergerName": "湖北省-咸宁市-嘉鱼县" + }, + { + "areaCode": 421222000000, + "name": "通城县", + "parentCode": 421200000000, + "mergerName": "湖北省-咸宁市-通城县" + }, + { + "areaCode": 421223000000, + "name": "崇阳县", + "parentCode": 421200000000, + "mergerName": "湖北省-咸宁市-崇阳县" + }, + { + "areaCode": 421224000000, + "name": "通山县", + "parentCode": 421200000000, + "mergerName": "湖北省-咸宁市-通山县" + }, + { + "areaCode": 421281000000, + "name": "赤壁市", + "parentCode": 421200000000, + "mergerName": "湖北省-咸宁市-赤壁市" + } + ], + "areaCode": 421200000000, + "name": "咸宁市", + "parentCode": 420000000000, + "mergerName": "湖北省-咸宁市" + }, + { + "children": [ + { + "areaCode": 421301000000, + "name": "市辖区", + "parentCode": 421300000000, + "mergerName": "湖北省-随州市-市辖区" + }, + { + "areaCode": 421303000000, + "name": "曾都区", + "parentCode": 421300000000, + "mergerName": "湖北省-随州市-曾都区" + }, + { "areaCode": 421321000000, "name": "随县", "parentCode": 421300000000, "mergerName": "湖北省-随州市-随县" }, + { + "areaCode": 421381000000, + "name": "广水市", + "parentCode": 421300000000, + "mergerName": "湖北省-随州市-广水市" + } + ], + "areaCode": 421300000000, + "name": "随州市", + "parentCode": 420000000000, + "mergerName": "湖北省-随州市" + }, + { + "children": [ + { + "areaCode": 422801000000, + "name": "恩施市", + "parentCode": 422800000000, + "mergerName": "湖北省-恩施土家族苗族自治州-恩施市" + }, + { + "areaCode": 422802000000, + "name": "利川市", + "parentCode": 422800000000, + "mergerName": "湖北省-恩施土家族苗族自治州-利川市" + }, + { + "areaCode": 422822000000, + "name": "建始县", + "parentCode": 422800000000, + "mergerName": "湖北省-恩施土家族苗族自治州-建始县" + }, + { + "areaCode": 422823000000, + "name": "巴东县", + "parentCode": 422800000000, + "mergerName": "湖北省-恩施土家族苗族自治州-巴东县" + }, + { + "areaCode": 422825000000, + "name": "宣恩县", + "parentCode": 422800000000, + "mergerName": "湖北省-恩施土家族苗族自治州-宣恩县" + }, + { + "areaCode": 422826000000, + "name": "咸丰县", + "parentCode": 422800000000, + "mergerName": "湖北省-恩施土家族苗族自治州-咸丰县" + }, + { + "areaCode": 422827000000, + "name": "来凤县", + "parentCode": 422800000000, + "mergerName": "湖北省-恩施土家族苗族自治州-来凤县" + }, + { + "areaCode": 422828000000, + "name": "鹤峰县", + "parentCode": 422800000000, + "mergerName": "湖北省-恩施土家族苗族自治州-鹤峰县" + } + ], + "areaCode": 422800000000, + "name": "恩施土家族苗族自治州", + "parentCode": 420000000000, + "mergerName": "湖北省-恩施土家族苗族自治州" + }, + { + "children": [ + { + "areaCode": 429004000000, + "name": "仙桃市", + "parentCode": 429000000000, + "mergerName": "湖北省-直辖县-仙桃市" + }, + { + "areaCode": 429005000000, + "name": "潜江市", + "parentCode": 429000000000, + "mergerName": "湖北省-直辖县-潜江市" + }, + { + "areaCode": 429006000000, + "name": "天门市", + "parentCode": 429000000000, + "mergerName": "湖北省-直辖县-天门市" + }, + { + "areaCode": 429021000000, + "name": "神农架林区", + "parentCode": 429000000000, + "mergerName": "湖北省-直辖县-神农架林区" + } + ], + "areaCode": 429000000000, + "name": "直辖县", + "parentCode": 420000000000, + "mergerName": "湖北省-直辖县" + } + ], + "areaCode": 420000000000, + "name": "湖北省", + "parentCode": 0, + "mergerName": "-湖北省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 430101000000, + "name": "市辖区", + "parentCode": 430100000000, + "mergerName": "湖南省-长沙市-市辖区" + }, + { + "areaCode": 430102000000, + "name": "芙蓉区", + "parentCode": 430100000000, + "mergerName": "湖南省-长沙市-芙蓉区" + }, + { + "areaCode": 430103000000, + "name": "天心区", + "parentCode": 430100000000, + "mergerName": "湖南省-长沙市-天心区" + }, + { + "areaCode": 430104000000, + "name": "岳麓区", + "parentCode": 430100000000, + "mergerName": "湖南省-长沙市-岳麓区" + }, + { + "areaCode": 430105000000, + "name": "开福区", + "parentCode": 430100000000, + "mergerName": "湖南省-长沙市-开福区" + }, + { + "areaCode": 430111000000, + "name": "雨花区", + "parentCode": 430100000000, + "mergerName": "湖南省-长沙市-雨花区" + }, + { + "areaCode": 430112000000, + "name": "望城区", + "parentCode": 430100000000, + "mergerName": "湖南省-长沙市-望城区" + }, + { + "areaCode": 430121000000, + "name": "长沙县", + "parentCode": 430100000000, + "mergerName": "湖南省-长沙市-长沙县" + }, + { + "areaCode": 430181000000, + "name": "浏阳市", + "parentCode": 430100000000, + "mergerName": "湖南省-长沙市-浏阳市" + }, + { + "areaCode": 430182000000, + "name": "宁乡市", + "parentCode": 430100000000, + "mergerName": "湖南省-长沙市-宁乡市" + } + ], + "areaCode": 430100000000, + "name": "长沙市", + "parentCode": 430000000000, + "mergerName": "湖南省-长沙市" + }, + { + "children": [ + { + "areaCode": 430201000000, + "name": "市辖区", + "parentCode": 430200000000, + "mergerName": "湖南省-株洲市-市辖区" + }, + { + "areaCode": 430202000000, + "name": "荷塘区", + "parentCode": 430200000000, + "mergerName": "湖南省-株洲市-荷塘区" + }, + { + "areaCode": 430203000000, + "name": "芦淞区", + "parentCode": 430200000000, + "mergerName": "湖南省-株洲市-芦淞区" + }, + { + "areaCode": 430204000000, + "name": "石峰区", + "parentCode": 430200000000, + "mergerName": "湖南省-株洲市-石峰区" + }, + { + "areaCode": 430211000000, + "name": "天元区", + "parentCode": 430200000000, + "mergerName": "湖南省-株洲市-天元区" + }, + { + "areaCode": 430212000000, + "name": "渌口区", + "parentCode": 430200000000, + "mergerName": "湖南省-株洲市-渌口区" + }, + { "areaCode": 430223000000, "name": "攸县", "parentCode": 430200000000, "mergerName": "湖南省-株洲市-攸县" }, + { + "areaCode": 430224000000, + "name": "茶陵县", + "parentCode": 430200000000, + "mergerName": "湖南省-株洲市-茶陵县" + }, + { + "areaCode": 430225000000, + "name": "炎陵县", + "parentCode": 430200000000, + "mergerName": "湖南省-株洲市-炎陵县" + }, + { + "areaCode": 430271000000, + "name": "云龙示范区", + "parentCode": 430200000000, + "mergerName": "湖南省-株洲市-云龙示范区" + }, + { + "areaCode": 430281000000, + "name": "醴陵市", + "parentCode": 430200000000, + "mergerName": "湖南省-株洲市-醴陵市" + } + ], + "areaCode": 430200000000, + "name": "株洲市", + "parentCode": 430000000000, + "mergerName": "湖南省-株洲市" + }, + { + "children": [ + { + "areaCode": 430301000000, + "name": "市辖区", + "parentCode": 430300000000, + "mergerName": "湖南省-湘潭市-市辖区" + }, + { + "areaCode": 430302000000, + "name": "雨湖区", + "parentCode": 430300000000, + "mergerName": "湖南省-湘潭市-雨湖区" + }, + { + "areaCode": 430304000000, + "name": "岳塘区", + "parentCode": 430300000000, + "mergerName": "湖南省-湘潭市-岳塘区" + }, + { + "areaCode": 430321000000, + "name": "湘潭县", + "parentCode": 430300000000, + "mergerName": "湖南省-湘潭市-湘潭县" + }, + { + "areaCode": 430371000000, + "name": "湖南湘潭高新技术产业园区", + "parentCode": 430300000000, + "mergerName": "湖南省-湘潭市-湖南湘潭高新技术产业园区" + }, + { + "areaCode": 430372000000, + "name": "湘潭昭山示范区", + "parentCode": 430300000000, + "mergerName": "湖南省-湘潭市-湘潭昭山示范区" + }, + { + "areaCode": 430373000000, + "name": "湘潭九华示范区", + "parentCode": 430300000000, + "mergerName": "湖南省-湘潭市-湘潭九华示范区" + }, + { + "areaCode": 430381000000, + "name": "湘乡市", + "parentCode": 430300000000, + "mergerName": "湖南省-湘潭市-湘乡市" + }, + { + "areaCode": 430382000000, + "name": "韶山市", + "parentCode": 430300000000, + "mergerName": "湖南省-湘潭市-韶山市" + } + ], + "areaCode": 430300000000, + "name": "湘潭市", + "parentCode": 430000000000, + "mergerName": "湖南省-湘潭市" + }, + { + "children": [ + { + "areaCode": 430401000000, + "name": "市辖区", + "parentCode": 430400000000, + "mergerName": "湖南省-衡阳市-市辖区" + }, + { + "areaCode": 430405000000, + "name": "珠晖区", + "parentCode": 430400000000, + "mergerName": "湖南省-衡阳市-珠晖区" + }, + { + "areaCode": 430406000000, + "name": "雁峰区", + "parentCode": 430400000000, + "mergerName": "湖南省-衡阳市-雁峰区" + }, + { + "areaCode": 430407000000, + "name": "石鼓区", + "parentCode": 430400000000, + "mergerName": "湖南省-衡阳市-石鼓区" + }, + { + "areaCode": 430408000000, + "name": "蒸湘区", + "parentCode": 430400000000, + "mergerName": "湖南省-衡阳市-蒸湘区" + }, + { + "areaCode": 430412000000, + "name": "南岳区", + "parentCode": 430400000000, + "mergerName": "湖南省-衡阳市-南岳区" + }, + { + "areaCode": 430421000000, + "name": "衡阳县", + "parentCode": 430400000000, + "mergerName": "湖南省-衡阳市-衡阳县" + }, + { + "areaCode": 430422000000, + "name": "衡南县", + "parentCode": 430400000000, + "mergerName": "湖南省-衡阳市-衡南县" + }, + { + "areaCode": 430423000000, + "name": "衡山县", + "parentCode": 430400000000, + "mergerName": "湖南省-衡阳市-衡山县" + }, + { + "areaCode": 430424000000, + "name": "衡东县", + "parentCode": 430400000000, + "mergerName": "湖南省-衡阳市-衡东县" + }, + { + "areaCode": 430426000000, + "name": "祁东县", + "parentCode": 430400000000, + "mergerName": "湖南省-衡阳市-祁东县" + }, + { + "areaCode": 430471000000, + "name": "衡阳综合保税区", + "parentCode": 430400000000, + "mergerName": "湖南省-衡阳市-衡阳综合保税区" + }, + { + "areaCode": 430472000000, + "name": "湖南衡阳高新技术产业园区", + "parentCode": 430400000000, + "mergerName": "湖南省-衡阳市-湖南衡阳高新技术产业园区" + }, + { + "areaCode": 430473000000, + "name": "湖南衡阳松木经济开发区", + "parentCode": 430400000000, + "mergerName": "湖南省-衡阳市-湖南衡阳松木经济开发区" + }, + { + "areaCode": 430481000000, + "name": "耒阳市", + "parentCode": 430400000000, + "mergerName": "湖南省-衡阳市-耒阳市" + }, + { + "areaCode": 430482000000, + "name": "常宁市", + "parentCode": 430400000000, + "mergerName": "湖南省-衡阳市-常宁市" + } + ], + "areaCode": 430400000000, + "name": "衡阳市", + "parentCode": 430000000000, + "mergerName": "湖南省-衡阳市" + }, + { + "children": [ + { + "areaCode": 430501000000, + "name": "市辖区", + "parentCode": 430500000000, + "mergerName": "湖南省-邵阳市-市辖区" + }, + { + "areaCode": 430502000000, + "name": "双清区", + "parentCode": 430500000000, + "mergerName": "湖南省-邵阳市-双清区" + }, + { + "areaCode": 430503000000, + "name": "大祥区", + "parentCode": 430500000000, + "mergerName": "湖南省-邵阳市-大祥区" + }, + { + "areaCode": 430511000000, + "name": "北塔区", + "parentCode": 430500000000, + "mergerName": "湖南省-邵阳市-北塔区" + }, + { + "areaCode": 430521000000, + "name": "邵东县", + "parentCode": 430500000000, + "mergerName": "湖南省-邵阳市-邵东县" + }, + { + "areaCode": 430522000000, + "name": "新邵县", + "parentCode": 430500000000, + "mergerName": "湖南省-邵阳市-新邵县" + }, + { + "areaCode": 430523000000, + "name": "邵阳县", + "parentCode": 430500000000, + "mergerName": "湖南省-邵阳市-邵阳县" + }, + { + "areaCode": 430524000000, + "name": "隆回县", + "parentCode": 430500000000, + "mergerName": "湖南省-邵阳市-隆回县" + }, + { + "areaCode": 430525000000, + "name": "洞口县", + "parentCode": 430500000000, + "mergerName": "湖南省-邵阳市-洞口县" + }, + { + "areaCode": 430527000000, + "name": "绥宁县", + "parentCode": 430500000000, + "mergerName": "湖南省-邵阳市-绥宁县" + }, + { + "areaCode": 430528000000, + "name": "新宁县", + "parentCode": 430500000000, + "mergerName": "湖南省-邵阳市-新宁县" + }, + { + "areaCode": 430529000000, + "name": "城步苗族自治县", + "parentCode": 430500000000, + "mergerName": "湖南省-邵阳市-城步苗族自治县" + }, + { + "areaCode": 430581000000, + "name": "武冈市", + "parentCode": 430500000000, + "mergerName": "湖南省-邵阳市-武冈市" + } + ], + "areaCode": 430500000000, + "name": "邵阳市", + "parentCode": 430000000000, + "mergerName": "湖南省-邵阳市" + }, + { + "children": [ + { + "areaCode": 430601000000, + "name": "市辖区", + "parentCode": 430600000000, + "mergerName": "湖南省-岳阳市-市辖区" + }, + { + "areaCode": 430602000000, + "name": "岳阳楼区", + "parentCode": 430600000000, + "mergerName": "湖南省-岳阳市-岳阳楼区" + }, + { + "areaCode": 430603000000, + "name": "云溪区", + "parentCode": 430600000000, + "mergerName": "湖南省-岳阳市-云溪区" + }, + { + "areaCode": 430611000000, + "name": "君山区", + "parentCode": 430600000000, + "mergerName": "湖南省-岳阳市-君山区" + }, + { + "areaCode": 430621000000, + "name": "岳阳县", + "parentCode": 430600000000, + "mergerName": "湖南省-岳阳市-岳阳县" + }, + { + "areaCode": 430623000000, + "name": "华容县", + "parentCode": 430600000000, + "mergerName": "湖南省-岳阳市-华容县" + }, + { + "areaCode": 430624000000, + "name": "湘阴县", + "parentCode": 430600000000, + "mergerName": "湖南省-岳阳市-湘阴县" + }, + { + "areaCode": 430626000000, + "name": "平江县", + "parentCode": 430600000000, + "mergerName": "湖南省-岳阳市-平江县" + }, + { + "areaCode": 430671000000, + "name": "岳阳市屈原管理区", + "parentCode": 430600000000, + "mergerName": "湖南省-岳阳市-岳阳市屈原管理区" + }, + { + "areaCode": 430681000000, + "name": "汨罗市", + "parentCode": 430600000000, + "mergerName": "湖南省-岳阳市-汨罗市" + }, + { + "areaCode": 430682000000, + "name": "临湘市", + "parentCode": 430600000000, + "mergerName": "湖南省-岳阳市-临湘市" + } + ], + "areaCode": 430600000000, + "name": "岳阳市", + "parentCode": 430000000000, + "mergerName": "湖南省-岳阳市" + }, + { + "children": [ + { + "areaCode": 430701000000, + "name": "市辖区", + "parentCode": 430700000000, + "mergerName": "湖南省-常德市-市辖区" + }, + { + "areaCode": 430702000000, + "name": "武陵区", + "parentCode": 430700000000, + "mergerName": "湖南省-常德市-武陵区" + }, + { + "areaCode": 430703000000, + "name": "鼎城区", + "parentCode": 430700000000, + "mergerName": "湖南省-常德市-鼎城区" + }, + { + "areaCode": 430721000000, + "name": "安乡县", + "parentCode": 430700000000, + "mergerName": "湖南省-常德市-安乡县" + }, + { + "areaCode": 430722000000, + "name": "汉寿县", + "parentCode": 430700000000, + "mergerName": "湖南省-常德市-汉寿县" + }, + { "areaCode": 430723000000, "name": "澧县", "parentCode": 430700000000, "mergerName": "湖南省-常德市-澧县" }, + { + "areaCode": 430724000000, + "name": "临澧县", + "parentCode": 430700000000, + "mergerName": "湖南省-常德市-临澧县" + }, + { + "areaCode": 430725000000, + "name": "桃源县", + "parentCode": 430700000000, + "mergerName": "湖南省-常德市-桃源县" + }, + { + "areaCode": 430726000000, + "name": "石门县", + "parentCode": 430700000000, + "mergerName": "湖南省-常德市-石门县" + }, + { + "areaCode": 430771000000, + "name": "常德市西洞庭管理区", + "parentCode": 430700000000, + "mergerName": "湖南省-常德市-常德市西洞庭管理区" + }, + { + "areaCode": 430781000000, + "name": "津市市", + "parentCode": 430700000000, + "mergerName": "湖南省-常德市-津市市" + } + ], + "areaCode": 430700000000, + "name": "常德市", + "parentCode": 430000000000, + "mergerName": "湖南省-常德市" + }, + { + "children": [ + { + "areaCode": 430801000000, + "name": "市辖区", + "parentCode": 430800000000, + "mergerName": "湖南省-张家界市-市辖区" + }, + { + "areaCode": 430802000000, + "name": "永定区", + "parentCode": 430800000000, + "mergerName": "湖南省-张家界市-永定区" + }, + { + "areaCode": 430811000000, + "name": "武陵源区", + "parentCode": 430800000000, + "mergerName": "湖南省-张家界市-武陵源区" + }, + { + "areaCode": 430821000000, + "name": "慈利县", + "parentCode": 430800000000, + "mergerName": "湖南省-张家界市-慈利县" + }, + { + "areaCode": 430822000000, + "name": "桑植县", + "parentCode": 430800000000, + "mergerName": "湖南省-张家界市-桑植县" + } + ], + "areaCode": 430800000000, + "name": "张家界市", + "parentCode": 430000000000, + "mergerName": "湖南省-张家界市" + }, + { + "children": [ + { + "areaCode": 430901000000, + "name": "市辖区", + "parentCode": 430900000000, + "mergerName": "湖南省-益阳市-市辖区" + }, + { + "areaCode": 430902000000, + "name": "资阳区", + "parentCode": 430900000000, + "mergerName": "湖南省-益阳市-资阳区" + }, + { + "areaCode": 430903000000, + "name": "赫山区", + "parentCode": 430900000000, + "mergerName": "湖南省-益阳市-赫山区" + }, + { "areaCode": 430921000000, "name": "南县", "parentCode": 430900000000, "mergerName": "湖南省-益阳市-南县" }, + { + "areaCode": 430922000000, + "name": "桃江县", + "parentCode": 430900000000, + "mergerName": "湖南省-益阳市-桃江县" + }, + { + "areaCode": 430923000000, + "name": "安化县", + "parentCode": 430900000000, + "mergerName": "湖南省-益阳市-安化县" + }, + { + "areaCode": 430971000000, + "name": "益阳市大通湖管理区", + "parentCode": 430900000000, + "mergerName": "湖南省-益阳市-益阳市大通湖管理区" + }, + { + "areaCode": 430972000000, + "name": "湖南益阳高新技术产业园区", + "parentCode": 430900000000, + "mergerName": "湖南省-益阳市-湖南益阳高新技术产业园区" + }, + { + "areaCode": 430981000000, + "name": "沅江市", + "parentCode": 430900000000, + "mergerName": "湖南省-益阳市-沅江市" + } + ], + "areaCode": 430900000000, + "name": "益阳市", + "parentCode": 430000000000, + "mergerName": "湖南省-益阳市" + }, + { + "children": [ + { + "areaCode": 431001000000, + "name": "市辖区", + "parentCode": 431000000000, + "mergerName": "湖南省-郴州市-市辖区" + }, + { + "areaCode": 431002000000, + "name": "北湖区", + "parentCode": 431000000000, + "mergerName": "湖南省-郴州市-北湖区" + }, + { + "areaCode": 431003000000, + "name": "苏仙区", + "parentCode": 431000000000, + "mergerName": "湖南省-郴州市-苏仙区" + }, + { + "areaCode": 431021000000, + "name": "桂阳县", + "parentCode": 431000000000, + "mergerName": "湖南省-郴州市-桂阳县" + }, + { + "areaCode": 431022000000, + "name": "宜章县", + "parentCode": 431000000000, + "mergerName": "湖南省-郴州市-宜章县" + }, + { + "areaCode": 431023000000, + "name": "永兴县", + "parentCode": 431000000000, + "mergerName": "湖南省-郴州市-永兴县" + }, + { + "areaCode": 431024000000, + "name": "嘉禾县", + "parentCode": 431000000000, + "mergerName": "湖南省-郴州市-嘉禾县" + }, + { + "areaCode": 431025000000, + "name": "临武县", + "parentCode": 431000000000, + "mergerName": "湖南省-郴州市-临武县" + }, + { + "areaCode": 431026000000, + "name": "汝城县", + "parentCode": 431000000000, + "mergerName": "湖南省-郴州市-汝城县" + }, + { + "areaCode": 431027000000, + "name": "桂东县", + "parentCode": 431000000000, + "mergerName": "湖南省-郴州市-桂东县" + }, + { + "areaCode": 431028000000, + "name": "安仁县", + "parentCode": 431000000000, + "mergerName": "湖南省-郴州市-安仁县" + }, + { + "areaCode": 431081000000, + "name": "资兴市", + "parentCode": 431000000000, + "mergerName": "湖南省-郴州市-资兴市" + } + ], + "areaCode": 431000000000, + "name": "郴州市", + "parentCode": 430000000000, + "mergerName": "湖南省-郴州市" + }, + { + "children": [ + { + "areaCode": 431101000000, + "name": "市辖区", + "parentCode": 431100000000, + "mergerName": "湖南省-永州市-市辖区" + }, + { + "areaCode": 431102000000, + "name": "零陵区", + "parentCode": 431100000000, + "mergerName": "湖南省-永州市-零陵区" + }, + { + "areaCode": 431103000000, + "name": "冷水滩区", + "parentCode": 431100000000, + "mergerName": "湖南省-永州市-冷水滩区" + }, + { + "areaCode": 431121000000, + "name": "祁阳县", + "parentCode": 431100000000, + "mergerName": "湖南省-永州市-祁阳县" + }, + { + "areaCode": 431122000000, + "name": "东安县", + "parentCode": 431100000000, + "mergerName": "湖南省-永州市-东安县" + }, + { + "areaCode": 431123000000, + "name": "双牌县", + "parentCode": 431100000000, + "mergerName": "湖南省-永州市-双牌县" + }, + { "areaCode": 431124000000, "name": "道县", "parentCode": 431100000000, "mergerName": "湖南省-永州市-道县" }, + { + "areaCode": 431125000000, + "name": "江永县", + "parentCode": 431100000000, + "mergerName": "湖南省-永州市-江永县" + }, + { + "areaCode": 431126000000, + "name": "宁远县", + "parentCode": 431100000000, + "mergerName": "湖南省-永州市-宁远县" + }, + { + "areaCode": 431127000000, + "name": "蓝山县", + "parentCode": 431100000000, + "mergerName": "湖南省-永州市-蓝山县" + }, + { + "areaCode": 431128000000, + "name": "新田县", + "parentCode": 431100000000, + "mergerName": "湖南省-永州市-新田县" + }, + { + "areaCode": 431129000000, + "name": "江华瑶族自治县", + "parentCode": 431100000000, + "mergerName": "湖南省-永州市-江华瑶族自治县" + }, + { + "areaCode": 431171000000, + "name": "永州经济技术开发区", + "parentCode": 431100000000, + "mergerName": "湖南省-永州市-永州经济技术开发区" + }, + { + "areaCode": 431172000000, + "name": "永州市金洞管理区", + "parentCode": 431100000000, + "mergerName": "湖南省-永州市-永州市金洞管理区" + }, + { + "areaCode": 431173000000, + "name": "永州市回龙圩管理区", + "parentCode": 431100000000, + "mergerName": "湖南省-永州市-永州市回龙圩管理区" + } + ], + "areaCode": 431100000000, + "name": "永州市", + "parentCode": 430000000000, + "mergerName": "湖南省-永州市" + }, + { + "children": [ + { + "areaCode": 431201000000, + "name": "市辖区", + "parentCode": 431200000000, + "mergerName": "湖南省-怀化市-市辖区" + }, + { + "areaCode": 431202000000, + "name": "鹤城区", + "parentCode": 431200000000, + "mergerName": "湖南省-怀化市-鹤城区" + }, + { + "areaCode": 431221000000, + "name": "中方县", + "parentCode": 431200000000, + "mergerName": "湖南省-怀化市-中方县" + }, + { + "areaCode": 431222000000, + "name": "沅陵县", + "parentCode": 431200000000, + "mergerName": "湖南省-怀化市-沅陵县" + }, + { + "areaCode": 431223000000, + "name": "辰溪县", + "parentCode": 431200000000, + "mergerName": "湖南省-怀化市-辰溪县" + }, + { + "areaCode": 431224000000, + "name": "溆浦县", + "parentCode": 431200000000, + "mergerName": "湖南省-怀化市-溆浦县" + }, + { + "areaCode": 431225000000, + "name": "会同县", + "parentCode": 431200000000, + "mergerName": "湖南省-怀化市-会同县" + }, + { + "areaCode": 431226000000, + "name": "麻阳苗族自治县", + "parentCode": 431200000000, + "mergerName": "湖南省-怀化市-麻阳苗族自治县" + }, + { + "areaCode": 431227000000, + "name": "新晃侗族自治县", + "parentCode": 431200000000, + "mergerName": "湖南省-怀化市-新晃侗族自治县" + }, + { + "areaCode": 431228000000, + "name": "芷江侗族自治县", + "parentCode": 431200000000, + "mergerName": "湖南省-怀化市-芷江侗族自治县" + }, + { + "areaCode": 431229000000, + "name": "靖州苗族侗族自治县", + "parentCode": 431200000000, + "mergerName": "湖南省-怀化市-靖州苗族侗族自治县" + }, + { + "areaCode": 431230000000, + "name": "通道侗族自治县", + "parentCode": 431200000000, + "mergerName": "湖南省-怀化市-通道侗族自治县" + }, + { + "areaCode": 431271000000, + "name": "怀化市洪江管理区", + "parentCode": 431200000000, + "mergerName": "湖南省-怀化市-怀化市洪江管理区" + }, + { + "areaCode": 431281000000, + "name": "洪江市", + "parentCode": 431200000000, + "mergerName": "湖南省-怀化市-洪江市" + } + ], + "areaCode": 431200000000, + "name": "怀化市", + "parentCode": 430000000000, + "mergerName": "湖南省-怀化市" + }, + { + "children": [ + { + "areaCode": 431301000000, + "name": "市辖区", + "parentCode": 431300000000, + "mergerName": "湖南省-娄底市-市辖区" + }, + { + "areaCode": 431302000000, + "name": "娄星区", + "parentCode": 431300000000, + "mergerName": "湖南省-娄底市-娄星区" + }, + { + "areaCode": 431321000000, + "name": "双峰县", + "parentCode": 431300000000, + "mergerName": "湖南省-娄底市-双峰县" + }, + { + "areaCode": 431322000000, + "name": "新化县", + "parentCode": 431300000000, + "mergerName": "湖南省-娄底市-新化县" + }, + { + "areaCode": 431381000000, + "name": "冷水江市", + "parentCode": 431300000000, + "mergerName": "湖南省-娄底市-冷水江市" + }, + { + "areaCode": 431382000000, + "name": "涟源市", + "parentCode": 431300000000, + "mergerName": "湖南省-娄底市-涟源市" + } + ], + "areaCode": 431300000000, + "name": "娄底市", + "parentCode": 430000000000, + "mergerName": "湖南省-娄底市" + }, + { + "children": [ + { + "areaCode": 433101000000, + "name": "吉首市", + "parentCode": 433100000000, + "mergerName": "湖南省-湘西土家族苗族自治州-吉首市" + }, + { + "areaCode": 433122000000, + "name": "泸溪县", + "parentCode": 433100000000, + "mergerName": "湖南省-湘西土家族苗族自治州-泸溪县" + }, + { + "areaCode": 433123000000, + "name": "凤凰县", + "parentCode": 433100000000, + "mergerName": "湖南省-湘西土家族苗族自治州-凤凰县" + }, + { + "areaCode": 433124000000, + "name": "花垣县", + "parentCode": 433100000000, + "mergerName": "湖南省-湘西土家族苗族自治州-花垣县" + }, + { + "areaCode": 433125000000, + "name": "保靖县", + "parentCode": 433100000000, + "mergerName": "湖南省-湘西土家族苗族自治州-保靖县" + }, + { + "areaCode": 433126000000, + "name": "古丈县", + "parentCode": 433100000000, + "mergerName": "湖南省-湘西土家族苗族自治州-古丈县" + }, + { + "areaCode": 433127000000, + "name": "永顺县", + "parentCode": 433100000000, + "mergerName": "湖南省-湘西土家族苗族自治州-永顺县" + }, + { + "areaCode": 433130000000, + "name": "龙山县", + "parentCode": 433100000000, + "mergerName": "湖南省-湘西土家族苗族自治州-龙山县" + }, + { + "areaCode": 433172000000, + "name": "湖南吉首经济开发区", + "parentCode": 433100000000, + "mergerName": "湖南省-湘西土家族苗族自治州-湖南吉首经济开发区" + }, + { + "areaCode": 433173000000, + "name": "湖南永顺经济开发区", + "parentCode": 433100000000, + "mergerName": "湖南省-湘西土家族苗族自治州-湖南永顺经济开发区" + } + ], + "areaCode": 433100000000, + "name": "湘西土家族苗族自治州", + "parentCode": 430000000000, + "mergerName": "湖南省-湘西土家族苗族自治州" + } + ], + "areaCode": 430000000000, + "name": "湖南省", + "parentCode": 0, + "mergerName": "-湖南省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 440101000000, + "name": "市辖区", + "parentCode": 440100000000, + "mergerName": "广东省-广州市-市辖区" + }, + { + "areaCode": 440103000000, + "name": "荔湾区", + "parentCode": 440100000000, + "mergerName": "广东省-广州市-荔湾区" + }, + { + "areaCode": 440104000000, + "name": "越秀区", + "parentCode": 440100000000, + "mergerName": "广东省-广州市-越秀区" + }, + { + "areaCode": 440105000000, + "name": "海珠区", + "parentCode": 440100000000, + "mergerName": "广东省-广州市-海珠区" + }, + { + "areaCode": 440106000000, + "name": "天河区", + "parentCode": 440100000000, + "mergerName": "广东省-广州市-天河区" + }, + { + "areaCode": 440111000000, + "name": "白云区", + "parentCode": 440100000000, + "mergerName": "广东省-广州市-白云区" + }, + { + "areaCode": 440112000000, + "name": "黄埔区", + "parentCode": 440100000000, + "mergerName": "广东省-广州市-黄埔区" + }, + { + "areaCode": 440113000000, + "name": "番禺区", + "parentCode": 440100000000, + "mergerName": "广东省-广州市-番禺区" + }, + { + "areaCode": 440114000000, + "name": "花都区", + "parentCode": 440100000000, + "mergerName": "广东省-广州市-花都区" + }, + { + "areaCode": 440115000000, + "name": "南沙区", + "parentCode": 440100000000, + "mergerName": "广东省-广州市-南沙区" + }, + { + "areaCode": 440117000000, + "name": "从化区", + "parentCode": 440100000000, + "mergerName": "广东省-广州市-从化区" + }, + { + "areaCode": 440118000000, + "name": "增城区", + "parentCode": 440100000000, + "mergerName": "广东省-广州市-增城区" + } + ], + "areaCode": 440100000000, + "name": "广州市", + "parentCode": 440000000000, + "mergerName": "广东省-广州市" + }, + { + "children": [ + { + "areaCode": 440201000000, + "name": "市辖区", + "parentCode": 440200000000, + "mergerName": "广东省-韶关市-市辖区" + }, + { + "areaCode": 440203000000, + "name": "武江区", + "parentCode": 440200000000, + "mergerName": "广东省-韶关市-武江区" + }, + { + "areaCode": 440204000000, + "name": "浈江区", + "parentCode": 440200000000, + "mergerName": "广东省-韶关市-浈江区" + }, + { + "areaCode": 440205000000, + "name": "曲江区", + "parentCode": 440200000000, + "mergerName": "广东省-韶关市-曲江区" + }, + { + "areaCode": 440222000000, + "name": "始兴县", + "parentCode": 440200000000, + "mergerName": "广东省-韶关市-始兴县" + }, + { + "areaCode": 440224000000, + "name": "仁化县", + "parentCode": 440200000000, + "mergerName": "广东省-韶关市-仁化县" + }, + { + "areaCode": 440229000000, + "name": "翁源县", + "parentCode": 440200000000, + "mergerName": "广东省-韶关市-翁源县" + }, + { + "areaCode": 440232000000, + "name": "乳源瑶族自治县", + "parentCode": 440200000000, + "mergerName": "广东省-韶关市-乳源瑶族自治县" + }, + { + "areaCode": 440233000000, + "name": "新丰县", + "parentCode": 440200000000, + "mergerName": "广东省-韶关市-新丰县" + }, + { + "areaCode": 440281000000, + "name": "乐昌市", + "parentCode": 440200000000, + "mergerName": "广东省-韶关市-乐昌市" + }, + { + "areaCode": 440282000000, + "name": "南雄市", + "parentCode": 440200000000, + "mergerName": "广东省-韶关市-南雄市" + } + ], + "areaCode": 440200000000, + "name": "韶关市", + "parentCode": 440000000000, + "mergerName": "广东省-韶关市" + }, + { + "children": [ + { + "areaCode": 440301000000, + "name": "市辖区", + "parentCode": 440300000000, + "mergerName": "广东省-深圳市-市辖区" + }, + { + "areaCode": 440303000000, + "name": "罗湖区", + "parentCode": 440300000000, + "mergerName": "广东省-深圳市-罗湖区" + }, + { + "areaCode": 440304000000, + "name": "福田区", + "parentCode": 440300000000, + "mergerName": "广东省-深圳市-福田区" + }, + { + "areaCode": 440305000000, + "name": "南山区", + "parentCode": 440300000000, + "mergerName": "广东省-深圳市-南山区" + }, + { + "areaCode": 440306000000, + "name": "宝安区", + "parentCode": 440300000000, + "mergerName": "广东省-深圳市-宝安区" + }, + { + "areaCode": 440307000000, + "name": "龙岗区", + "parentCode": 440300000000, + "mergerName": "广东省-深圳市-龙岗区" + }, + { + "areaCode": 440308000000, + "name": "盐田区", + "parentCode": 440300000000, + "mergerName": "广东省-深圳市-盐田区" + }, + { + "areaCode": 440309000000, + "name": "龙华区", + "parentCode": 440300000000, + "mergerName": "广东省-深圳市-龙华区" + }, + { + "areaCode": 440310000000, + "name": "坪山区", + "parentCode": 440300000000, + "mergerName": "广东省-深圳市-坪山区" + }, + { + "areaCode": 440311000000, + "name": "光明区", + "parentCode": 440300000000, + "mergerName": "广东省-深圳市-光明区" + } + ], + "areaCode": 440300000000, + "name": "深圳市", + "parentCode": 440000000000, + "mergerName": "广东省-深圳市" + }, + { + "children": [ + { + "areaCode": 440401000000, + "name": "市辖区", + "parentCode": 440400000000, + "mergerName": "广东省-珠海市-市辖区" + }, + { + "areaCode": 440402000000, + "name": "香洲区", + "parentCode": 440400000000, + "mergerName": "广东省-珠海市-香洲区" + }, + { + "areaCode": 440403000000, + "name": "斗门区", + "parentCode": 440400000000, + "mergerName": "广东省-珠海市-斗门区" + }, + { + "areaCode": 440404000000, + "name": "金湾区", + "parentCode": 440400000000, + "mergerName": "广东省-珠海市-金湾区" + } + ], + "areaCode": 440400000000, + "name": "珠海市", + "parentCode": 440000000000, + "mergerName": "广东省-珠海市" + }, + { + "children": [ + { + "areaCode": 440501000000, + "name": "市辖区", + "parentCode": 440500000000, + "mergerName": "广东省-汕头市-市辖区" + }, + { + "areaCode": 440507000000, + "name": "龙湖区", + "parentCode": 440500000000, + "mergerName": "广东省-汕头市-龙湖区" + }, + { + "areaCode": 440511000000, + "name": "金平区", + "parentCode": 440500000000, + "mergerName": "广东省-汕头市-金平区" + }, + { + "areaCode": 440512000000, + "name": "濠江区", + "parentCode": 440500000000, + "mergerName": "广东省-汕头市-濠江区" + }, + { + "areaCode": 440513000000, + "name": "潮阳区", + "parentCode": 440500000000, + "mergerName": "广东省-汕头市-潮阳区" + }, + { + "areaCode": 440514000000, + "name": "潮南区", + "parentCode": 440500000000, + "mergerName": "广东省-汕头市-潮南区" + }, + { + "areaCode": 440515000000, + "name": "澄海区", + "parentCode": 440500000000, + "mergerName": "广东省-汕头市-澄海区" + }, + { + "areaCode": 440523000000, + "name": "南澳县", + "parentCode": 440500000000, + "mergerName": "广东省-汕头市-南澳县" + } + ], + "areaCode": 440500000000, + "name": "汕头市", + "parentCode": 440000000000, + "mergerName": "广东省-汕头市" + }, + { + "children": [ + { + "areaCode": 440601000000, + "name": "市辖区", + "parentCode": 440600000000, + "mergerName": "广东省-佛山市-市辖区" + }, + { + "areaCode": 440604000000, + "name": "禅城区", + "parentCode": 440600000000, + "mergerName": "广东省-佛山市-禅城区" + }, + { + "areaCode": 440605000000, + "name": "南海区", + "parentCode": 440600000000, + "mergerName": "广东省-佛山市-南海区" + }, + { + "areaCode": 440606000000, + "name": "顺德区", + "parentCode": 440600000000, + "mergerName": "广东省-佛山市-顺德区" + }, + { + "areaCode": 440607000000, + "name": "三水区", + "parentCode": 440600000000, + "mergerName": "广东省-佛山市-三水区" + }, + { + "areaCode": 440608000000, + "name": "高明区", + "parentCode": 440600000000, + "mergerName": "广东省-佛山市-高明区" + } + ], + "areaCode": 440600000000, + "name": "佛山市", + "parentCode": 440000000000, + "mergerName": "广东省-佛山市" + }, + { + "children": [ + { + "areaCode": 440701000000, + "name": "市辖区", + "parentCode": 440700000000, + "mergerName": "广东省-江门市-市辖区" + }, + { + "areaCode": 440703000000, + "name": "蓬江区", + "parentCode": 440700000000, + "mergerName": "广东省-江门市-蓬江区" + }, + { + "areaCode": 440704000000, + "name": "江海区", + "parentCode": 440700000000, + "mergerName": "广东省-江门市-江海区" + }, + { + "areaCode": 440705000000, + "name": "新会区", + "parentCode": 440700000000, + "mergerName": "广东省-江门市-新会区" + }, + { + "areaCode": 440781000000, + "name": "台山市", + "parentCode": 440700000000, + "mergerName": "广东省-江门市-台山市" + }, + { + "areaCode": 440783000000, + "name": "开平市", + "parentCode": 440700000000, + "mergerName": "广东省-江门市-开平市" + }, + { + "areaCode": 440784000000, + "name": "鹤山市", + "parentCode": 440700000000, + "mergerName": "广东省-江门市-鹤山市" + }, + { + "areaCode": 440785000000, + "name": "恩平市", + "parentCode": 440700000000, + "mergerName": "广东省-江门市-恩平市" + } + ], + "areaCode": 440700000000, + "name": "江门市", + "parentCode": 440000000000, + "mergerName": "广东省-江门市" + }, + { + "children": [ + { + "areaCode": 440801000000, + "name": "市辖区", + "parentCode": 440800000000, + "mergerName": "广东省-湛江市-市辖区" + }, + { + "areaCode": 440802000000, + "name": "赤坎区", + "parentCode": 440800000000, + "mergerName": "广东省-湛江市-赤坎区" + }, + { + "areaCode": 440803000000, + "name": "霞山区", + "parentCode": 440800000000, + "mergerName": "广东省-湛江市-霞山区" + }, + { + "areaCode": 440804000000, + "name": "坡头区", + "parentCode": 440800000000, + "mergerName": "广东省-湛江市-坡头区" + }, + { + "areaCode": 440811000000, + "name": "麻章区", + "parentCode": 440800000000, + "mergerName": "广东省-湛江市-麻章区" + }, + { + "areaCode": 440823000000, + "name": "遂溪县", + "parentCode": 440800000000, + "mergerName": "广东省-湛江市-遂溪县" + }, + { + "areaCode": 440825000000, + "name": "徐闻县", + "parentCode": 440800000000, + "mergerName": "广东省-湛江市-徐闻县" + }, + { + "areaCode": 440881000000, + "name": "廉江市", + "parentCode": 440800000000, + "mergerName": "广东省-湛江市-廉江市" + }, + { + "areaCode": 440882000000, + "name": "雷州市", + "parentCode": 440800000000, + "mergerName": "广东省-湛江市-雷州市" + }, + { + "areaCode": 440883000000, + "name": "吴川市", + "parentCode": 440800000000, + "mergerName": "广东省-湛江市-吴川市" + } + ], + "areaCode": 440800000000, + "name": "湛江市", + "parentCode": 440000000000, + "mergerName": "广东省-湛江市" + }, + { + "children": [ + { + "areaCode": 440901000000, + "name": "市辖区", + "parentCode": 440900000000, + "mergerName": "广东省-茂名市-市辖区" + }, + { + "areaCode": 440902000000, + "name": "茂南区", + "parentCode": 440900000000, + "mergerName": "广东省-茂名市-茂南区" + }, + { + "areaCode": 440904000000, + "name": "电白区", + "parentCode": 440900000000, + "mergerName": "广东省-茂名市-电白区" + }, + { + "areaCode": 440981000000, + "name": "高州市", + "parentCode": 440900000000, + "mergerName": "广东省-茂名市-高州市" + }, + { + "areaCode": 440982000000, + "name": "化州市", + "parentCode": 440900000000, + "mergerName": "广东省-茂名市-化州市" + }, + { + "areaCode": 440983000000, + "name": "信宜市", + "parentCode": 440900000000, + "mergerName": "广东省-茂名市-信宜市" + } + ], + "areaCode": 440900000000, + "name": "茂名市", + "parentCode": 440000000000, + "mergerName": "广东省-茂名市" + }, + { + "children": [ + { + "areaCode": 441201000000, + "name": "市辖区", + "parentCode": 441200000000, + "mergerName": "广东省-肇庆市-市辖区" + }, + { + "areaCode": 441202000000, + "name": "端州区", + "parentCode": 441200000000, + "mergerName": "广东省-肇庆市-端州区" + }, + { + "areaCode": 441203000000, + "name": "鼎湖区", + "parentCode": 441200000000, + "mergerName": "广东省-肇庆市-鼎湖区" + }, + { + "areaCode": 441204000000, + "name": "高要区", + "parentCode": 441200000000, + "mergerName": "广东省-肇庆市-高要区" + }, + { + "areaCode": 441223000000, + "name": "广宁县", + "parentCode": 441200000000, + "mergerName": "广东省-肇庆市-广宁县" + }, + { + "areaCode": 441224000000, + "name": "怀集县", + "parentCode": 441200000000, + "mergerName": "广东省-肇庆市-怀集县" + }, + { + "areaCode": 441225000000, + "name": "封开县", + "parentCode": 441200000000, + "mergerName": "广东省-肇庆市-封开县" + }, + { + "areaCode": 441226000000, + "name": "德庆县", + "parentCode": 441200000000, + "mergerName": "广东省-肇庆市-德庆县" + }, + { + "areaCode": 441284000000, + "name": "四会市", + "parentCode": 441200000000, + "mergerName": "广东省-肇庆市-四会市" + } + ], + "areaCode": 441200000000, + "name": "肇庆市", + "parentCode": 440000000000, + "mergerName": "广东省-肇庆市" + }, + { + "children": [ + { + "areaCode": 441301000000, + "name": "市辖区", + "parentCode": 441300000000, + "mergerName": "广东省-惠州市-市辖区" + }, + { + "areaCode": 441302000000, + "name": "惠城区", + "parentCode": 441300000000, + "mergerName": "广东省-惠州市-惠城区" + }, + { + "areaCode": 441303000000, + "name": "惠阳区", + "parentCode": 441300000000, + "mergerName": "广东省-惠州市-惠阳区" + }, + { + "areaCode": 441322000000, + "name": "博罗县", + "parentCode": 441300000000, + "mergerName": "广东省-惠州市-博罗县" + }, + { + "areaCode": 441323000000, + "name": "惠东县", + "parentCode": 441300000000, + "mergerName": "广东省-惠州市-惠东县" + }, + { + "areaCode": 441324000000, + "name": "龙门县", + "parentCode": 441300000000, + "mergerName": "广东省-惠州市-龙门县" + } + ], + "areaCode": 441300000000, + "name": "惠州市", + "parentCode": 440000000000, + "mergerName": "广东省-惠州市" + }, + { + "children": [ + { + "areaCode": 441401000000, + "name": "市辖区", + "parentCode": 441400000000, + "mergerName": "广东省-梅州市-市辖区" + }, + { + "areaCode": 441402000000, + "name": "梅江区", + "parentCode": 441400000000, + "mergerName": "广东省-梅州市-梅江区" + }, + { + "areaCode": 441403000000, + "name": "梅县区", + "parentCode": 441400000000, + "mergerName": "广东省-梅州市-梅县区" + }, + { + "areaCode": 441422000000, + "name": "大埔县", + "parentCode": 441400000000, + "mergerName": "广东省-梅州市-大埔县" + }, + { + "areaCode": 441423000000, + "name": "丰顺县", + "parentCode": 441400000000, + "mergerName": "广东省-梅州市-丰顺县" + }, + { + "areaCode": 441424000000, + "name": "五华县", + "parentCode": 441400000000, + "mergerName": "广东省-梅州市-五华县" + }, + { + "areaCode": 441426000000, + "name": "平远县", + "parentCode": 441400000000, + "mergerName": "广东省-梅州市-平远县" + }, + { + "areaCode": 441427000000, + "name": "蕉岭县", + "parentCode": 441400000000, + "mergerName": "广东省-梅州市-蕉岭县" + }, + { + "areaCode": 441481000000, + "name": "兴宁市", + "parentCode": 441400000000, + "mergerName": "广东省-梅州市-兴宁市" + } + ], + "areaCode": 441400000000, + "name": "梅州市", + "parentCode": 440000000000, + "mergerName": "广东省-梅州市" + }, + { + "children": [ + { + "areaCode": 441501000000, + "name": "市辖区", + "parentCode": 441500000000, + "mergerName": "广东省-汕尾市-市辖区" + }, + { "areaCode": 441502000000, "name": "城区", "parentCode": 441500000000, "mergerName": "广东省-汕尾市-城区" }, + { + "areaCode": 441521000000, + "name": "海丰县", + "parentCode": 441500000000, + "mergerName": "广东省-汕尾市-海丰县" + }, + { + "areaCode": 441523000000, + "name": "陆河县", + "parentCode": 441500000000, + "mergerName": "广东省-汕尾市-陆河县" + }, + { + "areaCode": 441581000000, + "name": "陆丰市", + "parentCode": 441500000000, + "mergerName": "广东省-汕尾市-陆丰市" + } + ], + "areaCode": 441500000000, + "name": "汕尾市", + "parentCode": 440000000000, + "mergerName": "广东省-汕尾市" + }, + { + "children": [ + { + "areaCode": 441601000000, + "name": "市辖区", + "parentCode": 441600000000, + "mergerName": "广东省-河源市-市辖区" + }, + { + "areaCode": 441602000000, + "name": "源城区", + "parentCode": 441600000000, + "mergerName": "广东省-河源市-源城区" + }, + { + "areaCode": 441621000000, + "name": "紫金县", + "parentCode": 441600000000, + "mergerName": "广东省-河源市-紫金县" + }, + { + "areaCode": 441622000000, + "name": "龙川县", + "parentCode": 441600000000, + "mergerName": "广东省-河源市-龙川县" + }, + { + "areaCode": 441623000000, + "name": "连平县", + "parentCode": 441600000000, + "mergerName": "广东省-河源市-连平县" + }, + { + "areaCode": 441624000000, + "name": "和平县", + "parentCode": 441600000000, + "mergerName": "广东省-河源市-和平县" + }, + { + "areaCode": 441625000000, + "name": "东源县", + "parentCode": 441600000000, + "mergerName": "广东省-河源市-东源县" + } + ], + "areaCode": 441600000000, + "name": "河源市", + "parentCode": 440000000000, + "mergerName": "广东省-河源市" + }, + { + "children": [ + { + "areaCode": 441701000000, + "name": "市辖区", + "parentCode": 441700000000, + "mergerName": "广东省-阳江市-市辖区" + }, + { + "areaCode": 441702000000, + "name": "江城区", + "parentCode": 441700000000, + "mergerName": "广东省-阳江市-江城区" + }, + { + "areaCode": 441704000000, + "name": "阳东区", + "parentCode": 441700000000, + "mergerName": "广东省-阳江市-阳东区" + }, + { + "areaCode": 441721000000, + "name": "阳西县", + "parentCode": 441700000000, + "mergerName": "广东省-阳江市-阳西县" + }, + { + "areaCode": 441781000000, + "name": "阳春市", + "parentCode": 441700000000, + "mergerName": "广东省-阳江市-阳春市" + } + ], + "areaCode": 441700000000, + "name": "阳江市", + "parentCode": 440000000000, + "mergerName": "广东省-阳江市" + }, + { + "children": [ + { + "areaCode": 441801000000, + "name": "市辖区", + "parentCode": 441800000000, + "mergerName": "广东省-清远市-市辖区" + }, + { + "areaCode": 441802000000, + "name": "清城区", + "parentCode": 441800000000, + "mergerName": "广东省-清远市-清城区" + }, + { + "areaCode": 441803000000, + "name": "清新区", + "parentCode": 441800000000, + "mergerName": "广东省-清远市-清新区" + }, + { + "areaCode": 441821000000, + "name": "佛冈县", + "parentCode": 441800000000, + "mergerName": "广东省-清远市-佛冈县" + }, + { + "areaCode": 441823000000, + "name": "阳山县", + "parentCode": 441800000000, + "mergerName": "广东省-清远市-阳山县" + }, + { + "areaCode": 441825000000, + "name": "连山壮族瑶族自治县", + "parentCode": 441800000000, + "mergerName": "广东省-清远市-连山壮族瑶族自治县" + }, + { + "areaCode": 441826000000, + "name": "连南瑶族自治县", + "parentCode": 441800000000, + "mergerName": "广东省-清远市-连南瑶族自治县" + }, + { + "areaCode": 441881000000, + "name": "英德市", + "parentCode": 441800000000, + "mergerName": "广东省-清远市-英德市" + }, + { + "areaCode": 441882000000, + "name": "连州市", + "parentCode": 441800000000, + "mergerName": "广东省-清远市-连州市" + } + ], + "areaCode": 441800000000, + "name": "清远市", + "parentCode": 440000000000, + "mergerName": "广东省-清远市" + }, + { + "children": [ + { + "areaCode": 441900003000, + "name": "东城街道办事处", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-东城街道办事处" + }, + { + "areaCode": 441900004000, + "name": "南城街道办事处", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-南城街道办事处" + }, + { + "areaCode": 441900005000, + "name": "万江街道办事处", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-万江街道办事处" + }, + { + "areaCode": 441900006000, + "name": "莞城街道办事处", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-莞城街道办事处" + }, + { + "areaCode": 441900101000, + "name": "石碣镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-石碣镇" + }, + { + "areaCode": 441900102000, + "name": "石龙镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-石龙镇" + }, + { + "areaCode": 441900103000, + "name": "茶山镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-茶山镇" + }, + { + "areaCode": 441900104000, + "name": "石排镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-石排镇" + }, + { + "areaCode": 441900105000, + "name": "企石镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-企石镇" + }, + { + "areaCode": 441900106000, + "name": "横沥镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-横沥镇" + }, + { + "areaCode": 441900107000, + "name": "桥头镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-桥头镇" + }, + { + "areaCode": 441900108000, + "name": "谢岗镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-谢岗镇" + }, + { + "areaCode": 441900109000, + "name": "东坑镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-东坑镇" + }, + { + "areaCode": 441900110000, + "name": "常平镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-常平镇" + }, + { + "areaCode": 441900111000, + "name": "寮步镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-寮步镇" + }, + { + "areaCode": 441900112000, + "name": "樟木头镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-樟木头镇" + }, + { + "areaCode": 441900113000, + "name": "大朗镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-大朗镇" + }, + { + "areaCode": 441900114000, + "name": "黄江镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-黄江镇" + }, + { + "areaCode": 441900115000, + "name": "清溪镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-清溪镇" + }, + { + "areaCode": 441900116000, + "name": "塘厦镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-塘厦镇" + }, + { + "areaCode": 441900117000, + "name": "凤岗镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-凤岗镇" + }, + { + "areaCode": 441900118000, + "name": "大岭山镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-大岭山镇" + }, + { + "areaCode": 441900119000, + "name": "长安镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-长安镇" + }, + { + "areaCode": 441900121000, + "name": "虎门镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-虎门镇" + }, + { + "areaCode": 441900122000, + "name": "厚街镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-厚街镇" + }, + { + "areaCode": 441900123000, + "name": "沙田镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-沙田镇" + }, + { + "areaCode": 441900124000, + "name": "道滘镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-道滘镇" + }, + { + "areaCode": 441900125000, + "name": "洪梅镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-洪梅镇" + }, + { + "areaCode": 441900126000, + "name": "麻涌镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-麻涌镇" + }, + { + "areaCode": 441900127000, + "name": "望牛墩镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-望牛墩镇" + }, + { + "areaCode": 441900128000, + "name": "中堂镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-中堂镇" + }, + { + "areaCode": 441900129000, + "name": "高埗镇", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-高埗镇" + }, + { + "areaCode": 441900401000, + "name": "松山湖管委会", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-松山湖管委会" + }, + { + "areaCode": 441900402000, + "name": "东莞港", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-东莞港" + }, + { + "areaCode": 441900403000, + "name": "东莞生态园", + "parentCode": 441900000000, + "mergerName": "广东省-东莞市-东莞生态园" + } + ], + "areaCode": 441900000000, + "name": "东莞市", + "parentCode": 440000000000, + "mergerName": "广东省-东莞市" + }, + { + "children": [ + { + "areaCode": 442000001000, + "name": "石岐区街道办事处", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-石岐区街道办事处" + }, + { + "areaCode": 442000002000, + "name": "东区街道办事处", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-东区街道办事处" + }, + { + "areaCode": 442000003000, + "name": "火炬开发区街道办事处", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-火炬开发区街道办事处" + }, + { + "areaCode": 442000004000, + "name": "西区街道办事处", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-西区街道办事处" + }, + { + "areaCode": 442000005000, + "name": "南区街道办事处", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-南区街道办事处" + }, + { + "areaCode": 442000006000, + "name": "五桂山街道办事处", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-五桂山街道办事处" + }, + { + "areaCode": 442000100000, + "name": "小榄镇", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-小榄镇" + }, + { + "areaCode": 442000101000, + "name": "黄圃镇", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-黄圃镇" + }, + { + "areaCode": 442000102000, + "name": "民众镇", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-民众镇" + }, + { + "areaCode": 442000103000, + "name": "东凤镇", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-东凤镇" + }, + { + "areaCode": 442000104000, + "name": "东升镇", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-东升镇" + }, + { + "areaCode": 442000105000, + "name": "古镇镇", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-古镇镇" + }, + { + "areaCode": 442000106000, + "name": "沙溪镇", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-沙溪镇" + }, + { + "areaCode": 442000107000, + "name": "坦洲镇", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-坦洲镇" + }, + { + "areaCode": 442000108000, + "name": "港口镇", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-港口镇" + }, + { + "areaCode": 442000109000, + "name": "三角镇", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-三角镇" + }, + { + "areaCode": 442000110000, + "name": "横栏镇", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-横栏镇" + }, + { + "areaCode": 442000111000, + "name": "南头镇", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-南头镇" + }, + { + "areaCode": 442000112000, + "name": "阜沙镇", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-阜沙镇" + }, + { + "areaCode": 442000113000, + "name": "南朗镇", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-南朗镇" + }, + { + "areaCode": 442000114000, + "name": "三乡镇", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-三乡镇" + }, + { + "areaCode": 442000115000, + "name": "板芙镇", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-板芙镇" + }, + { + "areaCode": 442000116000, + "name": "大涌镇", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-大涌镇" + }, + { + "areaCode": 442000117000, + "name": "神湾镇", + "parentCode": 442000000000, + "mergerName": "广东省-中山市-神湾镇" + } + ], + "areaCode": 442000000000, + "name": "中山市", + "parentCode": 440000000000, + "mergerName": "广东省-中山市" + }, + { + "children": [ + { + "areaCode": 445101000000, + "name": "市辖区", + "parentCode": 445100000000, + "mergerName": "广东省-潮州市-市辖区" + }, + { + "areaCode": 445102000000, + "name": "湘桥区", + "parentCode": 445100000000, + "mergerName": "广东省-潮州市-湘桥区" + }, + { + "areaCode": 445103000000, + "name": "潮安区", + "parentCode": 445100000000, + "mergerName": "广东省-潮州市-潮安区" + }, + { + "areaCode": 445122000000, + "name": "饶平县", + "parentCode": 445100000000, + "mergerName": "广东省-潮州市-饶平县" + } + ], + "areaCode": 445100000000, + "name": "潮州市", + "parentCode": 440000000000, + "mergerName": "广东省-潮州市" + }, + { + "children": [ + { + "areaCode": 445201000000, + "name": "市辖区", + "parentCode": 445200000000, + "mergerName": "广东省-揭阳市-市辖区" + }, + { + "areaCode": 445202000000, + "name": "榕城区", + "parentCode": 445200000000, + "mergerName": "广东省-揭阳市-榕城区" + }, + { + "areaCode": 445203000000, + "name": "揭东区", + "parentCode": 445200000000, + "mergerName": "广东省-揭阳市-揭东区" + }, + { + "areaCode": 445222000000, + "name": "揭西县", + "parentCode": 445200000000, + "mergerName": "广东省-揭阳市-揭西县" + }, + { + "areaCode": 445224000000, + "name": "惠来县", + "parentCode": 445200000000, + "mergerName": "广东省-揭阳市-惠来县" + }, + { + "areaCode": 445281000000, + "name": "普宁市", + "parentCode": 445200000000, + "mergerName": "广东省-揭阳市-普宁市" + } + ], + "areaCode": 445200000000, + "name": "揭阳市", + "parentCode": 440000000000, + "mergerName": "广东省-揭阳市" + }, + { + "children": [ + { + "areaCode": 445301000000, + "name": "市辖区", + "parentCode": 445300000000, + "mergerName": "广东省-云浮市-市辖区" + }, + { + "areaCode": 445302000000, + "name": "云城区", + "parentCode": 445300000000, + "mergerName": "广东省-云浮市-云城区" + }, + { + "areaCode": 445303000000, + "name": "云安区", + "parentCode": 445300000000, + "mergerName": "广东省-云浮市-云安区" + }, + { + "areaCode": 445321000000, + "name": "新兴县", + "parentCode": 445300000000, + "mergerName": "广东省-云浮市-新兴县" + }, + { + "areaCode": 445322000000, + "name": "郁南县", + "parentCode": 445300000000, + "mergerName": "广东省-云浮市-郁南县" + }, + { + "areaCode": 445381000000, + "name": "罗定市", + "parentCode": 445300000000, + "mergerName": "广东省-云浮市-罗定市" + } + ], + "areaCode": 445300000000, + "name": "云浮市", + "parentCode": 440000000000, + "mergerName": "广东省-云浮市" + } + ], + "areaCode": 440000000000, + "name": "广东省", + "parentCode": 0, + "mergerName": "-广东省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 450101000000, + "name": "市辖区", + "parentCode": 450100000000, + "mergerName": "广西壮族自治区-南宁市-市辖区" + }, + { + "areaCode": 450102000000, + "name": "兴宁区", + "parentCode": 450100000000, + "mergerName": "广西壮族自治区-南宁市-兴宁区" + }, + { + "areaCode": 450103000000, + "name": "青秀区", + "parentCode": 450100000000, + "mergerName": "广西壮族自治区-南宁市-青秀区" + }, + { + "areaCode": 450105000000, + "name": "江南区", + "parentCode": 450100000000, + "mergerName": "广西壮族自治区-南宁市-江南区" + }, + { + "areaCode": 450107000000, + "name": "西乡塘区", + "parentCode": 450100000000, + "mergerName": "广西壮族自治区-南宁市-西乡塘区" + }, + { + "areaCode": 450108000000, + "name": "良庆区", + "parentCode": 450100000000, + "mergerName": "广西壮族自治区-南宁市-良庆区" + }, + { + "areaCode": 450109000000, + "name": "邕宁区", + "parentCode": 450100000000, + "mergerName": "广西壮族自治区-南宁市-邕宁区" + }, + { + "areaCode": 450110000000, + "name": "武鸣区", + "parentCode": 450100000000, + "mergerName": "广西壮族自治区-南宁市-武鸣区" + }, + { + "areaCode": 450123000000, + "name": "隆安县", + "parentCode": 450100000000, + "mergerName": "广西壮族自治区-南宁市-隆安县" + }, + { + "areaCode": 450124000000, + "name": "马山县", + "parentCode": 450100000000, + "mergerName": "广西壮族自治区-南宁市-马山县" + }, + { + "areaCode": 450125000000, + "name": "上林县", + "parentCode": 450100000000, + "mergerName": "广西壮族自治区-南宁市-上林县" + }, + { + "areaCode": 450126000000, + "name": "宾阳县", + "parentCode": 450100000000, + "mergerName": "广西壮族自治区-南宁市-宾阳县" + }, + { + "areaCode": 450127000000, + "name": "横县", + "parentCode": 450100000000, + "mergerName": "广西壮族自治区-南宁市-横县" + } + ], + "areaCode": 450100000000, + "name": "南宁市", + "parentCode": 450000000000, + "mergerName": "广西壮族自治区-南宁市" + }, + { + "children": [ + { + "areaCode": 450201000000, + "name": "市辖区", + "parentCode": 450200000000, + "mergerName": "广西壮族自治区-柳州市-市辖区" + }, + { + "areaCode": 450202000000, + "name": "城中区", + "parentCode": 450200000000, + "mergerName": "广西壮族自治区-柳州市-城中区" + }, + { + "areaCode": 450203000000, + "name": "鱼峰区", + "parentCode": 450200000000, + "mergerName": "广西壮族自治区-柳州市-鱼峰区" + }, + { + "areaCode": 450204000000, + "name": "柳南区", + "parentCode": 450200000000, + "mergerName": "广西壮族自治区-柳州市-柳南区" + }, + { + "areaCode": 450205000000, + "name": "柳北区", + "parentCode": 450200000000, + "mergerName": "广西壮族自治区-柳州市-柳北区" + }, + { + "areaCode": 450206000000, + "name": "柳江区", + "parentCode": 450200000000, + "mergerName": "广西壮族自治区-柳州市-柳江区" + }, + { + "areaCode": 450222000000, + "name": "柳城县", + "parentCode": 450200000000, + "mergerName": "广西壮族自治区-柳州市-柳城县" + }, + { + "areaCode": 450223000000, + "name": "鹿寨县", + "parentCode": 450200000000, + "mergerName": "广西壮族自治区-柳州市-鹿寨县" + }, + { + "areaCode": 450224000000, + "name": "融安县", + "parentCode": 450200000000, + "mergerName": "广西壮族自治区-柳州市-融安县" + }, + { + "areaCode": 450225000000, + "name": "融水苗族自治县", + "parentCode": 450200000000, + "mergerName": "广西壮族自治区-柳州市-融水苗族自治县" + }, + { + "areaCode": 450226000000, + "name": "三江侗族自治县", + "parentCode": 450200000000, + "mergerName": "广西壮族自治区-柳州市-三江侗族自治县" + } + ], + "areaCode": 450200000000, + "name": "柳州市", + "parentCode": 450000000000, + "mergerName": "广西壮族自治区-柳州市" + }, + { + "children": [ + { + "areaCode": 450301000000, + "name": "市辖区", + "parentCode": 450300000000, + "mergerName": "广西壮族自治区-桂林市-市辖区" + }, + { + "areaCode": 450302000000, + "name": "秀峰区", + "parentCode": 450300000000, + "mergerName": "广西壮族自治区-桂林市-秀峰区" + }, + { + "areaCode": 450303000000, + "name": "叠彩区", + "parentCode": 450300000000, + "mergerName": "广西壮族自治区-桂林市-叠彩区" + }, + { + "areaCode": 450304000000, + "name": "象山区", + "parentCode": 450300000000, + "mergerName": "广西壮族自治区-桂林市-象山区" + }, + { + "areaCode": 450305000000, + "name": "七星区", + "parentCode": 450300000000, + "mergerName": "广西壮族自治区-桂林市-七星区" + }, + { + "areaCode": 450311000000, + "name": "雁山区", + "parentCode": 450300000000, + "mergerName": "广西壮族自治区-桂林市-雁山区" + }, + { + "areaCode": 450312000000, + "name": "临桂区", + "parentCode": 450300000000, + "mergerName": "广西壮族自治区-桂林市-临桂区" + }, + { + "areaCode": 450321000000, + "name": "阳朔县", + "parentCode": 450300000000, + "mergerName": "广西壮族自治区-桂林市-阳朔县" + }, + { + "areaCode": 450323000000, + "name": "灵川县", + "parentCode": 450300000000, + "mergerName": "广西壮族自治区-桂林市-灵川县" + }, + { + "areaCode": 450324000000, + "name": "全州县", + "parentCode": 450300000000, + "mergerName": "广西壮族自治区-桂林市-全州县" + }, + { + "areaCode": 450325000000, + "name": "兴安县", + "parentCode": 450300000000, + "mergerName": "广西壮族自治区-桂林市-兴安县" + }, + { + "areaCode": 450326000000, + "name": "永福县", + "parentCode": 450300000000, + "mergerName": "广西壮族自治区-桂林市-永福县" + }, + { + "areaCode": 450327000000, + "name": "灌阳县", + "parentCode": 450300000000, + "mergerName": "广西壮族自治区-桂林市-灌阳县" + }, + { + "areaCode": 450328000000, + "name": "龙胜各族自治县", + "parentCode": 450300000000, + "mergerName": "广西壮族自治区-桂林市-龙胜各族自治县" + }, + { + "areaCode": 450329000000, + "name": "资源县", + "parentCode": 450300000000, + "mergerName": "广西壮族自治区-桂林市-资源县" + }, + { + "areaCode": 450330000000, + "name": "平乐县", + "parentCode": 450300000000, + "mergerName": "广西壮族自治区-桂林市-平乐县" + }, + { + "areaCode": 450332000000, + "name": "恭城瑶族自治县", + "parentCode": 450300000000, + "mergerName": "广西壮族自治区-桂林市-恭城瑶族自治县" + }, + { + "areaCode": 450381000000, + "name": "荔浦市", + "parentCode": 450300000000, + "mergerName": "广西壮族自治区-桂林市-荔浦市" + } + ], + "areaCode": 450300000000, + "name": "桂林市", + "parentCode": 450000000000, + "mergerName": "广西壮族自治区-桂林市" + }, + { + "children": [ + { + "areaCode": 450401000000, + "name": "市辖区", + "parentCode": 450400000000, + "mergerName": "广西壮族自治区-梧州市-市辖区" + }, + { + "areaCode": 450403000000, + "name": "万秀区", + "parentCode": 450400000000, + "mergerName": "广西壮族自治区-梧州市-万秀区" + }, + { + "areaCode": 450405000000, + "name": "长洲区", + "parentCode": 450400000000, + "mergerName": "广西壮族自治区-梧州市-长洲区" + }, + { + "areaCode": 450406000000, + "name": "龙圩区", + "parentCode": 450400000000, + "mergerName": "广西壮族自治区-梧州市-龙圩区" + }, + { + "areaCode": 450421000000, + "name": "苍梧县", + "parentCode": 450400000000, + "mergerName": "广西壮族自治区-梧州市-苍梧县" + }, + { + "areaCode": 450422000000, + "name": "藤县", + "parentCode": 450400000000, + "mergerName": "广西壮族自治区-梧州市-藤县" + }, + { + "areaCode": 450423000000, + "name": "蒙山县", + "parentCode": 450400000000, + "mergerName": "广西壮族自治区-梧州市-蒙山县" + }, + { + "areaCode": 450481000000, + "name": "岑溪市", + "parentCode": 450400000000, + "mergerName": "广西壮族自治区-梧州市-岑溪市" + } + ], + "areaCode": 450400000000, + "name": "梧州市", + "parentCode": 450000000000, + "mergerName": "广西壮族自治区-梧州市" + }, + { + "children": [ + { + "areaCode": 450501000000, + "name": "市辖区", + "parentCode": 450500000000, + "mergerName": "广西壮族自治区-北海市-市辖区" + }, + { + "areaCode": 450502000000, + "name": "海城区", + "parentCode": 450500000000, + "mergerName": "广西壮族自治区-北海市-海城区" + }, + { + "areaCode": 450503000000, + "name": "银海区", + "parentCode": 450500000000, + "mergerName": "广西壮族自治区-北海市-银海区" + }, + { + "areaCode": 450512000000, + "name": "铁山港区", + "parentCode": 450500000000, + "mergerName": "广西壮族自治区-北海市-铁山港区" + }, + { + "areaCode": 450521000000, + "name": "合浦县", + "parentCode": 450500000000, + "mergerName": "广西壮族自治区-北海市-合浦县" + } + ], + "areaCode": 450500000000, + "name": "北海市", + "parentCode": 450000000000, + "mergerName": "广西壮族自治区-北海市" + }, + { + "children": [ + { + "areaCode": 450601000000, + "name": "市辖区", + "parentCode": 450600000000, + "mergerName": "广西壮族自治区-防城港市-市辖区" + }, + { + "areaCode": 450602000000, + "name": "港口区", + "parentCode": 450600000000, + "mergerName": "广西壮族自治区-防城港市-港口区" + }, + { + "areaCode": 450603000000, + "name": "防城区", + "parentCode": 450600000000, + "mergerName": "广西壮族自治区-防城港市-防城区" + }, + { + "areaCode": 450621000000, + "name": "上思县", + "parentCode": 450600000000, + "mergerName": "广西壮族自治区-防城港市-上思县" + }, + { + "areaCode": 450681000000, + "name": "东兴市", + "parentCode": 450600000000, + "mergerName": "广西壮族自治区-防城港市-东兴市" + } + ], + "areaCode": 450600000000, + "name": "防城港市", + "parentCode": 450000000000, + "mergerName": "广西壮族自治区-防城港市" + }, + { + "children": [ + { + "areaCode": 450701000000, + "name": "市辖区", + "parentCode": 450700000000, + "mergerName": "广西壮族自治区-钦州市-市辖区" + }, + { + "areaCode": 450702000000, + "name": "钦南区", + "parentCode": 450700000000, + "mergerName": "广西壮族自治区-钦州市-钦南区" + }, + { + "areaCode": 450703000000, + "name": "钦北区", + "parentCode": 450700000000, + "mergerName": "广西壮族自治区-钦州市-钦北区" + }, + { + "areaCode": 450721000000, + "name": "灵山县", + "parentCode": 450700000000, + "mergerName": "广西壮族自治区-钦州市-灵山县" + }, + { + "areaCode": 450722000000, + "name": "浦北县", + "parentCode": 450700000000, + "mergerName": "广西壮族自治区-钦州市-浦北县" + } + ], + "areaCode": 450700000000, + "name": "钦州市", + "parentCode": 450000000000, + "mergerName": "广西壮族自治区-钦州市" + }, + { + "children": [ + { + "areaCode": 450801000000, + "name": "市辖区", + "parentCode": 450800000000, + "mergerName": "广西壮族自治区-贵港市-市辖区" + }, + { + "areaCode": 450802000000, + "name": "港北区", + "parentCode": 450800000000, + "mergerName": "广西壮族自治区-贵港市-港北区" + }, + { + "areaCode": 450803000000, + "name": "港南区", + "parentCode": 450800000000, + "mergerName": "广西壮族自治区-贵港市-港南区" + }, + { + "areaCode": 450804000000, + "name": "覃塘区", + "parentCode": 450800000000, + "mergerName": "广西壮族自治区-贵港市-覃塘区" + }, + { + "areaCode": 450821000000, + "name": "平南县", + "parentCode": 450800000000, + "mergerName": "广西壮族自治区-贵港市-平南县" + }, + { + "areaCode": 450881000000, + "name": "桂平市", + "parentCode": 450800000000, + "mergerName": "广西壮族自治区-贵港市-桂平市" + } + ], + "areaCode": 450800000000, + "name": "贵港市", + "parentCode": 450000000000, + "mergerName": "广西壮族自治区-贵港市" + }, + { + "children": [ + { + "areaCode": 450901000000, + "name": "市辖区", + "parentCode": 450900000000, + "mergerName": "广西壮族自治区-玉林市-市辖区" + }, + { + "areaCode": 450902000000, + "name": "玉州区", + "parentCode": 450900000000, + "mergerName": "广西壮族自治区-玉林市-玉州区" + }, + { + "areaCode": 450903000000, + "name": "福绵区", + "parentCode": 450900000000, + "mergerName": "广西壮族自治区-玉林市-福绵区" + }, + { + "areaCode": 450921000000, + "name": "容县", + "parentCode": 450900000000, + "mergerName": "广西壮族自治区-玉林市-容县" + }, + { + "areaCode": 450922000000, + "name": "陆川县", + "parentCode": 450900000000, + "mergerName": "广西壮族自治区-玉林市-陆川县" + }, + { + "areaCode": 450923000000, + "name": "博白县", + "parentCode": 450900000000, + "mergerName": "广西壮族自治区-玉林市-博白县" + }, + { + "areaCode": 450924000000, + "name": "兴业县", + "parentCode": 450900000000, + "mergerName": "广西壮族自治区-玉林市-兴业县" + }, + { + "areaCode": 450981000000, + "name": "北流市", + "parentCode": 450900000000, + "mergerName": "广西壮族自治区-玉林市-北流市" + } + ], + "areaCode": 450900000000, + "name": "玉林市", + "parentCode": 450000000000, + "mergerName": "广西壮族自治区-玉林市" + }, + { + "children": [ + { + "areaCode": 451001000000, + "name": "市辖区", + "parentCode": 451000000000, + "mergerName": "广西壮族自治区-百色市-市辖区" + }, + { + "areaCode": 451002000000, + "name": "右江区", + "parentCode": 451000000000, + "mergerName": "广西壮族自治区-百色市-右江区" + }, + { + "areaCode": 451021000000, + "name": "田阳县", + "parentCode": 451000000000, + "mergerName": "广西壮族自治区-百色市-田阳县" + }, + { + "areaCode": 451022000000, + "name": "田东县", + "parentCode": 451000000000, + "mergerName": "广西壮族自治区-百色市-田东县" + }, + { + "areaCode": 451023000000, + "name": "平果县", + "parentCode": 451000000000, + "mergerName": "广西壮族自治区-百色市-平果县" + }, + { + "areaCode": 451024000000, + "name": "德保县", + "parentCode": 451000000000, + "mergerName": "广西壮族自治区-百色市-德保县" + }, + { + "areaCode": 451026000000, + "name": "那坡县", + "parentCode": 451000000000, + "mergerName": "广西壮族自治区-百色市-那坡县" + }, + { + "areaCode": 451027000000, + "name": "凌云县", + "parentCode": 451000000000, + "mergerName": "广西壮族自治区-百色市-凌云县" + }, + { + "areaCode": 451028000000, + "name": "乐业县", + "parentCode": 451000000000, + "mergerName": "广西壮族自治区-百色市-乐业县" + }, + { + "areaCode": 451029000000, + "name": "田林县", + "parentCode": 451000000000, + "mergerName": "广西壮族自治区-百色市-田林县" + }, + { + "areaCode": 451030000000, + "name": "西林县", + "parentCode": 451000000000, + "mergerName": "广西壮族自治区-百色市-西林县" + }, + { + "areaCode": 451031000000, + "name": "隆林各族自治县", + "parentCode": 451000000000, + "mergerName": "广西壮族自治区-百色市-隆林各族自治县" + }, + { + "areaCode": 451081000000, + "name": "靖西市", + "parentCode": 451000000000, + "mergerName": "广西壮族自治区-百色市-靖西市" + } + ], + "areaCode": 451000000000, + "name": "百色市", + "parentCode": 450000000000, + "mergerName": "广西壮族自治区-百色市" + }, + { + "children": [ + { + "areaCode": 451101000000, + "name": "市辖区", + "parentCode": 451100000000, + "mergerName": "广西壮族自治区-贺州市-市辖区" + }, + { + "areaCode": 451102000000, + "name": "八步区", + "parentCode": 451100000000, + "mergerName": "广西壮族自治区-贺州市-八步区" + }, + { + "areaCode": 451103000000, + "name": "平桂区", + "parentCode": 451100000000, + "mergerName": "广西壮族自治区-贺州市-平桂区" + }, + { + "areaCode": 451121000000, + "name": "昭平县", + "parentCode": 451100000000, + "mergerName": "广西壮族自治区-贺州市-昭平县" + }, + { + "areaCode": 451122000000, + "name": "钟山县", + "parentCode": 451100000000, + "mergerName": "广西壮族自治区-贺州市-钟山县" + }, + { + "areaCode": 451123000000, + "name": "富川瑶族自治县", + "parentCode": 451100000000, + "mergerName": "广西壮族自治区-贺州市-富川瑶族自治县" + } + ], + "areaCode": 451100000000, + "name": "贺州市", + "parentCode": 450000000000, + "mergerName": "广西壮族自治区-贺州市" + }, + { + "children": [ + { + "areaCode": 451201000000, + "name": "市辖区", + "parentCode": 451200000000, + "mergerName": "广西壮族自治区-河池市-市辖区" + }, + { + "areaCode": 451202000000, + "name": "金城江区", + "parentCode": 451200000000, + "mergerName": "广西壮族自治区-河池市-金城江区" + }, + { + "areaCode": 451203000000, + "name": "宜州区", + "parentCode": 451200000000, + "mergerName": "广西壮族自治区-河池市-宜州区" + }, + { + "areaCode": 451221000000, + "name": "南丹县", + "parentCode": 451200000000, + "mergerName": "广西壮族自治区-河池市-南丹县" + }, + { + "areaCode": 451222000000, + "name": "天峨县", + "parentCode": 451200000000, + "mergerName": "广西壮族自治区-河池市-天峨县" + }, + { + "areaCode": 451223000000, + "name": "凤山县", + "parentCode": 451200000000, + "mergerName": "广西壮族自治区-河池市-凤山县" + }, + { + "areaCode": 451224000000, + "name": "东兰县", + "parentCode": 451200000000, + "mergerName": "广西壮族自治区-河池市-东兰县" + }, + { + "areaCode": 451225000000, + "name": "罗城仫佬族自治县", + "parentCode": 451200000000, + "mergerName": "广西壮族自治区-河池市-罗城仫佬族自治县" + }, + { + "areaCode": 451226000000, + "name": "环江毛南族自治县", + "parentCode": 451200000000, + "mergerName": "广西壮族自治区-河池市-环江毛南族自治县" + }, + { + "areaCode": 451227000000, + "name": "巴马瑶族自治县", + "parentCode": 451200000000, + "mergerName": "广西壮族自治区-河池市-巴马瑶族自治县" + }, + { + "areaCode": 451228000000, + "name": "都安瑶族自治县", + "parentCode": 451200000000, + "mergerName": "广西壮族自治区-河池市-都安瑶族自治县" + }, + { + "areaCode": 451229000000, + "name": "大化瑶族自治县", + "parentCode": 451200000000, + "mergerName": "广西壮族自治区-河池市-大化瑶族自治县" + } + ], + "areaCode": 451200000000, + "name": "河池市", + "parentCode": 450000000000, + "mergerName": "广西壮族自治区-河池市" + }, + { + "children": [ + { + "areaCode": 451301000000, + "name": "市辖区", + "parentCode": 451300000000, + "mergerName": "广西壮族自治区-来宾市-市辖区" + }, + { + "areaCode": 451302000000, + "name": "兴宾区", + "parentCode": 451300000000, + "mergerName": "广西壮族自治区-来宾市-兴宾区" + }, + { + "areaCode": 451321000000, + "name": "忻城县", + "parentCode": 451300000000, + "mergerName": "广西壮族自治区-来宾市-忻城县" + }, + { + "areaCode": 451322000000, + "name": "象州县", + "parentCode": 451300000000, + "mergerName": "广西壮族自治区-来宾市-象州县" + }, + { + "areaCode": 451323000000, + "name": "武宣县", + "parentCode": 451300000000, + "mergerName": "广西壮族自治区-来宾市-武宣县" + }, + { + "areaCode": 451324000000, + "name": "金秀瑶族自治县", + "parentCode": 451300000000, + "mergerName": "广西壮族自治区-来宾市-金秀瑶族自治县" + }, + { + "areaCode": 451381000000, + "name": "合山市", + "parentCode": 451300000000, + "mergerName": "广西壮族自治区-来宾市-合山市" + } + ], + "areaCode": 451300000000, + "name": "来宾市", + "parentCode": 450000000000, + "mergerName": "广西壮族自治区-来宾市" + }, + { + "children": [ + { + "areaCode": 451401000000, + "name": "市辖区", + "parentCode": 451400000000, + "mergerName": "广西壮族自治区-崇左市-市辖区" + }, + { + "areaCode": 451402000000, + "name": "江州区", + "parentCode": 451400000000, + "mergerName": "广西壮族自治区-崇左市-江州区" + }, + { + "areaCode": 451421000000, + "name": "扶绥县", + "parentCode": 451400000000, + "mergerName": "广西壮族自治区-崇左市-扶绥县" + }, + { + "areaCode": 451422000000, + "name": "宁明县", + "parentCode": 451400000000, + "mergerName": "广西壮族自治区-崇左市-宁明县" + }, + { + "areaCode": 451423000000, + "name": "龙州县", + "parentCode": 451400000000, + "mergerName": "广西壮族自治区-崇左市-龙州县" + }, + { + "areaCode": 451424000000, + "name": "大新县", + "parentCode": 451400000000, + "mergerName": "广西壮族自治区-崇左市-大新县" + }, + { + "areaCode": 451425000000, + "name": "天等县", + "parentCode": 451400000000, + "mergerName": "广西壮族自治区-崇左市-天等县" + }, + { + "areaCode": 451481000000, + "name": "凭祥市", + "parentCode": 451400000000, + "mergerName": "广西壮族自治区-崇左市-凭祥市" + } + ], + "areaCode": 451400000000, + "name": "崇左市", + "parentCode": 450000000000, + "mergerName": "广西壮族自治区-崇左市" + } + ], + "areaCode": 450000000000, + "name": "广西壮族自治区", + "parentCode": 0, + "mergerName": "-广西壮族自治区" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 460101000000, + "name": "市辖区", + "parentCode": 460100000000, + "mergerName": "海南省-海口市-市辖区" + }, + { + "areaCode": 460105000000, + "name": "秀英区", + "parentCode": 460100000000, + "mergerName": "海南省-海口市-秀英区" + }, + { + "areaCode": 460106000000, + "name": "龙华区", + "parentCode": 460100000000, + "mergerName": "海南省-海口市-龙华区" + }, + { + "areaCode": 460107000000, + "name": "琼山区", + "parentCode": 460100000000, + "mergerName": "海南省-海口市-琼山区" + }, + { + "areaCode": 460108000000, + "name": "美兰区", + "parentCode": 460100000000, + "mergerName": "海南省-海口市-美兰区" + } + ], + "areaCode": 460100000000, + "name": "海口市", + "parentCode": 460000000000, + "mergerName": "海南省-海口市" + }, + { + "children": [ + { + "areaCode": 460201000000, + "name": "市辖区", + "parentCode": 460200000000, + "mergerName": "海南省-三亚市-市辖区" + }, + { + "areaCode": 460202000000, + "name": "海棠区", + "parentCode": 460200000000, + "mergerName": "海南省-三亚市-海棠区" + }, + { + "areaCode": 460203000000, + "name": "吉阳区", + "parentCode": 460200000000, + "mergerName": "海南省-三亚市-吉阳区" + }, + { + "areaCode": 460204000000, + "name": "天涯区", + "parentCode": 460200000000, + "mergerName": "海南省-三亚市-天涯区" + }, + { + "areaCode": 460205000000, + "name": "崖州区", + "parentCode": 460200000000, + "mergerName": "海南省-三亚市-崖州区" + } + ], + "areaCode": 460200000000, + "name": "三亚市", + "parentCode": 460000000000, + "mergerName": "海南省-三亚市" + }, + { + "children": [ + { + "areaCode": 460321000000, + "name": "西沙群岛", + "parentCode": 460300000000, + "mergerName": "海南省-三沙市-西沙群岛" + }, + { + "areaCode": 460322000000, + "name": "南沙群岛", + "parentCode": 460300000000, + "mergerName": "海南省-三沙市-南沙群岛" + }, + { + "areaCode": 460323000000, + "name": "中沙群岛的岛礁及其海域", + "parentCode": 460300000000, + "mergerName": "海南省-三沙市-中沙群岛的岛礁及其海域" + } + ], + "areaCode": 460300000000, + "name": "三沙市", + "parentCode": 460000000000, + "mergerName": "海南省-三沙市" + }, + { + "children": [ + { + "areaCode": 460400100000, + "name": "那大镇", + "parentCode": 460400000000, + "mergerName": "海南省-儋州市-那大镇" + }, + { + "areaCode": 460400101000, + "name": "和庆镇", + "parentCode": 460400000000, + "mergerName": "海南省-儋州市-和庆镇" + }, + { + "areaCode": 460400102000, + "name": "南丰镇", + "parentCode": 460400000000, + "mergerName": "海南省-儋州市-南丰镇" + }, + { + "areaCode": 460400103000, + "name": "大成镇", + "parentCode": 460400000000, + "mergerName": "海南省-儋州市-大成镇" + }, + { + "areaCode": 460400104000, + "name": "雅星镇", + "parentCode": 460400000000, + "mergerName": "海南省-儋州市-雅星镇" + }, + { + "areaCode": 460400105000, + "name": "兰洋镇", + "parentCode": 460400000000, + "mergerName": "海南省-儋州市-兰洋镇" + }, + { + "areaCode": 460400106000, + "name": "光村镇", + "parentCode": 460400000000, + "mergerName": "海南省-儋州市-光村镇" + }, + { + "areaCode": 460400107000, + "name": "木棠镇", + "parentCode": 460400000000, + "mergerName": "海南省-儋州市-木棠镇" + }, + { + "areaCode": 460400108000, + "name": "海头镇", + "parentCode": 460400000000, + "mergerName": "海南省-儋州市-海头镇" + }, + { + "areaCode": 460400109000, + "name": "峨蔓镇", + "parentCode": 460400000000, + "mergerName": "海南省-儋州市-峨蔓镇" + }, + { + "areaCode": 460400111000, + "name": "王五镇", + "parentCode": 460400000000, + "mergerName": "海南省-儋州市-王五镇" + }, + { + "areaCode": 460400112000, + "name": "白马井镇", + "parentCode": 460400000000, + "mergerName": "海南省-儋州市-白马井镇" + }, + { + "areaCode": 460400113000, + "name": "中和镇", + "parentCode": 460400000000, + "mergerName": "海南省-儋州市-中和镇" + }, + { + "areaCode": 460400114000, + "name": "排浦镇", + "parentCode": 460400000000, + "mergerName": "海南省-儋州市-排浦镇" + }, + { + "areaCode": 460400115000, + "name": "东成镇", + "parentCode": 460400000000, + "mergerName": "海南省-儋州市-东成镇" + }, + { + "areaCode": 460400116000, + "name": "新州镇", + "parentCode": 460400000000, + "mergerName": "海南省-儋州市-新州镇" + }, + { + "areaCode": 460400499000, + "name": "洋浦经济开发区", + "parentCode": 460400000000, + "mergerName": "海南省-儋州市-洋浦经济开发区" + }, + { + "areaCode": 460400500000, + "name": "华南热作学院", + "parentCode": 460400000000, + "mergerName": "海南省-儋州市-华南热作学院" + } + ], + "areaCode": 460400000000, + "name": "儋州市", + "parentCode": 460000000000, + "mergerName": "海南省-儋州市" + }, + { + "children": [ + { + "areaCode": 469001000000, + "name": "五指山市", + "parentCode": 469000000000, + "mergerName": "海南省-直辖县-五指山市" + }, + { + "areaCode": 469002000000, + "name": "琼海市", + "parentCode": 469000000000, + "mergerName": "海南省-直辖县-琼海市" + }, + { + "areaCode": 469005000000, + "name": "文昌市", + "parentCode": 469000000000, + "mergerName": "海南省-直辖县-文昌市" + }, + { + "areaCode": 469006000000, + "name": "万宁市", + "parentCode": 469000000000, + "mergerName": "海南省-直辖县-万宁市" + }, + { + "areaCode": 469007000000, + "name": "东方市", + "parentCode": 469000000000, + "mergerName": "海南省-直辖县-东方市" + }, + { + "areaCode": 469021000000, + "name": "定安县", + "parentCode": 469000000000, + "mergerName": "海南省-直辖县-定安县" + }, + { + "areaCode": 469022000000, + "name": "屯昌县", + "parentCode": 469000000000, + "mergerName": "海南省-直辖县-屯昌县" + }, + { + "areaCode": 469023000000, + "name": "澄迈县", + "parentCode": 469000000000, + "mergerName": "海南省-直辖县-澄迈县" + }, + { + "areaCode": 469024000000, + "name": "临高县", + "parentCode": 469000000000, + "mergerName": "海南省-直辖县-临高县" + }, + { + "areaCode": 469025000000, + "name": "白沙黎族自治县", + "parentCode": 469000000000, + "mergerName": "海南省-直辖县-白沙黎族自治县" + }, + { + "areaCode": 469026000000, + "name": "昌江黎族自治县", + "parentCode": 469000000000, + "mergerName": "海南省-直辖县-昌江黎族自治县" + }, + { + "areaCode": 469027000000, + "name": "乐东黎族自治县", + "parentCode": 469000000000, + "mergerName": "海南省-直辖县-乐东黎族自治县" + }, + { + "areaCode": 469028000000, + "name": "陵水黎族自治县", + "parentCode": 469000000000, + "mergerName": "海南省-直辖县-陵水黎族自治县" + }, + { + "areaCode": 469029000000, + "name": "保亭黎族苗族自治县", + "parentCode": 469000000000, + "mergerName": "海南省-直辖县-保亭黎族苗族自治县" + }, + { + "areaCode": 469030000000, + "name": "琼中黎族苗族自治县", + "parentCode": 469000000000, + "mergerName": "海南省-直辖县-琼中黎族苗族自治县" + } + ], + "areaCode": 469000000000, + "name": "直辖县", + "parentCode": 460000000000, + "mergerName": "海南省-直辖县" + } + ], + "areaCode": 460000000000, + "name": "海南省", + "parentCode": 0, + "mergerName": "-海南省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 500101000000, + "name": "万州区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-万州区" + }, + { + "areaCode": 500102000000, + "name": "涪陵区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-涪陵区" + }, + { + "areaCode": 500103000000, + "name": "渝中区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-渝中区" + }, + { + "areaCode": 500104000000, + "name": "大渡口区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-大渡口区" + }, + { + "areaCode": 500105000000, + "name": "江北区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-江北区" + }, + { + "areaCode": 500106000000, + "name": "沙坪坝区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-沙坪坝区" + }, + { + "areaCode": 500107000000, + "name": "九龙坡区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-九龙坡区" + }, + { + "areaCode": 500108000000, + "name": "南岸区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-南岸区" + }, + { + "areaCode": 500109000000, + "name": "北碚区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-北碚区" + }, + { + "areaCode": 500110000000, + "name": "綦江区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-綦江区" + }, + { + "areaCode": 500111000000, + "name": "大足区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-大足区" + }, + { + "areaCode": 500112000000, + "name": "渝北区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-渝北区" + }, + { + "areaCode": 500113000000, + "name": "巴南区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-巴南区" + }, + { + "areaCode": 500114000000, + "name": "黔江区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-黔江区" + }, + { + "areaCode": 500115000000, + "name": "长寿区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-长寿区" + }, + { + "areaCode": 500116000000, + "name": "江津区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-江津区" + }, + { + "areaCode": 500117000000, + "name": "合川区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-合川区" + }, + { + "areaCode": 500118000000, + "name": "永川区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-永川区" + }, + { + "areaCode": 500119000000, + "name": "南川区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-南川区" + }, + { + "areaCode": 500120000000, + "name": "璧山区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-璧山区" + }, + { + "areaCode": 500151000000, + "name": "铜梁区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-铜梁区" + }, + { + "areaCode": 500152000000, + "name": "潼南区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-潼南区" + }, + { + "areaCode": 500153000000, + "name": "荣昌区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-荣昌区" + }, + { + "areaCode": 500154000000, + "name": "开州区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-开州区" + }, + { + "areaCode": 500155000000, + "name": "梁平区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-梁平区" + }, + { + "areaCode": 500156000000, + "name": "武隆区", + "parentCode": 500100000000, + "mergerName": "重庆市-直辖区-武隆区" + } + ], + "areaCode": 500100000000, + "name": "直辖区", + "parentCode": 500000000000, + "mergerName": "重庆市-直辖区" + }, + { + "children": [ + { + "areaCode": 500229000000, + "name": "城口县", + "parentCode": 500200000000, + "mergerName": "重庆市-直辖县-城口县" + }, + { + "areaCode": 500230000000, + "name": "丰都县", + "parentCode": 500200000000, + "mergerName": "重庆市-直辖县-丰都县" + }, + { + "areaCode": 500231000000, + "name": "垫江县", + "parentCode": 500200000000, + "mergerName": "重庆市-直辖县-垫江县" + }, + { "areaCode": 500233000000, "name": "忠县", "parentCode": 500200000000, "mergerName": "重庆市-直辖县-忠县" }, + { + "areaCode": 500235000000, + "name": "云阳县", + "parentCode": 500200000000, + "mergerName": "重庆市-直辖县-云阳县" + }, + { + "areaCode": 500236000000, + "name": "奉节县", + "parentCode": 500200000000, + "mergerName": "重庆市-直辖县-奉节县" + }, + { + "areaCode": 500237000000, + "name": "巫山县", + "parentCode": 500200000000, + "mergerName": "重庆市-直辖县-巫山县" + }, + { + "areaCode": 500238000000, + "name": "巫溪县", + "parentCode": 500200000000, + "mergerName": "重庆市-直辖县-巫溪县" + }, + { + "areaCode": 500240000000, + "name": "石柱土家族自治县", + "parentCode": 500200000000, + "mergerName": "重庆市-直辖县-石柱土家族自治县" + }, + { + "areaCode": 500241000000, + "name": "秀山土家族苗族自治县", + "parentCode": 500200000000, + "mergerName": "重庆市-直辖县-秀山土家族苗族自治县" + }, + { + "areaCode": 500242000000, + "name": "酉阳土家族苗族自治县", + "parentCode": 500200000000, + "mergerName": "重庆市-直辖县-酉阳土家族苗族自治县" + }, + { + "areaCode": 500243000000, + "name": "彭水苗族土家族自治县", + "parentCode": 500200000000, + "mergerName": "重庆市-直辖县-彭水苗族土家族自治县" + } + ], + "areaCode": 500200000000, + "name": "直辖县", + "parentCode": 500000000000, + "mergerName": "重庆市-直辖县" + } + ], + "areaCode": 500000000000, + "name": "重庆市", + "parentCode": 0, + "mergerName": "-重庆市" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 510101000000, + "name": "市辖区", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-市辖区" + }, + { + "areaCode": 510104000000, + "name": "锦江区", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-锦江区" + }, + { + "areaCode": 510105000000, + "name": "青羊区", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-青羊区" + }, + { + "areaCode": 510106000000, + "name": "金牛区", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-金牛区" + }, + { + "areaCode": 510107000000, + "name": "武侯区", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-武侯区" + }, + { + "areaCode": 510108000000, + "name": "成华区", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-成华区" + }, + { + "areaCode": 510112000000, + "name": "龙泉驿区", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-龙泉驿区" + }, + { + "areaCode": 510113000000, + "name": "青白江区", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-青白江区" + }, + { + "areaCode": 510114000000, + "name": "新都区", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-新都区" + }, + { + "areaCode": 510115000000, + "name": "温江区", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-温江区" + }, + { + "areaCode": 510116000000, + "name": "双流区", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-双流区" + }, + { + "areaCode": 510117000000, + "name": "郫都区", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-郫都区" + }, + { + "areaCode": 510121000000, + "name": "金堂县", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-金堂县" + }, + { + "areaCode": 510129000000, + "name": "大邑县", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-大邑县" + }, + { + "areaCode": 510131000000, + "name": "蒲江县", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-蒲江县" + }, + { + "areaCode": 510132000000, + "name": "新津县", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-新津县" + }, + { + "areaCode": 510181000000, + "name": "都江堰市", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-都江堰市" + }, + { + "areaCode": 510182000000, + "name": "彭州市", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-彭州市" + }, + { + "areaCode": 510183000000, + "name": "邛崃市", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-邛崃市" + }, + { + "areaCode": 510184000000, + "name": "崇州市", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-崇州市" + }, + { + "areaCode": 510185000000, + "name": "简阳市", + "parentCode": 510100000000, + "mergerName": "四川省-成都市-简阳市" + } + ], + "areaCode": 510100000000, + "name": "成都市", + "parentCode": 510000000000, + "mergerName": "四川省-成都市" + }, + { + "children": [ + { + "areaCode": 510301000000, + "name": "市辖区", + "parentCode": 510300000000, + "mergerName": "四川省-自贡市-市辖区" + }, + { + "areaCode": 510302000000, + "name": "自流井区", + "parentCode": 510300000000, + "mergerName": "四川省-自贡市-自流井区" + }, + { + "areaCode": 510303000000, + "name": "贡井区", + "parentCode": 510300000000, + "mergerName": "四川省-自贡市-贡井区" + }, + { + "areaCode": 510304000000, + "name": "大安区", + "parentCode": 510300000000, + "mergerName": "四川省-自贡市-大安区" + }, + { + "areaCode": 510311000000, + "name": "沿滩区", + "parentCode": 510300000000, + "mergerName": "四川省-自贡市-沿滩区" + }, + { "areaCode": 510321000000, "name": "荣县", "parentCode": 510300000000, "mergerName": "四川省-自贡市-荣县" }, + { + "areaCode": 510322000000, + "name": "富顺县", + "parentCode": 510300000000, + "mergerName": "四川省-自贡市-富顺县" + } + ], + "areaCode": 510300000000, + "name": "自贡市", + "parentCode": 510000000000, + "mergerName": "四川省-自贡市" + }, + { + "children": [ + { + "areaCode": 510401000000, + "name": "市辖区", + "parentCode": 510400000000, + "mergerName": "四川省-攀枝花市-市辖区" + }, + { + "areaCode": 510402000000, + "name": "东区", + "parentCode": 510400000000, + "mergerName": "四川省-攀枝花市-东区" + }, + { + "areaCode": 510403000000, + "name": "西区", + "parentCode": 510400000000, + "mergerName": "四川省-攀枝花市-西区" + }, + { + "areaCode": 510411000000, + "name": "仁和区", + "parentCode": 510400000000, + "mergerName": "四川省-攀枝花市-仁和区" + }, + { + "areaCode": 510421000000, + "name": "米易县", + "parentCode": 510400000000, + "mergerName": "四川省-攀枝花市-米易县" + }, + { + "areaCode": 510422000000, + "name": "盐边县", + "parentCode": 510400000000, + "mergerName": "四川省-攀枝花市-盐边县" + } + ], + "areaCode": 510400000000, + "name": "攀枝花市", + "parentCode": 510000000000, + "mergerName": "四川省-攀枝花市" + }, + { + "children": [ + { + "areaCode": 510501000000, + "name": "市辖区", + "parentCode": 510500000000, + "mergerName": "四川省-泸州市-市辖区" + }, + { + "areaCode": 510502000000, + "name": "江阳区", + "parentCode": 510500000000, + "mergerName": "四川省-泸州市-江阳区" + }, + { + "areaCode": 510503000000, + "name": "纳溪区", + "parentCode": 510500000000, + "mergerName": "四川省-泸州市-纳溪区" + }, + { + "areaCode": 510504000000, + "name": "龙马潭区", + "parentCode": 510500000000, + "mergerName": "四川省-泸州市-龙马潭区" + }, + { "areaCode": 510521000000, "name": "泸县", "parentCode": 510500000000, "mergerName": "四川省-泸州市-泸县" }, + { + "areaCode": 510522000000, + "name": "合江县", + "parentCode": 510500000000, + "mergerName": "四川省-泸州市-合江县" + }, + { + "areaCode": 510524000000, + "name": "叙永县", + "parentCode": 510500000000, + "mergerName": "四川省-泸州市-叙永县" + }, + { + "areaCode": 510525000000, + "name": "古蔺县", + "parentCode": 510500000000, + "mergerName": "四川省-泸州市-古蔺县" + } + ], + "areaCode": 510500000000, + "name": "泸州市", + "parentCode": 510000000000, + "mergerName": "四川省-泸州市" + }, + { + "children": [ + { + "areaCode": 510601000000, + "name": "市辖区", + "parentCode": 510600000000, + "mergerName": "四川省-德阳市-市辖区" + }, + { + "areaCode": 510603000000, + "name": "旌阳区", + "parentCode": 510600000000, + "mergerName": "四川省-德阳市-旌阳区" + }, + { + "areaCode": 510604000000, + "name": "罗江区", + "parentCode": 510600000000, + "mergerName": "四川省-德阳市-罗江区" + }, + { + "areaCode": 510623000000, + "name": "中江县", + "parentCode": 510600000000, + "mergerName": "四川省-德阳市-中江县" + }, + { + "areaCode": 510681000000, + "name": "广汉市", + "parentCode": 510600000000, + "mergerName": "四川省-德阳市-广汉市" + }, + { + "areaCode": 510682000000, + "name": "什邡市", + "parentCode": 510600000000, + "mergerName": "四川省-德阳市-什邡市" + }, + { + "areaCode": 510683000000, + "name": "绵竹市", + "parentCode": 510600000000, + "mergerName": "四川省-德阳市-绵竹市" + } + ], + "areaCode": 510600000000, + "name": "德阳市", + "parentCode": 510000000000, + "mergerName": "四川省-德阳市" + }, + { + "children": [ + { + "areaCode": 510701000000, + "name": "市辖区", + "parentCode": 510700000000, + "mergerName": "四川省-绵阳市-市辖区" + }, + { + "areaCode": 510703000000, + "name": "涪城区", + "parentCode": 510700000000, + "mergerName": "四川省-绵阳市-涪城区" + }, + { + "areaCode": 510704000000, + "name": "游仙区", + "parentCode": 510700000000, + "mergerName": "四川省-绵阳市-游仙区" + }, + { + "areaCode": 510705000000, + "name": "安州区", + "parentCode": 510700000000, + "mergerName": "四川省-绵阳市-安州区" + }, + { + "areaCode": 510722000000, + "name": "三台县", + "parentCode": 510700000000, + "mergerName": "四川省-绵阳市-三台县" + }, + { + "areaCode": 510723000000, + "name": "盐亭县", + "parentCode": 510700000000, + "mergerName": "四川省-绵阳市-盐亭县" + }, + { + "areaCode": 510725000000, + "name": "梓潼县", + "parentCode": 510700000000, + "mergerName": "四川省-绵阳市-梓潼县" + }, + { + "areaCode": 510726000000, + "name": "北川羌族自治县", + "parentCode": 510700000000, + "mergerName": "四川省-绵阳市-北川羌族自治县" + }, + { + "areaCode": 510727000000, + "name": "平武县", + "parentCode": 510700000000, + "mergerName": "四川省-绵阳市-平武县" + }, + { + "areaCode": 510781000000, + "name": "江油市", + "parentCode": 510700000000, + "mergerName": "四川省-绵阳市-江油市" + } + ], + "areaCode": 510700000000, + "name": "绵阳市", + "parentCode": 510000000000, + "mergerName": "四川省-绵阳市" + }, + { + "children": [ + { + "areaCode": 510801000000, + "name": "市辖区", + "parentCode": 510800000000, + "mergerName": "四川省-广元市-市辖区" + }, + { + "areaCode": 510802000000, + "name": "利州区", + "parentCode": 510800000000, + "mergerName": "四川省-广元市-利州区" + }, + { + "areaCode": 510811000000, + "name": "昭化区", + "parentCode": 510800000000, + "mergerName": "四川省-广元市-昭化区" + }, + { + "areaCode": 510812000000, + "name": "朝天区", + "parentCode": 510800000000, + "mergerName": "四川省-广元市-朝天区" + }, + { + "areaCode": 510821000000, + "name": "旺苍县", + "parentCode": 510800000000, + "mergerName": "四川省-广元市-旺苍县" + }, + { + "areaCode": 510822000000, + "name": "青川县", + "parentCode": 510800000000, + "mergerName": "四川省-广元市-青川县" + }, + { + "areaCode": 510823000000, + "name": "剑阁县", + "parentCode": 510800000000, + "mergerName": "四川省-广元市-剑阁县" + }, + { + "areaCode": 510824000000, + "name": "苍溪县", + "parentCode": 510800000000, + "mergerName": "四川省-广元市-苍溪县" + } + ], + "areaCode": 510800000000, + "name": "广元市", + "parentCode": 510000000000, + "mergerName": "四川省-广元市" + }, + { + "children": [ + { + "areaCode": 510901000000, + "name": "市辖区", + "parentCode": 510900000000, + "mergerName": "四川省-遂宁市-市辖区" + }, + { + "areaCode": 510903000000, + "name": "船山区", + "parentCode": 510900000000, + "mergerName": "四川省-遂宁市-船山区" + }, + { + "areaCode": 510904000000, + "name": "安居区", + "parentCode": 510900000000, + "mergerName": "四川省-遂宁市-安居区" + }, + { + "areaCode": 510921000000, + "name": "蓬溪县", + "parentCode": 510900000000, + "mergerName": "四川省-遂宁市-蓬溪县" + }, + { + "areaCode": 510922000000, + "name": "射洪县", + "parentCode": 510900000000, + "mergerName": "四川省-遂宁市-射洪县" + }, + { + "areaCode": 510923000000, + "name": "大英县", + "parentCode": 510900000000, + "mergerName": "四川省-遂宁市-大英县" + } + ], + "areaCode": 510900000000, + "name": "遂宁市", + "parentCode": 510000000000, + "mergerName": "四川省-遂宁市" + }, + { + "children": [ + { + "areaCode": 511001000000, + "name": "市辖区", + "parentCode": 511000000000, + "mergerName": "四川省-内江市-市辖区" + }, + { + "areaCode": 511002000000, + "name": "市中区", + "parentCode": 511000000000, + "mergerName": "四川省-内江市-市中区" + }, + { + "areaCode": 511011000000, + "name": "东兴区", + "parentCode": 511000000000, + "mergerName": "四川省-内江市-东兴区" + }, + { + "areaCode": 511024000000, + "name": "威远县", + "parentCode": 511000000000, + "mergerName": "四川省-内江市-威远县" + }, + { + "areaCode": 511025000000, + "name": "资中县", + "parentCode": 511000000000, + "mergerName": "四川省-内江市-资中县" + }, + { + "areaCode": 511071000000, + "name": "内江经济开发区", + "parentCode": 511000000000, + "mergerName": "四川省-内江市-内江经济开发区" + }, + { + "areaCode": 511083000000, + "name": "隆昌市", + "parentCode": 511000000000, + "mergerName": "四川省-内江市-隆昌市" + } + ], + "areaCode": 511000000000, + "name": "内江市", + "parentCode": 510000000000, + "mergerName": "四川省-内江市" + }, + { + "children": [ + { + "areaCode": 511101000000, + "name": "市辖区", + "parentCode": 511100000000, + "mergerName": "四川省-乐山市-市辖区" + }, + { + "areaCode": 511102000000, + "name": "市中区", + "parentCode": 511100000000, + "mergerName": "四川省-乐山市-市中区" + }, + { + "areaCode": 511111000000, + "name": "沙湾区", + "parentCode": 511100000000, + "mergerName": "四川省-乐山市-沙湾区" + }, + { + "areaCode": 511112000000, + "name": "五通桥区", + "parentCode": 511100000000, + "mergerName": "四川省-乐山市-五通桥区" + }, + { + "areaCode": 511113000000, + "name": "金口河区", + "parentCode": 511100000000, + "mergerName": "四川省-乐山市-金口河区" + }, + { + "areaCode": 511123000000, + "name": "犍为县", + "parentCode": 511100000000, + "mergerName": "四川省-乐山市-犍为县" + }, + { + "areaCode": 511124000000, + "name": "井研县", + "parentCode": 511100000000, + "mergerName": "四川省-乐山市-井研县" + }, + { + "areaCode": 511126000000, + "name": "夹江县", + "parentCode": 511100000000, + "mergerName": "四川省-乐山市-夹江县" + }, + { + "areaCode": 511129000000, + "name": "沐川县", + "parentCode": 511100000000, + "mergerName": "四川省-乐山市-沐川县" + }, + { + "areaCode": 511132000000, + "name": "峨边彝族自治县", + "parentCode": 511100000000, + "mergerName": "四川省-乐山市-峨边彝族自治县" + }, + { + "areaCode": 511133000000, + "name": "马边彝族自治县", + "parentCode": 511100000000, + "mergerName": "四川省-乐山市-马边彝族自治县" + }, + { + "areaCode": 511181000000, + "name": "峨眉山市", + "parentCode": 511100000000, + "mergerName": "四川省-乐山市-峨眉山市" + } + ], + "areaCode": 511100000000, + "name": "乐山市", + "parentCode": 510000000000, + "mergerName": "四川省-乐山市" + }, + { + "children": [ + { + "areaCode": 511301000000, + "name": "市辖区", + "parentCode": 511300000000, + "mergerName": "四川省-南充市-市辖区" + }, + { + "areaCode": 511302000000, + "name": "顺庆区", + "parentCode": 511300000000, + "mergerName": "四川省-南充市-顺庆区" + }, + { + "areaCode": 511303000000, + "name": "高坪区", + "parentCode": 511300000000, + "mergerName": "四川省-南充市-高坪区" + }, + { + "areaCode": 511304000000, + "name": "嘉陵区", + "parentCode": 511300000000, + "mergerName": "四川省-南充市-嘉陵区" + }, + { + "areaCode": 511321000000, + "name": "南部县", + "parentCode": 511300000000, + "mergerName": "四川省-南充市-南部县" + }, + { + "areaCode": 511322000000, + "name": "营山县", + "parentCode": 511300000000, + "mergerName": "四川省-南充市-营山县" + }, + { + "areaCode": 511323000000, + "name": "蓬安县", + "parentCode": 511300000000, + "mergerName": "四川省-南充市-蓬安县" + }, + { + "areaCode": 511324000000, + "name": "仪陇县", + "parentCode": 511300000000, + "mergerName": "四川省-南充市-仪陇县" + }, + { + "areaCode": 511325000000, + "name": "西充县", + "parentCode": 511300000000, + "mergerName": "四川省-南充市-西充县" + }, + { + "areaCode": 511381000000, + "name": "阆中市", + "parentCode": 511300000000, + "mergerName": "四川省-南充市-阆中市" + } + ], + "areaCode": 511300000000, + "name": "南充市", + "parentCode": 510000000000, + "mergerName": "四川省-南充市" + }, + { + "children": [ + { + "areaCode": 511401000000, + "name": "市辖区", + "parentCode": 511400000000, + "mergerName": "四川省-眉山市-市辖区" + }, + { + "areaCode": 511402000000, + "name": "东坡区", + "parentCode": 511400000000, + "mergerName": "四川省-眉山市-东坡区" + }, + { + "areaCode": 511403000000, + "name": "彭山区", + "parentCode": 511400000000, + "mergerName": "四川省-眉山市-彭山区" + }, + { + "areaCode": 511421000000, + "name": "仁寿县", + "parentCode": 511400000000, + "mergerName": "四川省-眉山市-仁寿县" + }, + { + "areaCode": 511423000000, + "name": "洪雅县", + "parentCode": 511400000000, + "mergerName": "四川省-眉山市-洪雅县" + }, + { + "areaCode": 511424000000, + "name": "丹棱县", + "parentCode": 511400000000, + "mergerName": "四川省-眉山市-丹棱县" + }, + { + "areaCode": 511425000000, + "name": "青神县", + "parentCode": 511400000000, + "mergerName": "四川省-眉山市-青神县" + } + ], + "areaCode": 511400000000, + "name": "眉山市", + "parentCode": 510000000000, + "mergerName": "四川省-眉山市" + }, + { + "children": [ + { + "areaCode": 511501000000, + "name": "市辖区", + "parentCode": 511500000000, + "mergerName": "四川省-宜宾市-市辖区" + }, + { + "areaCode": 511502000000, + "name": "翠屏区", + "parentCode": 511500000000, + "mergerName": "四川省-宜宾市-翠屏区" + }, + { + "areaCode": 511503000000, + "name": "南溪区", + "parentCode": 511500000000, + "mergerName": "四川省-宜宾市-南溪区" + }, + { + "areaCode": 511504000000, + "name": "叙州区", + "parentCode": 511500000000, + "mergerName": "四川省-宜宾市-叙州区" + }, + { + "areaCode": 511523000000, + "name": "江安县", + "parentCode": 511500000000, + "mergerName": "四川省-宜宾市-江安县" + }, + { + "areaCode": 511524000000, + "name": "长宁县", + "parentCode": 511500000000, + "mergerName": "四川省-宜宾市-长宁县" + }, + { "areaCode": 511525000000, "name": "高县", "parentCode": 511500000000, "mergerName": "四川省-宜宾市-高县" }, + { "areaCode": 511526000000, "name": "珙县", "parentCode": 511500000000, "mergerName": "四川省-宜宾市-珙县" }, + { + "areaCode": 511527000000, + "name": "筠连县", + "parentCode": 511500000000, + "mergerName": "四川省-宜宾市-筠连县" + }, + { + "areaCode": 511528000000, + "name": "兴文县", + "parentCode": 511500000000, + "mergerName": "四川省-宜宾市-兴文县" + }, + { + "areaCode": 511529000000, + "name": "屏山县", + "parentCode": 511500000000, + "mergerName": "四川省-宜宾市-屏山县" + } + ], + "areaCode": 511500000000, + "name": "宜宾市", + "parentCode": 510000000000, + "mergerName": "四川省-宜宾市" + }, + { + "children": [ + { + "areaCode": 511601000000, + "name": "市辖区", + "parentCode": 511600000000, + "mergerName": "四川省-广安市-市辖区" + }, + { + "areaCode": 511602000000, + "name": "广安区", + "parentCode": 511600000000, + "mergerName": "四川省-广安市-广安区" + }, + { + "areaCode": 511603000000, + "name": "前锋区", + "parentCode": 511600000000, + "mergerName": "四川省-广安市-前锋区" + }, + { + "areaCode": 511621000000, + "name": "岳池县", + "parentCode": 511600000000, + "mergerName": "四川省-广安市-岳池县" + }, + { + "areaCode": 511622000000, + "name": "武胜县", + "parentCode": 511600000000, + "mergerName": "四川省-广安市-武胜县" + }, + { + "areaCode": 511623000000, + "name": "邻水县", + "parentCode": 511600000000, + "mergerName": "四川省-广安市-邻水县" + }, + { + "areaCode": 511681000000, + "name": "华蓥市", + "parentCode": 511600000000, + "mergerName": "四川省-广安市-华蓥市" + } + ], + "areaCode": 511600000000, + "name": "广安市", + "parentCode": 510000000000, + "mergerName": "四川省-广安市" + }, + { + "children": [ + { + "areaCode": 511701000000, + "name": "市辖区", + "parentCode": 511700000000, + "mergerName": "四川省-达州市-市辖区" + }, + { + "areaCode": 511702000000, + "name": "通川区", + "parentCode": 511700000000, + "mergerName": "四川省-达州市-通川区" + }, + { + "areaCode": 511703000000, + "name": "达川区", + "parentCode": 511700000000, + "mergerName": "四川省-达州市-达川区" + }, + { + "areaCode": 511722000000, + "name": "宣汉县", + "parentCode": 511700000000, + "mergerName": "四川省-达州市-宣汉县" + }, + { + "areaCode": 511723000000, + "name": "开江县", + "parentCode": 511700000000, + "mergerName": "四川省-达州市-开江县" + }, + { + "areaCode": 511724000000, + "name": "大竹县", + "parentCode": 511700000000, + "mergerName": "四川省-达州市-大竹县" + }, + { "areaCode": 511725000000, "name": "渠县", "parentCode": 511700000000, "mergerName": "四川省-达州市-渠县" }, + { + "areaCode": 511771000000, + "name": "达州经济开发区", + "parentCode": 511700000000, + "mergerName": "四川省-达州市-达州经济开发区" + }, + { + "areaCode": 511781000000, + "name": "万源市", + "parentCode": 511700000000, + "mergerName": "四川省-达州市-万源市" + } + ], + "areaCode": 511700000000, + "name": "达州市", + "parentCode": 510000000000, + "mergerName": "四川省-达州市" + }, + { + "children": [ + { + "areaCode": 511801000000, + "name": "市辖区", + "parentCode": 511800000000, + "mergerName": "四川省-雅安市-市辖区" + }, + { + "areaCode": 511802000000, + "name": "雨城区", + "parentCode": 511800000000, + "mergerName": "四川省-雅安市-雨城区" + }, + { + "areaCode": 511803000000, + "name": "名山区", + "parentCode": 511800000000, + "mergerName": "四川省-雅安市-名山区" + }, + { + "areaCode": 511822000000, + "name": "荥经县", + "parentCode": 511800000000, + "mergerName": "四川省-雅安市-荥经县" + }, + { + "areaCode": 511823000000, + "name": "汉源县", + "parentCode": 511800000000, + "mergerName": "四川省-雅安市-汉源县" + }, + { + "areaCode": 511824000000, + "name": "石棉县", + "parentCode": 511800000000, + "mergerName": "四川省-雅安市-石棉县" + }, + { + "areaCode": 511825000000, + "name": "天全县", + "parentCode": 511800000000, + "mergerName": "四川省-雅安市-天全县" + }, + { + "areaCode": 511826000000, + "name": "芦山县", + "parentCode": 511800000000, + "mergerName": "四川省-雅安市-芦山县" + }, + { + "areaCode": 511827000000, + "name": "宝兴县", + "parentCode": 511800000000, + "mergerName": "四川省-雅安市-宝兴县" + } + ], + "areaCode": 511800000000, + "name": "雅安市", + "parentCode": 510000000000, + "mergerName": "四川省-雅安市" + }, + { + "children": [ + { + "areaCode": 511901000000, + "name": "市辖区", + "parentCode": 511900000000, + "mergerName": "四川省-巴中市-市辖区" + }, + { + "areaCode": 511902000000, + "name": "巴州区", + "parentCode": 511900000000, + "mergerName": "四川省-巴中市-巴州区" + }, + { + "areaCode": 511903000000, + "name": "恩阳区", + "parentCode": 511900000000, + "mergerName": "四川省-巴中市-恩阳区" + }, + { + "areaCode": 511921000000, + "name": "通江县", + "parentCode": 511900000000, + "mergerName": "四川省-巴中市-通江县" + }, + { + "areaCode": 511922000000, + "name": "南江县", + "parentCode": 511900000000, + "mergerName": "四川省-巴中市-南江县" + }, + { + "areaCode": 511923000000, + "name": "平昌县", + "parentCode": 511900000000, + "mergerName": "四川省-巴中市-平昌县" + }, + { + "areaCode": 511971000000, + "name": "巴中经济开发区", + "parentCode": 511900000000, + "mergerName": "四川省-巴中市-巴中经济开发区" + } + ], + "areaCode": 511900000000, + "name": "巴中市", + "parentCode": 510000000000, + "mergerName": "四川省-巴中市" + }, + { + "children": [ + { + "areaCode": 512001000000, + "name": "市辖区", + "parentCode": 512000000000, + "mergerName": "四川省-资阳市-市辖区" + }, + { + "areaCode": 512002000000, + "name": "雁江区", + "parentCode": 512000000000, + "mergerName": "四川省-资阳市-雁江区" + }, + { + "areaCode": 512021000000, + "name": "安岳县", + "parentCode": 512000000000, + "mergerName": "四川省-资阳市-安岳县" + }, + { + "areaCode": 512022000000, + "name": "乐至县", + "parentCode": 512000000000, + "mergerName": "四川省-资阳市-乐至县" + } + ], + "areaCode": 512000000000, + "name": "资阳市", + "parentCode": 510000000000, + "mergerName": "四川省-资阳市" + }, + { + "children": [ + { + "areaCode": 513201000000, + "name": "马尔康市", + "parentCode": 513200000000, + "mergerName": "四川省-阿坝藏族羌族自治州-马尔康市" + }, + { + "areaCode": 513221000000, + "name": "汶川县", + "parentCode": 513200000000, + "mergerName": "四川省-阿坝藏族羌族自治州-汶川县" + }, + { + "areaCode": 513222000000, + "name": "理县", + "parentCode": 513200000000, + "mergerName": "四川省-阿坝藏族羌族自治州-理县" + }, + { + "areaCode": 513223000000, + "name": "茂县", + "parentCode": 513200000000, + "mergerName": "四川省-阿坝藏族羌族自治州-茂县" + }, + { + "areaCode": 513224000000, + "name": "松潘县", + "parentCode": 513200000000, + "mergerName": "四川省-阿坝藏族羌族自治州-松潘县" + }, + { + "areaCode": 513225000000, + "name": "九寨沟县", + "parentCode": 513200000000, + "mergerName": "四川省-阿坝藏族羌族自治州-九寨沟县" + }, + { + "areaCode": 513226000000, + "name": "金川县", + "parentCode": 513200000000, + "mergerName": "四川省-阿坝藏族羌族自治州-金川县" + }, + { + "areaCode": 513227000000, + "name": "小金县", + "parentCode": 513200000000, + "mergerName": "四川省-阿坝藏族羌族自治州-小金县" + }, + { + "areaCode": 513228000000, + "name": "黑水县", + "parentCode": 513200000000, + "mergerName": "四川省-阿坝藏族羌族自治州-黑水县" + }, + { + "areaCode": 513230000000, + "name": "壤塘县", + "parentCode": 513200000000, + "mergerName": "四川省-阿坝藏族羌族自治州-壤塘县" + }, + { + "areaCode": 513231000000, + "name": "阿坝县", + "parentCode": 513200000000, + "mergerName": "四川省-阿坝藏族羌族自治州-阿坝县" + }, + { + "areaCode": 513232000000, + "name": "若尔盖县", + "parentCode": 513200000000, + "mergerName": "四川省-阿坝藏族羌族自治州-若尔盖县" + }, + { + "areaCode": 513233000000, + "name": "红原县", + "parentCode": 513200000000, + "mergerName": "四川省-阿坝藏族羌族自治州-红原县" + } + ], + "areaCode": 513200000000, + "name": "阿坝藏族羌族自治州", + "parentCode": 510000000000, + "mergerName": "四川省-阿坝藏族羌族自治州" + }, + { + "children": [ + { + "areaCode": 513301000000, + "name": "康定市", + "parentCode": 513300000000, + "mergerName": "四川省-甘孜藏族自治州-康定市" + }, + { + "areaCode": 513322000000, + "name": "泸定县", + "parentCode": 513300000000, + "mergerName": "四川省-甘孜藏族自治州-泸定县" + }, + { + "areaCode": 513323000000, + "name": "丹巴县", + "parentCode": 513300000000, + "mergerName": "四川省-甘孜藏族自治州-丹巴县" + }, + { + "areaCode": 513324000000, + "name": "九龙县", + "parentCode": 513300000000, + "mergerName": "四川省-甘孜藏族自治州-九龙县" + }, + { + "areaCode": 513325000000, + "name": "雅江县", + "parentCode": 513300000000, + "mergerName": "四川省-甘孜藏族自治州-雅江县" + }, + { + "areaCode": 513326000000, + "name": "道孚县", + "parentCode": 513300000000, + "mergerName": "四川省-甘孜藏族自治州-道孚县" + }, + { + "areaCode": 513327000000, + "name": "炉霍县", + "parentCode": 513300000000, + "mergerName": "四川省-甘孜藏族自治州-炉霍县" + }, + { + "areaCode": 513328000000, + "name": "甘孜县", + "parentCode": 513300000000, + "mergerName": "四川省-甘孜藏族自治州-甘孜县" + }, + { + "areaCode": 513329000000, + "name": "新龙县", + "parentCode": 513300000000, + "mergerName": "四川省-甘孜藏族自治州-新龙县" + }, + { + "areaCode": 513330000000, + "name": "德格县", + "parentCode": 513300000000, + "mergerName": "四川省-甘孜藏族自治州-德格县" + }, + { + "areaCode": 513331000000, + "name": "白玉县", + "parentCode": 513300000000, + "mergerName": "四川省-甘孜藏族自治州-白玉县" + }, + { + "areaCode": 513332000000, + "name": "石渠县", + "parentCode": 513300000000, + "mergerName": "四川省-甘孜藏族自治州-石渠县" + }, + { + "areaCode": 513333000000, + "name": "色达县", + "parentCode": 513300000000, + "mergerName": "四川省-甘孜藏族自治州-色达县" + }, + { + "areaCode": 513334000000, + "name": "理塘县", + "parentCode": 513300000000, + "mergerName": "四川省-甘孜藏族自治州-理塘县" + }, + { + "areaCode": 513335000000, + "name": "巴塘县", + "parentCode": 513300000000, + "mergerName": "四川省-甘孜藏族自治州-巴塘县" + }, + { + "areaCode": 513336000000, + "name": "乡城县", + "parentCode": 513300000000, + "mergerName": "四川省-甘孜藏族自治州-乡城县" + }, + { + "areaCode": 513337000000, + "name": "稻城县", + "parentCode": 513300000000, + "mergerName": "四川省-甘孜藏族自治州-稻城县" + }, + { + "areaCode": 513338000000, + "name": "得荣县", + "parentCode": 513300000000, + "mergerName": "四川省-甘孜藏族自治州-得荣县" + } + ], + "areaCode": 513300000000, + "name": "甘孜藏族自治州", + "parentCode": 510000000000, + "mergerName": "四川省-甘孜藏族自治州" + }, + { + "children": [ + { + "areaCode": 513401000000, + "name": "西昌市", + "parentCode": 513400000000, + "mergerName": "四川省-凉山彝族自治州-西昌市" + }, + { + "areaCode": 513422000000, + "name": "木里藏族自治县", + "parentCode": 513400000000, + "mergerName": "四川省-凉山彝族自治州-木里藏族自治县" + }, + { + "areaCode": 513423000000, + "name": "盐源县", + "parentCode": 513400000000, + "mergerName": "四川省-凉山彝族自治州-盐源县" + }, + { + "areaCode": 513424000000, + "name": "德昌县", + "parentCode": 513400000000, + "mergerName": "四川省-凉山彝族自治州-德昌县" + }, + { + "areaCode": 513425000000, + "name": "会理县", + "parentCode": 513400000000, + "mergerName": "四川省-凉山彝族自治州-会理县" + }, + { + "areaCode": 513426000000, + "name": "会东县", + "parentCode": 513400000000, + "mergerName": "四川省-凉山彝族自治州-会东县" + }, + { + "areaCode": 513427000000, + "name": "宁南县", + "parentCode": 513400000000, + "mergerName": "四川省-凉山彝族自治州-宁南县" + }, + { + "areaCode": 513428000000, + "name": "普格县", + "parentCode": 513400000000, + "mergerName": "四川省-凉山彝族自治州-普格县" + }, + { + "areaCode": 513429000000, + "name": "布拖县", + "parentCode": 513400000000, + "mergerName": "四川省-凉山彝族自治州-布拖县" + }, + { + "areaCode": 513430000000, + "name": "金阳县", + "parentCode": 513400000000, + "mergerName": "四川省-凉山彝族自治州-金阳县" + }, + { + "areaCode": 513431000000, + "name": "昭觉县", + "parentCode": 513400000000, + "mergerName": "四川省-凉山彝族自治州-昭觉县" + }, + { + "areaCode": 513432000000, + "name": "喜德县", + "parentCode": 513400000000, + "mergerName": "四川省-凉山彝族自治州-喜德县" + }, + { + "areaCode": 513433000000, + "name": "冕宁县", + "parentCode": 513400000000, + "mergerName": "四川省-凉山彝族自治州-冕宁县" + }, + { + "areaCode": 513434000000, + "name": "越西县", + "parentCode": 513400000000, + "mergerName": "四川省-凉山彝族自治州-越西县" + }, + { + "areaCode": 513435000000, + "name": "甘洛县", + "parentCode": 513400000000, + "mergerName": "四川省-凉山彝族自治州-甘洛县" + }, + { + "areaCode": 513436000000, + "name": "美姑县", + "parentCode": 513400000000, + "mergerName": "四川省-凉山彝族自治州-美姑县" + }, + { + "areaCode": 513437000000, + "name": "雷波县", + "parentCode": 513400000000, + "mergerName": "四川省-凉山彝族自治州-雷波县" + } + ], + "areaCode": 513400000000, + "name": "凉山彝族自治州", + "parentCode": 510000000000, + "mergerName": "四川省-凉山彝族自治州" + } + ], + "areaCode": 510000000000, + "name": "四川省", + "parentCode": 0, + "mergerName": "-四川省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 520101000000, + "name": "市辖区", + "parentCode": 520100000000, + "mergerName": "贵州省-贵阳市-市辖区" + }, + { + "areaCode": 520102000000, + "name": "南明区", + "parentCode": 520100000000, + "mergerName": "贵州省-贵阳市-南明区" + }, + { + "areaCode": 520103000000, + "name": "云岩区", + "parentCode": 520100000000, + "mergerName": "贵州省-贵阳市-云岩区" + }, + { + "areaCode": 520111000000, + "name": "花溪区", + "parentCode": 520100000000, + "mergerName": "贵州省-贵阳市-花溪区" + }, + { + "areaCode": 520112000000, + "name": "乌当区", + "parentCode": 520100000000, + "mergerName": "贵州省-贵阳市-乌当区" + }, + { + "areaCode": 520113000000, + "name": "白云区", + "parentCode": 520100000000, + "mergerName": "贵州省-贵阳市-白云区" + }, + { + "areaCode": 520115000000, + "name": "观山湖区", + "parentCode": 520100000000, + "mergerName": "贵州省-贵阳市-观山湖区" + }, + { + "areaCode": 520121000000, + "name": "开阳县", + "parentCode": 520100000000, + "mergerName": "贵州省-贵阳市-开阳县" + }, + { + "areaCode": 520122000000, + "name": "息烽县", + "parentCode": 520100000000, + "mergerName": "贵州省-贵阳市-息烽县" + }, + { + "areaCode": 520123000000, + "name": "修文县", + "parentCode": 520100000000, + "mergerName": "贵州省-贵阳市-修文县" + }, + { + "areaCode": 520181000000, + "name": "清镇市", + "parentCode": 520100000000, + "mergerName": "贵州省-贵阳市-清镇市" + } + ], + "areaCode": 520100000000, + "name": "贵阳市", + "parentCode": 520000000000, + "mergerName": "贵州省-贵阳市" + }, + { + "children": [ + { + "areaCode": 520201000000, + "name": "钟山区", + "parentCode": 520200000000, + "mergerName": "贵州省-六盘水市-钟山区" + }, + { + "areaCode": 520203000000, + "name": "六枝特区", + "parentCode": 520200000000, + "mergerName": "贵州省-六盘水市-六枝特区" + }, + { + "areaCode": 520221000000, + "name": "水城县", + "parentCode": 520200000000, + "mergerName": "贵州省-六盘水市-水城县" + }, + { + "areaCode": 520281000000, + "name": "盘州市", + "parentCode": 520200000000, + "mergerName": "贵州省-六盘水市-盘州市" + } + ], + "areaCode": 520200000000, + "name": "六盘水市", + "parentCode": 520000000000, + "mergerName": "贵州省-六盘水市" + }, + { + "children": [ + { + "areaCode": 520301000000, + "name": "市辖区", + "parentCode": 520300000000, + "mergerName": "贵州省-遵义市-市辖区" + }, + { + "areaCode": 520302000000, + "name": "红花岗区", + "parentCode": 520300000000, + "mergerName": "贵州省-遵义市-红花岗区" + }, + { + "areaCode": 520303000000, + "name": "汇川区", + "parentCode": 520300000000, + "mergerName": "贵州省-遵义市-汇川区" + }, + { + "areaCode": 520304000000, + "name": "播州区", + "parentCode": 520300000000, + "mergerName": "贵州省-遵义市-播州区" + }, + { + "areaCode": 520322000000, + "name": "桐梓县", + "parentCode": 520300000000, + "mergerName": "贵州省-遵义市-桐梓县" + }, + { + "areaCode": 520323000000, + "name": "绥阳县", + "parentCode": 520300000000, + "mergerName": "贵州省-遵义市-绥阳县" + }, + { + "areaCode": 520324000000, + "name": "正安县", + "parentCode": 520300000000, + "mergerName": "贵州省-遵义市-正安县" + }, + { + "areaCode": 520325000000, + "name": "道真仡佬族苗族自治县", + "parentCode": 520300000000, + "mergerName": "贵州省-遵义市-道真仡佬族苗族自治县" + }, + { + "areaCode": 520326000000, + "name": "务川仡佬族苗族自治县", + "parentCode": 520300000000, + "mergerName": "贵州省-遵义市-务川仡佬族苗族自治县" + }, + { + "areaCode": 520327000000, + "name": "凤冈县", + "parentCode": 520300000000, + "mergerName": "贵州省-遵义市-凤冈县" + }, + { + "areaCode": 520328000000, + "name": "湄潭县", + "parentCode": 520300000000, + "mergerName": "贵州省-遵义市-湄潭县" + }, + { + "areaCode": 520329000000, + "name": "余庆县", + "parentCode": 520300000000, + "mergerName": "贵州省-遵义市-余庆县" + }, + { + "areaCode": 520330000000, + "name": "习水县", + "parentCode": 520300000000, + "mergerName": "贵州省-遵义市-习水县" + }, + { + "areaCode": 520381000000, + "name": "赤水市", + "parentCode": 520300000000, + "mergerName": "贵州省-遵义市-赤水市" + }, + { + "areaCode": 520382000000, + "name": "仁怀市", + "parentCode": 520300000000, + "mergerName": "贵州省-遵义市-仁怀市" + } + ], + "areaCode": 520300000000, + "name": "遵义市", + "parentCode": 520000000000, + "mergerName": "贵州省-遵义市" + }, + { + "children": [ + { + "areaCode": 520401000000, + "name": "市辖区", + "parentCode": 520400000000, + "mergerName": "贵州省-安顺市-市辖区" + }, + { + "areaCode": 520402000000, + "name": "西秀区", + "parentCode": 520400000000, + "mergerName": "贵州省-安顺市-西秀区" + }, + { + "areaCode": 520403000000, + "name": "平坝区", + "parentCode": 520400000000, + "mergerName": "贵州省-安顺市-平坝区" + }, + { + "areaCode": 520422000000, + "name": "普定县", + "parentCode": 520400000000, + "mergerName": "贵州省-安顺市-普定县" + }, + { + "areaCode": 520423000000, + "name": "镇宁布依族苗族自治县", + "parentCode": 520400000000, + "mergerName": "贵州省-安顺市-镇宁布依族苗族自治县" + }, + { + "areaCode": 520424000000, + "name": "关岭布依族苗族自治县", + "parentCode": 520400000000, + "mergerName": "贵州省-安顺市-关岭布依族苗族自治县" + }, + { + "areaCode": 520425000000, + "name": "紫云苗族布依族自治县", + "parentCode": 520400000000, + "mergerName": "贵州省-安顺市-紫云苗族布依族自治县" + } + ], + "areaCode": 520400000000, + "name": "安顺市", + "parentCode": 520000000000, + "mergerName": "贵州省-安顺市" + }, + { + "children": [ + { + "areaCode": 520501000000, + "name": "市辖区", + "parentCode": 520500000000, + "mergerName": "贵州省-毕节市-市辖区" + }, + { + "areaCode": 520502000000, + "name": "七星关区", + "parentCode": 520500000000, + "mergerName": "贵州省-毕节市-七星关区" + }, + { + "areaCode": 520521000000, + "name": "大方县", + "parentCode": 520500000000, + "mergerName": "贵州省-毕节市-大方县" + }, + { + "areaCode": 520522000000, + "name": "黔西县", + "parentCode": 520500000000, + "mergerName": "贵州省-毕节市-黔西县" + }, + { + "areaCode": 520523000000, + "name": "金沙县", + "parentCode": 520500000000, + "mergerName": "贵州省-毕节市-金沙县" + }, + { + "areaCode": 520524000000, + "name": "织金县", + "parentCode": 520500000000, + "mergerName": "贵州省-毕节市-织金县" + }, + { + "areaCode": 520525000000, + "name": "纳雍县", + "parentCode": 520500000000, + "mergerName": "贵州省-毕节市-纳雍县" + }, + { + "areaCode": 520526000000, + "name": "威宁彝族回族苗族自治县", + "parentCode": 520500000000, + "mergerName": "贵州省-毕节市-威宁彝族回族苗族自治县" + }, + { + "areaCode": 520527000000, + "name": "赫章县", + "parentCode": 520500000000, + "mergerName": "贵州省-毕节市-赫章县" + } + ], + "areaCode": 520500000000, + "name": "毕节市", + "parentCode": 520000000000, + "mergerName": "贵州省-毕节市" + }, + { + "children": [ + { + "areaCode": 520601000000, + "name": "市辖区", + "parentCode": 520600000000, + "mergerName": "贵州省-铜仁市-市辖区" + }, + { + "areaCode": 520602000000, + "name": "碧江区", + "parentCode": 520600000000, + "mergerName": "贵州省-铜仁市-碧江区" + }, + { + "areaCode": 520603000000, + "name": "万山区", + "parentCode": 520600000000, + "mergerName": "贵州省-铜仁市-万山区" + }, + { + "areaCode": 520621000000, + "name": "江口县", + "parentCode": 520600000000, + "mergerName": "贵州省-铜仁市-江口县" + }, + { + "areaCode": 520622000000, + "name": "玉屏侗族自治县", + "parentCode": 520600000000, + "mergerName": "贵州省-铜仁市-玉屏侗族自治县" + }, + { + "areaCode": 520623000000, + "name": "石阡县", + "parentCode": 520600000000, + "mergerName": "贵州省-铜仁市-石阡县" + }, + { + "areaCode": 520624000000, + "name": "思南县", + "parentCode": 520600000000, + "mergerName": "贵州省-铜仁市-思南县" + }, + { + "areaCode": 520625000000, + "name": "印江土家族苗族自治县", + "parentCode": 520600000000, + "mergerName": "贵州省-铜仁市-印江土家族苗族自治县" + }, + { + "areaCode": 520626000000, + "name": "德江县", + "parentCode": 520600000000, + "mergerName": "贵州省-铜仁市-德江县" + }, + { + "areaCode": 520627000000, + "name": "沿河土家族自治县", + "parentCode": 520600000000, + "mergerName": "贵州省-铜仁市-沿河土家族自治县" + }, + { + "areaCode": 520628000000, + "name": "松桃苗族自治县", + "parentCode": 520600000000, + "mergerName": "贵州省-铜仁市-松桃苗族自治县" + } + ], + "areaCode": 520600000000, + "name": "铜仁市", + "parentCode": 520000000000, + "mergerName": "贵州省-铜仁市" + }, + { + "children": [ + { + "areaCode": 522301000000, + "name": "兴义市", + "parentCode": 522300000000, + "mergerName": "贵州省-黔西南布依族苗族自治州-兴义市" + }, + { + "areaCode": 522302000000, + "name": "兴仁市", + "parentCode": 522300000000, + "mergerName": "贵州省-黔西南布依族苗族自治州-兴仁市" + }, + { + "areaCode": 522323000000, + "name": "普安县", + "parentCode": 522300000000, + "mergerName": "贵州省-黔西南布依族苗族自治州-普安县" + }, + { + "areaCode": 522324000000, + "name": "晴隆县", + "parentCode": 522300000000, + "mergerName": "贵州省-黔西南布依族苗族自治州-晴隆县" + }, + { + "areaCode": 522325000000, + "name": "贞丰县", + "parentCode": 522300000000, + "mergerName": "贵州省-黔西南布依族苗族自治州-贞丰县" + }, + { + "areaCode": 522326000000, + "name": "望谟县", + "parentCode": 522300000000, + "mergerName": "贵州省-黔西南布依族苗族自治州-望谟县" + }, + { + "areaCode": 522327000000, + "name": "册亨县", + "parentCode": 522300000000, + "mergerName": "贵州省-黔西南布依族苗族自治州-册亨县" + }, + { + "areaCode": 522328000000, + "name": "安龙县", + "parentCode": 522300000000, + "mergerName": "贵州省-黔西南布依族苗族自治州-安龙县" + } + ], + "areaCode": 522300000000, + "name": "黔西南布依族苗族自治州", + "parentCode": 520000000000, + "mergerName": "贵州省-黔西南布依族苗族自治州" + }, + { + "children": [ + { + "areaCode": 522601000000, + "name": "凯里市", + "parentCode": 522600000000, + "mergerName": "贵州省-黔东南苗族侗族自治州-凯里市" + }, + { + "areaCode": 522622000000, + "name": "黄平县", + "parentCode": 522600000000, + "mergerName": "贵州省-黔东南苗族侗族自治州-黄平县" + }, + { + "areaCode": 522623000000, + "name": "施秉县", + "parentCode": 522600000000, + "mergerName": "贵州省-黔东南苗族侗族自治州-施秉县" + }, + { + "areaCode": 522624000000, + "name": "三穗县", + "parentCode": 522600000000, + "mergerName": "贵州省-黔东南苗族侗族自治州-三穗县" + }, + { + "areaCode": 522625000000, + "name": "镇远县", + "parentCode": 522600000000, + "mergerName": "贵州省-黔东南苗族侗族自治州-镇远县" + }, + { + "areaCode": 522626000000, + "name": "岑巩县", + "parentCode": 522600000000, + "mergerName": "贵州省-黔东南苗族侗族自治州-岑巩县" + }, + { + "areaCode": 522627000000, + "name": "天柱县", + "parentCode": 522600000000, + "mergerName": "贵州省-黔东南苗族侗族自治州-天柱县" + }, + { + "areaCode": 522628000000, + "name": "锦屏县", + "parentCode": 522600000000, + "mergerName": "贵州省-黔东南苗族侗族自治州-锦屏县" + }, + { + "areaCode": 522629000000, + "name": "剑河县", + "parentCode": 522600000000, + "mergerName": "贵州省-黔东南苗族侗族自治州-剑河县" + }, + { + "areaCode": 522630000000, + "name": "台江县", + "parentCode": 522600000000, + "mergerName": "贵州省-黔东南苗族侗族自治州-台江县" + }, + { + "areaCode": 522631000000, + "name": "黎平县", + "parentCode": 522600000000, + "mergerName": "贵州省-黔东南苗族侗族自治州-黎平县" + }, + { + "areaCode": 522632000000, + "name": "榕江县", + "parentCode": 522600000000, + "mergerName": "贵州省-黔东南苗族侗族自治州-榕江县" + }, + { + "areaCode": 522633000000, + "name": "从江县", + "parentCode": 522600000000, + "mergerName": "贵州省-黔东南苗族侗族自治州-从江县" + }, + { + "areaCode": 522634000000, + "name": "雷山县", + "parentCode": 522600000000, + "mergerName": "贵州省-黔东南苗族侗族自治州-雷山县" + }, + { + "areaCode": 522635000000, + "name": "麻江县", + "parentCode": 522600000000, + "mergerName": "贵州省-黔东南苗族侗族自治州-麻江县" + }, + { + "areaCode": 522636000000, + "name": "丹寨县", + "parentCode": 522600000000, + "mergerName": "贵州省-黔东南苗族侗族自治州-丹寨县" + } + ], + "areaCode": 522600000000, + "name": "黔东南苗族侗族自治州", + "parentCode": 520000000000, + "mergerName": "贵州省-黔东南苗族侗族自治州" + }, + { + "children": [ + { + "areaCode": 522701000000, + "name": "都匀市", + "parentCode": 522700000000, + "mergerName": "贵州省-黔南布依族苗族自治州-都匀市" + }, + { + "areaCode": 522702000000, + "name": "福泉市", + "parentCode": 522700000000, + "mergerName": "贵州省-黔南布依族苗族自治州-福泉市" + }, + { + "areaCode": 522722000000, + "name": "荔波县", + "parentCode": 522700000000, + "mergerName": "贵州省-黔南布依族苗族自治州-荔波县" + }, + { + "areaCode": 522723000000, + "name": "贵定县", + "parentCode": 522700000000, + "mergerName": "贵州省-黔南布依族苗族自治州-贵定县" + }, + { + "areaCode": 522725000000, + "name": "瓮安县", + "parentCode": 522700000000, + "mergerName": "贵州省-黔南布依族苗族自治州-瓮安县" + }, + { + "areaCode": 522726000000, + "name": "独山县", + "parentCode": 522700000000, + "mergerName": "贵州省-黔南布依族苗族自治州-独山县" + }, + { + "areaCode": 522727000000, + "name": "平塘县", + "parentCode": 522700000000, + "mergerName": "贵州省-黔南布依族苗族自治州-平塘县" + }, + { + "areaCode": 522728000000, + "name": "罗甸县", + "parentCode": 522700000000, + "mergerName": "贵州省-黔南布依族苗族自治州-罗甸县" + }, + { + "areaCode": 522729000000, + "name": "长顺县", + "parentCode": 522700000000, + "mergerName": "贵州省-黔南布依族苗族自治州-长顺县" + }, + { + "areaCode": 522730000000, + "name": "龙里县", + "parentCode": 522700000000, + "mergerName": "贵州省-黔南布依族苗族自治州-龙里县" + }, + { + "areaCode": 522731000000, + "name": "惠水县", + "parentCode": 522700000000, + "mergerName": "贵州省-黔南布依族苗族自治州-惠水县" + }, + { + "areaCode": 522732000000, + "name": "三都水族自治县", + "parentCode": 522700000000, + "mergerName": "贵州省-黔南布依族苗族自治州-三都水族自治县" + } + ], + "areaCode": 522700000000, + "name": "黔南布依族苗族自治州", + "parentCode": 520000000000, + "mergerName": "贵州省-黔南布依族苗族自治州" + } + ], + "areaCode": 520000000000, + "name": "贵州省", + "parentCode": 0, + "mergerName": "-贵州省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 530101000000, + "name": "市辖区", + "parentCode": 530100000000, + "mergerName": "云南省-昆明市-市辖区" + }, + { + "areaCode": 530102000000, + "name": "五华区", + "parentCode": 530100000000, + "mergerName": "云南省-昆明市-五华区" + }, + { + "areaCode": 530103000000, + "name": "盘龙区", + "parentCode": 530100000000, + "mergerName": "云南省-昆明市-盘龙区" + }, + { + "areaCode": 530111000000, + "name": "官渡区", + "parentCode": 530100000000, + "mergerName": "云南省-昆明市-官渡区" + }, + { + "areaCode": 530112000000, + "name": "西山区", + "parentCode": 530100000000, + "mergerName": "云南省-昆明市-西山区" + }, + { + "areaCode": 530113000000, + "name": "东川区", + "parentCode": 530100000000, + "mergerName": "云南省-昆明市-东川区" + }, + { + "areaCode": 530114000000, + "name": "呈贡区", + "parentCode": 530100000000, + "mergerName": "云南省-昆明市-呈贡区" + }, + { + "areaCode": 530115000000, + "name": "晋宁区", + "parentCode": 530100000000, + "mergerName": "云南省-昆明市-晋宁区" + }, + { + "areaCode": 530124000000, + "name": "富民县", + "parentCode": 530100000000, + "mergerName": "云南省-昆明市-富民县" + }, + { + "areaCode": 530125000000, + "name": "宜良县", + "parentCode": 530100000000, + "mergerName": "云南省-昆明市-宜良县" + }, + { + "areaCode": 530126000000, + "name": "石林彝族自治县", + "parentCode": 530100000000, + "mergerName": "云南省-昆明市-石林彝族自治县" + }, + { + "areaCode": 530127000000, + "name": "嵩明县", + "parentCode": 530100000000, + "mergerName": "云南省-昆明市-嵩明县" + }, + { + "areaCode": 530128000000, + "name": "禄劝彝族苗族自治县", + "parentCode": 530100000000, + "mergerName": "云南省-昆明市-禄劝彝族苗族自治县" + }, + { + "areaCode": 530129000000, + "name": "寻甸回族彝族自治县", + "parentCode": 530100000000, + "mergerName": "云南省-昆明市-寻甸回族彝族自治县" + }, + { + "areaCode": 530181000000, + "name": "安宁市", + "parentCode": 530100000000, + "mergerName": "云南省-昆明市-安宁市" + } + ], + "areaCode": 530100000000, + "name": "昆明市", + "parentCode": 530000000000, + "mergerName": "云南省-昆明市" + }, + { + "children": [ + { + "areaCode": 530301000000, + "name": "市辖区", + "parentCode": 530300000000, + "mergerName": "云南省-曲靖市-市辖区" + }, + { + "areaCode": 530302000000, + "name": "麒麟区", + "parentCode": 530300000000, + "mergerName": "云南省-曲靖市-麒麟区" + }, + { + "areaCode": 530303000000, + "name": "沾益区", + "parentCode": 530300000000, + "mergerName": "云南省-曲靖市-沾益区" + }, + { + "areaCode": 530304000000, + "name": "马龙区", + "parentCode": 530300000000, + "mergerName": "云南省-曲靖市-马龙区" + }, + { + "areaCode": 530322000000, + "name": "陆良县", + "parentCode": 530300000000, + "mergerName": "云南省-曲靖市-陆良县" + }, + { + "areaCode": 530323000000, + "name": "师宗县", + "parentCode": 530300000000, + "mergerName": "云南省-曲靖市-师宗县" + }, + { + "areaCode": 530324000000, + "name": "罗平县", + "parentCode": 530300000000, + "mergerName": "云南省-曲靖市-罗平县" + }, + { + "areaCode": 530325000000, + "name": "富源县", + "parentCode": 530300000000, + "mergerName": "云南省-曲靖市-富源县" + }, + { + "areaCode": 530326000000, + "name": "会泽县", + "parentCode": 530300000000, + "mergerName": "云南省-曲靖市-会泽县" + }, + { + "areaCode": 530381000000, + "name": "宣威市", + "parentCode": 530300000000, + "mergerName": "云南省-曲靖市-宣威市" + } + ], + "areaCode": 530300000000, + "name": "曲靖市", + "parentCode": 530000000000, + "mergerName": "云南省-曲靖市" + }, + { + "children": [ + { + "areaCode": 530401000000, + "name": "市辖区", + "parentCode": 530400000000, + "mergerName": "云南省-玉溪市-市辖区" + }, + { + "areaCode": 530402000000, + "name": "红塔区", + "parentCode": 530400000000, + "mergerName": "云南省-玉溪市-红塔区" + }, + { + "areaCode": 530403000000, + "name": "江川区", + "parentCode": 530400000000, + "mergerName": "云南省-玉溪市-江川区" + }, + { + "areaCode": 530422000000, + "name": "澄江县", + "parentCode": 530400000000, + "mergerName": "云南省-玉溪市-澄江县" + }, + { + "areaCode": 530423000000, + "name": "通海县", + "parentCode": 530400000000, + "mergerName": "云南省-玉溪市-通海县" + }, + { + "areaCode": 530424000000, + "name": "华宁县", + "parentCode": 530400000000, + "mergerName": "云南省-玉溪市-华宁县" + }, + { + "areaCode": 530425000000, + "name": "易门县", + "parentCode": 530400000000, + "mergerName": "云南省-玉溪市-易门县" + }, + { + "areaCode": 530426000000, + "name": "峨山彝族自治县", + "parentCode": 530400000000, + "mergerName": "云南省-玉溪市-峨山彝族自治县" + }, + { + "areaCode": 530427000000, + "name": "新平彝族傣族自治县", + "parentCode": 530400000000, + "mergerName": "云南省-玉溪市-新平彝族傣族自治县" + }, + { + "areaCode": 530428000000, + "name": "元江哈尼族彝族傣族自治县", + "parentCode": 530400000000, + "mergerName": "云南省-玉溪市-元江哈尼族彝族傣族自治县" + } + ], + "areaCode": 530400000000, + "name": "玉溪市", + "parentCode": 530000000000, + "mergerName": "云南省-玉溪市" + }, + { + "children": [ + { + "areaCode": 530501000000, + "name": "市辖区", + "parentCode": 530500000000, + "mergerName": "云南省-保山市-市辖区" + }, + { + "areaCode": 530502000000, + "name": "隆阳区", + "parentCode": 530500000000, + "mergerName": "云南省-保山市-隆阳区" + }, + { + "areaCode": 530521000000, + "name": "施甸县", + "parentCode": 530500000000, + "mergerName": "云南省-保山市-施甸县" + }, + { + "areaCode": 530523000000, + "name": "龙陵县", + "parentCode": 530500000000, + "mergerName": "云南省-保山市-龙陵县" + }, + { + "areaCode": 530524000000, + "name": "昌宁县", + "parentCode": 530500000000, + "mergerName": "云南省-保山市-昌宁县" + }, + { + "areaCode": 530581000000, + "name": "腾冲市", + "parentCode": 530500000000, + "mergerName": "云南省-保山市-腾冲市" + } + ], + "areaCode": 530500000000, + "name": "保山市", + "parentCode": 530000000000, + "mergerName": "云南省-保山市" + }, + { + "children": [ + { + "areaCode": 530601000000, + "name": "市辖区", + "parentCode": 530600000000, + "mergerName": "云南省-昭通市-市辖区" + }, + { + "areaCode": 530602000000, + "name": "昭阳区", + "parentCode": 530600000000, + "mergerName": "云南省-昭通市-昭阳区" + }, + { + "areaCode": 530621000000, + "name": "鲁甸县", + "parentCode": 530600000000, + "mergerName": "云南省-昭通市-鲁甸县" + }, + { + "areaCode": 530622000000, + "name": "巧家县", + "parentCode": 530600000000, + "mergerName": "云南省-昭通市-巧家县" + }, + { + "areaCode": 530623000000, + "name": "盐津县", + "parentCode": 530600000000, + "mergerName": "云南省-昭通市-盐津县" + }, + { + "areaCode": 530624000000, + "name": "大关县", + "parentCode": 530600000000, + "mergerName": "云南省-昭通市-大关县" + }, + { + "areaCode": 530625000000, + "name": "永善县", + "parentCode": 530600000000, + "mergerName": "云南省-昭通市-永善县" + }, + { + "areaCode": 530626000000, + "name": "绥江县", + "parentCode": 530600000000, + "mergerName": "云南省-昭通市-绥江县" + }, + { + "areaCode": 530627000000, + "name": "镇雄县", + "parentCode": 530600000000, + "mergerName": "云南省-昭通市-镇雄县" + }, + { + "areaCode": 530628000000, + "name": "彝良县", + "parentCode": 530600000000, + "mergerName": "云南省-昭通市-彝良县" + }, + { + "areaCode": 530629000000, + "name": "威信县", + "parentCode": 530600000000, + "mergerName": "云南省-昭通市-威信县" + }, + { + "areaCode": 530681000000, + "name": "水富市", + "parentCode": 530600000000, + "mergerName": "云南省-昭通市-水富市" + } + ], + "areaCode": 530600000000, + "name": "昭通市", + "parentCode": 530000000000, + "mergerName": "云南省-昭通市" + }, + { + "children": [ + { + "areaCode": 530701000000, + "name": "市辖区", + "parentCode": 530700000000, + "mergerName": "云南省-丽江市-市辖区" + }, + { + "areaCode": 530702000000, + "name": "古城区", + "parentCode": 530700000000, + "mergerName": "云南省-丽江市-古城区" + }, + { + "areaCode": 530721000000, + "name": "玉龙纳西族自治县", + "parentCode": 530700000000, + "mergerName": "云南省-丽江市-玉龙纳西族自治县" + }, + { + "areaCode": 530722000000, + "name": "永胜县", + "parentCode": 530700000000, + "mergerName": "云南省-丽江市-永胜县" + }, + { + "areaCode": 530723000000, + "name": "华坪县", + "parentCode": 530700000000, + "mergerName": "云南省-丽江市-华坪县" + }, + { + "areaCode": 530724000000, + "name": "宁蒗彝族自治县", + "parentCode": 530700000000, + "mergerName": "云南省-丽江市-宁蒗彝族自治县" + } + ], + "areaCode": 530700000000, + "name": "丽江市", + "parentCode": 530000000000, + "mergerName": "云南省-丽江市" + }, + { + "children": [ + { + "areaCode": 530801000000, + "name": "市辖区", + "parentCode": 530800000000, + "mergerName": "云南省-普洱市-市辖区" + }, + { + "areaCode": 530802000000, + "name": "思茅区", + "parentCode": 530800000000, + "mergerName": "云南省-普洱市-思茅区" + }, + { + "areaCode": 530821000000, + "name": "宁洱哈尼族彝族自治县", + "parentCode": 530800000000, + "mergerName": "云南省-普洱市-宁洱哈尼族彝族自治县" + }, + { + "areaCode": 530822000000, + "name": "墨江哈尼族自治县", + "parentCode": 530800000000, + "mergerName": "云南省-普洱市-墨江哈尼族自治县" + }, + { + "areaCode": 530823000000, + "name": "景东彝族自治县", + "parentCode": 530800000000, + "mergerName": "云南省-普洱市-景东彝族自治县" + }, + { + "areaCode": 530824000000, + "name": "景谷傣族彝族自治县", + "parentCode": 530800000000, + "mergerName": "云南省-普洱市-景谷傣族彝族自治县" + }, + { + "areaCode": 530825000000, + "name": "镇沅彝族哈尼族拉祜族自治县", + "parentCode": 530800000000, + "mergerName": "云南省-普洱市-镇沅彝族哈尼族拉祜族自治县" + }, + { + "areaCode": 530826000000, + "name": "江城哈尼族彝族自治县", + "parentCode": 530800000000, + "mergerName": "云南省-普洱市-江城哈尼族彝族自治县" + }, + { + "areaCode": 530827000000, + "name": "孟连傣族拉祜族佤族自治县", + "parentCode": 530800000000, + "mergerName": "云南省-普洱市-孟连傣族拉祜族佤族自治县" + }, + { + "areaCode": 530828000000, + "name": "澜沧拉祜族自治县", + "parentCode": 530800000000, + "mergerName": "云南省-普洱市-澜沧拉祜族自治县" + }, + { + "areaCode": 530829000000, + "name": "西盟佤族自治县", + "parentCode": 530800000000, + "mergerName": "云南省-普洱市-西盟佤族自治县" + } + ], + "areaCode": 530800000000, + "name": "普洱市", + "parentCode": 530000000000, + "mergerName": "云南省-普洱市" + }, + { + "children": [ + { + "areaCode": 530901000000, + "name": "市辖区", + "parentCode": 530900000000, + "mergerName": "云南省-临沧市-市辖区" + }, + { + "areaCode": 530902000000, + "name": "临翔区", + "parentCode": 530900000000, + "mergerName": "云南省-临沧市-临翔区" + }, + { + "areaCode": 530921000000, + "name": "凤庆县", + "parentCode": 530900000000, + "mergerName": "云南省-临沧市-凤庆县" + }, + { "areaCode": 530922000000, "name": "云县", "parentCode": 530900000000, "mergerName": "云南省-临沧市-云县" }, + { + "areaCode": 530923000000, + "name": "永德县", + "parentCode": 530900000000, + "mergerName": "云南省-临沧市-永德县" + }, + { + "areaCode": 530924000000, + "name": "镇康县", + "parentCode": 530900000000, + "mergerName": "云南省-临沧市-镇康县" + }, + { + "areaCode": 530925000000, + "name": "双江拉祜族佤族布朗族傣族自治县", + "parentCode": 530900000000, + "mergerName": "云南省-临沧市-双江拉祜族佤族布朗族傣族自治县" + }, + { + "areaCode": 530926000000, + "name": "耿马傣族佤族自治县", + "parentCode": 530900000000, + "mergerName": "云南省-临沧市-耿马傣族佤族自治县" + }, + { + "areaCode": 530927000000, + "name": "沧源佤族自治县", + "parentCode": 530900000000, + "mergerName": "云南省-临沧市-沧源佤族自治县" + } + ], + "areaCode": 530900000000, + "name": "临沧市", + "parentCode": 530000000000, + "mergerName": "云南省-临沧市" + }, + { + "children": [ + { + "areaCode": 532301000000, + "name": "楚雄市", + "parentCode": 532300000000, + "mergerName": "云南省-楚雄彝族自治州-楚雄市" + }, + { + "areaCode": 532322000000, + "name": "双柏县", + "parentCode": 532300000000, + "mergerName": "云南省-楚雄彝族自治州-双柏县" + }, + { + "areaCode": 532323000000, + "name": "牟定县", + "parentCode": 532300000000, + "mergerName": "云南省-楚雄彝族自治州-牟定县" + }, + { + "areaCode": 532324000000, + "name": "南华县", + "parentCode": 532300000000, + "mergerName": "云南省-楚雄彝族自治州-南华县" + }, + { + "areaCode": 532325000000, + "name": "姚安县", + "parentCode": 532300000000, + "mergerName": "云南省-楚雄彝族自治州-姚安县" + }, + { + "areaCode": 532326000000, + "name": "大姚县", + "parentCode": 532300000000, + "mergerName": "云南省-楚雄彝族自治州-大姚县" + }, + { + "areaCode": 532327000000, + "name": "永仁县", + "parentCode": 532300000000, + "mergerName": "云南省-楚雄彝族自治州-永仁县" + }, + { + "areaCode": 532328000000, + "name": "元谋县", + "parentCode": 532300000000, + "mergerName": "云南省-楚雄彝族自治州-元谋县" + }, + { + "areaCode": 532329000000, + "name": "武定县", + "parentCode": 532300000000, + "mergerName": "云南省-楚雄彝族自治州-武定县" + }, + { + "areaCode": 532331000000, + "name": "禄丰县", + "parentCode": 532300000000, + "mergerName": "云南省-楚雄彝族自治州-禄丰县" + } + ], + "areaCode": 532300000000, + "name": "楚雄彝族自治州", + "parentCode": 530000000000, + "mergerName": "云南省-楚雄彝族自治州" + }, + { + "children": [ + { + "areaCode": 532501000000, + "name": "个旧市", + "parentCode": 532500000000, + "mergerName": "云南省-红河哈尼族彝族自治州-个旧市" + }, + { + "areaCode": 532502000000, + "name": "开远市", + "parentCode": 532500000000, + "mergerName": "云南省-红河哈尼族彝族自治州-开远市" + }, + { + "areaCode": 532503000000, + "name": "蒙自市", + "parentCode": 532500000000, + "mergerName": "云南省-红河哈尼族彝族自治州-蒙自市" + }, + { + "areaCode": 532504000000, + "name": "弥勒市", + "parentCode": 532500000000, + "mergerName": "云南省-红河哈尼族彝族自治州-弥勒市" + }, + { + "areaCode": 532523000000, + "name": "屏边苗族自治县", + "parentCode": 532500000000, + "mergerName": "云南省-红河哈尼族彝族自治州-屏边苗族自治县" + }, + { + "areaCode": 532524000000, + "name": "建水县", + "parentCode": 532500000000, + "mergerName": "云南省-红河哈尼族彝族自治州-建水县" + }, + { + "areaCode": 532525000000, + "name": "石屏县", + "parentCode": 532500000000, + "mergerName": "云南省-红河哈尼族彝族自治州-石屏县" + }, + { + "areaCode": 532527000000, + "name": "泸西县", + "parentCode": 532500000000, + "mergerName": "云南省-红河哈尼族彝族自治州-泸西县" + }, + { + "areaCode": 532528000000, + "name": "元阳县", + "parentCode": 532500000000, + "mergerName": "云南省-红河哈尼族彝族自治州-元阳县" + }, + { + "areaCode": 532529000000, + "name": "红河县", + "parentCode": 532500000000, + "mergerName": "云南省-红河哈尼族彝族自治州-红河县" + }, + { + "areaCode": 532530000000, + "name": "金平苗族瑶族傣族自治县", + "parentCode": 532500000000, + "mergerName": "云南省-红河哈尼族彝族自治州-金平苗族瑶族傣族自治县" + }, + { + "areaCode": 532531000000, + "name": "绿春县", + "parentCode": 532500000000, + "mergerName": "云南省-红河哈尼族彝族自治州-绿春县" + }, + { + "areaCode": 532532000000, + "name": "河口瑶族自治县", + "parentCode": 532500000000, + "mergerName": "云南省-红河哈尼族彝族自治州-河口瑶族自治县" + } + ], + "areaCode": 532500000000, + "name": "红河哈尼族彝族自治州", + "parentCode": 530000000000, + "mergerName": "云南省-红河哈尼族彝族自治州" + }, + { + "children": [ + { + "areaCode": 532601000000, + "name": "文山市", + "parentCode": 532600000000, + "mergerName": "云南省-文山壮族苗族自治州-文山市" + }, + { + "areaCode": 532622000000, + "name": "砚山县", + "parentCode": 532600000000, + "mergerName": "云南省-文山壮族苗族自治州-砚山县" + }, + { + "areaCode": 532623000000, + "name": "西畴县", + "parentCode": 532600000000, + "mergerName": "云南省-文山壮族苗族自治州-西畴县" + }, + { + "areaCode": 532624000000, + "name": "麻栗坡县", + "parentCode": 532600000000, + "mergerName": "云南省-文山壮族苗族自治州-麻栗坡县" + }, + { + "areaCode": 532625000000, + "name": "马关县", + "parentCode": 532600000000, + "mergerName": "云南省-文山壮族苗族自治州-马关县" + }, + { + "areaCode": 532626000000, + "name": "丘北县", + "parentCode": 532600000000, + "mergerName": "云南省-文山壮族苗族自治州-丘北县" + }, + { + "areaCode": 532627000000, + "name": "广南县", + "parentCode": 532600000000, + "mergerName": "云南省-文山壮族苗族自治州-广南县" + }, + { + "areaCode": 532628000000, + "name": "富宁县", + "parentCode": 532600000000, + "mergerName": "云南省-文山壮族苗族自治州-富宁县" + } + ], + "areaCode": 532600000000, + "name": "文山壮族苗族自治州", + "parentCode": 530000000000, + "mergerName": "云南省-文山壮族苗族自治州" + }, + { + "children": [ + { + "areaCode": 532801000000, + "name": "景洪市", + "parentCode": 532800000000, + "mergerName": "云南省-西双版纳傣族自治州-景洪市" + }, + { + "areaCode": 532822000000, + "name": "勐海县", + "parentCode": 532800000000, + "mergerName": "云南省-西双版纳傣族自治州-勐海县" + }, + { + "areaCode": 532823000000, + "name": "勐腊县", + "parentCode": 532800000000, + "mergerName": "云南省-西双版纳傣族自治州-勐腊县" + } + ], + "areaCode": 532800000000, + "name": "西双版纳傣族自治州", + "parentCode": 530000000000, + "mergerName": "云南省-西双版纳傣族自治州" + }, + { + "children": [ + { + "areaCode": 532901000000, + "name": "大理市", + "parentCode": 532900000000, + "mergerName": "云南省-大理白族自治州-大理市" + }, + { + "areaCode": 532922000000, + "name": "漾濞彝族自治县", + "parentCode": 532900000000, + "mergerName": "云南省-大理白族自治州-漾濞彝族自治县" + }, + { + "areaCode": 532923000000, + "name": "祥云县", + "parentCode": 532900000000, + "mergerName": "云南省-大理白族自治州-祥云县" + }, + { + "areaCode": 532924000000, + "name": "宾川县", + "parentCode": 532900000000, + "mergerName": "云南省-大理白族自治州-宾川县" + }, + { + "areaCode": 532925000000, + "name": "弥渡县", + "parentCode": 532900000000, + "mergerName": "云南省-大理白族自治州-弥渡县" + }, + { + "areaCode": 532926000000, + "name": "南涧彝族自治县", + "parentCode": 532900000000, + "mergerName": "云南省-大理白族自治州-南涧彝族自治县" + }, + { + "areaCode": 532927000000, + "name": "巍山彝族回族自治县", + "parentCode": 532900000000, + "mergerName": "云南省-大理白族自治州-巍山彝族回族自治县" + }, + { + "areaCode": 532928000000, + "name": "永平县", + "parentCode": 532900000000, + "mergerName": "云南省-大理白族自治州-永平县" + }, + { + "areaCode": 532929000000, + "name": "云龙县", + "parentCode": 532900000000, + "mergerName": "云南省-大理白族自治州-云龙县" + }, + { + "areaCode": 532930000000, + "name": "洱源县", + "parentCode": 532900000000, + "mergerName": "云南省-大理白族自治州-洱源县" + }, + { + "areaCode": 532931000000, + "name": "剑川县", + "parentCode": 532900000000, + "mergerName": "云南省-大理白族自治州-剑川县" + }, + { + "areaCode": 532932000000, + "name": "鹤庆县", + "parentCode": 532900000000, + "mergerName": "云南省-大理白族自治州-鹤庆县" + } + ], + "areaCode": 532900000000, + "name": "大理白族自治州", + "parentCode": 530000000000, + "mergerName": "云南省-大理白族自治州" + }, + { + "children": [ + { + "areaCode": 533102000000, + "name": "瑞丽市", + "parentCode": 533100000000, + "mergerName": "云南省-德宏傣族景颇族自治州-瑞丽市" + }, + { + "areaCode": 533103000000, + "name": "芒市", + "parentCode": 533100000000, + "mergerName": "云南省-德宏傣族景颇族自治州-芒市" + }, + { + "areaCode": 533122000000, + "name": "梁河县", + "parentCode": 533100000000, + "mergerName": "云南省-德宏傣族景颇族自治州-梁河县" + }, + { + "areaCode": 533123000000, + "name": "盈江县", + "parentCode": 533100000000, + "mergerName": "云南省-德宏傣族景颇族自治州-盈江县" + }, + { + "areaCode": 533124000000, + "name": "陇川县", + "parentCode": 533100000000, + "mergerName": "云南省-德宏傣族景颇族自治州-陇川县" + } + ], + "areaCode": 533100000000, + "name": "德宏傣族景颇族自治州", + "parentCode": 530000000000, + "mergerName": "云南省-德宏傣族景颇族自治州" + }, + { + "children": [ + { + "areaCode": 533301000000, + "name": "泸水市", + "parentCode": 533300000000, + "mergerName": "云南省-怒江傈僳族自治州-泸水市" + }, + { + "areaCode": 533323000000, + "name": "福贡县", + "parentCode": 533300000000, + "mergerName": "云南省-怒江傈僳族自治州-福贡县" + }, + { + "areaCode": 533324000000, + "name": "贡山独龙族怒族自治县", + "parentCode": 533300000000, + "mergerName": "云南省-怒江傈僳族自治州-贡山独龙族怒族自治县" + }, + { + "areaCode": 533325000000, + "name": "兰坪白族普米族自治县", + "parentCode": 533300000000, + "mergerName": "云南省-怒江傈僳族自治州-兰坪白族普米族自治县" + } + ], + "areaCode": 533300000000, + "name": "怒江傈僳族自治州", + "parentCode": 530000000000, + "mergerName": "云南省-怒江傈僳族自治州" + }, + { + "children": [ + { + "areaCode": 533401000000, + "name": "香格里拉市", + "parentCode": 533400000000, + "mergerName": "云南省-迪庆藏族自治州-香格里拉市" + }, + { + "areaCode": 533422000000, + "name": "德钦县", + "parentCode": 533400000000, + "mergerName": "云南省-迪庆藏族自治州-德钦县" + }, + { + "areaCode": 533423000000, + "name": "维西傈僳族自治县", + "parentCode": 533400000000, + "mergerName": "云南省-迪庆藏族自治州-维西傈僳族自治县" + } + ], + "areaCode": 533400000000, + "name": "迪庆藏族自治州", + "parentCode": 530000000000, + "mergerName": "云南省-迪庆藏族自治州" + } + ], + "areaCode": 530000000000, + "name": "云南省", + "parentCode": 0, + "mergerName": "-云南省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 540101000000, + "name": "市辖区", + "parentCode": 540100000000, + "mergerName": "西藏自治区-拉萨市-市辖区" + }, + { + "areaCode": 540102000000, + "name": "城关区", + "parentCode": 540100000000, + "mergerName": "西藏自治区-拉萨市-城关区" + }, + { + "areaCode": 540103000000, + "name": "堆龙德庆区", + "parentCode": 540100000000, + "mergerName": "西藏自治区-拉萨市-堆龙德庆区" + }, + { + "areaCode": 540104000000, + "name": "达孜区", + "parentCode": 540100000000, + "mergerName": "西藏自治区-拉萨市-达孜区" + }, + { + "areaCode": 540121000000, + "name": "林周县", + "parentCode": 540100000000, + "mergerName": "西藏自治区-拉萨市-林周县" + }, + { + "areaCode": 540122000000, + "name": "当雄县", + "parentCode": 540100000000, + "mergerName": "西藏自治区-拉萨市-当雄县" + }, + { + "areaCode": 540123000000, + "name": "尼木县", + "parentCode": 540100000000, + "mergerName": "西藏自治区-拉萨市-尼木县" + }, + { + "areaCode": 540124000000, + "name": "曲水县", + "parentCode": 540100000000, + "mergerName": "西藏自治区-拉萨市-曲水县" + }, + { + "areaCode": 540127000000, + "name": "墨竹工卡县", + "parentCode": 540100000000, + "mergerName": "西藏自治区-拉萨市-墨竹工卡县" + }, + { + "areaCode": 540171000000, + "name": "格尔木藏青工业园区", + "parentCode": 540100000000, + "mergerName": "西藏自治区-拉萨市-格尔木藏青工业园区" + }, + { + "areaCode": 540172000000, + "name": "拉萨经济技术开发区", + "parentCode": 540100000000, + "mergerName": "西藏自治区-拉萨市-拉萨经济技术开发区" + }, + { + "areaCode": 540173000000, + "name": "西藏文化旅游创意园区", + "parentCode": 540100000000, + "mergerName": "西藏自治区-拉萨市-西藏文化旅游创意园区" + }, + { + "areaCode": 540174000000, + "name": "达孜工业园区", + "parentCode": 540100000000, + "mergerName": "西藏自治区-拉萨市-达孜工业园区" + } + ], + "areaCode": 540100000000, + "name": "拉萨市", + "parentCode": 540000000000, + "mergerName": "西藏自治区-拉萨市" + }, + { + "children": [ + { + "areaCode": 540202000000, + "name": "桑珠孜区", + "parentCode": 540200000000, + "mergerName": "西藏自治区-日喀则市-桑珠孜区" + }, + { + "areaCode": 540221000000, + "name": "南木林县", + "parentCode": 540200000000, + "mergerName": "西藏自治区-日喀则市-南木林县" + }, + { + "areaCode": 540222000000, + "name": "江孜县", + "parentCode": 540200000000, + "mergerName": "西藏自治区-日喀则市-江孜县" + }, + { + "areaCode": 540223000000, + "name": "定日县", + "parentCode": 540200000000, + "mergerName": "西藏自治区-日喀则市-定日县" + }, + { + "areaCode": 540224000000, + "name": "萨迦县", + "parentCode": 540200000000, + "mergerName": "西藏自治区-日喀则市-萨迦县" + }, + { + "areaCode": 540225000000, + "name": "拉孜县", + "parentCode": 540200000000, + "mergerName": "西藏自治区-日喀则市-拉孜县" + }, + { + "areaCode": 540226000000, + "name": "昂仁县", + "parentCode": 540200000000, + "mergerName": "西藏自治区-日喀则市-昂仁县" + }, + { + "areaCode": 540227000000, + "name": "谢通门县", + "parentCode": 540200000000, + "mergerName": "西藏自治区-日喀则市-谢通门县" + }, + { + "areaCode": 540228000000, + "name": "白朗县", + "parentCode": 540200000000, + "mergerName": "西藏自治区-日喀则市-白朗县" + }, + { + "areaCode": 540229000000, + "name": "仁布县", + "parentCode": 540200000000, + "mergerName": "西藏自治区-日喀则市-仁布县" + }, + { + "areaCode": 540230000000, + "name": "康马县", + "parentCode": 540200000000, + "mergerName": "西藏自治区-日喀则市-康马县" + }, + { + "areaCode": 540231000000, + "name": "定结县", + "parentCode": 540200000000, + "mergerName": "西藏自治区-日喀则市-定结县" + }, + { + "areaCode": 540232000000, + "name": "仲巴县", + "parentCode": 540200000000, + "mergerName": "西藏自治区-日喀则市-仲巴县" + }, + { + "areaCode": 540233000000, + "name": "亚东县", + "parentCode": 540200000000, + "mergerName": "西藏自治区-日喀则市-亚东县" + }, + { + "areaCode": 540234000000, + "name": "吉隆县", + "parentCode": 540200000000, + "mergerName": "西藏自治区-日喀则市-吉隆县" + }, + { + "areaCode": 540235000000, + "name": "聂拉木县", + "parentCode": 540200000000, + "mergerName": "西藏自治区-日喀则市-聂拉木县" + }, + { + "areaCode": 540236000000, + "name": "萨嘎县", + "parentCode": 540200000000, + "mergerName": "西藏自治区-日喀则市-萨嘎县" + }, + { + "areaCode": 540237000000, + "name": "岗巴县", + "parentCode": 540200000000, + "mergerName": "西藏自治区-日喀则市-岗巴县" + } + ], + "areaCode": 540200000000, + "name": "日喀则市", + "parentCode": 540000000000, + "mergerName": "西藏自治区-日喀则市" + }, + { + "children": [ + { + "areaCode": 540302000000, + "name": "卡若区", + "parentCode": 540300000000, + "mergerName": "西藏自治区-昌都市-卡若区" + }, + { + "areaCode": 540321000000, + "name": "江达县", + "parentCode": 540300000000, + "mergerName": "西藏自治区-昌都市-江达县" + }, + { + "areaCode": 540322000000, + "name": "贡觉县", + "parentCode": 540300000000, + "mergerName": "西藏自治区-昌都市-贡觉县" + }, + { + "areaCode": 540323000000, + "name": "类乌齐县", + "parentCode": 540300000000, + "mergerName": "西藏自治区-昌都市-类乌齐县" + }, + { + "areaCode": 540324000000, + "name": "丁青县", + "parentCode": 540300000000, + "mergerName": "西藏自治区-昌都市-丁青县" + }, + { + "areaCode": 540325000000, + "name": "察雅县", + "parentCode": 540300000000, + "mergerName": "西藏自治区-昌都市-察雅县" + }, + { + "areaCode": 540326000000, + "name": "八宿县", + "parentCode": 540300000000, + "mergerName": "西藏自治区-昌都市-八宿县" + }, + { + "areaCode": 540327000000, + "name": "左贡县", + "parentCode": 540300000000, + "mergerName": "西藏自治区-昌都市-左贡县" + }, + { + "areaCode": 540328000000, + "name": "芒康县", + "parentCode": 540300000000, + "mergerName": "西藏自治区-昌都市-芒康县" + }, + { + "areaCode": 540329000000, + "name": "洛隆县", + "parentCode": 540300000000, + "mergerName": "西藏自治区-昌都市-洛隆县" + }, + { + "areaCode": 540330000000, + "name": "边坝县", + "parentCode": 540300000000, + "mergerName": "西藏自治区-昌都市-边坝县" + } + ], + "areaCode": 540300000000, + "name": "昌都市", + "parentCode": 540000000000, + "mergerName": "西藏自治区-昌都市" + }, + { + "children": [ + { + "areaCode": 540402000000, + "name": "巴宜区", + "parentCode": 540400000000, + "mergerName": "西藏自治区-林芝市-巴宜区" + }, + { + "areaCode": 540421000000, + "name": "工布江达县", + "parentCode": 540400000000, + "mergerName": "西藏自治区-林芝市-工布江达县" + }, + { + "areaCode": 540422000000, + "name": "米林县", + "parentCode": 540400000000, + "mergerName": "西藏自治区-林芝市-米林县" + }, + { + "areaCode": 540423000000, + "name": "墨脱县", + "parentCode": 540400000000, + "mergerName": "西藏自治区-林芝市-墨脱县" + }, + { + "areaCode": 540424000000, + "name": "波密县", + "parentCode": 540400000000, + "mergerName": "西藏自治区-林芝市-波密县" + }, + { + "areaCode": 540425000000, + "name": "察隅县", + "parentCode": 540400000000, + "mergerName": "西藏自治区-林芝市-察隅县" + }, + { + "areaCode": 540426000000, + "name": "朗县", + "parentCode": 540400000000, + "mergerName": "西藏自治区-林芝市-朗县" + } + ], + "areaCode": 540400000000, + "name": "林芝市", + "parentCode": 540000000000, + "mergerName": "西藏自治区-林芝市" + }, + { + "children": [ + { + "areaCode": 540501000000, + "name": "市辖区", + "parentCode": 540500000000, + "mergerName": "西藏自治区-山南市-市辖区" + }, + { + "areaCode": 540502000000, + "name": "乃东区", + "parentCode": 540500000000, + "mergerName": "西藏自治区-山南市-乃东区" + }, + { + "areaCode": 540521000000, + "name": "扎囊县", + "parentCode": 540500000000, + "mergerName": "西藏自治区-山南市-扎囊县" + }, + { + "areaCode": 540522000000, + "name": "贡嘎县", + "parentCode": 540500000000, + "mergerName": "西藏自治区-山南市-贡嘎县" + }, + { + "areaCode": 540523000000, + "name": "桑日县", + "parentCode": 540500000000, + "mergerName": "西藏自治区-山南市-桑日县" + }, + { + "areaCode": 540524000000, + "name": "琼结县", + "parentCode": 540500000000, + "mergerName": "西藏自治区-山南市-琼结县" + }, + { + "areaCode": 540525000000, + "name": "曲松县", + "parentCode": 540500000000, + "mergerName": "西藏自治区-山南市-曲松县" + }, + { + "areaCode": 540526000000, + "name": "措美县", + "parentCode": 540500000000, + "mergerName": "西藏自治区-山南市-措美县" + }, + { + "areaCode": 540527000000, + "name": "洛扎县", + "parentCode": 540500000000, + "mergerName": "西藏自治区-山南市-洛扎县" + }, + { + "areaCode": 540528000000, + "name": "加查县", + "parentCode": 540500000000, + "mergerName": "西藏自治区-山南市-加查县" + }, + { + "areaCode": 540529000000, + "name": "隆子县", + "parentCode": 540500000000, + "mergerName": "西藏自治区-山南市-隆子县" + }, + { + "areaCode": 540530000000, + "name": "错那县", + "parentCode": 540500000000, + "mergerName": "西藏自治区-山南市-错那县" + }, + { + "areaCode": 540531000000, + "name": "浪卡子县", + "parentCode": 540500000000, + "mergerName": "西藏自治区-山南市-浪卡子县" + } + ], + "areaCode": 540500000000, + "name": "山南市", + "parentCode": 540000000000, + "mergerName": "西藏自治区-山南市" + }, + { + "children": [ + { + "areaCode": 540602000000, + "name": "色尼区", + "parentCode": 540600000000, + "mergerName": "西藏自治区-那曲市-色尼区" + }, + { + "areaCode": 540621000000, + "name": "嘉黎县", + "parentCode": 540600000000, + "mergerName": "西藏自治区-那曲市-嘉黎县" + }, + { + "areaCode": 540622000000, + "name": "比如县", + "parentCode": 540600000000, + "mergerName": "西藏自治区-那曲市-比如县" + }, + { + "areaCode": 540623000000, + "name": "聂荣县", + "parentCode": 540600000000, + "mergerName": "西藏自治区-那曲市-聂荣县" + }, + { + "areaCode": 540624000000, + "name": "安多县", + "parentCode": 540600000000, + "mergerName": "西藏自治区-那曲市-安多县" + }, + { + "areaCode": 540625000000, + "name": "申扎县", + "parentCode": 540600000000, + "mergerName": "西藏自治区-那曲市-申扎县" + }, + { + "areaCode": 540626000000, + "name": "索县", + "parentCode": 540600000000, + "mergerName": "西藏自治区-那曲市-索县" + }, + { + "areaCode": 540627000000, + "name": "班戈县", + "parentCode": 540600000000, + "mergerName": "西藏自治区-那曲市-班戈县" + }, + { + "areaCode": 540628000000, + "name": "巴青县", + "parentCode": 540600000000, + "mergerName": "西藏自治区-那曲市-巴青县" + }, + { + "areaCode": 540629000000, + "name": "尼玛县", + "parentCode": 540600000000, + "mergerName": "西藏自治区-那曲市-尼玛县" + }, + { + "areaCode": 540630000000, + "name": "双湖县", + "parentCode": 540600000000, + "mergerName": "西藏自治区-那曲市-双湖县" + } + ], + "areaCode": 540600000000, + "name": "那曲市", + "parentCode": 540000000000, + "mergerName": "西藏自治区-那曲市" + }, + { + "children": [ + { + "areaCode": 542521000000, + "name": "普兰县", + "parentCode": 542500000000, + "mergerName": "西藏自治区-阿里地区-普兰县" + }, + { + "areaCode": 542522000000, + "name": "札达县", + "parentCode": 542500000000, + "mergerName": "西藏自治区-阿里地区-札达县" + }, + { + "areaCode": 542523000000, + "name": "噶尔县", + "parentCode": 542500000000, + "mergerName": "西藏自治区-阿里地区-噶尔县" + }, + { + "areaCode": 542524000000, + "name": "日土县", + "parentCode": 542500000000, + "mergerName": "西藏自治区-阿里地区-日土县" + }, + { + "areaCode": 542525000000, + "name": "革吉县", + "parentCode": 542500000000, + "mergerName": "西藏自治区-阿里地区-革吉县" + }, + { + "areaCode": 542526000000, + "name": "改则县", + "parentCode": 542500000000, + "mergerName": "西藏自治区-阿里地区-改则县" + }, + { + "areaCode": 542527000000, + "name": "措勤县", + "parentCode": 542500000000, + "mergerName": "西藏自治区-阿里地区-措勤县" + } + ], + "areaCode": 542500000000, + "name": "阿里地区", + "parentCode": 540000000000, + "mergerName": "西藏自治区-阿里地区" + } + ], + "areaCode": 540000000000, + "name": "西藏自治区", + "parentCode": 0, + "mergerName": "-西藏自治区" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 610101000000, + "name": "市辖区", + "parentCode": 610100000000, + "mergerName": "陕西省-西安市-市辖区" + }, + { + "areaCode": 610102000000, + "name": "新城区", + "parentCode": 610100000000, + "mergerName": "陕西省-西安市-新城区" + }, + { + "areaCode": 610103000000, + "name": "碑林区", + "parentCode": 610100000000, + "mergerName": "陕西省-西安市-碑林区" + }, + { + "areaCode": 610104000000, + "name": "莲湖区", + "parentCode": 610100000000, + "mergerName": "陕西省-西安市-莲湖区" + }, + { + "areaCode": 610111000000, + "name": "灞桥区", + "parentCode": 610100000000, + "mergerName": "陕西省-西安市-灞桥区" + }, + { + "areaCode": 610112000000, + "name": "未央区", + "parentCode": 610100000000, + "mergerName": "陕西省-西安市-未央区" + }, + { + "areaCode": 610113000000, + "name": "雁塔区", + "parentCode": 610100000000, + "mergerName": "陕西省-西安市-雁塔区" + }, + { + "areaCode": 610114000000, + "name": "阎良区", + "parentCode": 610100000000, + "mergerName": "陕西省-西安市-阎良区" + }, + { + "areaCode": 610115000000, + "name": "临潼区", + "parentCode": 610100000000, + "mergerName": "陕西省-西安市-临潼区" + }, + { + "areaCode": 610116000000, + "name": "长安区", + "parentCode": 610100000000, + "mergerName": "陕西省-西安市-长安区" + }, + { + "areaCode": 610117000000, + "name": "高陵区", + "parentCode": 610100000000, + "mergerName": "陕西省-西安市-高陵区" + }, + { + "areaCode": 610118000000, + "name": "鄠邑区", + "parentCode": 610100000000, + "mergerName": "陕西省-西安市-鄠邑区" + }, + { + "areaCode": 610122000000, + "name": "蓝田县", + "parentCode": 610100000000, + "mergerName": "陕西省-西安市-蓝田县" + }, + { + "areaCode": 610124000000, + "name": "周至县", + "parentCode": 610100000000, + "mergerName": "陕西省-西安市-周至县" + } + ], + "areaCode": 610100000000, + "name": "西安市", + "parentCode": 610000000000, + "mergerName": "陕西省-西安市" + }, + { + "children": [ + { + "areaCode": 610201000000, + "name": "市辖区", + "parentCode": 610200000000, + "mergerName": "陕西省-铜川市-市辖区" + }, + { + "areaCode": 610202000000, + "name": "王益区", + "parentCode": 610200000000, + "mergerName": "陕西省-铜川市-王益区" + }, + { + "areaCode": 610203000000, + "name": "印台区", + "parentCode": 610200000000, + "mergerName": "陕西省-铜川市-印台区" + }, + { + "areaCode": 610204000000, + "name": "耀州区", + "parentCode": 610200000000, + "mergerName": "陕西省-铜川市-耀州区" + }, + { + "areaCode": 610222000000, + "name": "宜君县", + "parentCode": 610200000000, + "mergerName": "陕西省-铜川市-宜君县" + } + ], + "areaCode": 610200000000, + "name": "铜川市", + "parentCode": 610000000000, + "mergerName": "陕西省-铜川市" + }, + { + "children": [ + { + "areaCode": 610301000000, + "name": "市辖区", + "parentCode": 610300000000, + "mergerName": "陕西省-宝鸡市-市辖区" + }, + { + "areaCode": 610302000000, + "name": "渭滨区", + "parentCode": 610300000000, + "mergerName": "陕西省-宝鸡市-渭滨区" + }, + { + "areaCode": 610303000000, + "name": "金台区", + "parentCode": 610300000000, + "mergerName": "陕西省-宝鸡市-金台区" + }, + { + "areaCode": 610304000000, + "name": "陈仓区", + "parentCode": 610300000000, + "mergerName": "陕西省-宝鸡市-陈仓区" + }, + { + "areaCode": 610322000000, + "name": "凤翔县", + "parentCode": 610300000000, + "mergerName": "陕西省-宝鸡市-凤翔县" + }, + { + "areaCode": 610323000000, + "name": "岐山县", + "parentCode": 610300000000, + "mergerName": "陕西省-宝鸡市-岐山县" + }, + { + "areaCode": 610324000000, + "name": "扶风县", + "parentCode": 610300000000, + "mergerName": "陕西省-宝鸡市-扶风县" + }, + { "areaCode": 610326000000, "name": "眉县", "parentCode": 610300000000, "mergerName": "陕西省-宝鸡市-眉县" }, + { "areaCode": 610327000000, "name": "陇县", "parentCode": 610300000000, "mergerName": "陕西省-宝鸡市-陇县" }, + { + "areaCode": 610328000000, + "name": "千阳县", + "parentCode": 610300000000, + "mergerName": "陕西省-宝鸡市-千阳县" + }, + { + "areaCode": 610329000000, + "name": "麟游县", + "parentCode": 610300000000, + "mergerName": "陕西省-宝鸡市-麟游县" + }, + { "areaCode": 610330000000, "name": "凤县", "parentCode": 610300000000, "mergerName": "陕西省-宝鸡市-凤县" }, + { + "areaCode": 610331000000, + "name": "太白县", + "parentCode": 610300000000, + "mergerName": "陕西省-宝鸡市-太白县" + } + ], + "areaCode": 610300000000, + "name": "宝鸡市", + "parentCode": 610000000000, + "mergerName": "陕西省-宝鸡市" + }, + { + "children": [ + { + "areaCode": 610401000000, + "name": "市辖区", + "parentCode": 610400000000, + "mergerName": "陕西省-咸阳市-市辖区" + }, + { + "areaCode": 610402000000, + "name": "秦都区", + "parentCode": 610400000000, + "mergerName": "陕西省-咸阳市-秦都区" + }, + { + "areaCode": 610403000000, + "name": "杨陵区", + "parentCode": 610400000000, + "mergerName": "陕西省-咸阳市-杨陵区" + }, + { + "areaCode": 610404000000, + "name": "渭城区", + "parentCode": 610400000000, + "mergerName": "陕西省-咸阳市-渭城区" + }, + { + "areaCode": 610422000000, + "name": "三原县", + "parentCode": 610400000000, + "mergerName": "陕西省-咸阳市-三原县" + }, + { + "areaCode": 610423000000, + "name": "泾阳县", + "parentCode": 610400000000, + "mergerName": "陕西省-咸阳市-泾阳县" + }, + { "areaCode": 610424000000, "name": "乾县", "parentCode": 610400000000, "mergerName": "陕西省-咸阳市-乾县" }, + { + "areaCode": 610425000000, + "name": "礼泉县", + "parentCode": 610400000000, + "mergerName": "陕西省-咸阳市-礼泉县" + }, + { + "areaCode": 610426000000, + "name": "永寿县", + "parentCode": 610400000000, + "mergerName": "陕西省-咸阳市-永寿县" + }, + { + "areaCode": 610428000000, + "name": "长武县", + "parentCode": 610400000000, + "mergerName": "陕西省-咸阳市-长武县" + }, + { + "areaCode": 610429000000, + "name": "旬邑县", + "parentCode": 610400000000, + "mergerName": "陕西省-咸阳市-旬邑县" + }, + { + "areaCode": 610430000000, + "name": "淳化县", + "parentCode": 610400000000, + "mergerName": "陕西省-咸阳市-淳化县" + }, + { + "areaCode": 610431000000, + "name": "武功县", + "parentCode": 610400000000, + "mergerName": "陕西省-咸阳市-武功县" + }, + { + "areaCode": 610481000000, + "name": "兴平市", + "parentCode": 610400000000, + "mergerName": "陕西省-咸阳市-兴平市" + }, + { + "areaCode": 610482000000, + "name": "彬州市", + "parentCode": 610400000000, + "mergerName": "陕西省-咸阳市-彬州市" + } + ], + "areaCode": 610400000000, + "name": "咸阳市", + "parentCode": 610000000000, + "mergerName": "陕西省-咸阳市" + }, + { + "children": [ + { + "areaCode": 610501000000, + "name": "市辖区", + "parentCode": 610500000000, + "mergerName": "陕西省-渭南市-市辖区" + }, + { + "areaCode": 610502000000, + "name": "临渭区", + "parentCode": 610500000000, + "mergerName": "陕西省-渭南市-临渭区" + }, + { + "areaCode": 610503000000, + "name": "华州区", + "parentCode": 610500000000, + "mergerName": "陕西省-渭南市-华州区" + }, + { + "areaCode": 610522000000, + "name": "潼关县", + "parentCode": 610500000000, + "mergerName": "陕西省-渭南市-潼关县" + }, + { + "areaCode": 610523000000, + "name": "大荔县", + "parentCode": 610500000000, + "mergerName": "陕西省-渭南市-大荔县" + }, + { + "areaCode": 610524000000, + "name": "合阳县", + "parentCode": 610500000000, + "mergerName": "陕西省-渭南市-合阳县" + }, + { + "areaCode": 610525000000, + "name": "澄城县", + "parentCode": 610500000000, + "mergerName": "陕西省-渭南市-澄城县" + }, + { + "areaCode": 610526000000, + "name": "蒲城县", + "parentCode": 610500000000, + "mergerName": "陕西省-渭南市-蒲城县" + }, + { + "areaCode": 610527000000, + "name": "白水县", + "parentCode": 610500000000, + "mergerName": "陕西省-渭南市-白水县" + }, + { + "areaCode": 610528000000, + "name": "富平县", + "parentCode": 610500000000, + "mergerName": "陕西省-渭南市-富平县" + }, + { + "areaCode": 610581000000, + "name": "韩城市", + "parentCode": 610500000000, + "mergerName": "陕西省-渭南市-韩城市" + }, + { + "areaCode": 610582000000, + "name": "华阴市", + "parentCode": 610500000000, + "mergerName": "陕西省-渭南市-华阴市" + } + ], + "areaCode": 610500000000, + "name": "渭南市", + "parentCode": 610000000000, + "mergerName": "陕西省-渭南市" + }, + { + "children": [ + { + "areaCode": 610601000000, + "name": "市辖区", + "parentCode": 610600000000, + "mergerName": "陕西省-延安市-市辖区" + }, + { + "areaCode": 610602000000, + "name": "宝塔区", + "parentCode": 610600000000, + "mergerName": "陕西省-延安市-宝塔区" + }, + { + "areaCode": 610603000000, + "name": "安塞区", + "parentCode": 610600000000, + "mergerName": "陕西省-延安市-安塞区" + }, + { + "areaCode": 610621000000, + "name": "延长县", + "parentCode": 610600000000, + "mergerName": "陕西省-延安市-延长县" + }, + { + "areaCode": 610622000000, + "name": "延川县", + "parentCode": 610600000000, + "mergerName": "陕西省-延安市-延川县" + }, + { + "areaCode": 610623000000, + "name": "子长县", + "parentCode": 610600000000, + "mergerName": "陕西省-延安市-子长县" + }, + { + "areaCode": 610625000000, + "name": "志丹县", + "parentCode": 610600000000, + "mergerName": "陕西省-延安市-志丹县" + }, + { + "areaCode": 610626000000, + "name": "吴起县", + "parentCode": 610600000000, + "mergerName": "陕西省-延安市-吴起县" + }, + { + "areaCode": 610627000000, + "name": "甘泉县", + "parentCode": 610600000000, + "mergerName": "陕西省-延安市-甘泉县" + }, + { "areaCode": 610628000000, "name": "富县", "parentCode": 610600000000, "mergerName": "陕西省-延安市-富县" }, + { + "areaCode": 610629000000, + "name": "洛川县", + "parentCode": 610600000000, + "mergerName": "陕西省-延安市-洛川县" + }, + { + "areaCode": 610630000000, + "name": "宜川县", + "parentCode": 610600000000, + "mergerName": "陕西省-延安市-宜川县" + }, + { + "areaCode": 610631000000, + "name": "黄龙县", + "parentCode": 610600000000, + "mergerName": "陕西省-延安市-黄龙县" + }, + { + "areaCode": 610632000000, + "name": "黄陵县", + "parentCode": 610600000000, + "mergerName": "陕西省-延安市-黄陵县" + } + ], + "areaCode": 610600000000, + "name": "延安市", + "parentCode": 610000000000, + "mergerName": "陕西省-延安市" + }, + { + "children": [ + { + "areaCode": 610701000000, + "name": "市辖区", + "parentCode": 610700000000, + "mergerName": "陕西省-汉中市-市辖区" + }, + { + "areaCode": 610702000000, + "name": "汉台区", + "parentCode": 610700000000, + "mergerName": "陕西省-汉中市-汉台区" + }, + { + "areaCode": 610703000000, + "name": "南郑区", + "parentCode": 610700000000, + "mergerName": "陕西省-汉中市-南郑区" + }, + { + "areaCode": 610722000000, + "name": "城固县", + "parentCode": 610700000000, + "mergerName": "陕西省-汉中市-城固县" + }, + { "areaCode": 610723000000, "name": "洋县", "parentCode": 610700000000, "mergerName": "陕西省-汉中市-洋县" }, + { + "areaCode": 610724000000, + "name": "西乡县", + "parentCode": 610700000000, + "mergerName": "陕西省-汉中市-西乡县" + }, + { "areaCode": 610725000000, "name": "勉县", "parentCode": 610700000000, "mergerName": "陕西省-汉中市-勉县" }, + { + "areaCode": 610726000000, + "name": "宁强县", + "parentCode": 610700000000, + "mergerName": "陕西省-汉中市-宁强县" + }, + { + "areaCode": 610727000000, + "name": "略阳县", + "parentCode": 610700000000, + "mergerName": "陕西省-汉中市-略阳县" + }, + { + "areaCode": 610728000000, + "name": "镇巴县", + "parentCode": 610700000000, + "mergerName": "陕西省-汉中市-镇巴县" + }, + { + "areaCode": 610729000000, + "name": "留坝县", + "parentCode": 610700000000, + "mergerName": "陕西省-汉中市-留坝县" + }, + { + "areaCode": 610730000000, + "name": "佛坪县", + "parentCode": 610700000000, + "mergerName": "陕西省-汉中市-佛坪县" + } + ], + "areaCode": 610700000000, + "name": "汉中市", + "parentCode": 610000000000, + "mergerName": "陕西省-汉中市" + }, + { + "children": [ + { + "areaCode": 610801000000, + "name": "市辖区", + "parentCode": 610800000000, + "mergerName": "陕西省-榆林市-市辖区" + }, + { + "areaCode": 610802000000, + "name": "榆阳区", + "parentCode": 610800000000, + "mergerName": "陕西省-榆林市-榆阳区" + }, + { + "areaCode": 610803000000, + "name": "横山区", + "parentCode": 610800000000, + "mergerName": "陕西省-榆林市-横山区" + }, + { + "areaCode": 610822000000, + "name": "府谷县", + "parentCode": 610800000000, + "mergerName": "陕西省-榆林市-府谷县" + }, + { + "areaCode": 610824000000, + "name": "靖边县", + "parentCode": 610800000000, + "mergerName": "陕西省-榆林市-靖边县" + }, + { + "areaCode": 610825000000, + "name": "定边县", + "parentCode": 610800000000, + "mergerName": "陕西省-榆林市-定边县" + }, + { + "areaCode": 610826000000, + "name": "绥德县", + "parentCode": 610800000000, + "mergerName": "陕西省-榆林市-绥德县" + }, + { + "areaCode": 610827000000, + "name": "米脂县", + "parentCode": 610800000000, + "mergerName": "陕西省-榆林市-米脂县" + }, + { "areaCode": 610828000000, "name": "佳县", "parentCode": 610800000000, "mergerName": "陕西省-榆林市-佳县" }, + { + "areaCode": 610829000000, + "name": "吴堡县", + "parentCode": 610800000000, + "mergerName": "陕西省-榆林市-吴堡县" + }, + { + "areaCode": 610830000000, + "name": "清涧县", + "parentCode": 610800000000, + "mergerName": "陕西省-榆林市-清涧县" + }, + { + "areaCode": 610831000000, + "name": "子洲县", + "parentCode": 610800000000, + "mergerName": "陕西省-榆林市-子洲县" + }, + { + "areaCode": 610881000000, + "name": "神木市", + "parentCode": 610800000000, + "mergerName": "陕西省-榆林市-神木市" + } + ], + "areaCode": 610800000000, + "name": "榆林市", + "parentCode": 610000000000, + "mergerName": "陕西省-榆林市" + }, + { + "children": [ + { + "areaCode": 610901000000, + "name": "市辖区", + "parentCode": 610900000000, + "mergerName": "陕西省-安康市-市辖区" + }, + { + "areaCode": 610902000000, + "name": "汉滨区", + "parentCode": 610900000000, + "mergerName": "陕西省-安康市-汉滨区" + }, + { + "areaCode": 610921000000, + "name": "汉阴县", + "parentCode": 610900000000, + "mergerName": "陕西省-安康市-汉阴县" + }, + { + "areaCode": 610922000000, + "name": "石泉县", + "parentCode": 610900000000, + "mergerName": "陕西省-安康市-石泉县" + }, + { + "areaCode": 610923000000, + "name": "宁陕县", + "parentCode": 610900000000, + "mergerName": "陕西省-安康市-宁陕县" + }, + { + "areaCode": 610924000000, + "name": "紫阳县", + "parentCode": 610900000000, + "mergerName": "陕西省-安康市-紫阳县" + }, + { + "areaCode": 610925000000, + "name": "岚皋县", + "parentCode": 610900000000, + "mergerName": "陕西省-安康市-岚皋县" + }, + { + "areaCode": 610926000000, + "name": "平利县", + "parentCode": 610900000000, + "mergerName": "陕西省-安康市-平利县" + }, + { + "areaCode": 610927000000, + "name": "镇坪县", + "parentCode": 610900000000, + "mergerName": "陕西省-安康市-镇坪县" + }, + { + "areaCode": 610928000000, + "name": "旬阳县", + "parentCode": 610900000000, + "mergerName": "陕西省-安康市-旬阳县" + }, + { + "areaCode": 610929000000, + "name": "白河县", + "parentCode": 610900000000, + "mergerName": "陕西省-安康市-白河县" + } + ], + "areaCode": 610900000000, + "name": "安康市", + "parentCode": 610000000000, + "mergerName": "陕西省-安康市" + }, + { + "children": [ + { + "areaCode": 611001000000, + "name": "市辖区", + "parentCode": 611000000000, + "mergerName": "陕西省-商洛市-市辖区" + }, + { + "areaCode": 611002000000, + "name": "商州区", + "parentCode": 611000000000, + "mergerName": "陕西省-商洛市-商州区" + }, + { + "areaCode": 611021000000, + "name": "洛南县", + "parentCode": 611000000000, + "mergerName": "陕西省-商洛市-洛南县" + }, + { + "areaCode": 611022000000, + "name": "丹凤县", + "parentCode": 611000000000, + "mergerName": "陕西省-商洛市-丹凤县" + }, + { + "areaCode": 611023000000, + "name": "商南县", + "parentCode": 611000000000, + "mergerName": "陕西省-商洛市-商南县" + }, + { + "areaCode": 611024000000, + "name": "山阳县", + "parentCode": 611000000000, + "mergerName": "陕西省-商洛市-山阳县" + }, + { + "areaCode": 611025000000, + "name": "镇安县", + "parentCode": 611000000000, + "mergerName": "陕西省-商洛市-镇安县" + }, + { + "areaCode": 611026000000, + "name": "柞水县", + "parentCode": 611000000000, + "mergerName": "陕西省-商洛市-柞水县" + } + ], + "areaCode": 611000000000, + "name": "商洛市", + "parentCode": 610000000000, + "mergerName": "陕西省-商洛市" + } + ], + "areaCode": 610000000000, + "name": "陕西省", + "parentCode": 0, + "mergerName": "-陕西省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 620101000000, + "name": "市辖区", + "parentCode": 620100000000, + "mergerName": "甘肃省-兰州市-市辖区" + }, + { + "areaCode": 620102000000, + "name": "城关区", + "parentCode": 620100000000, + "mergerName": "甘肃省-兰州市-城关区" + }, + { + "areaCode": 620103000000, + "name": "七里河区", + "parentCode": 620100000000, + "mergerName": "甘肃省-兰州市-七里河区" + }, + { + "areaCode": 620104000000, + "name": "西固区", + "parentCode": 620100000000, + "mergerName": "甘肃省-兰州市-西固区" + }, + { + "areaCode": 620105000000, + "name": "安宁区", + "parentCode": 620100000000, + "mergerName": "甘肃省-兰州市-安宁区" + }, + { + "areaCode": 620111000000, + "name": "红古区", + "parentCode": 620100000000, + "mergerName": "甘肃省-兰州市-红古区" + }, + { + "areaCode": 620121000000, + "name": "永登县", + "parentCode": 620100000000, + "mergerName": "甘肃省-兰州市-永登县" + }, + { + "areaCode": 620122000000, + "name": "皋兰县", + "parentCode": 620100000000, + "mergerName": "甘肃省-兰州市-皋兰县" + }, + { + "areaCode": 620123000000, + "name": "榆中县", + "parentCode": 620100000000, + "mergerName": "甘肃省-兰州市-榆中县" + }, + { + "areaCode": 620171000000, + "name": "兰州新区", + "parentCode": 620100000000, + "mergerName": "甘肃省-兰州市-兰州新区" + } + ], + "areaCode": 620100000000, + "name": "兰州市", + "parentCode": 620000000000, + "mergerName": "甘肃省-兰州市" + }, + { + "children": [ + { + "areaCode": 620201000000, + "name": "市辖区", + "parentCode": 620200000000, + "mergerName": "甘肃省-嘉峪关市-市辖区" + } + ], + "areaCode": 620200000000, + "name": "嘉峪关市", + "parentCode": 620000000000, + "mergerName": "甘肃省-嘉峪关市" + }, + { + "children": [ + { + "areaCode": 620301000000, + "name": "市辖区", + "parentCode": 620300000000, + "mergerName": "甘肃省-金昌市-市辖区" + }, + { + "areaCode": 620302000000, + "name": "金川区", + "parentCode": 620300000000, + "mergerName": "甘肃省-金昌市-金川区" + }, + { + "areaCode": 620321000000, + "name": "永昌县", + "parentCode": 620300000000, + "mergerName": "甘肃省-金昌市-永昌县" + } + ], + "areaCode": 620300000000, + "name": "金昌市", + "parentCode": 620000000000, + "mergerName": "甘肃省-金昌市" + }, + { + "children": [ + { + "areaCode": 620401000000, + "name": "市辖区", + "parentCode": 620400000000, + "mergerName": "甘肃省-白银市-市辖区" + }, + { + "areaCode": 620402000000, + "name": "白银区", + "parentCode": 620400000000, + "mergerName": "甘肃省-白银市-白银区" + }, + { + "areaCode": 620403000000, + "name": "平川区", + "parentCode": 620400000000, + "mergerName": "甘肃省-白银市-平川区" + }, + { + "areaCode": 620421000000, + "name": "靖远县", + "parentCode": 620400000000, + "mergerName": "甘肃省-白银市-靖远县" + }, + { + "areaCode": 620422000000, + "name": "会宁县", + "parentCode": 620400000000, + "mergerName": "甘肃省-白银市-会宁县" + }, + { + "areaCode": 620423000000, + "name": "景泰县", + "parentCode": 620400000000, + "mergerName": "甘肃省-白银市-景泰县" + } + ], + "areaCode": 620400000000, + "name": "白银市", + "parentCode": 620000000000, + "mergerName": "甘肃省-白银市" + }, + { + "children": [ + { + "areaCode": 620501000000, + "name": "市辖区", + "parentCode": 620500000000, + "mergerName": "甘肃省-天水市-市辖区" + }, + { + "areaCode": 620502000000, + "name": "秦州区", + "parentCode": 620500000000, + "mergerName": "甘肃省-天水市-秦州区" + }, + { + "areaCode": 620503000000, + "name": "麦积区", + "parentCode": 620500000000, + "mergerName": "甘肃省-天水市-麦积区" + }, + { + "areaCode": 620521000000, + "name": "清水县", + "parentCode": 620500000000, + "mergerName": "甘肃省-天水市-清水县" + }, + { + "areaCode": 620522000000, + "name": "秦安县", + "parentCode": 620500000000, + "mergerName": "甘肃省-天水市-秦安县" + }, + { + "areaCode": 620523000000, + "name": "甘谷县", + "parentCode": 620500000000, + "mergerName": "甘肃省-天水市-甘谷县" + }, + { + "areaCode": 620524000000, + "name": "武山县", + "parentCode": 620500000000, + "mergerName": "甘肃省-天水市-武山县" + }, + { + "areaCode": 620525000000, + "name": "张家川回族自治县", + "parentCode": 620500000000, + "mergerName": "甘肃省-天水市-张家川回族自治县" + } + ], + "areaCode": 620500000000, + "name": "天水市", + "parentCode": 620000000000, + "mergerName": "甘肃省-天水市" + }, + { + "children": [ + { + "areaCode": 620601000000, + "name": "市辖区", + "parentCode": 620600000000, + "mergerName": "甘肃省-武威市-市辖区" + }, + { + "areaCode": 620602000000, + "name": "凉州区", + "parentCode": 620600000000, + "mergerName": "甘肃省-武威市-凉州区" + }, + { + "areaCode": 620621000000, + "name": "民勤县", + "parentCode": 620600000000, + "mergerName": "甘肃省-武威市-民勤县" + }, + { + "areaCode": 620622000000, + "name": "古浪县", + "parentCode": 620600000000, + "mergerName": "甘肃省-武威市-古浪县" + }, + { + "areaCode": 620623000000, + "name": "天祝藏族自治县", + "parentCode": 620600000000, + "mergerName": "甘肃省-武威市-天祝藏族自治县" + } + ], + "areaCode": 620600000000, + "name": "武威市", + "parentCode": 620000000000, + "mergerName": "甘肃省-武威市" + }, + { + "children": [ + { + "areaCode": 620701000000, + "name": "市辖区", + "parentCode": 620700000000, + "mergerName": "甘肃省-张掖市-市辖区" + }, + { + "areaCode": 620702000000, + "name": "甘州区", + "parentCode": 620700000000, + "mergerName": "甘肃省-张掖市-甘州区" + }, + { + "areaCode": 620721000000, + "name": "肃南裕固族自治县", + "parentCode": 620700000000, + "mergerName": "甘肃省-张掖市-肃南裕固族自治县" + }, + { + "areaCode": 620722000000, + "name": "民乐县", + "parentCode": 620700000000, + "mergerName": "甘肃省-张掖市-民乐县" + }, + { + "areaCode": 620723000000, + "name": "临泽县", + "parentCode": 620700000000, + "mergerName": "甘肃省-张掖市-临泽县" + }, + { + "areaCode": 620724000000, + "name": "高台县", + "parentCode": 620700000000, + "mergerName": "甘肃省-张掖市-高台县" + }, + { + "areaCode": 620725000000, + "name": "山丹县", + "parentCode": 620700000000, + "mergerName": "甘肃省-张掖市-山丹县" + } + ], + "areaCode": 620700000000, + "name": "张掖市", + "parentCode": 620000000000, + "mergerName": "甘肃省-张掖市" + }, + { + "children": [ + { + "areaCode": 620801000000, + "name": "市辖区", + "parentCode": 620800000000, + "mergerName": "甘肃省-平凉市-市辖区" + }, + { + "areaCode": 620802000000, + "name": "崆峒区", + "parentCode": 620800000000, + "mergerName": "甘肃省-平凉市-崆峒区" + }, + { + "areaCode": 620821000000, + "name": "泾川县", + "parentCode": 620800000000, + "mergerName": "甘肃省-平凉市-泾川县" + }, + { + "areaCode": 620822000000, + "name": "灵台县", + "parentCode": 620800000000, + "mergerName": "甘肃省-平凉市-灵台县" + }, + { + "areaCode": 620823000000, + "name": "崇信县", + "parentCode": 620800000000, + "mergerName": "甘肃省-平凉市-崇信县" + }, + { + "areaCode": 620825000000, + "name": "庄浪县", + "parentCode": 620800000000, + "mergerName": "甘肃省-平凉市-庄浪县" + }, + { + "areaCode": 620826000000, + "name": "静宁县", + "parentCode": 620800000000, + "mergerName": "甘肃省-平凉市-静宁县" + }, + { + "areaCode": 620881000000, + "name": "华亭市", + "parentCode": 620800000000, + "mergerName": "甘肃省-平凉市-华亭市" + } + ], + "areaCode": 620800000000, + "name": "平凉市", + "parentCode": 620000000000, + "mergerName": "甘肃省-平凉市" + }, + { + "children": [ + { + "areaCode": 620901000000, + "name": "市辖区", + "parentCode": 620900000000, + "mergerName": "甘肃省-酒泉市-市辖区" + }, + { + "areaCode": 620902000000, + "name": "肃州区", + "parentCode": 620900000000, + "mergerName": "甘肃省-酒泉市-肃州区" + }, + { + "areaCode": 620921000000, + "name": "金塔县", + "parentCode": 620900000000, + "mergerName": "甘肃省-酒泉市-金塔县" + }, + { + "areaCode": 620922000000, + "name": "瓜州县", + "parentCode": 620900000000, + "mergerName": "甘肃省-酒泉市-瓜州县" + }, + { + "areaCode": 620923000000, + "name": "肃北蒙古族自治县", + "parentCode": 620900000000, + "mergerName": "甘肃省-酒泉市-肃北蒙古族自治县" + }, + { + "areaCode": 620924000000, + "name": "阿克塞哈萨克族自治县", + "parentCode": 620900000000, + "mergerName": "甘肃省-酒泉市-阿克塞哈萨克族自治县" + }, + { + "areaCode": 620981000000, + "name": "玉门市", + "parentCode": 620900000000, + "mergerName": "甘肃省-酒泉市-玉门市" + }, + { + "areaCode": 620982000000, + "name": "敦煌市", + "parentCode": 620900000000, + "mergerName": "甘肃省-酒泉市-敦煌市" + } + ], + "areaCode": 620900000000, + "name": "酒泉市", + "parentCode": 620000000000, + "mergerName": "甘肃省-酒泉市" + }, + { + "children": [ + { + "areaCode": 621001000000, + "name": "市辖区", + "parentCode": 621000000000, + "mergerName": "甘肃省-庆阳市-市辖区" + }, + { + "areaCode": 621002000000, + "name": "西峰区", + "parentCode": 621000000000, + "mergerName": "甘肃省-庆阳市-西峰区" + }, + { + "areaCode": 621021000000, + "name": "庆城县", + "parentCode": 621000000000, + "mergerName": "甘肃省-庆阳市-庆城县" + }, + { "areaCode": 621022000000, "name": "环县", "parentCode": 621000000000, "mergerName": "甘肃省-庆阳市-环县" }, + { + "areaCode": 621023000000, + "name": "华池县", + "parentCode": 621000000000, + "mergerName": "甘肃省-庆阳市-华池县" + }, + { + "areaCode": 621024000000, + "name": "合水县", + "parentCode": 621000000000, + "mergerName": "甘肃省-庆阳市-合水县" + }, + { + "areaCode": 621025000000, + "name": "正宁县", + "parentCode": 621000000000, + "mergerName": "甘肃省-庆阳市-正宁县" + }, + { "areaCode": 621026000000, "name": "宁县", "parentCode": 621000000000, "mergerName": "甘肃省-庆阳市-宁县" }, + { + "areaCode": 621027000000, + "name": "镇原县", + "parentCode": 621000000000, + "mergerName": "甘肃省-庆阳市-镇原县" + } + ], + "areaCode": 621000000000, + "name": "庆阳市", + "parentCode": 620000000000, + "mergerName": "甘肃省-庆阳市" + }, + { + "children": [ + { + "areaCode": 621101000000, + "name": "市辖区", + "parentCode": 621100000000, + "mergerName": "甘肃省-定西市-市辖区" + }, + { + "areaCode": 621102000000, + "name": "安定区", + "parentCode": 621100000000, + "mergerName": "甘肃省-定西市-安定区" + }, + { + "areaCode": 621121000000, + "name": "通渭县", + "parentCode": 621100000000, + "mergerName": "甘肃省-定西市-通渭县" + }, + { + "areaCode": 621122000000, + "name": "陇西县", + "parentCode": 621100000000, + "mergerName": "甘肃省-定西市-陇西县" + }, + { + "areaCode": 621123000000, + "name": "渭源县", + "parentCode": 621100000000, + "mergerName": "甘肃省-定西市-渭源县" + }, + { + "areaCode": 621124000000, + "name": "临洮县", + "parentCode": 621100000000, + "mergerName": "甘肃省-定西市-临洮县" + }, + { "areaCode": 621125000000, "name": "漳县", "parentCode": 621100000000, "mergerName": "甘肃省-定西市-漳县" }, + { "areaCode": 621126000000, "name": "岷县", "parentCode": 621100000000, "mergerName": "甘肃省-定西市-岷县" } + ], + "areaCode": 621100000000, + "name": "定西市", + "parentCode": 620000000000, + "mergerName": "甘肃省-定西市" + }, + { + "children": [ + { + "areaCode": 621201000000, + "name": "市辖区", + "parentCode": 621200000000, + "mergerName": "甘肃省-陇南市-市辖区" + }, + { + "areaCode": 621202000000, + "name": "武都区", + "parentCode": 621200000000, + "mergerName": "甘肃省-陇南市-武都区" + }, + { "areaCode": 621221000000, "name": "成县", "parentCode": 621200000000, "mergerName": "甘肃省-陇南市-成县" }, + { "areaCode": 621222000000, "name": "文县", "parentCode": 621200000000, "mergerName": "甘肃省-陇南市-文县" }, + { + "areaCode": 621223000000, + "name": "宕昌县", + "parentCode": 621200000000, + "mergerName": "甘肃省-陇南市-宕昌县" + }, + { "areaCode": 621224000000, "name": "康县", "parentCode": 621200000000, "mergerName": "甘肃省-陇南市-康县" }, + { + "areaCode": 621225000000, + "name": "西和县", + "parentCode": 621200000000, + "mergerName": "甘肃省-陇南市-西和县" + }, + { "areaCode": 621226000000, "name": "礼县", "parentCode": 621200000000, "mergerName": "甘肃省-陇南市-礼县" }, + { "areaCode": 621227000000, "name": "徽县", "parentCode": 621200000000, "mergerName": "甘肃省-陇南市-徽县" }, + { + "areaCode": 621228000000, + "name": "两当县", + "parentCode": 621200000000, + "mergerName": "甘肃省-陇南市-两当县" + } + ], + "areaCode": 621200000000, + "name": "陇南市", + "parentCode": 620000000000, + "mergerName": "甘肃省-陇南市" + }, + { + "children": [ + { + "areaCode": 622901000000, + "name": "临夏市", + "parentCode": 622900000000, + "mergerName": "甘肃省-临夏回族自治州-临夏市" + }, + { + "areaCode": 622921000000, + "name": "临夏县", + "parentCode": 622900000000, + "mergerName": "甘肃省-临夏回族自治州-临夏县" + }, + { + "areaCode": 622922000000, + "name": "康乐县", + "parentCode": 622900000000, + "mergerName": "甘肃省-临夏回族自治州-康乐县" + }, + { + "areaCode": 622923000000, + "name": "永靖县", + "parentCode": 622900000000, + "mergerName": "甘肃省-临夏回族自治州-永靖县" + }, + { + "areaCode": 622924000000, + "name": "广河县", + "parentCode": 622900000000, + "mergerName": "甘肃省-临夏回族自治州-广河县" + }, + { + "areaCode": 622925000000, + "name": "和政县", + "parentCode": 622900000000, + "mergerName": "甘肃省-临夏回族自治州-和政县" + }, + { + "areaCode": 622926000000, + "name": "东乡族自治县", + "parentCode": 622900000000, + "mergerName": "甘肃省-临夏回族自治州-东乡族自治县" + }, + { + "areaCode": 622927000000, + "name": "积石山保安族东乡族撒拉族自治县", + "parentCode": 622900000000, + "mergerName": "甘肃省-临夏回族自治州-积石山保安族东乡族撒拉族自治县" + } + ], + "areaCode": 622900000000, + "name": "临夏回族自治州", + "parentCode": 620000000000, + "mergerName": "甘肃省-临夏回族自治州" + }, + { + "children": [ + { + "areaCode": 623001000000, + "name": "合作市", + "parentCode": 623000000000, + "mergerName": "甘肃省-甘南藏族自治州-合作市" + }, + { + "areaCode": 623021000000, + "name": "临潭县", + "parentCode": 623000000000, + "mergerName": "甘肃省-甘南藏族自治州-临潭县" + }, + { + "areaCode": 623022000000, + "name": "卓尼县", + "parentCode": 623000000000, + "mergerName": "甘肃省-甘南藏族自治州-卓尼县" + }, + { + "areaCode": 623023000000, + "name": "舟曲县", + "parentCode": 623000000000, + "mergerName": "甘肃省-甘南藏族自治州-舟曲县" + }, + { + "areaCode": 623024000000, + "name": "迭部县", + "parentCode": 623000000000, + "mergerName": "甘肃省-甘南藏族自治州-迭部县" + }, + { + "areaCode": 623025000000, + "name": "玛曲县", + "parentCode": 623000000000, + "mergerName": "甘肃省-甘南藏族自治州-玛曲县" + }, + { + "areaCode": 623026000000, + "name": "碌曲县", + "parentCode": 623000000000, + "mergerName": "甘肃省-甘南藏族自治州-碌曲县" + }, + { + "areaCode": 623027000000, + "name": "夏河县", + "parentCode": 623000000000, + "mergerName": "甘肃省-甘南藏族自治州-夏河县" + } + ], + "areaCode": 623000000000, + "name": "甘南藏族自治州", + "parentCode": 620000000000, + "mergerName": "甘肃省-甘南藏族自治州" + } + ], + "areaCode": 620000000000, + "name": "甘肃省", + "parentCode": 0, + "mergerName": "-甘肃省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 630101000000, + "name": "市辖区", + "parentCode": 630100000000, + "mergerName": "青海省-西宁市-市辖区" + }, + { + "areaCode": 630102000000, + "name": "城东区", + "parentCode": 630100000000, + "mergerName": "青海省-西宁市-城东区" + }, + { + "areaCode": 630103000000, + "name": "城中区", + "parentCode": 630100000000, + "mergerName": "青海省-西宁市-城中区" + }, + { + "areaCode": 630104000000, + "name": "城西区", + "parentCode": 630100000000, + "mergerName": "青海省-西宁市-城西区" + }, + { + "areaCode": 630105000000, + "name": "城北区", + "parentCode": 630100000000, + "mergerName": "青海省-西宁市-城北区" + }, + { + "areaCode": 630121000000, + "name": "大通回族土族自治县", + "parentCode": 630100000000, + "mergerName": "青海省-西宁市-大通回族土族自治县" + }, + { + "areaCode": 630122000000, + "name": "湟中县", + "parentCode": 630100000000, + "mergerName": "青海省-西宁市-湟中县" + }, + { + "areaCode": 630123000000, + "name": "湟源县", + "parentCode": 630100000000, + "mergerName": "青海省-西宁市-湟源县" + } + ], + "areaCode": 630100000000, + "name": "西宁市", + "parentCode": 630000000000, + "mergerName": "青海省-西宁市" + }, + { + "children": [ + { + "areaCode": 630202000000, + "name": "乐都区", + "parentCode": 630200000000, + "mergerName": "青海省-海东市-乐都区" + }, + { + "areaCode": 630203000000, + "name": "平安区", + "parentCode": 630200000000, + "mergerName": "青海省-海东市-平安区" + }, + { + "areaCode": 630222000000, + "name": "民和回族土族自治县", + "parentCode": 630200000000, + "mergerName": "青海省-海东市-民和回族土族自治县" + }, + { + "areaCode": 630223000000, + "name": "互助土族自治县", + "parentCode": 630200000000, + "mergerName": "青海省-海东市-互助土族自治县" + }, + { + "areaCode": 630224000000, + "name": "化隆回族自治县", + "parentCode": 630200000000, + "mergerName": "青海省-海东市-化隆回族自治县" + }, + { + "areaCode": 630225000000, + "name": "循化撒拉族自治县", + "parentCode": 630200000000, + "mergerName": "青海省-海东市-循化撒拉族自治县" + } + ], + "areaCode": 630200000000, + "name": "海东市", + "parentCode": 630000000000, + "mergerName": "青海省-海东市" + }, + { + "children": [ + { + "areaCode": 632221000000, + "name": "门源回族自治县", + "parentCode": 632200000000, + "mergerName": "青海省-海北藏族自治州-门源回族自治县" + }, + { + "areaCode": 632222000000, + "name": "祁连县", + "parentCode": 632200000000, + "mergerName": "青海省-海北藏族自治州-祁连县" + }, + { + "areaCode": 632223000000, + "name": "海晏县", + "parentCode": 632200000000, + "mergerName": "青海省-海北藏族自治州-海晏县" + }, + { + "areaCode": 632224000000, + "name": "刚察县", + "parentCode": 632200000000, + "mergerName": "青海省-海北藏族自治州-刚察县" + } + ], + "areaCode": 632200000000, + "name": "海北藏族自治州", + "parentCode": 630000000000, + "mergerName": "青海省-海北藏族自治州" + }, + { + "children": [ + { + "areaCode": 632321000000, + "name": "同仁县", + "parentCode": 632300000000, + "mergerName": "青海省-黄南藏族自治州-同仁县" + }, + { + "areaCode": 632322000000, + "name": "尖扎县", + "parentCode": 632300000000, + "mergerName": "青海省-黄南藏族自治州-尖扎县" + }, + { + "areaCode": 632323000000, + "name": "泽库县", + "parentCode": 632300000000, + "mergerName": "青海省-黄南藏族自治州-泽库县" + }, + { + "areaCode": 632324000000, + "name": "河南蒙古族自治县", + "parentCode": 632300000000, + "mergerName": "青海省-黄南藏族自治州-河南蒙古族自治县" + } + ], + "areaCode": 632300000000, + "name": "黄南藏族自治州", + "parentCode": 630000000000, + "mergerName": "青海省-黄南藏族自治州" + }, + { + "children": [ + { + "areaCode": 632521000000, + "name": "共和县", + "parentCode": 632500000000, + "mergerName": "青海省-海南藏族自治州-共和县" + }, + { + "areaCode": 632522000000, + "name": "同德县", + "parentCode": 632500000000, + "mergerName": "青海省-海南藏族自治州-同德县" + }, + { + "areaCode": 632523000000, + "name": "贵德县", + "parentCode": 632500000000, + "mergerName": "青海省-海南藏族自治州-贵德县" + }, + { + "areaCode": 632524000000, + "name": "兴海县", + "parentCode": 632500000000, + "mergerName": "青海省-海南藏族自治州-兴海县" + }, + { + "areaCode": 632525000000, + "name": "贵南县", + "parentCode": 632500000000, + "mergerName": "青海省-海南藏族自治州-贵南县" + } + ], + "areaCode": 632500000000, + "name": "海南藏族自治州", + "parentCode": 630000000000, + "mergerName": "青海省-海南藏族自治州" + }, + { + "children": [ + { + "areaCode": 632621000000, + "name": "玛沁县", + "parentCode": 632600000000, + "mergerName": "青海省-果洛藏族自治州-玛沁县" + }, + { + "areaCode": 632622000000, + "name": "班玛县", + "parentCode": 632600000000, + "mergerName": "青海省-果洛藏族自治州-班玛县" + }, + { + "areaCode": 632623000000, + "name": "甘德县", + "parentCode": 632600000000, + "mergerName": "青海省-果洛藏族自治州-甘德县" + }, + { + "areaCode": 632624000000, + "name": "达日县", + "parentCode": 632600000000, + "mergerName": "青海省-果洛藏族自治州-达日县" + }, + { + "areaCode": 632625000000, + "name": "久治县", + "parentCode": 632600000000, + "mergerName": "青海省-果洛藏族自治州-久治县" + }, + { + "areaCode": 632626000000, + "name": "玛多县", + "parentCode": 632600000000, + "mergerName": "青海省-果洛藏族自治州-玛多县" + } + ], + "areaCode": 632600000000, + "name": "果洛藏族自治州", + "parentCode": 630000000000, + "mergerName": "青海省-果洛藏族自治州" + }, + { + "children": [ + { + "areaCode": 632701000000, + "name": "玉树市", + "parentCode": 632700000000, + "mergerName": "青海省-玉树藏族自治州-玉树市" + }, + { + "areaCode": 632722000000, + "name": "杂多县", + "parentCode": 632700000000, + "mergerName": "青海省-玉树藏族自治州-杂多县" + }, + { + "areaCode": 632723000000, + "name": "称多县", + "parentCode": 632700000000, + "mergerName": "青海省-玉树藏族自治州-称多县" + }, + { + "areaCode": 632724000000, + "name": "治多县", + "parentCode": 632700000000, + "mergerName": "青海省-玉树藏族自治州-治多县" + }, + { + "areaCode": 632725000000, + "name": "囊谦县", + "parentCode": 632700000000, + "mergerName": "青海省-玉树藏族自治州-囊谦县" + }, + { + "areaCode": 632726000000, + "name": "曲麻莱县", + "parentCode": 632700000000, + "mergerName": "青海省-玉树藏族自治州-曲麻莱县" + } + ], + "areaCode": 632700000000, + "name": "玉树藏族自治州", + "parentCode": 630000000000, + "mergerName": "青海省-玉树藏族自治州" + }, + { + "children": [ + { + "areaCode": 632801000000, + "name": "格尔木市", + "parentCode": 632800000000, + "mergerName": "青海省-海西蒙古族藏族自治州-格尔木市" + }, + { + "areaCode": 632802000000, + "name": "德令哈市", + "parentCode": 632800000000, + "mergerName": "青海省-海西蒙古族藏族自治州-德令哈市" + }, + { + "areaCode": 632803000000, + "name": "茫崖市", + "parentCode": 632800000000, + "mergerName": "青海省-海西蒙古族藏族自治州-茫崖市" + }, + { + "areaCode": 632821000000, + "name": "乌兰县", + "parentCode": 632800000000, + "mergerName": "青海省-海西蒙古族藏族自治州-乌兰县" + }, + { + "areaCode": 632822000000, + "name": "都兰县", + "parentCode": 632800000000, + "mergerName": "青海省-海西蒙古族藏族自治州-都兰县" + }, + { + "areaCode": 632823000000, + "name": "天峻县", + "parentCode": 632800000000, + "mergerName": "青海省-海西蒙古族藏族自治州-天峻县" + }, + { + "areaCode": 632857000000, + "name": "大柴旦行政委员会", + "parentCode": 632800000000, + "mergerName": "青海省-海西蒙古族藏族自治州-大柴旦行政委员会" + } + ], + "areaCode": 632800000000, + "name": "海西蒙古族藏族自治州", + "parentCode": 630000000000, + "mergerName": "青海省-海西蒙古族藏族自治州" + } + ], + "areaCode": 630000000000, + "name": "青海省", + "parentCode": 0, + "mergerName": "-青海省" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 640101000000, + "name": "市辖区", + "parentCode": 640100000000, + "mergerName": "宁夏回族自治区-银川市-市辖区" + }, + { + "areaCode": 640104000000, + "name": "兴庆区", + "parentCode": 640100000000, + "mergerName": "宁夏回族自治区-银川市-兴庆区" + }, + { + "areaCode": 640105000000, + "name": "西夏区", + "parentCode": 640100000000, + "mergerName": "宁夏回族自治区-银川市-西夏区" + }, + { + "areaCode": 640106000000, + "name": "金凤区", + "parentCode": 640100000000, + "mergerName": "宁夏回族自治区-银川市-金凤区" + }, + { + "areaCode": 640121000000, + "name": "永宁县", + "parentCode": 640100000000, + "mergerName": "宁夏回族自治区-银川市-永宁县" + }, + { + "areaCode": 640122000000, + "name": "贺兰县", + "parentCode": 640100000000, + "mergerName": "宁夏回族自治区-银川市-贺兰县" + }, + { + "areaCode": 640181000000, + "name": "灵武市", + "parentCode": 640100000000, + "mergerName": "宁夏回族自治区-银川市-灵武市" + } + ], + "areaCode": 640100000000, + "name": "银川市", + "parentCode": 640000000000, + "mergerName": "宁夏回族自治区-银川市" + }, + { + "children": [ + { + "areaCode": 640201000000, + "name": "市辖区", + "parentCode": 640200000000, + "mergerName": "宁夏回族自治区-石嘴山市-市辖区" + }, + { + "areaCode": 640202000000, + "name": "大武口区", + "parentCode": 640200000000, + "mergerName": "宁夏回族自治区-石嘴山市-大武口区" + }, + { + "areaCode": 640205000000, + "name": "惠农区", + "parentCode": 640200000000, + "mergerName": "宁夏回族自治区-石嘴山市-惠农区" + }, + { + "areaCode": 640221000000, + "name": "平罗县", + "parentCode": 640200000000, + "mergerName": "宁夏回族自治区-石嘴山市-平罗县" + } + ], + "areaCode": 640200000000, + "name": "石嘴山市", + "parentCode": 640000000000, + "mergerName": "宁夏回族自治区-石嘴山市" + }, + { + "children": [ + { + "areaCode": 640301000000, + "name": "市辖区", + "parentCode": 640300000000, + "mergerName": "宁夏回族自治区-吴忠市-市辖区" + }, + { + "areaCode": 640302000000, + "name": "利通区", + "parentCode": 640300000000, + "mergerName": "宁夏回族自治区-吴忠市-利通区" + }, + { + "areaCode": 640303000000, + "name": "红寺堡区", + "parentCode": 640300000000, + "mergerName": "宁夏回族自治区-吴忠市-红寺堡区" + }, + { + "areaCode": 640323000000, + "name": "盐池县", + "parentCode": 640300000000, + "mergerName": "宁夏回族自治区-吴忠市-盐池县" + }, + { + "areaCode": 640324000000, + "name": "同心县", + "parentCode": 640300000000, + "mergerName": "宁夏回族自治区-吴忠市-同心县" + }, + { + "areaCode": 640381000000, + "name": "青铜峡市", + "parentCode": 640300000000, + "mergerName": "宁夏回族自治区-吴忠市-青铜峡市" + } + ], + "areaCode": 640300000000, + "name": "吴忠市", + "parentCode": 640000000000, + "mergerName": "宁夏回族自治区-吴忠市" + }, + { + "children": [ + { + "areaCode": 640401000000, + "name": "市辖区", + "parentCode": 640400000000, + "mergerName": "宁夏回族自治区-固原市-市辖区" + }, + { + "areaCode": 640402000000, + "name": "原州区", + "parentCode": 640400000000, + "mergerName": "宁夏回族自治区-固原市-原州区" + }, + { + "areaCode": 640422000000, + "name": "西吉县", + "parentCode": 640400000000, + "mergerName": "宁夏回族自治区-固原市-西吉县" + }, + { + "areaCode": 640423000000, + "name": "隆德县", + "parentCode": 640400000000, + "mergerName": "宁夏回族自治区-固原市-隆德县" + }, + { + "areaCode": 640424000000, + "name": "泾源县", + "parentCode": 640400000000, + "mergerName": "宁夏回族自治区-固原市-泾源县" + }, + { + "areaCode": 640425000000, + "name": "彭阳县", + "parentCode": 640400000000, + "mergerName": "宁夏回族自治区-固原市-彭阳县" + } + ], + "areaCode": 640400000000, + "name": "固原市", + "parentCode": 640000000000, + "mergerName": "宁夏回族自治区-固原市" + }, + { + "children": [ + { + "areaCode": 640501000000, + "name": "市辖区", + "parentCode": 640500000000, + "mergerName": "宁夏回族自治区-中卫市-市辖区" + }, + { + "areaCode": 640502000000, + "name": "沙坡头区", + "parentCode": 640500000000, + "mergerName": "宁夏回族自治区-中卫市-沙坡头区" + }, + { + "areaCode": 640521000000, + "name": "中宁县", + "parentCode": 640500000000, + "mergerName": "宁夏回族自治区-中卫市-中宁县" + }, + { + "areaCode": 640522000000, + "name": "海原县", + "parentCode": 640500000000, + "mergerName": "宁夏回族自治区-中卫市-海原县" + } + ], + "areaCode": 640500000000, + "name": "中卫市", + "parentCode": 640000000000, + "mergerName": "宁夏回族自治区-中卫市" + } + ], + "areaCode": 640000000000, + "name": "宁夏回族自治区", + "parentCode": 0, + "mergerName": "-宁夏回族自治区" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 650101000000, + "name": "市辖区", + "parentCode": 650100000000, + "mergerName": "新疆维吾尔自治区-乌鲁木齐市-市辖区" + }, + { + "areaCode": 650102000000, + "name": "天山区", + "parentCode": 650100000000, + "mergerName": "新疆维吾尔自治区-乌鲁木齐市-天山区" + }, + { + "areaCode": 650103000000, + "name": "沙依巴克区", + "parentCode": 650100000000, + "mergerName": "新疆维吾尔自治区-乌鲁木齐市-沙依巴克区" + }, + { + "areaCode": 650104000000, + "name": "新市区", + "parentCode": 650100000000, + "mergerName": "新疆维吾尔自治区-乌鲁木齐市-新市区" + }, + { + "areaCode": 650105000000, + "name": "水磨沟区", + "parentCode": 650100000000, + "mergerName": "新疆维吾尔自治区-乌鲁木齐市-水磨沟区" + }, + { + "areaCode": 650106000000, + "name": "头屯河区", + "parentCode": 650100000000, + "mergerName": "新疆维吾尔自治区-乌鲁木齐市-头屯河区" + }, + { + "areaCode": 650107000000, + "name": "达坂城区", + "parentCode": 650100000000, + "mergerName": "新疆维吾尔自治区-乌鲁木齐市-达坂城区" + }, + { + "areaCode": 650109000000, + "name": "米东区", + "parentCode": 650100000000, + "mergerName": "新疆维吾尔自治区-乌鲁木齐市-米东区" + }, + { + "areaCode": 650121000000, + "name": "乌鲁木齐县", + "parentCode": 650100000000, + "mergerName": "新疆维吾尔自治区-乌鲁木齐市-乌鲁木齐县" + }, + { + "areaCode": 650171000000, + "name": "乌鲁木齐经济技术开发区", + "parentCode": 650100000000, + "mergerName": "新疆维吾尔自治区-乌鲁木齐市-乌鲁木齐经济技术开发区" + }, + { + "areaCode": 650172000000, + "name": "乌鲁木齐高新技术产业开发区", + "parentCode": 650100000000, + "mergerName": "新疆维吾尔自治区-乌鲁木齐市-乌鲁木齐高新技术产业开发区" + } + ], + "areaCode": 650100000000, + "name": "乌鲁木齐市", + "parentCode": 650000000000, + "mergerName": "新疆维吾尔自治区-乌鲁木齐市" + }, + { + "children": [ + { + "areaCode": 650201000000, + "name": "市辖区", + "parentCode": 650200000000, + "mergerName": "新疆维吾尔自治区-克拉玛依市-市辖区" + }, + { + "areaCode": 650202000000, + "name": "独山子区", + "parentCode": 650200000000, + "mergerName": "新疆维吾尔自治区-克拉玛依市-独山子区" + }, + { + "areaCode": 650203000000, + "name": "克拉玛依区", + "parentCode": 650200000000, + "mergerName": "新疆维吾尔自治区-克拉玛依市-克拉玛依区" + }, + { + "areaCode": 650204000000, + "name": "白碱滩区", + "parentCode": 650200000000, + "mergerName": "新疆维吾尔自治区-克拉玛依市-白碱滩区" + }, + { + "areaCode": 650205000000, + "name": "乌尔禾区", + "parentCode": 650200000000, + "mergerName": "新疆维吾尔自治区-克拉玛依市-乌尔禾区" + } + ], + "areaCode": 650200000000, + "name": "克拉玛依市", + "parentCode": 650000000000, + "mergerName": "新疆维吾尔自治区-克拉玛依市" + }, + { + "children": [ + { + "areaCode": 650402000000, + "name": "高昌区", + "parentCode": 650400000000, + "mergerName": "新疆维吾尔自治区-吐鲁番市-高昌区" + }, + { + "areaCode": 650421000000, + "name": "鄯善县", + "parentCode": 650400000000, + "mergerName": "新疆维吾尔自治区-吐鲁番市-鄯善县" + }, + { + "areaCode": 650422000000, + "name": "托克逊县", + "parentCode": 650400000000, + "mergerName": "新疆维吾尔自治区-吐鲁番市-托克逊县" + } + ], + "areaCode": 650400000000, + "name": "吐鲁番市", + "parentCode": 650000000000, + "mergerName": "新疆维吾尔自治区-吐鲁番市" + }, + { + "children": [ + { + "areaCode": 650502000000, + "name": "伊州区", + "parentCode": 650500000000, + "mergerName": "新疆维吾尔自治区-哈密市-伊州区" + }, + { + "areaCode": 650521000000, + "name": "巴里坤哈萨克自治县", + "parentCode": 650500000000, + "mergerName": "新疆维吾尔自治区-哈密市-巴里坤哈萨克自治县" + }, + { + "areaCode": 650522000000, + "name": "伊吾县", + "parentCode": 650500000000, + "mergerName": "新疆维吾尔自治区-哈密市-伊吾县" + } + ], + "areaCode": 650500000000, + "name": "哈密市", + "parentCode": 650000000000, + "mergerName": "新疆维吾尔自治区-哈密市" + }, + { + "children": [ + { + "areaCode": 652301000000, + "name": "昌吉市", + "parentCode": 652300000000, + "mergerName": "新疆维吾尔自治区-昌吉回族自治州-昌吉市" + }, + { + "areaCode": 652302000000, + "name": "阜康市", + "parentCode": 652300000000, + "mergerName": "新疆维吾尔自治区-昌吉回族自治州-阜康市" + }, + { + "areaCode": 652323000000, + "name": "呼图壁县", + "parentCode": 652300000000, + "mergerName": "新疆维吾尔自治区-昌吉回族自治州-呼图壁县" + }, + { + "areaCode": 652324000000, + "name": "玛纳斯县", + "parentCode": 652300000000, + "mergerName": "新疆维吾尔自治区-昌吉回族自治州-玛纳斯县" + }, + { + "areaCode": 652325000000, + "name": "奇台县", + "parentCode": 652300000000, + "mergerName": "新疆维吾尔自治区-昌吉回族自治州-奇台县" + }, + { + "areaCode": 652327000000, + "name": "吉木萨尔县", + "parentCode": 652300000000, + "mergerName": "新疆维吾尔自治区-昌吉回族自治州-吉木萨尔县" + }, + { + "areaCode": 652328000000, + "name": "木垒哈萨克自治县", + "parentCode": 652300000000, + "mergerName": "新疆维吾尔自治区-昌吉回族自治州-木垒哈萨克自治县" + } + ], + "areaCode": 652300000000, + "name": "昌吉回族自治州", + "parentCode": 650000000000, + "mergerName": "新疆维吾尔自治区-昌吉回族自治州" + }, + { + "children": [ + { + "areaCode": 652701000000, + "name": "博乐市", + "parentCode": 652700000000, + "mergerName": "新疆维吾尔自治区-博尔塔拉蒙古自治州-博乐市" + }, + { + "areaCode": 652702000000, + "name": "阿拉山口市", + "parentCode": 652700000000, + "mergerName": "新疆维吾尔自治区-博尔塔拉蒙古自治州-阿拉山口市" + }, + { + "areaCode": 652722000000, + "name": "精河县", + "parentCode": 652700000000, + "mergerName": "新疆维吾尔自治区-博尔塔拉蒙古自治州-精河县" + }, + { + "areaCode": 652723000000, + "name": "温泉县", + "parentCode": 652700000000, + "mergerName": "新疆维吾尔自治区-博尔塔拉蒙古自治州-温泉县" + } + ], + "areaCode": 652700000000, + "name": "博尔塔拉蒙古自治州", + "parentCode": 650000000000, + "mergerName": "新疆维吾尔自治区-博尔塔拉蒙古自治州" + }, + { + "children": [ + { + "areaCode": 652801000000, + "name": "库尔勒市", + "parentCode": 652800000000, + "mergerName": "新疆维吾尔自治区-巴音郭楞蒙古自治州-库尔勒市" + }, + { + "areaCode": 652822000000, + "name": "轮台县", + "parentCode": 652800000000, + "mergerName": "新疆维吾尔自治区-巴音郭楞蒙古自治州-轮台县" + }, + { + "areaCode": 652823000000, + "name": "尉犁县", + "parentCode": 652800000000, + "mergerName": "新疆维吾尔自治区-巴音郭楞蒙古自治州-尉犁县" + }, + { + "areaCode": 652824000000, + "name": "若羌县", + "parentCode": 652800000000, + "mergerName": "新疆维吾尔自治区-巴音郭楞蒙古自治州-若羌县" + }, + { + "areaCode": 652825000000, + "name": "且末县", + "parentCode": 652800000000, + "mergerName": "新疆维吾尔自治区-巴音郭楞蒙古自治州-且末县" + }, + { + "areaCode": 652826000000, + "name": "焉耆回族自治县", + "parentCode": 652800000000, + "mergerName": "新疆维吾尔自治区-巴音郭楞蒙古自治州-焉耆回族自治县" + }, + { + "areaCode": 652827000000, + "name": "和静县", + "parentCode": 652800000000, + "mergerName": "新疆维吾尔自治区-巴音郭楞蒙古自治州-和静县" + }, + { + "areaCode": 652828000000, + "name": "和硕县", + "parentCode": 652800000000, + "mergerName": "新疆维吾尔自治区-巴音郭楞蒙古自治州-和硕县" + }, + { + "areaCode": 652829000000, + "name": "博湖县", + "parentCode": 652800000000, + "mergerName": "新疆维吾尔自治区-巴音郭楞蒙古自治州-博湖县" + }, + { + "areaCode": 652871000000, + "name": "库尔勒经济技术开发区", + "parentCode": 652800000000, + "mergerName": "新疆维吾尔自治区-巴音郭楞蒙古自治州-库尔勒经济技术开发区" + } + ], + "areaCode": 652800000000, + "name": "巴音郭楞蒙古自治州", + "parentCode": 650000000000, + "mergerName": "新疆维吾尔自治区-巴音郭楞蒙古自治州" + }, + { + "children": [ + { + "areaCode": 652901000000, + "name": "阿克苏市", + "parentCode": 652900000000, + "mergerName": "新疆维吾尔自治区-阿克苏地区-阿克苏市" + }, + { + "areaCode": 652922000000, + "name": "温宿县", + "parentCode": 652900000000, + "mergerName": "新疆维吾尔自治区-阿克苏地区-温宿县" + }, + { + "areaCode": 652923000000, + "name": "库车县", + "parentCode": 652900000000, + "mergerName": "新疆维吾尔自治区-阿克苏地区-库车县" + }, + { + "areaCode": 652924000000, + "name": "沙雅县", + "parentCode": 652900000000, + "mergerName": "新疆维吾尔自治区-阿克苏地区-沙雅县" + }, + { + "areaCode": 652925000000, + "name": "新和县", + "parentCode": 652900000000, + "mergerName": "新疆维吾尔自治区-阿克苏地区-新和县" + }, + { + "areaCode": 652926000000, + "name": "拜城县", + "parentCode": 652900000000, + "mergerName": "新疆维吾尔自治区-阿克苏地区-拜城县" + }, + { + "areaCode": 652927000000, + "name": "乌什县", + "parentCode": 652900000000, + "mergerName": "新疆维吾尔自治区-阿克苏地区-乌什县" + }, + { + "areaCode": 652928000000, + "name": "阿瓦提县", + "parentCode": 652900000000, + "mergerName": "新疆维吾尔自治区-阿克苏地区-阿瓦提县" + }, + { + "areaCode": 652929000000, + "name": "柯坪县", + "parentCode": 652900000000, + "mergerName": "新疆维吾尔自治区-阿克苏地区-柯坪县" + } + ], + "areaCode": 652900000000, + "name": "阿克苏地区", + "parentCode": 650000000000, + "mergerName": "新疆维吾尔自治区-阿克苏地区" + }, + { + "children": [ + { + "areaCode": 653001000000, + "name": "阿图什市", + "parentCode": 653000000000, + "mergerName": "新疆维吾尔自治区-克孜勒苏柯尔克孜自治州-阿图什市" + }, + { + "areaCode": 653022000000, + "name": "阿克陶县", + "parentCode": 653000000000, + "mergerName": "新疆维吾尔自治区-克孜勒苏柯尔克孜自治州-阿克陶县" + }, + { + "areaCode": 653023000000, + "name": "阿合奇县", + "parentCode": 653000000000, + "mergerName": "新疆维吾尔自治区-克孜勒苏柯尔克孜自治州-阿合奇县" + }, + { + "areaCode": 653024000000, + "name": "乌恰县", + "parentCode": 653000000000, + "mergerName": "新疆维吾尔自治区-克孜勒苏柯尔克孜自治州-乌恰县" + } + ], + "areaCode": 653000000000, + "name": "克孜勒苏柯尔克孜自治州", + "parentCode": 650000000000, + "mergerName": "新疆维吾尔自治区-克孜勒苏柯尔克孜自治州" + }, + { + "children": [ + { + "areaCode": 653101000000, + "name": "喀什市", + "parentCode": 653100000000, + "mergerName": "新疆维吾尔自治区-喀什地区-喀什市" + }, + { + "areaCode": 653121000000, + "name": "疏附县", + "parentCode": 653100000000, + "mergerName": "新疆维吾尔自治区-喀什地区-疏附县" + }, + { + "areaCode": 653122000000, + "name": "疏勒县", + "parentCode": 653100000000, + "mergerName": "新疆维吾尔自治区-喀什地区-疏勒县" + }, + { + "areaCode": 653123000000, + "name": "英吉沙县", + "parentCode": 653100000000, + "mergerName": "新疆维吾尔自治区-喀什地区-英吉沙县" + }, + { + "areaCode": 653124000000, + "name": "泽普县", + "parentCode": 653100000000, + "mergerName": "新疆维吾尔自治区-喀什地区-泽普县" + }, + { + "areaCode": 653125000000, + "name": "莎车县", + "parentCode": 653100000000, + "mergerName": "新疆维吾尔自治区-喀什地区-莎车县" + }, + { + "areaCode": 653126000000, + "name": "叶城县", + "parentCode": 653100000000, + "mergerName": "新疆维吾尔自治区-喀什地区-叶城县" + }, + { + "areaCode": 653127000000, + "name": "麦盖提县", + "parentCode": 653100000000, + "mergerName": "新疆维吾尔自治区-喀什地区-麦盖提县" + }, + { + "areaCode": 653128000000, + "name": "岳普湖县", + "parentCode": 653100000000, + "mergerName": "新疆维吾尔自治区-喀什地区-岳普湖县" + }, + { + "areaCode": 653129000000, + "name": "伽师县", + "parentCode": 653100000000, + "mergerName": "新疆维吾尔自治区-喀什地区-伽师县" + }, + { + "areaCode": 653130000000, + "name": "巴楚县", + "parentCode": 653100000000, + "mergerName": "新疆维吾尔自治区-喀什地区-巴楚县" + }, + { + "areaCode": 653131000000, + "name": "塔什库尔干塔吉克自治县", + "parentCode": 653100000000, + "mergerName": "新疆维吾尔自治区-喀什地区-塔什库尔干塔吉克自治县" + } + ], + "areaCode": 653100000000, + "name": "喀什地区", + "parentCode": 650000000000, + "mergerName": "新疆维吾尔自治区-喀什地区" + }, + { + "children": [ + { + "areaCode": 653201000000, + "name": "和田市", + "parentCode": 653200000000, + "mergerName": "新疆维吾尔自治区-和田地区-和田市" + }, + { + "areaCode": 653221000000, + "name": "和田县", + "parentCode": 653200000000, + "mergerName": "新疆维吾尔自治区-和田地区-和田县" + }, + { + "areaCode": 653222000000, + "name": "墨玉县", + "parentCode": 653200000000, + "mergerName": "新疆维吾尔自治区-和田地区-墨玉县" + }, + { + "areaCode": 653223000000, + "name": "皮山县", + "parentCode": 653200000000, + "mergerName": "新疆维吾尔自治区-和田地区-皮山县" + }, + { + "areaCode": 653224000000, + "name": "洛浦县", + "parentCode": 653200000000, + "mergerName": "新疆维吾尔自治区-和田地区-洛浦县" + }, + { + "areaCode": 653225000000, + "name": "策勒县", + "parentCode": 653200000000, + "mergerName": "新疆维吾尔自治区-和田地区-策勒县" + }, + { + "areaCode": 653226000000, + "name": "于田县", + "parentCode": 653200000000, + "mergerName": "新疆维吾尔自治区-和田地区-于田县" + }, + { + "areaCode": 653227000000, + "name": "民丰县", + "parentCode": 653200000000, + "mergerName": "新疆维吾尔自治区-和田地区-民丰县" + } + ], + "areaCode": 653200000000, + "name": "和田地区", + "parentCode": 650000000000, + "mergerName": "新疆维吾尔自治区-和田地区" + }, + { + "children": [ + { + "areaCode": 654002000000, + "name": "伊宁市", + "parentCode": 654000000000, + "mergerName": "新疆维吾尔自治区-伊犁哈萨克自治州-伊宁市" + }, + { + "areaCode": 654003000000, + "name": "奎屯市", + "parentCode": 654000000000, + "mergerName": "新疆维吾尔自治区-伊犁哈萨克自治州-奎屯市" + }, + { + "areaCode": 654004000000, + "name": "霍尔果斯市", + "parentCode": 654000000000, + "mergerName": "新疆维吾尔自治区-伊犁哈萨克自治州-霍尔果斯市" + }, + { + "areaCode": 654021000000, + "name": "伊宁县", + "parentCode": 654000000000, + "mergerName": "新疆维吾尔自治区-伊犁哈萨克自治州-伊宁县" + }, + { + "areaCode": 654022000000, + "name": "察布查尔锡伯自治县", + "parentCode": 654000000000, + "mergerName": "新疆维吾尔自治区-伊犁哈萨克自治州-察布查尔锡伯自治县" + }, + { + "areaCode": 654023000000, + "name": "霍城县", + "parentCode": 654000000000, + "mergerName": "新疆维吾尔自治区-伊犁哈萨克自治州-霍城县" + }, + { + "areaCode": 654024000000, + "name": "巩留县", + "parentCode": 654000000000, + "mergerName": "新疆维吾尔自治区-伊犁哈萨克自治州-巩留县" + }, + { + "areaCode": 654025000000, + "name": "新源县", + "parentCode": 654000000000, + "mergerName": "新疆维吾尔自治区-伊犁哈萨克自治州-新源县" + }, + { + "areaCode": 654026000000, + "name": "昭苏县", + "parentCode": 654000000000, + "mergerName": "新疆维吾尔自治区-伊犁哈萨克自治州-昭苏县" + }, + { + "areaCode": 654027000000, + "name": "特克斯县", + "parentCode": 654000000000, + "mergerName": "新疆维吾尔自治区-伊犁哈萨克自治州-特克斯县" + }, + { + "areaCode": 654028000000, + "name": "尼勒克县", + "parentCode": 654000000000, + "mergerName": "新疆维吾尔自治区-伊犁哈萨克自治州-尼勒克县" + } + ], + "areaCode": 654000000000, + "name": "伊犁哈萨克自治州", + "parentCode": 650000000000, + "mergerName": "新疆维吾尔自治区-伊犁哈萨克自治州" + }, + { + "children": [ + { + "areaCode": 654201000000, + "name": "塔城市", + "parentCode": 654200000000, + "mergerName": "新疆维吾尔自治区-塔城地区-塔城市" + }, + { + "areaCode": 654202000000, + "name": "乌苏市", + "parentCode": 654200000000, + "mergerName": "新疆维吾尔自治区-塔城地区-乌苏市" + }, + { + "areaCode": 654221000000, + "name": "额敏县", + "parentCode": 654200000000, + "mergerName": "新疆维吾尔自治区-塔城地区-额敏县" + }, + { + "areaCode": 654223000000, + "name": "沙湾县", + "parentCode": 654200000000, + "mergerName": "新疆维吾尔自治区-塔城地区-沙湾县" + }, + { + "areaCode": 654224000000, + "name": "托里县", + "parentCode": 654200000000, + "mergerName": "新疆维吾尔自治区-塔城地区-托里县" + }, + { + "areaCode": 654225000000, + "name": "裕民县", + "parentCode": 654200000000, + "mergerName": "新疆维吾尔自治区-塔城地区-裕民县" + }, + { + "areaCode": 654226000000, + "name": "和布克赛尔蒙古自治县", + "parentCode": 654200000000, + "mergerName": "新疆维吾尔自治区-塔城地区-和布克赛尔蒙古自治县" + } + ], + "areaCode": 654200000000, + "name": "塔城地区", + "parentCode": 650000000000, + "mergerName": "新疆维吾尔自治区-塔城地区" + }, + { + "children": [ + { + "areaCode": 654301000000, + "name": "阿勒泰市", + "parentCode": 654300000000, + "mergerName": "新疆维吾尔自治区-阿勒泰地区-阿勒泰市" + }, + { + "areaCode": 654321000000, + "name": "布尔津县", + "parentCode": 654300000000, + "mergerName": "新疆维吾尔自治区-阿勒泰地区-布尔津县" + }, + { + "areaCode": 654322000000, + "name": "富蕴县", + "parentCode": 654300000000, + "mergerName": "新疆维吾尔自治区-阿勒泰地区-富蕴县" + }, + { + "areaCode": 654323000000, + "name": "福海县", + "parentCode": 654300000000, + "mergerName": "新疆维吾尔自治区-阿勒泰地区-福海县" + }, + { + "areaCode": 654324000000, + "name": "哈巴河县", + "parentCode": 654300000000, + "mergerName": "新疆维吾尔自治区-阿勒泰地区-哈巴河县" + }, + { + "areaCode": 654325000000, + "name": "青河县", + "parentCode": 654300000000, + "mergerName": "新疆维吾尔自治区-阿勒泰地区-青河县" + }, + { + "areaCode": 654326000000, + "name": "吉木乃县", + "parentCode": 654300000000, + "mergerName": "新疆维吾尔自治区-阿勒泰地区-吉木乃县" + } + ], + "areaCode": 654300000000, + "name": "阿勒泰地区", + "parentCode": 650000000000, + "mergerName": "新疆维吾尔自治区-阿勒泰地区" + }, + { + "children": [ + { + "areaCode": 659001000000, + "name": "石河子市", + "parentCode": 659000000000, + "mergerName": "新疆维吾尔自治区-直辖县-石河子市" + }, + { + "areaCode": 659002000000, + "name": "阿拉尔市", + "parentCode": 659000000000, + "mergerName": "新疆维吾尔自治区-直辖县-阿拉尔市" + }, + { + "areaCode": 659003000000, + "name": "图木舒克市", + "parentCode": 659000000000, + "mergerName": "新疆维吾尔自治区-直辖县-图木舒克市" + }, + { + "areaCode": 659004000000, + "name": "五家渠市", + "parentCode": 659000000000, + "mergerName": "新疆维吾尔自治区-直辖县-五家渠市" + }, + { + "areaCode": 659006000000, + "name": "铁门关市", + "parentCode": 659000000000, + "mergerName": "新疆维吾尔自治区-直辖县-铁门关市" + } + ], + "areaCode": 659000000000, + "name": "直辖县", + "parentCode": 650000000000, + "mergerName": "新疆维吾尔自治区-直辖县" + } + ], + "areaCode": 650000000000, + "name": "新疆维吾尔自治区", + "parentCode": 0, + "mergerName": "-新疆维吾尔自治区" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 7010237142817, + "name": "东区", + "parentCode": 7011559760266, + "mergerName": "香港特别行政区-香港岛-东区" + }, + { + "areaCode": 7010849350906, + "name": "中西区", + "parentCode": 7011559760266, + "mergerName": "香港特别行政区-香港岛-中西区" + }, + { + "areaCode": 7011058871125, + "name": "湾仔区", + "parentCode": 7011559760266, + "mergerName": "香港特别行政区-香港岛-湾仔区" + }, + { + "areaCode": 7011454515153, + "name": "南区", + "parentCode": 7011559760266, + "mergerName": "香港特别行政区-香港岛-南区" + } + ], + "areaCode": 7011559760266, + "name": "香港岛", + "parentCode": 7013135772653, + "mergerName": "香港特别行政区-香港岛" + }, + { + "children": [ + { + "areaCode": 7011617194943, + "name": "九龙城区", + "parentCode": 7012837441705, + "mergerName": "香港特别行政区-九龙-九龙城区" + }, + { + "areaCode": 7011787956502, + "name": "观塘区", + "parentCode": 7012837441705, + "mergerName": "香港特别行政区-九龙-观塘区" + }, + { + "areaCode": 7011953597377, + "name": "深水埗区", + "parentCode": 7012837441705, + "mergerName": "香港特别行政区-九龙-深水埗区" + }, + { + "areaCode": 7013104193629, + "name": "油尖旺区", + "parentCode": 7012837441705, + "mergerName": "香港特别行政区-九龙-油尖旺区" + }, + { + "areaCode": 7013654523362, + "name": "黄大仙区", + "parentCode": 7012837441705, + "mergerName": "香港特别行政区-九龙-黄大仙区" + } + ], + "areaCode": 7012837441705, + "name": "九龙", + "parentCode": 7013135772653, + "mergerName": "香港特别行政区-九龙" + }, + { + "children": [ + { + "areaCode": 7010210010697, + "name": "沙田区", + "parentCode": 7013591118785, + "mergerName": "香港特别行政区-新界-沙田区" + }, + { + "areaCode": 7010751011120, + "name": "荃湾区", + "parentCode": 7013591118785, + "mergerName": "香港特别行政区-新界-荃湾区" + }, + { + "areaCode": 7011072191825, + "name": "离岛区", + "parentCode": 7013591118785, + "mergerName": "香港特别行政区-新界-离岛区" + }, + { + "areaCode": 7011394999554, + "name": "大埔区", + "parentCode": 7013591118785, + "mergerName": "香港特别行政区-新界-大埔区" + }, + { + "areaCode": 7012609184078, + "name": "葵青区", + "parentCode": 7013591118785, + "mergerName": "香港特别行政区-新界-葵青区" + }, + { + "areaCode": 7013369943437, + "name": "西贡区", + "parentCode": 7013591118785, + "mergerName": "香港特别行政区-新界-西贡区" + }, + { + "areaCode": 7013594074738, + "name": "元朗区", + "parentCode": 7013591118785, + "mergerName": "香港特别行政区-新界-元朗区" + }, + { + "areaCode": 7013729602460, + "name": "屯门区", + "parentCode": 7013591118785, + "mergerName": "香港特别行政区-新界-屯门区" + }, + { + "areaCode": 7014215533540, + "name": "北区", + "parentCode": 7013591118785, + "mergerName": "香港特别行政区-新界-北区" + } + ], + "areaCode": 7013591118785, + "name": "新界", + "parentCode": 7013135772653, + "mergerName": "香港特别行政区-新界" + } + ], + "areaCode": 7013135772653, + "name": "香港特别行政区", + "parentCode": 0, + "mergerName": "-香港特别行政区" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 7111710931118, + "name": "嘉模堂区", + "parentCode": 7110196278099, + "mergerName": "澳门特别行政区-氹仔岛-嘉模堂区" + } + ], + "areaCode": 7110196278099, + "name": "氹仔岛", + "parentCode": 7112407077174, + "mergerName": "澳门特别行政区-氹仔岛" + }, + { + "children": [ + { + "areaCode": 7111283429206, + "name": "望德堂区", + "parentCode": 7111217997835, + "mergerName": "澳门特别行政区-澳门半岛-望德堂区" + }, + { + "areaCode": 7111910163773, + "name": "花地玛堂区", + "parentCode": 7111217997835, + "mergerName": "澳门特别行政区-澳门半岛-花地玛堂区" + }, + { + "areaCode": 7112261828673, + "name": "风顺堂区", + "parentCode": 7111217997835, + "mergerName": "澳门特别行政区-澳门半岛-风顺堂区" + }, + { + "areaCode": 7112597413120, + "name": "大堂区", + "parentCode": 7111217997835, + "mergerName": "澳门特别行政区-澳门半岛-大堂区" + }, + { + "areaCode": 7113546008961, + "name": "圣安多尼堂区", + "parentCode": 7111217997835, + "mergerName": "澳门特别行政区-澳门半岛-圣安多尼堂区" + } + ], + "areaCode": 7111217997835, + "name": "澳门半岛", + "parentCode": 7112407077174, + "mergerName": "澳门特别行政区-澳门半岛" + }, + { + "children": [ + { + "areaCode": 7113441486846, + "name": "圣方济各堂区", + "parentCode": 7113878119597, + "mergerName": "澳门特别行政区-路环岛-圣方济各堂区" + } + ], + "areaCode": 7113878119597, + "name": "路环岛", + "parentCode": 7112407077174, + "mergerName": "澳门特别行政区-路环岛" + } + ], + "areaCode": 7112407077174, + "name": "澳门特别行政区", + "parentCode": 0, + "mergerName": "-澳门特别行政区" + }, + { + "children": [ + { + "children": [ + { + "areaCode": 7210278918396, + "name": "公馆乡", + "parentCode": 7210006260735, + "mergerName": "台湾省-苗栗县-公馆乡" + }, + { + "areaCode": 7210496316451, + "name": "竹南镇", + "parentCode": 7210006260735, + "mergerName": "台湾省-苗栗县-竹南镇" + }, + { + "areaCode": 7210573241516, + "name": "泰安乡", + "parentCode": 7210006260735, + "mergerName": "台湾省-苗栗县-泰安乡" + }, + { + "areaCode": 7210599839409, + "name": "三湾乡", + "parentCode": 7210006260735, + "mergerName": "台湾省-苗栗县-三湾乡" + }, + { + "areaCode": 7210850522682, + "name": "苗栗市", + "parentCode": 7210006260735, + "mergerName": "台湾省-苗栗县-苗栗市" + }, + { + "areaCode": 7210930268412, + "name": "苑里镇", + "parentCode": 7210006260735, + "mergerName": "台湾省-苗栗县-苑里镇" + }, + { + "areaCode": 7211067966049, + "name": "狮潭乡", + "parentCode": 7210006260735, + "mergerName": "台湾省-苗栗县-狮潭乡" + }, + { + "areaCode": 7211251395217, + "name": "通霄镇", + "parentCode": 7210006260735, + "mergerName": "台湾省-苗栗县-通霄镇" + }, + { + "areaCode": 7211326135667, + "name": "铜锣乡", + "parentCode": 7210006260735, + "mergerName": "台湾省-苗栗县-铜锣乡" + }, + { + "areaCode": 7211643313346, + "name": "大湖乡", + "parentCode": 7210006260735, + "mergerName": "台湾省-苗栗县-大湖乡" + }, + { + "areaCode": 7211741089814, + "name": "西湖乡", + "parentCode": 7210006260735, + "mergerName": "台湾省-苗栗县-西湖乡" + }, + { + "areaCode": 7212567153277, + "name": "卓兰镇", + "parentCode": 7210006260735, + "mergerName": "台湾省-苗栗县-卓兰镇" + }, + { + "areaCode": 7212661147856, + "name": "南庄乡", + "parentCode": 7210006260735, + "mergerName": "台湾省-苗栗县-南庄乡" + }, + { + "areaCode": 7213090723079, + "name": "头屋乡", + "parentCode": 7210006260735, + "mergerName": "台湾省-苗栗县-头屋乡" + }, + { + "areaCode": 7213307677160, + "name": "后龙镇", + "parentCode": 7210006260735, + "mergerName": "台湾省-苗栗县-后龙镇" + }, + { + "areaCode": 7213421299737, + "name": "三义乡", + "parentCode": 7210006260735, + "mergerName": "台湾省-苗栗县-三义乡" + }, + { + "areaCode": 7213551665432, + "name": "头份市", + "parentCode": 7210006260735, + "mergerName": "台湾省-苗栗县-头份市" + }, + { + "areaCode": 7214158854562, + "name": "造桥乡", + "parentCode": 7210006260735, + "mergerName": "台湾省-苗栗县-造桥乡" + } + ], + "areaCode": 7210006260735, + "name": "苗栗县", + "parentCode": 7212684281636, + "mergerName": "台湾省-苗栗县" + }, + { + "children": [ + { + "areaCode": 7210260171037, + "name": "中坜区", + "parentCode": 7210341650825, + "mergerName": "台湾省-桃园市-中坜区" + }, + { + "areaCode": 7210260206164, + "name": "杨梅区", + "parentCode": 7210341650825, + "mergerName": "台湾省-桃园市-杨梅区" + }, + { + "areaCode": 7210678168526, + "name": "八德区", + "parentCode": 7210341650825, + "mergerName": "台湾省-桃园市-八德区" + }, + { + "areaCode": 7210847329556, + "name": "大园区", + "parentCode": 7210341650825, + "mergerName": "台湾省-桃园市-大园区" + }, + { + "areaCode": 7211433119675, + "name": "平镇区", + "parentCode": 7210341650825, + "mergerName": "台湾省-桃园市-平镇区" + }, + { + "areaCode": 7212117373171, + "name": "新屋区", + "parentCode": 7210341650825, + "mergerName": "台湾省-桃园市-新屋区" + }, + { + "areaCode": 7212224965181, + "name": "芦竹区", + "parentCode": 7210341650825, + "mergerName": "台湾省-桃园市-芦竹区" + }, + { + "areaCode": 7212312633084, + "name": "龟山区", + "parentCode": 7210341650825, + "mergerName": "台湾省-桃园市-龟山区" + }, + { + "areaCode": 7212531770128, + "name": "观音区", + "parentCode": 7210341650825, + "mergerName": "台湾省-桃园市-观音区" + }, + { + "areaCode": 7212762705132, + "name": "龙潭区", + "parentCode": 7210341650825, + "mergerName": "台湾省-桃园市-龙潭区" + }, + { + "areaCode": 7212984561367, + "name": "桃园区", + "parentCode": 7210341650825, + "mergerName": "台湾省-桃园市-桃园区" + }, + { + "areaCode": 7213219452238, + "name": "大溪区", + "parentCode": 7210341650825, + "mergerName": "台湾省-桃园市-大溪区" + }, + { + "areaCode": 7214249848471, + "name": "复兴区", + "parentCode": 7210341650825, + "mergerName": "台湾省-桃园市-复兴区" + } + ], + "areaCode": 7210341650825, + "name": "桃园市", + "parentCode": 7212684281636, + "mergerName": "台湾省-桃园市" + }, + { + "children": [ + { + "areaCode": 7210136250639, + "name": "罗东镇", + "parentCode": 7210496253116, + "mergerName": "台湾省-宜兰县-罗东镇" + }, + { + "areaCode": 7210191903506, + "name": "钓鱼台", + "parentCode": 7210496253116, + "mergerName": "台湾省-宜兰县-钓鱼台" + }, + { + "areaCode": 7210661036416, + "name": "三星乡", + "parentCode": 7210496253116, + "mergerName": "台湾省-宜兰县-三星乡" + }, + { + "areaCode": 7211436893118, + "name": "南澳乡", + "parentCode": 7210496253116, + "mergerName": "台湾省-宜兰县-南澳乡" + }, + { + "areaCode": 7211930211838, + "name": "员山乡", + "parentCode": 7210496253116, + "mergerName": "台湾省-宜兰县-员山乡" + }, + { + "areaCode": 7212787444136, + "name": "苏澳镇", + "parentCode": 7210496253116, + "mergerName": "台湾省-宜兰县-苏澳镇" + }, + { + "areaCode": 7212864015669, + "name": "大同乡", + "parentCode": 7210496253116, + "mergerName": "台湾省-宜兰县-大同乡" + }, + { + "areaCode": 7213006867933, + "name": "壮围乡", + "parentCode": 7210496253116, + "mergerName": "台湾省-宜兰县-壮围乡" + }, + { + "areaCode": 7213214799864, + "name": "五结乡", + "parentCode": 7210496253116, + "mergerName": "台湾省-宜兰县-五结乡" + }, + { + "areaCode": 7213246144892, + "name": "头城镇", + "parentCode": 7210496253116, + "mergerName": "台湾省-宜兰县-头城镇" + }, + { + "areaCode": 7213435783860, + "name": "宜兰市", + "parentCode": 7210496253116, + "mergerName": "台湾省-宜兰县-宜兰市" + }, + { + "areaCode": 7213685245322, + "name": "冬山乡", + "parentCode": 7210496253116, + "mergerName": "台湾省-宜兰县-冬山乡" + }, + { + "areaCode": 7213840396599, + "name": "礁溪乡", + "parentCode": 7210496253116, + "mergerName": "台湾省-宜兰县-礁溪乡" + } + ], + "areaCode": 7210496253116, + "name": "宜兰县", + "parentCode": 7212684281636, + "mergerName": "台湾省-宜兰县" + }, + { + "children": [ + { + "areaCode": 7210696581395, + "name": "东区", + "parentCode": 7210628507899, + "mergerName": "台湾省-新竹市-东区" + }, + { + "areaCode": 7211520630175, + "name": "北区", + "parentCode": 7210628507899, + "mergerName": "台湾省-新竹市-北区" + }, + { + "areaCode": 7213374380901, + "name": "香山区", + "parentCode": 7210628507899, + "mergerName": "台湾省-新竹市-香山区" + } + ], + "areaCode": 7210628507899, + "name": "新竹市", + "parentCode": 7212684281636, + "mergerName": "台湾省-新竹市" + }, + { + "children": [ + { + "areaCode": 7210029673025, + "name": "绿岛乡", + "parentCode": 7210683530667, + "mergerName": "台湾省-台东县-绿岛乡" + }, + { + "areaCode": 7210235284468, + "name": "大武乡", + "parentCode": 7210683530667, + "mergerName": "台湾省-台东县-大武乡" + }, + { + "areaCode": 7210411091341, + "name": "卑南乡", + "parentCode": 7210683530667, + "mergerName": "台湾省-台东县-卑南乡" + }, + { + "areaCode": 7210421361918, + "name": "鹿野乡", + "parentCode": 7210683530667, + "mergerName": "台湾省-台东县-鹿野乡" + }, + { + "areaCode": 7210428608379, + "name": "太麻里乡", + "parentCode": 7210683530667, + "mergerName": "台湾省-台东县-太麻里乡" + }, + { + "areaCode": 7211109006944, + "name": "成功镇", + "parentCode": 7210683530667, + "mergerName": "台湾省-台东县-成功镇" + }, + { + "areaCode": 7212475252249, + "name": "台东市", + "parentCode": 7210683530667, + "mergerName": "台湾省-台东县-台东市" + }, + { + "areaCode": 7212595950617, + "name": "关山镇", + "parentCode": 7210683530667, + "mergerName": "台湾省-台东县-关山镇" + }, + { + "areaCode": 7212804014911, + "name": "达仁乡", + "parentCode": 7210683530667, + "mergerName": "台湾省-台东县-达仁乡" + }, + { + "areaCode": 7212807949443, + "name": "兰屿乡", + "parentCode": 7210683530667, + "mergerName": "台湾省-台东县-兰屿乡" + }, + { + "areaCode": 7213085633749, + "name": "金峰乡", + "parentCode": 7210683530667, + "mergerName": "台湾省-台东县-金峰乡" + }, + { + "areaCode": 7213542170157, + "name": "池上乡", + "parentCode": 7210683530667, + "mergerName": "台湾省-台东县-池上乡" + }, + { + "areaCode": 7213634859837, + "name": "延平乡", + "parentCode": 7210683530667, + "mergerName": "台湾省-台东县-延平乡" + }, + { + "areaCode": 7213990021030, + "name": "东河乡", + "parentCode": 7210683530667, + "mergerName": "台湾省-台东县-东河乡" + }, + { + "areaCode": 7214091071397, + "name": "长滨乡", + "parentCode": 7210683530667, + "mergerName": "台湾省-台东县-长滨乡" + }, + { + "areaCode": 7214169650500, + "name": "海端乡", + "parentCode": 7210683530667, + "mergerName": "台湾省-台东县-海端乡" + } + ], + "areaCode": 7210683530667, + "name": "台东县", + "parentCode": 7212684281636, + "mergerName": "台湾省-台东县" + }, + { + "children": [ + { + "areaCode": 7210215531178, + "name": "莿桐乡", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-莿桐乡" + }, + { + "areaCode": 7210324425488, + "name": "台西乡", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-台西乡" + }, + { + "areaCode": 7210474478353, + "name": "东势乡", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-东势乡" + }, + { + "areaCode": 7210712761867, + "name": "二崙乡", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-二崙乡" + }, + { + "areaCode": 7210767901015, + "name": "土库镇", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-土库镇" + }, + { + "areaCode": 7211770338702, + "name": "西螺镇", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-西螺镇" + }, + { + "areaCode": 7211789349480, + "name": "麦寮乡", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-麦寮乡" + }, + { + "areaCode": 7211868639671, + "name": "北港镇", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-北港镇" + }, + { + "areaCode": 7212106008722, + "name": "崙背乡", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-崙背乡" + }, + { + "areaCode": 7212138581786, + "name": "褒忠乡", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-褒忠乡" + }, + { + "areaCode": 7212581144835, + "name": "斗南镇", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-斗南镇" + }, + { + "areaCode": 7212940775739, + "name": "四湖乡", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-四湖乡" + }, + { + "areaCode": 7212987030783, + "name": "斗六市", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-斗六市" + }, + { + "areaCode": 7213126346648, + "name": "元长乡", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-元长乡" + }, + { + "areaCode": 7213169837655, + "name": "口湖乡", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-口湖乡" + }, + { + "areaCode": 7213428531096, + "name": "古坑乡", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-古坑乡" + }, + { + "areaCode": 7213827712259, + "name": "大埤乡", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-大埤乡" + }, + { + "areaCode": 7213918626080, + "name": "林内乡", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-林内乡" + }, + { + "areaCode": 7214107486674, + "name": "虎尾镇", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-虎尾镇" + }, + { + "areaCode": 7214287996814, + "name": "水林乡", + "parentCode": 7210805025214, + "mergerName": "台湾省-云林县-水林乡" + } + ], + "areaCode": 7210805025214, + "name": "云林县", + "parentCode": 7212684281636, + "mergerName": "台湾省-云林县" + }, + { + "children": [ + { + "areaCode": 7210441779365, + "name": "宝山乡", + "parentCode": 7210872151750, + "mergerName": "台湾省-新竹县-宝山乡" + }, + { + "areaCode": 7210804235076, + "name": "新丰乡", + "parentCode": 7210872151750, + "mergerName": "台湾省-新竹县-新丰乡" + }, + { + "areaCode": 7211103710223, + "name": "尖石乡", + "parentCode": 7210872151750, + "mergerName": "台湾省-新竹县-尖石乡" + }, + { + "areaCode": 7211130190992, + "name": "竹东镇", + "parentCode": 7210872151750, + "mergerName": "台湾省-新竹县-竹东镇" + }, + { + "areaCode": 7211573430796, + "name": "关西镇", + "parentCode": 7210872151750, + "mergerName": "台湾省-新竹县-关西镇" + }, + { + "areaCode": 7211574705058, + "name": "横山乡", + "parentCode": 7210872151750, + "mergerName": "台湾省-新竹县-横山乡" + }, + { + "areaCode": 7212185405977, + "name": "五峰乡", + "parentCode": 7210872151750, + "mergerName": "台湾省-新竹县-五峰乡" + }, + { + "areaCode": 7212592054963, + "name": "芎林乡", + "parentCode": 7210872151750, + "mergerName": "台湾省-新竹县-芎林乡" + }, + { + "areaCode": 7212678987599, + "name": "峨眉乡", + "parentCode": 7210872151750, + "mergerName": "台湾省-新竹县-峨眉乡" + }, + { + "areaCode": 7213513890282, + "name": "新埔镇", + "parentCode": 7210872151750, + "mergerName": "台湾省-新竹县-新埔镇" + }, + { + "areaCode": 7213821071164, + "name": "竹北市", + "parentCode": 7210872151750, + "mergerName": "台湾省-新竹县-竹北市" + }, + { + "areaCode": 7213976827405, + "name": "湖口乡", + "parentCode": 7210872151750, + "mergerName": "台湾省-新竹县-湖口乡" + }, + { + "areaCode": 7214250073576, + "name": "北埔乡", + "parentCode": 7210872151750, + "mergerName": "台湾省-新竹县-北埔乡" + } + ], + "areaCode": 7210872151750, + "name": "新竹县", + "parentCode": 7212684281636, + "mergerName": "台湾省-新竹县" + }, + { + "children": [ + { + "areaCode": 7210021005531, + "name": "中埔乡", + "parentCode": 7210941525844, + "mergerName": "台湾省-嘉义县-中埔乡" + }, + { + "areaCode": 7210230792026, + "name": "东石乡", + "parentCode": 7210941525844, + "mergerName": "台湾省-嘉义县-东石乡" + }, + { + "areaCode": 7210341339468, + "name": "新港乡", + "parentCode": 7210941525844, + "mergerName": "台湾省-嘉义县-新港乡" + }, + { + "areaCode": 7210413539344, + "name": "竹崎乡", + "parentCode": 7210941525844, + "mergerName": "台湾省-嘉义县-竹崎乡" + }, + { + "areaCode": 7210508004641, + "name": "水上乡", + "parentCode": 7210941525844, + "mergerName": "台湾省-嘉义县-水上乡" + }, + { + "areaCode": 7210922983469, + "name": "六脚乡", + "parentCode": 7210941525844, + "mergerName": "台湾省-嘉义县-六脚乡" + }, + { + "areaCode": 7211244987607, + "name": "番路乡", + "parentCode": 7210941525844, + "mergerName": "台湾省-嘉义县-番路乡" + }, + { + "areaCode": 7211257224778, + "name": "朴子市", + "parentCode": 7210941525844, + "mergerName": "台湾省-嘉义县-朴子市" + }, + { + "areaCode": 7211319581674, + "name": "太保市", + "parentCode": 7210941525844, + "mergerName": "台湾省-嘉义县-太保市" + }, + { + "areaCode": 7211682524500, + "name": "大埔乡", + "parentCode": 7210941525844, + "mergerName": "台湾省-嘉义县-大埔乡" + }, + { + "areaCode": 7211896625293, + "name": "梅山乡", + "parentCode": 7210941525844, + "mergerName": "台湾省-嘉义县-梅山乡" + }, + { + "areaCode": 7211909284255, + "name": "鹿草乡", + "parentCode": 7210941525844, + "mergerName": "台湾省-嘉义县-鹿草乡" + }, + { + "areaCode": 7212947314361, + "name": "民雄乡", + "parentCode": 7210941525844, + "mergerName": "台湾省-嘉义县-民雄乡" + }, + { + "areaCode": 7213048933126, + "name": "义竹乡", + "parentCode": 7210941525844, + "mergerName": "台湾省-嘉义县-义竹乡" + }, + { + "areaCode": 7213066224683, + "name": "溪口乡", + "parentCode": 7210941525844, + "mergerName": "台湾省-嘉义县-溪口乡" + }, + { + "areaCode": 7213215860619, + "name": "阿里山乡", + "parentCode": 7210941525844, + "mergerName": "台湾省-嘉义县-阿里山乡" + }, + { + "areaCode": 7213757619522, + "name": "布袋镇", + "parentCode": 7210941525844, + "mergerName": "台湾省-嘉义县-布袋镇" + }, + { + "areaCode": 7214163684518, + "name": "大林镇", + "parentCode": 7210941525844, + "mergerName": "台湾省-嘉义县-大林镇" + } + ], + "areaCode": 7210941525844, + "name": "嘉义县", + "parentCode": 7212684281636, + "mergerName": "台湾省-嘉义县" + }, + { + "children": [ + { + "areaCode": 7210215329689, + "name": "万华区", + "parentCode": 7211135835616, + "mergerName": "台湾省-台北市-万华区" + }, + { + "areaCode": 7210252641444, + "name": "松山区", + "parentCode": 7211135835616, + "mergerName": "台湾省-台北市-松山区" + }, + { + "areaCode": 7210369072551, + "name": "士林区", + "parentCode": 7211135835616, + "mergerName": "台湾省-台北市-士林区" + }, + { + "areaCode": 7210744762729, + "name": "北投区", + "parentCode": 7211135835616, + "mergerName": "台湾省-台北市-北投区" + }, + { + "areaCode": 7210800164585, + "name": "大安区", + "parentCode": 7211135835616, + "mergerName": "台湾省-台北市-大安区" + }, + { + "areaCode": 7211116844598, + "name": "文山区", + "parentCode": 7211135835616, + "mergerName": "台湾省-台北市-文山区" + }, + { + "areaCode": 7211478258212, + "name": "内湖区", + "parentCode": 7211135835616, + "mergerName": "台湾省-台北市-内湖区" + }, + { + "areaCode": 7211758551158, + "name": "南港区", + "parentCode": 7211135835616, + "mergerName": "台湾省-台北市-南港区" + }, + { + "areaCode": 7212025713063, + "name": "中山区", + "parentCode": 7211135835616, + "mergerName": "台湾省-台北市-中山区" + }, + { + "areaCode": 7213408492912, + "name": "信义区", + "parentCode": 7211135835616, + "mergerName": "台湾省-台北市-信义区" + }, + { + "areaCode": 7213675966616, + "name": "大同区", + "parentCode": 7211135835616, + "mergerName": "台湾省-台北市-大同区" + }, + { + "areaCode": 7213853708349, + "name": "中正区", + "parentCode": 7211135835616, + "mergerName": "台湾省-台北市-中正区" + } + ], + "areaCode": 7211135835616, + "name": "台北市", + "parentCode": 7212684281636, + "mergerName": "台湾省-台北市" + }, + { + "children": [ + { + "areaCode": 7210014952242, + "name": "埔心乡", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-埔心乡" + }, + { + "areaCode": 7210045259473, + "name": "永靖乡", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-永靖乡" + }, + { + "areaCode": 7210401706921, + "name": "田中镇", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-田中镇" + }, + { + "areaCode": 7210409668851, + "name": "彰化市", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-彰化市" + }, + { + "areaCode": 7210561847290, + "name": "北斗镇", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-北斗镇" + }, + { + "areaCode": 7210750153154, + "name": "大城乡", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-大城乡" + }, + { + "areaCode": 7211248547941, + "name": "线西乡", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-线西乡" + }, + { + "areaCode": 7211315936918, + "name": "芬园乡", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-芬园乡" + }, + { + "areaCode": 7211481999433, + "name": "二林镇", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-二林镇" + }, + { + "areaCode": 7211619720398, + "name": "鹿港镇", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-鹿港镇" + }, + { + "areaCode": 7211703700079, + "name": "大村乡", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-大村乡" + }, + { + "areaCode": 7212235333073, + "name": "员林市", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-员林市" + }, + { + "areaCode": 7212272384819, + "name": "溪州乡", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-溪州乡" + }, + { + "areaCode": 7212413406027, + "name": "伸港乡", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-伸港乡" + }, + { + "areaCode": 7212534267540, + "name": "福兴乡", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-福兴乡" + }, + { + "areaCode": 7212706352853, + "name": "社头乡", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-社头乡" + }, + { + "areaCode": 7212739650211, + "name": "二水乡", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-二水乡" + }, + { + "areaCode": 7212810715358, + "name": "和美镇", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-和美镇" + }, + { + "areaCode": 7213029654927, + "name": "芳苑乡", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-芳苑乡" + }, + { + "areaCode": 7213042717571, + "name": "秀水乡", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-秀水乡" + }, + { + "areaCode": 7213282061746, + "name": "埔盐乡", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-埔盐乡" + }, + { + "areaCode": 7213711020646, + "name": "花坛乡", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-花坛乡" + }, + { + "areaCode": 7213784766690, + "name": "溪湖镇", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-溪湖镇" + }, + { + "areaCode": 7213838126469, + "name": "田尾乡", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-田尾乡" + }, + { + "areaCode": 7213942293366, + "name": "竹塘乡", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-竹塘乡" + }, + { + "areaCode": 7213958736748, + "name": "埤头乡", + "parentCode": 7211363068475, + "mergerName": "台湾省-彰化县-埤头乡" + } + ], + "areaCode": 7211363068475, + "name": "彰化县", + "parentCode": 7212684281636, + "mergerName": "台湾省-彰化县" + }, + { + "children": [ + { + "areaCode": 7211422361597, + "name": "白沙乡", + "parentCode": 7211448320652, + "mergerName": "台湾省-澎湖县-白沙乡" + }, + { + "areaCode": 7211733498769, + "name": "湖西乡", + "parentCode": 7211448320652, + "mergerName": "台湾省-澎湖县-湖西乡" + }, + { + "areaCode": 7211974023393, + "name": "七美乡", + "parentCode": 7211448320652, + "mergerName": "台湾省-澎湖县-七美乡" + }, + { + "areaCode": 7212039636647, + "name": "马公市", + "parentCode": 7211448320652, + "mergerName": "台湾省-澎湖县-马公市" + }, + { + "areaCode": 7212453348952, + "name": "西屿乡", + "parentCode": 7211448320652, + "mergerName": "台湾省-澎湖县-西屿乡" + }, + { + "areaCode": 7212512381669, + "name": "望安乡", + "parentCode": 7211448320652, + "mergerName": "台湾省-澎湖县-望安乡" + } + ], + "areaCode": 7211448320652, + "name": "澎湖县", + "parentCode": 7212684281636, + "mergerName": "台湾省-澎湖县" + }, + { + "children": [ + { + "areaCode": 7210212004934, + "name": "安南区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-安南区" + }, + { + "areaCode": 7210501288095, + "name": "官田区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-官田区" + }, + { + "areaCode": 7210518938247, + "name": "安平区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-安平区" + }, + { + "areaCode": 7210584299310, + "name": "后壁区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-后壁区" + }, + { + "areaCode": 7210600348720, + "name": "归仁区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-归仁区" + }, + { + "areaCode": 7210735633341, + "name": "玉井区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-玉井区" + }, + { + "areaCode": 7210750170794, + "name": "仁德区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-仁德区" + }, + { + "areaCode": 7210802109976, + "name": "白河区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-白河区" + }, + { + "areaCode": 7210938451256, + "name": "永康区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-永康区" + }, + { + "areaCode": 7211001272307, + "name": "将军区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-将军区" + }, + { + "areaCode": 7211053011981, + "name": "新化区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-新化区" + }, + { + "areaCode": 7211146539742, + "name": "北门区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-北门区" + }, + { + "areaCode": 7211172661130, + "name": "龙崎区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-龙崎区" + }, + { + "areaCode": 7211363581116, + "name": "新营区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-新营区" + }, + { + "areaCode": 7211427228230, + "name": "北区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-北区" + }, + { + "areaCode": 7211524545902, + "name": "盐水区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-盐水区" + }, + { + "areaCode": 7211691033451, + "name": "新市区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-新市区" + }, + { + "areaCode": 7211754691450, + "name": "安定区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-安定区" + }, + { + "areaCode": 7211839708068, + "name": "柳营区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-柳营区" + }, + { + "areaCode": 7211890149444, + "name": "学甲区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-学甲区" + }, + { + "areaCode": 7212135487021, + "name": "善化区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-善化区" + }, + { + "areaCode": 7212794494611, + "name": "下营区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-下营区" + }, + { + "areaCode": 7212825699332, + "name": "南化区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-南化区" + }, + { + "areaCode": 7213013849771, + "name": "七股区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-七股区" + }, + { + "areaCode": 7213133167182, + "name": "中西区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-中西区" + }, + { + "areaCode": 7213139115312, + "name": "西港区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-西港区" + }, + { + "areaCode": 7213193852321, + "name": "左镇区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-左镇区" + }, + { + "areaCode": 7213250769247, + "name": "山上区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-山上区" + }, + { + "areaCode": 7213274722429, + "name": "大内区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-大内区" + }, + { + "areaCode": 7213460008268, + "name": "南区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-南区" + }, + { + "areaCode": 7213515759399, + "name": "麻豆区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-麻豆区" + }, + { + "areaCode": 7213542128882, + "name": "楠西区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-楠西区" + }, + { + "areaCode": 7213629942344, + "name": "东区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-东区" + }, + { + "areaCode": 7213632079281, + "name": "六甲区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-六甲区" + }, + { + "areaCode": 7213947342815, + "name": "东山区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-东山区" + }, + { + "areaCode": 7214027878727, + "name": "佳里区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-佳里区" + }, + { + "areaCode": 7214084817045, + "name": "关庙区", + "parentCode": 7211810508871, + "mergerName": "台湾省-台南市-关庙区" + } + ], + "areaCode": 7211810508871, + "name": "台南市", + "parentCode": 7212684281636, + "mergerName": "台湾省-台南市" + }, + { + "children": [ + { + "areaCode": 7210256214197, + "name": "南沙群岛", + "parentCode": 7212569630609, + "mergerName": "台湾省-南海岛-南沙群岛" + }, + { + "areaCode": 7212535892745, + "name": "东沙群岛", + "parentCode": 7212569630609, + "mergerName": "台湾省-南海岛-东沙群岛" + } + ], + "areaCode": 7212569630609, + "name": "南海岛", + "parentCode": 7212684281636, + "mergerName": "台湾省-南海岛" + }, + { + "children": [ + { + "areaCode": 7210030028354, + "name": "那玛夏区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-那玛夏区" + }, + { + "areaCode": 7210082497085, + "name": "桥头区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-桥头区" + }, + { + "areaCode": 7210148762668, + "name": "苓雅区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-苓雅区" + }, + { + "areaCode": 7210442812242, + "name": "阿莲区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-阿莲区" + }, + { + "areaCode": 7210450605384, + "name": "永安区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-永安区" + }, + { + "areaCode": 7210639291258, + "name": "旗山区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-旗山区" + }, + { + "areaCode": 7210650845235, + "name": "杉林区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-杉林区" + }, + { + "areaCode": 7210851493721, + "name": "仁武区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-仁武区" + }, + { + "areaCode": 7210854479560, + "name": "大寮区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-大寮区" + }, + { + "areaCode": 7210878798209, + "name": "内门区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-内门区" + }, + { + "areaCode": 7210966248440, + "name": "前镇区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-前镇区" + }, + { + "areaCode": 7210974548312, + "name": "燕巢区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-燕巢区" + }, + { + "areaCode": 7211010488019, + "name": "湖内区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-湖内区" + }, + { + "areaCode": 7211611309039, + "name": "梓官区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-梓官区" + }, + { + "areaCode": 7211621695789, + "name": "盐埕区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-盐埕区" + }, + { + "areaCode": 7211678115205, + "name": "旗津区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-旗津区" + }, + { + "areaCode": 7211882320423, + "name": "大社区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-大社区" + }, + { + "areaCode": 7211892521830, + "name": "凤山区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-凤山区" + }, + { + "areaCode": 7211949885952, + "name": "鼓山区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-鼓山区" + }, + { + "areaCode": 7212111808978, + "name": "甲仙区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-甲仙区" + }, + { + "areaCode": 7212234630013, + "name": "大树区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-大树区" + }, + { + "areaCode": 7212310584071, + "name": "茂林区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-茂林区" + }, + { + "areaCode": 7212395895808, + "name": "桃源区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-桃源区" + }, + { + "areaCode": 7212421692560, + "name": "新兴区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-新兴区" + }, + { + "areaCode": 7212476413954, + "name": "田寮区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-田寮区" + }, + { + "areaCode": 7212628800216, + "name": "小港区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-小港区" + }, + { + "areaCode": 7212764079460, + "name": "路竹区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-路竹区" + }, + { + "areaCode": 7213120844413, + "name": "冈山区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-冈山区" + }, + { + "areaCode": 7213125127243, + "name": "左营区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-左营区" + }, + { + "areaCode": 7213271135379, + "name": "三民区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-三民区" + }, + { + "areaCode": 7213330974441, + "name": "美浓区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-美浓区" + }, + { + "areaCode": 7213514449468, + "name": "弥陀区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-弥陀区" + }, + { + "areaCode": 7213596110646, + "name": "茄萣区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-茄萣区" + }, + { + "areaCode": 7213751269460, + "name": "六龟区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-六龟区" + }, + { + "areaCode": 7213806860794, + "name": "林园区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-林园区" + }, + { + "areaCode": 7213834246005, + "name": "鸟松区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-鸟松区" + }, + { + "areaCode": 7213870065844, + "name": "前金区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-前金区" + }, + { + "areaCode": 7214032618918, + "name": "楠梓区", + "parentCode": 7212732834600, + "mergerName": "台湾省-高雄市-楠梓区" + } + ], + "areaCode": 7212732834600, + "name": "高雄市", + "parentCode": 7212684281636, + "mergerName": "台湾省-高雄市" + }, + { + "children": [ + { + "areaCode": 7210037031425, + "name": "东区", + "parentCode": 7212735772392, + "mergerName": "台湾省-嘉义市-东区" + }, + { "areaCode": 7212092163707, "name": "西区", "parentCode": 7212735772392, "mergerName": "台湾省-嘉义市-西区" } + ], + "areaCode": 7212735772392, + "name": "嘉义市", + "parentCode": 7212684281636, + "mergerName": "台湾省-嘉义市" + }, + { + "children": [ + { + "areaCode": 7210682433541, + "name": "金城镇", + "parentCode": 7213169128457, + "mergerName": "台湾省-金门县-金城镇" + }, + { + "areaCode": 7211025195083, + "name": "金沙镇", + "parentCode": 7213169128457, + "mergerName": "台湾省-金门县-金沙镇" + }, + { + "areaCode": 7211648043199, + "name": "金宁乡", + "parentCode": 7213169128457, + "mergerName": "台湾省-金门县-金宁乡" + }, + { + "areaCode": 7212187596712, + "name": "烈屿乡", + "parentCode": 7213169128457, + "mergerName": "台湾省-金门县-烈屿乡" + }, + { + "areaCode": 7213738253740, + "name": "乌坵乡", + "parentCode": 7213169128457, + "mergerName": "台湾省-金门县-乌坵乡" + }, + { + "areaCode": 7213985354131, + "name": "金湖镇", + "parentCode": 7213169128457, + "mergerName": "台湾省-金门县-金湖镇" + } + ], + "areaCode": 7213169128457, + "name": "金门县", + "parentCode": 7212684281636, + "mergerName": "台湾省-金门县" + }, + { + "children": [ + { + "areaCode": 7210080082251, + "name": "埔里镇", + "parentCode": 7213286391187, + "mergerName": "台湾省-南投县-埔里镇" + }, + { + "areaCode": 7210564612001, + "name": "信义乡", + "parentCode": 7213286391187, + "mergerName": "台湾省-南投县-信义乡" + }, + { + "areaCode": 7211164549046, + "name": "国姓乡", + "parentCode": 7213286391187, + "mergerName": "台湾省-南投县-国姓乡" + }, + { + "areaCode": 7211254583746, + "name": "竹山镇", + "parentCode": 7213286391187, + "mergerName": "台湾省-南投县-竹山镇" + }, + { + "areaCode": 7211390772412, + "name": "中寮乡", + "parentCode": 7213286391187, + "mergerName": "台湾省-南投县-中寮乡" + }, + { + "areaCode": 7211416005546, + "name": "仁爱乡", + "parentCode": 7213286391187, + "mergerName": "台湾省-南投县-仁爱乡" + }, + { + "areaCode": 7211578156950, + "name": "名间乡", + "parentCode": 7213286391187, + "mergerName": "台湾省-南投县-名间乡" + }, + { + "areaCode": 7211585584227, + "name": "鹿谷乡", + "parentCode": 7213286391187, + "mergerName": "台湾省-南投县-鹿谷乡" + }, + { + "areaCode": 7213144026449, + "name": "鱼池乡", + "parentCode": 7213286391187, + "mergerName": "台湾省-南投县-鱼池乡" + }, + { + "areaCode": 7213176935601, + "name": "水里乡", + "parentCode": 7213286391187, + "mergerName": "台湾省-南投县-水里乡" + }, + { + "areaCode": 7213244194435, + "name": "南投市", + "parentCode": 7213286391187, + "mergerName": "台湾省-南投县-南投市" + }, + { + "areaCode": 7213272562316, + "name": "草屯镇", + "parentCode": 7213286391187, + "mergerName": "台湾省-南投县-草屯镇" + }, + { + "areaCode": 7213790607472, + "name": "集集镇", + "parentCode": 7213286391187, + "mergerName": "台湾省-南投县-集集镇" + } + ], + "areaCode": 7213286391187, + "name": "南投县", + "parentCode": 7212684281636, + "mergerName": "台湾省-南投县" + }, + { + "children": [ + { + "areaCode": 7210163210560, + "name": "牡丹乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-牡丹乡" + }, + { + "areaCode": 7210288010220, + "name": "佳冬乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-佳冬乡" + }, + { + "areaCode": 7210340425038, + "name": "南州乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-南州乡" + }, + { + "areaCode": 7210408368149, + "name": "内埔乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-内埔乡" + }, + { + "areaCode": 7210452236011, + "name": "潮州镇", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-潮州镇" + }, + { + "areaCode": 7210673608588, + "name": "三地门乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-三地门乡" + }, + { + "areaCode": 7210673728084, + "name": "枋寮乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-枋寮乡" + }, + { + "areaCode": 7210803119647, + "name": "万峦乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-万峦乡" + }, + { + "areaCode": 7211118835261, + "name": "林边乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-林边乡" + }, + { + "areaCode": 7211182169114, + "name": "枋山乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-枋山乡" + }, + { + "areaCode": 7211483532768, + "name": "竹田乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-竹田乡" + }, + { + "areaCode": 7211541287570, + "name": "长治乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-长治乡" + }, + { + "areaCode": 7211603943886, + "name": "车城乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-车城乡" + }, + { + "areaCode": 7211613600521, + "name": "狮子乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-狮子乡" + }, + { + "areaCode": 7211623602338, + "name": "万丹乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-万丹乡" + }, + { + "areaCode": 7211931638604, + "name": "新园乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-新园乡" + }, + { + "areaCode": 7212022169923, + "name": "九如乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-九如乡" + }, + { + "areaCode": 7212025956296, + "name": "麟洛乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-麟洛乡" + }, + { + "areaCode": 7212026670184, + "name": "恆春镇", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-恆春镇" + }, + { + "areaCode": 7212033082470, + "name": "屏东市", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-屏东市" + }, + { + "areaCode": 7212047958373, + "name": "来义乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-来义乡" + }, + { + "areaCode": 7212185106599, + "name": "泰武乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-泰武乡" + }, + { + "areaCode": 7212204640682, + "name": "新埤乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-新埤乡" + }, + { + "areaCode": 7212274789829, + "name": "满州乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-满州乡" + }, + { + "areaCode": 7212411480260, + "name": "雾台乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-雾台乡" + }, + { + "areaCode": 7212654539145, + "name": "崁顶乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-崁顶乡" + }, + { + "areaCode": 7213000912039, + "name": "高树乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-高树乡" + }, + { + "areaCode": 7213049350399, + "name": "玛家乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-玛家乡" + }, + { + "areaCode": 7213333527751, + "name": "东港镇", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-东港镇" + }, + { + "areaCode": 7213368589186, + "name": "春日乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-春日乡" + }, + { + "areaCode": 7213493910470, + "name": "里港乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-里港乡" + }, + { + "areaCode": 7213726005446, + "name": "琉球乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-琉球乡" + }, + { + "areaCode": 7213785859329, + "name": "盐埔乡", + "parentCode": 7213368433646, + "mergerName": "台湾省-屏东县-盐埔乡" + } + ], + "areaCode": 7213368433646, + "name": "屏东县", + "parentCode": 7212684281636, + "mergerName": "台湾省-屏东县" + }, + { + "children": [ + { + "areaCode": 7210312292837, + "name": "神冈区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-神冈区" + }, + { + "areaCode": 7210365173176, + "name": "龙井区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-龙井区" + }, + { + "areaCode": 7210428413866, + "name": "中区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-中区" + }, + { + "areaCode": 7210433957784, + "name": "西屯区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-西屯区" + }, + { + "areaCode": 7210506304237, + "name": "东区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-东区" + }, + { + "areaCode": 7210609368636, + "name": "西区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-西区" + }, + { + "areaCode": 7210812416171, + "name": "和平区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-和平区" + }, + { + "areaCode": 7211022797594, + "name": "后里区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-后里区" + }, + { + "areaCode": 7211032595476, + "name": "雾峰区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-雾峰区" + }, + { + "areaCode": 7211192114038, + "name": "乌日区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-乌日区" + }, + { + "areaCode": 7211228143444, + "name": "南屯区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-南屯区" + }, + { + "areaCode": 7211266391560, + "name": "新社区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-新社区" + }, + { + "areaCode": 7211788704085, + "name": "北屯区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-北屯区" + }, + { + "areaCode": 7211852125909, + "name": "外埔区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-外埔区" + }, + { + "areaCode": 7211961823849, + "name": "梧栖区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-梧栖区" + }, + { + "areaCode": 7211990754425, + "name": "南区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-南区" + }, + { + "areaCode": 7212223091798, + "name": "丰原区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-丰原区" + }, + { + "areaCode": 7212266298763, + "name": "清水区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-清水区" + }, + { + "areaCode": 7212272339853, + "name": "沙鹿区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-沙鹿区" + }, + { + "areaCode": 7212473998959, + "name": "石冈区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-石冈区" + }, + { + "areaCode": 7212574153315, + "name": "大安区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-大安区" + }, + { + "areaCode": 7212644293763, + "name": "太平区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-太平区" + }, + { + "areaCode": 7212849767928, + "name": "潭子区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-潭子区" + }, + { + "areaCode": 7212900860127, + "name": "大里区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-大里区" + }, + { + "areaCode": 7213170853902, + "name": "大肚区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-大肚区" + }, + { + "areaCode": 7213593752472, + "name": "东势区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-东势区" + }, + { + "areaCode": 7213629563797, + "name": "北区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-北区" + }, + { + "areaCode": 7213791537826, + "name": "大雅区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-大雅区" + }, + { + "areaCode": 7214224541064, + "name": "大甲区", + "parentCode": 7213392594310, + "mergerName": "台湾省-台中市-大甲区" + } + ], + "areaCode": 7213392594310, + "name": "台中市", + "parentCode": 7212684281636, + "mergerName": "台湾省-台中市" + }, + { + "children": [ + { + "areaCode": 7210001670951, + "name": "新庄区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-新庄区" + }, + { + "areaCode": 7210409446666, + "name": "永和区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-永和区" + }, + { + "areaCode": 7210433327131, + "name": "坪林区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-坪林区" + }, + { + "areaCode": 7210626987335, + "name": "淡水区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-淡水区" + }, + { + "areaCode": 7210991500953, + "name": "莺歌区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-莺歌区" + }, + { + "areaCode": 7210998316149, + "name": "石碇区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-石碇区" + }, + { + "areaCode": 7211425042493, + "name": "贡寮区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-贡寮区" + }, + { + "areaCode": 7211425195301, + "name": "新店区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-新店区" + }, + { + "areaCode": 7211688526270, + "name": "土城区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-土城区" + }, + { + "areaCode": 7211754815224, + "name": "泰山区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-泰山区" + }, + { + "areaCode": 7211771832497, + "name": "板桥区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-板桥区" + }, + { + "areaCode": 7212372513861, + "name": "林口区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-林口区" + }, + { + "areaCode": 7212471900743, + "name": "树林区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-树林区" + }, + { + "areaCode": 7212829435547, + "name": "芦洲区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-芦洲区" + }, + { + "areaCode": 7212911886155, + "name": "乌来区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-乌来区" + }, + { + "areaCode": 7213000372875, + "name": "中和区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-中和区" + }, + { + "areaCode": 7213001833072, + "name": "深坑区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-深坑区" + }, + { + "areaCode": 7213098932372, + "name": "汐止区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-汐止区" + }, + { + "areaCode": 7213213044942, + "name": "三芝区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-三芝区" + }, + { + "areaCode": 7213349256604, + "name": "石门区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-石门区" + }, + { + "areaCode": 7213356776637, + "name": "万里区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-万里区" + }, + { + "areaCode": 7213771102767, + "name": "三重区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-三重区" + }, + { + "areaCode": 7213789165732, + "name": "平溪区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-平溪区" + }, + { + "areaCode": 7213923358308, + "name": "八里区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-八里区" + }, + { + "areaCode": 7213954389053, + "name": "双溪区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-双溪区" + }, + { + "areaCode": 7214081319753, + "name": "金山区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-金山区" + }, + { + "areaCode": 7214210665677, + "name": "五股区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-五股区" + }, + { + "areaCode": 7214214236107, + "name": "瑞芳区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-瑞芳区" + }, + { + "areaCode": 7214252931370, + "name": "三峡区", + "parentCode": 7213431434442, + "mergerName": "台湾省-新北市-三峡区" + } + ], + "areaCode": 7213431434442, + "name": "新北市", + "parentCode": 7212684281636, + "mergerName": "台湾省-新北市" + }, + { + "children": [ + { + "areaCode": 7211526030900, + "name": "南竿乡", + "parentCode": 7213494932062, + "mergerName": "台湾省-连江县-南竿乡" + }, + { + "areaCode": 7212940359462, + "name": "北竿乡", + "parentCode": 7213494932062, + "mergerName": "台湾省-连江县-北竿乡" + }, + { + "areaCode": 7213496040244, + "name": "莒光乡", + "parentCode": 7213494932062, + "mergerName": "台湾省-连江县-莒光乡" + }, + { + "areaCode": 7214021569284, + "name": "东引乡", + "parentCode": 7213494932062, + "mergerName": "台湾省-连江县-东引乡" + } + ], + "areaCode": 7213494932062, + "name": "连江县", + "parentCode": 7212684281636, + "mergerName": "台湾省-连江县" + }, + { + "children": [ + { + "areaCode": 7210576136005, + "name": "万荣乡", + "parentCode": 7213659713107, + "mergerName": "台湾省-花莲县-万荣乡" + }, + { + "areaCode": 7210808777926, + "name": "光复乡", + "parentCode": 7213659713107, + "mergerName": "台湾省-花莲县-光复乡" + }, + { + "areaCode": 7211078920048, + "name": "花莲市", + "parentCode": 7213659713107, + "mergerName": "台湾省-花莲县-花莲市" + }, + { + "areaCode": 7211269720420, + "name": "丰滨乡", + "parentCode": 7213659713107, + "mergerName": "台湾省-花莲县-丰滨乡" + }, + { + "areaCode": 7212291897786, + "name": "卓溪乡", + "parentCode": 7213659713107, + "mergerName": "台湾省-花莲县-卓溪乡" + }, + { + "areaCode": 7212573131115, + "name": "瑞穗乡", + "parentCode": 7213659713107, + "mergerName": "台湾省-花莲县-瑞穗乡" + }, + { + "areaCode": 7212795809852, + "name": "吉安乡", + "parentCode": 7213659713107, + "mergerName": "台湾省-花莲县-吉安乡" + }, + { + "areaCode": 7212845005465, + "name": "富里乡", + "parentCode": 7213659713107, + "mergerName": "台湾省-花莲县-富里乡" + }, + { + "areaCode": 7212976092157, + "name": "新城乡", + "parentCode": 7213659713107, + "mergerName": "台湾省-花莲县-新城乡" + }, + { + "areaCode": 7213006661055, + "name": "寿丰乡", + "parentCode": 7213659713107, + "mergerName": "台湾省-花莲县-寿丰乡" + }, + { + "areaCode": 7213030129284, + "name": "秀林乡", + "parentCode": 7213659713107, + "mergerName": "台湾省-花莲县-秀林乡" + }, + { + "areaCode": 7213280769219, + "name": "玉里镇", + "parentCode": 7213659713107, + "mergerName": "台湾省-花莲县-玉里镇" + }, + { + "areaCode": 7213920061679, + "name": "凤林镇", + "parentCode": 7213659713107, + "mergerName": "台湾省-花莲县-凤林镇" + } + ], + "areaCode": 7213659713107, + "name": "花莲县", + "parentCode": 7212684281636, + "mergerName": "台湾省-花莲县" + }, + { + "children": [ + { + "areaCode": 7210254483509, + "name": "中山区", + "parentCode": 7214088135938, + "mergerName": "台湾省-基隆市-中山区" + }, + { + "areaCode": 7210480594410, + "name": "中正区", + "parentCode": 7214088135938, + "mergerName": "台湾省-基隆市-中正区" + }, + { + "areaCode": 7210515585760, + "name": "暖暖区", + "parentCode": 7214088135938, + "mergerName": "台湾省-基隆市-暖暖区" + }, + { + "areaCode": 7211582018734, + "name": "安乐区", + "parentCode": 7214088135938, + "mergerName": "台湾省-基隆市-安乐区" + }, + { + "areaCode": 7211871222944, + "name": "七堵区", + "parentCode": 7214088135938, + "mergerName": "台湾省-基隆市-七堵区" + }, + { + "areaCode": 7212793206978, + "name": "信义区", + "parentCode": 7214088135938, + "mergerName": "台湾省-基隆市-信义区" + }, + { + "areaCode": 7214257038265, + "name": "仁爱区", + "parentCode": 7214088135938, + "mergerName": "台湾省-基隆市-仁爱区" + } + ], + "areaCode": 7214088135938, + "name": "基隆市", + "parentCode": 7212684281636, + "mergerName": "台湾省-基隆市" + } + ], + "areaCode": 7212684281636, + "name": "台湾省", + "parentCode": 0, + "mergerName": "-台湾省" + } +] diff --git a/tenant-web-ui/src/assets/docs/preview1.png b/tenant-web-ui/src/assets/docs/preview1.png new file mode 100644 index 0000000..01dbdca Binary files /dev/null and b/tenant-web-ui/src/assets/docs/preview1.png differ diff --git a/tenant-web-ui/src/assets/docs/preview2.png b/tenant-web-ui/src/assets/docs/preview2.png new file mode 100644 index 0000000..87c2086 Binary files /dev/null and b/tenant-web-ui/src/assets/docs/preview2.png differ diff --git a/tenant-web-ui/src/assets/docs/preview3.png b/tenant-web-ui/src/assets/docs/preview3.png new file mode 100644 index 0000000..ec5a25d Binary files /dev/null and b/tenant-web-ui/src/assets/docs/preview3.png differ diff --git a/tenant-web-ui/src/assets/docs/qq.png b/tenant-web-ui/src/assets/docs/qq.png new file mode 100644 index 0000000..5cbeffe Binary files /dev/null and b/tenant-web-ui/src/assets/docs/qq.png differ diff --git a/tenant-web-ui/src/assets/docs/wechat.png b/tenant-web-ui/src/assets/docs/wechat.png new file mode 100644 index 0000000..e2ece4a Binary files /dev/null and b/tenant-web-ui/src/assets/docs/wechat.png differ diff --git a/tenant-web-ui/src/assets/error-page/403.svg b/tenant-web-ui/src/assets/error-page/403.svg new file mode 100644 index 0000000..a925322 --- /dev/null +++ b/tenant-web-ui/src/assets/error-page/403.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/assets/error-page/404.svg b/tenant-web-ui/src/assets/error-page/404.svg new file mode 100644 index 0000000..d59f6f1 --- /dev/null +++ b/tenant-web-ui/src/assets/error-page/404.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/assets/layouts/logo-text-1.png b/tenant-web-ui/src/assets/layouts/logo-text-1.png new file mode 100644 index 0000000..363b509 Binary files /dev/null and b/tenant-web-ui/src/assets/layouts/logo-text-1.png differ diff --git a/tenant-web-ui/src/assets/layouts/logo-text-2.png b/tenant-web-ui/src/assets/layouts/logo-text-2.png new file mode 100644 index 0000000..aafb1ba Binary files /dev/null and b/tenant-web-ui/src/assets/layouts/logo-text-2.png differ diff --git a/tenant-web-ui/src/assets/layouts/logo.png b/tenant-web-ui/src/assets/layouts/logo.png new file mode 100644 index 0000000..15b1db0 Binary files /dev/null and b/tenant-web-ui/src/assets/layouts/logo.png differ diff --git a/tenant-web-ui/src/assets/login-bg3.svg b/tenant-web-ui/src/assets/login-bg3.svg new file mode 100644 index 0000000..fc0de1e --- /dev/null +++ b/tenant-web-ui/src/assets/login-bg3.svg @@ -0,0 +1,226 @@ + + + Layer 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tenant-web-ui/src/components/CascaderDept/index.vue b/tenant-web-ui/src/components/CascaderDept/index.vue new file mode 100644 index 0000000..2fbb2b5 --- /dev/null +++ b/tenant-web-ui/src/components/CascaderDept/index.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/tenant-web-ui/src/components/ImageUpload/index.vue b/tenant-web-ui/src/components/ImageUpload/index.vue new file mode 100644 index 0000000..146c63f --- /dev/null +++ b/tenant-web-ui/src/components/ImageUpload/index.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/tenant-web-ui/src/components/Notify/NotifyList.vue b/tenant-web-ui/src/components/Notify/NotifyList.vue new file mode 100644 index 0000000..a86c0b9 --- /dev/null +++ b/tenant-web-ui/src/components/Notify/NotifyList.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/tenant-web-ui/src/components/Notify/index.vue b/tenant-web-ui/src/components/Notify/index.vue new file mode 100644 index 0000000..d783143 --- /dev/null +++ b/tenant-web-ui/src/components/Notify/index.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/tenant-web-ui/src/components/OperateUser/index.vue b/tenant-web-ui/src/components/OperateUser/index.vue new file mode 100644 index 0000000..35b5ff8 --- /dev/null +++ b/tenant-web-ui/src/components/OperateUser/index.vue @@ -0,0 +1,40 @@ + + + diff --git a/tenant-web-ui/src/components/Screenfull/index.vue b/tenant-web-ui/src/components/Screenfull/index.vue new file mode 100644 index 0000000..9259a2f --- /dev/null +++ b/tenant-web-ui/src/components/Screenfull/index.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/tenant-web-ui/src/components/SearchChinaArea/index.vue b/tenant-web-ui/src/components/SearchChinaArea/index.vue new file mode 100644 index 0000000..a5be67d --- /dev/null +++ b/tenant-web-ui/src/components/SearchChinaArea/index.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/tenant-web-ui/src/components/SearchMenu/SearchFooter.vue b/tenant-web-ui/src/components/SearchMenu/SearchFooter.vue new file mode 100644 index 0000000..b30cfd5 --- /dev/null +++ b/tenant-web-ui/src/components/SearchMenu/SearchFooter.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/tenant-web-ui/src/components/SearchMenu/SearchModal.vue b/tenant-web-ui/src/components/SearchMenu/SearchModal.vue new file mode 100644 index 0000000..345ec4e --- /dev/null +++ b/tenant-web-ui/src/components/SearchMenu/SearchModal.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/tenant-web-ui/src/components/SearchMenu/SearchResult.vue b/tenant-web-ui/src/components/SearchMenu/SearchResult.vue new file mode 100644 index 0000000..514f144 --- /dev/null +++ b/tenant-web-ui/src/components/SearchMenu/SearchResult.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/tenant-web-ui/src/components/SearchMenu/index.vue b/tenant-web-ui/src/components/SearchMenu/index.vue new file mode 100644 index 0000000..b9c4ee4 --- /dev/null +++ b/tenant-web-ui/src/components/SearchMenu/index.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/tenant-web-ui/src/components/SearchProject/index.vue b/tenant-web-ui/src/components/SearchProject/index.vue new file mode 100644 index 0000000..cdf57b4 --- /dev/null +++ b/tenant-web-ui/src/components/SearchProject/index.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/tenant-web-ui/src/components/SelectDictData/index.vue b/tenant-web-ui/src/components/SelectDictData/index.vue new file mode 100644 index 0000000..995511f --- /dev/null +++ b/tenant-web-ui/src/components/SelectDictData/index.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/tenant-web-ui/src/components/SvgIcon/index.vue b/tenant-web-ui/src/components/SvgIcon/index.vue new file mode 100644 index 0000000..10356aa --- /dev/null +++ b/tenant-web-ui/src/components/SvgIcon/index.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/tenant-web-ui/src/components/SvgIconSelect/index.vue b/tenant-web-ui/src/components/SvgIconSelect/index.vue new file mode 100644 index 0000000..2c1fb66 --- /dev/null +++ b/tenant-web-ui/src/components/SvgIconSelect/index.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/tenant-web-ui/src/components/SvgLoading/index.vue b/tenant-web-ui/src/components/SvgLoading/index.vue new file mode 100644 index 0000000..87ec04b --- /dev/null +++ b/tenant-web-ui/src/components/SvgLoading/index.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/tenant-web-ui/src/components/ThemeSwitch/index.vue b/tenant-web-ui/src/components/ThemeSwitch/index.vue new file mode 100644 index 0000000..cece294 --- /dev/null +++ b/tenant-web-ui/src/components/ThemeSwitch/index.vue @@ -0,0 +1,30 @@ + + + diff --git a/tenant-web-ui/src/components/UserAvatar/index.vue b/tenant-web-ui/src/components/UserAvatar/index.vue new file mode 100644 index 0000000..82bc67c --- /dev/null +++ b/tenant-web-ui/src/components/UserAvatar/index.vue @@ -0,0 +1,117 @@ + + + + + diff --git a/tenant-web-ui/src/components/UserLoginLog/index.vue b/tenant-web-ui/src/components/UserLoginLog/index.vue new file mode 100644 index 0000000..b748ba0 --- /dev/null +++ b/tenant-web-ui/src/components/UserLoginLog/index.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/tenant-web-ui/src/components/index.ts b/tenant-web-ui/src/components/index.ts new file mode 100644 index 0000000..8a11784 --- /dev/null +++ b/tenant-web-ui/src/components/index.ts @@ -0,0 +1,10 @@ +import { type App } from "vue" + +// 字典数据选择器 +import SelectDictData from "@/components/SelectDictData/index.vue" +import OperateUser from "@/components/OperateUser/index.vue" + +export function loadGlobalComponent(app: App) { + app.component("SelectDictData", SelectDictData) + app.component("OperateUser", OperateUser) +} diff --git a/tenant-web-ui/src/config/layouts.ts b/tenant-web-ui/src/config/layouts.ts new file mode 100644 index 0000000..b883844 --- /dev/null +++ b/tenant-web-ui/src/config/layouts.ts @@ -0,0 +1,60 @@ +import { getConfigLayout } from "@/utils/cache/local-storage" + +/** 项目配置类型 */ +export interface LayoutSettings { + /** 是否显示 Settings Panel */ + showSettings: boolean + /** 布局模式 */ + layoutMode: "left" | "top" | "left-top" + /** 是否显示标签栏 */ + showTagsView: boolean + /** 是否显示 Logo */ + showLogo: boolean + /** 是否固定 Header */ + fixedHeader: boolean + /** 是否显示页脚 Footer */ + showFooter: boolean + /** 是否显示消息通知 */ + showNotify: boolean + /** 是否显示切换主题按钮 */ + showThemeSwitch: boolean + /** 是否显示全屏按钮 */ + showScreenfull: boolean + /** 是否显示搜索按钮 */ + showSearchMenu: boolean + /** 是否缓存标签栏 */ + cacheTagsView: boolean + /** 开启系统水印 */ + showWatermark: boolean + /** 是否显示灰色模式 */ + showGreyMode: boolean + /** 是否显示色弱模式 */ + showColorWeakness: boolean + /** 是否显示搜索租户 */ + showSearchTenant: boolean + /** 是否显示控件尺寸 */ + showControlSize: boolean +} + +/** 默认配置 */ +const defaultSettings: LayoutSettings = { + layoutMode: "left", + showSettings: true, + showTagsView: true, + fixedHeader: true, + showFooter: true, + showLogo: true, + showNotify: true, + showThemeSwitch: true, + showScreenfull: true, + showSearchMenu: true, + cacheTagsView: false, + showWatermark: false, + showGreyMode: false, + showColorWeakness: false, + showSearchTenant: true, + showControlSize: true +} + +/** 项目配置 */ +export const layoutSettings: LayoutSettings = { ...defaultSettings, ...getConfigLayout() } diff --git a/tenant-web-ui/src/config/route.ts b/tenant-web-ui/src/config/route.ts new file mode 100644 index 0000000..3475024 --- /dev/null +++ b/tenant-web-ui/src/config/route.ts @@ -0,0 +1,28 @@ +/** 动态路由配置 */ +interface RouteSettings { + /** + * 是否开启动态路由功能? + * 1. 开启后需要后端配合,在查询用户详情接口返回当前用户可以用来判断并加载动态路由的字段(该项目用的是角色 roles 字段) + * 2. 假如项目不需要根据不同的用户来显示不同的页面,则应该将 async: false + */ + async: boolean + /** 当动态路由功能关闭时: + * 1. 应该将所有路由都写到常驻路由里面(表明所有登陆的用户能访问的页面都是一样的) + * 2. 系统自动给当前登录用户赋值一个没有任何作用的默认角色 + */ + defaultRoles: Array + /** + * 是否开启三级及其以上路由缓存功能? + * 1. 开启后会进行路由降级(把三级及其以上的路由转化为二级路由) + * 2. 由于都会转成二级路由,所以二级及其以上路由有内嵌子路由将会失效 + */ + thirdLevelRouteCache: boolean +} + +const routeSettings: RouteSettings = { + async: true, + defaultRoles: ["DEFAULT_ROLE"], + thirdLevelRouteCache: false +} + +export default routeSettings diff --git a/tenant-web-ui/src/config/white-list.ts b/tenant-web-ui/src/config/white-list.ts new file mode 100644 index 0000000..a0359c6 --- /dev/null +++ b/tenant-web-ui/src/config/white-list.ts @@ -0,0 +1,17 @@ +import { type RouteLocationNormalized } from "vue-router" + +const loginUrl = "/login" + +/** 免登录白名单(匹配路由 path) */ +const whiteListByPath: string[] = [loginUrl] + +/** 免登录白名单(匹配路由 name) */ +const whiteListByName: string[] = [] + +/** 判断是否在白名单 */ +const isWhiteList = (to: RouteLocationNormalized) => { + // path 和 name 任意一个匹配上即可 + return whiteListByPath.indexOf(to.path) !== -1 || whiteListByName.indexOf(to.name as any) !== -1 +} + +export { isWhiteList, whiteListByPath, loginUrl } diff --git a/tenant-web-ui/src/constants/app-key.ts b/tenant-web-ui/src/constants/app-key.ts new file mode 100644 index 0000000..4c921c5 --- /dev/null +++ b/tenant-web-ui/src/constants/app-key.ts @@ -0,0 +1,13 @@ +/** 设备类型 */ +export enum DeviceEnum { + Mobile, + Desktop +} + +/** 侧边栏打开状态常量 */ +export const SIDEBAR_OPENED = "opened" +/** 侧边栏关闭状态常量 */ +export const SIDEBAR_CLOSED = "closed" + +export type SidebarOpened = typeof SIDEBAR_OPENED +export type SidebarClosed = typeof SIDEBAR_CLOSED diff --git a/tenant-web-ui/src/constants/cache-key.ts b/tenant-web-ui/src/constants/cache-key.ts new file mode 100644 index 0000000..9e52c7e --- /dev/null +++ b/tenant-web-ui/src/constants/cache-key.ts @@ -0,0 +1,16 @@ +const SYSTEM_NAME = "molly" + +/** 缓存数据时用到的 Key */ +class CacheKey { + static readonly TOKEN = `${SYSTEM_NAME}-token-key` + static readonly CONFIG_LAYOUT = `${SYSTEM_NAME}-config-layout-key` + static readonly SIDEBAR_STATUS = `${SYSTEM_NAME}-sidebar-status-key` + static readonly ACTIVE_THEME_NAME = `${SYSTEM_NAME}-active-theme-name-key` + static readonly VISITED_VIEWS = `${SYSTEM_NAME}-visited-views-key` + static readonly CACHED_VIEWS = `${SYSTEM_NAME}-cached-views-key` + static readonly TENANT_ID = `${SYSTEM_NAME}-tenant-id-key` + static readonly CONTROL_SIZE = `${SYSTEM_NAME}-control-size` + static readonly USER_AND_PASSWORD = `${SYSTEM_NAME}-user-and-password` +} + +export default CacheKey diff --git a/tenant-web-ui/src/directives/index.ts b/tenant-web-ui/src/directives/index.ts new file mode 100644 index 0000000..d5d1bd4 --- /dev/null +++ b/tenant-web-ui/src/directives/index.ts @@ -0,0 +1,56 @@ +import { type App } from "vue" +import { type Directive } from "vue" +import { useUserStoreHook } from "@/store/modules/user" + +/** 挂载自定义指令 */ +export function loadDirectives(app: App) { + // example: v-has='pre_dept:view' + app.directive("has", permission) + // example: v-admin + app.directive("admin", adminFlag) + // example: v-preventReClick + app.directive("preventReClick", preventReClick) +} + +/** 权限指令,和权限判断函数 checkPermission 功能类似 */ +const permission: Directive = { + mounted(el, binding) { + const { value } = binding + const buttons = useUserStoreHook().buttons + if (value && value instanceof Array && value.length > 0) { + const hasPermission = buttons.some((button) => { + return value.includes(button.perms) + }) + if (!hasPermission) { + el.style.display = "none" + } + } else { + throw new Error(`need permissions! Like v-has="['update:data','add:data']"`) + } + } +} + +/** 权限指令,判断当前登录的用户是否管理员 */ +const adminFlag: Directive = { + mounted(el) { + const hasPermission = useUserStoreHook().userInfo?.adminFlag === 1 + if (!hasPermission) { + el.style.display = "none" + } + } +} + +/** 防止重复请求 指令 */ +const preventReClick: Directive = { + mounted(el, binding) { + const { value } = binding + el.addEventListener("click", () => { + el.disabled = true + el.loading = true + setTimeout(() => { + el.disabled = false + el.loading = false + }, value || 3000) + }) + } +} diff --git a/tenant-web-ui/src/hooks/useFetchSelect.ts b/tenant-web-ui/src/hooks/useFetchSelect.ts new file mode 100644 index 0000000..e52b457 --- /dev/null +++ b/tenant-web-ui/src/hooks/useFetchSelect.ts @@ -0,0 +1,51 @@ +import { ref, onMounted } from "vue" + +type OptionValue = string | number + +/** Select 需要的数据格式 */ +interface SelectOption { + value: OptionValue + label: string + disabled?: boolean +} + +/** 入参格式,暂时只需要传递 api 函数即可 */ +interface FetchSelectProps { + api: () => Promise> +} + +export function useFetchSelect(props: FetchSelectProps) { + const { api } = props + + const loading = ref(false) + + const options = ref([]) + + const value = ref("") + + /** 调用接口获取数据 */ + const loadData = () => { + loading.value = true + options.value = [] + api() + .then((resp) => { + const { status, data } = resp + if (status === 200) { + options.value = data + } + }) + .finally(() => { + loading.value = false + }) + } + + onMounted(() => { + loadData() + }) + + return { + loading, + options, + value + } +} diff --git a/tenant-web-ui/src/hooks/useFullscreenLoading.ts b/tenant-web-ui/src/hooks/useFullscreenLoading.ts new file mode 100644 index 0000000..8e10a29 --- /dev/null +++ b/tenant-web-ui/src/hooks/useFullscreenLoading.ts @@ -0,0 +1,35 @@ +import { type LoadingOptions, ElLoading } from "element-plus" + +const defaultOptions = { + lock: true, + text: "加载中..." +} + +interface LoadingInstance { + close: () => void +} + +interface UseFullscreenLoading { + ReturnType>( + fn: T, + options?: LoadingOptions + ): (...args: Parameters) => Promise> +} + +/** + * 传入一个函数 fn,在它执行周期内,加上「全屏」loading + * @param fn 要执行的函数 + * @param options LoadingOptions + * @returns 返回一个新的函数,该函数返回一个 Promise + */ +export const useFullscreenLoading: UseFullscreenLoading = (fn, options = {}) => { + let loadingInstance: LoadingInstance + return async (...args) => { + try { + loadingInstance = ElLoading.service({ ...defaultOptions, ...options }) + return await fn(...args) + } finally { + loadingInstance?.close() + } + } +} diff --git a/tenant-web-ui/src/hooks/useIndex.ts b/tenant-web-ui/src/hooks/useIndex.ts new file mode 100644 index 0000000..80bdcca --- /dev/null +++ b/tenant-web-ui/src/hooks/useIndex.ts @@ -0,0 +1,32 @@ +import { computed } from "vue" +import { chinaAreaDeepQuery, expiredDateAgo, timeAgo } from "@/utils" + +// 以前的时间 +const showTimeAgo = computed(() => { + return (value: string) => timeAgo(value) +}) + +// 未来的时间 +const showExpiredDateAgo = computed(() => { + return (value: string) => expiredDateAgo(value) +}) + +// 截取字符串 +const showStringOverflow = computed(() => { + return (value: string, len = 20) => { + return value.length <= len ? value : value.substring(0, len) + } +}) + +// 显示中国行政区域名称 +const showChinaArea = computed(() => { + return (value: number) => { + const area = chinaAreaDeepQuery(value) + if (area) { + return area.mergerName.replaceAll("-", " / ") + } + return "" + } +}) + +export { showTimeAgo, showExpiredDateAgo, showStringOverflow, showChinaArea } diff --git a/tenant-web-ui/src/hooks/usePagination.ts b/tenant-web-ui/src/hooks/usePagination.ts new file mode 100644 index 0000000..8daf6eb --- /dev/null +++ b/tenant-web-ui/src/hooks/usePagination.ts @@ -0,0 +1,46 @@ +import { reactive } from "vue" + +interface DefaultPaginationData { + total: number + currentPage: number + pageSizes: number[] + pageSize: number + layout: string +} + +interface PaginationData { + total?: number + currentPage?: number + pageSizes?: number[] + pageSize?: number + layout?: string + keywords?: string +} + +/** 默认的分页参数 */ +const defaultPaginationData: DefaultPaginationData = { + total: 0, + currentPage: 1, + pageSizes: [10, 20, 50], + pageSize: 10, + layout: "total, sizes, prev, pager, next, jumper" +} + +export function usePagination(fn: Function, initialPaginationData: PaginationData = {}) { + /** 合并分页参数 */ + const paginationData = reactive({ ...defaultPaginationData, ...initialPaginationData }) + + /** 改变当前页码 */ + const handleCurrentChange = (value: number) => { + paginationData.currentPage = value + fn() + } + + /** 改变页面大小 */ + const handleSizeChange = (value: number) => { + paginationData.pageSize = value + fn() + } + + return { paginationData, handleCurrentChange, handleSizeChange } +} diff --git a/tenant-web-ui/src/hooks/useRouteListener.ts b/tenant-web-ui/src/hooks/useRouteListener.ts new file mode 100644 index 0000000..e8fab52 --- /dev/null +++ b/tenant-web-ui/src/hooks/useRouteListener.ts @@ -0,0 +1,48 @@ +import { onBeforeUnmount } from "vue" +import mitt, { type Handler } from "mitt" +import { type RouteLocationNormalized } from "vue-router" + +/** 回调函数的类型 */ +type Callback = (route: RouteLocationNormalized) => void + +const emitter = mitt() +const key = Symbol("ROUTE_CHANGE") +let latestRoute: RouteLocationNormalized + +/** 设置最新的路由信息,触发路由变化事件 */ +export const setRouteChange = (to: RouteLocationNormalized) => { + // 触发事件 + emitter.emit(key, to) + // 缓存最新的路由信息 + latestRoute = to +} + +/** 单独监听路由会浪费渲染性能,使用发布订阅模式去进行分发管理 */ +export function useRouteListener() { + /** 回调函数集合 */ + const callbackList: Callback[] = [] + + /** 监听路由变化(可以选择立即执行) */ + const listenerRouteChange = (callback: Callback, immediate = false) => { + // 缓存回调函数 + callbackList.push(callback) + // 监听事件 + emitter.on(key, callback as Handler) + // 可以选择立即执行一次回调函数 + immediate && latestRoute && callback(latestRoute) + } + + /** 移除路由变化事件监听器 */ + const removeRouteListener = (callback: Callback) => { + emitter.off(key, callback as Handler) + } + + /** 组件销毁前移除监听器 */ + onBeforeUnmount(() => { + for (let i = 0; i < callbackList.length; i++) { + removeRouteListener(callbackList[i]) + } + }) + + return { listenerRouteChange, removeRouteListener } +} diff --git a/tenant-web-ui/src/hooks/useTenantAndProject.ts b/tenant-web-ui/src/hooks/useTenantAndProject.ts new file mode 100644 index 0000000..b5e2750 --- /dev/null +++ b/tenant-web-ui/src/hooks/useTenantAndProject.ts @@ -0,0 +1,15 @@ +import { computed } from "vue" +import { useProjectStoreHook } from "@/store/modules/project" + +const projectStore = useProjectStoreHook() + +export function useTenantAndProject() { + // 租户ID 和 项目 组成的 唯一ID + const currentOnlyId = computed(() => { + return projectStore.getCurrentProjectId() + }) + + return { + currentOnlyId + } +} diff --git a/tenant-web-ui/src/hooks/useTheme.ts b/tenant-web-ui/src/hooks/useTheme.ts new file mode 100644 index 0000000..0ca28a2 --- /dev/null +++ b/tenant-web-ui/src/hooks/useTheme.ts @@ -0,0 +1,57 @@ +import { ref, watchEffect } from "vue" +import { getActiveThemeName, setActiveThemeName } from "@/utils/cache/local-storage" + +const DEFAULT_THEME_NAME = "normal" +type DefaultThemeName = typeof DEFAULT_THEME_NAME + +/** 注册的主题名称, 其中 DefaultThemeName 是必填的 */ +export type ThemeName = DefaultThemeName | "dark" | "dark-blue" + +interface ThemeList { + title: string + name: ThemeName +} + +/** 主题列表 */ +const themeList: ThemeList[] = [ + { + title: "默认", + name: DEFAULT_THEME_NAME + }, + { + title: "黑暗", + name: "dark" + }, + { + title: "深蓝", + name: "dark-blue" + } +] + +/** 正在应用的主题名称 */ +const activeThemeName = ref(getActiveThemeName() || DEFAULT_THEME_NAME) + +/** 设置主题 */ +const setTheme = (value: ThemeName) => { + activeThemeName.value = value +} + +/** 在 html 根元素上挂载 class */ +const setHtmlRootClassName = (value: ThemeName) => { + document.documentElement.className = value +} + +/** 初始化 */ +const initTheme = () => { + // watchEffect 来收集副作用 + watchEffect(() => { + const value = activeThemeName.value + setHtmlRootClassName(value) + setActiveThemeName(value) + }) +} + +/** 主题 hook */ +export function useTheme() { + return { themeList, activeThemeName, initTheme, setTheme } +} diff --git a/tenant-web-ui/src/hooks/useTitle.ts b/tenant-web-ui/src/hooks/useTitle.ts new file mode 100644 index 0000000..91a7118 --- /dev/null +++ b/tenant-web-ui/src/hooks/useTitle.ts @@ -0,0 +1,23 @@ +import { ref, watch } from "vue" + +/** 项目标题 */ +const VITE_APP_TITLE = import.meta.env.VITE_APP_TITLE ?? "V3 Admin Vite" + +/** 动态标题 */ +const dynamicTitle = ref("") + +/** 设置标题 */ +const setTitle = (title?: string) => { + dynamicTitle.value = title ? `${VITE_APP_TITLE} | ${title}` : VITE_APP_TITLE +} + +/** 监听标题变化 */ +watch(dynamicTitle, (value, oldValue) => { + if (document && value !== oldValue) { + document.title = value + } +}) + +export function useTitle() { + return { setTitle } +} diff --git a/tenant-web-ui/src/hooks/useWatermark.ts b/tenant-web-ui/src/hooks/useWatermark.ts new file mode 100644 index 0000000..87483bd --- /dev/null +++ b/tenant-web-ui/src/hooks/useWatermark.ts @@ -0,0 +1,236 @@ +import { type Ref, onBeforeUnmount, ref } from "vue" +import { debounce } from "lodash-es" + +type Observer = { + watermarkElMutationObserver?: MutationObserver + parentElMutationObserver?: MutationObserver + parentElResizeObserver?: ResizeObserver +} + +type DefaultConfig = typeof defaultConfig + +/** 默认配置 */ +const defaultConfig = { + /** 防御(默认开启,能防御水印被删除或隐藏,但可能会有性能损耗) */ + defense: true, + /** 文本颜色 */ + color: "#c0c4cc", + /** 文本透明度 */ + opacity: 0.5, + /** 文本字体大小 */ + size: 16, + /** 文本字体 */ + family: "serif", + /** 文本倾斜角度 */ + angle: -20, + /** 一处水印所占宽度(数值越大水印密度越低) */ + width: 300, + /** 一处水印所占高度(数值越大水印密度越低) */ + height: 200 +} + +/** body 元素 */ +const bodyEl = ref(document.body) + +/** + * 创建水印 + * 1. 可以选择传入挂载水印的容器元素,默认是 body + * 2. 做了水印防御,能有效防御别人打开控制台删除或隐藏水印 + */ +export function useWatermark(parentEl: Ref = bodyEl) { + /** 备份文本 */ + let backupText: string + /** 最终配置 */ + let mergeConfig: DefaultConfig + /** 水印元素 */ + let watermarkEl: HTMLElement | null = null + /** 观察器 */ + const observer: Observer = { + watermarkElMutationObserver: undefined, + parentElMutationObserver: undefined, + parentElResizeObserver: undefined + } + + /** 设置水印 */ + const setWatermark = (text: string, config: Partial = {}) => { + if (!parentEl.value) { + console.warn("请在 DOM 挂载完成后再调用 setWatermark 方法设置水印") + return + } + // 备份文本 + backupText = text + // 合并配置 + mergeConfig = { ...defaultConfig, ...config } + // 创建或更新水印元素 + watermarkEl ? updateWatermarkEl() : createWatermarkEl() + // 监听水印元素和容器元素的变化 + addElListener(parentEl.value) + } + + /** 创建水印元素 */ + const createWatermarkEl = () => { + const isBody = parentEl.value!.tagName.toLowerCase() === bodyEl.value.tagName.toLowerCase() + const watermarkElPosition = isBody ? "fixed" : "absolute" + const parentElPosition = isBody ? "" : "relative" + watermarkEl = document.createElement("div") + watermarkEl.style.pointerEvents = "none" + watermarkEl.style.top = "0" + watermarkEl.style.left = "0" + watermarkEl.style.position = watermarkElPosition + watermarkEl.style.zIndex = "99999" + const { clientWidth, clientHeight } = parentEl.value! + updateWatermarkEl({ width: clientWidth, height: clientHeight }) + // 设置水印容器为相对定位 + parentEl.value!.style.position = parentElPosition + // 将水印元素添加到水印容器中 + parentEl.value!.appendChild(watermarkEl) + } + + /** 更新水印元素 */ + const updateWatermarkEl = ( + options: Partial<{ + width: number + height: number + }> = {} + ) => { + if (!watermarkEl) return + backupText && (watermarkEl.style.background = `url(${createBase64()}) left top repeat`) + options.width && (watermarkEl.style.width = `${options.width}px`) + options.height && (watermarkEl.style.height = `${options.height}px`) + } + + /** 创建 base64 图片 */ + const createBase64 = () => { + const { color, opacity, size, family, angle, width, height } = mergeConfig + const canvasEl = document.createElement("canvas") + canvasEl.width = width + canvasEl.height = height + const ctx = canvasEl.getContext("2d") + if (ctx) { + ctx.fillStyle = color + ctx.globalAlpha = opacity + ctx.font = `${size}px ${family}` + ctx.rotate((Math.PI / 180) * angle) + ctx.fillText(backupText, 0, height / 2) + } + return canvasEl.toDataURL() + } + + /** 清除水印 */ + const clearWatermark = () => { + if (!parentEl.value || !watermarkEl) return + // 移除对水印元素和容器元素的监听 + removeListener() + // 移除水印元素 + try { + parentEl.value.removeChild(watermarkEl) + } catch { + // 比如在无防御情况下,用户打开控制台删除了这个元素 + console.warn("水印元素已不存在,请重新创建") + } finally { + watermarkEl = null + } + } + + /** 刷新水印(防御时调用) */ + const updateWatermark = debounce(() => { + clearWatermark() + createWatermarkEl() + addElListener(parentEl.value!) + }, 100) + + /** 监听水印元素和容器元素的变化(DOM 变化 & DOM 大小变化) */ + const addElListener = (targetNode: HTMLElement) => { + // 判断是否开启防御 + if (mergeConfig.defense) { + // 防止重复添加监听 + if (!observer.watermarkElMutationObserver && !observer.parentElMutationObserver) { + // 监听 DOM 变化 + addMutationListener(targetNode) + } + } else { + // 无防御时不需要 mutation 监听 + removeListener("mutation") + } + // 防止重复添加监听 + if (!observer.parentElResizeObserver) { + // 监听 DOM 大小变化 + addResizeListener(targetNode) + } + } + + /** 移除对水印元素和容器元素的监听,传参可指定要移除哪个监听,不传默认移除全部监听 */ + const removeListener = (kind: "mutation" | "resize" | "all" = "all") => { + // 移除 mutation 监听 + if (kind === "mutation" || kind === "all") { + observer.watermarkElMutationObserver?.disconnect() + observer.watermarkElMutationObserver = undefined + observer.parentElMutationObserver?.disconnect() + observer.parentElMutationObserver = undefined + } + // 移除 resize 监听 + if (kind === "resize" || kind === "all") { + observer.parentElResizeObserver?.disconnect() + observer.parentElResizeObserver = undefined + } + } + + /** 监听 DOM 变化 */ + const addMutationListener = (targetNode: HTMLElement) => { + // 当观察到变动时执行的回调 + const mutationCallback = debounce((mutationList: MutationRecord[]) => { + // 水印的防御(防止用户手动删除水印元素或通过 CSS 隐藏水印) + mutationList.forEach( + debounce((mutation: MutationRecord) => { + switch (mutation.type) { + case "attributes": + mutation.target === watermarkEl && updateWatermark() + break + case "childList": + mutation.removedNodes.forEach((item) => { + item === watermarkEl && targetNode.appendChild(watermarkEl) + }) + break + } + }, 100) + ) + }, 100) + // 创建观察器实例并传入回调 + observer.watermarkElMutationObserver = new MutationObserver(mutationCallback) + observer.parentElMutationObserver = new MutationObserver(mutationCallback) + // 以上述配置开始观察目标节点 + observer.watermarkElMutationObserver.observe(watermarkEl!, { + // 观察目标节点属性是否变动,默认为 true + attributes: true, + // 观察目标子节点是否有添加或者删除,默认为 false + childList: false, + // 是否拓展到观察所有后代节点,默认为 false + subtree: false + }) + observer.parentElMutationObserver.observe(targetNode, { + attributes: false, + childList: true, + subtree: false + }) + } + + /** 监听 DOM 大小变化 */ + const addResizeListener = (targetNode: HTMLElement) => { + // 当 targetNode 元素大小变化时去更新整个水印的大小 + const resizeCallback = debounce(() => { + const { clientWidth, clientHeight } = targetNode + updateWatermarkEl({ width: clientWidth, height: clientHeight }) + }, 500) + // 创建一个观察器实例并传入回调 + observer.parentElResizeObserver = new ResizeObserver(resizeCallback) + // 开始观察目标节点 + observer.parentElResizeObserver.observe(targetNode) + } + + /** 在组件卸载前移除水印以及各种监听 */ + onBeforeUnmount(() => { + clearWatermark() + }) + + return { setWatermark, clearWatermark } +} diff --git a/tenant-web-ui/src/icons/index.ts b/tenant-web-ui/src/icons/index.ts new file mode 100644 index 0000000..6062c51 --- /dev/null +++ b/tenant-web-ui/src/icons/index.ts @@ -0,0 +1,7 @@ +import { type App } from "vue" +import SvgIcon from "@/components/SvgIcon/index.vue" // Svg Component +import "virtual:svg-icons-register" + +export function loadSvg(app: App) { + app.component("SvgIcon", SvgIcon) +} diff --git a/tenant-web-ui/src/icons/svg/404.svg b/tenant-web-ui/src/icons/svg/404.svg new file mode 100644 index 0000000..1319e77 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/404.svg @@ -0,0 +1 @@ + diff --git a/tenant-web-ui/src/icons/svg/bug.svg b/tenant-web-ui/src/icons/svg/bug.svg new file mode 100644 index 0000000..9b35ad8 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/bug.svg @@ -0,0 +1 @@ + diff --git a/tenant-web-ui/src/icons/svg/component.svg b/tenant-web-ui/src/icons/svg/component.svg new file mode 100644 index 0000000..94280f4 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/component.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/config.svg b/tenant-web-ui/src/icons/svg/config.svg new file mode 100644 index 0000000..bfe61c1 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/config.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/dashboard.svg b/tenant-web-ui/src/icons/svg/dashboard.svg new file mode 100644 index 0000000..c8863a0 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/dashboard.svg @@ -0,0 +1 @@ + diff --git a/tenant-web-ui/src/icons/svg/device.svg b/tenant-web-ui/src/icons/svg/device.svg new file mode 100644 index 0000000..9dfa490 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/device.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/device_deploy.svg b/tenant-web-ui/src/icons/svg/device_deploy.svg new file mode 100644 index 0000000..f678a1e --- /dev/null +++ b/tenant-web-ui/src/icons/svg/device_deploy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/device_list.svg b/tenant-web-ui/src/icons/svg/device_list.svg new file mode 100644 index 0000000..848ec20 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/device_list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/doc.svg b/tenant-web-ui/src/icons/svg/doc.svg new file mode 100644 index 0000000..6044b38 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/doc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/enter_outlined.svg b/tenant-web-ui/src/icons/svg/enter_outlined.svg new file mode 100644 index 0000000..069bd2e --- /dev/null +++ b/tenant-web-ui/src/icons/svg/enter_outlined.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/fullscreen-exit.svg b/tenant-web-ui/src/icons/svg/fullscreen-exit.svg new file mode 100644 index 0000000..42aa505 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/fullscreen-exit.svg @@ -0,0 +1 @@ + diff --git a/tenant-web-ui/src/icons/svg/fullscreen.svg b/tenant-web-ui/src/icons/svg/fullscreen.svg new file mode 100644 index 0000000..a97be9e --- /dev/null +++ b/tenant-web-ui/src/icons/svg/fullscreen.svg @@ -0,0 +1 @@ + diff --git a/tenant-web-ui/src/icons/svg/github.svg b/tenant-web-ui/src/icons/svg/github.svg new file mode 100644 index 0000000..24e08c2 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/help.svg b/tenant-web-ui/src/icons/svg/help.svg new file mode 100644 index 0000000..b0d823d --- /dev/null +++ b/tenant-web-ui/src/icons/svg/help.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/interface.svg b/tenant-web-ui/src/icons/svg/interface.svg new file mode 100644 index 0000000..32bfee1 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/interface.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/keyboard-down.svg b/tenant-web-ui/src/icons/svg/keyboard-down.svg new file mode 100644 index 0000000..de62543 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/keyboard-down.svg @@ -0,0 +1 @@ + diff --git a/tenant-web-ui/src/icons/svg/keyboard-enter.svg b/tenant-web-ui/src/icons/svg/keyboard-enter.svg new file mode 100644 index 0000000..819b87e --- /dev/null +++ b/tenant-web-ui/src/icons/svg/keyboard-enter.svg @@ -0,0 +1 @@ + diff --git a/tenant-web-ui/src/icons/svg/keyboard-esc.svg b/tenant-web-ui/src/icons/svg/keyboard-esc.svg new file mode 100644 index 0000000..33256bf --- /dev/null +++ b/tenant-web-ui/src/icons/svg/keyboard-esc.svg @@ -0,0 +1 @@ + diff --git a/tenant-web-ui/src/icons/svg/keyboard-up.svg b/tenant-web-ui/src/icons/svg/keyboard-up.svg new file mode 100644 index 0000000..e84519a --- /dev/null +++ b/tenant-web-ui/src/icons/svg/keyboard-up.svg @@ -0,0 +1 @@ + diff --git a/tenant-web-ui/src/icons/svg/keyboard_esc.svg b/tenant-web-ui/src/icons/svg/keyboard_esc.svg new file mode 100644 index 0000000..6898751 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/keyboard_esc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/link.svg b/tenant-web-ui/src/icons/svg/link.svg new file mode 100644 index 0000000..9ac0b2c --- /dev/null +++ b/tenant-web-ui/src/icons/svg/link.svg @@ -0,0 +1 @@ + diff --git a/tenant-web-ui/src/icons/svg/lock.svg b/tenant-web-ui/src/icons/svg/lock.svg new file mode 100644 index 0000000..21a7582 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/lock.svg @@ -0,0 +1 @@ + diff --git a/tenant-web-ui/src/icons/svg/menu.svg b/tenant-web-ui/src/icons/svg/menu.svg new file mode 100644 index 0000000..5321191 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/menu.svg @@ -0,0 +1 @@ + diff --git a/tenant-web-ui/src/icons/svg/message.svg b/tenant-web-ui/src/icons/svg/message.svg new file mode 100644 index 0000000..14ca817 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/message.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/money.svg b/tenant-web-ui/src/icons/svg/money.svg new file mode 100644 index 0000000..c1580de --- /dev/null +++ b/tenant-web-ui/src/icons/svg/money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/monitor.svg b/tenant-web-ui/src/icons/svg/monitor.svg new file mode 100644 index 0000000..9f0f6e0 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/monitor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/notice.svg b/tenant-web-ui/src/icons/svg/notice.svg new file mode 100644 index 0000000..16f38ae --- /dev/null +++ b/tenant-web-ui/src/icons/svg/notice.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/peoples.svg b/tenant-web-ui/src/icons/svg/peoples.svg new file mode 100644 index 0000000..aab852e --- /dev/null +++ b/tenant-web-ui/src/icons/svg/peoples.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/pre.svg b/tenant-web-ui/src/icons/svg/pre.svg new file mode 100644 index 0000000..6152042 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/pre.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/pre_dept.svg b/tenant-web-ui/src/icons/svg/pre_dept.svg new file mode 100644 index 0000000..88a9031 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/pre_dept.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/pre_perm.svg b/tenant-web-ui/src/icons/svg/pre_perm.svg new file mode 100644 index 0000000..c4ef0d9 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/pre_perm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/pre_role.svg b/tenant-web-ui/src/icons/svg/pre_role.svg new file mode 100644 index 0000000..d3ee7ff --- /dev/null +++ b/tenant-web-ui/src/icons/svg/pre_role.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/pre_user.svg b/tenant-web-ui/src/icons/svg/pre_user.svg new file mode 100644 index 0000000..f04cbe2 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/pre_user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/project.svg b/tenant-web-ui/src/icons/svg/project.svg new file mode 100644 index 0000000..e75b24d --- /dev/null +++ b/tenant-web-ui/src/icons/svg/project.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/project_list.svg b/tenant-web-ui/src/icons/svg/project_list.svg new file mode 100644 index 0000000..327e5d2 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/project_list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/search.svg b/tenant-web-ui/src/icons/svg/search.svg new file mode 100644 index 0000000..691a5f1 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/search.svg @@ -0,0 +1 @@ + diff --git a/tenant-web-ui/src/icons/svg/server_monitor.svg b/tenant-web-ui/src/icons/svg/server_monitor.svg new file mode 100644 index 0000000..7c0cc23 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/server_monitor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/size.svg b/tenant-web-ui/src/icons/svg/size.svg new file mode 100644 index 0000000..ddb25b8 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/size.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/statistics.svg b/tenant-web-ui/src/icons/svg/statistics.svg new file mode 100644 index 0000000..3047883 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/statistics.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/statistics_energy.svg b/tenant-web-ui/src/icons/svg/statistics_energy.svg new file mode 100644 index 0000000..2d66991 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/statistics_energy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/statistics_trend.svg b/tenant-web-ui/src/icons/svg/statistics_trend.svg new file mode 100644 index 0000000..2efdf94 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/statistics_trend.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/sys.svg b/tenant-web-ui/src/icons/svg/sys.svg new file mode 100644 index 0000000..c559b0e --- /dev/null +++ b/tenant-web-ui/src/icons/svg/sys.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/sys_china_area.svg b/tenant-web-ui/src/icons/svg/sys_china_area.svg new file mode 100644 index 0000000..81a78ac --- /dev/null +++ b/tenant-web-ui/src/icons/svg/sys_china_area.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/sys_dictionary.svg b/tenant-web-ui/src/icons/svg/sys_dictionary.svg new file mode 100644 index 0000000..8dc289f --- /dev/null +++ b/tenant-web-ui/src/icons/svg/sys_dictionary.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/sys_login_log.svg b/tenant-web-ui/src/icons/svg/sys_login_log.svg new file mode 100644 index 0000000..f2b04da --- /dev/null +++ b/tenant-web-ui/src/icons/svg/sys_login_log.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/sys_logs.svg b/tenant-web-ui/src/icons/svg/sys_logs.svg new file mode 100644 index 0000000..7ced9e9 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/sys_logs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/sys_oper_log.svg b/tenant-web-ui/src/icons/svg/sys_oper_log.svg new file mode 100644 index 0000000..097fee1 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/sys_oper_log.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/sys_swagger2.svg b/tenant-web-ui/src/icons/svg/sys_swagger2.svg new file mode 100644 index 0000000..d39f755 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/sys_swagger2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/template.svg b/tenant-web-ui/src/icons/svg/template.svg new file mode 100644 index 0000000..bc33f60 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/template.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/icons/svg/unocss.svg b/tenant-web-ui/src/icons/svg/unocss.svg new file mode 100644 index 0000000..5eaef35 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/unocss.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/tenant-web-ui/src/icons/svg/user.svg b/tenant-web-ui/src/icons/svg/user.svg new file mode 100644 index 0000000..0ba0716 --- /dev/null +++ b/tenant-web-ui/src/icons/svg/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tenant-web-ui/src/layouts/LeftMode.vue b/tenant-web-ui/src/layouts/LeftMode.vue new file mode 100644 index 0000000..3bc9764 --- /dev/null +++ b/tenant-web-ui/src/layouts/LeftMode.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/tenant-web-ui/src/layouts/LeftTopMode.vue b/tenant-web-ui/src/layouts/LeftTopMode.vue new file mode 100644 index 0000000..dcb4096 --- /dev/null +++ b/tenant-web-ui/src/layouts/LeftTopMode.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/tenant-web-ui/src/layouts/TopMode.vue b/tenant-web-ui/src/layouts/TopMode.vue new file mode 100644 index 0000000..983b049 --- /dev/null +++ b/tenant-web-ui/src/layouts/TopMode.vue @@ -0,0 +1,77 @@ + + + + + diff --git a/tenant-web-ui/src/layouts/components/AppMain.vue b/tenant-web-ui/src/layouts/components/AppMain.vue new file mode 100644 index 0000000..433ba9c --- /dev/null +++ b/tenant-web-ui/src/layouts/components/AppMain.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/tenant-web-ui/src/layouts/components/Breadcrumb/index.vue b/tenant-web-ui/src/layouts/components/Breadcrumb/index.vue new file mode 100644 index 0000000..85c702c --- /dev/null +++ b/tenant-web-ui/src/layouts/components/Breadcrumb/index.vue @@ -0,0 +1,71 @@ + + + + + diff --git a/tenant-web-ui/src/layouts/components/CompConsumer/index.ts b/tenant-web-ui/src/layouts/components/CompConsumer/index.ts new file mode 100644 index 0000000..276dae1 --- /dev/null +++ b/tenant-web-ui/src/layouts/components/CompConsumer/index.ts @@ -0,0 +1,67 @@ +import { type VNode, cloneVNode, createVNode, defineComponent, h, KeepAlive } from "vue" +import { useRoute } from "vue-router" +import { useTagsViewStore } from "@/store/modules/tags-view" + +interface CompConsumerProps { + component: VNode +} + +/** 定义 compMap 对象,用于存储路由名称和对应的组件 */ +const compMap = new Map() + +/** + * CompConsumer 组件 + * 用法:替换 标签以及内部代码,变成: + * 优点:缓存路由时只需写路由 Name,无需再写组件 Name + * 缺点:当路由表有动态路由匹配时(指向同一个组件),会出现复用组件的情况(例如修改 /info/1 时 /info/2 也会跟着改变) + */ +export const CompConsumer = defineComponent( + (props: CompConsumerProps) => { + const tagsViewStore = useTagsViewStore() + const route = useRoute() + return () => { + // 获取传入的组件 + const component = props.component + // 判断当前是否包含 name,如果不包含 name,那就直接处理掉 name + if (!route.name) return component + // 获取当前组件的名称 + const compName = (component.type as any)?.name + // 获取当前路由的名称 + const routeName = route.name as string + let Comp: VNode + // 检查 compMap 中是否已经存在对应的组件 + if (compMap.has(routeName)) { + // 如果存在,则直接使用该组件进行渲染 + Comp = compMap.get(routeName)! + } else { + // 如果不存在,则克隆传入的组件并创建一个新的组件,将其添加到 compMap 中 + const node = cloneVNode(component) + if (compName && compName === routeName) { + ;(node.type as any).name = `__${compName}__CUSTOM_NAME` + } + // @ts-expect-error this is VNode + Comp = defineComponent({ + name: routeName, + setup() { + return () => node + } + }) + compMap.set(routeName, Comp) + } + // 使用 createVNode 函数创建一个 KeepAlive 组件,并缓存 cachedViews 数组中对应的组件 + return createVNode( + KeepAlive, + { + include: tagsViewStore.cachedViews + }, + { + default: () => h(Comp) + } + ) + } + }, + { + name: "CompConsumer", + props: ["component"] + } +) diff --git a/tenant-web-ui/src/layouts/components/Footer/index.vue b/tenant-web-ui/src/layouts/components/Footer/index.vue new file mode 100644 index 0000000..c502790 --- /dev/null +++ b/tenant-web-ui/src/layouts/components/Footer/index.vue @@ -0,0 +1,18 @@ + + + + + diff --git a/tenant-web-ui/src/layouts/components/Hamburger/index.vue b/tenant-web-ui/src/layouts/components/Hamburger/index.vue new file mode 100644 index 0000000..f0e705a --- /dev/null +++ b/tenant-web-ui/src/layouts/components/Hamburger/index.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/tenant-web-ui/src/layouts/components/Logo/index.vue b/tenant-web-ui/src/layouts/components/Logo/index.vue new file mode 100644 index 0000000..aab1c33 --- /dev/null +++ b/tenant-web-ui/src/layouts/components/Logo/index.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/tenant-web-ui/src/layouts/components/NavigationBar/index.vue b/tenant-web-ui/src/layouts/components/NavigationBar/index.vue new file mode 100644 index 0000000..52da2d7 --- /dev/null +++ b/tenant-web-ui/src/layouts/components/NavigationBar/index.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/tenant-web-ui/src/layouts/components/RightPanel/index.vue b/tenant-web-ui/src/layouts/components/RightPanel/index.vue new file mode 100644 index 0000000..5d20cac --- /dev/null +++ b/tenant-web-ui/src/layouts/components/RightPanel/index.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/tenant-web-ui/src/layouts/components/SearchTenantAndTenant/index.vue b/tenant-web-ui/src/layouts/components/SearchTenantAndTenant/index.vue new file mode 100644 index 0000000..d0a6d89 --- /dev/null +++ b/tenant-web-ui/src/layouts/components/SearchTenantAndTenant/index.vue @@ -0,0 +1,70 @@ + + + + + diff --git a/tenant-web-ui/src/layouts/components/SelectControlSize/index.vue b/tenant-web-ui/src/layouts/components/SelectControlSize/index.vue new file mode 100644 index 0000000..d1f77c0 --- /dev/null +++ b/tenant-web-ui/src/layouts/components/SelectControlSize/index.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/tenant-web-ui/src/layouts/components/Settings/SelectLayoutMode.vue b/tenant-web-ui/src/layouts/components/Settings/SelectLayoutMode.vue new file mode 100644 index 0000000..eccc6ad --- /dev/null +++ b/tenant-web-ui/src/layouts/components/Settings/SelectLayoutMode.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/tenant-web-ui/src/layouts/components/Settings/index.vue b/tenant-web-ui/src/layouts/components/Settings/index.vue new file mode 100644 index 0000000..7651dad --- /dev/null +++ b/tenant-web-ui/src/layouts/components/Settings/index.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/tenant-web-ui/src/layouts/components/Sidebar/SidebarItem.vue b/tenant-web-ui/src/layouts/components/Sidebar/SidebarItem.vue new file mode 100644 index 0000000..938f3fc --- /dev/null +++ b/tenant-web-ui/src/layouts/components/Sidebar/SidebarItem.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/tenant-web-ui/src/layouts/components/Sidebar/SidebarItemLink.vue b/tenant-web-ui/src/layouts/components/Sidebar/SidebarItemLink.vue new file mode 100644 index 0000000..b6a2f4a --- /dev/null +++ b/tenant-web-ui/src/layouts/components/Sidebar/SidebarItemLink.vue @@ -0,0 +1,18 @@ + + + diff --git a/tenant-web-ui/src/layouts/components/Sidebar/index.vue b/tenant-web-ui/src/layouts/components/Sidebar/index.vue new file mode 100644 index 0000000..fc6a4d4 --- /dev/null +++ b/tenant-web-ui/src/layouts/components/Sidebar/index.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/tenant-web-ui/src/layouts/components/TagsView/ScrollPane.vue b/tenant-web-ui/src/layouts/components/TagsView/ScrollPane.vue new file mode 100644 index 0000000..71a18dc --- /dev/null +++ b/tenant-web-ui/src/layouts/components/TagsView/ScrollPane.vue @@ -0,0 +1,154 @@ + + + + + diff --git a/tenant-web-ui/src/layouts/components/TagsView/index.vue b/tenant-web-ui/src/layouts/components/TagsView/index.vue new file mode 100644 index 0000000..a088baf --- /dev/null +++ b/tenant-web-ui/src/layouts/components/TagsView/index.vue @@ -0,0 +1,268 @@ + + + + + diff --git a/tenant-web-ui/src/layouts/components/index.ts b/tenant-web-ui/src/layouts/components/index.ts new file mode 100644 index 0000000..c6a9ab2 --- /dev/null +++ b/tenant-web-ui/src/layouts/components/index.ts @@ -0,0 +1,7 @@ +export { default as AppMain } from "./AppMain.vue" +export { default as NavigationBar } from "./NavigationBar/index.vue" +export { default as Settings } from "./Settings/index.vue" +export { default as Sidebar } from "./Sidebar/index.vue" +export { default as TagsView } from "./TagsView/index.vue" +export { default as RightPanel } from "./RightPanel/index.vue" +export { default as Logo } from "./Logo/index.vue" diff --git a/tenant-web-ui/src/layouts/hooks/useResize.ts b/tenant-web-ui/src/layouts/hooks/useResize.ts new file mode 100644 index 0000000..284e372 --- /dev/null +++ b/tenant-web-ui/src/layouts/hooks/useResize.ts @@ -0,0 +1,52 @@ +import { onBeforeMount, onMounted, onBeforeUnmount } from "vue" +import { useAppStore } from "@/store/modules/app" +import { useRouteListener } from "@/hooks/useRouteListener" +import { DeviceEnum } from "@/constants/app-key" + +/** 参考 Bootstrap 的响应式设计将最大移动端宽度设置为 992 */ +const MAX_MOBILE_WIDTH = 992 + +/** 根据浏览器宽度变化,变换 Layout 布局 */ +export default () => { + const appStore = useAppStore() + const { listenerRouteChange } = useRouteListener() + + /** 用于判断当前设备是否为移动端 */ + const _isMobile = () => { + const rect = document.body.getBoundingClientRect() + return rect.width - 1 < MAX_MOBILE_WIDTH + } + + /** 用于处理窗口大小变化事件 */ + const _resizeHandler = () => { + if (!document.hidden) { + const isMobile = _isMobile() + appStore.toggleDevice(isMobile ? DeviceEnum.Mobile : DeviceEnum.Desktop) + isMobile && appStore.closeSidebar(true) + } + } + /** 监听路由变化,根据设备类型调整布局 */ + listenerRouteChange(() => { + if (appStore.device === DeviceEnum.Mobile && appStore.sidebar.opened) { + appStore.closeSidebar(false) + } + }) + + /** 在组件挂载前添加窗口大小变化事件监听器 */ + onBeforeMount(() => { + window.addEventListener("resize", _resizeHandler) + }) + + /** 在组件挂载后根据窗口大小判断设备类型并调整布局 */ + onMounted(() => { + if (_isMobile()) { + appStore.toggleDevice(DeviceEnum.Mobile) + appStore.closeSidebar(true) + } + }) + + /** 在组件卸载前移除窗口大小变化事件监听器 */ + onBeforeUnmount(() => { + window.removeEventListener("resize", _resizeHandler) + }) +} diff --git a/tenant-web-ui/src/layouts/index.vue b/tenant-web-ui/src/layouts/index.vue new file mode 100644 index 0000000..148deb8 --- /dev/null +++ b/tenant-web-ui/src/layouts/index.vue @@ -0,0 +1,71 @@ + + + + + diff --git a/tenant-web-ui/src/main.ts b/tenant-web-ui/src/main.ts new file mode 100644 index 0000000..18de3ba --- /dev/null +++ b/tenant-web-ui/src/main.ts @@ -0,0 +1,35 @@ +// core +import { createApp } from "vue" +import App from "@/App.vue" +import store from "@/store" +import router from "@/router" +import "@/router/permission" +// load +import { loadSvg } from "@/icons" +import { loadPlugins } from "@/plugins" +import { loadDirectives } from "@/directives" +import { loadGlobalComponent } from "@/components" +// css +import "uno.css" +import "normalize.css" +import "element-plus/dist/index.css" +import "element-plus/theme-chalk/dark/css-vars.css" +import "vxe-table/lib/style.css" +import "vxe-table-plugin-element/dist/style.css" +import "@/styles/index.scss" + +const app = createApp(App) + +/** 加载全局 SVG */ +loadSvg(app) +/** 加载插件 */ +loadPlugins(app) +/** 加载自定义指令 */ +loadDirectives(app) +/** 加载全局自定义组件 */ +loadGlobalComponent(app) + +app.use(store).use(router) +router.isReady().then(() => { + app.mount("#app") +}) diff --git a/tenant-web-ui/src/plugins/element-plus-icon/index.ts b/tenant-web-ui/src/plugins/element-plus-icon/index.ts new file mode 100644 index 0000000..cbbf50f --- /dev/null +++ b/tenant-web-ui/src/plugins/element-plus-icon/index.ts @@ -0,0 +1,9 @@ +import { type App } from "vue" +import * as ElementPlusIconsVue from "@element-plus/icons-vue" + +export function loadElementPlusIcon(app: App) { + /** 注册所有 Element Plus Icon */ + for (const [key, component] of Object.entries(ElementPlusIconsVue)) { + app.component(key, component) + } +} diff --git a/tenant-web-ui/src/plugins/element-plus/index.ts b/tenant-web-ui/src/plugins/element-plus/index.ts new file mode 100644 index 0000000..3d644b3 --- /dev/null +++ b/tenant-web-ui/src/plugins/element-plus/index.ts @@ -0,0 +1,7 @@ +import { type App } from "vue" +import ElementPlus from "element-plus" + +export function loadElementPlus(app: App) { + /** Element Plus 组件完整引入 */ + app.use(ElementPlus) +} diff --git a/tenant-web-ui/src/plugins/index.ts b/tenant-web-ui/src/plugins/index.ts new file mode 100644 index 0000000..de3b6f3 --- /dev/null +++ b/tenant-web-ui/src/plugins/index.ts @@ -0,0 +1,10 @@ +import { type App } from "vue" +import { loadElementPlus } from "./element-plus" +import { loadElementPlusIcon } from "./element-plus-icon" +import { loadVxeTable } from "./vxe-table" + +export function loadPlugins(app: App) { + loadElementPlus(app) + loadElementPlusIcon(app) + loadVxeTable(app) +} diff --git a/tenant-web-ui/src/plugins/vxe-table/index.ts b/tenant-web-ui/src/plugins/vxe-table/index.ts new file mode 100644 index 0000000..4af979d --- /dev/null +++ b/tenant-web-ui/src/plugins/vxe-table/index.ts @@ -0,0 +1,66 @@ +import { type App } from "vue" +// https://vxetable.cn/#/table/start/install +import VXETable from "vxe-table" +// https://github.com/x-extends/vxe-table-plugin-element +import VXETablePluginElement from "vxe-table-plugin-element" + +VXETable.use(VXETablePluginElement) + +/** 全局默认参数 */ +VXETable.setup({ + /** 全局尺寸 */ + size: "medium", + /** 全局 zIndex 起始值,如果项目的的 z-index 样式值过大时就需要跟随设置更大,避免被遮挡 */ + zIndex: 9999, + /** 版本号,对于某些带数据缓存的功能有用到,上升版本号可以用于重置数据 */ + version: 0, + /** 全局 loading 提示内容,如果为 null 则不显示文本 */ + loadingText: null, + table: { + showHeader: true, + showOverflow: "tooltip", + showHeaderOverflow: "tooltip", + autoResize: true, + // stripe: false, + border: "inner", + // round: false, + emptyText: "暂无数据", + rowConfig: { + isHover: true, + isCurrent: true + }, + columnConfig: { + resizable: false + }, + align: "center", + headerAlign: "center", + /** 行数据的唯一主键字段名 */ + rowId: "_VXE_ID" + }, + pager: { + // size: "medium", + /** 配套的样式 */ + perfect: false, + pageSize: 10, + pagerCount: 7, + pageSizes: [10, 20, 50], + layouts: ["Total", "PrevJump", "PrevPage", "Number", "NextPage", "NextJump", "Sizes", "FullJump"] + }, + modal: { + minWidth: 500, + minHeight: 400, + lockView: true, + mask: true, + // duration: 3000, + // marginSize: 20, + dblclickZoom: false, + showTitleOverflow: true, + transfer: true, + draggable: false + } +}) + +export function loadVxeTable(app: App) { + /** Vxe Table 组件完整引入 */ + app.use(VXETable) +} diff --git a/tenant-web-ui/src/router/helper.ts b/tenant-web-ui/src/router/helper.ts new file mode 100644 index 0000000..4b10648 --- /dev/null +++ b/tenant-web-ui/src/router/helper.ts @@ -0,0 +1,69 @@ +import { + type Router, + type RouteRecordNormalized, + type RouteRecordRaw, + createRouter, + createWebHashHistory, + createWebHistory +} from "vue-router" +import { cloneDeep, omit } from "lodash-es" + +/** 路由模式 */ +export const history = + import.meta.env.VITE_ROUTER_HISTORY === "hash" + ? createWebHashHistory(import.meta.env.VITE_PUBLIC_PATH) + : createWebHistory(import.meta.env.VITE_PUBLIC_PATH) + +/** 路由降级(把三级及其以上的路由转化为二级路由) */ +export const flatMultiLevelRoutes = (routes: RouteRecordRaw[]) => { + const routesMirror = cloneDeep(routes) + routesMirror.forEach((route) => { + // 如果路由是三级及其以上路由,对其进行降级处理 + isMultipleRoute(route) && promoteRouteLevel(route) + }) + return routesMirror +} + +/** 判断路由层级是否大于 2 */ +const isMultipleRoute = (route: RouteRecordRaw) => { + const children = route.children + if (children?.length) { + // 只要有一个子路由的 children 长度大于 0,就说明是三级及其以上路由 + return children.some((child) => child.children?.length) + } + return false +} + +/** 生成二级路由 */ +const promoteRouteLevel = (route: RouteRecordRaw) => { + // 创建 router 实例是为了获取到当前传入的 route 的所有路由信息 + let router: Router | null = createRouter({ + history, + routes: [route] + }) + const routes = router.getRoutes() + // 在 addToChildren 函数中使用上面获取到的路由信息来更新 route 的 children + addToChildren(routes, route.children || [], route) + router = null + // 转为二级路由后,去除所有子路由中的 children + route.children = route.children?.map((item) => omit(item, "children") as RouteRecordRaw) +} + +/** 将给定的子路由添加到指定的路由模块中 */ +const addToChildren = (routes: RouteRecordNormalized[], children: RouteRecordRaw[], routeModule: RouteRecordRaw) => { + children.forEach((child) => { + const route = routes.find((item) => item.name === child.name) + if (route) { + // 初始化 routeModule 的 children + routeModule.children = routeModule.children || [] + // 如果 routeModule 的 children 属性中不包含该路由,则将其添加进去 + if (!routeModule.children.includes(route)) { + routeModule.children.push(route) + } + // 如果该子路由还有自己的子路由,则递归调用此函数将它们也添加进去 + if (child.children?.length) { + addToChildren(routes, child.children, routeModule) + } + } + }) +} diff --git a/tenant-web-ui/src/router/index.ts b/tenant-web-ui/src/router/index.ts new file mode 100644 index 0000000..78738d9 --- /dev/null +++ b/tenant-web-ui/src/router/index.ts @@ -0,0 +1,124 @@ +import { type RouteRecordRaw, createRouter } from "vue-router" +import { history, flatMultiLevelRoutes } from "./helper" +import routeSettings from "@/config/route" +import { loginUrl } from "@/config/white-list" + +const Layouts = () => import("@/layouts/index.vue") + +/** + * 常驻路由 + * 除了 redirect/403/404/login 等隐藏页面,其他页面建议设置 Name 属性 + */ +export const constantRoutes: RouteRecordRaw[] = [ + { + path: "/redirect", + component: Layouts, + meta: { + hidden: true + }, + children: [ + { + path: "/redirect/:path(.*)", + component: () => import("@/views/redirect/index.vue") + } + ] + }, + { + path: "/403", + component: () => import("@/views/error-page/403.vue"), + meta: { + hidden: true + } + }, + { + path: "/404", + component: () => import("@/views/error-page/404.vue"), + meta: { + hidden: true + }, + alias: "/:pathMatch(.*)*" + }, + { + path: "/login", + component: () => import("@/views/login/index.vue"), + meta: { + hidden: true + } + }, + { + path: "/", + component: Layouts, + redirect: "/dashboard", + children: [ + { + path: "dashboard", + component: () => import("@/views/dashboard/index.vue"), + name: "Dashboard", + meta: { + title: "首页", + svgIcon: "dashboard", + affix: true + } + }, + { + path: "personal", + component: () => import("@/views/personal/index.vue"), + name: "Personal", + meta: { + title: "个人信息", + affix: true, + hidden: true + } + } + ] + }, + { + path: "/unocss", + component: Layouts, + redirect: "/unocss/index", + children: [ + { + path: "index", + component: () => import("@/views/unocss/index.vue"), + name: "UnoCSS", + meta: { + title: "UnoCSS", + svgIcon: "unocss" + } + } + ] + } +] + +const router = createRouter({ + history, + routes: routeSettings.thirdLevelRouteCache ? flatMultiLevelRoutes(constantRoutes) : constantRoutes +}) + +/** 重置路由 */ +export function resetRouter() { + // 注意:所有动态路由路由必须带有 Name 属性,否则可能会不能完全重置干净 + try { + router.getRoutes().forEach((route) => { + const { name, meta } = route + if (name && meta.roles?.length) { + router.hasRoute(name) && router.removeRoute(name) + } + }) + } catch { + // 强制刷新浏览器也行,只是交互体验不是很好 + window.location.reload() + } +} + +/** 跳转到 登录页面 */ +export function jumpToLogin() { + // 获取当前页面的路由 + const path = router.currentRoute.value.path + // 获取当前页面的参数 + const query = router.currentRoute.value.query + query.redirect = path + router.push({ path: loginUrl, query: query }) +} + +export default router diff --git a/tenant-web-ui/src/router/permission.ts b/tenant-web-ui/src/router/permission.ts new file mode 100644 index 0000000..f275269 --- /dev/null +++ b/tenant-web-ui/src/router/permission.ts @@ -0,0 +1,101 @@ +import router from "@/router" +import { useUserStoreHook } from "@/store/modules/user" +import { useDictStoreHook } from "@/store/modules/dict" +import { usePermissionStoreHook } from "@/store/modules/permission" +import { useNoticeStoreHook } from "@/store/modules/notice" + +import { ElMessage } from "element-plus" +import { useTitle } from "@/hooks/useTitle" +import { getToken } from "@/utils/cache/cookies" +import { fixBlankPage } from "@/utils/fix-blank-page" +import { setRouteChange } from "@/hooks/useRouteListener" +import { isWhiteList, loginUrl } from "@/config/white-list" +import NProgress from "nprogress" +import "nprogress/nprogress.css" + +const { setTitle } = useTitle() +NProgress.configure({ showSpinner: false }) + +const userStore = useUserStoreHook() +const dictStore = useDictStoreHook() +const noticeStore = useNoticeStoreHook() +const permissionStore = usePermissionStoreHook() + +router.beforeEach(async (to, _from, next) => { + fixBlankPage() + NProgress.start() + + const token = getToken() + // 判断该用户是否已经登录 + if (!token) { + // 如果在免登录的白名单中,则直接进入 + if (isWhiteList(to)) { + next() + } else { + // 其他没有访问权限的页面将被重定向到登录页面 + NProgress.done() + next(loginUrl) + } + return + } + + // 如果已经登录,并准备进入 Login 页面,则重定向到主页 + if (to.path === loginUrl) { + NProgress.done() + return next({ path: "/" }) + } + + // 如果用户已经获得其权限 + if (userStore.menus.length !== 0) { + return next() + } else { + // 否则要重新获取 用户权限菜单 + try { + // 初始化数据 + await initBasicData() + // 检查用户是否已获得其权限菜单 + if (userStore.menus.length === 0) { + await userStore.getUserPerms() + // 根据 用户权限菜单 生成可访问的 Routes(可访问路由 = 常驻路由 + 有访问权限的动态路由) + permissionStore.setRoutes(userStore.menus) + // 将'有访问权限的动态路由' 添加到 Router 中 + permissionStore.dynamicRoutes.forEach((route) => router.addRoute(route)) + // 确保添加路由已完成 + // 设置 replace: true, 因此导航将不会留下历史记录 + next({ ...to, replace: true }) + } else { + next() + } + } catch (err: any) { + // 过程中发生任何错误,都直接重置 Token,并重定向到登录页面 + userStore.fedLogout() + ElMessage.error(err.message || "路由守卫过程发生错误") + NProgress.done() + next(loginUrl) + } + } +}) + +router.afterEach((to) => { + setRouteChange(to) + setTitle(to.meta.title) + NProgress.done() +}) + +// 初始化数据,如: 用户信息,数据字典,全局配置 +async function initBasicData() { + // 获取用户信息 + if (userStore.userInfo === undefined || !userStore.userInfo) { + await userStore.getUserInfo() + } + + // 获取字典数据 + if (dictStore.dictMapKeys === undefined || !dictStore.dictMapKeys) { + await dictStore.getDictMapKeys() + } + + // 启动 WebSocket + if (!noticeStore.getStompClientActive()) { + noticeStore.startWebSocket() + } +} diff --git a/tenant-web-ui/src/store/index.ts b/tenant-web-ui/src/store/index.ts new file mode 100644 index 0000000..136af16 --- /dev/null +++ b/tenant-web-ui/src/store/index.ts @@ -0,0 +1,5 @@ +import { createPinia } from "pinia" + +const store = createPinia() + +export default store diff --git a/tenant-web-ui/src/store/modules/app.ts b/tenant-web-ui/src/store/modules/app.ts new file mode 100644 index 0000000..d9db89c --- /dev/null +++ b/tenant-web-ui/src/store/modules/app.ts @@ -0,0 +1,47 @@ +import { reactive, ref, watch } from "vue" +import { defineStore } from "pinia" +import { getSidebarStatus, setSidebarStatus } from "@/utils/cache/local-storage" +import { DeviceEnum, SIDEBAR_OPENED, SIDEBAR_CLOSED } from "@/constants/app-key" + +interface Sidebar { + opened: boolean + withoutAnimation: boolean +} + +/** 设置侧边栏状态本地缓存 */ +function handleSidebarStatus(opened: boolean) { + opened ? setSidebarStatus(SIDEBAR_OPENED) : setSidebarStatus(SIDEBAR_CLOSED) +} + +export const useAppStore = defineStore("app", () => { + /** 侧边栏状态 */ + const sidebar: Sidebar = reactive({ + opened: getSidebarStatus() !== SIDEBAR_CLOSED, + withoutAnimation: false + }) + /** 设备类型 */ + const device = ref(DeviceEnum.Desktop) + + /** 监听侧边栏 opened 状态 */ + watch( + () => sidebar.opened, + (opened) => handleSidebarStatus(opened) + ) + + /** 切换侧边栏 */ + const toggleSidebar = (withoutAnimation: boolean) => { + sidebar.opened = !sidebar.opened + sidebar.withoutAnimation = withoutAnimation + } + /** 关闭侧边栏 */ + const closeSidebar = (withoutAnimation: boolean) => { + sidebar.opened = false + sidebar.withoutAnimation = withoutAnimation + } + /** 切换设备类型 */ + const toggleDevice = (value: DeviceEnum) => { + device.value = value + } + + return { device, sidebar, toggleSidebar, closeSidebar, toggleDevice } +}) diff --git a/tenant-web-ui/src/store/modules/dict.ts b/tenant-web-ui/src/store/modules/dict.ts new file mode 100644 index 0000000..a5ba0ad --- /dev/null +++ b/tenant-web-ui/src/store/modules/dict.ts @@ -0,0 +1,143 @@ +import { computed, ref } from "vue" +import store from "@/store" +import { defineStore } from "pinia" +import { mapKeysApi } from "@/api/dict" +import { IMapDictData } from "@/types/dict" + +export const useDictStore = defineStore("dict", () => { + // 字典 map + const dictMapKeys = ref() + + /** 字典 map key */ + const getDictMapKeys = () => { + return new Promise((resolve, reject) => { + mapKeysApi() + .then((resp) => { + dictMapKeys.value = resp.data + resolve(resp) + }) + .catch((error) => { + reject(error) + }) + }) + } + + // 获取字典数据 + const getDictMapList = (dictKey: string): IMapDictData[] => { + return dictMapKeys.value[dictKey]! as IMapDictData[] + } + + // 获取字典数据 + const getDictMapValue = (dictKey: string, dictData: Object) => { + let val = "未知" + getDictMapList(dictKey).forEach((value) => { + if (value && value.dictValue === dictData) { + val = value.dictLabel + } + }) + return val + } + + const getUserSex = computed(() => { + return (value: number) => { + return getDictMapValue("sys_user_sex", value) + } + }) + + const getShowHide = computed(() => { + return (value: number) => { + return getDictMapValue("sys_show_hide", value) + } + }) + + const getNormalDisable = computed(() => { + return (value: number) => { + return getDictMapValue("sys_normal_disable", value) + } + }) + + const getJobStatus = computed(() => { + return (value: number) => { + return getDictMapValue("sys_job_status", value) + } + }) + + const getJobGroup = computed(() => { + return (value: number) => { + return getDictMapValue("sys_job_group", value) + } + }) + + const getYesNo = computed(() => { + return (value: number) => { + return getDictMapValue("sys_yes_no", value) + } + }) + + const getNoticeType = computed(() => { + return (value: number) => { + return getDictMapValue("sys_notice_type", value) + } + }) + + const getNoticeStatus = computed(() => { + return (value: number) => { + return getDictMapValue("sys_notice_status", value) + } + }) + + const getOperType = computed(() => { + return (value: number) => { + return getDictMapValue("sys_oper_type", value) + } + }) + + const getCommonStatus = computed(() => { + return (value: number) => { + return getDictMapValue("sys_common_status", value) + } + }) + + const getMenuType = computed(() => { + return (value: number) => { + return getDictMapValue("sys_menu_type", value) + } + }) + + const getMenuTarget = computed(() => { + return (value: number) => { + return getDictMapValue("sys_menu_target", value) + } + }) + + const getQueryType = computed(() => { + return (value: number) => { + return getDictMapValue("statistics_query_type", value) + } + }) + + return { + dictMapKeys, + getDictMapKeys, + getDictMapList, + getDictMapValue, + getUserSex, + getYesNo, + getShowHide, + getNormalDisable, + getJobStatus, + getJobGroup, + getNoticeType, + getNoticeStatus, + getOperType, + getCommonStatus, + getMenuType, + getMenuTarget, + getQueryType + } +}) + +/** 在 setup 外使用 */ +export function useDictStoreHook() { + return useDictStore(store) +} diff --git a/tenant-web-ui/src/store/modules/notice.ts b/tenant-web-ui/src/store/modules/notice.ts new file mode 100644 index 0000000..a90427b --- /dev/null +++ b/tenant-web-ui/src/store/modules/notice.ts @@ -0,0 +1,130 @@ +import store from "@/store" +import { defineStore } from "pinia" +import { computed, ref } from "vue" +import { Client } from "@stomp/stompjs" +// @ts-ignore +import SockJS from "sockjs-client/dist/sockjs.min.js" +import { getToken } from "@/utils/cache/cookies" +import { useUserStoreHook } from "./user" +import { getEnvBaseURL } from "@/utils" +import { IPushMessage } from "@/types/base" + +export const useNoticeStore = defineStore("notice", () => { + // 广播消息 + const broadcast = ref([]) + + // 推送消息 + const pushNotices = ref([]) + + // 创建租户结果 消息 + const createTenantNotice = ref() + + const stompClientActive = ref(false) + + // websocket 客户端 + const stompClient = ref() + + // 启动 WebSocket + const startWebSocket = () => { + return new Promise((resolve, reject) => { + const tenantId = useUserStoreHook().userInfo?.tenantId + const stompClientAgent = new Client({ + connectHeaders: { + Authorization: getToken()!, + "x-tenant-id": tenantId! + }, + debug: function () {}, + reconnectDelay: 5000, // 重连时间 + heartbeatIncoming: 4000, + heartbeatOutgoing: 4000 + }) + + const wsUrl = `${getEnvBaseURL()}/stomp/push` + + // 用 SockJS 代替 brokenURL + stompClientAgent.webSocketFactory = function () { + return new SockJS(wsUrl) + } + + // 连接 + stompClientAgent.onConnect = (frame) => { + broadcast.value = [] + pushNotices.value = [] + + console.log("连接 WebSocket 成功 :>> ", frame.headers["user-name"]) + + // 订阅广播主题 + stompClientAgent.subscribe("/topic/broadcast/notice", (resp) => { + const result = JSON.parse(resp.body) as IPushMessage + broadcast.value?.push(result) + }) + + // 订阅推送主题 + stompClientAgent.subscribe("/user/queue/single/push", (resp) => { + const result = JSON.parse(resp.body) as IPushMessage + pushNotices.value?.push(result) + }) + + // 订阅 租户创建结果的 主题 + stompClientAgent.subscribe("/user/queue/single/create/tenant", (resp) => { + const result = JSON.parse(resp.body) as IPushMessage + createTenantNotice.value = result + pushNotices.value?.push(result) + }) + } + + // 错误 + stompClientAgent.onStompError = function (frame) { + console.log("Broker reported error: " + frame.headers["message"]) + console.log("Additional details: " + frame.body) + reject(frame.body) + } + + // 启动 + stompClientAgent.activate() + + stompClient.value = stompClientAgent + + stompClientActive.value = stompClientAgent.active + + resolve() + }) + } + + const stopWebSocket = () => { + // 停止 + if (stompClient.value) { + stompClient.value!.deactivate() + } + } + + const getStompClientActive = (): boolean => { + return stompClientActive.value + } + + // 获取广播消息 + const getBroadcast = computed(() => { + return broadcast.value + }) + + // 获取推送消息 + const getPushNotices = computed(() => { + return pushNotices.value + }) + + return { + broadcast, + pushNotices, + createTenantNotice, + getBroadcast, + getPushNotices, + startWebSocket, + stopWebSocket, + getStompClientActive + } +}) + +/** 在 setup 外使用 */ +export function useNoticeStoreHook() { + return useNoticeStore(store) +} diff --git a/tenant-web-ui/src/store/modules/permission.ts b/tenant-web-ui/src/store/modules/permission.ts new file mode 100644 index 0000000..87e3422 --- /dev/null +++ b/tenant-web-ui/src/store/modules/permission.ts @@ -0,0 +1,81 @@ +import { ref } from "vue" +import store from "@/store" +import { defineStore } from "pinia" +import { type RouteRecordRaw } from "vue-router" +import { constantRoutes } from "@/router" +import { flatMultiLevelRoutes } from "@/router/helper" +import routeSettings from "@/config/route" +import { IPermsMenus } from "@/types/pms" +import { isExternal } from "@/utils/validate" + +const Layout = () => import("@/layouts/index.vue") + +// 遍历后台传来的路由字符串,转换为组件对象 +function flatTreeRoutes(arr: IPermsMenus[]): RouteRecordRaw[] { + const result: RouteRecordRaw[] = [] + const deep = (arr1: IPermsMenus[], arr2: RouteRecordRaw[]) => { + arr1.forEach((source: IPermsMenus) => { + const { title, icon, hidden, keepAlive } = source.meta + const target: any = { + path: source.path, + name: source.name, + meta: { + title: title, + svgIcon: icon, + hidden: hidden, + keepAlive: keepAlive + } + } + // 判断 路径是否为外链。 + if (isExternal(source.path)) { + target.component = () => {} + } else { + if (source.component === "Layout") { + target.component = Layout + } else { + target.component = loadView(source.component) + } + } + arr2.push(target) + if (source.children && source.children.length > 0) { + target.children = [] + target.redirect = source.children[0].path + deep(source.children, target.children) + } + }) + } + deep(arr, result) + return result +} + +// 匹配views里面所有的.vue文件 +const modules = import.meta.glob("../../views/**/**.vue") + +export const loadView = (view: string) => { + let res + for (const path in modules) { + const dir = path.split("views/")[1].split(".vue")[0] + if (dir === view) { + res = () => modules[path]() + } + } + return res +} + +export const usePermissionStore = defineStore("permission", () => { + const routes = ref([]) + const dynamicRoutes = ref([]) + + const setRoutes = (data: IPermsMenus[]) => { + const asyncRoutes = flatTreeRoutes(data) + routes.value = constantRoutes.concat(asyncRoutes) + dynamicRoutes.value = routeSettings.thirdLevelRouteCache ? flatMultiLevelRoutes(asyncRoutes) : asyncRoutes + } + + return { routes, dynamicRoutes, setRoutes } +}) + +/** 在 setup 外使用 */ +export function usePermissionStoreHook() { + return usePermissionStore(store) +} diff --git a/tenant-web-ui/src/store/modules/project.ts b/tenant-web-ui/src/store/modules/project.ts new file mode 100644 index 0000000..a377b0d --- /dev/null +++ b/tenant-web-ui/src/store/modules/project.ts @@ -0,0 +1,54 @@ +import store from "@/store" +import { defineStore } from "pinia" +import { ref } from "vue" +import { ISimpleProject } from "@/types/base" +import { defaultProject } from "@/utils" + +export const useProjectStore = defineStore("project", () => { + // 当前项目 + const currentProject = ref(defaultProject) + + // 获取当前项目 + const getCurrentProjectId = (): number => { + return getCurrentProject().projectId + } + + // 获取默认项目 + const getDefaultProjectId = (): number => { + return defaultProject.projectId + } + + // 获取当前项目 + const getCurrentProject = (): ISimpleProject => { + return currentProject.value + } + + // 设置当前项目信息 + const setCurrentProject = (tenant: ISimpleProject): void => { + currentProject.value = tenant + } + + // 重置当前操作的项目 + const resetCurrentProject = (): void => { + currentProject.value = defaultProject + } + + // 获取当前项目 + const isDefaultProjectId = (): boolean => { + return getCurrentProjectId() === getDefaultProjectId() + } + + return { + getCurrentProjectId, + getDefaultProjectId, + getCurrentProject, + setCurrentProject, + resetCurrentProject, + isDefaultProjectId + } +}) + +/** 在 setup 外使用 */ +export function useProjectStoreHook() { + return useProjectStore(store) +} diff --git a/tenant-web-ui/src/store/modules/settings.ts b/tenant-web-ui/src/store/modules/settings.ts new file mode 100644 index 0000000..d3a30b3 --- /dev/null +++ b/tenant-web-ui/src/store/modules/settings.ts @@ -0,0 +1,59 @@ +import store from "@/store" +import { defineStore } from "pinia" +import { type Ref, ref, watch } from "vue" +import { type LayoutSettings, layoutSettings } from "@/config/layouts" +import { setConfigLayout, getControlSize, setControlSize } from "@/utils/cache/local-storage" + +type SettingsStore = { + // 使用映射类型来遍历 layoutSettings 对象的键 + [Key in keyof LayoutSettings]: Ref +} + +type SettingsStoreKey = keyof SettingsStore + +export const useSettingsStore = defineStore("settings", () => { + /** 状态对象 */ + const state = {} as SettingsStore + + // 遍历 layoutSettings 对象的键值对 + for (const [key, value] of Object.entries(layoutSettings)) { + // 使用类型断言来指定 key 的类型,将 value 包装在 ref 函数中,创建一个响应式变量 + const refValue = ref(value) + state[key as SettingsStoreKey] = refValue + // 监听每个响应式变量 + watch(refValue, () => { + // 缓存 + const settings = _getCacheData() + setConfigLayout(settings) + }) + } + + /** 获取要缓存的数据:将 state 对象转化为 settings 对象 */ + const _getCacheData = () => { + const settings = {} as LayoutSettings + for (const [key, value] of Object.entries(state)) { + // @ts-ignore + settings[key as SettingsStoreKey] = value.value + } + return settings + } + + const controlSize = ref(getControlSize() || "default") + + // 更新控件尺寸 + const updateControlSize = (value: string) => { + controlSize.value = value + setControlSize(value) + } + + return { + ...state, + controlSize, + updateControlSize + } +}) + +/** 在 setup 外使用 */ +export function useSettingsStoreHook() { + return useSettingsStore(store) +} diff --git a/tenant-web-ui/src/store/modules/tags-view.ts b/tenant-web-ui/src/store/modules/tags-view.ts new file mode 100644 index 0000000..63aa7cb --- /dev/null +++ b/tenant-web-ui/src/store/modules/tags-view.ts @@ -0,0 +1,101 @@ +import { ref, watchEffect } from "vue" +import store from "@/store" +import { defineStore } from "pinia" +import { useSettingsStore } from "./settings" +import { type RouteLocationNormalized } from "vue-router" +import { getVisitedViews, setVisitedViews, getCachedViews, setCachedViews } from "@/utils/cache/local-storage" + +export type TagView = Partial + +export const useTagsViewStore = defineStore("tags-view", () => { + const { cacheTagsView } = useSettingsStore() + const visitedViews = ref(cacheTagsView ? getVisitedViews() : []) + const cachedViews = ref(cacheTagsView ? getCachedViews() : []) + + /** 缓存标签栏数据 */ + watchEffect(() => { + setVisitedViews(visitedViews.value) + setCachedViews(cachedViews.value) + }) + + //#region add + const addVisitedView = (view: TagView) => { + // 检查是否已经存在相同的 visitedView + const index = visitedViews.value.findIndex((v) => v.path === view.path) + if (index !== -1) { + // 防止 query 参数丢失 + visitedViews.value[index].fullPath !== view.fullPath && (visitedViews.value[index] = { ...view }) + } else { + // 添加新的 visitedView + visitedViews.value.push({ ...view }) + } + } + + const addCachedView = (view: TagView) => { + if (typeof view.name !== "string") return + if (cachedViews.value.includes(view.name)) return + if (view.meta?.keepAlive) cachedViews.value.push(view.name) + } + //#endregion + + //#region del + const delVisitedView = (view: TagView) => { + const index = visitedViews.value.findIndex((v) => v.path === view.path) + if (index !== -1) visitedViews.value.splice(index, 1) + } + + const delCachedView = (view: TagView) => { + if (typeof view.name !== "string") return + const index = cachedViews.value.indexOf(view.name) + if (index !== -1) cachedViews.value.splice(index, 1) + } + //#endregion + + //#region delOthers + const delOthersVisitedViews = (view: TagView) => { + visitedViews.value = visitedViews.value.filter((v) => { + return v.meta?.affix || v.path === view.path + }) + } + + const delOthersCachedViews = (view: TagView) => { + if (typeof view.name !== "string") return + const index = cachedViews.value.indexOf(view.name) + if (index !== -1) { + cachedViews.value = cachedViews.value.slice(index, index + 1) + } else { + // 如果 index = -1, 没有缓存的 tags + cachedViews.value = [] + } + } + //#endregion + + //#region delAll + const delAllVisitedViews = () => { + // 保留固定的 tags + visitedViews.value = visitedViews.value.filter((tag) => tag.meta?.affix) + } + + const delAllCachedViews = () => { + cachedViews.value = [] + } + //#endregion + + return { + visitedViews, + cachedViews, + addVisitedView, + addCachedView, + delVisitedView, + delCachedView, + delOthersVisitedViews, + delOthersCachedViews, + delAllVisitedViews, + delAllCachedViews + } +}) + +/** 在 setup 外使用 */ +export function useTagsViewStoreHook() { + return useTagsViewStore(store) +} diff --git a/tenant-web-ui/src/store/modules/user.ts b/tenant-web-ui/src/store/modules/user.ts new file mode 100644 index 0000000..da10836 --- /dev/null +++ b/tenant-web-ui/src/store/modules/user.ts @@ -0,0 +1,145 @@ +import { ref } from "vue" +import store from "@/store" +import { defineStore } from "pinia" +import { ElMessage } from "element-plus" +import { useNoticeStoreHook } from "./notice" +import { useSettingsStore } from "./settings" +import { useTagsViewStore } from "./tags-view" +import { getToken, removeToken, setToken } from "@/utils/cache/cookies" +import { loginApi, getUserInfoApi, getUserPermsApi, logoutApi } from "@/api/login" +import { type IPermsButton, ILoginData, IPermsMenus, ILoginUserInfo } from "@/types/pms" +import { resetRouter } from "@/router" + +export const useUserStore = defineStore("user", () => { + // token信息 + const accessToken = ref(getToken() || "") + + // 用户详情 + const userInfo = ref() + + // 用户的权限按钮 + const buttons = ref([]) + + // 用户的权限菜单 + const menus = ref([]) + + const noticeStore = useNoticeStoreHook() + + const tagsViewStore = useTagsViewStore() + + const settingsStore = useSettingsStore() + + /** 登录 */ + const userLogin = async (loginData: ILoginData) => { + return new Promise((resolve, reject) => { + loginApi(loginData) + .then((resp) => { + const token = resp.data.token_type + resp.data.access_token + setToken(token) + accessToken.value = token + resolve(resp) + }) + .catch((error) => { + reject(error) + }) + }) + } + + /** 获取用户详情 */ + const getUserInfo = () => { + return new Promise((resolve, reject) => { + getUserInfoApi() + .then((resp) => { + if (resp.data) { + userInfo.value = resp.data + resolve(resp) + } else { + fedLogout() + reject(resp.message) + } + }) + .catch((error) => { + reject(error) + }) + }) + } + + /** 获取用户权限菜单 */ + const getUserPerms = () => { + return new Promise((resolve, reject) => { + getUserPermsApi() + .then((resp) => { + if (resp.data) { + buttons.value = resp.data.buttons + menus.value = resp.data.menus + if (resp.data.menus.length === 0) { + ElMessage({ + message: "您暂无权限,请联系管理员!", + type: "warning" + }) + fedLogout() + } + resolve(resp) + } else { + fedLogout() + reject(resp.message) + } + }) + .catch((error) => { + reject(error) + }) + }) + } + + /** 登出 */ + const userLogout = () => { + return new Promise((resolve, reject) => { + logoutApi() + .then((resp) => { + fedLogout() + resolve(resp) + }) + .catch((error) => { + reject(error) + }) + }) + } + + /** 前端登录,不用请求后台,直接删除所有 cookie */ + const fedLogout = () => { + removeToken() + userInfo.value = undefined + accessToken.value = "" + resetRouter() + // 关闭 WebSocket + noticeStore.stopWebSocket() + buttons.value = [] + menus.value = [] + _resetTagsView() + } + + /** 重置 Visited Views 和 Cached Views */ + const _resetTagsView = () => { + if (!settingsStore.cacheTagsView) { + tagsViewStore.delAllVisitedViews() + tagsViewStore.delAllCachedViews() + } + } + + return { + accessToken, + userInfo, + buttons, + menus, + userLogin, + getUserPerms, + getUserInfo, + userLogout, + fedLogout + } +}) + +/** 在 setup 外使用 */ +export function useUserStoreHook() { + return useUserStore(store) +} diff --git a/tenant-web-ui/src/styles/element-plus.scss b/tenant-web-ui/src/styles/element-plus.scss new file mode 100644 index 0000000..d7d24c3 --- /dev/null +++ b/tenant-web-ui/src/styles/element-plus.scss @@ -0,0 +1,38 @@ +/** 自定义 Element Plus 样式 */ + +// 表格 +.el-table { + // 表头 + th.el-table__cell { + background-color: var(--el-fill-color-light) !important; + } + // 行元素 + tr { + background-color: transparent; + } +} + +// 分页 +.el-pagination { + // 参考 Bootstrap 的响应式设计 WIDTH = 768 + @media screen and (max-width: 768px) { + .el-pagination__total, + .el-pagination__sizes, + .el-pagination__jump, + .btn-prev, + .btn-next { + display: none !important; + } + } +} + +.el-cascader, +.el-input-number, +.el-select { + width: 100%; +} + +.el-date-editor.el-input, +.el-date-editor.el-input__wrapper { + width: 100%; +} diff --git a/tenant-web-ui/src/styles/index.scss b/tenant-web-ui/src/styles/index.scss new file mode 100644 index 0000000..af7ab91 --- /dev/null +++ b/tenant-web-ui/src/styles/index.scss @@ -0,0 +1,75 @@ +// 全局 CSS 变量 +@import "./variables.css"; +// Transition +@import "./transition.scss"; +// Element Plus +@import "./element-plus.scss"; +// Vxe Table +@import "./vxe-table.scss"; +// 注册多主题 +@import "./theme/register.scss"; +// mixin +@import "./mixins.scss"; + +html { + height: 100%; +} + +body { + height: 100%; + background-color: var(--v3-body-bg-color); + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, + sans-serif; + @extend %scrollbar; +} + +#app { + height: 100%; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +a, +a:focus, +a:hover { + color: inherit; + outline: none; + text-decoration: none; +} + +div:focus { + outline: none; +} + +// 业务页面几乎都应该在根元素上挂载 class="app-container",以保持页面美观 +.app-container { + padding: 10px; +} + +.search-wrapper { + margin-bottom: 10px; + :deep(.el-card__body) { + padding-bottom: 2px; + } +} + +.toolbar-wrapper { + display: flex; + justify-content: space-between; + margin-bottom: 20px; +} + +.table-wrapper { + margin-bottom: 20px; +} + +.pager-wrapper { + display: flex; + justify-content: flex-end; +} diff --git a/tenant-web-ui/src/styles/mixins.scss b/tenant-web-ui/src/styles/mixins.scss new file mode 100644 index 0000000..87d4e17 --- /dev/null +++ b/tenant-web-ui/src/styles/mixins.scss @@ -0,0 +1,42 @@ +/** 清除浮动 */ +%clearfix { + &::after { + content: ""; + display: table; + clear: both; + } +} + +/** 美化原生滚动条 */ +%scrollbar { + // 整个滚动条 + &::-webkit-scrollbar { + width: 8px; + height: 8px; + } + // 滚动条上的滚动滑块 + &::-webkit-scrollbar-thumb { + border-radius: 4px; + background-color: #90939955; + } + &::-webkit-scrollbar-thumb:hover { + background-color: #90939977; + } + &::-webkit-scrollbar-thumb:active { + background-color: #90939999; + } + // 当同时有垂直滚动条和水平滚动条时交汇的部分 + &::-webkit-scrollbar-corner { + background-color: transparent; + } +} + +/** 文本溢出时显示省略号 */ +%ellipsis { + // 隐藏溢出的文本 + overflow: hidden; + // 防止文本换行 + white-space: nowrap; + // 文本内容溢出容器时,文本末尾显示省略号 + text-overflow: ellipsis; +} diff --git a/tenant-web-ui/src/styles/theme/core/element-plus.scss b/tenant-web-ui/src/styles/theme/core/element-plus.scss new file mode 100644 index 0000000..44f0de8 --- /dev/null +++ b/tenant-web-ui/src/styles/theme/core/element-plus.scss @@ -0,0 +1,30 @@ +/** Element Plus 相关 */ + +// 侧边栏的 item 的 popper +.el-popper { + border: none !important; + .el-menu { + background-color: lighten($theme-bg-color, 2%) !important; + .el-menu-item { + background-color: lighten($theme-bg-color, 2%) !important; + &.is-active, + &:hover { + background-color: lighten($theme-bg-color, 6%) !important; + color: $active-font-color !important; + } + } + .el-sub-menu__title { + background-color: lighten($theme-bg-color, 2%) !important; + } + .el-sub-menu { + &.is-active { + > .el-sub-menu__title { + color: $active-font-color !important; + } + } + } + } + .el-menu--horizontal { + border: none; + } +} diff --git a/tenant-web-ui/src/styles/theme/core/error-page.scss b/tenant-web-ui/src/styles/theme/core/error-page.scss new file mode 100644 index 0000000..ec9c941 --- /dev/null +++ b/tenant-web-ui/src/styles/theme/core/error-page.scss @@ -0,0 +1,5 @@ +/** ErrorPage 页面相关 */ + +.error-page { + background-color: $theme-bg-color; +} diff --git a/tenant-web-ui/src/styles/theme/core/index.scss b/tenant-web-ui/src/styles/theme/core/index.scss new file mode 100644 index 0000000..5ae838b --- /dev/null +++ b/tenant-web-ui/src/styles/theme/core/index.scss @@ -0,0 +1,8 @@ +.#{$theme-name} { + @import "./layouts.scss"; + @import "./login.scss"; + @import "./error-page.scss"; + @import "./element-plus.scss"; + @import "./vxe-table.scss"; + @import "./other.scss"; +} diff --git a/tenant-web-ui/src/styles/theme/core/layouts.scss b/tenant-web-ui/src/styles/theme/core/layouts.scss new file mode 100644 index 0000000..f322941 --- /dev/null +++ b/tenant-web-ui/src/styles/theme/core/layouts.scss @@ -0,0 +1,77 @@ +/** Layout 相关 */ + +#app { + color: $font-color; + // 右侧设置面板 + .handle-button { + background-color: lighten($theme-bg-color, 20%) !important; + } +} + +.app-wrapper { + // 侧边栏 + .sidebar-container { + background-color: lighten($theme-bg-color, 2%); + .el-menu { + background-color: lighten($theme-bg-color, 2%) !important; + .el-menu-item { + background-color: lighten($theme-bg-color, 2%) !important; + &.is-active, + &:hover { + background-color: lighten($theme-bg-color, 6%) !important; + color: $active-font-color !important; + } + } + } + .el-sub-menu__title { + background-color: lighten($theme-bg-color, 2%) !important; + } + .el-sub-menu { + &.is-active { + > .el-sub-menu__title { + color: $active-font-color !important; + } + } + } + } + + // Header + .layout-header { + background-color: $theme-bg-color; + border-bottom: 1px solid lighten($theme-bg-color, 10%) !important; + } + + // 顶部导航栏 + .navigation-bar { + background-color: $theme-bg-color; + .right-menu { + .svg-icon { + color: $font-color; + } + } + } + + // TagsView + .tags-view-container { + background-color: $theme-bg-color !important; + .tags-view-item { + background-color: $theme-bg-color !important; + color: $font-color !important; + border: 1px solid $border-color !important; + &.active { + background-color: $theme-color !important; + color: $active-font-color !important; + border-color: $border-color !important; + } + } + // 右键菜单 + .contextmenu { + background-color: lighten($theme-bg-color, 8%); + color: $font-color; + li:hover { + background-color: lighten($theme-bg-color, 16%); + color: $active-font-color; + } + } + } +} diff --git a/tenant-web-ui/src/styles/theme/core/login.scss b/tenant-web-ui/src/styles/theme/core/login.scss new file mode 100644 index 0000000..2b1a180 --- /dev/null +++ b/tenant-web-ui/src/styles/theme/core/login.scss @@ -0,0 +1,9 @@ +/** Login 页面相关 */ + +.login-container { + background-color: $theme-bg-color; + color: $font-color; + .login-card { + background-color: lighten($theme-bg-color, 4%) !important; + } +} diff --git a/tenant-web-ui/src/styles/theme/core/other.scss b/tenant-web-ui/src/styles/theme/core/other.scss new file mode 100644 index 0000000..ea76a9c --- /dev/null +++ b/tenant-web-ui/src/styles/theme/core/other.scss @@ -0,0 +1,6 @@ +/** 这里可以写业务页面的黑暗样式 */ + +.app-main { + background-color: $theme-bg-color !important; + // 写在这里... +} diff --git a/tenant-web-ui/src/styles/theme/core/vxe-table.scss b/tenant-web-ui/src/styles/theme/core/vxe-table.scss new file mode 100644 index 0000000..57fa5ef --- /dev/null +++ b/tenant-web-ui/src/styles/theme/core/vxe-table.scss @@ -0,0 +1,58 @@ +/** + * Vxe Table SCSS 变量 + * 在此查阅所有可自定义的变量:https://github.com/x-extends/vxe-table/blob/master/styles/variable.scss + */ + +/** font */ +$vxe-font-color: $font-color; + +/** color */ +$vxe-primary-color: $theme-color; +$vxe-success-color: $theme-color; + +/** input/radio/checkbox */ +$vxe-input-border-color: $theme-color; +$vxe-input-disabled-color: $theme-color; +$vxe-input-disabled-background-color: lighten($theme-bg-color, 12%); + +/** popup */ +$vxe-table-popup-border-color: $border-color; + +/** table */ +$vxe-table-font-color: $font-color; +$vxe-table-border-color: $border-color; +$vxe-table-header-background-color: lighten($theme-bg-color, 8%); +$vxe-table-body-background-color: lighten($theme-bg-color, 4%); +$vxe-table-row-hover-background-color: lighten($theme-bg-color, 8%); +$vxe-table-row-current-background-color: lighten($theme-bg-color, 8%); +$vxe-table-row-hover-current-background-color: lighten($theme-bg-color, 8%); +$vxe-table-checkbox-range-background-color: lighten($theme-bg-color, 8%); + +/** toolbar */ +$vxe-toolbar-background-color: lighten($theme-bg-color, 4%); +$vxe-toolbar-custom-active-background-color: lighten($theme-bg-color, 16%); +$vxe-toolbar-panel-background-color: lighten($theme-bg-color, 4%); + +/** pager */ +$vxe-pager-background-color: lighten($theme-bg-color, 4%); + +/** modal */ +$vxe-modal-header-background-color: lighten($theme-bg-color, 4%); +$vxe-modal-body-background-color: lighten($theme-bg-color, 4%); +$vxe-modal-border-color: $border-color; + +/** button */ +$vxe-button-default-background-color: lighten($theme-bg-color, 8%); + +/** input */ +$vxe-input-background-color: lighten($theme-bg-color, 4%); +$vxe-input-panel-background-color: $vxe-input-background-color; + +/** form */ +$vxe-form-background-color: lighten($theme-bg-color, 4%); + +/** select */ +$vxe-select-option-hover-background-color: lighten($theme-bg-color, 8%); +$vxe-select-panel-background-color: lighten($theme-bg-color, 4%); + +@import "vxe-table/styles/index.scss"; diff --git a/tenant-web-ui/src/styles/theme/dark-blue/element-plus.css b/tenant-web-ui/src/styles/theme/dark-blue/element-plus.css new file mode 100644 index 0000000..7f31578 --- /dev/null +++ b/tenant-web-ui/src/styles/theme/dark-blue/element-plus.css @@ -0,0 +1,41 @@ +/** + * dark-blue 主题下的 Element Plus CSS 变量 + * 在此查阅所有可自定义的变量:https://github.com/element-plus/element-plus/blob/dev/packages/theme-chalk/src/common/var.scss + * 也可以打开浏览器控制台选择元素,查看要覆盖的变量名 + */ + +html.dark-blue { + /** color */ + --el-color-primary: #01efb7bb; + --el-color-primary-light-3: rgba(1, 147, 127, 0.8133333333); + --el-color-primary-light-5: rgba(2, 102, 99, 0.8666666667); + --el-color-primary-light-7: rgba(2, 65, 77, 0.92); + --el-color-primary-light-8: rgba(2, 49, 68, 0.9466666667); + --el-color-primary-light-9: rgba(2, 35, 59, 0.9733333333); + --el-color-primary-dark-2: rgba(1, 167, 128, 0.7866666667); + --el-color-success: #01efb7bb; + /** text-color */ + --el-text-color-primary: rgba(255, 255, 255, 0.8); + --el-text-color-regular: rgba(255, 255, 255, 0.8); + --el-text-color-secondary: rgba(255, 255, 255, 0.8); + --el-text-color-placeholder: rgba(255, 255, 255, 0.8); + --el-text-color-disabled: rgba(255, 255, 255, 0.3); + /** border-color */ + --el-border-color: #01efb755; + --el-border-color-light: #01efb755; + --el-border-color-lighter: #01efb755; + /** fill-color */ + --el-fill-color: #01efb710; + --el-fill-color-light: #01efb710; + --el-fill-color-blank: #031e47; + /** bg-color */ + --el-bg-color: #021633; + --el-bg-color-overlay: #031e47; + /** mask */ + --el-mask-color: rgba(0, 0, 0, 0.5); +} + +/** button */ +html.dark-blue .el-button { + --el-button-disabled-text-color: rgba(255, 255, 255, 0.5); +} diff --git a/tenant-web-ui/src/styles/theme/dark-blue/element-plus.scss b/tenant-web-ui/src/styles/theme/dark-blue/element-plus.scss new file mode 100644 index 0000000..faa2d98 --- /dev/null +++ b/tenant-web-ui/src/styles/theme/dark-blue/element-plus.scss @@ -0,0 +1,127 @@ +/** + * dark-blue 主题下的 Element Plus SCSS 变量 + * 在此查阅所有可自定义的变量:https://github.com/element-plus/element-plus/blob/dev/packages/theme-chalk/src/common/var.scss + */ + +@use "sass:map"; +@use "sass:math"; +@use "element-plus/theme-chalk/src/mixins/function.scss" as *; +@use "element-plus/theme-chalk/src/mixins/_var.scss" as *; +@use "element-plus/theme-chalk/src/mixins/mixins.scss" as *; +@use "./variables.scss" as *; + +// 生成指定颜色的明亮/黑暗颜色 +@mixin set-color-mix-level($type, $number, $mode: "light", $mix-color: $color-white) { + $colors: map.deep-merge( + ( + $type: ( + "#{$mode}-#{$number}": mix($mix-color, map.get($colors, $type, "base"), math.percentage(math.div($number, 10))) + ) + ), + $colors + ) !global; +} + +$types: primary, success, warning, danger, error, info; + +$color: $theme-color; +$success: #01efb7bb; + +$colors: () !default; +$colors: map.deep-merge( + ( + "white": #ffffff, + "primary": ( + "base": $color + ), + "success": ( + "base": $success + ) + ), + $colors +); + +// text +$text-color-base: #fff; +$text-color: () !default; +$text-color: map.merge( + ( + "primary": rgba($text-color-base, 0.8), + "regular": rgba($text-color-base, 0.8), + "secondary": rgba($text-color-base, 0.8), + "placeholder": rgba($text-color-base, 0.8), + "disabled": rgba($text-color-base, 0.3) + ), + $text-color +); + +// 生成 --el-color-${type}-light-i +@each $type in (primary) { + @for $i from 1 through 9 { + @include set-color-mix-level($type, $i, "light", #021633); + } + // --el-color-${type}-dark-2 + @include set-color-mix-level($type, 2, "dark", #000); +} + +// border +$border: () !default; +$border: map.merge( + ( + "": #01efb755, + "light": #01efb755, + "lighter": #01efb755 + ), + $border +); + +// fill +$fill-color: () !default; +$fill-color: map.merge( + ( + "": #01efb710, + "light": #01efb710, + "blank": #031e47 + ), + $fill-color +); + +// background +$bg-color: () !default; +$bg-color: map.merge( + ( + "": #021633, + "overlay": #031e47 + ), + $bg-color +); + +// mask +$mask-color: () !default; +$mask-color: map.merge( + ( + "": rgba(0, 0, 0, 0.5) + ), + $mask-color +); + +// button +$button: () !default; +$button: map.merge( + ( + "disabled-text-color": rgba(255, 255, 255, 0.5) + ), + $button +); + +html.dark-blue { + @include set-css-color-type($colors, "primary"); + @include set-component-css-var("text-color", $text-color); + @include set-component-css-var("border-color", $border); + @include set-component-css-var("fill-color", $fill-color); + @include set-component-css-var("bg-color", $bg-color); + @include set-component-css-var("mask-color", $mask-color); + @include b(button) { + @include set-component-css-var("button", $button); + } +} diff --git a/tenant-web-ui/src/styles/theme/dark-blue/index.scss b/tenant-web-ui/src/styles/theme/dark-blue/index.scss new file mode 100644 index 0000000..95456ef --- /dev/null +++ b/tenant-web-ui/src/styles/theme/dark-blue/index.scss @@ -0,0 +1,4 @@ +@use "./element-plus.css"; // 方案一 +// @use "./element-plus.scss"; // 方案二 +@import "./variables.scss"; +@import "../core/index.scss"; diff --git a/tenant-web-ui/src/styles/theme/dark-blue/variables.scss b/tenant-web-ui/src/styles/theme/dark-blue/variables.scss new file mode 100644 index 0000000..d71847d --- /dev/null +++ b/tenant-web-ui/src/styles/theme/dark-blue/variables.scss @@ -0,0 +1,16 @@ +/** dark-blue 主题下的变量 */ + +// 主题名称 +$theme-name: "dark-blue"; +// 主题背景颜色 +$theme-bg-color: #021633; +// 主题色 +$theme-color: #01efb7bb; +// 默认文字颜色 +$font-color: rgba(255, 255, 255, 0.8); +// active 状态下文字颜色 +$active-font-color: #fff; +// hover 状态下文字颜色 +$hover-color: #fff; +// 边框颜色 +$border-color: #01efb755; diff --git a/tenant-web-ui/src/styles/theme/dark/index.scss b/tenant-web-ui/src/styles/theme/dark/index.scss new file mode 100644 index 0000000..d39200d --- /dev/null +++ b/tenant-web-ui/src/styles/theme/dark/index.scss @@ -0,0 +1,2 @@ +@import "./variables.scss"; +@import "../core/index.scss"; diff --git a/tenant-web-ui/src/styles/theme/dark/variables.scss b/tenant-web-ui/src/styles/theme/dark/variables.scss new file mode 100644 index 0000000..9ce62b9 --- /dev/null +++ b/tenant-web-ui/src/styles/theme/dark/variables.scss @@ -0,0 +1,16 @@ +/** dark 主题下的变量 */ + +// 主题名称 +$theme-name: "dark"; +// 主题背景颜色 +$theme-bg-color: #151515; +// 主题色 +$theme-color: #409eff; +// 默认文字颜色 +$font-color: #c0c4cc; +// active 状态下文字颜色 +$active-font-color: #fff; +// hover 状态下文字颜色 +$hover-color: #fff; +// 边框颜色 +$border-color: #303133; diff --git a/tenant-web-ui/src/styles/theme/register.scss b/tenant-web-ui/src/styles/theme/register.scss new file mode 100644 index 0000000..6b74211 --- /dev/null +++ b/tenant-web-ui/src/styles/theme/register.scss @@ -0,0 +1,3 @@ +// 注册多主题 +@import "./dark/index.scss"; +@import "./dark-blue/index.scss"; diff --git a/tenant-web-ui/src/styles/transition.scss b/tenant-web-ui/src/styles/transition.scss new file mode 100644 index 0000000..ae5e8b1 --- /dev/null +++ b/tenant-web-ui/src/styles/transition.scss @@ -0,0 +1,25 @@ +// See https://cn.vuejs.org/guide/built-ins/transition.html for detail + +// fade-transform +.fade-transform-leave-active, +.fade-transform-enter-active { + transition: all 0.5s; +} +.fade-transform-enter { + opacity: 0; + transform: translateX(-30px); +} +.fade-transform-leave-to { + opacity: 0; + transform: translateX(30px); +} + +// layout-logo-fade +.layout-logo-fade-enter-active, +.layout-logo-fade-leave-active { + transition: opacity 1.5s; +} +.layout-logo-fade-enter-from, +.layout-logo-fade-leave-to { + opacity: 0; +} diff --git a/tenant-web-ui/src/styles/variables.css b/tenant-web-ui/src/styles/variables.css new file mode 100644 index 0000000..fae92c1 --- /dev/null +++ b/tenant-web-ui/src/styles/variables.css @@ -0,0 +1,44 @@ +/** 全局 CSS 变量,这种变量不仅可以在 CSS 和 SCSS 中使用,还可以导入到 JS 中使用 */ +:root { + /** 全局背景色 */ + --v3-body-bg-color: #f2f3f5; + /** Header 区域 = NavigationBar 组件 + TagsView 组件 */ + --v3-header-height: calc(var(--v3-navigationbar-height) + var(--v3-tagsview-height)); + --v3-header-bg-color: #ffffff; + /** NavigationBar 组件 */ + --v3-navigationbar-height: 50px; + /** Sidebar 组件(左侧模式全部生效、顶部模式全部不生效、混合模式非颜色部分生效) */ + --v3-sidebar-width: 220px; + --v3-sidebar-hide-width: 58px; + --v3-sidebar-menu-item-height: 60px; + --v3-sidebar-menu-tip-line-bg-color: var(--el-color-primary); + --v3-sidebar-menu-bg-color: #001428; + --v3-sidebar-menu-hover-bg-color: #409eff10; + --v3-sidebar-menu-text-color: #c0c4cc; + --v3-sidebar-menu-active-text-color: #ffffff; + /** TagsView 组件 */ + --v3-tagsview-height: 34px; + --v3-tagsview-tag-text-color: #495060; + --v3-tagsview-tag-active-text-color: #ffffff; + --v3-tagsview-tag-bg-color: #ffffff; + --v3-tagsview-tag-active-bg-color: var(--el-color-primary); + --v3-tagsview-tag-border-radius: 2px; + --v3-tagsview-tag-border-color: #d8dce5; + --v3-tagsview-tag-active-border-color: var(--el-color-primary); + --v3-tagsview-tag-active-before-color: #ffffff; + --v3-tagsview-tag-icon-hover-bg-color: #00000030; + --v3-tagsview-tag-icon-hover-color: #ffffff; + /** RightPanel 组件 */ + --v3-rightpanel-button-bg-color: #001428; +} + +/** 内容区放大时,将不需要的组件隐藏 */ +body.content-large { + /** Header 区域 = TagsView 组件 */ + --v3-header-height: var(--v3-tagsview-height); + /** NavigationBar 组件 */ + --v3-navigationbar-height: 0px; + /** Sidebar 组件 */ + --v3-sidebar-width: 0px; + --v3-sidebar-hide-width: 0px; +} diff --git a/tenant-web-ui/src/styles/vxe-table.scss b/tenant-web-ui/src/styles/vxe-table.scss new file mode 100644 index 0000000..684cf39 --- /dev/null +++ b/tenant-web-ui/src/styles/vxe-table.scss @@ -0,0 +1,38 @@ +/** 自定义 Vxe Table 样式 */ + +.vxe-grid { + // 表单 + &--form-wrapper { + .vxe-form { + padding: 10px 20px !important; + margin-bottom: 20px !important; + } + } + + // 工具栏 + &--toolbar-wrapper { + .vxe-toolbar { + padding: 20px !important; + } + } + + // 分页 + &--pager-wrapper { + .vxe-pager { + height: 70px !important; + padding: 0 20px !important; + &--wrapper { + // 参考 Bootstrap 的响应式设计 WIDTH = 768 + @media screen and (max-width: 768px) { + .vxe-pager--total, + .vxe-pager--sizes, + .vxe-pager--jump, + .vxe-pager--jump-prev, + .vxe-pager--jump-next { + display: none !important; + } + } + } + } + } +} diff --git a/tenant-web-ui/src/types/base.ts b/tenant-web-ui/src/types/base.ts new file mode 100644 index 0000000..b134948 --- /dev/null +++ b/tenant-web-ui/src/types/base.ts @@ -0,0 +1,103 @@ +// 搜索分页查询 +export interface ISearchQuery { + // 包含操作用户信息 + includeCauu?: boolean + // 当前是第几页 + pageIndex: number + // 每页多少条 + pageSize: number + // 关键字 + keywords: string + // 开始日期 YYYY-MM-DD + startDate?: string + // 结束日期 YYYY-MM-DD + endDate?: string +} + +// 简单租户 +export interface ISimpleTenant { + /** 租户ID */ + tenantId: string + /** Logo */ + logo: string + /** 租户名称 */ + name: string + /** 联系人名称 */ + linkman: string +} + +// 简单项目 +export interface ISimpleProject { + /** 项目ID */ + projectId: number + /** 项目名称 */ + projectName: string + /** 联系人名称 */ + linkman: string + /** 行政地址 */ + areaCode: number + /** 所在地址 */ + address: string +} + +// 基础类型 +export interface IBaseEntity { + /** 创建时间 */ + createTime?: string + /** 创建人 id */ + createUser?: number + /** 创建人信息 */ + createUserEntity?: IOperateUserEntity + /** 最后一次修改时间 */ + lastUpdateTime?: string + /** 最后一次修改人 id */ + lastUpdateUser?: number + /** 最后一次修改人信息 */ + lastUpdateUserEntity?: IOperateUserEntity +} + +// 操作用户信息 +export interface IOperateUserEntity { + /** 操作的用户ID */ + userId: number + /** 操作的用户头像 */ + avatar: string + /** 操作的用户昵称 */ + nickname: string +} + +// 简单菜单 +export interface ISimpleMenu { + /** 菜单ID */ + id: number + /** 菜单名称 */ + name: string + /** 上级 */ + parentId: number + /** 排序 */ + weight: number + /** 子菜单 */ + children: ISimpleMenu[] +} + +// 修改菜单 +export interface IUpdateMenus { + /** 拥有的菜单ID */ + have: number[] + /** 全部的菜单 */ + all: ISimpleMenu[] +} + +// 推送消息 +export interface IPushMessage { + /** ID */ + id: number + /** 标题 */ + title: string + /** 消息 */ + content: string + /** 创建时间 */ + createTime: string + /** 状态 0.失败 1.成功 */ + status: number +} diff --git a/tenant-web-ui/src/types/cms.ts b/tenant-web-ui/src/types/cms.ts new file mode 100644 index 0000000..02687ee --- /dev/null +++ b/tenant-web-ui/src/types/cms.ts @@ -0,0 +1,38 @@ +import { IBaseEntity } from "./base" +import { IPmsDept } from "./pms" + +/** 项目 */ +export interface ICmsProject extends IBaseEntity { + /* 项目ID */ + projectId: number + /*项目名称*/ + projectName: string + /*联系人名称*/ + linkman: string + /*联系电话*/ + contactNumber: string + /*行政地址*/ + areaCode: number + /*所在地,如:左右云创谷1栋A座*/ + address: string + /*排序*/ + sort: number + /*项目密码,做一些危险操作时,使用*/ + password: string + /*状态 【0.禁用 1.正常 2.锁定 】*/ + status: number + /*所属部门*/ + deptId: number + /*部门*/ + dept: IPmsDept | null +} + +/** 项目 */ +export interface ICmsDevice extends IBaseEntity { + /* 设备ID */ + deviceId: number + /*设备名称*/ + deviceName: string + /*状态 【0.禁用 1.正常 2.锁定 】*/ + status: number +} diff --git a/tenant-web-ui/src/types/dict.ts b/tenant-web-ui/src/types/dict.ts new file mode 100644 index 0000000..a29f9be --- /dev/null +++ b/tenant-web-ui/src/types/dict.ts @@ -0,0 +1,47 @@ +import { IBaseEntity, ISearchQuery } from "./base" + +// 字典搜索分页查询 +export interface IDictSearchQuery extends ISearchQuery { + // 字典类型 + dictTypeKey: string +} + +/** 字典类型表 */ +export interface IDictType extends IBaseEntity { + /** 字典类型 ID */ + typeId: number + /** 字典类型名 */ + typeName: string + /** 字典类型关键字 */ + typeKey: string + /** 字典描述 */ + description: string +} + +/** 字典数据表 */ +export interface IDictData extends IBaseEntity { + /** 字典类型 ID */ + dictCode: number + /** 字典排序 */ + dictSort: number + /** 字典标签 */ + dictLabel: string + /** 字典键值 */ + dictValue: string + /** 字典类型关键字 */ + typeKey: string + /** 是否默认(1.是 0.否) */ + isDefault: number +} + +/** 字典数据表 */ +export interface IMapDictData extends IBaseEntity { + /** 字典排序 */ + dictSort: number + /** 字典标签 */ + dictLabel: string + /** 字典键值 */ + dictValue: Object + /** 是否默认 */ + isDefault: boolean +} diff --git a/tenant-web-ui/src/types/lms.ts b/tenant-web-ui/src/types/lms.ts new file mode 100644 index 0000000..e519016 --- /dev/null +++ b/tenant-web-ui/src/types/lms.ts @@ -0,0 +1,69 @@ +/** 登录日志 */ +export interface ILoginLog { + /* ID */ + id: string + /*授权类型*/ + grantType: string + /*用户ID*/ + userId: number + /*用户昵称*/ + nickname: string + /*用户名*/ + username: string + /*头像*/ + avatar: string + /*请求地址*/ + requestUrl: string + /*请求IP*/ + requestIp: string + /*请求地址*/ + address: string + /*操作系统*/ + osName: string + /*浏览器*/ + browser: string + /*创建时间*/ + createTime: string +} + +/** 操作日志 */ +export interface IOperLog { + /*ID*/ + id: string + /*标题*/ + title: string + /*描述*/ + description: string + /*服务名称*/ + serviceName: string + /*用户ID*/ + userId: number + /*用户昵称*/ + nickname: string + /*用户名*/ + username: string + /*头像*/ + avatar: string + /*方法*/ + method: string + /*方法参数*/ + methodArgs: string + /*请求类型*/ + requestMethod: string + /*请求地址*/ + requestUrl: string + /*请求IP*/ + requestIp: string + /*请求地址*/ + address: string + /*请求响应*/ + responseResult: string + /*状态*/ + status: number + /*错误日志*/ + errorLog: string + /*耗时(毫秒)*/ + timeCost: number + /*创建时间*/ + createTime: string +} diff --git a/tenant-web-ui/src/types/pms.ts b/tenant-web-ui/src/types/pms.ts new file mode 100644 index 0000000..cc11e2f --- /dev/null +++ b/tenant-web-ui/src/types/pms.ts @@ -0,0 +1,274 @@ +import { IBaseEntity, ISimpleTenant } from "./base" + +/** 用户登录 */ +export interface ILoginData { + /** 租户ID */ + tenantId: string + /** 用户名 */ + username: string + /** 密码 */ + password: string + /** 验证码 */ + codeText: string + /** 验证码key */ + codeKey: string + /** 记住我 */ + rememberMe: boolean +} + +/** 用户登录的信息 */ +export interface ILoginUserInfo { + tenantId: string + loginId: string + grantType: string + userId: number + mobile: string + email: string + nickname: string + avatar: string + username: string + status: number + gender: number + adminFlag: number + userType: number + loginTime: string + roles: IUserRole[] +} + +/** 用户登录的角色 */ +export interface IUserRole { + /* 角色ID */ + roleId: number + /* 角色名称 */ + roleName: string + /* 角色描述 */ + description: string +} + +/** 认证 token */ +export interface IOAuth2Token { + /** `token` */ + access_token: string + /** 前缀 `Bearer ` */ + token_type: string + /** 用于调用刷新`accessToken`的接口时所需的`token` */ + refresh_token: string + /* 授权返回 */ + scope: string + /** `accessToken`的过期时间 秒 */ + expires_in: number +} + +// 系统菜单 +export interface ISysMenu extends IBaseEntity { + /*菜单 ID*/ + menuId: number + /*上级菜单*/ + parentId: number + /*菜单 名称*/ + menuName: string + /*权限标识*/ + perms: string + /*组件*/ + component: string + /*菜单图标*/ + icon: string + /*排序*/ + sort: number + /*路由地址*/ + path: string + /*目标用户 0.租户用户 1. 系统用户 2.全部*/ + target: number + /*菜单类型(0.菜单 1.按钮)*/ + menuType: number + /*菜单状态(1.显示 0.隐藏)*/ + visible: number + /*保持状态(1.保持 0.不保持)*/ + keepAlive: number + /*子菜单*/ + children: ISysMenu[] +} + +/** 用户权限 */ +export interface IUserPerms { + /** 按钮 */ + buttons: IPermsButton[] + /** 菜单 */ + menus: IPermsMenus[] +} + +/** 按钮权限 */ +export interface IPermsButton { + /** `标识符` */ + perms: string + /** 标题 */ + title: string +} + +/** 菜单权限 */ +export interface IPermsMenus { + /* 菜单ID */ + id: number + /* 上级ID */ + parentId: number + /* 权重 */ + weight: number + /* 名称 */ + name: string + /* 属性 */ + meta: IPermsMenusMeta + /* 路径 */ + path: string + /* vue.js 组件 */ + component: string + /* 子菜单 */ + children: IPermsMenus[] +} + +/** 菜单属性 */ +export interface IPermsMenusMeta { + /* 图标 */ + icon: string + /* 标题 */ + title: string + /** 是否隐藏 */ + hidden: boolean + /** 保持状态 */ + keepAlive: boolean +} + +/** 系统用户 */ +export interface IPmsUser extends IBaseEntity { + /** + * 用户唯一id + */ + userId: number + /** + * 头像 + */ + avatar: string + /** + * 用户名 + */ + username: string + /** + * 手机号码 + */ + mobile: string + /** + * 邮箱 + */ + email: string + /** + * 昵称 + */ + nickname: string + /** + * 密码 + */ + password: string + /** + * 性别[ 0.女 1.男 2.未知] + */ + gender: number + /** + * 是否管理员 0. 普通用户 1. 管理员 + */ + adminFlag: number + /** + * 状态 【0.禁用 1.正常】 + */ + status: number + /** + * 所属部门 + */ + deptId: number + /** + * 过期时间 为空就是永久 + */ + expired: string + /** + * 部门 + */ + dept: IPmsDept | null + /** + * 角色列表 + */ + roles: IPmsRole[] + /** + * 如果为空,表示 未登录。 + */ + loginId: string +} + +/** 系统角色 */ +export interface IPmsRole extends IBaseEntity { + /** + * 用户唯一id + */ + roleId: number + /** + * 角色名称 + */ + roleName: string + /** + * 排序 + */ + sort: number + /** + * 角色描述 + */ + description: string +} + +/** 系统部门 */ +export interface IPmsDept extends IBaseEntity { + /** + * 部门 ID + */ + deptId: number + /** + * 部门上级 + */ + parentId: number + /** + * 部门 名称 + */ + deptName: string + /** + * 部门 领导名称 + */ + leader: string + /** + * 部门 领导手机号 + */ + leaderMobile: string + /** + * 排序 + */ + sort: number + /** + * 部门描述 + */ + description: string + /** + * 祖级列表 + */ + ancestors: string + /** + * 子菜单 + */ + children: IPmsDept[] +} + +/** 用户关联的租户 */ +export interface IUserListTenant { + /** + * 已经拥有的 租户ID + */ + have: string[] + /** + * 全部 租户信息 + */ + all: ISimpleTenant[] +} diff --git a/tenant-web-ui/src/types/sys.ts b/tenant-web-ui/src/types/sys.ts new file mode 100644 index 0000000..fce3571 --- /dev/null +++ b/tenant-web-ui/src/types/sys.ts @@ -0,0 +1,337 @@ +import { IBaseEntity } from "./base" + +/** 租户模板 */ +export interface ISysTemplate extends IBaseEntity { + /** + * 唯一id + */ + id: number + /** + * 名称 + */ + name: string + /** + * 描述 + */ + description: string + /** + * 菜单ID + */ + menuIds?: number[] +} + +/** 租户 */ +export interface ISysTenant extends IBaseEntity { + /** + * 租户id + */ + tenantId: string + /** + * 租户logo + */ + logo: string + /** + * 租户名称 + */ + name: string + /** + * 租户邮箱 + */ + email: string + /** + * 联系人名称 + */ + linkman: string + /** + * 联系电话 + */ + contactNumber: string + /** + * 行政地址 + */ + areaCode: number + /** + * 联系地址 + */ + address: string + /** + * 状态 【0.禁用 1.正常】 + */ + status: number + /** + * 过期时间 默认是 100 年 + */ + expired: string + /** + * 租户 模板 + */ + templates: ISysTemplate[] +} + +/** 创建租户 */ +export interface ICreateTenantAdmin { + /** + * 管理员昵称 + */ + adminNickname: string + /** + * 管理员用户名 + */ + adminUsername: string + /** + * 管理员手机号 + */ + adminMobile: string + /** + * 管理员邮箱 + */ + adminEmail: string + /** + * 管理员密码 + */ + adminPwd: string +} + +/** 创建租户 */ +export interface ICreateTenant extends ICreateTenantAdmin { + /** + * 租户id + */ + tenantId: string + /** + * 租户logo + */ + logo: string + /** + * 租户名称 + */ + name: string + /** + * 租户邮箱 + */ + email: string + /** + * 联系人名称 + */ + linkman: string + /** + * 联系电话 + */ + contactNumber: string + /** + * 行政地址 + */ + areaCode: number + /** + * 联系地址 + */ + address: string + /** + * 租户 模板 + */ + templates: ISysTemplate[] + /** + * 过期时间 默认是 100 年 + */ + expired: string +} + +/** 系统配置 */ +export interface ISysConfig extends IBaseEntity { + /** + * 唯一id + */ + configId: number + /** + * 参数名称 + */ + configName: string + /** + * 参数键名 + */ + configKey: string + /** + * 参数键值 + */ + configValue: string + /** + * 系统内置(1.是 0.否) + */ + configType: number +} + +/** 服务器信息 */ +export interface IServerInfo { + /** + * CPU相关信息 + */ + cpu: Cpu + /** + * 內存相关信息 + */ + mem: Mem + /** + * JVM相关信息 + */ + jvm: Jvm + /** + * 服务器相关信息 + */ + sys: Sys + /** + * 磁盘相关信息 + */ + sysFiles: SysFile[] +} + +/** 服务器CPU信息 */ +export interface Cpu { + /** + * 核心数 + */ + cpuNum: number + /** + * CPU总的使用率 + */ + total: number + /** + * CPU系统使用率 + */ + sys: number + /** + * CPU用户使用率 + */ + used: number + /** + * CPU当前等待率 + */ + wait: number + /** + * CPU当前空闲率 + */ + free: number +} + +/** 服务器Jvm信息 */ +export interface Jvm { + /** + * 当前JVM占用的内存总数(M) + */ + total: number + /** + * JVM最大可用内存总数(M) + */ + max: number + /** + * JVM空闲内存(M) + */ + free: number + /** + * JVM使用的内存(M) + */ + used: number + /** + * JVM使用的内存(M) + */ + usage: number + /** + * JDK版本 + */ + version: string + /** + * JDK路径 + */ + home: string + /** + * Java名称 + */ + name: string + /** + * 启动时间 + */ + startTime: string + /** + * 运行时长 + */ + runTime: string + /** + * 运行参数 + */ + inputArgs: string +} + +/** 服务器内存信息 */ +export interface Mem { + /** + * 内存总量 + */ + total: number + /** + * 已用内存 + */ + used: number + /** + * 剩余内存 + */ + free: number + /** + * 使用率 + */ + usage: number +} + +/** 服务器系统信息 */ +export interface Sys { + /** + * 服务器名称 + */ + computerName: string + /** + * 服务器Ip + */ + computerIp: string + /** + * 项目路径 + */ + userDir: string + /** + * 操作系统 + */ + osName: string + /** + * 系统架构 + */ + osArch: string +} + +/** 服务器文件系统信息 */ +export interface SysFile { + /** + * 盘符路径 + */ + dirName: string + /** + * 盘符类型 + */ + sysTypeName: string + /** + * 文件类型 + */ + typeName: string + /** + * 总大小 + */ + total: string + /** + * 剩余大小 + */ + free: string + /** + * 已经使用量 + */ + used: string + /** + * 资源的使用率 + */ + usage: number +} diff --git a/tenant-web-ui/src/utils/cache/cookies.ts b/tenant-web-ui/src/utils/cache/cookies.ts new file mode 100644 index 0000000..21d938f --- /dev/null +++ b/tenant-web-ui/src/utils/cache/cookies.ts @@ -0,0 +1,14 @@ +/** 统一处理 Cookie */ + +import CacheKey from "@/constants/cache-key" +import Cookies from "js-cookie" + +export const getToken = () => { + return Cookies.get(CacheKey.TOKEN) +} +export const setToken = (token: string) => { + Cookies.set(CacheKey.TOKEN, token) +} +export const removeToken = () => { + Cookies.remove(CacheKey.TOKEN) +} diff --git a/tenant-web-ui/src/utils/cache/local-storage.ts b/tenant-web-ui/src/utils/cache/local-storage.ts new file mode 100644 index 0000000..4cae22c --- /dev/null +++ b/tenant-web-ui/src/utils/cache/local-storage.ts @@ -0,0 +1,101 @@ +/** 统一处理 localStorage */ + +import CacheKey from "@/constants/cache-key" +import { type SidebarOpened, type SidebarClosed } from "@/constants/app-key" +import { type ThemeName } from "@/hooks/useTheme" +import { type TagView } from "@/store/modules/tags-view" +import { type LayoutSettings } from "@/config/layouts" +import { ILoginData } from "@/types/pms" +import { encode, decode } from "js-base64" + +//#region 系统布局配置 +export const getConfigLayout = () => { + const json = localStorage.getItem(CacheKey.CONFIG_LAYOUT) + return json ? (JSON.parse(json) as LayoutSettings) : null +} + +export const setConfigLayout = (settings: LayoutSettings) => { + localStorage.setItem(CacheKey.CONFIG_LAYOUT, JSON.stringify(settings)) +} + +export const removeConfigLayout = () => { + localStorage.removeItem(CacheKey.CONFIG_LAYOUT) +} +//#endregion + +//#region 侧边栏状态 +export const getSidebarStatus = () => { + return localStorage.getItem(CacheKey.SIDEBAR_STATUS) +} + +export const setSidebarStatus = (sidebarStatus: SidebarOpened | SidebarClosed) => { + localStorage.setItem(CacheKey.SIDEBAR_STATUS, sidebarStatus) +} +//#endregion + +//#region 正在应用的主题名称 +export const getActiveThemeName = () => { + return localStorage.getItem(CacheKey.ACTIVE_THEME_NAME) as ThemeName | null +} + +export const setActiveThemeName = (themeName: ThemeName) => { + localStorage.setItem(CacheKey.ACTIVE_THEME_NAME, themeName) +} +//#endregion + +//#region 标签栏 +export const getVisitedViews = () => { + const json = localStorage.getItem(CacheKey.VISITED_VIEWS) + return JSON.parse(json ?? "[]") as TagView[] +} + +export const setVisitedViews = (views: TagView[]) => { + views.forEach((view) => { + // 删除不必要的属性,防止 JSON.stringify 处理到循环引用 + delete view.matched + delete view.redirectedFrom + }) + localStorage.setItem(CacheKey.VISITED_VIEWS, JSON.stringify(views)) +} + +export const getCachedViews = () => { + const json = localStorage.getItem(CacheKey.CACHED_VIEWS) + return JSON.parse(json ?? "[]") as string[] +} + +export const setCachedViews = (views: string[]) => { + localStorage.setItem(CacheKey.CACHED_VIEWS, JSON.stringify(views)) +} + +//#region 控件尺寸 +/// 控件尺寸 +export const getControlSize = () => { + return localStorage.getItem(CacheKey.CONTROL_SIZE) as string +} + +/// 控件尺寸 +export const setControlSize = (size: string) => { + localStorage.setItem(CacheKey.CONTROL_SIZE, size) +} +//#endregion + +//#region 获取保存的 用户名和密码 +export const getUserAndPassword = () => { + const jsonStr = localStorage.getItem(CacheKey.USER_AND_PASSWORD) + if (jsonStr) { + return JSON.parse(decode(jsonStr)) as ILoginData + } + return null +} + +// 保存 用户名和密码 +export function setUserAndPassword(data: ILoginData) { + return localStorage.setItem(CacheKey.USER_AND_PASSWORD, encode(JSON.stringify(data))) +} + +// 删除 用户名和密码 +export function removeUserAndPassword() { + return localStorage.removeItem(CacheKey.USER_AND_PASSWORD) +} + +//#endregion diff --git a/tenant-web-ui/src/utils/fix-blank-page.ts b/tenant-web-ui/src/utils/fix-blank-page.ts new file mode 100644 index 0000000..bff0667 --- /dev/null +++ b/tenant-web-ui/src/utils/fix-blank-page.ts @@ -0,0 +1,15 @@ +import { useTagsViewStoreHook } from "@/store/modules/tags-view" + +/** + * 功能:修复 组合使用导致的页面空白 + * 原因:似乎是 Vue 本身的 BUG:https://github.com/vuejs/core/issues/7121 + * 复现:在不使用该函数的情况下,可以通过如下步骤复现: + * 1. 进入一个页面 + * 2. 修改该页面的 TS 代码并保存 + * 3. 回到浏览器切换一下页面 + * 4. 结果:内容区没有加载出来呈现空白状态 + */ +export const fixBlankPage = () => { + const tagsViewStore = useTagsViewStoreHook() + tagsViewStore.cachedViews = [...tagsViewStore.cachedViews] +} diff --git a/tenant-web-ui/src/utils/index.ts b/tenant-web-ui/src/utils/index.ts new file mode 100644 index 0000000..925c2f6 --- /dev/null +++ b/tenant-web-ui/src/utils/index.ts @@ -0,0 +1,219 @@ +import dayjs from "dayjs" +import { removeConfigLayout } from "@/utils/cache/local-storage" +import chinaAreaJson from "@/assets/ChinaArea.json" +import { ISimpleProject } from "@/types/base" + +//#region 格式化日期时间 +export const DEFAULT_DATE_TIME_PATTERN = "YYYY-MM-DD HH:mm:ss" + +export const DEFAULT_DATE_PATTERN = "YYYY-MM-DD" + +export const DEFAULT_TIME_PATTERN = "HH:mm:ss" + +/** 格式化日期时间 */ +export const formatDateTime = (time: string | number | Date) => { + return time ? dayjs(new Date(time)).format(DEFAULT_DATE_TIME_PATTERN) : "N/A" +} + +/** 格式化日期 */ +export const formatDate = (time: string | number | Date) => { + return time ? dayjs(new Date(time)).format(DEFAULT_DATE_PATTERN) : "N/A" +} + +/** 格式化时间 */ +export const formatTime = (time: string | number | Date) => { + return time ? dayjs(new Date(time)).format(DEFAULT_TIME_PATTERN) : "N/A" +} + +/** 计算时间差 */ +export const diffDateTime = (time1: string | number | Date, time2: string | number | Date) => { + if (!time1) { + return "N/A" + } + if (!time2) { + return "N/A" + } + const diff = dayjs(new Date(time1)).diff(new Date(time2), "days") + return diff +} + +/** + * @param {number} time + */ +export function timeAgo(time: string | number | Date) { + const limit = dayjs(Date.now()).diff(dayjs(new Date(time)), "second") + let content = "" + if (limit < 60) { + content = "刚刚" + } else if (limit >= 60 && limit < 3600) { + content = Math.floor(limit / 60) + " 分钟前" + } else if (limit >= 3600 && limit < 86400) { + content = Math.floor(limit / 3600) + " 小时前" + } else if (limit >= 86400 && limit < 2592000) { + content = Math.floor(limit / 86400) + " 天前" + } else if (limit >= 2592000 && limit < 31104000) { + content = Math.floor(limit / 2592000) + " 个月前" + } else { + content = dayjs(time).format(DEFAULT_DATE_PATTERN) + } + return content +} + +export function expiredDateAgo(time: string | number | Date) { + const data = dayjs(time, DEFAULT_DATE_TIME_PATTERN) + const now = dayjs() + if (data.diff(now, "year") > 0) { + return `${data.diff(now, "year")}年后` + } else if (data.diff(now, "month") > 0) { + return `${data.diff(now, "month")}月后` + } else if (data.diff(now, "day") > 0) { + return `${data.diff(now, "day")}天后` + } else if (data.isBefore(now)) { + return "已过期" + } else { + return data.format("MM-DD HH:mm") + } +} + +//#endregion + +/** 用 JS 获取全局 css 变量 */ +export const getCssVariableValue = (cssVariableName: string) => { + let cssVariableValue = "" + try { + // 没有拿到值时,会返回空串 + cssVariableValue = getComputedStyle(document.documentElement).getPropertyValue(cssVariableName) + } catch (error) { + console.error(error) + } + return cssVariableValue +} + +/** 用 JS 设置全局 CSS 变量 */ +export const setCssVariableValue = (cssVariableName: string, cssVariableValue: string) => { + try { + document.documentElement.style.setProperty(cssVariableName, cssVariableValue) + } catch (error) { + console.error(error) + } +} + +/** 重置项目配置 */ +export const resetConfigLayout = () => { + removeConfigLayout() + location.reload() +} + +/** + * @param {string} url + * @returns {Object} + */ +export const getQueryObject = (url: string) => { + url = url == null ? window.location.href : url + const search = url.substring(url.lastIndexOf("?") + 1) + const obj: any = {} + const reg = /([^?&=]+)=([^?&=]*)/g + search.replace(reg, (rs, $1, $2) => { + const name = decodeURIComponent($1) + const val = String(decodeURIComponent($2)) + obj[name] = val + return rs + }) + return obj +} + +/** 获取 http 请求头 前缀 */ +export const getEnvBaseURLPrefix = () => { + return import.meta.env.MODE === "development" ? "/api/v1" : getEnvBaseURL() +} + +/** 获取 默认api url */ +export const getEnvBaseURL = () => { + return import.meta.env.VITE_BASE_API +} + +/** 获取 区域名称 */ +export const chinaAreaDeepQuery = (areaCode: number) => { + let isGet = false + let node = { areaCode: 0, mergerName: "" } + const deepSearch = (tree: any, id: any) => { + for (let i = 0; i < tree.length; i++) { + const temp = tree[i] + if (temp.children && temp.children.length > 0) { + deepSearch(temp.children, id) + } + if (id === temp.areaCode || isGet) { + isGet || (node = { areaCode: temp.areaCode, mergerName: temp.mergerName }) + isGet = true + break + } + } + } + deepSearch(chinaAreaJson, areaCode) + return node +} + +// 未来的时间 +export const futureShortcuts = [ + { + text: "一周后", + value: dayjs().add(1, "week").toDate() + }, + { + text: "一个月后", + value: dayjs().add(1, "month").toDate() + }, + { + text: "三个月后", + value: dayjs().add(3, "month").toDate() + }, + { + text: "六个月后", + value: dayjs().add(6, "month").toDate() + }, + { + text: "一年后", + value: dayjs().add(1, "year").toDate() + }, + { + text: "三年后", + value: dayjs().add(3, "year").toDate() + } +] + +// 过去的时间 +export const pastShortcuts = [ + { + text: "一周前", + value: dayjs().subtract(1, "week").toDate() + }, + { + text: "一个月前", + value: dayjs().subtract(1, "month").toDate() + }, + { + text: "三个月前", + value: dayjs().subtract(3, "month").toDate() + }, + { + text: "六个月前", + value: dayjs().subtract(6, "month").toDate() + }, + { + text: "一年前", + value: dayjs().subtract(1, "year").toDate() + }, + { + text: "三年前", + value: dayjs().subtract(3, "year").toDate() + } +] + +// 设置 默认的项目 +export const defaultProject: ISimpleProject = { + projectId: 10001, + projectName: "默认项目", + linkman: "默认项目", + areaCode: 110000000000, + address: "默认项目" +} diff --git a/tenant-web-ui/src/utils/service.ts b/tenant-web-ui/src/utils/service.ts new file mode 100644 index 0000000..200857b --- /dev/null +++ b/tenant-web-ui/src/utils/service.ts @@ -0,0 +1,194 @@ +import axios, { AxiosResponse, type AxiosInstance, type AxiosRequestConfig } from "axios" +import { useUserStoreHook } from "@/store/modules/user" +import { ElMessage, ElMessageBox } from "element-plus" +import { get, merge } from "lodash-es" +import { getToken } from "./cache/cookies" +import { useProjectStoreHook } from "@/store/modules/project" +import { getEnvBaseURLPrefix } from "." +import { ISimpleProject } from "@/types/base" + +/** 创建请求实例 */ +function createService() { + // 创建一个 axios 实例命名为 service + const service = axios.create() + // 请求拦截 + service.interceptors.request.use( + (config) => config, + // 发送失败 + (error) => Promise.reject(error) + ) + // 响应拦截(可根据具体业务作出相应的调整) + service.interceptors.response.use( + (response) => { + // apiData 是 api 返回的数据 + const apiData = response.data + // 二进制数据则直接返回 + const responseType = response.request?.responseType + if (responseType === "blob" || responseType === "arraybuffer") return apiData + // 这个 code 是和后端约定的业务 code + const code = apiData.status + // 如果没有 code, 代表这不是项目后端开发的 api + if (code === undefined) { + ElMessage.error("非本系统的接口") + return Promise.reject(new Error("非本系统的接口")) + } + const projectStore = useProjectStoreHook() + switch (code) { + case 200: + // code === 200 代表没有错误 + return apiData + case 400004: + case 400010: + case 400011: + case 400012: + logout(apiData.message) + return Promise.reject(new Error(apiData.message)) + case 400444: + case 400447: + // 此用户 没有操作 项目 的权限 + ElMessage.error(`您没有操作 ${projectStore.getCurrentProject().projectName} 项目的权限`) + projectStore.setCurrentProject(apiData.data as ISimpleProject) + return resendRequest(service, response) + default: + // 不是正确的 Code + ElMessage.error(apiData.message || "Error") + return Promise.reject(new Error(apiData.message || "Error")) + } + }, + (error) => { + // status 是 HTTP 状态码 + const status = get(error, "response.status") + switch (status) { + case 400: + error.message = "请求错误" + break + case 401: + // Token 过期时 + logout("认证已经过期,请从新登录!") + break + case 403: + error.message = "拒绝访问" + break + case 404: + error.message = "请求地址出错" + break + case 408: + error.message = "请求超时" + break + case 500: + error.message = "服务器内部错误" + break + case 501: + error.message = "服务未实现" + break + case 502: + error.message = "网关错误" + break + case 503: + error.message = "服务不可用" + break + case 504: + error.message = "网关超时" + break + case 505: + error.message = "HTTP 版本不受支持" + break + default: + break + } + ElMessage.error(error.message) + return Promise.reject(error) + } + ) + return service +} + +// 重新发送请求 +function resendRequest(service: AxiosInstance, response: AxiosResponse) { + const config = response.config + const projectId = useProjectStoreHook().getCurrentProjectId() + config.headers["x-project-id"] = projectId + return service(config) +} + +// 退出登录 +function logout(message: string) { + ElMessageBox.confirm(message || "登录已经过期,需要重新登录", "登录过期", { + confirmButtonText: "重新登录", + cancelButtonText: "取消", + type: "warning" + }) + .then(() => { + useUserStoreHook().fedLogout() + // 强制刷新浏览器也行,只是交互体验不是很好 + location.reload() + }) + .catch(() => console.log("取消退出...")) +} + +/** 创建请求方法 */ +function createRequest(service: AxiosInstance) { + return function (config: AxiosRequestConfig): Promise { + const tokenValue = getToken() + const projectId = useProjectStoreHook().getCurrentProjectId() + // 如果是登录接口,就使用默认的 租户ID 进行登录 + const tenantId = config.url === "/auth/login" ? config.data.tenantId : null + const defaultConfig = { + headers: { + // 携带 Token + Authorization: tokenValue ? tokenValue : undefined, + "x-tenant-id": tenantId, + "x-project-id": projectId, + "Content-Type": "application/json" + }, + timeout: 10000, + baseURL: getEnvBaseURLPrefix() + } + // 将默认配置 defaultConfig 和传入的自定义配置 config 进行合并成为 mergeConfig + const mergeConfig = merge(defaultConfig, config) + return service(mergeConfig) + } +} + +/** 用于网络请求的实例 */ +const axiosService = createService() + +/** 用于网络请求的方法 */ +const axiosRequest = createRequest(axiosService) + +/** 通用请求工具函数 */ +function httpRequest(config: AxiosRequestConfig): Promise { + // 单独处理自定义请求/响应回掉 + return new Promise((resolve, reject) => + axiosRequest(config) + .then((response) => { + resolve(response as T) + }) + .catch((error) => { + console.log("error :>> ", error) + reject(error) + }) + ) +} + +/** 单独抽离的get工具函数 */ +function httpGet(url: string, params?: T): Promise

{ + return httpRequest

({ method: "get", url, params }) +} + +/** 单独抽离的post工具函数 */ +function httpPost(url: string, data?: T): Promise

{ + return httpRequest

({ method: "post", url, data }) +} + +/** 单独抽离的put工具函数 */ +function httpPut(url: string, data?: T): Promise

{ + return httpRequest

({ method: "put", url, data }) +} + +/** 单独抽离的delete工具函数 */ +function httpDelete(url: string, params?: T): Promise

{ + return httpRequest

({ method: "delete", url, params }) +} + +export { httpRequest, httpGet, httpPost, httpPut, httpDelete, axiosRequest } diff --git a/tenant-web-ui/src/utils/validate.ts b/tenant-web-ui/src/utils/validate.ts new file mode 100644 index 0000000..9b4564d --- /dev/null +++ b/tenant-web-ui/src/utils/validate.ts @@ -0,0 +1,120 @@ +/** 判断是否为数组 */ +export const isArray = (arg: unknown) => { + return Array.isArray ? Array.isArray(arg) : Object.prototype.toString.call(arg) === "[object Array]" +} + +/** 判断是否为字符串 */ +export const isString = (str: unknown) => { + return typeof str === "string" || str instanceof String +} + +/** 判断是否为外链 */ +export const isExternal = (path: string) => { + const reg = /^(https?:|mailto:|tel:)/ + return reg.test(path) +} + +/** 判断是否为网址(带协议) */ +export const isUrl = (url: string) => { + const reg = /^(((ht|f)tps?):\/\/)?([^!@#$%^&*?.\s-]([^!@#$%^&*?.\s]{0,63}[^!@#$%^&*?.\s])?\.)+[a-z]{2,6}\/?/ + return reg.test(url) +} + +/** 判断是否为网址或 IP(带端口) */ +export const isUrlPort = (url: string) => { + const reg = /^((ht|f)tps?:\/\/)?[\w-]+(\.[\w-]+)+:\d{1,5}\/?$/ + return reg.test(url) +} + +/** 判断是否为域名(不带协议) */ +export const isDomain = (domain: string) => { + const reg = /^([0-9a-zA-Z-]{1,}\.)+([a-zA-Z]{2,})$/ + return reg.test(domain) +} + +/** 判断版本号格式是否为 X.Y.Z */ +export const isVersion = (version: string) => { + const reg = /^\d+(?:\.\d+){2}$/ + return reg.test(version) +} + +/** 判断时间格式是否为 24 小时制(HH:mm:ss) */ +export const is24H = (time: string) => { + const reg = /^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/ + return reg.test(time) +} + +/** 判断是否为手机号(1 开头) */ +export const isPhoneNumber = (str: string) => { + const reg = /^(?:(?:\+|00)86)?1\d{10}$/ + return reg.test(str) +} + +/** 判断是否为第二代身份证(18 位) */ +export const isChineseIdCard = (str: string) => { + const reg = /^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/ + return reg.test(str) +} + +/** 判断是否为 Email(支持中文邮箱) */ +export const isEmail = (email: string) => { + const reg = /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/ + return reg.test(email) +} + +/** 判断是否为 MAC 地址 */ +export const isMAC = (mac: string) => { + const reg = + /^(([a-f0-9][0,2,4,6,8,a,c,e]:([a-f0-9]{2}:){4})|([a-f0-9][0,2,4,6,8,a,c,e]-([a-f0-9]{2}-){4}))[a-f0-9]{2}$/i + return reg.test(mac) +} + +/** 判断是否为 IPv4 地址 */ +export const isIPv4 = (ip: string) => { + const reg = + /^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])(?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$/ + return reg.test(ip) +} + +/** 判断是否为车牌(兼容新能源车牌) */ +export const isLicensePlate = (str: string) => { + const reg = + /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/ + return reg.test(str) +} + +/** 图片后缀名 */ +export function isImage(value: string) { + const reg = /\w(\.gif|\.jpeg|\.png|\.jpg|\.bmp)/ + return reg.test(value) +} + +/** 压缩包格式 */ +export function isCompress(value: string) { + const reg = /^[^\\/:\\*\\?"<>\\|]+\.(zip|gz|rar|7z|tar|xz|bz2|tar.gz|tar.xz|tar.bz2|tar.7z)$/ + return reg.test(value) +} + +/** 用户密码 */ +export function isPassword(value: string) { + const reg = /^(?=.*[a-zA-Z])(?=.*[0-9])[A-Za-z0-9]{5,24}$/ + return reg.test(value) +} + +/** 用户名称 */ +export function isUsername(value: string) { + const reg = /^[a-zA-Z0-9_-]{5,24}$/ + return reg.test(value) +} + +/** 校验 手机号码*/ +export function isPhone(value: string) { + const reg = /^[1][0-9]{10}$/ + return reg.test(value) +} + +/** 电话号码 */ +export function isTelphone(value: string) { + const reg = /^[1][0-9]{10}$|^0\d{2,3}-?\d{7,8}$/ + return reg.test(value) +} diff --git a/tenant-web-ui/src/views/dashboard/index.vue b/tenant-web-ui/src/views/dashboard/index.vue new file mode 100644 index 0000000..c37d682 --- /dev/null +++ b/tenant-web-ui/src/views/dashboard/index.vue @@ -0,0 +1,245 @@ + + + + + diff --git a/tenant-web-ui/src/views/device/deploy/index.vue b/tenant-web-ui/src/views/device/deploy/index.vue new file mode 100644 index 0000000..ad5a66f --- /dev/null +++ b/tenant-web-ui/src/views/device/deploy/index.vue @@ -0,0 +1,15 @@ + + + + + diff --git a/tenant-web-ui/src/views/device/list/index.vue b/tenant-web-ui/src/views/device/list/index.vue new file mode 100644 index 0000000..fd2d24f --- /dev/null +++ b/tenant-web-ui/src/views/device/list/index.vue @@ -0,0 +1,269 @@ + + + + + diff --git a/tenant-web-ui/src/views/error-page/403.vue b/tenant-web-ui/src/views/error-page/403.vue new file mode 100644 index 0000000..d3e2d3f --- /dev/null +++ b/tenant-web-ui/src/views/error-page/403.vue @@ -0,0 +1,10 @@ + + + diff --git a/tenant-web-ui/src/views/error-page/404.vue b/tenant-web-ui/src/views/error-page/404.vue new file mode 100644 index 0000000..a3703f8 --- /dev/null +++ b/tenant-web-ui/src/views/error-page/404.vue @@ -0,0 +1,10 @@ + + + diff --git a/tenant-web-ui/src/views/error-page/components/ErrorPageLayout.vue b/tenant-web-ui/src/views/error-page/components/ErrorPageLayout.vue new file mode 100644 index 0000000..315e570 --- /dev/null +++ b/tenant-web-ui/src/views/error-page/components/ErrorPageLayout.vue @@ -0,0 +1,24 @@ + + + diff --git a/tenant-web-ui/src/views/hook-demo/use-fetch-select.vue b/tenant-web-ui/src/views/hook-demo/use-fetch-select.vue new file mode 100644 index 0000000..ecf144c --- /dev/null +++ b/tenant-web-ui/src/views/hook-demo/use-fetch-select.vue @@ -0,0 +1,20 @@ + + + diff --git a/tenant-web-ui/src/views/hook-demo/use-fullscreen-loading.vue b/tenant-web-ui/src/views/hook-demo/use-fullscreen-loading.vue new file mode 100644 index 0000000..c711ef6 --- /dev/null +++ b/tenant-web-ui/src/views/hook-demo/use-fullscreen-loading.vue @@ -0,0 +1,47 @@ + + + diff --git a/tenant-web-ui/src/views/hook-demo/use-watermark.vue b/tenant-web-ui/src/views/hook-demo/use-watermark.vue new file mode 100644 index 0000000..541b6dc --- /dev/null +++ b/tenant-web-ui/src/views/hook-demo/use-watermark.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/tenant-web-ui/src/views/login/index.vue b/tenant-web-ui/src/views/login/index.vue new file mode 100644 index 0000000..8f84c3b --- /dev/null +++ b/tenant-web-ui/src/views/login/index.vue @@ -0,0 +1,237 @@ + + + + + diff --git a/tenant-web-ui/src/views/monitor/logininfor/index.vue b/tenant-web-ui/src/views/monitor/logininfor/index.vue new file mode 100644 index 0000000..4c9f581 --- /dev/null +++ b/tenant-web-ui/src/views/monitor/logininfor/index.vue @@ -0,0 +1,201 @@ + + + + + diff --git a/tenant-web-ui/src/views/monitor/operlog/index.vue b/tenant-web-ui/src/views/monitor/operlog/index.vue new file mode 100644 index 0000000..1aae6dc --- /dev/null +++ b/tenant-web-ui/src/views/monitor/operlog/index.vue @@ -0,0 +1,333 @@ + + + + + diff --git a/tenant-web-ui/src/views/monitor/server/index.vue b/tenant-web-ui/src/views/monitor/server/index.vue new file mode 100644 index 0000000..0dd3735 --- /dev/null +++ b/tenant-web-ui/src/views/monitor/server/index.vue @@ -0,0 +1,404 @@ + + + + + diff --git a/tenant-web-ui/src/views/personal/index.vue b/tenant-web-ui/src/views/personal/index.vue new file mode 100644 index 0000000..a361bfb --- /dev/null +++ b/tenant-web-ui/src/views/personal/index.vue @@ -0,0 +1,358 @@ + + + + + diff --git a/tenant-web-ui/src/views/pre/dept/index.vue b/tenant-web-ui/src/views/pre/dept/index.vue new file mode 100644 index 0000000..032c6fa --- /dev/null +++ b/tenant-web-ui/src/views/pre/dept/index.vue @@ -0,0 +1,419 @@ + + + + + diff --git a/tenant-web-ui/src/views/pre/menu/index.vue b/tenant-web-ui/src/views/pre/menu/index.vue new file mode 100644 index 0000000..3b6c2cc --- /dev/null +++ b/tenant-web-ui/src/views/pre/menu/index.vue @@ -0,0 +1,487 @@ + + + + + diff --git a/tenant-web-ui/src/views/pre/role/index.vue b/tenant-web-ui/src/views/pre/role/index.vue new file mode 100644 index 0000000..51379ea --- /dev/null +++ b/tenant-web-ui/src/views/pre/role/index.vue @@ -0,0 +1,483 @@ + + + + + diff --git a/tenant-web-ui/src/views/pre/user/index.vue b/tenant-web-ui/src/views/pre/user/index.vue new file mode 100644 index 0000000..30b271f --- /dev/null +++ b/tenant-web-ui/src/views/pre/user/index.vue @@ -0,0 +1,642 @@ + + + + + diff --git a/tenant-web-ui/src/views/project/list/index.vue b/tenant-web-ui/src/views/project/list/index.vue new file mode 100644 index 0000000..3741406 --- /dev/null +++ b/tenant-web-ui/src/views/project/list/index.vue @@ -0,0 +1,506 @@ + + + + + diff --git a/tenant-web-ui/src/views/project/trend/index.vue b/tenant-web-ui/src/views/project/trend/index.vue new file mode 100644 index 0000000..6ee5ecd --- /dev/null +++ b/tenant-web-ui/src/views/project/trend/index.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/tenant-web-ui/src/views/redirect/index.vue b/tenant-web-ui/src/views/redirect/index.vue new file mode 100644 index 0000000..2fb46b3 --- /dev/null +++ b/tenant-web-ui/src/views/redirect/index.vue @@ -0,0 +1,12 @@ + + + diff --git a/tenant-web-ui/src/views/statistics/energy/index.vue b/tenant-web-ui/src/views/statistics/energy/index.vue new file mode 100644 index 0000000..8cd0244 --- /dev/null +++ b/tenant-web-ui/src/views/statistics/energy/index.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/tenant-web-ui/src/views/statistics/trend/index.vue b/tenant-web-ui/src/views/statistics/trend/index.vue new file mode 100644 index 0000000..6ee5ecd --- /dev/null +++ b/tenant-web-ui/src/views/statistics/trend/index.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/tenant-web-ui/src/views/unocss/index.vue b/tenant-web-ui/src/views/unocss/index.vue new file mode 100644 index 0000000..9859ecb --- /dev/null +++ b/tenant-web-ui/src/views/unocss/index.vue @@ -0,0 +1,13 @@ + diff --git a/tenant-web-ui/tests/components/Notify.test.ts b/tenant-web-ui/tests/components/Notify.test.ts new file mode 100644 index 0000000..bc0aab7 --- /dev/null +++ b/tenant-web-ui/tests/components/Notify.test.ts @@ -0,0 +1,30 @@ +import { shallowMount } from "@vue/test-utils" +import { describe, expect, it } from "vitest" +import Notify from "@/components/Notify/index.vue" +import NotifyList from "@/components/Notify/NotifyList.vue" + +describe("Notify", () => { + it("正常渲染", () => { + const wrapper = shallowMount(Notify) + expect(wrapper.classes("notify")).toBe(true) + }) +}) + +describe("NotifyList", () => { + it("List 长度为 0", () => { + const wrapper = shallowMount(NotifyList, { + props: { + list: [] + } + }) + expect(wrapper.find("el-empty").exists()).toBe(true) + }) + it("List 长度不为 0", () => { + const wrapper = shallowMount(NotifyList, { + props: { + list: [] + } + }) + expect(wrapper.find("el-empty").exists()).toBe(false) + }) +}) diff --git a/tenant-web-ui/tests/demo.test.ts b/tenant-web-ui/tests/demo.test.ts new file mode 100644 index 0000000..ecca8df --- /dev/null +++ b/tenant-web-ui/tests/demo.test.ts @@ -0,0 +1,32 @@ +import { describe, expect, it } from "vitest" + +/** + * @description 该文件所有示例均是为了向你演示 Vitest 最基本的用法 + * @link https://cn.vitest.dev/api + * @api describe: 形成一个作用域 + * @api test/it: 定义了一组关于测试期望的方法,它接收测试名称和一个含有测试期望的函数 + * @api expect: 用来创建断言 + * @api toBe: 可以用于断言原始类型是否相等,或者对象是否共享相同的引用 + * @api toEqual: 断言实际值是否等于接收到的值或具有相同的结构(如果是对象,则递归比较它们) + */ + +const author1 = { + name: "pany", + email: "939630029@qq.com", + url: "https://github.com/pany-ang" +} + +const author2 = { + name: "pany", + email: "939630029@qq.com", + url: "https://github.com/pany-ang" +} + +describe("这里填写作用域名称", () => { + it("测试基础数据类型", () => { + expect(1 + 1).toBe(2) + }) + it("测试引用类型", () => { + expect(author1).toEqual(author2) + }) +}) diff --git a/tenant-web-ui/tests/utils/validate.test.ts b/tenant-web-ui/tests/utils/validate.test.ts new file mode 100644 index 0000000..12ab43f --- /dev/null +++ b/tenant-web-ui/tests/utils/validate.test.ts @@ -0,0 +1,32 @@ +import { describe, expect, it } from "vitest" +import { isArray } from "@/utils/validate" + +describe("isArray", () => { + it("String", () => { + expect(isArray("")).toBe(false) + }) + it("Number", () => { + expect(isArray(1)).toBe(false) + }) + it("Boolean", () => { + expect(isArray(true)).toBe(false) + }) + it("Null", () => { + expect(isArray(null)).toBe(false) + }) + it("Undefined", () => { + expect(isArray(undefined)).toBe(false) + }) + it("Symbol", () => { + expect(isArray(Symbol())).toBe(false) + }) + it("BigInt", () => { + expect(isArray(BigInt(1))).toBe(false) + }) + it("Object", () => { + expect(isArray({})).toBe(false) + }) + it("Array Object", () => { + expect(isArray([])).toBe(true) + }) +}) diff --git a/tenant-web-ui/tsconfig.json b/tenant-web-ui/tsconfig.json new file mode 100644 index 0000000..8ff8703 --- /dev/null +++ b/tenant-web-ui/tsconfig.json @@ -0,0 +1,47 @@ +{ + "compilerOptions": { + "target": "esnext", + /** https://cn.vitejs.dev/guide/features.html#typescript-compiler-options */ + "useDefineForClassFields": true, + "module": "esnext", + "moduleResolution": "node", + /** TS 严格模式 */ + "strict": true, + "jsx": "preserve", + "importHelpers": true, + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "sourceMap": true, + "resolveJsonModule": true, + /** https://cn.vitejs.dev/guide/features.html#typescript-compiler-options */ + "isolatedModules": true, + "esModuleInterop": true, + "lib": ["esnext", "dom"], + "skipLibCheck": true, + "types": [ + "node", + "vite/client", + /** Element Plus 的 Volar 插件支持 */ + "element-plus/global", + "vitest" + ], + /** baseUrl 用来告诉编译器到哪里去查找模块,使用非相对模块时必须配置此项 */ + "baseUrl": ".", + /** 非相对模块导入的路径映射配置,根据 baseUrl 配置进行路径计算 */ + "paths": { + "@/*": ["src/*"] + } + }, + "include": [ + "src/**/*.ts", + "src/**/*.d.ts", + "src/**/*.tsx", + "src/**/*.vue", + "tests/**/*.ts", + "types/**/*.d.ts", + "vite.config.ts", + "vitest.config.ts" + ], + /** 编译器默认排除的编译文件 */ + "exclude": ["node_modules", "dist"] +} diff --git a/tenant-web-ui/types/api.d.ts b/tenant-web-ui/types/api.d.ts new file mode 100644 index 0000000..8529c5c --- /dev/null +++ b/tenant-web-ui/types/api.d.ts @@ -0,0 +1,27 @@ +// json 返回值 +interface IJsonResult { + /* 状态码 200: 成功! 100: 失败! 其他: 都是报错! */ + status: number + /* 返回消息 */ + message: string + /* 数据 */ + data: T +} + +// 分页 +interface IPagination { + /* 总页数 */ + total: number + /* 数据列表 */ + list: T[] +} + +// 分页 返回值 +interface IPageResult { + /* 状态码 200: 成功! 100: 失败! 其他: 都是报错! */ + status: number + /* 返回消息 */ + message: string + /* 分页数据 */ + data: IPagination +} diff --git a/tenant-web-ui/types/env.d.ts b/tenant-web-ui/types/env.d.ts new file mode 100644 index 0000000..288f104 --- /dev/null +++ b/tenant-web-ui/types/env.d.ts @@ -0,0 +1,11 @@ +/** 声明 vite 环境变量的类型(如果未声明则默认是 any) */ +declare interface ImportMetaEnv { + readonly VITE_APP_TITLE: string + readonly VITE_BASE_API: string + readonly VITE_ROUTER_HISTORY: "hash" | "html5" + readonly VITE_PUBLIC_PATH: string +} + +interface ImportMeta { + readonly env: ImportMetaEnv +} diff --git a/tenant-web-ui/types/global-components.d.ts b/tenant-web-ui/types/global-components.d.ts new file mode 100644 index 0000000..bf3693b --- /dev/null +++ b/tenant-web-ui/types/global-components.d.ts @@ -0,0 +1,10 @@ +import SvgIcon from "@/components/SvgIcon/index.vue" + +/** 由 app.component 全局注册的组件需要在这里声明 TS 类型才能获得 Volar 插件提供的类型提示) */ +declare module "vue" { + export interface GlobalComponents { + SvgIcon: typeof SvgIcon + } +} + +export {} diff --git a/tenant-web-ui/types/shims-vue.d.ts b/tenant-web-ui/types/shims-vue.d.ts new file mode 100644 index 0000000..4d4e42f --- /dev/null +++ b/tenant-web-ui/types/shims-vue.d.ts @@ -0,0 +1,4 @@ +declare module "*.scss" { + const scss: Record + export default scss +} diff --git a/tenant-web-ui/types/vue-router.d.ts b/tenant-web-ui/types/vue-router.d.ts new file mode 100644 index 0000000..edbe041 --- /dev/null +++ b/tenant-web-ui/types/vue-router.d.ts @@ -0,0 +1,52 @@ +import "vue-router" + +declare module "vue-router" { + interface RouteMeta { + /** + * 设置该路由在侧边栏和面包屑中展示的名字 + */ + title?: string + /** + * 设置该路由的图标,记得将 svg 导入 @/icons/svg + */ + svgIcon?: string + /** + * 设置该路由的图标,直接使用 Element Plus 的 Icon(与 svgIcon 同时设置时,svgIcon 将优先生效) + */ + elIcon?: string + /** + * 默认 false,设置 true 的时候该路由不会在侧边栏出现 + */ + hidden?: boolean + /** + * 设置该路由进入的权限,支持多个权限叠加 + */ + roles?: string[] + /** + * 默认 true,如果设置为 false,则不会在面包屑中显示 + */ + breadcrumb?: boolean + /** + * 默认 false,如果设置为 true,它则会固定在 tags-view 中 + */ + affix?: boolean + /** + * 当一个路由下面的 children 声明的路由大于 1 个时,自动会变成嵌套的模式, + * 只有一个时,会将那个子路由当做根路由显示在侧边栏, + * 若想不管路由下面的 children 声明的个数都显示你的根路由, + * 可以设置 alwaysShow: true,这样就会忽略之前定义的规则,一直显示根路由 + */ + alwaysShow?: boolean + /** + * 示例: activeMenu: "/xxx/xxx", + * 当设置了该属性进入路由时,则会高亮 activeMenu 属性对应的侧边栏。 + * 该属性适合使用在有 hidden: true 属性的路由上 + */ + activeMenu?: string + /** + * 是否缓存该路由页面 + * 默认为 false,为 true 时代表需要缓存,此时该路由和该页面都需要设置一致的 Name + */ + keepAlive?: boolean + } +} diff --git a/tenant-web-ui/unocss.config.ts b/tenant-web-ui/unocss.config.ts new file mode 100644 index 0000000..a5a561a --- /dev/null +++ b/tenant-web-ui/unocss.config.ts @@ -0,0 +1,20 @@ +import { defineConfig, presetAttributify, presetUno } from "unocss" + +export default defineConfig({ + /** 预设 */ + presets: [ + /** 属性化模式 & 无值的属性模式 */ + presetAttributify(), + /** 默认预设 */ + presetUno() + ], + /** 自定义规则 */ + rules: [["uno-padding-20", { padding: "20px" }]], + /** 自定义快捷方式 */ + shortcuts: { + "uno-wh-full": "w-full h-full", + "uno-flex-center": "flex justify-center items-center", + "uno-flex-x-center": "flex justify-center", + "uno-flex-y-center": "flex items-center" + } +}) diff --git a/tenant-web-ui/vite.config.ts b/tenant-web-ui/vite.config.ts new file mode 100644 index 0000000..d6897e4 --- /dev/null +++ b/tenant-web-ui/vite.config.ts @@ -0,0 +1,99 @@ +/// + +import { type ConfigEnv, type UserConfigExport, loadEnv } from "vite" +import UnoCSS from "unocss/vite" +import path, { resolve } from "path" +import vue from "@vitejs/plugin-vue" +import svgLoader from "vite-svg-loader" +import vueJsx from "@vitejs/plugin-vue-jsx" +import { createSvgIconsPlugin } from "vite-plugin-svg-icons" + +/** 配置项文档:https://cn.vitejs.dev/config */ +export default (configEnv: ConfigEnv): UserConfigExport => { + const viteEnv = loadEnv(configEnv.mode, process.cwd()) as ImportMetaEnv + const { VITE_PUBLIC_PATH, VITE_BASE_API } = viteEnv + return { + /** 打包时根据实际情况修改 base */ + base: VITE_PUBLIC_PATH, + resolve: { + alias: { + /** @ 符号指向 src 目录 */ + "@": resolve(__dirname, "./src") + } + }, + server: { + /** 是否开启 HTTPS */ + https: false, + /** 设置 host: true 才可以使用 Network 的形式,以 IP 访问项目 */ + host: true, // host: "0.0.0.0" + /** 端口号 */ + port: 8555, + /** 是否自动打开浏览器 */ + open: false, + /** 跨域设置允许 */ + cors: true, + /** 端口被占用时,是否直接退出 */ + strictPort: false, + /** 接口代理 */ + proxy: { + "/api/v1": { + target: VITE_BASE_API, + ws: true, + /** 是否允许跨域 */ + changeOrigin: true, + rewrite: (path) => path.replace("/api/v1", "") + } + } + }, + build: { + /** 单个 chunk 文件的大小超过 2048KB 时发出警告 */ + chunkSizeWarningLimit: 2048, + /** 禁用 gzip 压缩大小报告 */ + reportCompressedSize: false, + /** 打包后静态资源目录 */ + assetsDir: "static", + rollupOptions: { + output: { + /** + * 分块策略 + * 1. 注意这些包名必须存在,否则打包会报错 + * 2. 如果你不想自定义 chunk 分割策略,可以直接移除这段配置 + */ + manualChunks: { + vue: ["vue", "vue-router", "pinia"], + element: ["element-plus", "@element-plus/icons-vue"], + vxe: ["vxe-table", "vxe-table-plugin-element", "xe-utils"] + } + } + } + }, + /** 混淆器 */ + esbuild: { + /** 打包时移除 console.log */ + pure: ["console.log"], + /** 打包时移除 debugger */ + drop: ["debugger"], + /** 打包时移除所有注释 */ + legalComments: "none" + }, + /** Vite 插件 */ + plugins: [ + vue(), + vueJsx(), + /** 将 SVG 静态图转化为 Vue 组件 */ + svgLoader({ defaultImport: "url" }), + /** SVG */ + createSvgIconsPlugin({ + iconDirs: [path.resolve(process.cwd(), "src/icons/svg")], + symbolId: "icon-[dir]-[name]" + }), + /** UnoCSS */ + UnoCSS() + ], + /** Vitest 单元测试配置:https://cn.vitest.dev/config */ + test: { + include: ["tests/**/*.test.ts"], + environment: "jsdom" + } + } +}