commit 96d2fd6b1dfdf294c8f4520ff26f306159d8ba15 Author: micky <1254597151@qq.com> Date: Mon Jul 29 15:50:33 2024 +0800 first commit diff --git a/.env b/.env new file mode 100644 index 0000000..439be5a --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +VITE_APP_BASE_URL = 'http://192.168.4.117:8082' +VITE_MAP_KEY = '2SABZ-S4TWH-AMCDO-W742B-SKEOE-UWBKJ' \ No newline at end of file diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..fa81252 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,43 @@ +/* eslint-env node */ +require('@rushstack/eslint-patch/modern-module-resolution') + +module.exports = { + root: true, + ignorePatterns: ['/auto-imports.d.ts', '/components.d.ts'], + extends: [ + 'plugin:vue/vue3-essential', + 'eslint:recommended', + '@vue/eslint-config-typescript/recommended', + '@vue/eslint-config-prettier', + './.eslintrc-auto-import.json' + ], + rules: { + 'prettier/prettier': [ + 'warn', + { + semi: false, + singleQuote: true, + printWidth: 100, + proseWrap: 'preserve', + bracketSameLine: false, + endOfLine: 'lf', + tabWidth: 4, + useTabs: false, + trailingComma: 'none' + } + ], + 'vue/multi-word-component-names': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + 'no-undef': 'off', + 'vue/prefer-import-from-vue': 'off', + 'no-prototype-builtins': 'off', + 'prefer-spread': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/no-non-null-asserted-optional-chain': 'off', + 'vue/no-mutating-props': 'off' + }, + globals: { + module: 'readonly' + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5cc0fca --- /dev/null +++ b/.gitignore @@ -0,0 +1,38 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +# unplugin-auto-import +auto-imports.d.ts +components.d.ts +.eslintrc-auto-import.json + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# .env +.env.development +.env.production + +yarn.lock +package-lock.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..91f12b2 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..40fe379 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,26 @@ +{ + "editor.detectIndentation": false, + "editor.tabSize": 4, + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit" + }, + "css.validate": false, + "less.validate": false, + "scss.validate": false, + "prettier.printWidth": 150, // 超过最大值换行 + "prettier.tabWidth": 4, // 缩进字节数 + "prettier.useTabs": false, // 缩进不使用tab,使用空格 + "prettier.semi": false, // 句尾添加分号 + "prettier.singleQuote": true, // 使用单引号代替双引号 + "prettier.proseWrap": "preserve", // 默认值。因为使用了一些折行敏感型的渲染器(如GitHub comment)而按照markdown文本样式进行折行 + "prettier.arrowParens": "avoid", // (x) => {} 箭头函数参数只有一个时是否要有小括号。avoid:省略括号 + "prettier.bracketSpacing": true, // 在对象,数组括号与文字之间加空格 "{ foo: bar }" + + "prettier.endOfLine": "auto", // 结尾是 \n \r \n\r auto + "prettier.htmlWhitespaceSensitivity": "ignore", + "prettier.ignorePath": ".prettierignore", // 不使用prettier格式化的文件填写在项目的.prettierignore文件中 + "prettier.jsxSingleQuote": false, // 在jsx中使用单引号代替双引号 + "prettier.requireConfig": false, // Require a 'prettierconfig' to format prettier + "prettier.trailingComma": "none" // 函数最后不需要逗号 +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..077a568 --- /dev/null +++ b/README.md @@ -0,0 +1,46 @@ +# vue-project + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin). + +## Type Support for `.vue` Imports in TS + +TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types. + +If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps: + +1. Disable the built-in TypeScript Extension + 1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette + 2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)` +2. Reload the VSCode window by running `Developer: Reload Window` from the command palette. + +## Customize configuration + +See [Vite Configuration Reference](https://vitejs.dev/config/). + +## Project Setup + +```sh +npm install +``` + +### Compile and Hot-Reload for Development + +```sh +npm run dev +``` + +### Type-Check, Compile and Minify for Production + +```sh +npm run build +``` + +### Lint with [ESLint](https://eslint.org/) + +```sh +npm run lint +``` diff --git a/global.d.ts b/global.d.ts new file mode 100644 index 0000000..e77db45 --- /dev/null +++ b/global.d.ts @@ -0,0 +1,24 @@ +declare type CommonPaginationRes = { + count: number + pageNo: number + pageSize: number + lists: any[] +} +declare type DictItem = { + id: number + name: string + remark: string + sort: number + status: number + typeId: number + createTime: string + updateTime: string + value: string +} + +declare type ApiResCommon = { + createTime: string + updateTime: string +} + +declare type FormRule = import('element-plus').FormItemRule diff --git a/index.html b/index.html new file mode 100644 index 0000000..12af9a7 --- /dev/null +++ b/index.html @@ -0,0 +1,75 @@ + + + + + + + + 充电桩维护-后台管理系统 + + + + + +
+
+ + + +
+
+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..4a5acb9 --- /dev/null +++ b/package.json @@ -0,0 +1,70 @@ +{ + "name": "vue-project", + "version": "0.0.0", + "license": "MIT", + "scripts": { + "dev": "vite", + "preview": "vite preview --port 4173", + "build": "node ./scripts/build.mjs", + "type-check": "vue-tsc --noEmit", + "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore" + }, + "dependencies": { + "@element-plus/icons-vue": "^2.0.6", + "@highlightjs/vue-plugin": "^2.1.0", + "@vue/shared": "^3.4.34", + "@vueuse/core": "^10.11.0", + "@wangeditor/editor": "^5.1.12", + "@wangeditor/editor-for-vue": "^5.1.12", + "axios": "^0.27.2", + "css-color-function": "^1.3.3", + "echarts": "^5.3.3", + "element-plus": "^2.7.7", + "highlight.js": "^11.6.0", + "js-table2excel": "^1.1.2", + "nprogress": "^0.2.0", + "pinia": "^2.0.14", + "qrcodejs2-fix": "^0.0.1", + "sortablejs": "^1.15.0", + "vue": "^3.2.37", + "vue-clipboard3": "^2.0.0", + "vue-echarts": "^6.2.3", + "vue-pdf-embed": "1", + "vue-router": "^4.0.16", + "vue3-eventbus": "^2.0.0", + "vue3-print-nb": "^0.1.4", + "vue3-video-play": "1.3.1-beta.6", + "vuedraggable": "^4.1.0" + }, + "devDependencies": { + "@rushstack/eslint-patch": "^1.1.0", + "@tailwindcss/line-clamp": "^0.4.2", + "@types/lodash-es": "^4.17.6", + "@types/node": "^16.11.41", + "@types/nprogress": "^0.2.0", + "@types/sortablejs": "^1.15.5", + "@vitejs/plugin-vue": "^3.0.0", + "@vitejs/plugin-vue-jsx": "^2.0.0", + "@vue/eslint-config-prettier": "^7.0.0", + "@vue/eslint-config-typescript": "^11.0.0", + "@vue/tsconfig": "^0.1.3", + "autoprefixer": "^10.4.7", + "consola": "^2.15.3", + "eslint": "^8.5.0", + "eslint-plugin-vue": "^9.0.0", + "execa": "^6.1.0", + "fs-extra": "^10.1.0", + "postcss": "^8.4.14", + "prettier": "^2.5.1", + "sass": "^1.53.0", + "tailwindcss": "^3.0.24", + "typescript": "~4.7.4", + "unplugin-auto-import": "^0.9.2", + "unplugin-vue-components": "^0.19.9", + "vite": "^3.0.0", + "vite-plugin-style-import": "^2.0.0", + "vite-plugin-svg-icons": "^2.0.1", + "vite-plugin-vue-setup-extend": "^0.4.0", + "vue-tsc": "^0.38.1" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..4fe1cd4 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,5735 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@element-plus/icons-vue': + specifier: ^2.0.6 + version: 2.3.1(vue@3.4.31) + '@highlightjs/vue-plugin': + specifier: ^2.1.0 + version: 2.1.0(highlight.js@11.10.0)(vue@3.4.31) + '@vue/shared': + specifier: ^3.4.34 + version: 3.4.34 + '@vueuse/core': + specifier: ^10.11.0 + version: 10.11.0(vue@3.4.31) + '@wangeditor/editor': + specifier: ^5.1.12 + version: 5.1.23 + '@wangeditor/editor-for-vue': + specifier: ^5.1.12 + version: 5.1.12(@wangeditor/editor@5.1.23)(vue@3.4.31) + axios: + specifier: ^0.27.2 + version: 0.27.2 + css-color-function: + specifier: ^1.3.3 + version: 1.3.3 + echarts: + specifier: ^5.3.3 + version: 5.5.1 + element-plus: + specifier: ^2.7.7 + version: 2.7.7(vue@3.4.31) + highlight.js: + specifier: ^11.6.0 + version: 11.10.0 + js-table2excel: + specifier: ^1.1.2 + version: 1.1.2 + nprogress: + specifier: ^0.2.0 + version: 0.2.0 + pinia: + specifier: ^2.0.14 + version: 2.1.7(typescript@4.7.4)(vue@3.4.31) + qrcodejs2-fix: + specifier: ^0.0.1 + version: 0.0.1 + sortablejs: + specifier: ^1.15.0 + version: 1.15.2 + vue: + specifier: ^3.2.37 + version: 3.4.31(typescript@4.7.4) + vue-clipboard3: + specifier: ^2.0.0 + version: 2.0.0 + vue-echarts: + specifier: ^6.2.3 + version: 6.7.3(echarts@5.5.1)(vue@3.4.31) + vue-pdf-embed: + specifier: '1' + version: 1.2.1(vue@3.4.31) + vue-router: + specifier: ^4.0.16 + version: 4.4.0(vue@3.4.31) + vue3-eventbus: + specifier: ^2.0.0 + version: 2.0.0 + vue3-print-nb: + specifier: ^0.1.4 + version: 0.1.4(typescript@4.7.4) + vue3-video-play: + specifier: 1.3.1-beta.6 + version: 1.3.1-beta.6(typescript@4.7.4) + vuedraggable: + specifier: ^4.1.0 + version: 4.1.0(vue@3.4.31) + +devDependencies: + '@rushstack/eslint-patch': + specifier: ^1.1.0 + version: 1.10.3 + '@tailwindcss/line-clamp': + specifier: ^0.4.2 + version: 0.4.4(tailwindcss@3.4.6) + '@types/lodash-es': + specifier: ^4.17.6 + version: 4.17.12 + '@types/node': + specifier: ^16.11.41 + version: 16.18.102 + '@types/nprogress': + specifier: ^0.2.0 + version: 0.2.3 + '@types/sortablejs': + specifier: ^1.15.5 + version: 1.15.8 + '@vitejs/plugin-vue': + specifier: ^3.0.0 + version: 3.2.0(vite@3.2.10)(vue@3.4.31) + '@vitejs/plugin-vue-jsx': + specifier: ^2.0.0 + version: 2.1.1(vite@3.2.10)(vue@3.4.31) + '@vue/eslint-config-prettier': + specifier: ^7.0.0 + version: 7.1.0(eslint@8.57.0)(prettier@2.8.8) + '@vue/eslint-config-typescript': + specifier: ^11.0.0 + version: 11.0.3(eslint-plugin-vue@9.27.0)(eslint@8.57.0)(typescript@4.7.4) + '@vue/tsconfig': + specifier: ^0.1.3 + version: 0.1.3(@types/node@16.18.102) + autoprefixer: + specifier: ^10.4.7 + version: 10.4.19(postcss@8.4.39) + consola: + specifier: ^2.15.3 + version: 2.15.3 + eslint: + specifier: ^8.5.0 + version: 8.57.0 + eslint-plugin-vue: + specifier: ^9.0.0 + version: 9.27.0(eslint@8.57.0) + execa: + specifier: ^6.1.0 + version: 6.1.0 + fs-extra: + specifier: ^10.1.0 + version: 10.1.0 + postcss: + specifier: ^8.4.14 + version: 8.4.39 + prettier: + specifier: ^2.5.1 + version: 2.8.8 + sass: + specifier: ^1.53.0 + version: 1.77.8 + tailwindcss: + specifier: ^3.0.24 + version: 3.4.6 + typescript: + specifier: ~4.7.4 + version: 4.7.4 + unplugin-auto-import: + specifier: ^0.9.2 + version: 0.9.5(@vueuse/core@10.11.0)(vite@3.2.10) + unplugin-vue-components: + specifier: ^0.19.9 + version: 0.19.9(vite@3.2.10)(vue@3.4.31) + vite: + specifier: ^3.0.0 + version: 3.2.10(@types/node@16.18.102)(sass@1.77.8) + vite-plugin-style-import: + specifier: ^2.0.0 + version: 2.0.0(vite@3.2.10) + vite-plugin-svg-icons: + specifier: ^2.0.1 + version: 2.0.1(vite@3.2.10) + vite-plugin-vue-setup-extend: + specifier: ^0.4.0 + version: 0.4.0(vite@3.2.10) + vue-tsc: + specifier: ^0.38.1 + version: 0.38.9(typescript@4.7.4) + +packages: + + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + dev: true + + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@antfu/utils@0.5.2: + resolution: {integrity: sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==} + dev: true + + /@babel/code-frame@7.24.7: + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 + dev: true + + /@babel/compat-data@7.24.9: + resolution: {integrity: sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.24.9: + resolution: {integrity: sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.10 + '@babel/helper-compilation-targets': 7.24.8 + '@babel/helper-module-transforms': 7.24.9(@babel/core@7.24.9) + '@babel/helpers': 7.24.8 + '@babel/parser': 7.24.8 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + convert-source-map: 2.0.0 + debug: 4.3.5 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.24.10: + resolution: {integrity: sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + dev: true + + /@babel/helper-annotate-as-pure@7.24.7: + resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 + dev: true + + /@babel/helper-compilation-targets@7.24.8: + resolution: {integrity: sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.24.9 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.2 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-create-class-features-plugin@7.24.8(@babel/core@7.24.9): + resolution: {integrity: sha512-4f6Oqnmyp2PP3olgUMmOwC3akxSm5aBYraQ6YDdKy7NcAMkDECHWG0DEnV6M2UAkERgIBhYt8S27rURPg7SxWA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.9) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-environment-visitor@7.24.7: + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 + dev: true + + /@babel/helper-function-name@7.24.7: + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.9 + dev: true + + /@babel/helper-hoist-variables@7.24.7: + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 + dev: true + + /@babel/helper-member-expression-to-functions@7.24.8: + resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + transitivePeerDependencies: + - supports-color + 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.24.9 + dev: true + + /@babel/helper-module-imports@7.24.7: + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-module-transforms@7.24.9(@babel/core@7.24.9): + resolution: {integrity: sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-optimise-call-expression@7.24.7: + resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 + dev: true + + /@babel/helper-plugin-utils@7.24.8: + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-replace-supers@7.24.7(@babel/core@7.24.9): + resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-simple-access@7.24.7: + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-skip-transparent-expression-wrappers@7.24.7: + resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-split-export-declaration@7.24.7: + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.9 + dev: true + + /@babel/helper-string-parser@7.24.8: + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option@7.24.8: + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.24.8: + resolution: {integrity: sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.7 + '@babel/types': 7.24.9 + dev: true + + /@babel/highlight@7.24.7: + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + dev: true + + /@babel/parser@7.24.8: + resolution: {integrity: sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.9 + + /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.9): + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 + dev: true + + /@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.9): + resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-plugin-utils': 7.24.8 + dev: true + + /@babel/plugin-transform-typescript@7.24.8(@babel/core@7.24.9): + resolution: {integrity: sha512-CgFgtN61BbdOGCP4fLaAMOPkzWUh6yQZNMr5YSt8uz2cZSSiQONCQFWqsE4NeVfOIhqDOlS9CR3WD91FzMeB2Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.9) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.9) + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/runtime@7.24.8: + resolution: {integrity: sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: false + + /@babel/template@7.24.7: + resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 + dev: true + + /@babel/traverse@7.24.8: + resolution: {integrity: sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.10 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.24.8 + '@babel/types': 7.24.9 + debug: 4.3.5 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.24.9: + resolution: {integrity: sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + 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.3.1(vue@3.4.31): + resolution: {integrity: sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==} + peerDependencies: + vue: ^3.2.0 + dependencies: + vue: 3.4.31(typescript@4.7.4) + dev: false + + /@esbuild/android-arm@0.15.18: + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.15.18: + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.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.57.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.11.0: + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.5 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + 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.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@floating-ui/core@1.6.4: + resolution: {integrity: sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==} + dependencies: + '@floating-ui/utils': 0.2.4 + dev: false + + /@floating-ui/dom@1.6.7: + resolution: {integrity: sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==} + dependencies: + '@floating-ui/core': 1.6.4 + '@floating-ui/utils': 0.2.4 + dev: false + + /@floating-ui/utils@0.2.4: + resolution: {integrity: sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==} + dev: false + + /@highlightjs/vue-plugin@2.1.0(highlight.js@11.10.0)(vue@3.4.31): + resolution: {integrity: sha512-E+bmk4ncca+hBEYRV2a+1aIzIV0VSY/e5ArjpuSN9IO7wBJrzUE2u4ESCwrbQD7sAy+jWQjkV5qCCWgc+pu7CQ==} + peerDependencies: + highlight.js: ^11.0.1 + vue: ^3 + dependencies: + highlight.js: 11.10.0 + vue: 3.4.31(typescript@4.7.4) + dev: false + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.5 + 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.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + dev: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + 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.17.1 + dev: true + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@rollup/pluginutils@4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@rushstack/eslint-patch@1.10.3: + resolution: {integrity: sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==} + dev: true + + /@sxzz/popperjs-es@2.11.7: + resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==} + dev: false + + /@tailwindcss/line-clamp@0.4.4(tailwindcss@3.4.6): + resolution: {integrity: sha512-5U6SY5z8N42VtrCrKlsTAA35gy2VSyYtHWCsg1H87NU1SXnEfekTVlrga9fzUDrrHcGi2Lb5KenUWb4lRQT5/g==} + peerDependencies: + tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1' + dependencies: + tailwindcss: 3.4.6 + dev: true + + /@transloadit/prettier-bytes@0.0.7: + resolution: {integrity: sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==} + dev: false + + /@trysound/sax@0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + dev: true + + /@types/event-emitter@0.3.5: + resolution: {integrity: sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ==} + dev: false + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + + /@types/lodash-es@4.17.12: + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + dependencies: + '@types/lodash': 4.17.7 + + /@types/lodash@4.17.7: + resolution: {integrity: sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==} + + /@types/node@16.18.102: + resolution: {integrity: sha512-eSe2YwGCcRjqPidxfm20IAq02krERWcIIJW4FNPkU0zQLbc4L9pvhsmB0p6UJecjEf0j/E2ERHsKq7madvthKw==} + dev: true + + /@types/nprogress@0.2.3: + resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==} + dev: true + + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + dev: true + + /@types/sortablejs@1.15.8: + resolution: {integrity: sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==} + dev: true + + /@types/svgo@2.6.4: + resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==} + dependencies: + '@types/node': 16.18.102 + dev: true + + /@types/web-bluetooth@0.0.16: + resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} + dev: false + + /@types/web-bluetooth@0.0.20: + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@4.7.4): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.7.4) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@4.7.4) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.7.4) + debug: 4.3.5 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare-lite: 1.4.0 + semver: 7.6.3 + tsutils: 3.21.0(typescript@4.7.4) + typescript: 4.7.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.7.4): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.7.4) + debug: 4.3.5 + eslint: 8.57.0 + typescript: 4.7.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: true + + /@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@4.7.4): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.7.4) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.7.4) + debug: 4.3.5 + eslint: 8.57.0 + tsutils: 3.21.0(typescript@4.7.4) + typescript: 4.7.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/typescript-estree@5.62.0(typescript@4.7.4): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.5 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.6.3 + tsutils: 3.21.0(typescript@4.7.4) + typescript: 4.7.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@4.7.4): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.7.4) + eslint: 8.57.0 + eslint-scope: 5.1.1 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /@uppy/companion-client@2.2.2: + resolution: {integrity: sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==} + dependencies: + '@uppy/utils': 4.1.3 + namespace-emitter: 2.0.1 + dev: false + + /@uppy/core@2.3.4: + resolution: {integrity: sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==} + dependencies: + '@transloadit/prettier-bytes': 0.0.7 + '@uppy/store-default': 2.1.1 + '@uppy/utils': 4.1.3 + lodash.throttle: 4.1.1 + mime-match: 1.0.2 + namespace-emitter: 2.0.1 + nanoid: 3.3.7 + preact: 10.22.1 + dev: false + + /@uppy/store-default@2.1.1: + resolution: {integrity: sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==} + dev: false + + /@uppy/utils@4.1.3: + resolution: {integrity: sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==} + dependencies: + lodash.throttle: 4.1.1 + dev: false + + /@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4): + resolution: {integrity: sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==} + peerDependencies: + '@uppy/core': ^2.3.3 + dependencies: + '@uppy/companion-client': 2.2.2 + '@uppy/core': 2.3.4 + '@uppy/utils': 4.1.3 + nanoid: 3.3.7 + dev: false + + /@vitejs/plugin-vue-jsx@2.1.1(vite@3.2.10)(vue@3.4.31): + resolution: {integrity: sha512-JgDhxstQlwnHBvZ1BSnU5mbmyQ14/t5JhREc6YH5kWyu2QdAAOsLF6xgHoIWarj8tddaiwFrNzLbWJPudpXKYA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^3.0.0 + vue: ^3.0.0 + dependencies: + '@babel/core': 7.24.9 + '@babel/plugin-transform-typescript': 7.24.8(@babel/core@7.24.9) + '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.9) + vite: 3.2.10(@types/node@16.18.102)(sass@1.77.8) + vue: 3.4.31(typescript@4.7.4) + transitivePeerDependencies: + - supports-color + dev: true + + /@vitejs/plugin-vue@3.2.0(vite@3.2.10)(vue@3.4.31): + resolution: {integrity: sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^3.0.0 + vue: ^3.2.25 + dependencies: + vite: 3.2.10(@types/node@16.18.102)(sass@1.77.8) + vue: 3.4.31(typescript@4.7.4) + dev: true + + /@volar/code-gen@0.38.9: + resolution: {integrity: sha512-n6LClucfA+37rQeskvh9vDoZV1VvCVNy++MAPKj2dT4FT+Fbmty/SDQqnsEBtdEe6E3OQctFvA/IcKsx3Mns0A==} + dependencies: + '@volar/source-map': 0.38.9 + dev: true + + /@volar/source-map@0.38.9: + resolution: {integrity: sha512-ba0UFoHDYry+vwKdgkWJ6xlQT+8TFtZg1zj9tSjj4PykW1JZDuM0xplMotLun4h3YOoYfY9K1huY5gvxmrNLIw==} + dev: true + + /@volar/vue-code-gen@0.38.9: + resolution: {integrity: sha512-tzj7AoarFBKl7e41MR006ncrEmNPHALuk8aG4WdDIaG387X5//5KhWC5Ff3ZfB2InGSeNT+CVUd74M0gS20rjA==} + dependencies: + '@volar/code-gen': 0.38.9 + '@volar/source-map': 0.38.9 + '@vue/compiler-core': 3.4.31 + '@vue/compiler-dom': 3.4.31 + '@vue/shared': 3.4.34 + dev: true + + /@volar/vue-typescript@0.38.9: + resolution: {integrity: sha512-iJMQGU91ADi98u8V1vXd2UBmELDAaeSP0ZJaFjwosClQdKlJQYc6MlxxKfXBZisHqfbhdtrGRyaryulnYtliZw==} + deprecated: 'WARNING: This project has been renamed to @vue/typescript. Install using @vue/typescript instead.' + dependencies: + '@volar/code-gen': 0.38.9 + '@volar/source-map': 0.38.9 + '@volar/vue-code-gen': 0.38.9 + '@vue/compiler-sfc': 3.4.31 + '@vue/reactivity': 3.4.31 + dev: true + + /@vue/babel-helper-vue-transform-on@1.2.2: + resolution: {integrity: sha512-nOttamHUR3YzdEqdM/XXDyCSdxMA9VizUKoroLX6yTyRtggzQMHXcmwh8a7ZErcJttIBIc9s68a1B8GZ+Dmvsw==} + dev: true + + /@vue/babel-plugin-jsx@1.2.2(@babel/core@7.24.9): + resolution: {integrity: sha512-nYTkZUVTu4nhP199UoORePsql0l+wj7v/oyQjtThUVhJl1U+6qHuoVhIvR3bf7eVKjbCK+Cs2AWd7mi9Mpz9rA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + dependencies: + '@babel/core': 7.24.9 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.9) + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.8 + '@babel/types': 7.24.9 + '@vue/babel-helper-vue-transform-on': 1.2.2 + '@vue/babel-plugin-resolve-type': 1.2.2(@babel/core@7.24.9) + camelcase: 6.3.0 + html-tags: 3.3.1 + svg-tags: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@vue/babel-plugin-resolve-type@1.2.2(@babel/core@7.24.9): + resolution: {integrity: sha512-EntyroPwNg5IPVdUJupqs0CFzuf6lUrVvCspmv2J1FITLeGnUCuoGNNk78dgCusxEiYj6RMkTJflGSxk5aIC4A==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/core': 7.24.9 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/parser': 7.24.8 + '@vue/compiler-sfc': 3.4.31 + dev: true + + /@vue/compiler-core@3.4.31: + resolution: {integrity: sha512-skOiodXWTV3DxfDhB4rOf3OGalpITLlgCeOwb+Y9GJpfQ8ErigdBUHomBzvG78JoVE8MJoQsb+qhZiHfKeNeEg==} + dependencies: + '@babel/parser': 7.24.8 + '@vue/shared': 3.4.31 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + + /@vue/compiler-dom@3.4.31: + resolution: {integrity: sha512-wK424WMXsG1IGMyDGyLqB+TbmEBFM78hIsOJ9QwUVLGrcSk0ak6zYty7Pj8ftm7nEtdU/DGQxAXp0/lM/2cEpQ==} + dependencies: + '@vue/compiler-core': 3.4.31 + '@vue/shared': 3.4.31 + + /@vue/compiler-sfc@3.4.31: + resolution: {integrity: sha512-einJxqEw8IIJxzmnxmJBuK2usI+lJonl53foq+9etB2HAzlPjAS/wa7r0uUpXw5ByX3/0uswVSrjNb17vJm1kQ==} + dependencies: + '@babel/parser': 7.24.8 + '@vue/compiler-core': 3.4.31 + '@vue/compiler-dom': 3.4.31 + '@vue/compiler-ssr': 3.4.31 + '@vue/shared': 3.4.31 + estree-walker: 2.0.2 + magic-string: 0.30.10 + postcss: 8.4.39 + source-map-js: 1.2.0 + + /@vue/compiler-ssr@3.4.31: + resolution: {integrity: sha512-RtefmITAje3fJ8FSg1gwgDhdKhZVntIVbwupdyZDSifZTRMiWxWehAOTCc8/KZDnBOcYQ4/9VWxsTbd3wT0hAA==} + dependencies: + '@vue/compiler-dom': 3.4.31 + '@vue/shared': 3.4.31 + + /@vue/devtools-api@6.6.3: + resolution: {integrity: sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==} + dev: false + + /@vue/eslint-config-prettier@7.1.0(eslint@8.57.0)(prettier@2.8.8): + resolution: {integrity: sha512-Pv/lVr0bAzSIHLd9iz0KnvAr4GKyCEl+h52bc4e5yWuDVtLgFwycF7nrbWTAQAS+FU6q1geVd07lc6EWfJiWKQ==} + peerDependencies: + eslint: '>= 7.28.0' + prettier: '>= 2.0.0' + dependencies: + eslint: 8.57.0 + eslint-config-prettier: 8.10.0(eslint@8.57.0) + eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.0)(prettier@2.8.8) + prettier: 2.8.8 + dev: true + + /@vue/eslint-config-typescript@11.0.3(eslint-plugin-vue@9.27.0)(eslint@8.57.0)(typescript@4.7.4): + resolution: {integrity: sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==} + 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': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@4.7.4) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.7.4) + eslint: 8.57.0 + eslint-plugin-vue: 9.27.0(eslint@8.57.0) + typescript: 4.7.4 + vue-eslint-parser: 9.4.3(eslint@8.57.0) + transitivePeerDependencies: + - supports-color + dev: true + + /@vue/reactivity@3.4.31: + resolution: {integrity: sha512-VGkTani8SOoVkZNds1PfJ/T1SlAIOf8E58PGAhIOUDYPC4GAmFA2u/E14TDAFcf3vVDKunc4QqCe/SHr8xC65Q==} + dependencies: + '@vue/shared': 3.4.31 + + /@vue/runtime-core@3.4.31: + resolution: {integrity: sha512-LDkztxeUPazxG/p8c5JDDKPfkCDBkkiNLVNf7XZIUnJ+66GVGkP+TIh34+8LtPisZ+HMWl2zqhIw0xN5MwU1cw==} + dependencies: + '@vue/reactivity': 3.4.31 + '@vue/shared': 3.4.31 + + /@vue/runtime-dom@3.4.31: + resolution: {integrity: sha512-2Auws3mB7+lHhTFCg8E9ZWopA6Q6L455EcU7bzcQ4x6Dn4cCPuqj6S2oBZgN2a8vJRS/LSYYxwFFq2Hlx3Fsaw==} + dependencies: + '@vue/reactivity': 3.4.31 + '@vue/runtime-core': 3.4.31 + '@vue/shared': 3.4.31 + csstype: 3.1.3 + + /@vue/server-renderer@3.4.31(vue@3.4.31): + resolution: {integrity: sha512-D5BLbdvrlR9PE3by9GaUp1gQXlCNadIZytMIb8H2h3FMWJd4oUfkUTEH2wAr3qxoRz25uxbTcbqd3WKlm9EHQA==} + peerDependencies: + vue: 3.4.31 + dependencies: + '@vue/compiler-ssr': 3.4.31 + '@vue/shared': 3.4.31 + vue: 3.4.31(typescript@4.7.4) + + /@vue/shared@3.4.31: + resolution: {integrity: sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==} + + /@vue/shared@3.4.34: + resolution: {integrity: sha512-x5LmiRLpRsd9KTjAB8MPKf0CDPMcuItjP0gbNqFCIgL1I8iYp4zglhj9w9FPCdIbHG2M91RVeIbArFfFTz9I3A==} + + /@vue/tsconfig@0.1.3(@types/node@16.18.102): + resolution: {integrity: sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@types/node': 16.18.102 + dev: true + + /@vueuse/core@10.11.0(vue@3.4.31): + resolution: {integrity: sha512-x3sD4Mkm7PJ+pcq3HX8PLPBadXCAlSDR/waK87dz0gQE+qJnaaFhc/dZVfJz+IUYzTMVGum2QlR7ImiJQN4s6g==} + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 10.11.0 + '@vueuse/shared': 10.11.0(vue@3.4.31) + vue-demi: 0.14.8(vue@3.4.31) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + /@vueuse/core@9.13.0(vue@3.4.31): + 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.4.31) + vue-demi: 0.14.8(vue@3.4.31) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /@vueuse/metadata@10.11.0: + resolution: {integrity: sha512-kQX7l6l8dVWNqlqyN3ePW3KmjCQO3ZMgXuBMddIu83CmucrsBfXlH+JoviYyRBws/yLTQO8g3Pbw+bdIoVm4oQ==} + + /@vueuse/metadata@9.13.0: + resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} + dev: false + + /@vueuse/shared@10.11.0(vue@3.4.31): + resolution: {integrity: sha512-fyNoIXEq3PfX1L3NkNhtVQUSRtqYwJtJg+Bp9rIzculIZWHTkKSysujrOk2J+NrRulLTQH9+3gGSfYLWSEWU1A==} + dependencies: + vue-demi: 0.14.8(vue@3.4.31) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + /@vueuse/shared@9.13.0(vue@3.4.31): + resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} + dependencies: + vue-demi: 0.14.8(vue@3.4.31) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + dev: false + + /@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2): + resolution: {integrity: sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + lodash.throttle: ^4.1.1 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + is-url: 1.2.4 + lodash.throttle: 4.1.1 + nanoid: 3.3.7 + slate: 0.72.8 + snabbdom: 3.6.2 + dev: false + + /@wangeditor/code-highlight@1.0.3(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2): + resolution: {integrity: sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + prismjs: 1.29.0 + slate: 0.72.8 + snabbdom: 3.6.2 + dev: false + + /@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2): + resolution: {integrity: sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==} + peerDependencies: + '@uppy/core': ^2.1.1 + '@uppy/xhr-upload': ^2.0.3 + dom7: ^3.0.0 + is-hotkey: ^0.2.0 + lodash.camelcase: ^4.3.0 + lodash.clonedeep: ^4.5.0 + lodash.debounce: ^4.0.8 + lodash.foreach: ^4.5.0 + lodash.isequal: ^4.5.0 + lodash.throttle: ^4.1.1 + lodash.toarray: ^4.4.0 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + dependencies: + '@types/event-emitter': 0.3.5 + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + dom7: 3.0.0 + event-emitter: 0.3.5 + html-void-elements: 2.0.1 + i18next: 20.6.1 + is-hotkey: 0.2.0 + lodash.camelcase: 4.3.0 + lodash.clonedeep: 4.5.0 + lodash.debounce: 4.0.8 + lodash.foreach: 4.5.0 + lodash.isequal: 4.5.0 + lodash.throttle: 4.1.1 + lodash.toarray: 4.4.0 + nanoid: 3.3.7 + scroll-into-view-if-needed: 2.2.31 + slate: 0.72.8 + slate-history: 0.66.0(slate@0.72.8) + snabbdom: 3.6.2 + dev: false + + /@wangeditor/editor-for-vue@5.1.12(@wangeditor/editor@5.1.23)(vue@3.4.31): + resolution: {integrity: sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==} + peerDependencies: + '@wangeditor/editor': '>=5.1.0' + vue: ^3.0.5 + dependencies: + '@wangeditor/editor': 5.1.23 + vue: 3.4.31(typescript@4.7.4) + dev: false + + /@wangeditor/editor@5.1.23: + resolution: {integrity: sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==} + dependencies: + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/code-highlight': 1.0.3(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/list-module': 1.0.5(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/table-module': 1.1.4(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/upload-image-module': 1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/basic-modules@1.1.7)(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/video-module': 1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/core@1.1.19)(dom7@3.0.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + is-hotkey: 0.2.0 + lodash.camelcase: 4.3.0 + lodash.clonedeep: 4.5.0 + lodash.debounce: 4.0.8 + lodash.foreach: 4.5.0 + lodash.isequal: 4.5.0 + lodash.throttle: 4.1.1 + lodash.toarray: 4.4.0 + nanoid: 3.3.7 + slate: 0.72.8 + snabbdom: 3.6.2 + dev: false + + /@wangeditor/list-module@1.0.5(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2): + resolution: {integrity: sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + slate: 0.72.8 + snabbdom: 3.6.2 + dev: false + + /@wangeditor/table-module@1.1.4(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2): + resolution: {integrity: sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + lodash.isequal: ^4.5.0 + lodash.throttle: ^4.1.1 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + lodash.isequal: 4.5.0 + lodash.throttle: 4.1.1 + nanoid: 3.3.7 + slate: 0.72.8 + snabbdom: 3.6.2 + dev: false + + /@wangeditor/upload-image-module@1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/basic-modules@1.1.7)(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.6.2): + resolution: {integrity: sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==} + peerDependencies: + '@uppy/core': ^2.0.3 + '@uppy/xhr-upload': ^2.0.3 + '@wangeditor/basic-modules': 1.x + '@wangeditor/core': 1.x + dom7: ^3.0.0 + lodash.foreach: ^4.5.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + dependencies: + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + lodash.foreach: 4.5.0 + slate: 0.72.8 + snabbdom: 3.6.2 + dev: false + + /@wangeditor/video-module@1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/core@1.1.19)(dom7@3.0.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2): + resolution: {integrity: sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==} + peerDependencies: + '@uppy/core': ^2.1.4 + '@uppy/xhr-upload': ^2.0.7 + '@wangeditor/core': 1.x + dom7: ^3.0.0 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + dependencies: + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + nanoid: 3.3.7 + slate: 0.72.8 + snabbdom: 3.6.2 + dev: false + + /acorn-jsx@5.3.2(acorn@8.12.1): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.12.1 + dev: true + + /acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + 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-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@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + 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 + + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + 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-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + 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 + + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + 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==} + dev: false + + /atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + dev: true + + /autoprefixer@10.4.19(postcss@8.4.39): + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.23.2 + caniuse-lite: 1.0.30001642 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.1 + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + dev: true + + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 + dev: true + + /axios@0.27.2: + resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} + dependencies: + follow-redirects: 1.15.6 + form-data: 4.0.0 + transitivePeerDependencies: + - debug + dev: false + + /balanced-match@0.1.0: + resolution: {integrity: sha512-4xb6XqAEo3Z+5pEDJz33R8BZXI8FRJU+cDNLdKgDpmnz+pKKRVYLpdv+VvUAC7yUhBMj4izmyt19eCGv1QGV7A==} + 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.1 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + dev: true + + /big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + dev: true + + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + 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 + + /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.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.1.1 + dev: true + + /browserslist@4.23.2: + resolution: {integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001642 + electron-to-chromium: 1.4.829 + node-releases: 2.0.17 + update-browserslist-db: 1.1.0(browserslist@4.23.2) + 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.1 + 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 + + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + dependencies: + pascal-case: 3.1.2 + tslib: 2.6.3 + dev: true + + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /caniuse-lite@1.0.30001642: + resolution: {integrity: sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==} + dev: true + + /capital-case@1.0.4: + resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.3 + upper-case-first: 2.0.2 + 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 + + /change-case@4.1.2: + resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + dependencies: + camel-case: 4.1.2 + capital-case: 1.0.4 + constant-case: 3.0.4 + dot-case: 3.0.4 + header-case: 2.0.4 + no-case: 3.0.4 + param-case: 3.0.4 + pascal-case: 3.1.2 + path-case: 3.0.4 + sentence-case: 3.0.4 + snake-case: 3.0.4 + tslib: 2.6.3 + dev: true + + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + 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 + + /clipboard@2.0.11: + resolution: {integrity: sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==} + dependencies: + good-listener: 1.2.2 + select: 1.1.2 + tiny-emitter: 2.1.0 + dev: false + + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: false + + /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 + + /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==} + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /color-string@0.3.0: + resolution: {integrity: sha512-sz29j1bmSDfoAxKIEU6zwoIZXN6BrFbAMIhfYCNyiZXBDuU/aiHlN84lp/xDzL2ubyFhLDobHIlU1X70XRrMDA==} + dependencies: + color-name: 1.1.4 + dev: false + + /color@0.11.4: + resolution: {integrity: sha512-Ajpjd8asqZ6EdxQeqGzU5WBhhTfJ/0cA4Wlbre7e5vXfmDSmda7Ov6jeKoru+b0vHcb1CqvuroTHp5zIWzhVMA==} + dependencies: + clone: 1.0.4 + color-convert: 1.9.3 + color-string: 0.3.0 + dev: false + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: false + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: true + + /component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + dev: true + + /compute-scroll-into-view@1.0.20: + resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} + dev: false + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + dev: true + + /consola@2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + dev: true + + /console@0.7.2: + resolution: {integrity: sha512-+JSDwGunA4MTEgAV/4VBKwUHonP8CzJ/6GIuwPi6acKFqFfHUdSGCm89ZxZ5FfGWdZfkdgAroy5bJ5FSeN/t4g==} + dev: true + + /constant-case@3.0.4: + resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.3 + upper-case: 2.0.2 + 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-color-function@1.3.3: + resolution: {integrity: sha512-YD/WhiRZIYgadwFJ48X5QmlOQ/w8Me4yQI6/eSUoiE8spIFp+S/rGpsAH48iyq/0ZWkCDWqVQKUlQmUzn7BQ9w==} + dependencies: + balanced-match: 0.1.0 + color: 0.11.4 + debug: 3.2.7 + rgb: 0.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /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-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-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 + + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + /d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} + dependencies: + es5-ext: 0.10.64 + type: 2.7.3 + dev: false + + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /dayjs@1.11.11: + resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} + dev: false + + /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.3 + dev: false + + /debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + dev: true + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + dev: true + + /define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 0.1.7 + dev: true + + /define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.3 + dev: true + + /define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.3 + isobject: 3.0.1 + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: false + + /delegate@3.2.0: + resolution: {integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==} + dev: false + + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + 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 + + /dom7@3.0.0: + resolution: {integrity: sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==} + dependencies: + ssr-window: 3.0.0 + dev: false + + /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 + + /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 + + /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 + + /dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.3 + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /echarts@5.5.1: + resolution: {integrity: sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==} + dependencies: + tslib: 2.3.0 + zrender: 5.6.0 + dev: false + + /electron-to-chromium@1.4.829: + resolution: {integrity: sha512-5qp1N2POAfW0u1qGAxXEtz6P7bO1m6gpZr5hdf5ve6lxpLM7MpiM4jIPz7xcrNlClQMafbyUDDWjlIQZ1Mw0Rw==} + dev: true + + /element-plus@2.7.7(vue@3.4.31): + resolution: {integrity: sha512-7ucUiDAxevyBE8JbXBTe9ofHhS047VmWMLoksE45zZ08XSnhnyG7WUuk3gmDbAklfVMHedb9sEV3OovPUWt+Sw==} + peerDependencies: + vue: ^3.2.0 + dependencies: + '@ctrl/tinycolor': 3.6.1 + '@element-plus/icons-vue': 2.3.1(vue@3.4.31) + '@floating-ui/dom': 1.6.7 + '@popperjs/core': /@sxzz/popperjs-es@2.11.7 + '@types/lodash': 4.17.7 + '@types/lodash-es': 4.17.12 + '@vueuse/core': 9.13.0(vue@3.4.31) + async-validator: 4.2.5 + dayjs: 1.11.11 + escape-html: 1.0.3 + lodash: 4.17.21 + lodash-es: 4.17.21 + lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21) + memoize-one: 6.0.0 + normalize-wheel-es: 1.2.0 + vue: 3.4.31(typescript@4.7.4) + transitivePeerDependencies: + - '@vue/composition-api' + dev: false + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /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'} + + /es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.2 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + dev: true + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: true + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + dev: true + + /es-module-lexer@0.9.3: + resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} + dev: true + + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + dev: true + + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + dev: true + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} + engines: {node: '>=0.10'} + requiresBuild: true + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 + next-tick: 1.1.0 + dev: false + + /es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 + dev: false + + /es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} + dependencies: + d: 1.0.2 + ext: 1.7.0 + dev: false + + /esbuild-android-64@0.15.18: + resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-arm64@0.15.18: + resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-64@0.15.18: + resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64@0.15.18: + resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64@0.15.18: + resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64@0.15.18: + resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32@0.15.18: + resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64@0.15.18: + resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64@0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm@0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le@0.15.18: + resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le@0.15.18: + resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64@0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x@0.15.18: + resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64@0.15.18: + resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64@0.15.18: + resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64@0.15.18: + resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32@0.15.18: + resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64@0.15.18: + resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64@0.15.18: + resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild@0.15.18: + resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.18 + '@esbuild/linux-loong64': 0.15.18 + esbuild-android-64: 0.15.18 + esbuild-android-arm64: 0.15.18 + esbuild-darwin-64: 0.15.18 + esbuild-darwin-arm64: 0.15.18 + esbuild-freebsd-64: 0.15.18 + esbuild-freebsd-arm64: 0.15.18 + esbuild-linux-32: 0.15.18 + esbuild-linux-64: 0.15.18 + esbuild-linux-arm: 0.15.18 + esbuild-linux-arm64: 0.15.18 + esbuild-linux-mips64le: 0.15.18 + esbuild-linux-ppc64le: 0.15.18 + esbuild-linux-riscv64: 0.15.18 + esbuild-linux-s390x: 0.15.18 + esbuild-netbsd-64: 0.15.18 + esbuild-openbsd-64: 0.15.18 + esbuild-sunos-64: 0.15.18 + esbuild-windows-32: 0.15.18 + esbuild-windows-64: 0.15.18 + esbuild-windows-arm64: 0.15.18 + dev: true + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + 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 + + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: true + + /eslint-config-prettier@8.10.0(eslint@8.57.0): + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.57.0 + dev: true + + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0)(eslint@8.57.0)(prettier@2.8.8): + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.57.0 + eslint-config-prettier: 8.10.0(eslint@8.57.0) + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 + dev: true + + /eslint-plugin-vue@9.27.0(eslint@8.57.0): + resolution: {integrity: sha512-5Dw3yxEyuBSXTzT5/Ge1X5kIkRTQ3nvBn/VwPwInNiZBSJOO/timWMUaflONnFBzU6NhB68lxnCda7ULV5N7LA==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + eslint: 8.57.0 + globals: 13.24.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.1.1 + semver: 7.6.3 + vue-eslint-parser: 9.4.3(eslint@8.57.0) + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + 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.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.11.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.5 + 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.6.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.24.0 + graphemer: 1.4.0 + ignore: 5.3.1 + 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.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.3 + dev: false + + /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.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + eslint-visitor-keys: 3.4.3 + dev: true + + /esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + 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@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.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 + + /event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + dev: false + + /execa@6.1.0: + resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 3.0.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + 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 + + /ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + dependencies: + type: 2.7.3 + dev: false + + /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.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + 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.7 + 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.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + 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.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + 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.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + dev: true + + /follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + dev: true + + /foreground-child@3.2.1: + resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.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 + dev: false + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true + + /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.1 + 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 + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + 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@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + dependencies: + foreground-child: 3.2.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + 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 + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + gopd: 1.0.1 + 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.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /good-listener@1.2.2: + resolution: {integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==} + dependencies: + delegate: 3.2.0 + dev: false + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.4 + 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 + + /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-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + 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-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + dev: true + + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + 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 + + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /header-case@2.0.4: + resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + dependencies: + capital-case: 1.0.4 + tslib: 2.6.3 + dev: true + + /highlight.js@11.10.0: + resolution: {integrity: sha512-SYVnVFswQER+zu1laSya563s+F8VDGt7o35d4utbamowvUNLLMovFqwCLSocpZTz3MgaSRA1IbqRWZv97dtErQ==} + engines: {node: '>=12.0.0'} + dev: false + + /hls.js@1.5.13: + resolution: {integrity: sha512-xRgKo84nsC7clEvSfIdgn/Tc0NOT+d7vdiL/wvkLO+0k0juc26NRBPPG1SfB8pd5bHXIjMW/F5VM8VYYkOYYdw==} + dev: false + + /html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + dev: true + + /html-void-elements@2.0.1: + resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} + dev: false + + /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 + + /human-signals@3.0.1: + resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} + engines: {node: '>=12.20.0'} + dev: true + + /i18next@20.6.1: + resolution: {integrity: sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==} + dependencies: + '@babel/runtime': 7.24.8 + dev: false + + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + 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 + + /immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + dev: false + + /immutable@4.3.6: + resolution: {integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==} + 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==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 + dev: true + + /is-accessor-descriptor@1.0.1: + resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} + engines: {node: '>= 0.10'} + dependencies: + hasown: 2.0.2 + dev: true + + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.3.0 + dev: true + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module@2.14.0: + resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==} + engines: {node: '>= 0.4'} + dependencies: + hasown: 2.0.2 + dev: true + + /is-data-descriptor@1.0.1: + resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} + engines: {node: '>= 0.4'} + dependencies: + hasown: 2.0.2 + dev: true + + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + dependencies: + is-typed-array: 1.1.13 + dev: true + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-descriptor@0.1.7: + resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} + engines: {node: '>= 0.4'} + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + dev: true + + /is-descriptor@1.0.3: + resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} + engines: {node: '>= 0.4'} + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + 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@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + 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-hotkey@0.2.0: + resolution: {integrity: sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==} + dev: false + + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + 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-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + dev: false + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + 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-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.15 + dev: true + + /is-url@1.2.4: + resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} + dev: false + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.7 + dev: true + + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: true + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: true + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + 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 + + /jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + dev: true + + /js-base64@2.6.4: + resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} + dev: true + + /js-table2excel@1.1.2: + resolution: {integrity: sha512-E5QcPLjlF7qcqqF+DgaPxj9b+lQsItMqkwcXKpODtZ8zo5f07huuvem3Ek1WYzOcSOalU7RwEAG/66WQ5PVfWA==} + 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 + + /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 + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.1 + 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 + + /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 + + /lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + 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.12)(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.12 + lodash: 4.17.21 + lodash-es: 4.17.21 + dev: false + + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: false + + /lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + dev: false + + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: false + + /lodash.foreach@4.5.0: + resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==} + dev: false + + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: false + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + dev: false + + /lodash.toarray@4.4.0: + resolution: {integrity: sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==} + dev: false + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + /lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + dependencies: + tslib: 2.6.3 + dev: true + + /lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + dev: true + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + dependencies: + sourcemap-codec: 1.4.8 + dev: true + + /magic-string@0.26.7: + resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} + engines: {node: '>=12'} + dependencies: + sourcemap-codec: 1.4.8 + dev: true + + /magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + /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 + + /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.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false + + /mime-match@1.0.2: + resolution: {integrity: sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==} + dependencies: + wildcard: 1.1.2 + dev: false + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /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.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + 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 + + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /mitt@2.1.0: + resolution: {integrity: sha512-ILj2TpLiysu2wkBbWjAmww7TkZb65aiQO+DkVdUTBpBXq+MHYiETENkKFMtsJZX1Lf4pe4QOrTSjIfUwN5lRdg==} + 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@0.5.17: + resolution: {integrity: sha512-Rn+ai4G+CQXptDFSRNnChEgNr+xAEauYhwRvpPl/UHStTlgkIftplgJRsA2OXPuoUn86K4XAjB26+x5CEvVb6A==} + dependencies: + acorn: 8.12.1 + pathe: 1.1.2 + pkg-types: 1.1.3 + ufo: 1.5.4 + dev: true + + /mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + dependencies: + acorn: 8.12.1 + pathe: 1.1.2 + pkg-types: 1.1.3 + ufo: 1.5.4 + 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==} + dev: true + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: false + + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + + /namespace-emitter@2.0.1: + resolution: {integrity: sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==} + dev: false + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + 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-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + dev: false + + /no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + dependencies: + lower-case: 2.0.2 + tslib: 2.6.3 + dev: true + + /node-releases@2.0.17: + resolution: {integrity: sha512-Ww6ZlOiEQfPfXM45v17oabk77Z7mg5bOt7AjDyzy7RjK9OrLrLC8dyZQoAPEOtFX9SaNf1Tdvr5gRJWdTJj7GA==} + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-wheel-es@1.2.0: + resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==} + dev: false + + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + 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 + + /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-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: true + + /object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + dev: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + 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.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.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 + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + 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 + + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + 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-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 + + /package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + dev: true + + /param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + dependencies: + dot-case: 3.0.4 + tslib: 2.6.3 + 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 + + /pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.3 + dev: true + + /pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + dev: true + + /path-case@3.0.4: + resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + dependencies: + dot-case: 3.0.4 + tslib: 2.6.3 + dev: true + + /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-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + dev: true + + /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@0.3.9: + resolution: {integrity: sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==} + dev: true + + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true + + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + + /pinia@2.1.7(typescript@4.7.4)(vue@3.4.31): + 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.6.3 + typescript: 4.7.4 + vue: 3.4.31(typescript@4.7.4) + vue-demi: 0.14.8(vue@3.4.31) + dev: false + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: true + + /pkg-types@1.1.3: + resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==} + dependencies: + confbox: 0.1.7 + mlly: 1.7.1 + pathe: 1.1.2 + dev: true + + /posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + dev: true + + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: true + + /postcss-import@15.1.0(postcss@8.4.39): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.39 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + dev: true + + /postcss-js@4.0.1(postcss@8.4.39): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.39 + dev: true + + /postcss-load-config@4.0.2(postcss@8.4.39): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 3.1.2 + postcss: 8.4.39 + yaml: 2.4.5 + dev: true + + /postcss-nested@6.0.1(postcss@8.4.39): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.39 + postcss-selector-parser: 6.1.1 + dev: true + + /postcss-prefix-selector@1.16.1(postcss@5.2.18): + resolution: {integrity: sha512-Umxu+FvKMwlY6TyDzGFoSUnzW+NOfMBLyC1tAkIjgX+Z/qGspJeRjVC903D7mx7TuBpJlwti2ibXtWuA7fKMeQ==} + peerDependencies: + postcss: '>4 <9' + dependencies: + postcss: 5.2.18 + dev: true + + /postcss-selector-parser@6.1.1: + resolution: {integrity: sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + 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.39: + resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + /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 + + /preact@10.22.1: + resolution: {integrity: sha512-jRYbDDgMpIb5LHq3hkI0bbl+l/TQ9UnkdQ0ww+lp+4MMOdqaUYdFc5qeyP+IV8FAd/2Em7drVPeKdQxsiWCf/A==} + dev: false + + /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@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + dev: false + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + + /qrcodejs2-fix@0.0.1: + resolution: {integrity: sha512-1R6jB87k1PUwjX65hh24FftDjrghPvryYfsajV3chCp//dQb8QUeL446DVLj2SIeotP8ro9rSYri0wOp7O+7Hg==} + dev: false + + /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 + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + 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 + + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: false + + /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 + + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + 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 + + /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 + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.14.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + 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 + + /rgb@0.1.0: + resolution: {integrity: sha512-F49dXX73a92N09uQkfCp2QjwXpmJcn9/i9PvjmwsSIXUGqRLCf/yx5Q9gRxuLQTq248kakqQuc8GX/U/CxSqlA==} + hasBin: true + dev: false + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup@2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + dev: true + + /safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + dependencies: + ret: 0.1.15 + dev: true + + /sass@1.77.8: + resolution: {integrity: sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 3.6.0 + immutable: 4.3.6 + source-map-js: 1.2.0 + dev: true + + /scroll-into-view-if-needed@2.2.31: + resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} + dependencies: + compute-scroll-into-view: 1.0.20 + dev: false + + /scule@0.2.1: + resolution: {integrity: sha512-M9gnWtn3J0W+UhJOHmBxBTwv8mZCan5i1Himp60t6vvZcor0wr+IM0URKmIglsWJ7bRujNAVVN77fp+uZaWoKg==} + dev: true + + /select@1.1.2: + resolution: {integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==} + dev: false + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /sentence-case@3.0.4: + resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.3 + upper-case-first: 2.0.2 + dev: true + + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + dev: true + + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + 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 + + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + 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 + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slate-history@0.66.0(slate@0.72.8): + resolution: {integrity: sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==} + peerDependencies: + slate: '>=0.65.3' + dependencies: + is-plain-object: 5.0.0 + slate: 0.72.8 + dev: false + + /slate@0.72.8: + resolution: {integrity: sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==} + dependencies: + immer: 9.0.21 + is-plain-object: 5.0.0 + tiny-warning: 1.0.3 + dev: false + + /snabbdom@3.6.2: + resolution: {integrity: sha512-ig5qOnCDbugFntKi6c7Xlib8bA6xiJVk8O+WdFrV3wxbMqeHO0hXFQC4nAhPVWfZfi8255lcZkNhtIBINCc4+Q==} + engines: {node: '>=12.17.0'} + dev: false + + /snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + dependencies: + dot-case: 3.0.4 + tslib: 2.6.3 + 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 + + /sortablejs@1.14.0: + resolution: {integrity: sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==} + dev: false + + /sortablejs@1.15.2: + resolution: {integrity: sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA==} + dev: false + + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + 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 + + /sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + 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 + + /ssr-window@3.0.0: + resolution: {integrity: sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==} + dev: false + + /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 + + /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 + + /strict-uri-encode@1.1.0: + resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} + engines: {node: '>=0.10.0'} + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + 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.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + dev: true + + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + dev: true + + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.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@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@0.4.2: + resolution: {integrity: sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==} + dependencies: + acorn: 8.12.1 + dev: true + + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + 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 + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + 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.1(postcss@5.2.18) + posthtml-rename-id: 1.0.12 + posthtml-svg-mode: 1.0.3 + query-string: 4.3.4 + traverse: 0.6.9 + 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.1 + stable: 0.1.8 + dev: true + + /tailwindcss@3.4.6: + resolution: {integrity: sha512-1uRHzPB+Vzu57ocybfZ4jh5Q3SdlH7XW23J5sQoM9LhE9eIOlzxer/3XPSsycvih3rboRsvt0QCmzSrqyOYUIA==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.6 + lilconfig: 2.1.0 + micromatch: 4.0.7 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.1 + postcss: 8.4.39 + postcss-import: 15.1.0(postcss@8.4.39) + postcss-js: 4.0.1(postcss@8.4.39) + postcss-load-config: 4.0.2(postcss@8.4.39) + postcss-nested: 6.0.1(postcss@8.4.39) + postcss-selector-parser: 6.1.1 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: true + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: true + + /throttle-debounce@3.0.1: + resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} + engines: {node: '>=10'} + dev: false + + /tiny-emitter@2.1.0: + resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==} + dev: false + + /tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + dev: false + + /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 + + /traverse@0.6.9: + resolution: {integrity: sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==} + engines: {node: '>= 0.4'} + dependencies: + gopd: 1.0.1 + typedarray.prototype.slice: 1.0.3 + which-typed-array: 1.1.15 + dev: true + + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + dev: false + + /tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + dev: true + + /tsutils@3.21.0(typescript@4.7.4): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 4.7.4 + 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-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type@2.7.3: + resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} + dev: false + + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + dev: true + + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: true + + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + dev: true + + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + dev: true + + /typedarray.prototype.slice@1.0.3: + resolution: {integrity: sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + typed-array-buffer: 1.0.2 + typed-array-byte-offset: 1.0.2 + dev: true + + /typescript@4.7.4: + resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} + engines: {node: '>=4.2.0'} + hasBin: true + + /ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + dev: true + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.7 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /unimport@0.4.7(vite@3.2.10): + resolution: {integrity: sha512-V2Pbscd1VSdgWm1/OI2pjtydEOTjE7DDnHZKhpOq7bSUBc1i8+1f6PK8jI1lJ1plRDcSNr0DLtAmtU9NPkFQpw==} + dependencies: + '@rollup/pluginutils': 4.2.1 + escape-string-regexp: 5.0.0 + fast-glob: 3.3.2 + local-pkg: 0.4.3 + magic-string: 0.26.7 + mlly: 0.5.17 + pathe: 0.3.9 + scule: 0.2.1 + strip-literal: 0.4.2 + unplugin: 0.7.2(vite@3.2.10) + transitivePeerDependencies: + - esbuild + - rollup + - vite + - webpack + 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@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: true + + /unplugin-auto-import@0.9.5(@vueuse/core@10.11.0)(vite@3.2.10): + resolution: {integrity: sha512-CskZjMM+p/QZev7y4JgaAFrf63ui4VGS4HrDMm6VIiVjwnmQ0wPugo58GGhYa+W2Hyv6zGffYO6uYHfeVlDZDA==} + engines: {node: '>=14'} + peerDependencies: + '@vueuse/core': '*' + peerDependenciesMeta: + '@vueuse/core': + optional: true + dependencies: + '@antfu/utils': 0.5.2 + '@rollup/pluginutils': 4.2.1 + '@vueuse/core': 10.11.0(vue@3.4.31) + local-pkg: 0.4.3 + magic-string: 0.26.7 + unimport: 0.4.7(vite@3.2.10) + unplugin: 0.7.2(vite@3.2.10) + transitivePeerDependencies: + - esbuild + - rollup + - vite + - webpack + dev: true + + /unplugin-vue-components@0.19.9(vite@3.2.10)(vue@3.4.31): + resolution: {integrity: sha512-i5mZtg85euPWZrGswFkoa9pf4WjKCP5qOjnwOyg3KOKVzFjnP3osCdrunQMjtoMKehTdz1vV6baZH8bZR4PNgg==} + engines: {node: '>=14'} + peerDependencies: + '@babel/parser': ^7.15.8 + '@babel/traverse': ^7.15.4 + vue: 2 || 3 + peerDependenciesMeta: + '@babel/parser': + optional: true + '@babel/traverse': + optional: true + dependencies: + '@antfu/utils': 0.5.2 + '@rollup/pluginutils': 4.2.1 + chokidar: 3.6.0 + debug: 4.3.5 + fast-glob: 3.3.2 + local-pkg: 0.4.3 + magic-string: 0.26.7 + minimatch: 5.1.6 + resolve: 1.22.8 + unplugin: 0.7.2(vite@3.2.10) + vue: 3.4.31(typescript@4.7.4) + transitivePeerDependencies: + - esbuild + - rollup + - supports-color + - vite + - webpack + dev: true + + /unplugin@0.7.2(vite@3.2.10): + resolution: {integrity: sha512-m7thX4jP8l5sETpLdUASoDOGOcHaOVtgNyrYlToyQUvILUtEzEnngRBrHnAX3IKqooJVmXpoa/CwQ/QqzvGaHQ==} + peerDependencies: + esbuild: '>=0.13' + rollup: ^2.50.0 + vite: ^2.3.0 || ^3.0.0-0 + webpack: 4 || 5 + peerDependenciesMeta: + esbuild: + optional: true + rollup: + optional: true + vite: + optional: true + webpack: + optional: true + dependencies: + acorn: 8.12.1 + chokidar: 3.6.0 + vite: 3.2.10(@types/node@16.18.102)(sass@1.77.8) + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.4.6 + 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 + + /update-browserslist-db@1.1.0(browserslist@4.23.2): + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.2 + escalade: 3.1.2 + picocolors: 1.0.1 + dev: true + + /upper-case-first@2.0.2: + resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + dependencies: + tslib: 2.6.3 + dev: true + + /upper-case@2.0.2: + resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + dependencies: + tslib: 2.6.3 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: true + + /urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + dev: true + + /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 + + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: true + + /vite-plugin-style-import@2.0.0(vite@3.2.10): + resolution: {integrity: sha512-qtoHQae5dSUQPo/rYz/8p190VU5y19rtBaeV7ryLa/AYAU/e9CG89NrN/3+k7MR8mJy/GPIu91iJ3zk9foUOSA==} + peerDependencies: + vite: '>=2.0.0' + dependencies: + '@rollup/pluginutils': 4.2.1 + change-case: 4.1.2 + console: 0.7.2 + es-module-lexer: 0.9.3 + fs-extra: 10.1.0 + magic-string: 0.25.9 + pathe: 0.2.0 + vite: 3.2.10(@types/node@16.18.102)(sass@1.77.8) + dev: true + + /vite-plugin-svg-icons@2.0.1(vite@3.2.10): + resolution: {integrity: sha512-6ktD+DhV6Rz3VtedYvBKKVA2eXF+sAQVaKkKLDSqGUfnhqXl3bj5PPkVTl3VexfTuZy66PmINi8Q6eFnVfRUmA==} + peerDependencies: + vite: '>=2.0.0' + dependencies: + '@types/svgo': 2.6.4 + cors: 2.8.5 + debug: 4.3.5 + etag: 1.8.1 + fs-extra: 10.1.0 + pathe: 0.2.0 + svg-baker: 1.7.0 + svgo: 2.8.0 + vite: 3.2.10(@types/node@16.18.102)(sass@1.77.8) + transitivePeerDependencies: + - supports-color + dev: true + + /vite-plugin-vue-setup-extend@0.4.0(vite@3.2.10): + resolution: {integrity: sha512-WMbjPCui75fboFoUTHhdbXzu4Y/bJMv5N9QT9a7do3wNMNHHqrk+Tn2jrSJU0LS5fGl/EG+FEDBYVUeWIkDqXQ==} + peerDependencies: + vite: '>=2.0.0' + dependencies: + '@vue/compiler-sfc': 3.4.31 + magic-string: 0.25.9 + vite: 3.2.10(@types/node@16.18.102)(sass@1.77.8) + dev: true + + /vite@3.2.10(@types/node@16.18.102)(sass@1.77.8): + resolution: {integrity: sha512-Dx3olBo/ODNiMVk/cA5Yft9Ws+snLOXrhLtrI3F4XLt4syz2Yg8fayZMWScPKoz12v5BUv7VEmQHnsfpY80fYw==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 16.18.102 + esbuild: 0.15.18 + postcss: 8.4.39 + resolve: 1.22.8 + rollup: 2.79.1 + sass: 1.77.8 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vue-clipboard3@2.0.0: + resolution: {integrity: sha512-Q9S7dzWGax7LN5iiSPcu/K1GGm2gcBBlYwmMsUc5/16N6w90cbKow3FnPmPs95sungns4yvd9/+JhbAznECS2A==} + dependencies: + clipboard: 2.0.11 + dev: false + + /vue-demi@0.13.11(vue@3.4.31): + 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.4.31(typescript@4.7.4) + dev: false + + /vue-demi@0.14.8(vue@3.4.31): + resolution: {integrity: sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==} + 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.4.31(typescript@4.7.4) + + /vue-echarts@6.7.3(echarts@5.5.1)(vue@3.4.31): + resolution: {integrity: sha512-vXLKpALFjbPphW9IfQPOVfb1KjGZ/f8qa/FZHi9lZIWzAnQC1DgnmEK3pJgEkyo6EP7UnX6Bv/V3Ke7p+qCNXA==} + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.5 + '@vue/runtime-core': ^3.0.0 + echarts: ^5.4.1 + vue: ^2.6.12 || ^3.1.1 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + '@vue/runtime-core': + optional: true + dependencies: + echarts: 5.5.1 + resize-detector: 0.3.0 + vue: 3.4.31(typescript@4.7.4) + vue-demi: 0.13.11(vue@3.4.31) + dev: false + + /vue-eslint-parser@9.4.3(eslint@8.57.0): + resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.5 + eslint: 8.57.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + lodash: 4.17.21 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + dev: true + + /vue-pdf-embed@1.2.1(vue@3.4.31): + resolution: {integrity: sha512-4uUm4wxaEGT9cS1cyuagAmMJjBxfQXWG1MvdGPesD3CiXhhSp4i0VMUCYwhFXtZ5+QqWv4mXbfLJ29Wpt+Qcuw==} + peerDependencies: + vue: ^2.x || ^3.x + dependencies: + vue: 3.4.31(typescript@4.7.4) + dev: false + + /vue-router@4.4.0(vue@3.4.31): + resolution: {integrity: sha512-HB+t2p611aIZraV2aPSRNXf0Z/oLZFrlygJm+sZbdJaW6lcFqEDQwnzUBXn+DApw+/QzDU/I9TeWx9izEjTmsA==} + peerDependencies: + vue: ^3.2.0 + dependencies: + '@vue/devtools-api': 6.6.3 + vue: 3.4.31(typescript@4.7.4) + dev: false + + /vue-tsc@0.38.9(typescript@4.7.4): + resolution: {integrity: sha512-Yoy5phgvGqyF98Fb4mYqboR4Q149jrdcGv5kSmufXJUq++RZJ2iMVG0g6zl+v3t4ORVWkQmRpsV4x2szufZ0LQ==} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@volar/vue-typescript': 0.38.9 + typescript: 4.7.4 + dev: true + + /vue3-eventbus@2.0.0: + resolution: {integrity: sha512-AzgA5ShZqWy6zeuZbnwAOZDt/GHRcUwUEyNmUoOEK7MtwpjABXtyh1m6JHzcEulrRrxMgpI2qDFsjss3fYpYuw==} + dependencies: + mitt: 2.1.0 + dev: false + + /vue3-print-nb@0.1.4(typescript@4.7.4): + resolution: {integrity: sha512-LExI7viEzplR6ZKQ2b+V4U0cwGYbVD4fut/XHvk3UPGlT5CcvIGs6VlwGp107aKgk6P8Pgx4rco3Rehv2lti3A==} + dependencies: + vue: 3.4.31(typescript@4.7.4) + transitivePeerDependencies: + - typescript + dev: false + + /vue3-video-play@1.3.1-beta.6(typescript@4.7.4): + resolution: {integrity: sha512-Olrx2/LNAds7fuor/yX9ZKT9sOcwcfTt2g2YbbCrEaAmZ5Tb0hwBr5z+/CoLwELzzRzXCHPmWWoT0Wm5W/Nwpw==} + dependencies: + hls.js: 1.5.13 + throttle-debounce: 3.0.1 + vue: 3.4.31(typescript@4.7.4) + transitivePeerDependencies: + - typescript + dev: false + + /vue@3.4.31(typescript@4.7.4): + resolution: {integrity: sha512-njqRrOy7W3YLAlVqSKpBebtZpDVg21FPoaq1I7f/+qqBThK9ChAIjkRWgeP6Eat+8C+iia4P3OYqpATP21BCoQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@vue/compiler-dom': 3.4.31 + '@vue/compiler-sfc': 3.4.31 + '@vue/runtime-dom': 3.4.31 + '@vue/server-renderer': 3.4.31(vue@3.4.31) + '@vue/shared': 3.4.31 + typescript: 4.7.4 + + /vuedraggable@4.1.0(vue@3.4.31): + resolution: {integrity: sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==} + peerDependencies: + vue: ^3.0.1 + dependencies: + sortablejs: 1.14.0 + vue: 3.4.31(typescript@4.7.4) + dev: false + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true + + /webpack-virtual-modules@0.4.6: + resolution: {integrity: sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==} + dev: true + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /wildcard@1.1.2: + resolution: {integrity: sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==} + dev: false + + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + 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 + + /xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yaml@2.4.5: + resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==} + engines: {node: '>= 14'} + hasBin: true + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /zrender@5.6.0: + resolution: {integrity: sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==} + dependencies: + tslib: 2.3.0 + dev: false diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..ff8ef3c --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {} + } +} diff --git a/scripts/build.mjs b/scripts/build.mjs new file mode 100644 index 0000000..6285a63 --- /dev/null +++ b/scripts/build.mjs @@ -0,0 +1,37 @@ +import { execaCommand } from 'execa' +import path from 'path' +import fsExtra from 'fs-extra' +const { existsSync, remove, copy } = fsExtra +const cwd = process.cwd() +//打包发布路径,谨慎改动 +const releaseRelativePath = './public/admin' +const distPath = path.resolve(cwd, 'dist') +const releasePath = path.resolve(cwd, releaseRelativePath) + +async function build() { + await execaCommand('vite build', { stdio: 'inherit', encoding: 'utf-8', cwd }) + if (existsSync(releasePath)) { + await remove(releasePath) + } + console.log(`文件正在复制 ==> ${releaseRelativePath}`) + try { + await copyFile(distPath, releasePath) + } catch (error) { + console.log(`\n ${error}`) + } + console.log(`文件已复制 ==> ${releaseRelativePath}`) +} + +function copyFile(sourceDir, targetDir) { + return new Promise((resolve, reject) => { + copy(sourceDir, targetDir, (err) => { + if (err) { + reject(err) + } else { + resolve() + } + }) + }) +} + +build() diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..e6b28f3 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/src/api/app.ts b/src/api/app.ts new file mode 100644 index 0000000..fe64712 --- /dev/null +++ b/src/api/app.ts @@ -0,0 +1,11 @@ +import request from '@/utils/request' + +// 配置 +export function getConfig() { + return request.get({ url: '/common/index/config' }) +} + +// 工作台主页 +export function getWorkbench() { + return request.get({ url: '/common/index/workbench' }) +} diff --git a/src/api/consumer.ts b/src/api/consumer.ts new file mode 100644 index 0000000..1057729 --- /dev/null +++ b/src/api/consumer.ts @@ -0,0 +1,16 @@ +import request from '@/utils/request' + +// 用户列表 +export function getUserList(params: any) { + return request.get({ url: '/user/list', params }) +} + +// 用户详情 +export function getUserDetail(params: any) { + return request.get({ url: '/user/detail', params }) +} + +// 用户编辑 +export function userEdit(params: any) { + return request.post({ url: '/user/edit', params }) +} diff --git a/src/api/file.ts b/src/api/file.ts new file mode 100644 index 0000000..4dccea5 --- /dev/null +++ b/src/api/file.ts @@ -0,0 +1,39 @@ +import request from '@/utils/request' + +export function fileCateAdd(params: Record) { + return request.post({ url: '/common/album/cateAdd', params }) +} + +export function fileCateEdit(params: Record) { + return request.post({ url: '/common/album/cateRename', params }) +} + +// 文件分类删除 +export function fileCateDelete(params: Record) { + return request.post({ url: '/common/album/cateDel', params }) +} + +// 文件分类列表 +export function fileCateLists(params: Record) { + return request.get({ url: '/common/album/cateList', params }) +} + +// 文件列表 +export function fileList(params: Record) { + return request.get({ url: '/common/album/albumList', params }) +} + +// 文件删除 +export function fileDelete(params: Record) { + return request.post({ url: '/common/album/albumDel', params }) +} + +// 文件移动 +export function fileMove(params: Record) { + return request.post({ url: '/common/album/albumMove', params }) +} + +// 文件重命名 +export function fileRename(params: { id: number; name: string }) { + return request.post({ url: '/common/album/albumRename', params }) +} diff --git a/src/api/material/index.ts b/src/api/material/index.ts new file mode 100644 index 0000000..c8a0c60 --- /dev/null +++ b/src/api/material/index.ts @@ -0,0 +1,1157 @@ +/* + * @Author: micky + * @Date: 2024-07-19 18:35:14 + * @LastEditors: micky + * @LastEditTime: 2024-07-29 15:34:07 + * @FilePath: \maintenance-admin\src\api\material\index.ts + */ +import request from '@/utils/request' + +// 配件列表 +export function apiMaterialList(params: any) { + // return request.get({ url: '/sparePart/list', params }) + return new Promise(resolve => { + const obj = { + count: 10, + lists: [ + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + }, + { + code: '1233', + name: '显示屏', + model: '南孚', + amount: '120', + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '2' + }, + + { + code: '1233', + name: '继电器', + model: '南孚', + amount: '120', + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '3' + }, + { + code: '1233', + name: '显示屏', + model: '南孚', + amount: '120', + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '4' + }, + + { + code: '1233', + name: '继电器', + model: '南孚', + amount: '120', + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '5' + }, + { + code: '1233', + name: '显示屏', + model: '南孚', + amount: '120', + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '6' + }, + + { + code: '1233', + name: '继电器', + model: '南孚', + amount: '120', + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '7' + } + ], + pageNo: 1, + pageSize: 20 + } + resolve(obj) + }) +} + +// 新增配件 +export function apiMaterialAdd(params: any) { + return request.post({ url: '/sparePart/add', params }) +} +// 编辑配件 +export function apiMaterialEdit(params: any) { + return request.post({ url: '/sparePart/edit', params }) +} +// 删除配件 +export function apiMaterialDel(params: any) { + return request.post({ url: '/sparePart/del', params }) +} + +// 配件详情 +export function apiMaterialDetail(params: any) { + return request.get({ url: '/sparePart/detail', params }) +} + +// 仓库列表 +export function apiWarehouseList(): Promise { + // return request.post({ url: '/warehouse/list', params }) + return new Promise(resolve => { + const obj = { + count: 10, + lists: [ + { + name: '一级仓', + code: 'top', + id: '12123231212', + address: '广东省广州市', + createTime: '2024-07-01 18:00:00', + partsNumber: 1 + }, + { + name: '区域仓', + code: 'area', + id: '3313312', + address: '广东省广州市', + createTime: '2024-07-01 18:00:00', + partsNumber: 0, + children: [ + { + name: '广州仓', + code: 'area', + id: '12', + address: '广东省广州市', + createTime: '2024-07-01 18:00:00', + partsNumber: 0 + }, + { + name: '深圳仓', + code: 'area', + id: '3445', + address: '广东省广州市', + createTime: '2024-07-01 18:00:00', + partsNumber: 0 + } + ] + }, + { + name: '检修员仓', + code: 'person', + id: '4564524321', + address: '广东省广州市增城区新塘镇东晋商城', + createTime: '2024-07-01 18:00:00', + partsNumber: 12, + children: [ + { + name: '张三仓', + code: 'area', + id: '12434', + address: '广东省广州市', + createTime: '2024-07-01 18:00:00', + partsNumber: 0 + }, + { + name: '李四仓', + code: 'area', + id: '34451212', + address: '广东省广州市', + createTime: '2024-07-01 18:00:00', + partsNumber: 0 + } + ] + } + ], + pageNo: 1, + pageSize: 20 + } + resolve(obj) + }) +} + +// 新增仓库 +export function apiWarehouseAdd(params: any) { + return request.post({ url: '/warehouse/add', params }) +} +// 编辑仓库 +export function apiWarehouseEdit(params: any) { + return request.post({ url: '/warehouse/edit', params }) +} +// 删除仓库 +export function apiWarehouseDel(params: any) { + return request.post({ url: '/warehouse/del', params }) +} + +// 仓库详情 +export function apiWarehouseDetail(params: any) { + return request.get({ url: '/warehouse/detail', params }) +} + +// 配件领用列表 +export function apiReceiveList(): Promise { + // return request.post({ url: '/warehouse/list', params }) + return new Promise(resolve => { + const obj = { + count: 10, + lists: [ + { + orderId: '20240391242', + id: '12123231212', + amount: '1', + inspector: '检修员1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '0', + receiveWay: '0' + }, + { + orderId: '20240391242', + id: '12123231212', + amount: '1', + inspector: '检修员1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '1', + receiveWay: '1' + }, + { + orderId: '20240391242', + id: '12123231212', + amount: '1', + inspector: '检修员1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '2', + receiveWay: '2' + }, + { + orderId: '20240391242', + id: '12123231212', + amount: '1', + inspector: '检修员1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '3', + receiveWay: '2' + }, + { + orderId: '20240391242', + id: '12123231212', + amount: '1', + inspector: '检修员1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '4', + receiveWay: '2' + }, + { + orderId: '20240391242', + id: '12123231212', + amount: '1', + inspector: '检修员1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '5', + receiveWay: '1' + } + ], + pageNo: 1, + pageSize: 20 + } + resolve(obj) + }) +} + +// 配件领用详情 +export function apiReceiveDetail(params: any): Promise { + return new Promise(resolve => { + const obj = { + receiverPerson: 'micky', + receiverPhone: '13420108932', + classifyId: '1', + id: '12123231212', + createBy: 'micky', + createTime: '2024-03-09 12:00:00', + status: '1', + result: '1', + auditOpinion: '入库明细不清晰', + receiveWay: '1', + receiverAddress: '广东省广州市', + lists: [ + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + processNumber: 130, + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + } + ] + } + resolve(obj) + }) +} + +// 入库列表 +export function apiWarehousingList(): Promise { + // return request.post({ url: '/warehouse/list', params }) + return new Promise(resolve => { + const obj = { + count: 10, + lists: [ + { + classifyName: '采购入库', + classifyId: '0', + supplier: '王先生', + id: '12123231212', + phone: '134201099831', + warehouseName: '一级仓', + status: '0', + createBy: 'micky', + createTime: '2024-03-09 12:00:00', + result: '' + }, + { + classifyName: '采购入库', + classifyId: '0', + supplier: '王先生', + id: '1212312231212', + phone: '134201099831', + warehouseName: '一级仓', + status: '1', + createBy: 'micky', + createTime: '2024-03-09 12:00:00', + result: '1' + }, + { + classifyName: '采购入库', + classifyId: '0', + supplier: '王先生', + id: '1212312231212', + phone: '134201099831', + warehouseName: '一级仓', + status: '1', + createBy: 'micky', + createTime: '2024-03-09 12:00:00', + result: '0' + }, + { + classifyName: '采购入库', + classifyId: '0', + supplier: '王先生', + id: '121232411231212', + phone: '134201099831', + warehouseName: '一级仓', + status: '2', + createBy: 'micky', + createTime: '2024-03-09 12:00:00', + result: '' + } + ], + pageNo: 1, + pageSize: 20 + } + resolve(obj) + }) +} + +// 新建入库单 +export function apiWarehousingAdd(params: any) { + return request.post({ url: '/receive/del', params }) +} +// 编辑入库单 +export function apiWarehousingEdit(params: any) { + return request.post({ url: '/receive/del', params }) +} + +// 入库单详情 +export function apiWarehousingDetail(params: any): Promise { + // return request.post({ url: '/receive/del', params }) + return new Promise(resolve => { + const obj = { + warehouseId: '12123231212', + warehouseName: '总仓', + classifyId: '1', + id: '12123231212', + supplier: '王先生', + phone: '1341313123', + createBy: 'micky', + createTime: '2024-03-09 12:00:00', + status: '1', + result: '1', + auditOpinion: '入库明细不清晰', + lists: [ + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + } + ] + } + resolve(obj) + }) +} + +// 出库列表 +export function apiOutOfStockList(): Promise { + // return request.post({ url: '/warehouse/list', params }) + return new Promise(resolve => { + const obj = { + count: 10, + lists: [ + { + classifyName: '采购出库', + classifyId: '0', + contact: '王先生', + id: '12123231212', + phone: '134201099831', + warehouseName: '一级仓', + status: '0', + createBy: 'micky', + createTime: '2024-03-09 12:00:00', + result: '' + }, + { + classifyName: '采购出库', + classifyId: '0', + contact: '王先生', + id: '1212312231212', + phone: '134201099831', + warehouseName: '一级仓', + status: '1', + createBy: 'micky', + createTime: '2024-03-09 12:00:00', + result: '1' + }, + { + classifyName: '采购出库', + classifyId: '0', + contact: '王先生', + id: '1212312231212', + phone: '134201099831', + warehouseName: '一级仓', + status: '1', + createBy: 'micky', + createTime: '2024-03-09 12:00:00', + result: '0' + }, + { + classifyName: '采购出库', + classifyId: '1', + contact: '王先生', + id: '121232411231212', + phone: '134201099831', + warehouseName: '一级仓', + status: '2', + createBy: 'micky', + createTime: '2024-03-09 12:00:00', + result: '' + } + ], + pageNo: 1, + pageSize: 20 + } + resolve(obj) + }) +} + +// 新建出库单 +export function apiOutOfStockAdd(params: any) { + return request.post({ url: '/receive/del', params }) +} + +// 编辑出库单 +export function apiOutOfStockEdit(params: any) { + return request.post({ url: '/receive/del', params }) +} + +// 出库单详情 +export function apiOutOfStockDetail(params: any): Promise { + // return request.post({ url: '/receive/del', params }) + return new Promise(resolve => { + const obj = { + warehouseId: '12123231212', + warehouseName: '总仓', + classifyId: '1', + id: '12123231212', + contact: '王先生', + phone: '1341313123', + createBy: 'micky', + createTime: '2024-03-09 12:00:00', + status: '1', + result: '1', + auditOpinion: '入库明细不清晰', + lists: [ + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + } + ] + } + resolve(obj) + }) +} + +// 调拨列表 +export function apiAllotList(): Promise { + // return request.post({ url: '/warehouse/list', params }) + return new Promise(resolve => { + const obj = { + count: 10, + lists: [ + { + id: '12123231212', + phone: '134201099831', + inWarehouseName: '一级仓', + outWarehouseName: '二级仓', + status: '0', + createBy: 'micky', + createTime: '2024-03-09 12:00:00', + result: '' + }, + { + id: '12123231212', + phone: '134201099831', + inWarehouseName: '一级仓', + outWarehouseName: '二级仓', + status: '1', + createBy: 'micky', + createTime: '2024-03-09 12:00:00', + result: '1' + }, + { + id: '12123231212', + phone: '134201099831', + inWarehouseName: '一级仓', + outWarehouseName: '二级仓', + status: '2', + createBy: 'micky', + createTime: '2024-03-09 12:00:00', + result: '' + } + ], + pageNo: 1, + pageSize: 20 + } + resolve(obj) + }) +} + +// 新建调拨单 +export function apiAllotAdd(params: any) { + return request.post({ url: '/receive/del', params }) +} + +// 编辑调拨单 +export function apiAllotEdit(params: any) { + return request.post({ url: '/receive/del', params }) +} + +// 调拨单详情 +export function apiAllotDetail(params: any): Promise { + // return request.post({ url: '/receive/del', params }) + return new Promise(resolve => { + const obj = { + inWarehouseId: '12123231212', + inWarehouseName: '总仓', + outWarehouseName: '二级仓', + outWarehouseId: '12123231212', + id: '12123231212', + createBy: 'micky', + createTime: '2024-03-09 12:00:00', + status: '1', + result: '1', + auditOpinion: '调拨明细不清晰', + remark: '这里是备注。。。。', + lists: [ + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + } + ] + } + resolve(obj) + }) +} + +// 取消审核 +export function apiCancelAudit(params: any) { + return request.post({ url: '/receive/del', params }) +} +// 审核 +export function apiAudit(params: any) { + return request.post({ url: '/receive/del', params }) +} + +// 审核列表 +export function apiAuditList(params: any) { + return new Promise(resolve => { + const obj = { + count: 10, + lists: [ + { + id: '12123231212', + typeDesc: '入库单', + type: 1, + warsehouseName: '一级仓', + warsehouseType: '0', + status: '0', + result: '', + updateTime: '2024-03-09 12:00:00' + }, + { + id: '12123231212', + typeDesc: '出库单', + type: 2, + warsehouseName: '一级仓', + warsehouseType: '0', + status: '2', + result: '', + updateTime: '2024-03-09 12:00:00' + }, + { + id: '12123231212', + typeDesc: '仓库调拨单', + type: 0, + warsehouseName: '一级仓', + warsehouseType: '1', + status: '1', + result: '0', + updateTime: '2024-03-09 12:00:00' + }, + { + id: '12123231212', + typeDesc: '入库单', + type: 1, + warsehouseName: '一级仓', + warsehouseType: '1', + status: '1', + result: '1', + updateTime: '2024-03-09 12:00:00' + } + ], + pageNo: 1, + pageSize: 20 + } + resolve(obj) + }) +} + +// 库存比对 +export function apiInventoryCompare(params: any) { + return request.post({ url: '/receive/del', params }) +} + +// 配件采购订单列表 +export function apiPurchaseOrderList(): Promise { + // return request.post({ url: '/warehouse/list', params }) + return new Promise(resolve => { + const obj = { + count: 10, + lists: [ + { + orderId: '20240391242', + id: '12123231212', + purchasingPerson: '检修员1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '0', + receiveWay: '0' + }, + { + orderId: '20240391242', + id: '12123231212', + inspector: '检修员1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '1', + receiveWay: '0' + }, + { + orderId: '20240391242', + id: '12123231212', + inspector: '检修员1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '2', + receiveWay: '1' + }, + { + orderId: '20240391242', + id: '12123231212', + inspector: '检修员1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '3', + receiveWay: '1' + }, + { + orderId: '20240391242', + id: '12123231212', + inspector: '检修员1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '4', + receiveWay: '2' + }, + { + orderId: '20240391242', + id: '12123231212', + inspector: '检修员1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '5', + receiveWay: '2' + } + ], + pageNo: 1, + pageSize: 20 + } + resolve(obj) + }) +} + +// 配件采购订单详情 +export function apiPurchaseOrderDetail(params: any): Promise { + return new Promise(resolve => { + const obj = { + receiverPerson: 'micky', + receiverPhone: '13420108932', + id: '12123231212', + orderId: '133232q3', + createBy: 'micky', + createTime: '2024-03-09 12:00:00', + status: '4', + result: '1', + auditOpinion: '入库明细不清晰', + receiveWay: '1', + receiverAddress: '广东省广州市', + purchasingPerson: 'micky', + phone: '13420109812', + lists: [ + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + processNumber: 130, + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + } + ] + } + resolve(obj) + }) +} + +// 配件采购订单打印信息 +export function apiPurchaseOrderPrint(params: any): any { + return new Promise(resolve => { + const obj = { + company: '合创云(广州)科技有限公司', + receiverPerson: 'micky', + receiverPhone: '13420108932', + receiverAdddress: '广东省广州市', + id: '12123231212', + orderId: '133232q3', + createBy: 'micky', + time: '2024-03-09 12:00:00', + createCompany: '深圳创先捷智能科技有限公司', + remark: '这里是备注。。。', + lists: [ + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + processNumber: 130, + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + }, + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + processNumber: 130, + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + }, + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + processNumber: 130, + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + }, + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + processNumber: 130, + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + } + ] + } + resolve(obj) + }) +} + +// 配件采购订单列表 +export function apiPurchaseList(): Promise { + // return request.post({ url: '/warehouse/list', params }) + return new Promise(resolve => { + const obj = { + count: 10, + lists: [ + { + orderId: '20240391242', + id: '12123231212', + purchasingPerson: '采购1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '0', + receiveWay: '0' + }, + { + orderId: '20240391242', + id: '12123231212', + purchasingPerson: '采购1', + inspector: '检修员1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '1', + receiveWay: '0' + }, + { + orderId: '20240391242', + id: '12123231212', + inspector: '检修员1', + purchasingPerson: '采购1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '2', + receiveWay: '1' + }, + { + orderId: '20240391242', + id: '12123231212', + inspector: '检修员1', + purchasingPerson: '采购1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '3', + receiveWay: '1' + }, + { + orderId: '20240391242', + id: '12123231212', + purchasingPerson: '采购1', + inspector: '检修员1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '4', + receiveWay: '2' + }, + { + orderId: '20240391242', + id: '12123231212', + inspector: '检修员1', + purchasingPerson: '采购1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '5', + receiveWay: '2' + }, + { + orderId: '20240391242', + id: '12123231212', + purchasingPerson: '采购1', + inspector: '检修员1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '6', + receiveWay: '2' + }, + { + orderId: '20240391242', + id: '12123231212', + inspector: '检修员1', + purchasingPerson: '采购1', + phone: '1342010983121', + createTime: '2024-03-09 12:00:00', + status: '7', + receiveWay: '2' + } + ], + pageNo: 1, + pageSize: 20 + } + resolve(obj) + }) +} + +// 配件采购订单详情 +export function apiPurchaseDetail(params: any): Promise { + return new Promise(resolve => { + const obj = { + receiverPerson: 'micky', + receiverPhone: '13420108932', + id: '12123231212', + orderId: '133232q3', + createBy: 'micky', + createTime: '2024-03-09 12:00:00', + status: '4', + result: '1', + auditOpinion: '入库明细不清晰', + receiveWay: '1', + receiverAddress: '广东省广州市', + purchasingPerson: 'micky', + phone: '13420109812', + lists: [ + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + processNumber: 130, + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + }, + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + processNumber: 130, + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + }, + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + processNumber: 130, + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + }, + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + processNumber: 130, + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + }, + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + processNumber: 130, + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + }, + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + processNumber: 130, + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + } + ] + } + resolve(obj) + }) +} + +// 配件采购订单打印信息 +export function apiPurchasePrint(params: any): any { + return new Promise(resolve => { + const obj = { + company: '合创云(广州)科技有限公司', + receiverPerson: 'micky', + receiverPhone: '13420108932', + receiverAdddress: '广东省广州市', + id: '12123231212', + orderId: '133232q3', + createBy: 'micky', + time: '2024-03-09 12:00:00', + createCompany: '深圳创先捷智能科技有限公司', + remark: '这里是备注。。。', + lists: [ + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + processNumber: 130, + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + }, + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + processNumber: 130, + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + }, + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + processNumber: 130, + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + }, + { + code: '1233', + name: '电池', + model: '南孚', + amount: '120', + processNumber: 130, + warehouseId: '23', + warehouseName: '一级仓', + price: '100', + updateTime: '2024-07-01 18:00:00', + unit: '个', + id: '1' + } + ] + } + resolve(obj) + }) +} + +// 配件收货 +export function apiPurchaseReceive(params: any) { + return request.post({ url: '/receive/del', params }) +} diff --git a/src/api/order/lists.ts b/src/api/order/lists.ts new file mode 100644 index 0000000..d60a2d8 --- /dev/null +++ b/src/api/order/lists.ts @@ -0,0 +1,60 @@ +import request from '@/utils/request' + +// 订单列表 +export function apiOrderLists(params: any) { + return request.post({ url: '/order/list', params }) +} + +// 订单详情 +export function apiOrderDetail(params: any) { + return request.get({ url: '/order/detail', params }) +} + +// 订单取消 +export function apiOrderCancel(params: any) { + return request.post({ url: '/order/cancel', params }) +} + +// 订单商家备注 +export function apiOrderRemark(params: any) { + return request.get({ url: '/order/remark', params }) +} + +// 订单商家备注详情 +export function apiOrderRemarkDetail(params: any) { + return request.get({ url: '/order.order/remarkDetail', params }) +} + +// 订单删除 +export function apiOrderDel(params: any) { + return request.get({ url: '/order/del', params }) +} + +// 统计订单状态数据 +export function apiOrderStatis(params: any) { + return request.get({ url: '/order/statistics', params }) +} + +// 订单核销 +export function apiOrderVerification(params: any) { + return request.get({ url: '/order/verification', params }) +} + +// 师傅列表 +export function apiMasterLists(params: any) { + return request.post({ url: '/staff/list', params }) +} + +// 指派师傅 +export function apiDispatchStaff(params: any) { + return request.get({ url: '/order/dispatch', params }) +} +// 重新指派师傅获取分数 +export function apiDispatchStaffScore(params: any) { + return request.get({ url: '/cancel/order/config/getCancelOrderConfigByOrder', params }) +} + +// 确认服务 +export function apiConfirmService(params: any) { + return request.post({ url: '/order/staff/confirm', params }) +} diff --git a/src/api/org/department.ts b/src/api/org/department.ts new file mode 100644 index 0000000..b4899a0 --- /dev/null +++ b/src/api/org/department.ts @@ -0,0 +1,26 @@ +import request from '@/utils/request' + +// 部门列表 +export function deptLists(params?: any) { + return request.get({ url: '/system/dept/list', params }) +} + +// 添加部门 +export function deptAdd(params: any) { + return request.post({ url: '/system/dept/add', params }) +} + +// 编辑部门 +export function deptEdit(params: any) { + return request.post({ url: '/system/dept/edit', params }) +} + +// 删除部门 +export function deptDelete(params: any) { + return request.post({ url: '/system/dept/del', params }) +} + +// 部门详情 +export function deptDetail(params?: any) { + return request.get({ url: '/system/dept/detail', params }) +} diff --git a/src/api/org/post.ts b/src/api/org/post.ts new file mode 100644 index 0000000..63a15fc --- /dev/null +++ b/src/api/org/post.ts @@ -0,0 +1,30 @@ +import request from '@/utils/request' + +// 岗位列表 +export function postLists(params?: any) { + return request.get({ url: '/system/post/list', params }) +} +// 岗位列表 +export function postAll(params?: any) { + return request.get({ url: '/system/post/all', params }) +} + +// 添加岗位 +export function postAdd(params: any) { + return request.post({ url: '/system/post/add', params }) +} + +// 编辑岗位 +export function postEdit(params: any) { + return request.post({ url: '/system/post/edit', params }) +} + +// 删除岗位 +export function postDelete(params: any) { + return request.post({ url: '/system/post/del', params }) +} + +// 岗位详情 +export function postDetail(params: any) { + return request.get({ url: '/system/post/detail', params }) +} diff --git a/src/api/perms/admin.ts b/src/api/perms/admin.ts new file mode 100644 index 0000000..a54b275 --- /dev/null +++ b/src/api/perms/admin.ts @@ -0,0 +1,31 @@ +import request from '@/utils/request' + +// 管理员列表 +export function adminLists(params: any) { + return request.get({ url: '/system/admin/list', params }) +} + +// 管理员添加 +export function adminAdd(params: any) { + return request.post({ url: '/system/admin/add', params }) +} + +// 管理员编辑 +export function adminDetail(params: any) { + return request.get({ url: '/system/admin/detail', params }) +} + +// 管理员编辑 +export function adminEdit(params: any) { + return request.post({ url: '/system/admin/edit', params }) +} + +// 管理员删除 +export function adminDelete(params: any) { + return request.post({ url: '/system/admin/del', params }) +} + +// 管理员删除 +export function adminStatus(params: any) { + return request.post({ url: '/system/admin/disable', params }) +} diff --git a/src/api/perms/menu.ts b/src/api/perms/menu.ts new file mode 100644 index 0000000..577e143 --- /dev/null +++ b/src/api/perms/menu.ts @@ -0,0 +1,26 @@ +import request from '@/utils/request' + +// 菜单列表 +export function menuLists(params?: Record) { + return request.get({ url: '/system/menu/list', params }) +} + +// 添加菜单 +export function menuAdd(params: Record) { + return request.post({ url: '/system/menu/add', params }) +} + +// 编辑菜单 +export function menuEdit(params: Record) { + return request.post({ url: '/system/menu/edit', params }) +} + +// 菜单删除 +export function menuDelete(params: Record) { + return request.post({ url: '/system/menu/del', params }) +} + +// 菜单删除 +export function menuDetail(params: Record) { + return request.get({ url: '/system/menu/detail', params }) +} diff --git a/src/api/perms/role.ts b/src/api/perms/role.ts new file mode 100644 index 0000000..3225443 --- /dev/null +++ b/src/api/perms/role.ts @@ -0,0 +1,29 @@ +import request from '@/utils/request' + +// 角色列表 +export function roleLists(params: any) { + return request.get({ url: '/system/role/list', params }) +} + +// 角色列表 +export function roleAll(params?: any) { + return request.get({ url: '/system/role/all', params }) +} + +// 角色列表 +export function roleDetail(params: any) { + return request.get({ url: '/system/role/detail', params }) +} + +// 添加角色 +export function roleAdd(params: any) { + return request.post({ url: '/system/role/add', params }) +} +// 编辑角色 +export function roleEdit(params: any) { + return request.post({ url: '/system/role/edit', params }) +} +// 删除角色 +export function roleDelete(params: any) { + return request.post({ url: '/system/role/del', params }) +} diff --git a/src/api/setting/dict.ts b/src/api/setting/dict.ts new file mode 100644 index 0000000..1d5d2a8 --- /dev/null +++ b/src/api/setting/dict.ts @@ -0,0 +1,61 @@ +import request from '@/utils/request' + +// 字典类型列表 +export function dictTypeLists(params?: any) { + return request.get({ url: '/setting/dict/type/list', params }) +} + +// 字典类型列表 +export function dictTypeAll(params?: any) { + return request.get({ url: '/setting/dict/type/all', params }) +} + +// 添加字典类型 +export function dictTypeAdd(params: any) { + return request.post({ url: '/setting/dict/type/add', params }) +} + +// 编辑字典类型 +export function dictTypeEdit(params: any) { + return request.post({ url: '/setting/dict/type/edit', params }) +} + +// 删除字典类型 +export function dictTypeDelete(params: any) { + return request.post({ url: '/setting/dict/type/del', params }) +} + +// 字典数据列表 +export function dictDataLists(params: any) { + return request.get( + { url: '/setting/dict/data/list', params }, + { + ignoreCancelToken: true + } + ) +} + +// 字典数据列表 +export function dictDataAll(params: any) { + return request.get( + { url: '/setting/dict/data/all', params }, + { + ignoreCancelToken: true + } + ) +} + +// 添加字典数据 +export function dictDataAdd(params: any) { + return request.post({ url: '/setting/dict/data/add', params }) +} + +// 编辑字典数据 +export function dictDataEdit(params: any) { + return request.post({ url: '/setting/dict/data/edit', params }) +} + +// 删除字典数据 +export function dictDataDelete(params: any) { + return request.post({ url: '/setting/dict/data/del', params }) +} diff --git a/src/api/setting/storage.ts b/src/api/setting/storage.ts new file mode 100644 index 0000000..268d254 --- /dev/null +++ b/src/api/setting/storage.ts @@ -0,0 +1,21 @@ +import request from '@/utils/request' + +// 获取存储引擎列表 +export function storageLists() { + return request.get({ url: '/setting/storage/list' }) +} + +// 设置存储引擎信息 +export function storageChange(params: any) { + return request.post({ url: '/setting/storage/change', params }) +} + +// 设置存储引擎信息 +export function storageSetup(params: any) { + return request.post({ url: '/setting/storage/edit', params }) +} + +// 获取存储配置信息 +export function storageDetail(params: any) { + return request.get({ url: '/setting/storage/detail', params }) +} diff --git a/src/api/setting/system.ts b/src/api/setting/system.ts new file mode 100644 index 0000000..f9bcf8f --- /dev/null +++ b/src/api/setting/system.ts @@ -0,0 +1,38 @@ +import request from '@/utils/request' + +// 获取系统环境 +export function systemInfo() { + return request.get({ url: '/monitor/server' }) +} + +// 获取系统日志列表 +export function systemLogLists(params: any) { + return request.get({ url: '/system/log/operate', params }) +} + +// 系统缓存监控 +export function systemCache() { + return request.get({ url: '/monitor/cache' }) +} + +// 定时任务列表 +export const apiCrontabLists = () => request.get({ url: '/crontab/list' }) + +// 添加定时任务 +export const apiCrontabAdd = (params: any) => request.post({ url: '/crontab/add', params }) + +// 查看详情 +export const apiCrontabDetail = (params: any) => request.get({ url: '/crontab/detail', params }) + +// 编辑定时任务 +export const apiCrontabEdit = (params: any) => request.post({ url: '/crontab/edit', params }) + +// 删除定时任务 +export const apiCrontabDel = (params: any) => request.post({ url: '/crontab/del', params }) + +// 获取规则执行时间 +export const apiCrontabExpression = (params: any) => + request.get({ url: '/crontab/expression', params }) + +// 操作定时任务 +export const apiSrontabOperate = (params: any) => request.post({ url: '/crontab/operate', params }) diff --git a/src/api/setting/user.ts b/src/api/setting/user.ts new file mode 100644 index 0000000..880d70f --- /dev/null +++ b/src/api/setting/user.ts @@ -0,0 +1,43 @@ +import request from '@/utils/request' + +/** + * @return { Promise } + * @description 获取用户设置 + */ +export function getUserSetup() { + return request.get({ url: '/setting/user/detail' }) +} + +/** + * @return { Promise } + * @param { string } defaultAvatar 默认用户头像 + * @description 设置用户设置 + */ +export function setUserSetup(params: { defaultAvatar: string }) { + return request.post({ url: '/setting/user/save', params }) +} + +/** + * @return { Promise } + * @description 设置登录注册规则 + */ +export function getLogin() { + return request.get({ url: '/setting/login/detail' }) +} + +export interface LoginSetup { + loginWay: number[] | any // 登录方式, 逗号隔开 + forceBindMobile: number // 强制绑定手机 0/1 + openAgreement: number // 是否开启协议 0/1 + openOtherAuth: number // 第三方登录 0/1 + autoLoginAuth: number[] | any // 第三方自动登录 逗号隔开 + tokenValidity: number +} +/** + * @return { Promise } + * @param { LoginSetup } LoginSetup + * @description 设置登录注册规则 + */ +export function setLogin(params: LoginSetup) { + return request.post({ url: '/setting/login/save', params }) +} diff --git a/src/api/setting/website.ts b/src/api/setting/website.ts new file mode 100644 index 0000000..294575b --- /dev/null +++ b/src/api/setting/website.ts @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +// 获取备案信息 +export function getCopyright() { + return request.get({ url: '/setting/copyright/detail' }) +} +// 设置备案信息 +export function setCopyright(params: any) { + return request.post({ url: '/setting/copyright/save', params }) +} +// 获取网站信息 +export function getWebsite() { + return request.get({ url: '/setting/website/detail' }) +} +// 设置网站信息 +export function setWebsite(params: any) { + return request.post({ url: '/setting/website/save', params }) +} + +// 获取政策协议 +export function getProtocol() { + return request.get({ url: '/setting/protocol/detail' }) +} +// 设置政策协议 +export function setProtocol(params: any) { + return request.post({ url: '/setting/protocol/save', params }) +} diff --git a/src/api/shop.ts b/src/api/shop.ts new file mode 100644 index 0000000..78208e5 --- /dev/null +++ b/src/api/shop.ts @@ -0,0 +1,28 @@ +import request from '@/utils/request' + +//首页数据 +export function getIndex() { + return request.get({ url: '/index' }) +} + +// 装修页面 +export function getDecorate(data: any) { + return request.get({ url: '/decorate', data }) +} + +/** + * @description 热门搜索 + * @return { Promise } + */ +export function getHotSearch() { + return request.get({ url: '/hotSearch' }) +} + +/** + * @description 搜索 + * @param { string } keyword 关键词 + * @return { Promise } + */ +export function getSearch(data: { keyword: string; pageNo: number; pageSize: number }) { + return request.get({ url: '/search', data }) +} diff --git a/src/api/tools/code.ts b/src/api/tools/code.ts new file mode 100644 index 0000000..980ead5 --- /dev/null +++ b/src/api/tools/code.ts @@ -0,0 +1,66 @@ +import request from '@/utils/request' + +// 代码生成已选数据表列表接口 +export function generateTable(params: any) { + return request.get({ url: '/gen/list', params }) +} + +// 数据表列表接口 +export function dataTable(params: any) { + return request.get({ url: '/gen/db', params }) +} + +//选择要生成代码的数据表 +export function selectTable(params: any) { + return request.post( + { url: '/gen/importTable', params }, + { + isParamsToData: false + } + ) +} + +// 已选择的数据表详情 +export function tableDetail(params: any) { + return request.get({ url: '/gen/detail', params }) +} + +//同步字段 +export function syncColumn(params: any) { + return request.post( + { url: '/gen/syncTable', params }, + { + isParamsToData: false + } + ) +} + +//删除已选择的数据表 +export function generateDelete(params: any) { + return request.post({ url: '/gen/delTable', params }) +} + +//编辑已选表字段 +export function generateEdit(params: any) { + return request.post({ url: '/gen/editTable', params }) +} + +//预览代码 +export function generatePreview(params: any) { + return request.get({ url: '/gen/previewCode', params }) +} + +//生成代码 +export function generateCode(params: any) { + return request.get({ url: '/gen/genCode', params }) +} + +//下载代码 +export function downloadCode(params: any) { + return request.get( + { responseType: 'blob', url: '/gen/downloadCode', params }, + { + isTransformResponse: false + } + ) +} diff --git a/src/api/user.ts b/src/api/user.ts new file mode 100644 index 0000000..6ef3734 --- /dev/null +++ b/src/api/user.ts @@ -0,0 +1,58 @@ +import config from '@/config' +import request from '@/utils/request' + +// 登录 +export function login(params: Record) { + return request.post({ + url: '/system/login', + params: { ...params, terminal: config.terminal } + }) +} + +// 退出登录 +export function logout() { + return request.post({ url: '/system/logout' }) +} + +// 用户信息 +export function getUserInfo() { + return request.get({ url: '/system/admin/self' }) +} + +// 菜单路由 +export function getMenu() { + return request.get({ url: '/system/menu/route' }) +} + +// 编辑管理员信息 +export function setUserInfo(params: any) { + return request.post({ url: '/system/admin/upInfo', params }) +} + +// 用户列表 +export function apiUserLists(params: any) { + return request.get({ url: '/user/list', params }) +} + +// 设置用户信息 +export function apiSetUserInfo(params: { + id: number | string + field: string + value: string | number +}) { + return request.post({ url: '/user/edit', params }) +} + +// 用户详情 +export function apiUserDetail(params: any) { + return request.get({ url: '/user/detail', params }) +} + +// 调整余额 +export function adjustUserWallet(params: any) { + return request.post({ url: '/user/adjustWallet', params }) +} +// 用户退款配置列表 +export function apiUserRefundList(params: any) { + return request.get({ url: '/goods/cancelOrderConfig/list', params }) +} diff --git a/src/assets/font/AlimamaAgileVF-Thin.ttf b/src/assets/font/AlimamaAgileVF-Thin.ttf new file mode 100644 index 0000000..40d3764 Binary files /dev/null and b/src/assets/font/AlimamaAgileVF-Thin.ttf differ diff --git a/src/assets/icons/Androidfanhui.svg b/src/assets/icons/Androidfanhui.svg new file mode 100644 index 0000000..e9ada24 --- /dev/null +++ b/src/assets/icons/Androidfanhui.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/KMSguanli.svg b/src/assets/icons/KMSguanli.svg new file mode 100644 index 0000000..7c65298 --- /dev/null +++ b/src/assets/icons/KMSguanli.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/KTVyuding.svg b/src/assets/icons/KTVyuding.svg new file mode 100644 index 0000000..8187b5f --- /dev/null +++ b/src/assets/icons/KTVyuding.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/a-tixingdengpao.svg b/src/assets/icons/a-tixingdengpao.svg new file mode 100644 index 0000000..7074ae7 --- /dev/null +++ b/src/assets/icons/a-tixingdengpao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/anquan.svg b/src/assets/icons/anquan.svg new file mode 100644 index 0000000..bf90259 --- /dev/null +++ b/src/assets/icons/anquan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/anquan_mian.svg b/src/assets/icons/anquan_mian.svg new file mode 100644 index 0000000..f3486b5 --- /dev/null +++ b/src/assets/icons/anquan_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/anquan_mian1.svg b/src/assets/icons/anquan_mian1.svg new file mode 100644 index 0000000..f3486b5 --- /dev/null +++ b/src/assets/icons/anquan_mian1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/banxing_mian.svg b/src/assets/icons/banxing_mian.svg new file mode 100644 index 0000000..3cb468f --- /dev/null +++ b/src/assets/icons/banxing_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/baoxian.svg b/src/assets/icons/baoxian.svg new file mode 100644 index 0000000..9885e88 --- /dev/null +++ b/src/assets/icons/baoxian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/bendishenghuodaxue.svg b/src/assets/icons/bendishenghuodaxue.svg new file mode 100644 index 0000000..4754e16 --- /dev/null +++ b/src/assets/icons/bendishenghuodaxue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/bianji.svg b/src/assets/icons/bianji.svg new file mode 100644 index 0000000..c8674e7 --- /dev/null +++ b/src/assets/icons/bianji.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/biaoqing.svg b/src/assets/icons/biaoqing.svg new file mode 100644 index 0000000..fcc84fb --- /dev/null +++ b/src/assets/icons/biaoqing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/bukejian.svg b/src/assets/icons/bukejian.svg new file mode 100644 index 0000000..c79cd78 --- /dev/null +++ b/src/assets/icons/bukejian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/caipinguanli.svg b/src/assets/icons/caipinguanli.svg new file mode 100644 index 0000000..3b1fc28 --- /dev/null +++ b/src/assets/icons/caipinguanli.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/caiwu.svg b/src/assets/icons/caiwu.svg new file mode 100644 index 0000000..e3e92f4 --- /dev/null +++ b/src/assets/icons/caiwu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/caiwu_jifen.svg b/src/assets/icons/caiwu_jifen.svg new file mode 100644 index 0000000..07d01df --- /dev/null +++ b/src/assets/icons/caiwu_jifen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/caiwu_tixian.svg b/src/assets/icons/caiwu_tixian.svg new file mode 100644 index 0000000..982ac58 --- /dev/null +++ b/src/assets/icons/caiwu_tixian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/canyinfuwu.svg b/src/assets/icons/canyinfuwu.svg new file mode 100644 index 0000000..5d87395 --- /dev/null +++ b/src/assets/icons/canyinfuwu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/carryout.svg b/src/assets/icons/carryout.svg new file mode 100644 index 0000000..4a06640 --- /dev/null +++ b/src/assets/icons/carryout.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/chexiao.svg b/src/assets/icons/chexiao.svg new file mode 100644 index 0000000..b9e6e5d --- /dev/null +++ b/src/assets/icons/chexiao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/chihuohongbao.svg b/src/assets/icons/chihuohongbao.svg new file mode 100644 index 0000000..bb1fb66 --- /dev/null +++ b/src/assets/icons/chihuohongbao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/chuangyiwuliao.svg b/src/assets/icons/chuangyiwuliao.svg new file mode 100644 index 0000000..045057d --- /dev/null +++ b/src/assets/icons/chuangyiwuliao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/close.svg b/src/assets/icons/close.svg new file mode 100644 index 0000000..54f3e08 --- /dev/null +++ b/src/assets/icons/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/daiyunying.svg b/src/assets/icons/daiyunying.svg new file mode 100644 index 0000000..dc1c7c5 --- /dev/null +++ b/src/assets/icons/daiyunying.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/danwei.svg b/src/assets/icons/danwei.svg new file mode 100644 index 0000000..ba527e8 --- /dev/null +++ b/src/assets/icons/danwei.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/danxuankuang.svg b/src/assets/icons/danxuankuang.svg new file mode 100644 index 0000000..2ef171c --- /dev/null +++ b/src/assets/icons/danxuankuang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/danxuanxuanzhong.svg b/src/assets/icons/danxuanxuanzhong.svg new file mode 100644 index 0000000..c7f230c --- /dev/null +++ b/src/assets/icons/danxuanxuanzhong.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dayin.svg b/src/assets/icons/dayin.svg new file mode 100644 index 0000000..0d2291d --- /dev/null +++ b/src/assets/icons/dayin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dayin_mian.svg b/src/assets/icons/dayin_mian.svg new file mode 100644 index 0000000..7989ff6 --- /dev/null +++ b/src/assets/icons/dayin_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/del.svg b/src/assets/icons/del.svg new file mode 100644 index 0000000..f938140 --- /dev/null +++ b/src/assets/icons/del.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/diancanshezhi.svg b/src/assets/icons/diancanshezhi.svg new file mode 100644 index 0000000..8723cbf --- /dev/null +++ b/src/assets/icons/diancanshezhi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dianhua.svg b/src/assets/icons/dianhua.svg new file mode 100644 index 0000000..be006a9 --- /dev/null +++ b/src/assets/icons/dianhua.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dianhua_mian.svg b/src/assets/icons/dianhua_mian.svg new file mode 100644 index 0000000..5554077 --- /dev/null +++ b/src/assets/icons/dianhua_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dianpu_fengge.svg b/src/assets/icons/dianpu_fengge.svg new file mode 100644 index 0000000..a7dc3e1 --- /dev/null +++ b/src/assets/icons/dianpu_fengge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dianputuijian.svg b/src/assets/icons/dianputuijian.svg new file mode 100644 index 0000000..0e8a4c8 --- /dev/null +++ b/src/assets/icons/dianputuijian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dianzifapiao.svg b/src/assets/icons/dianzifapiao.svg new file mode 100644 index 0000000..b2db463 --- /dev/null +++ b/src/assets/icons/dianzifapiao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dingcan.svg b/src/assets/icons/dingcan.svg new file mode 100644 index 0000000..46d4e95 --- /dev/null +++ b/src/assets/icons/dingcan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dingdan.svg b/src/assets/icons/dingdan.svg new file mode 100644 index 0000000..e5b35a9 --- /dev/null +++ b/src/assets/icons/dingdan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dingdan1.svg b/src/assets/icons/dingdan1.svg new file mode 100644 index 0000000..5330a6a --- /dev/null +++ b/src/assets/icons/dingdan1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dingdan_mian.svg b/src/assets/icons/dingdan_mian.svg new file mode 100644 index 0000000..0929276 --- /dev/null +++ b/src/assets/icons/dingdan_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dingwei.svg b/src/assets/icons/dingwei.svg new file mode 100644 index 0000000..ef573a7 --- /dev/null +++ b/src/assets/icons/dingwei.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/dingwei_mian.svg b/src/assets/icons/dingwei_mian.svg new file mode 100644 index 0000000..8c86674 --- /dev/null +++ b/src/assets/icons/dingwei_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ditu.svg b/src/assets/icons/ditu.svg new file mode 100644 index 0000000..6b5e5f2 --- /dev/null +++ b/src/assets/icons/ditu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ditu_mian.svg b/src/assets/icons/ditu_mian.svg new file mode 100644 index 0000000..bb542bf --- /dev/null +++ b/src/assets/icons/ditu_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/duizhang.svg b/src/assets/icons/duizhang.svg new file mode 100644 index 0000000..f63d6df --- /dev/null +++ b/src/assets/icons/duizhang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/elemo.svg b/src/assets/icons/elemo.svg new file mode 100644 index 0000000..c1d5388 --- /dev/null +++ b/src/assets/icons/elemo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ezhanggui.svg b/src/assets/icons/ezhanggui.svg new file mode 100644 index 0000000..cd50b0b --- /dev/null +++ b/src/assets/icons/ezhanggui.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/falvfuwubaoxiaohei.svg b/src/assets/icons/falvfuwubaoxiaohei.svg new file mode 100644 index 0000000..27ea856 --- /dev/null +++ b/src/assets/icons/falvfuwubaoxiaohei.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fengniaopaotui.svg b/src/assets/icons/fengniaopaotui.svg new file mode 100644 index 0000000..3f5f7b1 --- /dev/null +++ b/src/assets/icons/fengniaopaotui.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fenxiang.svg b/src/assets/icons/fenxiang.svg new file mode 100644 index 0000000..e4eb7cc --- /dev/null +++ b/src/assets/icons/fenxiang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fukuan.svg b/src/assets/icons/fukuan.svg new file mode 100644 index 0000000..939c745 --- /dev/null +++ b/src/assets/icons/fukuan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fukuan_mian.svg b/src/assets/icons/fukuan_mian.svg new file mode 100644 index 0000000..ba094cc --- /dev/null +++ b/src/assets/icons/fukuan_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fullscreen-exit.svg b/src/assets/icons/fullscreen-exit.svg new file mode 100644 index 0000000..e845a79 --- /dev/null +++ b/src/assets/icons/fullscreen-exit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fullscreen.svg b/src/assets/icons/fullscreen.svg new file mode 100644 index 0000000..516e890 --- /dev/null +++ b/src/assets/icons/fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fuwushichang.svg b/src/assets/icons/fuwushichang.svg new file mode 100644 index 0000000..2564370 --- /dev/null +++ b/src/assets/icons/fuwushichang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/fuzhi.svg b/src/assets/icons/fuzhi.svg new file mode 100644 index 0000000..659c6e0 --- /dev/null +++ b/src/assets/icons/fuzhi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gaode.svg b/src/assets/icons/gaode.svg new file mode 100644 index 0000000..8d26343 --- /dev/null +++ b/src/assets/icons/gaode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gengduo.svg b/src/assets/icons/gengduo.svg new file mode 100644 index 0000000..2956729 --- /dev/null +++ b/src/assets/icons/gengduo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gengduoandroid.svg b/src/assets/icons/gengduoandroid.svg new file mode 100644 index 0000000..ecde71b --- /dev/null +++ b/src/assets/icons/gengduoandroid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gift.svg b/src/assets/icons/gift.svg new file mode 100644 index 0000000..add9ce8 --- /dev/null +++ b/src/assets/icons/gift.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gongyingshang.svg b/src/assets/icons/gongyingshang.svg new file mode 100644 index 0000000..9426995 --- /dev/null +++ b/src/assets/icons/gongyingshang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/goods.svg b/src/assets/icons/goods.svg new file mode 100644 index 0000000..b80fbed --- /dev/null +++ b/src/assets/icons/goods.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gou.svg b/src/assets/icons/gou.svg new file mode 100644 index 0000000..6354197 --- /dev/null +++ b/src/assets/icons/gou.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gouwuche.svg b/src/assets/icons/gouwuche.svg new file mode 100644 index 0000000..6e76f7d --- /dev/null +++ b/src/assets/icons/gouwuche.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gouxuan.svg b/src/assets/icons/gouxuan.svg new file mode 100644 index 0000000..8fe88a6 --- /dev/null +++ b/src/assets/icons/gouxuan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gouxuan_mian.svg b/src/assets/icons/gouxuan_mian.svg new file mode 100644 index 0000000..375972b --- /dev/null +++ b/src/assets/icons/gouxuan_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/guanbi.svg b/src/assets/icons/guanbi.svg new file mode 100644 index 0000000..831bd0e --- /dev/null +++ b/src/assets/icons/guanbi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/guanli.svg b/src/assets/icons/guanli.svg new file mode 100644 index 0000000..4848092 --- /dev/null +++ b/src/assets/icons/guanli.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/guanli_mian.svg b/src/assets/icons/guanli_mian.svg new file mode 100644 index 0000000..db46ff1 --- /dev/null +++ b/src/assets/icons/guanli_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/gukefapiao.svg b/src/assets/icons/gukefapiao.svg new file mode 100644 index 0000000..341b686 --- /dev/null +++ b/src/assets/icons/gukefapiao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/haibaosheji.svg b/src/assets/icons/haibaosheji.svg new file mode 100644 index 0000000..f875157 --- /dev/null +++ b/src/assets/icons/haibaosheji.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/heshoujilu.svg b/src/assets/icons/heshoujilu.svg new file mode 100644 index 0000000..cd25273 --- /dev/null +++ b/src/assets/icons/heshoujilu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/heshoujilu1.svg b/src/assets/icons/heshoujilu1.svg new file mode 100644 index 0000000..f8d1bd4 --- /dev/null +++ b/src/assets/icons/heshoujilu1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/hexiao_order.svg b/src/assets/icons/hexiao_order.svg new file mode 100644 index 0000000..f1c4034 --- /dev/null +++ b/src/assets/icons/hexiao_order.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/hide-2.svg b/src/assets/icons/hide-2.svg new file mode 100644 index 0000000..8c74146 --- /dev/null +++ b/src/assets/icons/hide-2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/hide.svg b/src/assets/icons/hide.svg new file mode 100644 index 0000000..5cbbabd --- /dev/null +++ b/src/assets/icons/hide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/hongbao.svg b/src/assets/icons/hongbao.svg new file mode 100644 index 0000000..9d331b5 --- /dev/null +++ b/src/assets/icons/hongbao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/huiche.svg b/src/assets/icons/huiche.svg new file mode 100644 index 0000000..5022718 --- /dev/null +++ b/src/assets/icons/huiche.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/huiyuanyingxiao.svg b/src/assets/icons/huiyuanyingxiao.svg new file mode 100644 index 0000000..ae06769 --- /dev/null +++ b/src/assets/icons/huiyuanyingxiao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/huodongbaoming.svg b/src/assets/icons/huodongbaoming.svg new file mode 100644 index 0000000..0c60672 --- /dev/null +++ b/src/assets/icons/huodongbaoming.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/huodongguanli.svg b/src/assets/icons/huodongguanli.svg new file mode 100644 index 0000000..def7109 --- /dev/null +++ b/src/assets/icons/huodongguanli.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/huodongzhongxin.svg b/src/assets/icons/huodongzhongxin.svg new file mode 100644 index 0000000..f22bb26 --- /dev/null +++ b/src/assets/icons/huodongzhongxin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/huojian.svg b/src/assets/icons/huojian.svg new file mode 100644 index 0000000..f439dd8 --- /dev/null +++ b/src/assets/icons/huojian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/huojian_mian.svg b/src/assets/icons/huojian_mian.svg new file mode 100644 index 0000000..812d3be --- /dev/null +++ b/src/assets/icons/huojian_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/huolala.svg b/src/assets/icons/huolala.svg new file mode 100644 index 0000000..a42ade7 --- /dev/null +++ b/src/assets/icons/huolala.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/iOSfanhui.svg b/src/assets/icons/iOSfanhui.svg new file mode 100644 index 0000000..8aeefbb --- /dev/null +++ b/src/assets/icons/iOSfanhui.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jia.svg b/src/assets/icons/jia.svg new file mode 100644 index 0000000..18fbd45 --- /dev/null +++ b/src/assets/icons/jia.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jia_mian.svg b/src/assets/icons/jia_mian.svg new file mode 100644 index 0000000..5899c91 --- /dev/null +++ b/src/assets/icons/jia_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jian.svg b/src/assets/icons/jian.svg new file mode 100644 index 0000000..295037f --- /dev/null +++ b/src/assets/icons/jian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jian_mian.svg b/src/assets/icons/jian_mian.svg new file mode 100644 index 0000000..e9dfa91 --- /dev/null +++ b/src/assets/icons/jian_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jianpan.svg b/src/assets/icons/jianpan.svg new file mode 100644 index 0000000..5a7dcb9 --- /dev/null +++ b/src/assets/icons/jianpan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jianpanshanchu.svg b/src/assets/icons/jianpanshanchu.svg new file mode 100644 index 0000000..a5a5de1 --- /dev/null +++ b/src/assets/icons/jianpanshanchu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jianshao.svg b/src/assets/icons/jianshao.svg new file mode 100644 index 0000000..0a4d919 --- /dev/null +++ b/src/assets/icons/jianshao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jiaopeiwangputong.svg b/src/assets/icons/jiaopeiwangputong.svg new file mode 100644 index 0000000..ec73071 --- /dev/null +++ b/src/assets/icons/jiaopeiwangputong.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jiaoyi.svg b/src/assets/icons/jiaoyi.svg new file mode 100644 index 0000000..1396bac --- /dev/null +++ b/src/assets/icons/jiaoyi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jiedan.svg b/src/assets/icons/jiedan.svg new file mode 100644 index 0000000..fcbe7a1 --- /dev/null +++ b/src/assets/icons/jiedan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jiekuan.svg b/src/assets/icons/jiekuan.svg new file mode 100644 index 0000000..4b7377f --- /dev/null +++ b/src/assets/icons/jiekuan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jingshi.svg b/src/assets/icons/jingshi.svg new file mode 100644 index 0000000..3cecfc7 --- /dev/null +++ b/src/assets/icons/jingshi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jingshi_mian.svg b/src/assets/icons/jingshi_mian.svg new file mode 100644 index 0000000..fe636ee --- /dev/null +++ b/src/assets/icons/jingshi_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jingshi_mian1.svg b/src/assets/icons/jingshi_mian1.svg new file mode 100644 index 0000000..fe636ee --- /dev/null +++ b/src/assets/icons/jingshi_mian1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jingyin.svg b/src/assets/icons/jingyin.svg new file mode 100644 index 0000000..753f254 --- /dev/null +++ b/src/assets/icons/jingyin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jingyin_mian.svg b/src/assets/icons/jingyin_mian.svg new file mode 100644 index 0000000..ce56e68 --- /dev/null +++ b/src/assets/icons/jingyin_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jingying.svg b/src/assets/icons/jingying.svg new file mode 100644 index 0000000..5630813 --- /dev/null +++ b/src/assets/icons/jingying.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jingying_mian.svg b/src/assets/icons/jingying_mian.svg new file mode 100644 index 0000000..4e7ca35 --- /dev/null +++ b/src/assets/icons/jingying_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jingyinggonglve.svg b/src/assets/icons/jingyinggonglve.svg new file mode 100644 index 0000000..0cd3755 --- /dev/null +++ b/src/assets/icons/jingyinggonglve.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jingzhunyingxiao.svg b/src/assets/icons/jingzhunyingxiao.svg new file mode 100644 index 0000000..781b0bb --- /dev/null +++ b/src/assets/icons/jingzhunyingxiao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/jinhuo.svg b/src/assets/icons/jinhuo.svg new file mode 100644 index 0000000..c5d9214 --- /dev/null +++ b/src/assets/icons/jinhuo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/kaitongwaimai.svg b/src/assets/icons/kaitongwaimai.svg new file mode 100644 index 0000000..a6daad9 --- /dev/null +++ b/src/assets/icons/kaitongwaimai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/kanjia.svg b/src/assets/icons/kanjia.svg new file mode 100644 index 0000000..9f6840b --- /dev/null +++ b/src/assets/icons/kanjia.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/kefu.svg b/src/assets/icons/kefu.svg new file mode 100644 index 0000000..f32cacd --- /dev/null +++ b/src/assets/icons/kefu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/kejian.svg b/src/assets/icons/kejian.svg new file mode 100644 index 0000000..8b89874 --- /dev/null +++ b/src/assets/icons/kejian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/kejian_mian.svg b/src/assets/icons/kejian_mian.svg new file mode 100644 index 0000000..62223b4 --- /dev/null +++ b/src/assets/icons/kejian_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/keziyuyue.svg b/src/assets/icons/keziyuyue.svg new file mode 100644 index 0000000..0d2f1f9 --- /dev/null +++ b/src/assets/icons/keziyuyue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/kezizhongxin.svg b/src/assets/icons/kezizhongxin.svg new file mode 100644 index 0000000..7fbcc6c --- /dev/null +++ b/src/assets/icons/kezizhongxin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/koubei.svg b/src/assets/icons/koubei.svg new file mode 100644 index 0000000..a744077 --- /dev/null +++ b/src/assets/icons/koubei.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/kuaijiehuifu.svg b/src/assets/icons/kuaijiehuifu.svg new file mode 100644 index 0000000..72aa5c5 --- /dev/null +++ b/src/assets/icons/kuaijiehuifu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/ladu_mian.svg b/src/assets/icons/ladu_mian.svg new file mode 100644 index 0000000..a40816c --- /dev/null +++ b/src/assets/icons/ladu_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/lanyadingwei.svg b/src/assets/icons/lanyadingwei.svg new file mode 100644 index 0000000..205653f --- /dev/null +++ b/src/assets/icons/lanyadingwei.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/list-2.svg b/src/assets/icons/list-2.svg new file mode 100644 index 0000000..1f471f3 --- /dev/null +++ b/src/assets/icons/list-2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/mendiandongtai.svg b/src/assets/icons/mendiandongtai.svg new file mode 100644 index 0000000..7a7b415 --- /dev/null +++ b/src/assets/icons/mendiandongtai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/mishiyuding.svg b/src/assets/icons/mishiyuding.svg new file mode 100644 index 0000000..b856afa --- /dev/null +++ b/src/assets/icons/mishiyuding.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/mishiyuding1.svg b/src/assets/icons/mishiyuding1.svg new file mode 100644 index 0000000..7ac9101 --- /dev/null +++ b/src/assets/icons/mishiyuding1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/notice_buyer.svg b/src/assets/icons/notice_buyer.svg new file mode 100644 index 0000000..bab1997 --- /dev/null +++ b/src/assets/icons/notice_buyer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/open.svg b/src/assets/icons/open.svg new file mode 100644 index 0000000..3cbd08c --- /dev/null +++ b/src/assets/icons/open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/paiduiquhao.svg b/src/assets/icons/paiduiquhao.svg new file mode 100644 index 0000000..fb7abc9 --- /dev/null +++ b/src/assets/icons/paiduiquhao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/paimai.svg b/src/assets/icons/paimai.svg new file mode 100644 index 0000000..0139a69 --- /dev/null +++ b/src/assets/icons/paimai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/pdf.svg b/src/assets/icons/pdf.svg new file mode 100644 index 0000000..512cce0 --- /dev/null +++ b/src/assets/icons/pdf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/pingjia.svg b/src/assets/icons/pingjia.svg new file mode 100644 index 0000000..9b39672 --- /dev/null +++ b/src/assets/icons/pingjia.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/pingtaifapiao.svg b/src/assets/icons/pingtaifapiao.svg new file mode 100644 index 0000000..b6b3315 --- /dev/null +++ b/src/assets/icons/pingtaifapiao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/pinpai.svg b/src/assets/icons/pinpai.svg new file mode 100644 index 0000000..f4b129c --- /dev/null +++ b/src/assets/icons/pinpai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qianbao.svg b/src/assets/icons/qianbao.svg new file mode 100644 index 0000000..f384250 --- /dev/null +++ b/src/assets/icons/qianbao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qianbao_mian.svg b/src/assets/icons/qianbao_mian.svg new file mode 100644 index 0000000..897f029 --- /dev/null +++ b/src/assets/icons/qianbao_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qiehuan.svg b/src/assets/icons/qiehuan.svg new file mode 100644 index 0000000..37e0a94 --- /dev/null +++ b/src/assets/icons/qiehuan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qingchu.svg b/src/assets/icons/qingchu.svg new file mode 100644 index 0000000..dc898ac --- /dev/null +++ b/src/assets/icons/qingchu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qingchu_mian.svg b/src/assets/icons/qingchu_mian.svg new file mode 100644 index 0000000..94ecaa2 --- /dev/null +++ b/src/assets/icons/qingchu_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qishoupeisong.svg b/src/assets/icons/qishoupeisong.svg new file mode 100644 index 0000000..9adc068 --- /dev/null +++ b/src/assets/icons/qishoupeisong.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qiyedingcan.svg b/src/assets/icons/qiyedingcan.svg new file mode 100644 index 0000000..147c9e2 --- /dev/null +++ b/src/assets/icons/qiyedingcan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qiyedingcan1.svg b/src/assets/icons/qiyedingcan1.svg new file mode 100644 index 0000000..a3c3277 --- /dev/null +++ b/src/assets/icons/qiyedingcan1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/quanbu.svg b/src/assets/icons/quanbu.svg new file mode 100644 index 0000000..db088f5 --- /dev/null +++ b/src/assets/icons/quanbu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/quanping.svg b/src/assets/icons/quanping.svg new file mode 100644 index 0000000..0a5cfbe --- /dev/null +++ b/src/assets/icons/quanping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qudao.svg b/src/assets/icons/qudao.svg new file mode 100644 index 0000000..e0fbf39 --- /dev/null +++ b/src/assets/icons/qudao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/qudao_xiaochengxu.svg b/src/assets/icons/qudao_xiaochengxu.svg new file mode 100644 index 0000000..54af407 --- /dev/null +++ b/src/assets/icons/qudao_xiaochengxu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/rencaizhaopin.svg b/src/assets/icons/rencaizhaopin.svg new file mode 100644 index 0000000..6113e53 --- /dev/null +++ b/src/assets/icons/rencaizhaopin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/rili.svg b/src/assets/icons/rili.svg new file mode 100644 index 0000000..5d751bf --- /dev/null +++ b/src/assets/icons/rili.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/rili2.svg b/src/assets/icons/rili2.svg new file mode 100644 index 0000000..ba2d55d --- /dev/null +++ b/src/assets/icons/rili2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/rizhi.svg b/src/assets/icons/rizhi.svg new file mode 100644 index 0000000..bfdf2b0 --- /dev/null +++ b/src/assets/icons/rizhi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/saoma.svg b/src/assets/icons/saoma.svg new file mode 100644 index 0000000..260981d --- /dev/null +++ b/src/assets/icons/saoma.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/set_pay.svg b/src/assets/icons/set_pay.svg new file mode 100644 index 0000000..639bb8e --- /dev/null +++ b/src/assets/icons/set_pay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/set_peisong.svg b/src/assets/icons/set_peisong.svg new file mode 100644 index 0000000..a87ca69 --- /dev/null +++ b/src/assets/icons/set_peisong.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/set_user.svg b/src/assets/icons/set_user.svg new file mode 100644 index 0000000..800baf5 --- /dev/null +++ b/src/assets/icons/set_user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/set_weihu.svg b/src/assets/icons/set_weihu.svg new file mode 100644 index 0000000..e6765f1 --- /dev/null +++ b/src/assets/icons/set_weihu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shanchu.svg b/src/assets/icons/shanchu.svg new file mode 100644 index 0000000..9655138 --- /dev/null +++ b/src/assets/icons/shanchu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shanchu_mian.svg b/src/assets/icons/shanchu_mian.svg new file mode 100644 index 0000000..17ffa4e --- /dev/null +++ b/src/assets/icons/shanchu_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shangchuan.svg b/src/assets/icons/shangchuan.svg new file mode 100644 index 0000000..f2d1a01 --- /dev/null +++ b/src/assets/icons/shangchuan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shangchuanzhaopian.svg b/src/assets/icons/shangchuanzhaopian.svg new file mode 100644 index 0000000..5e90e91 --- /dev/null +++ b/src/assets/icons/shangchuanzhaopian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shangpinguanli.svg b/src/assets/icons/shangpinguanli.svg new file mode 100644 index 0000000..c15f1a1 --- /dev/null +++ b/src/assets/icons/shangpinguanli.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shangpinzhushou.svg b/src/assets/icons/shangpinzhushou.svg new file mode 100644 index 0000000..9972561 --- /dev/null +++ b/src/assets/icons/shangpinzhushou.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shangpuyuding.svg b/src/assets/icons/shangpuyuding.svg new file mode 100644 index 0000000..4250f00 --- /dev/null +++ b/src/assets/icons/shangpuyuding.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shebeiguanli.svg b/src/assets/icons/shebeiguanli.svg new file mode 100644 index 0000000..1ca4ef0 --- /dev/null +++ b/src/assets/icons/shebeiguanli.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shengfuwangputong.svg b/src/assets/icons/shengfuwangputong.svg new file mode 100644 index 0000000..467b687 --- /dev/null +++ b/src/assets/icons/shengfuwangputong.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shengyin.svg b/src/assets/icons/shengyin.svg new file mode 100644 index 0000000..9b1d63b --- /dev/null +++ b/src/assets/icons/shengyin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shengyin_mian.svg b/src/assets/icons/shengyin_mian.svg new file mode 100644 index 0000000..00c76a7 --- /dev/null +++ b/src/assets/icons/shengyin_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shezhi.svg b/src/assets/icons/shezhi.svg new file mode 100644 index 0000000..785b60f --- /dev/null +++ b/src/assets/icons/shezhi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shezhi_mian.svg b/src/assets/icons/shezhi_mian.svg new file mode 100644 index 0000000..0bdc106 --- /dev/null +++ b/src/assets/icons/shezhi_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shichang.svg b/src/assets/icons/shichang.svg new file mode 100644 index 0000000..d5d5d88 --- /dev/null +++ b/src/assets/icons/shichang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shichang_mian.svg b/src/assets/icons/shichang_mian.svg new file mode 100644 index 0000000..083b301 --- /dev/null +++ b/src/assets/icons/shichang_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shijian.svg b/src/assets/icons/shijian.svg new file mode 100644 index 0000000..9ad8b2e --- /dev/null +++ b/src/assets/icons/shijian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shijian_mian.svg b/src/assets/icons/shijian_mian.svg new file mode 100644 index 0000000..6c00d41 --- /dev/null +++ b/src/assets/icons/shijian_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shoudan.svg b/src/assets/icons/shoudan.svg new file mode 100644 index 0000000..9967dd8 --- /dev/null +++ b/src/assets/icons/shoudan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shouqi.svg b/src/assets/icons/shouqi.svg new file mode 100644 index 0000000..e8386f1 --- /dev/null +++ b/src/assets/icons/shouqi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shouqi_mian.svg b/src/assets/icons/shouqi_mian.svg new file mode 100644 index 0000000..b022d4c --- /dev/null +++ b/src/assets/icons/shouqi_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shouye.svg b/src/assets/icons/shouye.svg new file mode 100644 index 0000000..288b24f --- /dev/null +++ b/src/assets/icons/shouye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shouye_mian.svg b/src/assets/icons/shouye_mian.svg new file mode 100644 index 0000000..d180e9b --- /dev/null +++ b/src/assets/icons/shouye_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shouyiren.svg b/src/assets/icons/shouyiren.svg new file mode 100644 index 0000000..3b409d2 --- /dev/null +++ b/src/assets/icons/shouyiren.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/show.svg b/src/assets/icons/show.svg new file mode 100644 index 0000000..2fdf9b9 --- /dev/null +++ b/src/assets/icons/show.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shuangjiantouxiangyou.svg b/src/assets/icons/shuangjiantouxiangyou.svg new file mode 100644 index 0000000..56c0e61 --- /dev/null +++ b/src/assets/icons/shuangjiantouxiangyou.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shuangjiantouxiangzuo.svg b/src/assets/icons/shuangjiantouxiangzuo.svg new file mode 100644 index 0000000..1a90a69 --- /dev/null +++ b/src/assets/icons/shuangjiantouxiangzuo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shuaxin.svg b/src/assets/icons/shuaxin.svg new file mode 100644 index 0000000..a4686b3 --- /dev/null +++ b/src/assets/icons/shuaxin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shuju.svg b/src/assets/icons/shuju.svg new file mode 100644 index 0000000..8418b76 --- /dev/null +++ b/src/assets/icons/shuju.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shuju2.svg b/src/assets/icons/shuju2.svg new file mode 100644 index 0000000..bea4c25 --- /dev/null +++ b/src/assets/icons/shuju2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shuju_liuliang.svg b/src/assets/icons/shuju_liuliang.svg new file mode 100644 index 0000000..21b048b --- /dev/null +++ b/src/assets/icons/shuju_liuliang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/shuju_mian.svg b/src/assets/icons/shuju_mian.svg new file mode 100644 index 0000000..5da2d78 --- /dev/null +++ b/src/assets/icons/shuju_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sort.svg b/src/assets/icons/sort.svg new file mode 100644 index 0000000..1e760a8 --- /dev/null +++ b/src/assets/icons/sort.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sousuo.svg b/src/assets/icons/sousuo.svg new file mode 100644 index 0000000..2387e0a --- /dev/null +++ b/src/assets/icons/sousuo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sucai.svg b/src/assets/icons/sucai.svg new file mode 100644 index 0000000..23499f8 --- /dev/null +++ b/src/assets/icons/sucai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tianjia.svg b/src/assets/icons/tianjia.svg new file mode 100644 index 0000000..b06fe16 --- /dev/null +++ b/src/assets/icons/tianjia.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tishi.svg b/src/assets/icons/tishi.svg new file mode 100644 index 0000000..e14e118 --- /dev/null +++ b/src/assets/icons/tishi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tishi_mian.svg b/src/assets/icons/tishi_mian.svg new file mode 100644 index 0000000..04334ea --- /dev/null +++ b/src/assets/icons/tishi_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tongxunlu_mian.svg b/src/assets/icons/tongxunlu_mian.svg new file mode 100644 index 0000000..b7c06ab --- /dev/null +++ b/src/assets/icons/tongxunlu_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tongzhi.svg b/src/assets/icons/tongzhi.svg new file mode 100644 index 0000000..a227028 --- /dev/null +++ b/src/assets/icons/tongzhi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tongzhi_mian.svg b/src/assets/icons/tongzhi_mian.svg new file mode 100644 index 0000000..876676f --- /dev/null +++ b/src/assets/icons/tongzhi_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tuichuquanping.svg b/src/assets/icons/tuichuquanping.svg new file mode 100644 index 0000000..3832030 --- /dev/null +++ b/src/assets/icons/tuichuquanping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tuiguang.svg b/src/assets/icons/tuiguang.svg new file mode 100644 index 0000000..7d5bb2d --- /dev/null +++ b/src/assets/icons/tuiguang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tuiguang_mian.svg b/src/assets/icons/tuiguang_mian.svg new file mode 100644 index 0000000..005323a --- /dev/null +++ b/src/assets/icons/tuiguang_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tupian.svg b/src/assets/icons/tupian.svg new file mode 100644 index 0000000..64b511d --- /dev/null +++ b/src/assets/icons/tupian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/tupian_mian.svg b/src/assets/icons/tupian_mian.svg new file mode 100644 index 0000000..0875efd --- /dev/null +++ b/src/assets/icons/tupian_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/user_biaoqian.svg b/src/assets/icons/user_biaoqian.svg new file mode 100644 index 0000000..206fff6 --- /dev/null +++ b/src/assets/icons/user_biaoqian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/user_gaikuang.svg b/src/assets/icons/user_gaikuang.svg new file mode 100644 index 0000000..b4ae10e --- /dev/null +++ b/src/assets/icons/user_gaikuang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/user_guanli.svg b/src/assets/icons/user_guanli.svg new file mode 100644 index 0000000..e00fd79 --- /dev/null +++ b/src/assets/icons/user_guanli.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/wangpudiandan.svg b/src/assets/icons/wangpudiandan.svg new file mode 100644 index 0000000..77cc413 --- /dev/null +++ b/src/assets/icons/wangpudiandan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/weixin.svg b/src/assets/icons/weixin.svg new file mode 100644 index 0000000..f043f12 --- /dev/null +++ b/src/assets/icons/weixin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/weixin_mian.svg b/src/assets/icons/weixin_mian.svg new file mode 100644 index 0000000..5c4e92e --- /dev/null +++ b/src/assets/icons/weixin_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/wode.svg b/src/assets/icons/wode.svg new file mode 100644 index 0000000..4cc5c10 --- /dev/null +++ b/src/assets/icons/wode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/wode_mian.svg b/src/assets/icons/wode_mian.svg new file mode 100644 index 0000000..ea9ebfb --- /dev/null +++ b/src/assets/icons/wode_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xiangji.svg b/src/assets/icons/xiangji.svg new file mode 100644 index 0000000..a9f7b5f --- /dev/null +++ b/src/assets/icons/xiangji.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xiaoxi.svg b/src/assets/icons/xiaoxi.svg new file mode 100644 index 0000000..cf220c8 --- /dev/null +++ b/src/assets/icons/xiaoxi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xiazai.svg b/src/assets/icons/xiazai.svg new file mode 100644 index 0000000..c741576 --- /dev/null +++ b/src/assets/icons/xiazai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xitongquanxian.svg b/src/assets/icons/xitongquanxian.svg new file mode 100644 index 0000000..b34ac74 --- /dev/null +++ b/src/assets/icons/xitongquanxian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yingxiao_qipao.svg b/src/assets/icons/yingxiao_qipao.svg new file mode 100644 index 0000000..238ddf2 --- /dev/null +++ b/src/assets/icons/yingxiao_qipao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yingyezizhi.svg b/src/assets/icons/yingyezizhi.svg new file mode 100644 index 0000000..23ae5be --- /dev/null +++ b/src/assets/icons/yingyezizhi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yinhangka.svg b/src/assets/icons/yinhangka.svg new file mode 100644 index 0000000..20c1fdc --- /dev/null +++ b/src/assets/icons/yinhangka.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yiwen.svg b/src/assets/icons/yiwen.svg new file mode 100644 index 0000000..ef07f2e --- /dev/null +++ b/src/assets/icons/yiwen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/youhui.svg b/src/assets/icons/youhui.svg new file mode 100644 index 0000000..4358e1c --- /dev/null +++ b/src/assets/icons/youhui.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/youjian.svg b/src/assets/icons/youjian.svg new file mode 100644 index 0000000..1304c01 --- /dev/null +++ b/src/assets/icons/youjian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/youjiantou.svg b/src/assets/icons/youjiantou.svg new file mode 100644 index 0000000..5c59926 --- /dev/null +++ b/src/assets/icons/youjiantou.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yulibao.svg b/src/assets/icons/yulibao.svg new file mode 100644 index 0000000..b785c04 --- /dev/null +++ b/src/assets/icons/yulibao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yuyin.svg b/src/assets/icons/yuyin.svg new file mode 100644 index 0000000..1ac06af --- /dev/null +++ b/src/assets/icons/yuyin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yuyueguanli.svg b/src/assets/icons/yuyueguanli.svg new file mode 100644 index 0000000..080255d --- /dev/null +++ b/src/assets/icons/yuyueguanli.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/yuyueguanlishezhi.svg b/src/assets/icons/yuyueguanlishezhi.svg new file mode 100644 index 0000000..eac7549 --- /dev/null +++ b/src/assets/icons/yuyueguanlishezhi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zhankai.svg b/src/assets/icons/zhankai.svg new file mode 100644 index 0000000..aef4e53 --- /dev/null +++ b/src/assets/icons/zhankai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zhankai_mian.svg b/src/assets/icons/zhankai_mian.svg new file mode 100644 index 0000000..187e3e9 --- /dev/null +++ b/src/assets/icons/zhankai_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zhibo.svg b/src/assets/icons/zhibo.svg new file mode 100644 index 0000000..d329b49 --- /dev/null +++ b/src/assets/icons/zhibo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zhibo_mian.svg b/src/assets/icons/zhibo_mian.svg new file mode 100644 index 0000000..443e2cb --- /dev/null +++ b/src/assets/icons/zhibo_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zhuangxiu.svg b/src/assets/icons/zhuangxiu.svg new file mode 100644 index 0000000..c692c45 --- /dev/null +++ b/src/assets/icons/zhuangxiu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zhuangxiu_mian.svg b/src/assets/icons/zhuangxiu_mian.svg new file mode 100644 index 0000000..53e8deb --- /dev/null +++ b/src/assets/icons/zhuangxiu_mian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zhuoweiguanli.svg b/src/assets/icons/zhuoweiguanli.svg new file mode 100644 index 0000000..ee9d0cc --- /dev/null +++ b/src/assets/icons/zhuoweiguanli.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zichanzhuanrang.svg b/src/assets/icons/zichanzhuanrang.svg new file mode 100644 index 0000000..8a8d546 --- /dev/null +++ b/src/assets/icons/zichanzhuanrang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zuliao.svg b/src/assets/icons/zuliao.svg new file mode 100644 index 0000000..e210df3 --- /dev/null +++ b/src/assets/icons/zuliao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/zuliaoyuding.svg b/src/assets/icons/zuliaoyuding.svg new file mode 100644 index 0000000..69a9d99 --- /dev/null +++ b/src/assets/icons/zuliaoyuding.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/error.png b/src/assets/images/error.png new file mode 100644 index 0000000..ba10f87 Binary files /dev/null and b/src/assets/images/error.png differ diff --git a/src/assets/images/icon_folder.png b/src/assets/images/icon_folder.png new file mode 100644 index 0000000..99b800f Binary files /dev/null and b/src/assets/images/icon_folder.png differ diff --git a/src/assets/images/no_perms.png b/src/assets/images/no_perms.png new file mode 100644 index 0000000..c37c89b Binary files /dev/null and b/src/assets/images/no_perms.png differ diff --git a/src/assets/images/theme_black.png b/src/assets/images/theme_black.png new file mode 100644 index 0000000..417b4d4 Binary files /dev/null and b/src/assets/images/theme_black.png differ diff --git a/src/assets/images/theme_white.png b/src/assets/images/theme_white.png new file mode 100644 index 0000000..52714ba Binary files /dev/null and b/src/assets/images/theme_white.png differ diff --git a/src/components/accessory-select/index.vue b/src/components/accessory-select/index.vue new file mode 100644 index 0000000..364d805 --- /dev/null +++ b/src/components/accessory-select/index.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/src/components/app-link/index.vue b/src/components/app-link/index.vue new file mode 100644 index 0000000..e7fe926 --- /dev/null +++ b/src/components/app-link/index.vue @@ -0,0 +1,38 @@ + + + diff --git a/src/components/area-select/index.vue b/src/components/area-select/index.vue new file mode 100644 index 0000000..1471e37 --- /dev/null +++ b/src/components/area-select/index.vue @@ -0,0 +1,55 @@ + + + diff --git a/src/components/channel-select-user/channel-popup.vue b/src/components/channel-select-user/channel-popup.vue new file mode 100644 index 0000000..b8a72fd --- /dev/null +++ b/src/components/channel-select-user/channel-popup.vue @@ -0,0 +1,87 @@ + + + + + \ No newline at end of file diff --git a/src/components/channel-select-user/distributeTable.vue b/src/components/channel-select-user/distributeTable.vue new file mode 100644 index 0000000..28e2424 --- /dev/null +++ b/src/components/channel-select-user/distributeTable.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/src/components/channel-select-user/index.vue b/src/components/channel-select-user/index.vue new file mode 100644 index 0000000..62dbc29 --- /dev/null +++ b/src/components/channel-select-user/index.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/channel-select-user/table-detail.vue b/src/components/channel-select-user/table-detail.vue new file mode 100644 index 0000000..f9bca6a --- /dev/null +++ b/src/components/channel-select-user/table-detail.vue @@ -0,0 +1,84 @@ + + + + + + \ No newline at end of file diff --git a/src/components/channel-select-user/userTable.vue b/src/components/channel-select-user/userTable.vue new file mode 100644 index 0000000..3690f66 --- /dev/null +++ b/src/components/channel-select-user/userTable.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/src/components/color-picker/index.vue b/src/components/color-picker/index.vue new file mode 100644 index 0000000..ed0bc3e --- /dev/null +++ b/src/components/color-picker/index.vue @@ -0,0 +1,33 @@ + + diff --git a/src/components/daterange-picker/index.vue b/src/components/daterange-picker/index.vue new file mode 100644 index 0000000..342c558 --- /dev/null +++ b/src/components/daterange-picker/index.vue @@ -0,0 +1,77 @@ + + + + diff --git a/src/components/del-wrap/index.vue b/src/components/del-wrap/index.vue new file mode 100644 index 0000000..787f3e2 --- /dev/null +++ b/src/components/del-wrap/index.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/src/components/dict-value/index.vue b/src/components/dict-value/index.vue new file mode 100644 index 0000000..2935e5d --- /dev/null +++ b/src/components/dict-value/index.vue @@ -0,0 +1,30 @@ + + diff --git a/src/components/editor/index.vue b/src/components/editor/index.vue new file mode 100644 index 0000000..ae39eee --- /dev/null +++ b/src/components/editor/index.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/components/footer-btns/index.vue b/src/components/footer-btns/index.vue new file mode 100644 index 0000000..fd7fe5b --- /dev/null +++ b/src/components/footer-btns/index.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/src/components/icon/index.ts b/src/components/icon/index.ts new file mode 100644 index 0000000..831fcad --- /dev/null +++ b/src/components/icon/index.ts @@ -0,0 +1,19 @@ +import * as ElementPlusIcons from '@element-plus/icons-vue' +//@ts-ignore +import localIconsName from 'virtual:svg-icons-names' + +export const LOCAL_ICON_PREFIX = 'local-icon-' +export const EL_ICON_PREFIX = 'el-icon-' + +const elIconsName: string[] = [] + +for (const [, component] of Object.entries(ElementPlusIcons)) { + elIconsName.push(`${EL_ICON_PREFIX}${component.name}`) +} + +export function getElementPlusIconNames() { + return elIconsName +} +export function getLocalIconNames() { + return localIconsName +} diff --git a/src/components/icon/index.vue b/src/components/icon/index.vue new file mode 100644 index 0000000..d1195a8 --- /dev/null +++ b/src/components/icon/index.vue @@ -0,0 +1,56 @@ + + + diff --git a/src/components/icon/picker.vue b/src/components/icon/picker.vue new file mode 100644 index 0000000..27fc8cd --- /dev/null +++ b/src/components/icon/picker.vue @@ -0,0 +1,185 @@ + + + diff --git a/src/components/icon/svg-icon.vue b/src/components/icon/svg-icon.vue new file mode 100644 index 0000000..10c6919 --- /dev/null +++ b/src/components/icon/svg-icon.vue @@ -0,0 +1,38 @@ + + + diff --git a/src/components/image-contain/index.vue b/src/components/image-contain/index.vue new file mode 100644 index 0000000..1961025 --- /dev/null +++ b/src/components/image-contain/index.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/src/components/link/activity-center.vue b/src/components/link/activity-center.vue new file mode 100644 index 0000000..0ff4a36 --- /dev/null +++ b/src/components/link/activity-center.vue @@ -0,0 +1,89 @@ + + + + + + diff --git a/src/components/link/custom-link.vue b/src/components/link/custom-link.vue new file mode 100644 index 0000000..d90264e --- /dev/null +++ b/src/components/link/custom-link.vue @@ -0,0 +1,42 @@ + + + diff --git a/src/components/link/index.ts b/src/components/link/index.ts new file mode 100644 index 0000000..336e28b --- /dev/null +++ b/src/components/link/index.ts @@ -0,0 +1,14 @@ +export enum LinkTypeEnum { + 'SHOP_PAGES' = 'shop', + 'CUSTOM_LINK' = 'custom', + 'SERVICE_LIST' = 'goods_list', + 'SERVICE_CLASSIFY' = 'goods_classify', + 'ACTIVITY_CENTER'='activity_center' +} + +export interface Link { + path: string + name?: string + type: string + query?: Record +} diff --git a/src/components/link/index.vue b/src/components/link/index.vue new file mode 100644 index 0000000..7037a88 --- /dev/null +++ b/src/components/link/index.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/src/components/link/picker.vue b/src/components/link/picker.vue new file mode 100644 index 0000000..4d3895b --- /dev/null +++ b/src/components/link/picker.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/components/link/service-classify.vue b/src/components/link/service-classify.vue new file mode 100644 index 0000000..7b6559c --- /dev/null +++ b/src/components/link/service-classify.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/src/components/link/service-list.vue b/src/components/link/service-list.vue new file mode 100644 index 0000000..418574f --- /dev/null +++ b/src/components/link/service-list.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/src/components/link/shop-pages.vue b/src/components/link/shop-pages.vue new file mode 100644 index 0000000..4d2d268 --- /dev/null +++ b/src/components/link/shop-pages.vue @@ -0,0 +1,138 @@ + + + diff --git a/src/components/material/file.vue b/src/components/material/file.vue new file mode 100644 index 0000000..a9f0500 --- /dev/null +++ b/src/components/material/file.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/src/components/material/hook.ts b/src/components/material/hook.ts new file mode 100644 index 0000000..be5694c --- /dev/null +++ b/src/components/material/hook.ts @@ -0,0 +1,192 @@ +import { fileCateAdd, fileCateDelete, fileCateEdit, fileCateLists, fileDelete, fileList, fileMove, fileRename } from '@/api/file' +import { usePaging } from '@/hooks/usePaging' +import feedback from '@/utils/feedback' +import { ElMessage, ElTree, type CheckboxValueType } from 'element-plus' +import { shallowRef, type Ref } from 'vue' + +// 左侧分组的钩子函数 +export function useCate(type: number) { + const treeRef = shallowRef>() + // 分组列表 + const cateLists = ref([]) + + // 选中的分组id + const cateId = ref('') + + // 获取分组列表 + const getCateLists = async () => { + const data = await fileCateLists({ + type + }) + const item: any[] = [ + { + name: '全部', + id: '' + }, + { + name: '未分组', + id: 0 + } + ] + cateLists.value = data + cateLists.value.unshift(...item) + setTimeout(() => { + treeRef.value?.setCurrentKey(cateId.value) + }, 0) + } + + // 添加分组 + const handleAddCate = async (value: string) => { + await fileCateAdd({ + type, + name: value, + pid: 0 + }) + getCateLists() + } + + // 编辑分组 + const handleEditCate = async (value: string, id: number) => { + await fileCateEdit({ + id, + name: value + }) + getCateLists() + } + + // 删除分组 + const handleDeleteCate = async (id: number) => { + await feedback.confirm('确定要删除?') + await fileCateDelete({ id }) + cateId.value = '' + getCateLists() + } + + //选中分类 + const handleCatSelect = (item: any) => { + cateId.value = item.id + } + + return { + treeRef, + cateId, + cateLists, + handleAddCate, + handleEditCate, + handleDeleteCate, + getCateLists, + handleCatSelect + } +} + +// 处理文件的钩子函数 +export function useFile(cateId: Ref, type: Ref, limit: Ref, size: number) { + const tableRef = shallowRef() + const listShowType = ref('normal') + const moveId = ref(0) + const select = ref([]) + const isCheckAll = ref(false) + const isIndeterminate = ref(false) + const fileParams = reactive({ + name: '', + type: type, + cid: cateId + }) + const { pager, getLists, resetPage } = usePaging({ + fetchFun: fileList, + params: fileParams, + firstLoading: true, + size + }) + + const getFileList = () => { + getLists() + } + const refresh = () => { + resetPage() + } + + const isSelect = (id: number) => { + return !!select.value.find((item: any) => item.id == id) + } + + const batchFileDelete = async (id?: number[]) => { + await feedback.confirm('确认删除后,本地或云存储文件也将同步删除,如文件已被使用,请谨慎操作!') + const ids = id ? id : select.value.map((item: any) => item.id) + await fileDelete({ ids }) + getFileList() + clearSelect() + } + + const batchFileMove = async () => { + const ids = select.value.map((item: any) => item.id) + await fileMove({ ids, cid: moveId.value }) + moveId.value = 0 + getFileList() + clearSelect() + } + + const selectFile = (item: any) => { + const index = select.value.findIndex((items: any) => items.id == item.id) + if (index != -1) { + select.value.splice(index, 1) + return + } + if (select.value.length == limit.value) { + if (limit.value == 1) { + select.value = [] + select.value.push(item) + return + } + ElMessage.warning('已达到选择上限') + return + } + select.value.push(item) + } + + const clearSelect = () => { + select.value = [] + } + + const cancelSelete = (id: number) => { + select.value = select.value.filter((item: any) => item.id != id) + } + + const selectAll = (value: CheckboxValueType) => { + isIndeterminate.value = false + tableRef.value?.toggleAllSelection() + if (value) { + select.value = [...pager.lists] + return + } + clearSelect() + } + + const handleFileRename = async (value: string, id: number) => { + await fileRename({ + id, + name: value + }) + getFileList() + } + return { + listShowType, + tableRef, + moveId, + pager, + fileParams, + select, + isCheckAll, + isIndeterminate, + getFileList, + refresh, + batchFileDelete, + batchFileMove, + selectFile, + isSelect, + clearSelect, + cancelSelete, + selectAll, + handleFileRename + } +} diff --git a/src/components/material/index.vue b/src/components/material/index.vue new file mode 100644 index 0000000..522c325 --- /dev/null +++ b/src/components/material/index.vue @@ -0,0 +1,521 @@ + + + + + diff --git a/src/components/material/picker.vue b/src/components/material/picker.vue new file mode 100644 index 0000000..6bcaad7 --- /dev/null +++ b/src/components/material/picker.vue @@ -0,0 +1,282 @@ + + + + + diff --git a/src/components/material/preview.vue b/src/components/material/preview.vue new file mode 100644 index 0000000..7646479 --- /dev/null +++ b/src/components/material/preview.vue @@ -0,0 +1,69 @@ + + + + diff --git a/src/components/overflow-tooltip/index.vue b/src/components/overflow-tooltip/index.vue new file mode 100644 index 0000000..57734db --- /dev/null +++ b/src/components/overflow-tooltip/index.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/src/components/pagination/index.vue b/src/components/pagination/index.vue new file mode 100644 index 0000000..61ce366 --- /dev/null +++ b/src/components/pagination/index.vue @@ -0,0 +1,42 @@ + + + diff --git a/src/components/popover-input/index.vue b/src/components/popover-input/index.vue new file mode 100644 index 0000000..88ba84a --- /dev/null +++ b/src/components/popover-input/index.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/components/popup/index.vue b/src/components/popup/index.vue new file mode 100644 index 0000000..69900e3 --- /dev/null +++ b/src/components/popup/index.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/src/components/receipt/index.vue b/src/components/receipt/index.vue new file mode 100644 index 0000000..6f6e74d --- /dev/null +++ b/src/components/receipt/index.vue @@ -0,0 +1,222 @@ + + + + + +// 去除打印的页眉页脚 + +// 去除打印的页眉页脚 diff --git a/src/components/search-base/index.vue b/src/components/search-base/index.vue new file mode 100644 index 0000000..af4b252 --- /dev/null +++ b/src/components/search-base/index.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/src/components/upload/index.vue b/src/components/upload/index.vue new file mode 100644 index 0000000..8eb3e90 --- /dev/null +++ b/src/components/upload/index.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/src/components/user-select/index.vue b/src/components/user-select/index.vue new file mode 100644 index 0000000..7f30133 --- /dev/null +++ b/src/components/user-select/index.vue @@ -0,0 +1,178 @@ + + + + + diff --git a/src/components/warehouse-select/index.vue b/src/components/warehouse-select/index.vue new file mode 100644 index 0000000..d15d800 --- /dev/null +++ b/src/components/warehouse-select/index.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/src/config/env.ts b/src/config/env.ts new file mode 100644 index 0000000..2335a20 --- /dev/null +++ b/src/config/env.ts @@ -0,0 +1,2 @@ +export const VITE_MAP_KEY = import.meta.env.VITE_MAP_KEY +export const VITE_BASE_URL_PREFIX = import.meta.env.VITE_APP_BASE_URL \ No newline at end of file diff --git a/src/config/index.ts b/src/config/index.ts new file mode 100644 index 0000000..0cdce76 --- /dev/null +++ b/src/config/index.ts @@ -0,0 +1,18 @@ +/* + * @Author: micky 1254597151@qq.com + * @Date: 2023-08-14 15:56:31 + * @LastEditors: micky 1254597151@qq.com + * @LastEditTime: 2023-12-22 16:18:37 + * @FilePath: \housekeeping-admin\src\config\index.ts + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +const config = { + terminal: 1, //终端 + title: '充电桩维护-后台管理系统', //网站默认标题 + version: '1.0.0', //版本号 + baseUrl: `${import.meta.env.VITE_APP_BASE_URL || ''}/`, //请求接口域名 + urlPrefix: 'api', //请求默认前缀 + timeout: 20 * 1000 //请求超时时长 +} + +export default config diff --git a/src/config/setting.ts b/src/config/setting.ts new file mode 100644 index 0000000..3efca96 --- /dev/null +++ b/src/config/setting.ts @@ -0,0 +1,23 @@ +/* + * @Author: micky + * @Date: 2024-07-17 17:01:15 + * @LastEditors: micky + * @LastEditTime: 2024-07-23 10:20:37 + * @FilePath: \maintenance-admin\src\config\setting.ts + */ +const defaultSetting = { + isUniqueOpened: false, //只展开一个一级菜单 + sideWidth: 200, //侧边栏宽度 + sideTheme: 'light', //侧边栏主题 + sideDarkColor: '#1d2124', //侧边栏深色主题颜色 + openMultipleTabs: true, // 是否开启多标签tab栏 + theme: '#0E66FB', //主题色 + successTheme: '#67c23a', //成功主题色 + warningTheme: '#e6a23c', //警告主题色 + dangerTheme: '#f56c6c', //危险主题色 + errorTheme: '#f56c6c', //错误主题色 + infoTheme: '#909399' //信息主题色 +} +//以上各种主题色分别对应element-plus的几种行为主题 + +export default defaultSetting diff --git a/src/config/status.ts b/src/config/status.ts new file mode 100644 index 0000000..01c0398 --- /dev/null +++ b/src/config/status.ts @@ -0,0 +1,37 @@ +/* + * @Author: micky 1254597151@qq.com + * @Date: 2023-08-14 15:56:31 + * @LastEditors: micky + * @LastEditTime: 2024-07-18 19:52:01 + * @FilePath: \maintenance-admin\src\config\status.ts + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +export const optionMap = { + accountStatus: [ + { label: '正常', value: 1 }, + { label: '停用', value: 0 } + ], + statusOptions: [ + { label: '开启', value: 1 }, + { label: '停用', value: 2 } + ], + applyStatusOptions: [ + { label: '申请中', value: 0 }, + { label: '申请通过', value: 1 }, + { label: '申请失败', value: 2 } + ], + physicalStatusOptions: [ + { label: '审核中', value: 0 }, + { label: '审核通过', value: 1 }, + { label: '审核失败', value: 2 } + ], + sexOptions: [ + { label: '男', value: 1 }, + { label: '女', value: 2 } + ], + reassignOptions: [ + { label: '全部', value: '' }, + { label: '申请中', value: 0 }, + { label: '已处理', value: 1 } + ] +} diff --git a/src/config/symbol.ts b/src/config/symbol.ts new file mode 100644 index 0000000..e37393d --- /dev/null +++ b/src/config/symbol.ts @@ -0,0 +1,45 @@ +import type { InjectionKey, Ref } from "vue"; +import type { ElTable } from "element-plus"; +import type { CategoryProp } from "@/hooks/useCommon"; + +interface LocationProp { + province: string + city: string + district: string + adcode: number +} +export interface Location { + lng: number + lat: number +} +export type Area = { + location: Location + address_components: any +} +export interface Pager { + page: number + size: number + count: number + lists: T[] + getLists: () => Promise +} +export interface MapContext { + isInited: Ref //是否初始化 + tcMap: any + address: Ref + originSelectData?: Ref + showDialog?: (payload: any) => void //传递几何坐标信息 + searchCommon: (payload: any) => void + handleLocation: (row: any) => void //定位 + handleDelete: (id: number) => void //删除 + toggleRowSelection?: (selectData: any[]) => void +} +export const MAP_INJECTION_KEY: InjectionKey = Symbol() + +export interface ChannelContext { + channel: Ref + categoryLists: Ref + selectObj?: Ref> + handleSelectionChange?: (val: any) => void +} +export const CHANNEL_INJECTION_KEY: InjectionKey = Symbol() \ No newline at end of file diff --git a/src/directives/index.ts b/src/directives/index.ts new file mode 100644 index 0000000..48446e3 --- /dev/null +++ b/src/directives/index.ts @@ -0,0 +1,16 @@ +import type { App, Directive } from "vue"; +import { positiveNumber, precision } from "./modules/positive-number"; + +const directiveList: { [key: string]: Directive } = { + positiveNumber, + precision +} + +const directives = { + install: function (app: App) { + Object.keys(directiveList).forEach(key => { + app.directive(key, directiveList[key]) + }) + } +} +export default directives \ No newline at end of file diff --git a/src/directives/modules/positive-number.ts b/src/directives/modules/positive-number.ts new file mode 100644 index 0000000..17cdc0b --- /dev/null +++ b/src/directives/modules/positive-number.ts @@ -0,0 +1,86 @@ +import type { Directive, DirectiveBinding } from "vue"; + +// 特殊字符 +const reg1 = /^[0-9]\d*$/ +// 连输输入多个0,只保留一个0 +const zeroReg = /^0+(\d)/ +const _reg = /[^\d.]/g; //移除特殊字符 +const precisionReg = /(\.\d\d)\d+$/; //最多保留2位小数 +const _reg2 = /^\./ //小数点开头 +const _reg3 = /(\.\d*\.)/g //连续输入多个小数点,只保留一个 + +/**只能输入正整数,包含0 */ +const positiveNumber: Directive = { + mounted: (el: HTMLElement) => { + el.addEventListener('input', (event: Event) => { + const content = (event.target as HTMLInputElement).value + if (!reg1.test(content)) { + (event.target as HTMLInputElement).value = ''; + } else if (zeroReg.test(content)) { + (event.target as HTMLInputElement).value = '$1'; + } + }) + } +} +/**minRow-maxRow,最多保留2位小数 */ +const precision = { + mounted: (el: HTMLElement, binding: DirectiveBinding) => { + const bindingValue = binding.value + el.addEventListener('keydown', (event: KeyboardEvent) => { + event.stopPropagation() + const inputKey = event.key + const value = (event.target as HTMLInputElement).value + disabledInput(event, inputKey, value, bindingValue) + }) + el.addEventListener('input', (event) => { + const value = (event.target as HTMLInputElement).value; + if (/[^\d.-]/g.test(value)) { + event.preventDefault(); + (event.target as HTMLInputElement).value = '' + } + bindingValue.update(bindingValue.$index, (event.target as HTMLInputElement).value) + }) + } +} + +let _v = '' + +function disabledInput(event: KeyboardEvent, inputKey: string, value: string, bindingValue) { + if (!bindingValue && !Object.keys(bindingValue).length) return + const { minRow, maxRow } = bindingValue + + if (inputKey === 'Backspace' || inputKey === 'Shift') { + _v = ''; + return + } + if (value) { + _v = value + inputKey + } else { + _v += inputKey + } + + if (/[^\d.-]/g.test(_v)) { + event.preventDefault(); + _v = '' + } else if (_reg.test(_v)) { + event.preventDefault(); + } else if (zeroReg.test(_v)) { + event.preventDefault(); + _v = '' + } else if (precisionReg.test(_v)) { + event.preventDefault(); + _v = '' + } else if (_reg2.test(_v)) { + event.preventDefault() + _v = '' + } else if (_reg3.test(_v)) { + event.preventDefault() + } else if (_v > maxRow || _v < minRow) { + event.preventDefault(); + _v = '' + } +} +export { + positiveNumber, + precision +} \ No newline at end of file diff --git a/src/enums/appEnums.ts b/src/enums/appEnums.ts new file mode 100644 index 0000000..90ac145 --- /dev/null +++ b/src/enums/appEnums.ts @@ -0,0 +1,40 @@ +//菜单主题类型 +export enum ThemeEnum { + LIGHT = 'light', + DARK = 'dark' +} + +// 菜单类型 +export enum MenuEnum { + CATALOGUE = 'M', + MENU = 'C', + BUTTON = 'A' +} + +// 屏幕 +export enum ScreenEnum { + SM = 640, + MD = 768, + LG = 1024, + XL = 1280, + '2XL' = 1536 +} + +// 客户端类型 +export enum ClientEnum { + MP_WEIXIN = 1, // 微信-小程序 + OA_WEIXIN = 2, // 微信-公众号 + H5 = 3, // H5 + PC = 4, // PC + IOS = 5, //苹果 + ANDROID = 6 //安卓 +} + +export const ClientMap = { + [ClientEnum.MP_WEIXIN]: '微信小程序', + [ClientEnum.OA_WEIXIN]: '微信公众号', + [ClientEnum.H5]: '手机H5', + [ClientEnum.PC]: '电脑PC', + [ClientEnum.IOS]: '苹果APP', + [ClientEnum.ANDROID]: '安卓APP' +} diff --git a/src/enums/businessEnums.ts b/src/enums/businessEnums.ts new file mode 100644 index 0000000..888dd57 --- /dev/null +++ b/src/enums/businessEnums.ts @@ -0,0 +1,104 @@ +/* + * @Author: micky + * @Date: 2024-07-24 10:15:15 + * @LastEditors: micky + * @LastEditTime: 2024-07-29 10:32:29 + * @FilePath: \maintenance-admin\src\enums\businessEnums.ts + */ +export enum AuditStatusEnum { + APPLY = 0, + AUDITED = 1, + CANCEL = 2 +} +/**申请状态 */ +export const auditTagType = { + [AuditStatusEnum.APPLY]: 'warning', + [AuditStatusEnum.AUDITED]: 'success', + [AuditStatusEnum.CANCEL]: 'primary' +} + +/**申请状态 */ +export const auditColor = { + [AuditStatusEnum.APPLY]: '#F9C85E', + [AuditStatusEnum.AUDITED]: '#46B97B', + [AuditStatusEnum.CANCEL]: '#0E66FB' +} + +export const auditStatusMap: Record = { + [AuditStatusEnum.APPLY]: '未审核', + [AuditStatusEnum.AUDITED]: '已审核', + [AuditStatusEnum.CANCEL]: '已取消' +} + +export enum AuditResultEnum { + PASS = 0, + NOPASS = 1 +} +/** 审核结果 */ +export const auditResultTagType = { + [AuditResultEnum.PASS]: 'success', + [AuditResultEnum.NOPASS]: 'danger' +} + +export const auditResultMap: Record = { + [AuditResultEnum.PASS]: '通过', + [AuditResultEnum.NOPASS]: '不通过' +} + +export enum ReceiveFlowEnum { + TOAUDIT = 0, + NOPASS = 1, + ADMINAUDIT = 2, + TOBESEND = 3, + TOBERECEIVE = 4, + COMPLETE = 5 +} +export const receiveFlowColor = { + [ReceiveFlowEnum.TOAUDIT]: '#F9C85E', + [ReceiveFlowEnum.NOPASS]: '#DF6351', + [ReceiveFlowEnum.ADMINAUDIT]: '#0E66FB', + [ReceiveFlowEnum.TOBESEND]: '#8E5FA2', + [ReceiveFlowEnum.TOBERECEIVE]: '#4F8BC9', + [ReceiveFlowEnum.COMPLETE]: '#46B97B' +} + +export const receiveFlowMap = { + [ReceiveFlowEnum.TOAUDIT]: '未审核', + [ReceiveFlowEnum.NOPASS]: '未通过', + [ReceiveFlowEnum.ADMINAUDIT]: '待管理员审核', + [ReceiveFlowEnum.TOBESEND]: '待发货', + [ReceiveFlowEnum.TOBERECEIVE]: '待收货', + [ReceiveFlowEnum.COMPLETE]: '已完成' +} + +export enum PurchaseFlowEnum { + TOAUDIT = 0, + NOPASS = 1, + ADMINAUDIT = 2, + TOBESEND = 3, + TOBERECEIVE = 4, + COMPLETE = 5, + WRITING = 6, + EXCEEDTIME = 7 +} +export const purchaseFlowColor = { + [PurchaseFlowEnum.TOAUDIT]: '#F9C85E', + [PurchaseFlowEnum.NOPASS]: '#DF6351', + [PurchaseFlowEnum.ADMINAUDIT]: '#0E66FB', + [PurchaseFlowEnum.TOBESEND]: '#8E5FA2', + [PurchaseFlowEnum.TOBERECEIVE]: '#4F8BC9', + [PurchaseFlowEnum.COMPLETE]: '#46B97B', + [PurchaseFlowEnum.WRITING]: '#FF7F28', + [PurchaseFlowEnum.EXCEEDTIME]: '#F5222D' +} + +export const purchaseFlowMap = { + [PurchaseFlowEnum.TOAUDIT]: '未审核', + [PurchaseFlowEnum.NOPASS]: '审核未通过', + [PurchaseFlowEnum.ADMINAUDIT]: '待管理员审核', + [PurchaseFlowEnum.TOBESEND]: '待发货', + [PurchaseFlowEnum.TOBERECEIVE]: '待收货', + [PurchaseFlowEnum.COMPLETE]: '已完成', + [PurchaseFlowEnum.WRITING]: '填写中', + [PurchaseFlowEnum.EXCEEDTIME]: '收货超期' +} diff --git a/src/enums/cacheEnums.ts b/src/enums/cacheEnums.ts new file mode 100644 index 0000000..023fac9 --- /dev/null +++ b/src/enums/cacheEnums.ts @@ -0,0 +1,14 @@ +// 本地缓冲key + +//token +export const TOKEN_KEY = 'token' +//账号 +export const ACCOUNT_KEY = 'account' +//设置 +export const SETTING_KEY = 'setting' +//tab +export const TAB_KEY = 'tab' +export const TAB_MAP = 'tabMap' + +// 字典 +export const DICT_KEY = 'dict' diff --git a/src/enums/modeEnum.ts b/src/enums/modeEnum.ts new file mode 100644 index 0000000..812006f --- /dev/null +++ b/src/enums/modeEnum.ts @@ -0,0 +1,184 @@ +/* + * @Author: micky 1254597151@qq.com + * @Date: 2023-08-14 15:56:31 + * @LastEditors: micky + * @LastEditTime: 2024-07-19 11:20:54 + * @FilePath: \maintenance-admin\src\enums\modeEnum.ts + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +// 页面模式 +export enum PageMode { + 'ADD' = 'add', // 添加 + 'EDIT' = 'edit' // 编辑 +} + +export enum ServiceMode { + 'all_count' = '全部', // int 全部 + 'SHELVE' = '销售中', //销售中 + 'UNSHELVE' = '仓库中' //仓库中 +} + +export enum OrderMode { + 'all_count' = '全部', // int 全部 + 'wait_pay_count' = '待支付', // int 待支付 + 'appoint_count' = '预约中', // int 预约中 + 'service_count' = '服务中', // int 服务中 + 'finish_count' = '已完成', // int 已完成 + 'close_count' = '已取消' // int 已取消 +} + +export enum RefundMode { + 'all_count' = '全部', + 'refund_wait_count' = '退款中', + 'refund_success_count' = '退款成功', + 'refund_fail_count' = '退款失败' +} + +export enum StatusEnum { + 'NORMAL' = 1, + 'STOP' = 0 +} + +export const statusMap: Record = { + [StatusEnum.NORMAL]: '正常', + [StatusEnum.STOP]: '停用' +} +export enum DispatchEnum { + USER_RECEIVE = 1, + SYSTEM_GIVE = 2, + CHANNEL_DISPATCH = 3 +} +export enum ChannelEnum { + DISTBUTOR = 1, + USER = 2 +} +export enum UseGoodsEnum { + ALL = 1, + CATEGORY = 2, + CATEGOYR_PART = 3 +} +export enum UseConditionEnum { + NO_CONDITION = 1, + CONDITION = 2 +} +export enum DispatchCountEnum { + NO_COUNT = 1, + COUNT = 2 +} +export enum DispatchStatusEnum { + NORMAL = 1, + STOP = 2 +} +export const dispatchStatusMap: Record = { + [DispatchStatusEnum.NORMAL]: '停用', + [DispatchStatusEnum.STOP]: '启用' +} +export const statusEnumMap: Record = { + [DispatchStatusEnum.NORMAL]: '启用', + [DispatchStatusEnum.STOP]: '停用' +} +export const getTypeMap: Record = { + [DispatchEnum.USER_RECEIVE]: '用户领取', + [DispatchEnum.SYSTEM_GIVE]: '系统赠送', + [DispatchEnum.CHANNEL_DISPATCH]: '渠道派发' +} +export const useGoodsTypeMap = { + [UseGoodsEnum.ALL]: '通用券', + [UseGoodsEnum.CATEGORY]: '品类券', + [UseGoodsEnum.CATEGOYR_PART]: '商品券' +} +export const conditionTypeMap = { + [UseConditionEnum.NO_CONDITION]: '无门槛使用', + [UseConditionEnum.CONDITION]: '最低消费' +} +export const channelMap: Record = { + [ChannelEnum.DISTBUTOR]: '分销员', + [ChannelEnum.USER]: '用户' +} +export const useStatusMap: Record = { + 1: '未使用', + 2: '已使用', + 3: '未发放' +} +export const channelfieldsMap: Record = { + [ChannelEnum.DISTBUTOR]: 'distributors', + [ChannelEnum.USER]: 'users' +} +export enum ApplyStatusEnum { + APPLY = 0, + SUCCESS = 1, + FAILED = 2 +} +export const applyStatusMap: Record = { + [ApplyStatusEnum.APPLY]: '申请中', + [ApplyStatusEnum.SUCCESS]: '通过', + [ApplyStatusEnum.FAILED]: '失败' +} + +export enum OperationEnum { + SUCCESS = 1, + FAILED = 2 +} +export enum OperationTextEnum { + SUCCESS = 'success', + FAILED = 'fail' +} +export const OperationEnumMap: Record = { + [OperationTextEnum.SUCCESS]: OperationEnum.SUCCESS, + [OperationTextEnum.FAILED]: OperationEnum.FAILED +} +export enum SexEnum { + MALE = 1, + FEMALE = 2 +} +export const SexEnumMap: Record = { + [SexEnum.MALE]: '男', + [SexEnum.FEMALE]: '女' +} + +export const GoodsTimeType: Record = { + 0: '自定义', + 1: '自动间隔' +} +/**师傅状态 */ +export enum ReceiveOrderEnum { + ENABLEDING = 0, //接单中 + PAUSE = 1 //休息中 +} +/**申请状态 */ +export const tagFields = { + [ApplyStatusEnum.APPLY]: '', + [ApplyStatusEnum.SUCCESS]: 'success', + [ApplyStatusEnum.FAILED]: 'danger' +} +/**体检报告审核状态 */ +export const physicalEnumMap: Record = { + [ApplyStatusEnum.APPLY]: '审核中', //审核中 + [ApplyStatusEnum.SUCCESS]: '通过', //审核通过 + [ApplyStatusEnum.FAILED]: '失败' // 审核失败 +} +/**退单规则 */ +export enum TemplateEnum { + STAFF = 0, //师傅 + USER = 1 //用户 +} + +// 接单状态 +export enum getStaffOrderStatusEnum { + OPEN = 0, //接单状态开启 + CLOSED = 1 //接单状态关闭 +} +// 师傅退单状态 +export enum StaffRefundEnum { + PEDDING = 0, + SUCCESS = 1 +} +export const StaffRefundEnumMap: Record = { + [StaffRefundEnum.PEDDING]: '申请中', + [StaffRefundEnum.SUCCESS]: '已处理' +} +// 用户退款设置 +export enum RefundEnum { + SETTING = 1, + UN_SETTING = 0 +} diff --git a/src/enums/pageEnum.ts b/src/enums/pageEnum.ts new file mode 100644 index 0000000..89e6525 --- /dev/null +++ b/src/enums/pageEnum.ts @@ -0,0 +1,9 @@ +export enum PageEnum { + //登录页面 + LOGIN = '/login', + //无权限页面 + ERROR_403 = '/403', + // 404 + ERROR_404 = '/:pathMatch(.*)*', + INDEX = '/' +} diff --git a/src/enums/requestEnums.ts b/src/enums/requestEnums.ts new file mode 100644 index 0000000..67d30b2 --- /dev/null +++ b/src/enums/requestEnums.ts @@ -0,0 +1,28 @@ +export enum ContentTypeEnum { + // json + JSON = 'application/json;charset=UTF-8', + // form-data 上传资源(图片,视频) + FORM_DATA = 'multipart/form-data;charset=UTF-8' +} + +export enum RequestMethodsEnum { + GET = 'GET', + POST = 'POST' +} + +export enum RequestCodeEnum { + SUCCESS = 200, //成功 + FAILED = 300, // 失败 + PARAMS_VALID_ERROR = 310, //参数校验错误 + PARAMS_TYPE_ERROR = 311, //参数类型错误 + REQUEST_METHOD_ERROR = 312, //请求方法错误 + ASSERT_ARGUMENT_ERROR = 313, //断言参数错误 + ASSERT_MYBATIS_ERROR = 314, //断言mybatis错误 + LOGIN_ACCOUNT_ERROR = 330, //登陆账号或密码错误 + LOGIN_DISABLE_ERROR = 331, //登陆账号已被禁用 + TOKEN_EMPTY = 332, // TOKEN参数为空 + TOKEN_INVALID = 333, // TOKEN参数无效 + NO_PERMISSTION = 403, //无相关权限 + REQUEST_404_ERROR = 404, //请求接口不存在 + SYSTEM_ERROR = 500 //系统错误 +} diff --git a/src/env.d.ts b/src/env.d.ts new file mode 100644 index 0000000..d6e6efd --- /dev/null +++ b/src/env.d.ts @@ -0,0 +1,9 @@ + +interface ImportMetaEnv { + readonly VITE_APP_BASE_URL: string + readonly VITE_MAP_KEY: string +} + +interface ImportMeta { + readonly env: ImportMetaEnv +} diff --git a/src/hooks/useCommon.ts b/src/hooks/useCommon.ts new file mode 100644 index 0000000..630eaa8 --- /dev/null +++ b/src/hooks/useCommon.ts @@ -0,0 +1,312 @@ +import { ref, type Component } from 'vue' +import { apiCategoryLists } from '@/api/service/category' +import feedback from '@/utils/feedback' +import { OperationEnumMap, OperationTextEnum, dispatchStatusMap } from '@/enums/modeEnum' +import { apiDistributorGroupLists } from '@/api/distributor/group' +import { CouponStatusApi, delCoupon, delCouponByDistributor, switchCouponStatus } from '@/api/application/coupon' +import { + ElMessageBox, + genFileId, + type ElTable, + type ElUpload, + type UploadFile, + type UploadFiles, + type UploadInstance, + type UploadRawFile, + type UploadUserFile +} from 'element-plus' +import { apiFeedbackAgreement, apiMasterWorkerApplyAgreement, apiMasterWorkerPhysicalAgreement } from '@/api/master_worker' +import { applyForEdit } from '@/api/finance/withdraw' +import { useCreateModal } from './useCreateModal' +import { toast, formatFileSize } from '@/utils/util' + +export interface CategoryProp { + id: number + name: string +} +export interface GroupProp { + id: number + groupName: string +} +export function useCommon() { + const categoryLists = ref([]) + const groupLists = ref([]) + const couponTable = ref>() + const selectedIds = ref([]) + + const isDisabled = computed(() => !selectedIds.value.length) + + /**获取服务分类列表 */ + const fetchCategoryList = async () => { + try { + const { lists } = await apiCategoryLists('') + categoryLists.value = lists + } catch (error) {} + } + /**切换发放状态 */ + const handleStatusChange = (row: any, api: () => Promise, type: string) => { + const { id, status = 1 } = row + return new Promise(async resolve => { + try { + await feedback.confirm(`确定${dispatchStatusMap[status]}发放?`) + // console.log(id, `${dispatchStatusMap[status]}`); + type === 'wrapper' ? await CouponStatusApi({ id }) : await switchCouponStatus({ id, status }) + feedback.msgSuccess(`${dispatchStatusMap[status]}成功`) + api() + return resolve(true) + } catch (error) {} + }) + } + /**获取分销组别列表 */ + const fetchGroupList = async () => { + try { + const params = { + pageNo: 1, + pageSize: 10 + } + const { lists } = await apiDistributorGroupLists(params) + groupLists.value = lists + } catch (error) {} + } + /**删除优惠券 */ + const handleDelete = async (row: any, type: string, field: string, api: () => Promise) => { + let couponName = '' + // 分销商优惠券 + if (field === 'inner') { + const { + couponDetailVo: { name } + } = row + couponName = name + } else { + // 优惠券页面 + const { name } = row + couponName = name + } + try { + if (type === 'single') couponTable.value?.toggleRowSelection(row, true) + const text = type === 'multiple' ? '勾选的优惠券' : `优惠券【${couponName}】` + await feedback.confirm(`此操作不可逆,确定删除${text}?`) + field === 'inner' ? await delCouponByDistributor({ ids: selectedIds.value }) : await delCoupon({ ids: selectedIds.value }) + feedback.msgSuccess('删除成功') + api() + } catch (error) { + } finally { + clearSelection() + } + } + + /**多选操作 */ + const handleSelectionChange = (val: any[]) => { + selectedIds.value = val.map(item => item.id) as number[] + } + /**清除选中 */ + function clearSelection() { + couponTable.value?.clearSelection() + } + + return { + categoryLists, + groupLists, + couponTable, + selectedIds, + fetchGroupList, + fetchCategoryList, + handleStatusChange, + handleDelete, + isDisabled, + handleSelectionChange + } +} + +export function useAuthStaffOperation(component: Component, isGoBack = false, event?: () => void, refresh?: () => Promise) { + const fields: Record Promise> = { + 实名认证: apiMasterWorkerApplyAgreement, + 体检报告: apiMasterWorkerPhysicalAgreement, + 意见反馈: apiFeedbackAgreement, + 提现: applyForEdit + } + const commandComponent = useCreateModal(component) + + /**通过和拒绝 */ + const handleOperation = (row: any, type: string, msg = '实名认证') => { + const field = msg === '实名认证' ? 'name' : msg === '提现' ? 'distributorName' : 'staffName' + const filedKey = msg === '意见反馈' ? 'reply' : msg === '提现' ? 'failReason' : 'refuseReason' + const identity = msg == '提现' ? '分销商' : '师傅' + const { id } = row + let data = { id, status: OperationEnumMap[type] } + type === OperationTextEnum.SUCCESS + ? feedback + .confirm(`您确定通过【${row[field]}】${identity}的${msg}申请吗?`) + .then(async () => { + handleConfirm(data, '审核通过', msg) + }) + .catch(() => {}) + : commandComponent({ + title: `${msg === '意见反馈' ? '回复' : '拒绝'}理由`, + width: 500, + onConfirm: async payload => { + Object.assign(data, { + [filedKey]: payload.reason + }) + handleConfirm(data, `已拒绝【${row[field]}】申请`, msg) + } + }) + } + /**确认后操作 */ + async function handleConfirm(data: any, message: string, tip: string) { + try { + const api = fields[tip] + await api(data) + feedback.msgSuccess(message) + refresh?.() + isGoBack && event?.() + } catch (error) {} + } + + return { + handleOperation + } +} + +/**校验上传图片过程、图片上传操作 */ +export function useUploadMoreAction() { + /**upload组件实例 */ + const uploadRef = ref>() + const fileUploadList = ref>({ + avatar: [], + idCard: [], + report: [], + pdf: [] + }) + const imgViewerVisible = ref(false) + const viewerIndex = ref(0) + const previewSrcList = ref([]) + const uploadPdf = ref() + const pdfDialog = ref() + + /**判断图片类型 */ + const getFileType = (name: string | undefined) => { + if (!name) return + const matches = name.match(/\.([^.]+)$/) + return matches && matches[1] + } + + /**判断图片是否符合格式 */ + const isImage = (file: UploadFile, type: string) => { + const suffixArr = type === 'pdf' ? ['pdf'] : ['jpg', 'png', 'jpeg'] + const suffix = getFileType(file.raw?.name) + if (!suffix) return + return suffixArr.includes(suffix) + } + + /**校验图片格式和文件大小 */ + const validate = (file: UploadFile, fileList: UploadFiles, type: string, size: number) => { + return new Promise((resolve, reject) => { + const text = type === 'pdf' ? '文件' : '图片' + if (!isImage(file, type)) { + let msg = type === 'pdf' ? 'pdf' : 'jpg,png,jpeg' + toast(`请上传${msg}格式的${text}`, 'error') + fileList.splice(-1, 1) + uploadRef.value?.abort(file) + return false + } + if ((file.size as number) > size) { + toast(`${text}【${file.name}】大小:${formatFileSize(file.size as number)},请上传小于${formatFileSize(size)}的${text}`, 'error', 3000) + fileList.splice(-1, 1) + uploadRef.value?.abort(file) + return false + } + fileUploadList.value[type] = fileList + resolve(true) + }) + } + + /**开始上传 */ + const startUpload = async (file: UploadFile, fileList: UploadFiles, type: string, size: number) => { + const flag = await validate(file, fileList, type, size) + } + + /**上传图片 */ + const onSubmit = () => { + if (!fileUploadList.value.length) { + toast('请先上传图片', 'warning') + } + } + + /**删除图片 */ + const beforeRemove = (file: UploadFile, fileList: UploadFiles, type: string) => { + return new Promise((resolve, reject) => { + ElMessageBox.confirm(`确定删除${file.name}图片`, '温馨提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }) + .then(() => { + let index = fileList.indexOf(file) + fileList.splice(index, 1) + fileUploadList.value[type] = fileList + }) + .catch(() => { + resolve(false) + }) + }) + } + + /**预览图片 */ + const handlePreview = (file: UploadFile, type: string) => { + if (!unref(fileUploadList)[type].length) return + imgViewerVisible.value = true + let index = unref(fileUploadList)[type].indexOf(file) + viewerIndex.value = index + previewSrcList.value = unref(fileUploadList)[type].map(file => file.url!) + } + + // pdf预览 + const previewPdf = (file: UploadFile) => { + const reader = new FileReader() // 读取文件资源 + reader.readAsDataURL(file.raw!) + reader.onload = function (e) { + if (e?.target?.result) pdfDialog.value.openDialog(e?.target.result) + } + } + + /**关闭预览图片 */ + const closeImageViewer = () => { + imgViewerVisible.value = false + } + + /**超出限制重新上传 */ + const handleExceed = (files: File[], uploadFiles: UploadUserFile[], type: string) => { + switch (type) { + case 'report': + toast('体检报告的图片最多上传9张') + break + case 'pdf': + uploadPdf.value?.clearFiles() + const file = files[0] as UploadRawFile + file.uid = genFileId() + uploadPdf.value?.handleStart(file) + break + case 'idCard': + toast('身份证正反面最多上传2张') + break + default: + break + } + } + + return { + uploadPdf, + fileUploadList, + imgViewerVisible, + viewerIndex, + previewSrcList, + startUpload, + beforeRemove, + handlePreview, + closeImageViewer, + handleExceed, + pdfDialog, + previewPdf + } +} diff --git a/src/hooks/useCreateModal.ts b/src/hooks/useCreateModal.ts new file mode 100644 index 0000000..781253f --- /dev/null +++ b/src/hooks/useCreateModal.ts @@ -0,0 +1,62 @@ +import { createVNode, render as VueRender, type Component } from "vue"; +import zhCn from "element-plus/es/locale/lang/zh-cn"; + +export interface CreateModalOptions { + [key: string]: any + title: string + visible?: boolean + width?: number | string + onConfirm?: Fn + onCancel?: Fn +} + +export interface ModalProps { + [key: string]: any + title: string + visible: boolean + width: number | string + onConfirm?: Fn + onCancel?: Fn +} +/**挂载 */ +function render(Component: T, props: Partial, container: HTMLElement) { + const vNode = createVNode(Component, props) + VueRender(vNode, container) + document.body.appendChild(container) +} +/**销毁 */ +function destroy(container: HTMLElement) { + document.body.removeChild(container) +} + +export function useCreateModal(Component: T) { + const container = document.createElement('div') + + function close() { + VueRender(null, container) + destroy(container) + } + + const commandComponent = (options: CreateModalOptions) => { + const propsData: Partial = { + ...options, + onConfirm: function (...args) { + if (options.onConfirm) { + options.onConfirm(...args) + } + }, + onCancel: function () { + if (options.onCancel) { + options.onCancel() + } + close() + }, + } + + render(Component, propsData, container) + } + + commandComponent.close = close + + return commandComponent +} \ No newline at end of file diff --git a/src/hooks/useDictOptions.ts b/src/hooks/useDictOptions.ts new file mode 100644 index 0000000..6c9800b --- /dev/null +++ b/src/hooks/useDictOptions.ts @@ -0,0 +1,80 @@ +/* + * @Author: micky + * @Date: 2024-07-17 17:01:15 + * @LastEditors: micky + * @LastEditTime: 2024-07-27 16:37:52 + * @FilePath: \maintenance-admin\src\hooks\useDictOptions.ts + */ +import { dictDataAll } from '@/api/setting/dict' +import { reactive, toRaw } from 'vue' +import cache from '@/utils/cache' +import { DICT_KEY } from '@/enums/cacheEnums' + +interface Options { + [propName: string]: { + api: PromiseFun + params?: Record + transformData?(data: any): any + } +} + +// { +// dict: { +// api: dictData, +// params: { name: 'user' }, +// transformData(data: any) { +// return data.list +// } +// } +// } + +export function useDictOptions(options: Options) { + const optionsData: any = reactive({}) + const optionsKey = Object.keys(options) + const apiLists = optionsKey.map(key => { + const value = options[key] + optionsData[key] = [] + return () => value.api(toRaw(value.params) || {}) + }) + + const refresh = async () => { + const res = await Promise.allSettled>(apiLists.map(api => api())) + res.forEach((item, index) => { + const key = optionsKey[index] + + if (item.status == 'fulfilled') { + const { transformData } = options[key] + const data = transformData ? transformData(item.value) : item.value + optionsData[key] = data + } + }) + } + refresh() + return { + optionsData: optionsData as T, + refresh + } +} + +// useDictOptions<{ +// dict: any[] +// }>({ +// dict: dictData +// }) + +export function useDictData(dict: string[]) { + const options: Options = {} + for (const type of dict) { + options[type] = { + api: dictDataAll, + params: { + dictType: type + } + } + } + const { optionsData } = useDictOptions(options) + + return { + dictData: optionsData + } +} diff --git a/src/hooks/useFetchData.ts b/src/hooks/useFetchData.ts new file mode 100644 index 0000000..0d68a74 --- /dev/null +++ b/src/hooks/useFetchData.ts @@ -0,0 +1,67 @@ +type OptionsType = { + apiFn: (payload: any) => Promise // 请求api + onSuccess?: (response: T[] | any) => void // 接口调用成功的回调函数 + onError?: (err: any) => void // 接口调用失败的回调函数 +} +type StateType = { + loading: boolean // loading + data: T[] // 返回结果 +} + +/** + * 获取异步请求数据 + */ +export function useFetchData(options: OptionsType) { + const { apiFn, onSuccess, onError } = options + + const state: StateType = reactive({ + loading: false, + data: [] + }) + + const loadData = async () => { + state.loading = true + try { + const result = await apiFn() + state.data = result + onSuccess && onSuccess(result) + } catch (error) { + onError && onError(error) + } finally { + state.loading = false + } + } + + onMounted(loadData) + + return { + ...toRefs(state), + loadData + } +} + +/** + * loading + */ +export function useRequest(options: OptionsType) { + const { apiFn, onSuccess, onError } = options + + const loading = ref(false) + + const runFn = async (...args: any[]) => { + loading.value = true + try { + const result = await apiFn(...args) + onSuccess && onSuccess(result) + } catch (error) { + onError && onError(error) + } finally { + loading.value = false + } + } + + return { + loading, + runFn + } +} diff --git a/src/hooks/useLockFn.ts b/src/hooks/useLockFn.ts new file mode 100644 index 0000000..c4423d6 --- /dev/null +++ b/src/hooks/useLockFn.ts @@ -0,0 +1,21 @@ +import { ref } from 'vue' + +export function useLockFn(fn: (...args: any[]) => Promise) { + const isLock = ref(false) + const lockFn = async (...args: any[]) => { + if (isLock.value) return + isLock.value = true + try { + const res = await fn(...args) + isLock.value = false + return res + } catch (e) { + isLock.value = false + throw e + } + } + return { + isLock, + lockFn + } +} diff --git a/src/hooks/useMultipleTabs.ts b/src/hooks/useMultipleTabs.ts new file mode 100644 index 0000000..6298b55 --- /dev/null +++ b/src/hooks/useMultipleTabs.ts @@ -0,0 +1,57 @@ +/* + * @Author: micky 1254597151@qq.com + * @Date: 2023-08-14 15:56:31 + * @LastEditors: micky + * @LastEditTime: 2024-07-19 15:20:19 + * @FilePath: \maintenance-admin\src\hooks\useMultipleTabs.ts + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +import useTabsStore from '@/stores/modules/multipleTabs' +import useSettingStore from '@/stores/modules/setting' +import { objectToQuery } from '@/utils/util' + +export default function useMultipleTabs() { + const router = useRouter() + const route = useRoute() + const tabsStore = useTabsStore() + const settingStore = useSettingStore() + + const tabsLists = computed(() => { + return tabsStore.getTabList + }) + + const currentTab = computed(() => { + return Object.keys(route.query).length > 0 ? `${route.path}?${objectToQuery(route.query)}` : route.path + // return route.path + }) + + const addTab = () => { + if (!settingStore.openMultipleTabs) return + tabsStore.addTab(router) + } + + const removeTab = (fullPath?: any) => { + if (!settingStore.openMultipleTabs) return + fullPath = fullPath ?? route.fullPath + tabsStore.removeTab(fullPath, router) + } + + const removeOtherTab = () => { + if (!settingStore.openMultipleTabs) return + tabsStore.removeOtherTab(route) + } + + const removeAllTab = () => { + if (!settingStore.openMultipleTabs) return + tabsStore.removeAllTab(router) + } + + return { + tabsLists, + currentTab, + addTab, + removeTab, + removeOtherTab, + removeAllTab + } +} diff --git a/src/hooks/usePaging.ts b/src/hooks/usePaging.ts new file mode 100644 index 0000000..b9f66db --- /dev/null +++ b/src/hooks/usePaging.ts @@ -0,0 +1,82 @@ +/* + * @Author: micky + * @Date: 2024-07-17 17:01:15 + * @LastEditors: micky + * @LastEditTime: 2024-07-25 20:52:31 + * @FilePath: \maintenance-admin\src\hooks\usePaging.ts + */ +import { reactive, toRaw } from 'vue' + +// 分页钩子函数 +interface Options { + page?: number + size?: number + fetchFun: (_arg: any) => Promise + params?: Record + firstLoading?: boolean + nextFetchFun?: (_arg: any) => any + nextFetchParams?: Record +} + +export function usePaging(options: Options) { + const { page = 1, size = 10, fetchFun, params = {}, firstLoading = false, nextFetchFun, nextFetchParams = {} } = options + // 记录分页初始参数 + const paramsInit: Record = Object.assign({}, toRaw(params)) + // 分页数据 + const pager = reactive({ + page, + size, + loading: firstLoading, + count: 0, + lists: [] as any[], + sum: 0, + actualPaymentTotal: 0, + totalCommissionAmount: 0, + totalOrderAmount: 0 + }) + // 请求分页接口 + const getLists = () => { + pager.loading = true + console.log('params', params) + + return fetchFun({ + pageNo: pager.page, + pageSize: pager.size, + ...params + }) + .then((res: any) => { + pager.count = res?.count + pager.lists = res?.lists + pager.sum = res?.sum ?? 0 + pager.actualPaymentTotal = res?.actualPaymentTotal ?? 0 + pager.totalCommissionAmount = res?.totalCommissionAmount ?? 0 + pager.totalOrderAmount = res?.totalOrderAmount ?? 0 + if (nextFetchFun) nextFetchFun(nextFetchParams) + return Promise.resolve(res) + }) + .catch((err: any) => { + return Promise.reject(err) + }) + .finally(() => { + pager.loading = false + }) + } + // 重置为第一页 + const resetPage = () => { + pager.page = 1 + getLists() + } + // 重置参数 + const resetParams = () => { + Object.keys(paramsInit).forEach(item => { + params[item] = paramsInit[item] + }) + resetPage() + } + return { + pager, + getLists, + resetParams, + resetPage + } +} diff --git a/src/hooks/useParseAudit.ts b/src/hooks/useParseAudit.ts new file mode 100644 index 0000000..17e52e6 --- /dev/null +++ b/src/hooks/useParseAudit.ts @@ -0,0 +1,60 @@ +import { + AuditResultEnum, + auditResultTagType, + auditResultMap, + AuditStatusEnum, + auditTagType, + receiveFlowColor, + ReceiveFlowEnum, + auditColor, + purchaseFlowColor, + PurchaseFlowEnum +} from '@/enums/businessEnums' +export function useParseAudit() { + // 审核状态 + const parseStatus = computed(() => (arr: any, status: AuditStatusEnum) => { + const obj = arr.find(i => i.value == status) + return obj?.name || '' + }) + const parseTagType = computed(() => (status: AuditStatusEnum) => auditTagType[status]) + const parseTagColor = computed(() => (status: AuditStatusEnum) => auditColor[status]) + + // 审核结果 + const parseResult = computed(() => (status: AuditResultEnum) => auditResultMap[status]) + const parseResultType = computed(() => (status: AuditResultEnum) => auditResultTagType[status]) + + return { + parseStatus, + parseTagType, + parseResult, + parseResultType, + parseTagColor + } +} +// 采购订单、领用的流程状态 +export function useReceiveFlow() { + const parseColor = computed(() => (status: ReceiveFlowEnum) => receiveFlowColor[status]) + const parseName = computed(() => (arr: any, status: ReceiveFlowEnum) => { + const obj = arr.find(i => i.value == status) + return obj?.name || '' + }) + + return { + parseColor, + parseName + } +} + +// 采购的流程状态 +export function usePurchaseFlow() { + const parsePurchaseColor = computed(() => (status: PurchaseFlowEnum) => purchaseFlowColor[status]) + const parsePurchaseName = computed(() => (arr: any, status: PurchaseFlowEnum) => { + const obj = arr.find(i => i.value == status) + return obj?.name || '' + }) + + return { + parsePurchaseColor, + parsePurchaseName + } +} diff --git a/src/hooks/useSettingRule.ts b/src/hooks/useSettingRule.ts new file mode 100644 index 0000000..607d71c --- /dev/null +++ b/src/hooks/useSettingRule.ts @@ -0,0 +1,56 @@ +import type { ElTable } from "element-plus" +import Sortable from 'sortablejs' + +export function useSettingRule() { + const tableList = ref([]) + const selectTableList = ref([]) + const tableDataRef = ref>() + + /**添加时间节点 */ + const handleAddItem = (item: T) => { + tableList.value.push(item) + } + /**批量删除 */ + const handleBatchDelete = () => { + const selectedIds = unref(selectTableList).map(item => item.uid) + tableList.value = unref(tableList).filter(item => !selectedIds.includes(item.uid)) + selectTableList.value = [] + tableDataRef.value?.clearSelection() + } + /**删除(取消选中删除项)*/ + const handleDelete = (scope: any) => { + const { $index, row } = scope + tableList.value.splice($index, 1) + if (!unref(selectTableList).length) return + selectTableList.value = unref(selectTableList).filter(item => item.uid !== row.uid) + tableDataRef.value?.toggleRowSelection(row, false) + } + /**拖拽表格 */ + const initDropTable = () => { + if (tableDataRef.value) { + const el = tableDataRef.value.$el.querySelector('.el-table__body tbody') + return Sortable.create(el, { + handle: '.el-table__row', + onEnd: ({ newIndex, oldIndex }: { newIndex: number; oldIndex: number }) => { + const arr = tableList.value + const currRow = arr.splice(oldIndex, 1)[0] + arr.splice(newIndex, 0, currRow) + tableList.value = [] + nextTick(() => { + tableList.value = arr + }) + } + }) + } + } + + return { + selectTableList, + tableList, + tableDataRef, + handleAddItem, + handleBatchDelete, + handleDelete, + initDropTable, + } +} diff --git a/src/hooks/useWatchRoute.ts b/src/hooks/useWatchRoute.ts new file mode 100644 index 0000000..381b2ec --- /dev/null +++ b/src/hooks/useWatchRoute.ts @@ -0,0 +1,17 @@ +import type { RouteLocationNormalizedLoaded } from 'vue-router' + +export function useWatchRoute(callback: (route: RouteLocationNormalizedLoaded) => void) { + const route = useRoute() + watch( + route, + () => { + callback(route) + }, + { + immediate: true + } + ) + return { + route + } +} diff --git a/src/install/directives/copy.ts b/src/install/directives/copy.ts new file mode 100644 index 0000000..c0b1909 --- /dev/null +++ b/src/install/directives/copy.ts @@ -0,0 +1,28 @@ +/** + * perm 操作权限处理 + * 指令用法: + * 编辑 + */ + +import feedback from '@/utils/feedback' +import useClipboard from 'vue-clipboard3' +const clipboard = 'data-clipboard-text' +export default { + mounted: (el: HTMLElement, binding: any) => { + el.setAttribute(clipboard, binding.value) + const { toClipboard } = useClipboard() + + el.onclick = () => { + toClipboard(el.getAttribute(clipboard)!) + .then(() => { + feedback.msgSuccess('复制成功') + }) + .catch(() => { + feedback.msgError('复制失败') + }) + } + }, + updated: (el: HTMLElement, binding: any) => { + el.setAttribute(clipboard, binding.value) + } +} diff --git a/src/install/directives/perms.ts b/src/install/directives/perms.ts new file mode 100644 index 0000000..e62765f --- /dev/null +++ b/src/install/directives/perms.ts @@ -0,0 +1,28 @@ +/** + * perm 操作权限处理 + * 指令用法: + * 编辑 + */ + +import useUserStore from '@/stores/modules/user' +export default { + mounted: (el: HTMLElement, binding: any) => { + const { value } = binding + const userStore = useUserStore() + const permissions = userStore.perms + const all_permission = '*' + if (Array.isArray(value)) { + if (value.length > 0) { + const hasPermission = permissions.some((key: string) => { + return all_permission == key || value.includes(key) + }) + + if (!hasPermission) { + el.parentNode && el.parentNode.removeChild(el) + } + } + } else { + throw new Error('like v-perms="[\'auth.menu/edit\']"') + } + } +} diff --git a/src/install/index.ts b/src/install/index.ts new file mode 100644 index 0000000..eab8563 --- /dev/null +++ b/src/install/index.ts @@ -0,0 +1,27 @@ +import type { App } from 'vue' +const modules = import.meta.glob('./**/*', { eager: true }) + +// 安装方法,执行某一类相同操作 +function install(app: App) { + Object.keys(modules).forEach((key) => { + const name = key.replace(/(.*\/)*([^.]+).*/gi, '$2') + const type = key.replace(/^\.\/([\w-]+).*/gi, '$1') + const module: any = modules[key] + if (module.default) { + switch (type) { + // 用于注册全局指令 + case 'directives': + app.directive(name, module.default) + break + // 使用插件 + case 'plugins': + typeof module.default === 'function' && module.default(app) + break + } + } + }) +} + +export default { + install +} diff --git a/src/install/plugins/echart.ts b/src/install/plugins/echart.ts new file mode 100644 index 0000000..3d3aee0 --- /dev/null +++ b/src/install/plugins/echart.ts @@ -0,0 +1,65 @@ +//引入 echarts 核心模块,核心模块提供了 echarts 使用必须要的接口。 + +import * as echarts from 'echarts/core' +//引入柱状图图表,图表后缀都为 Chart +import { + BarChart, + LineChart, + PieChart, + MapChart, + PictorialBarChart, + RadarChart, + ScatterChart, + GaugeChart +} from 'echarts/charts' +// 引入提示框,标题,直角坐标系,数据集,内置数据转换器组件,组件后缀都为 Component +import { + TitleComponent, + TooltipComponent, + GridComponent, + PolarComponent, + AriaComponent, + ParallelComponent, + LegendComponent, + RadarComponent, + ToolboxComponent, + DataZoomComponent, + VisualMapComponent, + TimelineComponent, + CalendarComponent, + GraphicComponent +} from 'echarts/components' + +//引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步 +import { CanvasRenderer } from 'echarts/renderers' +//标签自动布局,全局过渡动画等特性 +import { LabelLayout, UniversalTransition } from 'echarts/features' + +// 注册必须的组件 +echarts.use([ + LegendComponent, + TitleComponent, + TooltipComponent, + GridComponent, + PolarComponent, + AriaComponent, + ParallelComponent, + BarChart, + LineChart, + PieChart, + MapChart, + RadarChart, + PictorialBarChart, + RadarComponent, + ToolboxComponent, + DataZoomComponent, + VisualMapComponent, + TimelineComponent, + CalendarComponent, + GraphicComponent, + ScatterChart, + CanvasRenderer, + LabelLayout, + UniversalTransition, + GaugeChart +]) diff --git a/src/install/plugins/element.ts b/src/install/plugins/element.ts new file mode 100644 index 0000000..ac6ae23 --- /dev/null +++ b/src/install/plugins/element.ts @@ -0,0 +1,11 @@ +import * as ElementPlusIcons from '@element-plus/icons-vue' +import type { App } from 'vue' +//https://github.com/element-plus/element-plus/issues/7293 +import 'element-plus/es/components/dialog/style/css' + +export default (app: App) => { + // 全局注册ElementPlus图标 + for (const [key, component] of Object.entries(ElementPlusIcons)) { + app.component(key, component) + } +} diff --git a/src/install/plugins/hljs.ts b/src/install/plugins/hljs.ts new file mode 100644 index 0000000..f7154e2 --- /dev/null +++ b/src/install/plugins/hljs.ts @@ -0,0 +1,8 @@ +import type { App } from 'vue' +import 'highlight.js/styles/github.css' +// import hljs from 'highlight.js/lib/common' +import hljsVuePlugin from '@highlightjs/vue-plugin' +// console.log(hljs) +export default (app: App) => { + app.use(hljsVuePlugin) +} diff --git a/src/install/plugins/pinia.ts b/src/install/plugins/pinia.ts new file mode 100644 index 0000000..6e72e75 --- /dev/null +++ b/src/install/plugins/pinia.ts @@ -0,0 +1,6 @@ +import store from '@/stores' +import type { App } from 'vue' + +export default (app: App) => { + app.use(store) +} diff --git a/src/install/plugins/router.ts b/src/install/plugins/router.ts new file mode 100644 index 0000000..4e3647d --- /dev/null +++ b/src/install/plugins/router.ts @@ -0,0 +1,6 @@ +import router from '@/router' +import type { App } from 'vue' + +export default (app: App) => { + app.use(router) +} diff --git a/src/layout/components/footer/index.vue b/src/layout/components/footer/index.vue new file mode 100644 index 0000000..037a977 --- /dev/null +++ b/src/layout/components/footer/index.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/layout/components/header/breadcrumb.vue b/src/layout/components/header/breadcrumb.vue new file mode 100644 index 0000000..58c8ef2 --- /dev/null +++ b/src/layout/components/header/breadcrumb.vue @@ -0,0 +1,20 @@ + + diff --git a/src/layout/components/header/fold.vue b/src/layout/components/header/fold.vue new file mode 100644 index 0000000..7ce9360 --- /dev/null +++ b/src/layout/components/header/fold.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/layout/components/header/full-screen.vue b/src/layout/components/header/full-screen.vue new file mode 100644 index 0000000..96cec1e --- /dev/null +++ b/src/layout/components/header/full-screen.vue @@ -0,0 +1,10 @@ + + + diff --git a/src/layout/components/header/index.vue b/src/layout/components/header/index.vue new file mode 100644 index 0000000..8aacd7f --- /dev/null +++ b/src/layout/components/header/index.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/src/layout/components/header/multiple-tabs.vue b/src/layout/components/header/multiple-tabs.vue new file mode 100644 index 0000000..e43836b --- /dev/null +++ b/src/layout/components/header/multiple-tabs.vue @@ -0,0 +1,131 @@ + + + + diff --git a/src/layout/components/header/refresh.vue b/src/layout/components/header/refresh.vue new file mode 100644 index 0000000..a55ccba --- /dev/null +++ b/src/layout/components/header/refresh.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/layout/components/header/user-drop-down.vue b/src/layout/components/header/user-drop-down.vue new file mode 100644 index 0000000..3970709 --- /dev/null +++ b/src/layout/components/header/user-drop-down.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/layout/components/main.vue b/src/layout/components/main.vue new file mode 100644 index 0000000..bf3fc96 --- /dev/null +++ b/src/layout/components/main.vue @@ -0,0 +1,31 @@ + + + + + + diff --git a/src/layout/components/setting/drawer.vue b/src/layout/components/setting/drawer.vue new file mode 100644 index 0000000..82ed4e5 --- /dev/null +++ b/src/layout/components/setting/drawer.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/src/layout/components/setting/index.vue b/src/layout/components/setting/index.vue new file mode 100644 index 0000000..d0f4957 --- /dev/null +++ b/src/layout/components/setting/index.vue @@ -0,0 +1,19 @@ + + + diff --git a/src/layout/components/sidebar/index.vue b/src/layout/components/sidebar/index.vue new file mode 100644 index 0000000..28413a0 --- /dev/null +++ b/src/layout/components/sidebar/index.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/src/layout/components/sidebar/logo.vue b/src/layout/components/sidebar/logo.vue new file mode 100644 index 0000000..c9920a8 --- /dev/null +++ b/src/layout/components/sidebar/logo.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/src/layout/components/sidebar/menu-item.vue b/src/layout/components/sidebar/menu-item.vue new file mode 100644 index 0000000..e3d5048 --- /dev/null +++ b/src/layout/components/sidebar/menu-item.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/src/layout/components/sidebar/menu.vue b/src/layout/components/sidebar/menu.vue new file mode 100644 index 0000000..7fce71b --- /dev/null +++ b/src/layout/components/sidebar/menu.vue @@ -0,0 +1,99 @@ + + + + + + diff --git a/src/layout/components/sidebar/side.vue b/src/layout/components/sidebar/side.vue new file mode 100644 index 0000000..8723135 --- /dev/null +++ b/src/layout/components/sidebar/side.vue @@ -0,0 +1,73 @@ + + + + + + diff --git a/src/layout/index.vue b/src/layout/index.vue new file mode 100644 index 0000000..d764a53 --- /dev/null +++ b/src/layout/index.vue @@ -0,0 +1,33 @@ + + + + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..29feca6 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,16 @@ +import { createApp } from 'vue' +import App from './App.vue' +import install from './install' +import './permission' +import './styles/index.scss' +import 'virtual:svg-icons-register' +import eventBus from 'vue3-eventbus' +import directives from './directives' +import print from 'vue3-print-nb' + +const app = createApp(App) +app.use(install) +app.use(eventBus) +app.use(directives) +app.use(print) +app.mount('#app') diff --git a/src/permission.ts b/src/permission.ts new file mode 100644 index 0000000..296c054 --- /dev/null +++ b/src/permission.ts @@ -0,0 +1,93 @@ +/* + * @Author: micky + * @Date: 2024-07-17 17:01:14 + * @LastEditors: micky + * @LastEditTime: 2024-07-26 17:03:29 + * @FilePath: \maintenance-admin\src\permission.ts + */ +/** + * 权限控制 + */ + +import NProgress from 'nprogress' +import router, { findFirstValidRoute } from './router' +import 'nprogress/nprogress.css' +import { isExternal } from './utils/validate' +import useUserStore from './stores/modules/user' +import { INDEX_ROUTE, INDEX_ROUTE_NAME } from './router/routes' +import { PageEnum } from './enums/pageEnum' +import useTabsStore from './stores/modules/multipleTabs' +import { clearAuthInfo } from './utils/auth' +import config from './config' + +// NProgress配置 +NProgress.configure({ showSpinner: false }) + +const loginPath = PageEnum.LOGIN +const defaultPath = PageEnum.INDEX +// 免登录白名单 +const whiteList: string[] = [PageEnum.LOGIN, PageEnum.ERROR_403] +router.beforeEach(async (to, from, next) => { + // 开始 Progress Bar + NProgress.start() + document.title = to.meta.title ?? config.title + const userStore = useUserStore() + const tabsStore = useTabsStore() + if (whiteList.includes(to.path)) { + // 在免登录白名单,直接进入 + next() + } else if (userStore.token) { + // 获取用户信息 + const hasGetUserInfo = Object.keys(userStore.userInfo).length !== 0 + if (hasGetUserInfo) { + if (to.path === loginPath) { + next({ path: defaultPath }) + } else { + next() + } + } else { + try { + await userStore.getUserInfo() + await userStore.getMenu() + const routes = userStore.routes + console.log('routes', routes) + + // 找到第一个有效路由 + const routeName = findFirstValidRoute(routes) + // 没有有效路由跳转到403页面 + if (!routeName) { + clearAuthInfo() + next(PageEnum.ERROR_403) + return + } + tabsStore.setRouteName(routeName) + INDEX_ROUTE.redirect = { name: routeName } + + // 动态添加index路由 + router.addRoute(INDEX_ROUTE) + routes.forEach((route: any) => { + // https 则不插入 + if (isExternal(route.path)) { + return + } + if (!route.children) { + router.addRoute(INDEX_ROUTE_NAME, route) + return + } + // 动态添加可访问路由表 + router.addRoute(route) + }) + next({ ...to, replace: true }) + } catch (err) { + clearAuthInfo() + next({ path: loginPath, query: { redirect: to.fullPath } }) + } + } + } else { + next({ path: loginPath, query: { redirect: to.fullPath } }) + } +}) + +router.afterEach(() => { + NProgress.done() +}) diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..0bc155e --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,111 @@ +import { createRouter, createWebHistory, RouterView, type RouteRecordRaw } from 'vue-router' +import { MenuEnum } from '@/enums/appEnums' +import { isExternal } from '@/utils/validate' +import { constantRoutes, INDEX_ROUTE_NAME, LAYOUT } from './routes' +import useUserStore from '@/stores/modules/user' + +// 匹配views里面所有的.vue文件,动态引入 +const modules = import.meta.glob('/src/views/**/*.vue') + +// +export function getModulesKey() { + return Object.keys(modules).map(item => item.replace('/src/views/', '').replace('.vue', '')) +} + +// 过滤路由所需要的数据 +export function filterAsyncRoutes(routes: any[], firstRoute = true) { + return routes.map(route => { + const routeRecord = createRouteRecord(route, firstRoute) + if (route.children != null && route.children && route.children.length) { + routeRecord.children = filterAsyncRoutes(route.children, false) + } + return routeRecord + }) +} + +// 创建一条路由记录 +export function createRouteRecord(route: any, firstRoute: boolean): RouteRecordRaw { + //@ts-ignore + const routeRecord: RouteRecordRaw = { + path: isExternal(route.paths) ? route.paths : firstRoute ? `/${route.paths}` : route.paths, + name: Symbol(route.paths), + meta: { + hidden: !route.isShow, + keepAlive: !!route.isCache, + title: route.menuName, + perms: route.perms, + query: route.params, + icon: route.menuIcon, + type: route.menuType, + activeMenu: route.selected + } + } + switch (route.menuType) { + case MenuEnum.CATALOGUE: + routeRecord.component = firstRoute ? LAYOUT : RouterView + if (!route.children) { + routeRecord.component = RouterView + } + break + case MenuEnum.MENU: + routeRecord.component = loadRouteView(route.component) + break + } + return routeRecord +} + +// 动态加载组件 +export function loadRouteView(component: string) { + + try { + const key = Object.keys(modules).find(key => { + return key.includes(`${component}.vue`) + }) + if (key) { + return modules[key] + } + throw Error(`找不到组件${component},请确保组件路径正确`) + } catch (error) { + console.error(error) + return RouterView + } +} + +// 找到第一个有效的路由 +export function findFirstValidRoute(routes: RouteRecordRaw[]): string | undefined { + for (const route of routes) { + if (route.meta?.type == MenuEnum.MENU && !route.meta?.hidden && !isExternal(route.path)) { + return route.name as string + } + if (route.children) { + const name = findFirstValidRoute(route.children) + if (name) { + return name + } + } + } +} +//通过权限字符查询路由路径 +export function getRoutePath(perms: string) { + const routerObj = useRouter() || router + return routerObj.getRoutes().find(item => item.meta?.perms == perms)?.path || '' +} + +// 重置路由 +export function resetRouter() { + router.removeRoute(INDEX_ROUTE_NAME) + const { routes } = useUserStore() + routes.forEach(route => { + const name = route.name + if (name && router.hasRoute(name)) { + router.removeRoute(name) + } + }) +} + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: constantRoutes +}) + +export default router diff --git a/src/router/routes.ts b/src/router/routes.ts new file mode 100644 index 0000000..b99075c --- /dev/null +++ b/src/router/routes.ts @@ -0,0 +1,217 @@ +/** + * Note: 路由配置项 + * + * path: '/path' // 路由路径 + * name:'router-name' // 设定路由的名字,一定要填写不然使用时会出现各种问题 + * meta : { + title: 'title' // 设置该路由在侧边栏的名字 + icon: 'icon-name' // 设置该路由的图标 + activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。 + query: '{"id": 1}' // 访问路由的默认传递参数 + hidden: true // 当设置 true 的时候该路由不会在侧边栏出现 + hideTab: true //当设置 true 的时候该路由不会在多标签tab栏出现 + } + */ + +import type { RouteRecordRaw } from 'vue-router' +import { PageEnum } from '@/enums/pageEnum' +import Layout from '@/layout/index.vue' + +export const LAYOUT = () => Promise.resolve(Layout) + +export const INDEX_ROUTE_NAME = Symbol() + +export const constantRoutes: Array = [ + { + path: PageEnum.ERROR_404, + component: () => import('@/views/error/404.vue') + }, + { + path: PageEnum.ERROR_403, + component: () => import('@/views/error/403.vue') + }, + { + path: PageEnum.LOGIN, + component: () => import('@/views/account/login.vue') + }, + { + path: '/dev_tools', + component: LAYOUT, + children: [ + { + path: 'code/edit', + component: () => import('@/views/dev_tools/code/edit.vue'), + meta: { + title: '编辑数据表', + activeMenu: '/dev_tools/code' + } + } + ] + }, + { + path: '/setting', + component: LAYOUT, + children: [ + { + path: 'dict/data', + component: () => import('@/views/setting/dict/data/index.vue'), + meta: { + title: '数据管理', + activeMenu: '/setting/dict' + } + }, + { + path: 'system/task/edit', + component: () => import('@/views/setting/system/task/edit.vue'), + meta: { + title: '新增任务', + activeMenu: '/setting/system/task' + } + } + ] + }, + { + path: '/setting', + component: LAYOUT, + children: [ + { + path: 'dict/data', + component: () => import('@/views/setting/dict/data/index.vue'), + meta: { + title: '数据管理', + activeMenu: '/setting/dict' + } + } + ] + }, + { + path: '/order', + component: LAYOUT, + children: [ + { + path: 'lists/detail', + component: () => import('@/views/order/lists/detail.vue'), + meta: { + title: '订单列表', + activeMenu: '/order/lists' + } + } + ] + }, + { + path: '/material', + component: LAYOUT, + children: [ + { + path: '/material/receive/detail', + component: () => import('@/views/material/receive/detail.vue'), + meta: { + title: '配件领用审核', + activeMenu: '/material/receive' + } + }, + { + path: '/material/receive/send', + component: () => import('@/views/material/receive/send.vue'), + meta: { + title: '配件领用发送物流', + activeMenu: '/material/receive' + } + }, + { + path: '/material/allot/edit', + component: () => import('@/views/material/allot/edit.vue'), + meta: { + title: '配件调拨表单', + activeMenu: '/material/allot' + } + }, + { + path: '/material/allot/detail', + component: () => import('@/views/material/allot/detail.vue'), + meta: { + title: '配件调拨详情', + activeMenu: '/material/allot' + } + }, + { + path: '/material/outOfStock/edit', + component: () => import('@/views/material/outOfStock/edit.vue'), + meta: { + title: '配件出库表单', + activeMenu: '/material/outOfStock' + } + }, + { + path: '/material/outOfStock/detail', + component: () => import('@/views/material/outOfStock/detail.vue'), + meta: { + title: '配件出库详情', + activeMenu: '/material/outOfStock' + } + }, + { + path: '/material/warehousing/edit', + component: () => import('@/views/material/warehousing/edit.vue'), + meta: { + title: '配件入库表单', + activeMenu: '/material/warehousing' + } + }, + { + path: '/material/warehousing/detail', + component: () => import('@/views/material/warehousing/detail.vue'), + meta: { + title: '配件入库详情', + activeMenu: '/material/warehousing' + } + }, + { + path: '/material/audit/audit', + component: () => import('@/views/material/audit/audit.vue'), + meta: { + title: '配件出入库审核表单', + activeMenu: '/material/audit' + } + }, + { + path: '/material/purchaseOrder/detail', + component: () => import('@/views/material/purchaseOrder/detail.vue'), + meta: { + title: '配件采购审核', + activeMenu: '/material/purchaseOrder' + } + }, + { + path: '/material/purchaseOrder/send', + component: () => import('@/views/material/purchaseOrder/send.vue'), + meta: { + title: '配件采购发送物流', + activeMenu: '/material/purchaseOrder' + } + }, + { + path: '/material/purchase/add', + component: () => import('@/views/material/purchase/add.vue'), + meta: { + title: '配件采购新建', + activeMenu: '/material/purchase' + } + }, + { + path: '/material/purchase/detail', + component: () => import('@/views/material/purchase/detail.vue'), + meta: { + title: '配件采购详情', + activeMenu: '/material/purchase' + } + } + ] + } +] + +export const INDEX_ROUTE: RouteRecordRaw = { + path: PageEnum.INDEX, + component: LAYOUT, + name: INDEX_ROUTE_NAME +} diff --git a/src/stores/index.ts b/src/stores/index.ts new file mode 100644 index 0000000..7c7ea69 --- /dev/null +++ b/src/stores/index.ts @@ -0,0 +1,3 @@ +import { createPinia } from 'pinia' +const store = createPinia() +export default store diff --git a/src/stores/modules/app.ts b/src/stores/modules/app.ts new file mode 100644 index 0000000..d6cba57 --- /dev/null +++ b/src/stores/modules/app.ts @@ -0,0 +1,53 @@ +import { getConfig } from '@/api/app' +import { defineStore } from 'pinia' +interface AppSate { + config: Record + isMobile: boolean + isCollapsed: boolean + isRouteShow: boolean +} + +const useAppStore = defineStore({ + id: 'app', + state: (): AppSate => { + return { + config: {}, + isMobile: true, + isCollapsed: false, + isRouteShow: true + } + }, + actions: { + getImageUrl(url: string) { + return url && url.includes(this.config.ossDomain) + ? url + : `${this.config.ossDomain}${url}` + }, + getConfig() { + return new Promise((resolve, reject) => { + getConfig() + .then((data) => { + this.config = data + resolve(data) + }) + .catch((err) => { + reject(err) + }) + }) + }, + setMobile(value: boolean) { + this.isMobile = value + }, + toggleCollapsed(toggle?: boolean) { + this.isCollapsed = toggle ?? !this.isCollapsed + }, + refreshView() { + this.isRouteShow = false + nextTick(() => { + this.isRouteShow = true + }) + } + } +}) + +export default useAppStore diff --git a/src/stores/modules/multipleTabs.ts b/src/stores/modules/multipleTabs.ts new file mode 100644 index 0000000..59a475d --- /dev/null +++ b/src/stores/modules/multipleTabs.ts @@ -0,0 +1,173 @@ +import { defineStore } from 'pinia' +import { isExternal } from '@/utils/validate' +import type { LocationQuery, RouteLocationNormalized, RouteParamsRaw, Router, RouteRecordName } from 'vue-router' +import { PageEnum } from '@/enums/pageEnum' +import cache from '@/utils/cache' +import { TAB_KEY, TAB_MAP } from '@/enums/cacheEnums' + +interface TabItem { + name: RouteRecordName + fullPath: string + path: string + title?: string + query?: LocationQuery + params?: RouteParamsRaw +} + +interface TabsSate { + cacheTabList: Set + tabList: TabItem[] + tasMap: Record + indexRouteName: RouteRecordName +} + +const getHasTabIndex = (path: string, tabList: TabItem[]) => { + return tabList.findIndex(item => item.path == path) +} + +const isCannotAddRoute = (route: RouteLocationNormalized, router: Router) => { + const { path, meta, name } = route + if (!path || isExternal(path)) return true + if (meta?.hideTab) return true + if (!router.hasRoute(name!)) return true + if (([PageEnum.LOGIN, PageEnum.ERROR_403] as string[]).includes(path)) { + return true + } + return false +} + +const findTabsIndex = (fullPath: string, tabList: TabItem[]) => { + return tabList.findIndex(item => item.fullPath === fullPath) +} + +const getComponentName = (route: RouteLocationNormalized) => { + return route.matched.at(-1)?.components?.default?.name +} + +export const getRouteParams = (tabItem: TabItem) => { + const { params, path, query } = tabItem + return { + params: params || {}, + path, + query: query || {} + } +} + +const useTabsStore = defineStore({ + id: 'tabs', + state: (): TabsSate => ({ + cacheTabList: new Set(), + tabList: cache.get(TAB_KEY) || [], + tasMap: cache.get(TAB_MAP) || {}, + indexRouteName: '' + }), + getters: { + getTabList(): TabItem[] { + return this.tabList + }, + getCacheTabList(): string[] { + return Array.from(this.cacheTabList) + } + }, + actions: { + setRouteName(name: RouteRecordName) { + this.indexRouteName = name + }, + addCache(componentName?: string) { + if (componentName) this.cacheTabList.add(componentName) + }, + removeCache(componentName?: string) { + if (componentName && this.cacheTabList.has(componentName)) { + this.cacheTabList.delete(componentName) + } + }, + clearCache() { + this.cacheTabList.clear() + }, + resetState() { + this.cacheTabList = new Set() + this.tabList = [] + this.tasMap = {} + this.indexRouteName = '' + cache.set(TAB_KEY, []) + cache.set(TAB_MAP, {}) + }, + addTab(router: Router) { + const route = unref(router.currentRoute) + const { name, query, meta, params, fullPath, path } = route + if (isCannotAddRoute(route, router)) return + + const hasTabIndex = getHasTabIndex(path!, this.tabList) + const componentName = getComponentName(route) + const tabItem = { + name: name!, + path, + fullPath, + title: meta?.title, + query, + params + } + this.tasMap[fullPath] = tabItem + if (meta?.keepAlive) { + this.addCache(componentName) + } + if (hasTabIndex != -1) { + this.tabList.splice(hasTabIndex, 1, tabItem) + return + } + + this.tabList.push(tabItem) + cache.set(TAB_KEY, this.tabList) + cache.set(TAB_MAP, this.tasMap) + }, + removeTab(fullPath: string, router: Router) { + const { currentRoute, push } = router + const index = findTabsIndex(fullPath, this.tabList) + // 移除tab + if (this.tabList.length > 1) { + index !== -1 && this.tabList.splice(index, 1) + } + cache.set(TAB_KEY, this.tabList) + const componentName = getComponentName(currentRoute.value) + this.removeCache(componentName) + if (fullPath !== currentRoute.value.fullPath) { + return + } + // 删除选中的tab + let toTab: TabItem | null = null + + if (index === 0) { + toTab = this.tabList[index] + } else { + toTab = this.tabList[index - 1] + } + cache.set(TAB_KEY, this.tabList) + const toRoute = getRouteParams(toTab) + push(toRoute) + }, + removeOtherTab(route: RouteLocationNormalized) { + this.tabList = this.tabList.filter(item => item.fullPath == route.fullPath) + const componentName = getComponentName(route) + this.cacheTabList.forEach(name => { + if (componentName !== name) { + this.removeCache(name) + } + }) + cache.set(TAB_KEY, this.tabList) + }, + removeAllTab(router: Router) { + const { push, currentRoute } = router + const { name } = unref(currentRoute) + if (name == this.indexRouteName) { + this.removeOtherTab(currentRoute.value) + return + } + this.tabList = [] + this.clearCache() + push(PageEnum.INDEX) + cache.set(TAB_KEY, this.tabList) + } + } +}) + +export default useTabsStore diff --git a/src/stores/modules/setting.ts b/src/stores/modules/setting.ts new file mode 100644 index 0000000..219a58b --- /dev/null +++ b/src/stores/modules/setting.ts @@ -0,0 +1,55 @@ +import { defineStore } from 'pinia' +import defaultSetting from '@/config/setting' +import cache from '@/utils/cache' +import { isObject } from '@vue/shared' +import { setTheme } from '@/utils/theme' +import { SETTING_KEY } from '@/enums/cacheEnums' +const storageSetting = cache.get(SETTING_KEY) + +export const useSettingStore = defineStore({ + id: 'setting', + state: () => { + const state = { + showDrawer: false, + ...defaultSetting + } + isObject(storageSetting) && Object.assign(state, storageSetting) + return state + }, + actions: { + // 设置布局设置 + setSetting(data: Record) { + const { key, value } = data + if (this.hasOwnProperty(key)) { + //@ts-ignore + this[key] = value + } + const settings: any = Object.assign({}, this.$state) + delete settings.showDrawer + cache.set(SETTING_KEY, settings) + }, + // 设置主题色 + setTheme(isDark: boolean) { + setTheme( + { + primary: this.theme, + success: this.successTheme, + warning: this.warningTheme, + danger: this.dangerTheme, + error: this.errorTheme, + info: this.infoTheme + }, + isDark + ) + }, + resetTheme() { + for (const key in defaultSetting) { + //@ts-ignore + this[key] = defaultSetting[key] + } + cache.remove(SETTING_KEY) + } + } +}) + +export default useSettingStore diff --git a/src/stores/modules/user.ts b/src/stores/modules/user.ts new file mode 100644 index 0000000..1df878a --- /dev/null +++ b/src/stores/modules/user.ts @@ -0,0 +1,96 @@ +import { defineStore } from 'pinia' +import cache from '@/utils/cache' +import type { RouteRecordRaw } from 'vue-router' +import { getUserInfo, login, logout, getMenu } from '@/api/user' +import router, { filterAsyncRoutes } from '@/router' +import { TOKEN_KEY } from '@/enums/cacheEnums' +import { PageEnum } from '@/enums/pageEnum' +import { clearAuthInfo, getToken } from '@/utils/auth' +export interface UserState { + token: string + userInfo: Record + routes: RouteRecordRaw[] + menu: any[] + perms: string[] +} + +const useUserStore = defineStore({ + id: 'user', + state: (): UserState => ({ + token: getToken() || '', + // 用户信息 + userInfo: {}, + // 路由 + routes: [], + menu: [], + // 权限 + perms: [] + }), + getters: {}, + actions: { + resetState() { + this.token = '' + this.userInfo = {} + this.perms = [] + }, + login(playload: any) { + const { account, password } = playload + return new Promise((resolve, reject) => { + login({ + username: account, + password: password + }) + .then(data => { + this.token = data.token + cache.set(TOKEN_KEY, data.token) + resolve(data) + }) + .catch(error => { + reject(error) + }) + }) + }, + logout() { + return new Promise((resolve, reject) => { + logout() + .then(async data => { + this.token = '' + await router.push(PageEnum.LOGIN) + clearAuthInfo() + resolve(data) + }) + .catch(error => { + reject(error) + }) + }) + }, + getUserInfo() { + return new Promise((resolve, reject) => { + getUserInfo() + .then(data => { + this.userInfo = data.user + this.perms = data.permissions + resolve(data) + }) + .catch(error => { + reject(error) + }) + }) + }, + getMenu() { + return new Promise((resolve, reject) => { + getMenu() + .then(data => { + this.menu = data + this.routes = filterAsyncRoutes(data) + resolve(data) + }) + .catch(error => { + reject(error) + }) + }) + } + } +}) + +export default useUserStore diff --git a/src/styles/dark.css b/src/styles/dark.css new file mode 100644 index 0000000..ae969fd --- /dev/null +++ b/src/styles/dark.css @@ -0,0 +1,49 @@ +:root.dark { + color-scheme: dark; + --table-header-bg-color: var(--el-bg-color); + --el-bg-color-page: #0a0a0a; + --el-bg-color: #1d2124; + --el-bg-color-overlay: #1d1e1f; + --el-text-color-primary: #e5eaf3; + --el-text-color-regular: #cfd3dc; + --el-text-color-secondary: #a3a6ad; + --el-text-color-placeholder: #8d9095; + --el-text-color-disabled: #6c6e72; + --el-border-color-darker: #636466; + --el-border-color-dark: #58585b; + --el-border-color: #4c4d4f; + --el-border-color-light: #414243; + --el-border-color-lighter: #363637; + --el-border-color-extra-light: #2b2b2c; + --el-fill-color-darker: #424243; + --el-fill-color-dark: #39393a; + --el-fill-color: #303030; + --el-fill-color-light: #262727; + --el-fill-color-lighter: #1d1d1d; + --el-fill-color-extra-light: #191919; + --el-fill-color-blank: var(--el-bg-color); + --el-mask-color: rgba(0, 0, 0, 0.8); + --el-mask-color-extra-light: rgba(0, 0, 0, 0.3); + --el-box-shadow: 0px 12px 32px 4px rgba(0, 0, 0, 0.36), 0px 8px 20px rgba(0, 0, 0, 0.72); + --el-box-shadow-light: 0px 0px 12px rgba(0, 0, 0, 0.72); + --el-box-shadow-lighter: 0px 0px 6px rgba(0, 0, 0, 0.72); + --el-box-shadow-dark: 0px 16px 48px 16px rgba(0, 0, 0, 0.72), 0px 12px 32px #000000, + 0px 8px 16px -8px #000000 !important; + /* wangeditor主题 */ + --w-e-textarea-bg-color: var(--el-bg-color); + --w-e-textarea-color: var(--el-text-color-primary); + --w-e-textarea-border-color: var(--el-border-color); + --w-e-textarea-slight-border-color: var(--el-border-color-light); + --w-e-textarea-slight-color: var(--el-border-color); + --w-e-textarea-slight-bg-color: var(--el-bg-color-page); + /* --w-e-textarea-selected-border-color: #b4d5ff; + --w-e-textarea-handler-bg-color: #4290f7; */ + --w-e-toolbar-color: var(--el-text-color-primary); + --w-e-toolbar-bg-color: var(--el-bg-color); + --w-e-toolbar-active-color: var(--el-text-color-primary); + --w-e-toolbar-active-bg-color: var(--el-bg-color); + --w-e-toolbar-disabled-color: var(--el-text-color-disabled); + --w-e-toolbar-border-color: var(--el-border-color); + --w-e-modal-button-bg-color: var(--el-bg-color); + --w-e-modal-button-border-color: var(--el-border-color); +} diff --git a/src/styles/element.scss b/src/styles/element.scss new file mode 100644 index 0000000..7060923 --- /dev/null +++ b/src/styles/element.scss @@ -0,0 +1,172 @@ +:root { + // 弹窗居中 + .el-overlay-dialog { + display: flex; + justify-content: center; + align-items: center; + min-height: 100%; + position: static; + + .el-dialog { + --el-dialog-content-font-size: var(--el-font-size-base); + --el-dialog-margin-top: 50px; + max-width: calc(100vw - 30px); + flex: none; + display: flex; + flex-direction: column; + border-radius: 5px; + + &.body-padding .el-dialog__body { + padding: 0; + } + + .el-dialog__body { + flex: 1; + padding: 15px 20px; + } + .el-dialog__header { + font-size: var(--el-font-size-large); + text-align: left; + } + } + } + + .el-drawer { + --el-drawer-padding-primary: 16px; + &__header { + margin-bottom: 0; + padding: 13px 16px; + border-bottom: 1px solid var(--el-border-color-lighter); + } + &__title { + @apply text-tx-primary; + } + } + + .el-table { + --el-table-header-text-color: var(--el-text-color-primary); + --el-table-header-bg-color: var(--table-header-bg-color); + font-size: var(--el-font-size-base); + + thead { + th { + font-weight: 400; + } + } + } + + .el-input-group__prepend { + background-color: var(--el-fill-color-blank); + } + + .el-checkbox { + --el-checkbox-font-size: var(--el-font-size-base); + } + + .el-menu--popup-container { + &.theme-light { + .el-menu { + .el-menu-item { + &.is-active { + @apply bg-primary-light-9 border-primary border-r-2; + } + } + .el-menu-item:hover, + .el-sub-menu__title:hover { + color: var(--el-color-primary); + } + } + } + &.theme-dark { + .el-menu { + .el-menu-item { + &.is-active { + @apply bg-primary; + } + } + } + } + } + + .el-message-box { + --el-messagebox-width: 350px; + } + .el-date-editor { + --el-date-editor-width: 280px; + .el-range-input { + font-size: var(--el-font-size-small); + } + } + + .el-button--primary { + --el-button-hover-link-text-color: var(--el-color-primary-light-3); + } + .el-button--success { + --el-button-hover-link-text-color: var(--el-color-success-light-3); + } + .el-button--info { + --el-button-hover-link-text-color: var(--el-color-info-light-3); + } + .el-button--warning { + --el-button-hover-link-text-color: var(--el-color-warning-light-3); + } + .el-button--danger { + --el-button-hover-link-text-color: var(--el-color-danger-light-3); + } + .el-image__error { + font-size: 12px; + } + .el-tabs__nav-wrap::after { + height: 1px; + } +} +@media (max-width: 768px) { + .el-pagination > .el-pagination__jump { + display: none !important; + } + .el-pagination > .el-pagination__sizes { + display: none !important; + } +} +.el-pagination { + .el-select { + width: 105px !important; + .el-select__wrapper { + min-height: 28px; + } + } + .el-input__inner { + height: 28px; + } +} + +.el-button { + // 防止被tailwindcss默认样式覆盖 + background-color: var(--el-button-bg-color, var(--el-color-white)); + + //覆盖el-button的点击样式 + &:focus { + border-color: var(--el-button-border-color); + background-color: var(--el-button-bg-color); + } + &:hover { + color: var(--el-button-hover-text-color); + border-color: var(--el-button-hover-border-color); + background-color: var(--el-button-hover-bg-color); + } +} + +.el-form-item__content { + .el-select { + width: 100%; + } +} +.common-form { + .el-input, + .el-select { + width: 250px; + } +} +.custom-form.el-form--inline .el-form-item { + width: 100%; +} diff --git a/src/styles/font.css b/src/styles/font.css new file mode 100644 index 0000000..6950cd6 --- /dev/null +++ b/src/styles/font.css @@ -0,0 +1,8 @@ +@font-face { + /*给字体命名*/ + font-family: "AlimamaAgileVF"; + /*引入字体文件*/ + src: url("@/assets/font/AlimamaAgileVF-Thin.ttf"); + font-weight: normal; + font-style: normal; +} diff --git a/src/styles/global.scss b/src/styles/global.scss new file mode 100644 index 0000000..a4d3a43 --- /dev/null +++ b/src/styles/global.scss @@ -0,0 +1,3 @@ +.status-decorate { + @apply w-2 h-2 rounded-[50%] mr-1; +} \ No newline at end of file diff --git a/src/styles/index.scss b/src/styles/index.scss new file mode 100644 index 0000000..efa4e53 --- /dev/null +++ b/src/styles/index.scss @@ -0,0 +1,7 @@ +@import 'element.scss'; +@import 'dark.css'; +@import 'var.css'; +@import 'tailwind.css'; +@import 'public.scss'; +@import 'font.css'; +@import 'global.scss'; diff --git a/src/styles/public.scss b/src/styles/public.scss new file mode 100644 index 0000000..b260837 --- /dev/null +++ b/src/styles/public.scss @@ -0,0 +1,39 @@ +body { + @apply text-base text-tx-primary overflow-hidden min-w-[375px]; +} +.form-tips { + @apply text-tx-secondary text-xs leading-6 mt-1; +} + +.clearfix:after { + content: ''; + display: block; + clear: both; + visibility: hidden; +} + +/* NProgress */ +#nprogress .bar { + @apply bg-primary #{!important}; +} + +/*定义滚动条高宽及背景 + 高宽分别对应横竖滚动条的尺寸*/ +::-webkit-scrollbar { + width: 8px; + height: 8px; + background-color: #f5f5f5; +} +/*定义滚动条轨道 + 内阴影+圆角*/ +::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + border-radius: 10px; + background-color: #f5f5f5; +} +/*定义滑块 + 内阴影+圆角*/ +::-webkit-scrollbar-thumb { + border-radius: 10px; + background-color: #9bb1d8; +} diff --git a/src/styles/tailwind.css b/src/styles/tailwind.css new file mode 100644 index 0000000..bd6213e --- /dev/null +++ b/src/styles/tailwind.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/src/styles/var.css b/src/styles/var.css new file mode 100644 index 0000000..d84a027 --- /dev/null +++ b/src/styles/var.css @@ -0,0 +1,49 @@ +:root { + --el-font-family: theme(fontFamily.sans); + --el-font-weight-primary: 400; + --el-menu-item-height: 40px; + --el-menu-sub-item-height: var(--el-menu-item-height); + --el-menu-icon-width: 18px; + --aside-width: 200px; + --navbar-height: 50px; + --color-white: #ffffff; + --color-red: #d9001b; + --table-header-bg-color: #f5f7fa; + --el-font-size-extra-large: 18px; + --el-menu-base-level-padding: 16px; + --el-menu-level-padding: 26px; + --el-font-size-large: 16px; + --el-font-size-medium: 15px; + --el-font-size-base: 14px; + --el-font-size-small: 13px; + --el-font-size-extra-small: 12px; + + --el-bg-color: var(--color-white); + --el-bg-color-page: #f5f7fa; + --el-bg-color-overlay: #ffffff; + --el-text-color-primary: #333333; + --el-text-color-regular: #666666; + --el-text-color-secondary: #999999; + --el-text-color-placeholder: #a8abb2; + --el-text-color-disabled: #c0c4cc; + --el-border-color: #d5d5d5; + --el-border-color-light: #e4e7ed; + --el-border-color-lighter: #ebeef5; + --el-border-color-extra-light: #f2f2f2; + --el-border-color-dark: #d4d7de; + --el-border-color-darker: #cdd0d6; + --el-fill-color: #f0f2f5; + --el-fill-color-light: #f8f8f8; + --el-fill-color-lighter: #fafafa; + --el-fill-color-extra-light: #fafcff; + --el-fill-color-dark: #ebedf0; + --el-fill-color-darker: #e6e8eb; + --el-fill-color-blank: #ffffff; + --el-mask-color: rgba(255, 255, 255, 0.9); + --el-mask-color-extra-light: rgba(255, 255, 255, 0.3); + -el-box-shadow: 0px 12px 32px 4px rgba(0, 0, 0, 0.04), 0px 8px 20px rgba(0, 0, 0, 0.08); + --el-box-shadow-light: 0px 0px 12px rgba(0, 0, 0, 0.12); + --el-box-shadow-lighter: 0px 0px 6px rgba(0, 0, 0, 0.12); + --el-box-shadow-dark: 0px 16px 48px 16px rgba(0, 0, 0, 0.08), 0px 12px 32px rgba(0, 0, 0, 0.12), 0px 8px 16px -8px rgba(0, 0, 0, 0.16); + --el-card-border-radius: 8px; +} diff --git a/src/utils/area.ts b/src/utils/area.ts new file mode 100644 index 0000000..7748dcd --- /dev/null +++ b/src/utils/area.ts @@ -0,0 +1 @@ +export default [{ "value": 110000, "pid": 100000, "label": "北京", "children": [{ "value": 110100, "pid": 110000, "label": "北京市", "children": [{ "value": 110101, "pid": 110100, "label": "东城区", }, { "value": 110102, "pid": 110100, "label": "西城区", }, { "value": 110105, "pid": 110100, "label": "朝阳区", }, { "value": 110106, "pid": 110100, "label": "丰台区", }, { "value": 110107, "pid": 110100, "label": "石景山区", }, { "value": 110108, "pid": 110100, "label": "海淀区", }, { "value": 110109, "pid": 110100, "label": "门头沟区", }, { "value": 110111, "pid": 110100, "label": "房山区", }, { "value": 110112, "pid": 110100, "label": "通州区", }, { "value": 110113, "pid": 110100, "label": "顺义区", }, { "value": 110114, "pid": 110100, "label": "昌平区", }, { "value": 110115, "pid": 110100, "label": "大兴区", }, { "value": 110116, "pid": 110100, "label": "怀柔区", }, { "value": 110117, "pid": 110100, "label": "平谷区", }, { "value": 110118, "pid": 110100, "label": "密云区", }, { "value": 110119, "pid": 110100, "label": "延庆区", }, { "value": 110120, "pid": 110100, "label": "中关村科技园区", }] }] }, { "value": 120000, "pid": 100000, "label": "天津", "children": [{ "value": 120100, "pid": 120000, "label": "天津市", "children": [{ "value": 120101, "pid": 120100, "label": "和平区", }, { "value": 120102, "pid": 120100, "label": "河东区", }, { "value": 120103, "pid": 120100, "label": "河西区", }, { "value": 120104, "pid": 120100, "label": "南开区", }, { "value": 120105, "pid": 120100, "label": "河北区", }, { "value": 120106, "pid": 120100, "label": "红桥区", }, { "value": 120110, "pid": 120100, "label": "东丽区", }, { "value": 120111, "pid": 120100, "label": "西青区", }, { "value": 120112, "pid": 120100, "label": "津南区", }, { "value": 120113, "pid": 120100, "label": "北辰区", }, { "value": 120114, "pid": 120100, "label": "武清区", }, { "value": 120115, "pid": 120100, "label": "宝坻区", }, { "value": 120116, "pid": 120100, "label": "滨海新区", }, { "value": 120117, "pid": 120100, "label": "宁河区", }, { "value": 120118, "pid": 120100, "label": "静海区", }, { "value": 120119, "pid": 120100, "label": "蓟州区", }, { "value": 120120, "pid": 120100, "label": "滨海高新区", }] }] }, { "value": 130000, "pid": 100000, "label": "河北省", "children": [{ "value": 130100, "pid": 130000, "label": "石家庄市", "children": [{ "value": 130102, "pid": 130100, "label": "长安区", }, { "value": 130104, "pid": 130100, "label": "桥西区", }, { "value": 130105, "pid": 130100, "label": "新华区", }, { "value": 130107, "pid": 130100, "label": "井陉矿区", }, { "value": 130108, "pid": 130100, "label": "裕华区", }, { "value": 130109, "pid": 130100, "label": "藁城区", }, { "value": 130110, "pid": 130100, "label": "鹿泉区", }, { "value": 130111, "pid": 130100, "label": "栾城区", }, { "value": 130121, "pid": 130100, "label": "井陉县", }, { "value": 130123, "pid": 130100, "label": "正定县", }, { "value": 130125, "pid": 130100, "label": "行唐县", }, { "value": 130126, "pid": 130100, "label": "灵寿县", }, { "value": 130127, "pid": 130100, "label": "高邑县", }, { "value": 130128, "pid": 130100, "label": "深泽县", }, { "value": 130129, "pid": 130100, "label": "赞皇县", }, { "value": 130130, "pid": 130100, "label": "无极县", }, { "value": 130131, "pid": 130100, "label": "平山县", }, { "value": 130132, "pid": 130100, "label": "元氏县", }, { "value": 130133, "pid": 130100, "label": "赵县", }, { "value": 130181, "pid": 130100, "label": "辛集市", }, { "value": 130183, "pid": 130100, "label": "晋州市", }, { "value": 130184, "pid": 130100, "label": "新乐市", }, { "value": 130185, "pid": 130100, "label": "高新区", }, { "value": 130186, "pid": 130100, "label": "经济开发区", }, { "value": 130187, "pid": 130100, "label": "循环化工园区", }] }, { "value": 130200, "pid": 130000, "label": "唐山市", "children": [{ "value": 130202, "pid": 130200, "label": "路南区", }, { "value": 130203, "pid": 130200, "label": "路北区", }, { "value": 130204, "pid": 130200, "label": "古冶区", }, { "value": 130205, "pid": 130200, "label": "开平区", }, { "value": 130207, "pid": 130200, "label": "丰南区", }, { "value": 130208, "pid": 130200, "label": "丰润区", }, { "value": 130209, "pid": 130200, "label": "曹妃甸区", }, { "value": 130224, "pid": 130200, "label": "滦南县", }, { "value": 130225, "pid": 130200, "label": "乐亭县", }, { "value": 130227, "pid": 130200, "label": "迁西县", }, { "value": 130229, "pid": 130200, "label": "玉田县", }, { "value": 130281, "pid": 130200, "label": "遵化市", }, { "value": 130283, "pid": 130200, "label": "迁安市", }, { "value": 130284, "pid": 130200, "label": "滦州市", }, { "value": 130291, "pid": 130200, "label": "高新区", }, { "value": 130292, "pid": 130200, "label": "芦台开发区", }, { "value": 130293, "pid": 130200, "label": "海港经济开发区", }, { "value": 130294, "pid": 130200, "label": "汉沽管理区", }] }, { "value": 130300, "pid": 130000, "label": "秦皇岛市", "children": [{ "value": 130302, "pid": 130300, "label": "海港区", }, { "value": 130303, "pid": 130300, "label": "山海关区", }, { "value": 130304, "pid": 130300, "label": "北戴河区", }, { "value": 130306, "pid": 130300, "label": "抚宁区", }, { "value": 130321, "pid": 130300, "label": "青龙满族自治县", }, { "value": 130322, "pid": 130300, "label": "昌黎县", }, { "value": 130324, "pid": 130300, "label": "卢龙县", }, { "value": 130371, "pid": 130300, "label": "经济技术开发区", }, { "value": 130372, "pid": 130300, "label": "北戴河新区", }] }, { "value": 130400, "pid": 130000, "label": "邯郸市", "children": [{ "value": 130402, "pid": 130400, "label": "邯山区", }, { "value": 130403, "pid": 130400, "label": "丛台区", }, { "value": 130404, "pid": 130400, "label": "复兴区", }, { "value": 130406, "pid": 130400, "label": "峰峰矿区", }, { "value": 130407, "pid": 130400, "label": "肥乡区", }, { "value": 130408, "pid": 130400, "label": "永年区", }, { "value": 130423, "pid": 130400, "label": "临漳县", }, { "value": 130424, "pid": 130400, "label": "成安县", }, { "value": 130425, "pid": 130400, "label": "大名县", }, { "value": 130426, "pid": 130400, "label": "涉县", }, { "value": 130427, "pid": 130400, "label": "磁县", }, { "value": 130430, "pid": 130400, "label": "邱县", }, { "value": 130431, "pid": 130400, "label": "鸡泽县", }, { "value": 130432, "pid": 130400, "label": "广平县", }, { "value": 130433, "pid": 130400, "label": "馆陶县", }, { "value": 130434, "pid": 130400, "label": "魏县", }, { "value": 130435, "pid": 130400, "label": "曲周县", }, { "value": 130481, "pid": 130400, "label": "武安市", }, { "value": 130482, "pid": 130400, "label": "冀南新区", }, { "value": 130483, "pid": 130400, "label": "高新技术产业开发区", }] }, { "value": 130500, "pid": 130000, "label": "邢台市", "children": [{ "value": 130502, "pid": 130500, "label": "桥东区", }, { "value": 130503, "pid": 130500, "label": "桥西区", }, { "value": 130521, "pid": 130500, "label": "邢台县", }, { "value": 130522, "pid": 130500, "label": "临城县", }, { "value": 130523, "pid": 130500, "label": "内丘县", }, { "value": 130524, "pid": 130500, "label": "柏乡县", }, { "value": 130525, "pid": 130500, "label": "隆尧县", }, { "value": 130526, "pid": 130500, "label": "任县", }, { "value": 130527, "pid": 130500, "label": "南和县", }, { "value": 130528, "pid": 130500, "label": "宁晋县", }, { "value": 130529, "pid": 130500, "label": "巨鹿县", }, { "value": 130530, "pid": 130500, "label": "新河县", }, { "value": 130531, "pid": 130500, "label": "广宗县", }, { "value": 130532, "pid": 130500, "label": "平乡县", }, { "value": 130533, "pid": 130500, "label": "威县", }, { "value": 130534, "pid": 130500, "label": "清河县", }, { "value": 130535, "pid": 130500, "label": "临西县", }, { "value": 130581, "pid": 130500, "label": "南宫市", }, { "value": 130582, "pid": 130500, "label": "沙河市", }, { "value": 130583, "pid": 130500, "label": "经济开发区", }] }, { "value": 130600, "pid": 130000, "label": "保定市", "children": [{ "value": 130602, "pid": 130600, "label": "竞秀区", }, { "value": 130606, "pid": 130600, "label": "莲池区", }, { "value": 130607, "pid": 130600, "label": "满城区", }, { "value": 130608, "pid": 130600, "label": "清苑区", }, { "value": 130609, "pid": 130600, "label": "徐水区", }, { "value": 130623, "pid": 130600, "label": "涞水县", }, { "value": 130624, "pid": 130600, "label": "阜平县", }, { "value": 130626, "pid": 130600, "label": "定兴县", }, { "value": 130627, "pid": 130600, "label": "唐县", }, { "value": 130628, "pid": 130600, "label": "高阳县", }, { "value": 130629, "pid": 130600, "label": "容城县", }, { "value": 130630, "pid": 130600, "label": "涞源县", }, { "value": 130631, "pid": 130600, "label": "望都县", }, { "value": 130632, "pid": 130600, "label": "安新县", }, { "value": 130633, "pid": 130600, "label": "易县", }, { "value": 130634, "pid": 130600, "label": "曲阳县", }, { "value": 130635, "pid": 130600, "label": "蠡县", }, { "value": 130636, "pid": 130600, "label": "顺平县", }, { "value": 130637, "pid": 130600, "label": "博野县", }, { "value": 130638, "pid": 130600, "label": "雄县", }, { "value": 130681, "pid": 130600, "label": "涿州市", }, { "value": 130682, "pid": 130600, "label": "定州市", }, { "value": 130683, "pid": 130600, "label": "安国市", }, { "value": 130684, "pid": 130600, "label": "高碑店市", }, { "value": 130685, "pid": 130600, "label": "雄安新区", }, { "value": 130686, "pid": 130600, "label": "高新区", }, { "value": 130687, "pid": 130600, "label": "白沟新城", }] }, { "value": 130700, "pid": 130000, "label": "张家口市", "children": [{ "value": 130702, "pid": 130700, "label": "桥东区", }, { "value": 130703, "pid": 130700, "label": "桥西区", }, { "value": 130705, "pid": 130700, "label": "宣化区", }, { "value": 130706, "pid": 130700, "label": "下花园区", }, { "value": 130708, "pid": 130700, "label": "万全区", }, { "value": 130709, "pid": 130700, "label": "崇礼区", }, { "value": 130722, "pid": 130700, "label": "张北县", }, { "value": 130723, "pid": 130700, "label": "康保县", }, { "value": 130724, "pid": 130700, "label": "沽源县", }, { "value": 130725, "pid": 130700, "label": "尚义县", }, { "value": 130726, "pid": 130700, "label": "蔚县", }, { "value": 130727, "pid": 130700, "label": "阳原县", }, { "value": 130728, "pid": 130700, "label": "怀安县", }, { "value": 130730, "pid": 130700, "label": "怀来县", }, { "value": 130731, "pid": 130700, "label": "涿鹿县", }, { "value": 130732, "pid": 130700, "label": "赤城县", }, { "value": 130771, "pid": 130700, "label": "高新区", }, { "value": 130772, "pid": 130700, "label": "察北管理区", }, { "value": 130773, "pid": 130700, "label": "塞北管理区", }] }, { "value": 130800, "pid": 130000, "label": "承德市", "children": [{ "value": 130802, "pid": 130800, "label": "双桥区", }, { "value": 130803, "pid": 130800, "label": "双滦区", }, { "value": 130804, "pid": 130800, "label": "鹰手营子矿区", }, { "value": 130821, "pid": 130800, "label": "承德县", }, { "value": 130822, "pid": 130800, "label": "兴隆县", }, { "value": 130824, "pid": 130800, "label": "滦平县", }, { "value": 130825, "pid": 130800, "label": "隆化县", }, { "value": 130826, "pid": 130800, "label": "丰宁满族自治县", }, { "value": 130827, "pid": 130800, "label": "宽城满族自治县", }, { "value": 130828, "pid": 130800, "label": "围场满族蒙古族自治县", }, { "value": 130881, "pid": 130800, "label": "平泉市", }, { "value": 130882, "pid": 130800, "label": "高新区", }] }, { "value": 130900, "pid": 130000, "label": "沧州市", "children": [{ "value": 130902, "pid": 130900, "label": "新华区", }, { "value": 130903, "pid": 130900, "label": "运河区", }, { "value": 130921, "pid": 130900, "label": "沧县", }, { "value": 130922, "pid": 130900, "label": "青县", }, { "value": 130923, "pid": 130900, "label": "东光县", }, { "value": 130924, "pid": 130900, "label": "海兴县", }, { "value": 130925, "pid": 130900, "label": "盐山县", }, { "value": 130926, "pid": 130900, "label": "肃宁县", }, { "value": 130927, "pid": 130900, "label": "南皮县", }, { "value": 130928, "pid": 130900, "label": "吴桥县", }, { "value": 130929, "pid": 130900, "label": "献县", }, { "value": 130930, "pid": 130900, "label": "孟村回族自治县", }, { "value": 130981, "pid": 130900, "label": "泊头市", }, { "value": 130982, "pid": 130900, "label": "任丘市", }, { "value": 130983, "pid": 130900, "label": "黄骅市", }, { "value": 130984, "pid": 130900, "label": "河间市", }, { "value": 130985, "pid": 130900, "label": "渤海新区", }, { "value": 130986, "pid": 130900, "label": "高新区", }, { "value": 130987, "pid": 130900, "label": "临港开发区", }] }, { "value": 131000, "pid": 130000, "label": "廊坊市", "children": [{ "value": 131002, "pid": 131000, "label": "安次区", }, { "value": 131003, "pid": 131000, "label": "广阳区", }, { "value": 131022, "pid": 131000, "label": "固安县", }, { "value": 131023, "pid": 131000, "label": "永清县", }, { "value": 131024, "pid": 131000, "label": "香河县", }, { "value": 131025, "pid": 131000, "label": "大城县", }, { "value": 131026, "pid": 131000, "label": "文安县", }, { "value": 131028, "pid": 131000, "label": "大厂回族自治县", }, { "value": 131081, "pid": 131000, "label": "霸州市", }, { "value": 131082, "pid": 131000, "label": "三河市", }, { "value": 131083, "pid": 131000, "label": "经济技术开发区", }] }, { "value": 131100, "pid": 130000, "label": "衡水市", "children": [{ "value": 131102, "pid": 131100, "label": "桃城区", }, { "value": 131103, "pid": 131100, "label": "冀州区", }, { "value": 131121, "pid": 131100, "label": "枣强县", }, { "value": 131122, "pid": 131100, "label": "武邑县", }, { "value": 131123, "pid": 131100, "label": "武强县", }, { "value": 131124, "pid": 131100, "label": "饶阳县", }, { "value": 131125, "pid": 131100, "label": "安平县", }, { "value": 131126, "pid": 131100, "label": "故城县", }, { "value": 131127, "pid": 131100, "label": "景县", }, { "value": 131128, "pid": 131100, "label": "阜城县", }, { "value": 131182, "pid": 131100, "label": "深州市", }, { "value": 131183, "pid": 131100, "label": "经济开发区", }, { "value": 131184, "pid": 131100, "label": "滨湖新区", }] }] }, { "value": 140000, "pid": 100000, "label": "山西省", "children": [{ "value": 140100, "pid": 140000, "label": "太原市", "children": [{ "value": 140105, "pid": 140100, "label": "小店区", }, { "value": 140106, "pid": 140100, "label": "迎泽区", }, { "value": 140107, "pid": 140100, "label": "杏花岭区", }, { "value": 140108, "pid": 140100, "label": "尖草坪区", }, { "value": 140109, "pid": 140100, "label": "万柏林区", }, { "value": 140110, "pid": 140100, "label": "晋源区", }, { "value": 140121, "pid": 140100, "label": "清徐县", }, { "value": 140122, "pid": 140100, "label": "阳曲县", }, { "value": 140123, "pid": 140100, "label": "娄烦县", }, { "value": 140181, "pid": 140100, "label": "古交市", }, { "value": 140182, "pid": 140100, "label": "高新阳曲园区", }, { "value": 140183, "pid": 140100, "label": "高新汾东园区", }, { "value": 140184, "pid": 140100, "label": "高新姚村园区", }] }, { "value": 140200, "pid": 140000, "label": "大同市", "children": [{ "value": 140212, "pid": 140200, "label": "新荣区", }, { "value": 140213, "pid": 140200, "label": "平城区", }, { "value": 140214, "pid": 140200, "label": "云冈区", }, { "value": 140215, "pid": 140200, "label": "云州区", }, { "value": 140221, "pid": 140200, "label": "阳高县", }, { "value": 140222, "pid": 140200, "label": "天镇县", }, { "value": 140223, "pid": 140200, "label": "广灵县", }, { "value": 140224, "pid": 140200, "label": "灵丘县", }, { "value": 140225, "pid": 140200, "label": "浑源县", }, { "value": 140226, "pid": 140200, "label": "左云县", }, { "value": 140228, "pid": 140200, "label": "经济开发区", }] }, { "value": 140300, "pid": 140000, "label": "阳泉市", "children": [{ "value": 140302, "pid": 140300, "label": "城区", }, { "value": 140303, "pid": 140300, "label": "矿区", }, { "value": 140311, "pid": 140300, "label": "郊区", }, { "value": 140321, "pid": 140300, "label": "平定县", }, { "value": 140322, "pid": 140300, "label": "盂县", }] }, { "value": 140400, "pid": 140000, "label": "长治市", "children": [{ "value": 140403, "pid": 140400, "label": "潞州区", }, { "value": 140404, "pid": 140400, "label": "上党区", }, { "value": 140405, "pid": 140400, "label": "屯留区", }, { "value": 140406, "pid": 140400, "label": "潞城区", }, { "value": 140423, "pid": 140400, "label": "襄垣县", }, { "value": 140425, "pid": 140400, "label": "平顺县", }, { "value": 140426, "pid": 140400, "label": "黎城县", }, { "value": 140427, "pid": 140400, "label": "壶关县", }, { "value": 140428, "pid": 140400, "label": "长子县", }, { "value": 140429, "pid": 140400, "label": "武乡县", }, { "value": 140430, "pid": 140400, "label": "沁县", }, { "value": 140431, "pid": 140400, "label": "沁源县", }] }, { "value": 140500, "pid": 140000, "label": "晋城市", "children": [{ "value": 140502, "pid": 140500, "label": "城区", }, { "value": 140521, "pid": 140500, "label": "沁水县", }, { "value": 140522, "pid": 140500, "label": "阳城县", }, { "value": 140524, "pid": 140500, "label": "陵川县", }, { "value": 140525, "pid": 140500, "label": "泽州县", }, { "value": 140581, "pid": 140500, "label": "高平市", }, { "value": 140582, "pid": 140500, "label": "经济开发区", }] }, { "value": 140600, "pid": 140000, "label": "朔州市", "children": [{ "value": 140602, "pid": 140600, "label": "朔城区", }, { "value": 140603, "pid": 140600, "label": "平鲁区", }, { "value": 140621, "pid": 140600, "label": "山阴县", }, { "value": 140622, "pid": 140600, "label": "应县", }, { "value": 140623, "pid": 140600, "label": "右玉县", }, { "value": 140681, "pid": 140600, "label": "怀仁市", }] }, { "value": 140700, "pid": 140000, "label": "晋中市", "children": [{ "value": 140702, "pid": 140700, "label": "榆次区", }, { "value": 140721, "pid": 140700, "label": "榆社县", }, { "value": 140722, "pid": 140700, "label": "左权县", }, { "value": 140723, "pid": 140700, "label": "和顺县", }, { "value": 140724, "pid": 140700, "label": "昔阳县", }, { "value": 140725, "pid": 140700, "label": "寿阳县", }, { "value": 140726, "pid": 140700, "label": "太谷县", }, { "value": 140727, "pid": 140700, "label": "祁县", }, { "value": 140728, "pid": 140700, "label": "平遥县", }, { "value": 140729, "pid": 140700, "label": "灵石县", }, { "value": 140781, "pid": 140700, "label": "介休市", }] }, { "value": 140800, "pid": 140000, "label": "运城市", "children": [{ "value": 140802, "pid": 140800, "label": "盐湖区", }, { "value": 140821, "pid": 140800, "label": "临猗县", }, { "value": 140822, "pid": 140800, "label": "万荣县", }, { "value": 140823, "pid": 140800, "label": "闻喜县", }, { "value": 140824, "pid": 140800, "label": "稷山县", }, { "value": 140825, "pid": 140800, "label": "新绛县", }, { "value": 140826, "pid": 140800, "label": "绛县", }, { "value": 140827, "pid": 140800, "label": "垣曲县", }, { "value": 140828, "pid": 140800, "label": "夏县", }, { "value": 140829, "pid": 140800, "label": "平陆县", }, { "value": 140830, "pid": 140800, "label": "芮城县", }, { "value": 140881, "pid": 140800, "label": "永济市", }, { "value": 140882, "pid": 140800, "label": "河津市", }] }, { "value": 140900, "pid": 140000, "label": "忻州市", "children": [{ "value": 140902, "pid": 140900, "label": "忻府区", }, { "value": 140921, "pid": 140900, "label": "定襄县", }, { "value": 140922, "pid": 140900, "label": "五台县", }, { "value": 140923, "pid": 140900, "label": "代县", }, { "value": 140924, "pid": 140900, "label": "繁峙县", }, { "value": 140925, "pid": 140900, "label": "宁武县", }, { "value": 140926, "pid": 140900, "label": "静乐县", }, { "value": 140927, "pid": 140900, "label": "神池县", }, { "value": 140928, "pid": 140900, "label": "五寨县", }, { "value": 140929, "pid": 140900, "label": "岢岚县", }, { "value": 140930, "pid": 140900, "label": "河曲县", }, { "value": 140931, "pid": 140900, "label": "保德县", }, { "value": 140932, "pid": 140900, "label": "偏关县", }, { "value": 140981, "pid": 140900, "label": "原平市", }] }, { "value": 141000, "pid": 140000, "label": "临汾市", "children": [{ "value": 141002, "pid": 141000, "label": "尧都区", }, { "value": 141021, "pid": 141000, "label": "曲沃县", }, { "value": 141022, "pid": 141000, "label": "翼城县", }, { "value": 141023, "pid": 141000, "label": "襄汾县", }, { "value": 141024, "pid": 141000, "label": "洪洞县", }, { "value": 141025, "pid": 141000, "label": "古县", }, { "value": 141026, "pid": 141000, "label": "安泽县", }, { "value": 141027, "pid": 141000, "label": "浮山县", }, { "value": 141028, "pid": 141000, "label": "吉县", }, { "value": 141029, "pid": 141000, "label": "乡宁县", }, { "value": 141030, "pid": 141000, "label": "大宁县", }, { "value": 141031, "pid": 141000, "label": "隰县", }, { "value": 141032, "pid": 141000, "label": "永和县", }, { "value": 141033, "pid": 141000, "label": "蒲县", }, { "value": 141034, "pid": 141000, "label": "汾西县", }, { "value": 141081, "pid": 141000, "label": "侯马市", }, { "value": 141082, "pid": 141000, "label": "霍州市", }] }, { "value": 141100, "pid": 140000, "label": "吕梁市", "children": [{ "value": 141102, "pid": 141100, "label": "离石区", }, { "value": 141121, "pid": 141100, "label": "文水县", }, { "value": 141122, "pid": 141100, "label": "交城县", }, { "value": 141123, "pid": 141100, "label": "兴县", }, { "value": 141124, "pid": 141100, "label": "临县", }, { "value": 141125, "pid": 141100, "label": "柳林县", }, { "value": 141126, "pid": 141100, "label": "石楼县", }, { "value": 141127, "pid": 141100, "label": "岚县", }, { "value": 141128, "pid": 141100, "label": "方山县", }, { "value": 141129, "pid": 141100, "label": "中阳县", }, { "value": 141130, "pid": 141100, "label": "交口县", }, { "value": 141181, "pid": 141100, "label": "孝义市", }, { "value": 141182, "pid": 141100, "label": "汾阳市", }] }] }, { "value": 150000, "pid": 100000, "label": "内蒙古自治区", "children": [{ "value": 150100, "pid": 150000, "label": "呼和浩特市", "children": [{ "value": 150102, "pid": 150100, "label": "新城区", }, { "value": 150103, "pid": 150100, "label": "回民区", }, { "value": 150104, "pid": 150100, "label": "玉泉区", }, { "value": 150105, "pid": 150100, "label": "赛罕区", }, { "value": 150121, "pid": 150100, "label": "土默特左旗", }, { "value": 150122, "pid": 150100, "label": "托克托县", }, { "value": 150123, "pid": 150100, "label": "和林格尔县", }, { "value": 150124, "pid": 150100, "label": "清水河县", }, { "value": 150125, "pid": 150100, "label": "武川县", }, { "value": 150171, "pid": 150100, "label": "金海工业园区", }, { "value": 150172, "pid": 150100, "label": "经济技术开发区", }] }, { "value": 150200, "pid": 150000, "label": "包头市", "children": [{ "value": 150202, "pid": 150200, "label": "东河区", }, { "value": 150203, "pid": 150200, "label": "昆都仑区", }, { "value": 150204, "pid": 150200, "label": "青山区", }, { "value": 150205, "pid": 150200, "label": "石拐区", }, { "value": 150206, "pid": 150200, "label": "白云鄂博矿区", }, { "value": 150207, "pid": 150200, "label": "九原区", }, { "value": 150221, "pid": 150200, "label": "土默特右旗", }, { "value": 150222, "pid": 150200, "label": "固阳县", }, { "value": 150223, "pid": 150200, "label": "达尔罕茂明安联合旗", }] }, { "value": 150300, "pid": 150000, "label": "乌海市", "children": [{ "value": 150302, "pid": 150300, "label": "海勃湾区", }, { "value": 150303, "pid": 150300, "label": "海南区", }, { "value": 150304, "pid": 150300, "label": "乌达区", }] }, { "value": 150400, "pid": 150000, "label": "赤峰市", "children": [{ "value": 150402, "pid": 150400, "label": "红山区", }, { "value": 150403, "pid": 150400, "label": "元宝山区", }, { "value": 150404, "pid": 150400, "label": "松山区", }, { "value": 150421, "pid": 150400, "label": "阿鲁科尔沁旗", }, { "value": 150422, "pid": 150400, "label": "巴林左旗", }, { "value": 150423, "pid": 150400, "label": "巴林右旗", }, { "value": 150424, "pid": 150400, "label": "林西县", }, { "value": 150425, "pid": 150400, "label": "克什克腾旗", }, { "value": 150426, "pid": 150400, "label": "翁牛特旗", }, { "value": 150428, "pid": 150400, "label": "喀喇沁旗", }, { "value": 150429, "pid": 150400, "label": "宁城县", }, { "value": 150430, "pid": 150400, "label": "敖汉旗", }] }, { "value": 150500, "pid": 150000, "label": "通辽市", "children": [{ "value": 150502, "pid": 150500, "label": "科尔沁区", }, { "value": 150521, "pid": 150500, "label": "科尔沁左翼中旗", }, { "value": 150522, "pid": 150500, "label": "科尔沁左翼后旗", }, { "value": 150523, "pid": 150500, "label": "开鲁县", }, { "value": 150524, "pid": 150500, "label": "库伦旗", }, { "value": 150525, "pid": 150500, "label": "奈曼旗", }, { "value": 150526, "pid": 150500, "label": "扎鲁特旗", }, { "value": 150581, "pid": 150500, "label": "霍林郭勒市", }] }, { "value": 150600, "pid": 150000, "label": "鄂尔多斯市", "children": [{ "value": 150602, "pid": 150600, "label": "东胜区", }, { "value": 150603, "pid": 150600, "label": "康巴什区", }, { "value": 150621, "pid": 150600, "label": "达拉特旗", }, { "value": 150622, "pid": 150600, "label": "准格尔旗", }, { "value": 150623, "pid": 150600, "label": "鄂托克前旗", }, { "value": 150624, "pid": 150600, "label": "鄂托克旗", }, { "value": 150625, "pid": 150600, "label": "杭锦旗", }, { "value": 150626, "pid": 150600, "label": "乌审旗", }, { "value": 150627, "pid": 150600, "label": "伊金霍洛旗", }] }, { "value": 150700, "pid": 150000, "label": "呼伦贝尔市", "children": [{ "value": 150702, "pid": 150700, "label": "海拉尔区", }, { "value": 150703, "pid": 150700, "label": "扎赉诺尔区", }, { "value": 150721, "pid": 150700, "label": "阿荣旗", }, { "value": 150722, "pid": 150700, "label": "莫力达瓦达斡尔族自治旗", }, { "value": 150723, "pid": 150700, "label": "鄂伦春自治旗", }, { "value": 150724, "pid": 150700, "label": "鄂温克族自治旗", }, { "value": 150725, "pid": 150700, "label": "陈巴尔虎旗", }, { "value": 150726, "pid": 150700, "label": "新巴尔虎左旗", }, { "value": 150727, "pid": 150700, "label": "新巴尔虎右旗", }, { "value": 150781, "pid": 150700, "label": "满洲里市", }, { "value": 150782, "pid": 150700, "label": "牙克石市", }, { "value": 150783, "pid": 150700, "label": "扎兰屯市", }, { "value": 150784, "pid": 150700, "label": "额尔古纳市", }, { "value": 150785, "pid": 150700, "label": "根河市", }] }, { "value": 150800, "pid": 150000, "label": "巴彦淖尔市", "children": [{ "value": 150802, "pid": 150800, "label": "临河区", }, { "value": 150821, "pid": 150800, "label": "五原县", }, { "value": 150822, "pid": 150800, "label": "磴口县", }, { "value": 150823, "pid": 150800, "label": "乌拉特前旗", }, { "value": 150824, "pid": 150800, "label": "乌拉特中旗", }, { "value": 150825, "pid": 150800, "label": "乌拉特后旗", }, { "value": 150826, "pid": 150800, "label": "杭锦后旗", }] }, { "value": 150900, "pid": 150000, "label": "乌兰察布市", "children": [{ "value": 150902, "pid": 150900, "label": "集宁区", }, { "value": 150921, "pid": 150900, "label": "卓资县", }, { "value": 150922, "pid": 150900, "label": "化德县", }, { "value": 150923, "pid": 150900, "label": "商都县", }, { "value": 150924, "pid": 150900, "label": "兴和县", }, { "value": 150925, "pid": 150900, "label": "凉城县", }, { "value": 150926, "pid": 150900, "label": "察哈尔右翼前旗", }, { "value": 150927, "pid": 150900, "label": "察哈尔右翼中旗", }, { "value": 150928, "pid": 150900, "label": "察哈尔右翼后旗", }, { "value": 150929, "pid": 150900, "label": "四子王旗", }, { "value": 150981, "pid": 150900, "label": "丰镇市", }] }, { "value": 152200, "pid": 150000, "label": "兴安盟", "children": [{ "value": 152201, "pid": 152200, "label": "乌兰浩特市", }, { "value": 152202, "pid": 152200, "label": "阿尔山市", }, { "value": 152221, "pid": 152200, "label": "科尔沁右翼前旗", }, { "value": 152222, "pid": 152200, "label": "科尔沁右翼中旗", }, { "value": 152223, "pid": 152200, "label": "扎赉特旗", }, { "value": 152224, "pid": 152200, "label": "突泉县", }] }, { "value": 152500, "pid": 150000, "label": "锡林郭勒盟", "children": [{ "value": 152501, "pid": 152500, "label": "二连浩特市", }, { "value": 152502, "pid": 152500, "label": "锡林浩特市", }, { "value": 152522, "pid": 152500, "label": "阿巴嘎旗", }, { "value": 152523, "pid": 152500, "label": "苏尼特左旗", }, { "value": 152524, "pid": 152500, "label": "苏尼特右旗", }, { "value": 152525, "pid": 152500, "label": "东乌珠穆沁旗", }, { "value": 152526, "pid": 152500, "label": "西乌珠穆沁旗", }, { "value": 152527, "pid": 152500, "label": "太仆寺旗", }, { "value": 152528, "pid": 152500, "label": "镶黄旗", }, { "value": 152529, "pid": 152500, "label": "正镶白旗", }, { "value": 152530, "pid": 152500, "label": "正蓝旗", }, { "value": 152531, "pid": 152500, "label": "多伦县", }] }, { "value": 152900, "pid": 150000, "label": "阿拉善盟", "children": [{ "value": 152921, "pid": 152900, "label": "阿拉善左旗", }, { "value": 152922, "pid": 152900, "label": "阿拉善右旗", }, { "value": 152923, "pid": 152900, "label": "额济纳旗", }] }] }, { "value": 210000, "pid": 100000, "label": "辽宁省", "children": [{ "value": 210100, "pid": 210000, "label": "沈阳市", "children": [{ "value": 210102, "pid": 210100, "label": "和平区", }, { "value": 210103, "pid": 210100, "label": "沈河区", }, { "value": 210104, "pid": 210100, "label": "大东区", }, { "value": 210105, "pid": 210100, "label": "皇姑区", }, { "value": 210106, "pid": 210100, "label": "铁西区", }, { "value": 210111, "pid": 210100, "label": "苏家屯区", }, { "value": 210112, "pid": 210100, "label": "浑南区", }, { "value": 210113, "pid": 210100, "label": "沈北新区", }, { "value": 210114, "pid": 210100, "label": "于洪区", }, { "value": 210115, "pid": 210100, "label": "辽中区", }, { "value": 210123, "pid": 210100, "label": "康平县", }, { "value": 210124, "pid": 210100, "label": "法库县", }, { "value": 210181, "pid": 210100, "label": "新民市", }, { "value": 210182, "pid": 210100, "label": "高新区", }] }, { "value": 210200, "pid": 210000, "label": "大连市", "children": [{ "value": 210202, "pid": 210200, "label": "中山区", }, { "value": 210203, "pid": 210200, "label": "西岗区", }, { "value": 210204, "pid": 210200, "label": "沙河口区", }, { "value": 210211, "pid": 210200, "label": "甘井子区", }, { "value": 210212, "pid": 210200, "label": "旅顺口区", }, { "value": 210213, "pid": 210200, "label": "金州区", }, { "value": 210214, "pid": 210200, "label": "普兰店区", }, { "value": 210224, "pid": 210200, "label": "长海县", }, { "value": 210281, "pid": 210200, "label": "瓦房店市", }, { "value": 210283, "pid": 210200, "label": "庄河市", }, { "value": 210284, "pid": 210200, "label": "高新区", }, { "value": 210285, "pid": 210200, "label": "经济开发区", }, { "value": 210286, "pid": 210200, "label": "金普新区", }] }, { "value": 210300, "pid": 210000, "label": "鞍山市", "children": [{ "value": 210302, "pid": 210300, "label": "铁东区", }, { "value": 210303, "pid": 210300, "label": "铁西区", }, { "value": 210304, "pid": 210300, "label": "立山区", }, { "value": 210311, "pid": 210300, "label": "千山区", }, { "value": 210321, "pid": 210300, "label": "台安县", }, { "value": 210323, "pid": 210300, "label": "岫岩满族自治县", }, { "value": 210381, "pid": 210300, "label": "海城市", }, { "value": 210382, "pid": 210300, "label": "高新区", }] }, { "value": 210400, "pid": 210000, "label": "抚顺市", "children": [{ "value": 210402, "pid": 210400, "label": "新抚区", }, { "value": 210403, "pid": 210400, "label": "东洲区", }, { "value": 210404, "pid": 210400, "label": "望花区", }, { "value": 210411, "pid": 210400, "label": "顺城区", }, { "value": 210421, "pid": 210400, "label": "抚顺县", }, { "value": 210422, "pid": 210400, "label": "新宾满族自治县", }, { "value": 210423, "pid": 210400, "label": "清原满族自治县", }] }, { "value": 210500, "pid": 210000, "label": "本溪市", "children": [{ "value": 210502, "pid": 210500, "label": "平山区", }, { "value": 210503, "pid": 210500, "label": "溪湖区", }, { "value": 210504, "pid": 210500, "label": "明山区", }, { "value": 210505, "pid": 210500, "label": "南芬区", }, { "value": 210521, "pid": 210500, "label": "本溪满族自治县", }, { "value": 210522, "pid": 210500, "label": "桓仁满族自治县", }] }, { "value": 210600, "pid": 210000, "label": "丹东市", "children": [{ "value": 210602, "pid": 210600, "label": "元宝区", }, { "value": 210603, "pid": 210600, "label": "振兴区", }, { "value": 210604, "pid": 210600, "label": "振安区", }, { "value": 210624, "pid": 210600, "label": "宽甸满族自治县", }, { "value": 210681, "pid": 210600, "label": "东港市", }, { "value": 210682, "pid": 210600, "label": "凤城市", }] }, { "value": 210700, "pid": 210000, "label": "锦州市", "children": [{ "value": 210702, "pid": 210700, "label": "古塔区", }, { "value": 210703, "pid": 210700, "label": "凌河区", }, { "value": 210711, "pid": 210700, "label": "太和区", }, { "value": 210726, "pid": 210700, "label": "黑山县", }, { "value": 210727, "pid": 210700, "label": "义县", }, { "value": 210781, "pid": 210700, "label": "凌海市", }, { "value": 210782, "pid": 210700, "label": "北镇市", }, { "value": 210783, "pid": 210700, "label": "松山新区", }, { "value": 210784, "pid": 210700, "label": "龙栖湾新区", }, { "value": 210785, "pid": 210700, "label": "经济技术开发区", }] }, { "value": 210800, "pid": 210000, "label": "营口市", "children": [{ "value": 210802, "pid": 210800, "label": "站前区", }, { "value": 210803, "pid": 210800, "label": "西市区", }, { "value": 210804, "pid": 210800, "label": "鲅鱼圈区", }, { "value": 210811, "pid": 210800, "label": "老边区", }, { "value": 210881, "pid": 210800, "label": "盖州市", }, { "value": 210882, "pid": 210800, "label": "大石桥市", }] }, { "value": 210900, "pid": 210000, "label": "阜新市", "children": [{ "value": 210902, "pid": 210900, "label": "海州区", }, { "value": 210903, "pid": 210900, "label": "新邱区", }, { "value": 210904, "pid": 210900, "label": "太平区", }, { "value": 210905, "pid": 210900, "label": "清河门区", }, { "value": 210911, "pid": 210900, "label": "细河区", }, { "value": 210921, "pid": 210900, "label": "阜新蒙古族自治县", }, { "value": 210922, "pid": 210900, "label": "彰武县", }] }, { "value": 211000, "pid": 210000, "label": "辽阳市", "children": [{ "value": 211002, "pid": 211000, "label": "白塔区", }, { "value": 211003, "pid": 211000, "label": "文圣区", }, { "value": 211004, "pid": 211000, "label": "宏伟区", }, { "value": 211005, "pid": 211000, "label": "弓长岭区", }, { "value": 211011, "pid": 211000, "label": "太子河区", }, { "value": 211021, "pid": 211000, "label": "辽阳县", }, { "value": 211081, "pid": 211000, "label": "灯塔市", }] }, { "value": 211100, "pid": 210000, "label": "盘锦市", "children": [{ "value": 211102, "pid": 211100, "label": "双台子区", }, { "value": 211103, "pid": 211100, "label": "兴隆台区", }, { "value": 211104, "pid": 211100, "label": "大洼区", }, { "value": 211122, "pid": 211100, "label": "盘山县", }] }, { "value": 211200, "pid": 210000, "label": "铁岭市", "children": [{ "value": 211202, "pid": 211200, "label": "银州区", }, { "value": 211204, "pid": 211200, "label": "清河区", }, { "value": 211221, "pid": 211200, "label": "铁岭县", }, { "value": 211223, "pid": 211200, "label": "西丰县", }, { "value": 211224, "pid": 211200, "label": "昌图县", }, { "value": 211281, "pid": 211200, "label": "调兵山市", }, { "value": 211282, "pid": 211200, "label": "开原市", }] }, { "value": 211300, "pid": 210000, "label": "朝阳市", "children": [{ "value": 211302, "pid": 211300, "label": "双塔区", }, { "value": 211303, "pid": 211300, "label": "龙城区", }, { "value": 211321, "pid": 211300, "label": "朝阳县", }, { "value": 211322, "pid": 211300, "label": "建平县", }, { "value": 211324, "pid": 211300, "label": "喀喇沁左翼蒙古族自治县", }, { "value": 211381, "pid": 211300, "label": "北票市", }, { "value": 211382, "pid": 211300, "label": "凌源市", }] }, { "value": 211400, "pid": 210000, "label": "葫芦岛市", "children": [{ "value": 211402, "pid": 211400, "label": "连山区", }, { "value": 211403, "pid": 211400, "label": "龙港区", }, { "value": 211404, "pid": 211400, "label": "南票区", }, { "value": 211421, "pid": 211400, "label": "绥中县", }, { "value": 211422, "pid": 211400, "label": "建昌县", }, { "value": 211481, "pid": 211400, "label": "兴城市", }] }] }, { "value": 220000, "pid": 100000, "label": "吉林省", "children": [{ "value": 220100, "pid": 220000, "label": "长春市", "children": [{ "value": 220102, "pid": 220100, "label": "南关区", }, { "value": 220103, "pid": 220100, "label": "宽城区", }, { "value": 220104, "pid": 220100, "label": "朝阳区", }, { "value": 220105, "pid": 220100, "label": "二道区", }, { "value": 220106, "pid": 220100, "label": "绿园区", }, { "value": 220112, "pid": 220100, "label": "双阳区", }, { "value": 220113, "pid": 220100, "label": "九台区", }, { "value": 220122, "pid": 220100, "label": "农安县", }, { "value": 220182, "pid": 220100, "label": "榆树市", }, { "value": 220183, "pid": 220100, "label": "德惠市", }, { "value": 220184, "pid": 220100, "label": "长春新区", }, { "value": 220185, "pid": 220100, "label": "高新区", }, { "value": 220186, "pid": 220100, "label": "经济技术开发区", }, { "value": 220187, "pid": 220100, "label": "汽车产业开发区", }, { "value": 220188, "pid": 220100, "label": "兴隆综合保税区", }] }, { "value": 220200, "pid": 220000, "label": "吉林市", "children": [{ "value": 220202, "pid": 220200, "label": "昌邑区", }, { "value": 220203, "pid": 220200, "label": "龙潭区", }, { "value": 220204, "pid": 220200, "label": "船营区", }, { "value": 220211, "pid": 220200, "label": "丰满区", }, { "value": 220221, "pid": 220200, "label": "永吉县", }, { "value": 220281, "pid": 220200, "label": "蛟河市", }, { "value": 220282, "pid": 220200, "label": "桦甸市", }, { "value": 220283, "pid": 220200, "label": "舒兰市", }, { "value": 220284, "pid": 220200, "label": "磐石市", }, { "value": 220285, "pid": 220200, "label": "高新区", }] }, { "value": 220300, "pid": 220000, "label": "四平市", "children": [{ "value": 220302, "pid": 220300, "label": "铁西区", }, { "value": 220303, "pid": 220300, "label": "铁东区", }, { "value": 220322, "pid": 220300, "label": "梨树县", }, { "value": 220323, "pid": 220300, "label": "伊通满族自治县", }, { "value": 220381, "pid": 220300, "label": "公主岭市", }, { "value": 220382, "pid": 220300, "label": "双辽市", }] }, { "value": 220400, "pid": 220000, "label": "辽源市", "children": [{ "value": 220402, "pid": 220400, "label": "龙山区", }, { "value": 220403, "pid": 220400, "label": "西安区", }, { "value": 220421, "pid": 220400, "label": "东丰县", }, { "value": 220422, "pid": 220400, "label": "东辽县", }] }, { "value": 220500, "pid": 220000, "label": "通化市", "children": [{ "value": 220502, "pid": 220500, "label": "东昌区", }, { "value": 220503, "pid": 220500, "label": "二道江区", }, { "value": 220521, "pid": 220500, "label": "通化县", }, { "value": 220523, "pid": 220500, "label": "辉南县", }, { "value": 220524, "pid": 220500, "label": "柳河县", }, { "value": 220581, "pid": 220500, "label": "梅河口市", }, { "value": 220582, "pid": 220500, "label": "集安市", }] }, { "value": 220600, "pid": 220000, "label": "白山市", "children": [{ "value": 220602, "pid": 220600, "label": "浑江区", }, { "value": 220605, "pid": 220600, "label": "江源区", }, { "value": 220621, "pid": 220600, "label": "抚松县", }, { "value": 220622, "pid": 220600, "label": "靖宇县", }, { "value": 220623, "pid": 220600, "label": "长白朝鲜族自治县", }, { "value": 220681, "pid": 220600, "label": "临江市", }] }, { "value": 220700, "pid": 220000, "label": "松原市", "children": [{ "value": 220702, "pid": 220700, "label": "宁江区", }, { "value": 220721, "pid": 220700, "label": "前郭尔罗斯蒙古族自治县", }, { "value": 220722, "pid": 220700, "label": "长岭县", }, { "value": 220723, "pid": 220700, "label": "乾安县", }, { "value": 220781, "pid": 220700, "label": "扶余市", }] }, { "value": 220800, "pid": 220000, "label": "白城市", "children": [{ "value": 220802, "pid": 220800, "label": "洮北区", }, { "value": 220821, "pid": 220800, "label": "镇赉县", }, { "value": 220822, "pid": 220800, "label": "通榆县", }, { "value": 220881, "pid": 220800, "label": "洮南市", }, { "value": 220882, "pid": 220800, "label": "大安市", }] }, { "value": 222400, "pid": 220000, "label": "延边朝鲜族自治州", "children": [{ "value": 222401, "pid": 222400, "label": "延吉市", }, { "value": 222402, "pid": 222400, "label": "图们市", }, { "value": 222403, "pid": 222400, "label": "敦化市", }, { "value": 222404, "pid": 222400, "label": "珲春市", }, { "value": 222405, "pid": 222400, "label": "龙井市", }, { "value": 222406, "pid": 222400, "label": "和龙市", }, { "value": 222424, "pid": 222400, "label": "汪清县", }, { "value": 222426, "pid": 222400, "label": "安图县", }] }] }, { "value": 230000, "pid": 100000, "label": "黑龙江省", "children": [{ "value": 230100, "pid": 230000, "label": "哈尔滨市", "children": [{ "value": 230102, "pid": 230100, "label": "道里区", }, { "value": 230103, "pid": 230100, "label": "南岗区", }, { "value": 230104, "pid": 230100, "label": "道外区", }, { "value": 230108, "pid": 230100, "label": "平房区", }, { "value": 230109, "pid": 230100, "label": "松北区", }, { "value": 230110, "pid": 230100, "label": "香坊区", }, { "value": 230111, "pid": 230100, "label": "呼兰区", }, { "value": 230112, "pid": 230100, "label": "阿城区", }, { "value": 230113, "pid": 230100, "label": "双城区", }, { "value": 230123, "pid": 230100, "label": "依兰县", }, { "value": 230124, "pid": 230100, "label": "方正县", }, { "value": 230125, "pid": 230100, "label": "宾县", }, { "value": 230126, "pid": 230100, "label": "巴彦县", }, { "value": 230127, "pid": 230100, "label": "木兰县", }, { "value": 230128, "pid": 230100, "label": "通河县", }, { "value": 230129, "pid": 230100, "label": "延寿县", }, { "value": 230183, "pid": 230100, "label": "尚志市", }, { "value": 230184, "pid": 230100, "label": "五常市", }, { "value": 230185, "pid": 230100, "label": "哈尔滨新区", }, { "value": 230186, "pid": 230100, "label": "高新区", }] }, { "value": 230200, "pid": 230000, "label": "齐齐哈尔市", "children": [{ "value": 230202, "pid": 230200, "label": "龙沙区", }, { "value": 230203, "pid": 230200, "label": "建华区", }, { "value": 230204, "pid": 230200, "label": "铁锋区", }, { "value": 230205, "pid": 230200, "label": "昂昂溪区", }, { "value": 230206, "pid": 230200, "label": "富拉尔基区", }, { "value": 230207, "pid": 230200, "label": "碾子山区", }, { "value": 230208, "pid": 230200, "label": "梅里斯达斡尔族区", }, { "value": 230221, "pid": 230200, "label": "龙江县", }, { "value": 230223, "pid": 230200, "label": "依安县", }, { "value": 230224, "pid": 230200, "label": "泰来县", }, { "value": 230225, "pid": 230200, "label": "甘南县", }, { "value": 230227, "pid": 230200, "label": "富裕县", }, { "value": 230229, "pid": 230200, "label": "克山县", }, { "value": 230230, "pid": 230200, "label": "克东县", }, { "value": 230231, "pid": 230200, "label": "拜泉县", }, { "value": 230281, "pid": 230200, "label": "讷河市", }, { "value": 230282, "pid": 230200, "label": "高新区", }] }, { "value": 230300, "pid": 230000, "label": "鸡西市", "children": [{ "value": 230302, "pid": 230300, "label": "鸡冠区", }, { "value": 230303, "pid": 230300, "label": "恒山区", }, { "value": 230304, "pid": 230300, "label": "滴道区", }, { "value": 230305, "pid": 230300, "label": "梨树区", }, { "value": 230306, "pid": 230300, "label": "城子河区", }, { "value": 230307, "pid": 230300, "label": "麻山区", }, { "value": 230321, "pid": 230300, "label": "鸡东县", }, { "value": 230381, "pid": 230300, "label": "虎林市", }, { "value": 230382, "pid": 230300, "label": "密山市", }] }, { "value": 230400, "pid": 230000, "label": "鹤岗市", "children": [{ "value": 230402, "pid": 230400, "label": "向阳区", }, { "value": 230403, "pid": 230400, "label": "工农区", }, { "value": 230404, "pid": 230400, "label": "南山区", }, { "value": 230405, "pid": 230400, "label": "兴安区", }, { "value": 230406, "pid": 230400, "label": "东山区", }, { "value": 230407, "pid": 230400, "label": "兴山区", }, { "value": 230421, "pid": 230400, "label": "萝北县", }, { "value": 230422, "pid": 230400, "label": "绥滨县", }] }, { "value": 230500, "pid": 230000, "label": "双鸭山市", "children": [{ "value": 230502, "pid": 230500, "label": "尖山区", }, { "value": 230503, "pid": 230500, "label": "岭东区", }, { "value": 230505, "pid": 230500, "label": "四方台区", }, { "value": 230506, "pid": 230500, "label": "宝山区", }, { "value": 230521, "pid": 230500, "label": "集贤县", }, { "value": 230522, "pid": 230500, "label": "友谊县", }, { "value": 230523, "pid": 230500, "label": "宝清县", }, { "value": 230524, "pid": 230500, "label": "饶河县", }] }, { "value": 230600, "pid": 230000, "label": "大庆市", "children": [{ "value": 230602, "pid": 230600, "label": "萨尔图区", }, { "value": 230603, "pid": 230600, "label": "龙凤区", }, { "value": 230604, "pid": 230600, "label": "让胡路区", }, { "value": 230605, "pid": 230600, "label": "红岗区", }, { "value": 230606, "pid": 230600, "label": "大同区", }, { "value": 230621, "pid": 230600, "label": "肇州县", }, { "value": 230622, "pid": 230600, "label": "肇源县", }, { "value": 230623, "pid": 230600, "label": "林甸县", }, { "value": 230624, "pid": 230600, "label": "杜尔伯特蒙古族自治县", }, { "value": 230625, "pid": 230600, "label": "高新区", }] }, { "value": 230700, "pid": 230000, "label": "伊春市", "children": [{ "value": 230702, "pid": 230700, "label": "伊春区", }, { "value": 230703, "pid": 230700, "label": "南岔区", }, { "value": 230704, "pid": 230700, "label": "友好区", }, { "value": 230705, "pid": 230700, "label": "西林区", }, { "value": 230706, "pid": 230700, "label": "翠峦区", }, { "value": 230707, "pid": 230700, "label": "新青区", }, { "value": 230708, "pid": 230700, "label": "美溪区", }, { "value": 230709, "pid": 230700, "label": "金山屯区", }, { "value": 230710, "pid": 230700, "label": "五营区", }, { "value": 230711, "pid": 230700, "label": "乌马河区", }, { "value": 230712, "pid": 230700, "label": "汤旺河区", }, { "value": 230713, "pid": 230700, "label": "带岭区", }, { "value": 230714, "pid": 230700, "label": "乌伊岭区", }, { "value": 230715, "pid": 230700, "label": "红星区", }, { "value": 230716, "pid": 230700, "label": "上甘岭区", }, { "value": 230722, "pid": 230700, "label": "嘉荫县", }, { "value": 230781, "pid": 230700, "label": "铁力市", }] }, { "value": 230800, "pid": 230000, "label": "佳木斯市", "children": [{ "value": 230803, "pid": 230800, "label": "向阳区", }, { "value": 230804, "pid": 230800, "label": "前进区", }, { "value": 230805, "pid": 230800, "label": "东风区", }, { "value": 230811, "pid": 230800, "label": "郊区", }, { "value": 230822, "pid": 230800, "label": "桦南县", }, { "value": 230826, "pid": 230800, "label": "桦川县", }, { "value": 230828, "pid": 230800, "label": "汤原县", }, { "value": 230881, "pid": 230800, "label": "同江市", }, { "value": 230882, "pid": 230800, "label": "富锦市", }, { "value": 230883, "pid": 230800, "label": "抚远市", }] }, { "value": 230900, "pid": 230000, "label": "七台河市", "children": [{ "value": 230902, "pid": 230900, "label": "新兴区", }, { "value": 230903, "pid": 230900, "label": "桃山区", }, { "value": 230904, "pid": 230900, "label": "茄子河区", }, { "value": 230921, "pid": 230900, "label": "勃利县", }] }, { "value": 231000, "pid": 230000, "label": "牡丹江市", "children": [{ "value": 231002, "pid": 231000, "label": "东安区", }, { "value": 231003, "pid": 231000, "label": "阳明区", }, { "value": 231004, "pid": 231000, "label": "爱民区", }, { "value": 231005, "pid": 231000, "label": "西安区", }, { "value": 231025, "pid": 231000, "label": "林口县", }, { "value": 231081, "pid": 231000, "label": "绥芬河市", }, { "value": 231083, "pid": 231000, "label": "海林市", }, { "value": 231084, "pid": 231000, "label": "宁安市", }, { "value": 231085, "pid": 231000, "label": "穆棱市", }, { "value": 231086, "pid": 231000, "label": "东宁市", }] }, { "value": 231100, "pid": 230000, "label": "黑河市", "children": [{ "value": 231102, "pid": 231100, "label": "爱辉区", }, { "value": 231121, "pid": 231100, "label": "嫩江县", }, { "value": 231123, "pid": 231100, "label": "逊克县", }, { "value": 231124, "pid": 231100, "label": "孙吴县", }, { "value": 231181, "pid": 231100, "label": "北安市", }, { "value": 231182, "pid": 231100, "label": "五大连池市", }] }, { "value": 231200, "pid": 230000, "label": "绥化市", "children": [{ "value": 231202, "pid": 231200, "label": "北林区", }, { "value": 231221, "pid": 231200, "label": "望奎县", }, { "value": 231222, "pid": 231200, "label": "兰西县", }, { "value": 231223, "pid": 231200, "label": "青冈县", }, { "value": 231224, "pid": 231200, "label": "庆安县", }, { "value": 231225, "pid": 231200, "label": "明水县", }, { "value": 231226, "pid": 231200, "label": "绥棱县", }, { "value": 231281, "pid": 231200, "label": "安达市", }, { "value": 231282, "pid": 231200, "label": "肇东市", }, { "value": 231283, "pid": 231200, "label": "海伦市", }] }, { "value": 232700, "pid": 230000, "label": "大兴安岭地区", "children": [{ "value": 232701, "pid": 232700, "label": "漠河市", }, { "value": 232721, "pid": 232700, "label": "呼玛县", }, { "value": 232722, "pid": 232700, "label": "塔河县", }, { "value": 232761, "pid": 232700, "label": "加格达奇区", }, { "value": 232762, "pid": 232700, "label": "松岭区", }, { "value": 232763, "pid": 232700, "label": "新林区", }, { "value": 232764, "pid": 232700, "label": "呼中区", }] }] }, { "value": 310000, "pid": 100000, "label": "上海", "children": [{ "value": 310100, "pid": 310000, "label": "上海市", "children": [{ "value": 310101, "pid": 310100, "label": "黄浦区", }, { "value": 310104, "pid": 310100, "label": "徐汇区", }, { "value": 310105, "pid": 310100, "label": "长宁区", }, { "value": 310106, "pid": 310100, "label": "静安区", }, { "value": 310107, "pid": 310100, "label": "普陀区", }, { "value": 310109, "pid": 310100, "label": "虹口区", }, { "value": 310110, "pid": 310100, "label": "杨浦区", }, { "value": 310112, "pid": 310100, "label": "闵行区", }, { "value": 310113, "pid": 310100, "label": "宝山区", }, { "value": 310114, "pid": 310100, "label": "嘉定区", }, { "value": 310115, "pid": 310100, "label": "浦东新区", }, { "value": 310116, "pid": 310100, "label": "金山区", }, { "value": 310117, "pid": 310100, "label": "松江区", }, { "value": 310118, "pid": 310100, "label": "青浦区", }, { "value": 310120, "pid": 310100, "label": "奉贤区", }, { "value": 310151, "pid": 310100, "label": "崇明区", }, { "value": 310231, "pid": 310100, "label": "张江高新区", }, { "value": 310232, "pid": 310100, "label": "紫竹高新区", }, { "value": 310233, "pid": 310100, "label": "漕河泾开发区", }] }] }, { "value": 320000, "pid": 100000, "label": "江苏省", "children": [{ "value": 320100, "pid": 320000, "label": "南京市", "children": [{ "value": 320102, "pid": 320100, "label": "玄武区", }, { "value": 320104, "pid": 320100, "label": "秦淮区", }, { "value": 320105, "pid": 320100, "label": "建邺区", }, { "value": 320106, "pid": 320100, "label": "鼓楼区", }, { "value": 320111, "pid": 320100, "label": "浦口区", }, { "value": 320113, "pid": 320100, "label": "栖霞区", }, { "value": 320114, "pid": 320100, "label": "雨花台区", }, { "value": 320115, "pid": 320100, "label": "江宁区", }, { "value": 320116, "pid": 320100, "label": "六合区", }, { "value": 320117, "pid": 320100, "label": "溧水区", }, { "value": 320118, "pid": 320100, "label": "高淳区", }, { "value": 320119, "pid": 320100, "label": "江北新区", }, { "value": 320120, "pid": 320100, "label": "高新区", }] }, { "value": 320200, "pid": 320000, "label": "无锡市", "children": [{ "value": 320205, "pid": 320200, "label": "锡山区", }, { "value": 320206, "pid": 320200, "label": "惠山区", }, { "value": 320211, "pid": 320200, "label": "滨湖区", }, { "value": 320213, "pid": 320200, "label": "梁溪区", }, { "value": 320214, "pid": 320200, "label": "新吴区", }, { "value": 320281, "pid": 320200, "label": "江阴市", }, { "value": 320282, "pid": 320200, "label": "宜兴市", }] }, { "value": 320300, "pid": 320000, "label": "徐州市", "children": [{ "value": 320302, "pid": 320300, "label": "鼓楼区", }, { "value": 320303, "pid": 320300, "label": "云龙区", }, { "value": 320305, "pid": 320300, "label": "贾汪区", }, { "value": 320311, "pid": 320300, "label": "泉山区", }, { "value": 320312, "pid": 320300, "label": "铜山区", }, { "value": 320321, "pid": 320300, "label": "丰县", }, { "value": 320322, "pid": 320300, "label": "沛县", }, { "value": 320324, "pid": 320300, "label": "睢宁县", }, { "value": 320381, "pid": 320300, "label": "新沂市", }, { "value": 320382, "pid": 320300, "label": "邳州市", }, { "value": 320383, "pid": 320300, "label": "经济技术开发区", }, { "value": 320384, "pid": 320300, "label": "高新区", }, { "value": 320385, "pid": 320300, "label": "软件园", }] }, { "value": 320400, "pid": 320000, "label": "常州市", "children": [{ "value": 320402, "pid": 320400, "label": "天宁区", }, { "value": 320404, "pid": 320400, "label": "钟楼区", }, { "value": 320411, "pid": 320400, "label": "新北区", }, { "value": 320412, "pid": 320400, "label": "武进区", }, { "value": 320413, "pid": 320400, "label": "金坛区", }, { "value": 320481, "pid": 320400, "label": "溧阳市", }, { "value": 320482, "pid": 320400, "label": "高新区", }] }, { "value": 320500, "pid": 320000, "label": "苏州市", "children": [{ "value": 320505, "pid": 320500, "label": "虎丘区", }, { "value": 320506, "pid": 320500, "label": "吴中区", }, { "value": 320507, "pid": 320500, "label": "相城区", }, { "value": 320508, "pid": 320500, "label": "姑苏区", }, { "value": 320509, "pid": 320500, "label": "吴江区", }, { "value": 320581, "pid": 320500, "label": "常熟市", }, { "value": 320582, "pid": 320500, "label": "张家港市", }, { "value": 320583, "pid": 320500, "label": "昆山市", }, { "value": 320585, "pid": 320500, "label": "太仓市", }, { "value": 320586, "pid": 320500, "label": "苏州新区", }, { "value": 320587, "pid": 320500, "label": "工业园区", }, { "value": 320588, "pid": 320500, "label": "高新区", }] }, { "value": 320600, "pid": 320000, "label": "南通市", "children": [{ "value": 320602, "pid": 320600, "label": "崇川区", }, { "value": 320611, "pid": 320600, "label": "港闸区", }, { "value": 320612, "pid": 320600, "label": "通州区", }, { "value": 320623, "pid": 320600, "label": "如东县", }, { "value": 320681, "pid": 320600, "label": "启东市", }, { "value": 320682, "pid": 320600, "label": "如皋市", }, { "value": 320684, "pid": 320600, "label": "海门市", }, { "value": 320685, "pid": 320600, "label": "海安市", }, { "value": 320686, "pid": 320600, "label": "经济技术开发区", }] }, { "value": 320700, "pid": 320000, "label": "连云港市", "children": [{ "value": 320703, "pid": 320700, "label": "连云区", }, { "value": 320706, "pid": 320700, "label": "海州区", }, { "value": 320707, "pid": 320700, "label": "赣榆区", }, { "value": 320722, "pid": 320700, "label": "东海县", }, { "value": 320723, "pid": 320700, "label": "灌云县", }, { "value": 320724, "pid": 320700, "label": "灌南县", }, { "value": 320725, "pid": 320700, "label": "新海新区", }, { "value": 320726, "pid": 320700, "label": "连云新城", }, { "value": 320727, "pid": 320700, "label": "徐圩新区", }, { "value": 320728, "pid": 320700, "label": "济技术开发区", }] }, { "value": 320800, "pid": 320000, "label": "淮安市", "children": [{ "value": 320803, "pid": 320800, "label": "淮安区", }, { "value": 320804, "pid": 320800, "label": "淮阴区", }, { "value": 320812, "pid": 320800, "label": "清江浦区", }, { "value": 320813, "pid": 320800, "label": "洪泽区", }, { "value": 320826, "pid": 320800, "label": "涟水县", }, { "value": 320830, "pid": 320800, "label": "盱眙县", }, { "value": 320831, "pid": 320800, "label": "金湖县", }, { "value": 320832, "pid": 320800, "label": "经济开发区", }] }, { "value": 320900, "pid": 320000, "label": "盐城市", "children": [{ "value": 320902, "pid": 320900, "label": "亭湖区", }, { "value": 320903, "pid": 320900, "label": "盐都区", }, { "value": 320904, "pid": 320900, "label": "大丰区", }, { "value": 320921, "pid": 320900, "label": "响水县", }, { "value": 320922, "pid": 320900, "label": "滨海县", }, { "value": 320923, "pid": 320900, "label": "阜宁县", }, { "value": 320924, "pid": 320900, "label": "射阳县", }, { "value": 320925, "pid": 320900, "label": "建湖县", }, { "value": 320981, "pid": 320900, "label": "东台市", }] }, { "value": 321000, "pid": 320000, "label": "扬州市", "children": [{ "value": 321002, "pid": 321000, "label": "广陵区", }, { "value": 321003, "pid": 321000, "label": "邗江区", }, { "value": 321012, "pid": 321000, "label": "江都区", }, { "value": 321023, "pid": 321000, "label": "宝应县", }, { "value": 321081, "pid": 321000, "label": "仪征市", }, { "value": 321084, "pid": 321000, "label": "高邮市", }] }, { "value": 321100, "pid": 320000, "label": "镇江市", "children": [{ "value": 321102, "pid": 321100, "label": "京口区", }, { "value": 321111, "pid": 321100, "label": "润州区", }, { "value": 321112, "pid": 321100, "label": "丹徒区", }, { "value": 321181, "pid": 321100, "label": "丹阳市", }, { "value": 321182, "pid": 321100, "label": "扬中市", }, { "value": 321183, "pid": 321100, "label": "句容市", }, { "value": 321184, "pid": 321100, "label": "镇江新区", }, { "value": 321185, "pid": 321100, "label": "镇江新区", }, { "value": 321186, "pid": 321100, "label": "经济开发区", }] }, { "value": 321200, "pid": 320000, "label": "泰州市", "children": [{ "value": 321202, "pid": 321200, "label": "海陵区", }, { "value": 321203, "pid": 321200, "label": "高港区", }, { "value": 321204, "pid": 321200, "label": "姜堰区", }, { "value": 321281, "pid": 321200, "label": "兴化市", }, { "value": 321282, "pid": 321200, "label": "靖江市", }, { "value": 321283, "pid": 321200, "label": "泰兴市", }] }, { "value": 321300, "pid": 320000, "label": "宿迁市", "children": [{ "value": 321302, "pid": 321300, "label": "宿城区", }, { "value": 321311, "pid": 321300, "label": "宿豫区", }, { "value": 321322, "pid": 321300, "label": "沭阳县", }, { "value": 321323, "pid": 321300, "label": "泗阳县", }, { "value": 321324, "pid": 321300, "label": "泗洪县", }, { "value": 321325, "pid": 321300, "label": "高新区", }] }] }, { "value": 330000, "pid": 100000, "label": "浙江省", "children": [{ "value": 330100, "pid": 330000, "label": "杭州市", "children": [{ "value": 330102, "pid": 330100, "label": "上城区", }, { "value": 330103, "pid": 330100, "label": "下城区", }, { "value": 330104, "pid": 330100, "label": "江干区", }, { "value": 330105, "pid": 330100, "label": "拱墅区", }, { "value": 330106, "pid": 330100, "label": "西湖区", }, { "value": 330108, "pid": 330100, "label": "滨江区", }, { "value": 330109, "pid": 330100, "label": "萧山区", }, { "value": 330110, "pid": 330100, "label": "余杭区", }, { "value": 330111, "pid": 330100, "label": "富阳区", }, { "value": 330112, "pid": 330100, "label": "临安区", }, { "value": 330122, "pid": 330100, "label": "桐庐县", }, { "value": 330127, "pid": 330100, "label": "淳安县", }, { "value": 330182, "pid": 330100, "label": "建德市", }, { "value": 330186, "pid": 330100, "label": "高新区", }] }, { "value": 330200, "pid": 330000, "label": "宁波市", "children": [{ "value": 330203, "pid": 330200, "label": "海曙区", }, { "value": 330205, "pid": 330200, "label": "江北区", }, { "value": 330206, "pid": 330200, "label": "北仑区", }, { "value": 330211, "pid": 330200, "label": "镇海区", }, { "value": 330212, "pid": 330200, "label": "鄞州区", }, { "value": 330213, "pid": 330200, "label": "奉化区", }, { "value": 330225, "pid": 330200, "label": "象山县", }, { "value": 330226, "pid": 330200, "label": "宁海县", }, { "value": 330281, "pid": 330200, "label": "余姚市", }, { "value": 330282, "pid": 330200, "label": "慈溪市", }, { "value": 330284, "pid": 330200, "label": "杭州湾新区", }, { "value": 330285, "pid": 330200, "label": "高新区", }] }, { "value": 330300, "pid": 330000, "label": "温州市", "children": [{ "value": 330302, "pid": 330300, "label": "鹿城区", }, { "value": 330303, "pid": 330300, "label": "龙湾区", }, { "value": 330304, "pid": 330300, "label": "瓯海区", }, { "value": 330305, "pid": 330300, "label": "洞头区", }, { "value": 330324, "pid": 330300, "label": "永嘉县", }, { "value": 330326, "pid": 330300, "label": "平阳县", }, { "value": 330327, "pid": 330300, "label": "苍南县", }, { "value": 330328, "pid": 330300, "label": "文成县", }, { "value": 330329, "pid": 330300, "label": "泰顺县", }, { "value": 330381, "pid": 330300, "label": "瑞安市", }, { "value": 330382, "pid": 330300, "label": "乐清市", }] }, { "value": 330400, "pid": 330000, "label": "嘉兴市", "children": [{ "value": 330402, "pid": 330400, "label": "南湖区", }, { "value": 330411, "pid": 330400, "label": "秀洲区", }, { "value": 330421, "pid": 330400, "label": "嘉善县", }, { "value": 330424, "pid": 330400, "label": "海盐县", }, { "value": 330481, "pid": 330400, "label": "海宁市", }, { "value": 330482, "pid": 330400, "label": "平湖市", }, { "value": 330483, "pid": 330400, "label": "桐乡市", }] }, { "value": 330500, "pid": 330000, "label": "湖州市", "children": [{ "value": 330502, "pid": 330500, "label": "吴兴区", }, { "value": 330503, "pid": 330500, "label": "南浔区", }, { "value": 330521, "pid": 330500, "label": "德清县", }, { "value": 330522, "pid": 330500, "label": "长兴县", }, { "value": 330523, "pid": 330500, "label": "安吉县", }] }, { "value": 330600, "pid": 330000, "label": "绍兴市", "children": [{ "value": 330602, "pid": 330600, "label": "越城区", }, { "value": 330603, "pid": 330600, "label": "柯桥区", }, { "value": 330604, "pid": 330600, "label": "上虞区", }, { "value": 330624, "pid": 330600, "label": "新昌县", }, { "value": 330681, "pid": 330600, "label": "诸暨市", }, { "value": 330683, "pid": 330600, "label": "嵊州市", }] }, { "value": 330700, "pid": 330000, "label": "金华市", "children": [{ "value": 330702, "pid": 330700, "label": "婺城区", }, { "value": 330703, "pid": 330700, "label": "金东区", }, { "value": 330723, "pid": 330700, "label": "武义县", }, { "value": 330726, "pid": 330700, "label": "浦江县", }, { "value": 330727, "pid": 330700, "label": "磐安县", }, { "value": 330781, "pid": 330700, "label": "兰溪市", }, { "value": 330782, "pid": 330700, "label": "义乌市", }, { "value": 330783, "pid": 330700, "label": "东阳市", }, { "value": 330784, "pid": 330700, "label": "永康市", }] }, { "value": 330800, "pid": 330000, "label": "衢州市", "children": [{ "value": 330802, "pid": 330800, "label": "柯城区", }, { "value": 330803, "pid": 330800, "label": "衢江区", }, { "value": 330822, "pid": 330800, "label": "常山县", }, { "value": 330824, "pid": 330800, "label": "开化县", }, { "value": 330825, "pid": 330800, "label": "龙游县", }, { "value": 330881, "pid": 330800, "label": "江山市", }] }, { "value": 330900, "pid": 330000, "label": "舟山市", "children": [{ "value": 330902, "pid": 330900, "label": "定海区", }, { "value": 330903, "pid": 330900, "label": "普陀区", }, { "value": 330921, "pid": 330900, "label": "岱山县", }, { "value": 330922, "pid": 330900, "label": "嵊泗县", }] }, { "value": 331000, "pid": 330000, "label": "台州市", "children": [{ "value": 331002, "pid": 331000, "label": "椒江区", }, { "value": 331003, "pid": 331000, "label": "黄岩区", }, { "value": 331004, "pid": 331000, "label": "路桥区", }, { "value": 331022, "pid": 331000, "label": "三门县", }, { "value": 331023, "pid": 331000, "label": "天台县", }, { "value": 331024, "pid": 331000, "label": "仙居县", }, { "value": 331081, "pid": 331000, "label": "温岭市", }, { "value": 331082, "pid": 331000, "label": "临海市", }, { "value": 331083, "pid": 331000, "label": "玉环市", }] }, { "value": 331100, "pid": 330000, "label": "丽水市", "children": [{ "value": 331102, "pid": 331100, "label": "莲都区", }, { "value": 331121, "pid": 331100, "label": "青田县", }, { "value": 331122, "pid": 331100, "label": "缙云县", }, { "value": 331123, "pid": 331100, "label": "遂昌县", }, { "value": 331124, "pid": 331100, "label": "松阳县", }, { "value": 331125, "pid": 331100, "label": "云和县", }, { "value": 331126, "pid": 331100, "label": "庆元县", }, { "value": 331127, "pid": 331100, "label": "景宁畲族自治县", }, { "value": 331181, "pid": 331100, "label": "龙泉市", }] }, { "value": 331200, "pid": 330000, "label": "舟山群岛新区", "children": [{ "value": 331201, "pid": 331200, "label": "金塘岛", }, { "value": 331202, "pid": 331200, "label": "六横岛", }, { "value": 331203, "pid": 331200, "label": "衢山岛", }, { "value": 331204, "pid": 331200, "label": "舟山本岛西北部", }, { "value": 331205, "pid": 331200, "label": "岱山岛西南部", }, { "value": 331206, "pid": 331200, "label": "泗礁岛", }, { "value": 331207, "pid": 331200, "label": "朱家尖岛", }, { "value": 331208, "pid": 331200, "label": "洋山岛", }, { "value": 331209, "pid": 331200, "label": "长涂岛", }, { "value": 331210, "pid": 331200, "label": "虾峙岛", }] }] }, { "value": 340000, "pid": 100000, "label": "安徽省", "children": [{ "value": 340100, "pid": 340000, "label": "合肥市", "children": [{ "value": 340102, "pid": 340100, "label": "瑶海区", }, { "value": 340103, "pid": 340100, "label": "庐阳区", }, { "value": 340104, "pid": 340100, "label": "蜀山区", }, { "value": 340111, "pid": 340100, "label": "包河区", }, { "value": 340121, "pid": 340100, "label": "长丰县", }, { "value": 340122, "pid": 340100, "label": "肥东县", }, { "value": 340123, "pid": 340100, "label": "肥西县", }, { "value": 340124, "pid": 340100, "label": "庐江县", }, { "value": 340181, "pid": 340100, "label": "巢湖市", }, { "value": 340184, "pid": 340100, "label": "经济开发区", }, { "value": 340185, "pid": 340100, "label": "高新区", }, { "value": 340186, "pid": 340100, "label": "北城新区", }, { "value": 340187, "pid": 340100, "label": "滨湖新区", }, { "value": 340188, "pid": 340100, "label": "政务文化新区", }, { "value": 340189, "pid": 340100, "label": "新站综合开发试验区", }] }, { "value": 340200, "pid": 340000, "label": "芜湖市", "children": [{ "value": 340202, "pid": 340200, "label": "镜湖区", }, { "value": 340203, "pid": 340200, "label": "弋江区", }, { "value": 340207, "pid": 340200, "label": "鸠江区", }, { "value": 340208, "pid": 340200, "label": "三山区", }, { "value": 340221, "pid": 340200, "label": "芜湖县", }, { "value": 340222, "pid": 340200, "label": "繁昌县", }, { "value": 340223, "pid": 340200, "label": "南陵县", }, { "value": 340225, "pid": 340200, "label": "无为县", }, { "value": 340226, "pid": 340200, "label": "经济开发区", }, { "value": 340227, "pid": 340200, "label": "城东新区", }] }, { "value": 340300, "pid": 340000, "label": "蚌埠市", "children": [{ "value": 340302, "pid": 340300, "label": "龙子湖区", }, { "value": 340303, "pid": 340300, "label": "蚌山区", }, { "value": 340304, "pid": 340300, "label": "禹会区", }, { "value": 340311, "pid": 340300, "label": "淮上区", }, { "value": 340321, "pid": 340300, "label": "怀远县", }, { "value": 340322, "pid": 340300, "label": "五河县", }, { "value": 340323, "pid": 340300, "label": "固镇县", }, { "value": 340324, "pid": 340300, "label": "高新区", }] }, { "value": 340400, "pid": 340000, "label": "淮南市", "children": [{ "value": 340402, "pid": 340400, "label": "大通区", }, { "value": 340403, "pid": 340400, "label": "田家庵区", }, { "value": 340404, "pid": 340400, "label": "谢家集区", }, { "value": 340405, "pid": 340400, "label": "八公山区", }, { "value": 340406, "pid": 340400, "label": "潘集区", }, { "value": 340421, "pid": 340400, "label": "凤台县", }, { "value": 340422, "pid": 340400, "label": "寿县", }, { "value": 340423, "pid": 340400, "label": "山南新区", }, { "value": 340424, "pid": 340400, "label": "毛集实验区", }, { "value": 340425, "pid": 340400, "label": "经济开发区", }] }, { "value": 340500, "pid": 340000, "label": "马鞍山市", "children": [{ "value": 340503, "pid": 340500, "label": "花山区", }, { "value": 340504, "pid": 340500, "label": "雨山区", }, { "value": 340506, "pid": 340500, "label": "博望区", }, { "value": 340521, "pid": 340500, "label": "当涂县", }, { "value": 340522, "pid": 340500, "label": "含山县", }, { "value": 340523, "pid": 340500, "label": "和县", }] }, { "value": 340600, "pid": 340000, "label": "淮北市", "children": [{ "value": 340602, "pid": 340600, "label": "杜集区", }, { "value": 340603, "pid": 340600, "label": "相山区", }, { "value": 340604, "pid": 340600, "label": "烈山区", }, { "value": 340621, "pid": 340600, "label": "濉溪县", }] }, { "value": 340700, "pid": 340000, "label": "铜陵市", "children": [{ "value": 340705, "pid": 340700, "label": "铜官区", }, { "value": 340706, "pid": 340700, "label": "义安区", }, { "value": 340711, "pid": 340700, "label": "郊区", }, { "value": 340722, "pid": 340700, "label": "枞阳县", }] }, { "value": 340800, "pid": 340000, "label": "安庆市", "children": [{ "value": 340802, "pid": 340800, "label": "迎江区", }, { "value": 340803, "pid": 340800, "label": "大观区", }, { "value": 340811, "pid": 340800, "label": "宜秀区", }, { "value": 340822, "pid": 340800, "label": "怀宁县", }, { "value": 340825, "pid": 340800, "label": "太湖县", }, { "value": 340826, "pid": 340800, "label": "宿松县", }, { "value": 340827, "pid": 340800, "label": "望江县", }, { "value": 340828, "pid": 340800, "label": "岳西县", }, { "value": 340881, "pid": 340800, "label": "桐城市", }, { "value": 340882, "pid": 340800, "label": "潜山市", }] }, { "value": 341000, "pid": 340000, "label": "黄山市", "children": [{ "value": 341002, "pid": 341000, "label": "屯溪区", }, { "value": 341003, "pid": 341000, "label": "黄山区", }, { "value": 341004, "pid": 341000, "label": "徽州区", }, { "value": 341021, "pid": 341000, "label": "歙县", }, { "value": 341022, "pid": 341000, "label": "休宁县", }, { "value": 341023, "pid": 341000, "label": "黟县", }, { "value": 341024, "pid": 341000, "label": "祁门县", }] }, { "value": 341100, "pid": 340000, "label": "滁州市", "children": [{ "value": 341102, "pid": 341100, "label": "琅琊区", }, { "value": 341103, "pid": 341100, "label": "南谯区", }, { "value": 341122, "pid": 341100, "label": "来安县", }, { "value": 341124, "pid": 341100, "label": "全椒县", }, { "value": 341125, "pid": 341100, "label": "定远县", }, { "value": 341126, "pid": 341100, "label": "凤阳县", }, { "value": 341181, "pid": 341100, "label": "天长市", }, { "value": 341182, "pid": 341100, "label": "明光市", }] }, { "value": 341200, "pid": 340000, "label": "阜阳市", "children": [{ "value": 341202, "pid": 341200, "label": "颍州区", }, { "value": 341203, "pid": 341200, "label": "颍东区", }, { "value": 341204, "pid": 341200, "label": "颍泉区", }, { "value": 341221, "pid": 341200, "label": "临泉县", }, { "value": 341222, "pid": 341200, "label": "太和县", }, { "value": 341225, "pid": 341200, "label": "阜南县", }, { "value": 341226, "pid": 341200, "label": "颍上县", }, { "value": 341282, "pid": 341200, "label": "界首市", }, { "value": 341283, "pid": 341200, "label": "经济开发区", }, { "value": 341284, "pid": 341200, "label": "苏滁现代产业园", }] }, { "value": 341300, "pid": 340000, "label": "宿州市", "children": [{ "value": 341302, "pid": 341300, "label": "埇桥区", }, { "value": 341321, "pid": 341300, "label": "砀山县", }, { "value": 341322, "pid": 341300, "label": "萧县", }, { "value": 341323, "pid": 341300, "label": "灵璧县", }, { "value": 341324, "pid": 341300, "label": "泗县", }, { "value": 341325, "pid": 341300, "label": "经济开发区", }, { "value": 341371, "pid": 341300, "label": "宿马现代产业园", }] }, { "value": 341500, "pid": 340000, "label": "六安市", "children": [{ "value": 341502, "pid": 341500, "label": "金安区", }, { "value": 341503, "pid": 341500, "label": "裕安区", }, { "value": 341504, "pid": 341500, "label": "叶集区", }, { "value": 341522, "pid": 341500, "label": "霍邱县", }, { "value": 341523, "pid": 341500, "label": "舒城县", }, { "value": 341524, "pid": 341500, "label": "金寨县", }, { "value": 341525, "pid": 341500, "label": "霍山县", }] }, { "value": 341600, "pid": 340000, "label": "亳州市", "children": [{ "value": 341602, "pid": 341600, "label": "谯城区", }, { "value": 341621, "pid": 341600, "label": "涡阳县", }, { "value": 341622, "pid": 341600, "label": "蒙城县", }, { "value": 341623, "pid": 341600, "label": "利辛县", }] }, { "value": 341700, "pid": 340000, "label": "池州市", "children": [{ "value": 341702, "pid": 341700, "label": "贵池区", }, { "value": 341721, "pid": 341700, "label": "东至县", }, { "value": 341722, "pid": 341700, "label": "石台县", }, { "value": 341723, "pid": 341700, "label": "青阳县", }] }, { "value": 341800, "pid": 340000, "label": "宣城市", "children": [{ "value": 341802, "pid": 341800, "label": "宣州区", }, { "value": 341821, "pid": 341800, "label": "郎溪县", }, { "value": 341822, "pid": 341800, "label": "广德县", }, { "value": 341823, "pid": 341800, "label": "泾县", }, { "value": 341824, "pid": 341800, "label": "绩溪县", }, { "value": 341825, "pid": 341800, "label": "旌德县", }, { "value": 341881, "pid": 341800, "label": "宁国市", }] }] }, { "value": 350000, "pid": 100000, "label": "福建省", "children": [{ "value": 350100, "pid": 350000, "label": "福州市", "children": [{ "value": 350102, "pid": 350100, "label": "鼓楼区", }, { "value": 350103, "pid": 350100, "label": "台江区", }, { "value": 350104, "pid": 350100, "label": "仓山区", }, { "value": 350105, "pid": 350100, "label": "马尾区", }, { "value": 350111, "pid": 350100, "label": "晋安区", }, { "value": 350112, "pid": 350100, "label": "长乐区", }, { "value": 350121, "pid": 350100, "label": "闽侯县", }, { "value": 350122, "pid": 350100, "label": "连江县", }, { "value": 350123, "pid": 350100, "label": "罗源县", }, { "value": 350124, "pid": 350100, "label": "闽清县", }, { "value": 350125, "pid": 350100, "label": "永泰县", }, { "value": 350128, "pid": 350100, "label": "平潭县", }, { "value": 350181, "pid": 350100, "label": "福清市", }, { "value": 350183, "pid": 350100, "label": "福州新区", }] }, { "value": 350200, "pid": 350000, "label": "厦门市", "children": [{ "value": 350203, "pid": 350200, "label": "思明区", }, { "value": 350205, "pid": 350200, "label": "海沧区", }, { "value": 350206, "pid": 350200, "label": "湖里区", }, { "value": 350211, "pid": 350200, "label": "集美区", }, { "value": 350212, "pid": 350200, "label": "同安区", }, { "value": 350213, "pid": 350200, "label": "翔安区", }] }, { "value": 350300, "pid": 350000, "label": "莆田市", "children": [{ "value": 350302, "pid": 350300, "label": "城厢区", }, { "value": 350303, "pid": 350300, "label": "涵江区", }, { "value": 350304, "pid": 350300, "label": "荔城区", }, { "value": 350305, "pid": 350300, "label": "秀屿区", }, { "value": 350322, "pid": 350300, "label": "仙游县", }] }, { "value": 350400, "pid": 350000, "label": "三明市", "children": [{ "value": 350402, "pid": 350400, "label": "梅列区", }, { "value": 350403, "pid": 350400, "label": "三元区", }, { "value": 350421, "pid": 350400, "label": "明溪县", }, { "value": 350423, "pid": 350400, "label": "清流县", }, { "value": 350424, "pid": 350400, "label": "宁化县", }, { "value": 350425, "pid": 350400, "label": "大田县", }, { "value": 350426, "pid": 350400, "label": "尤溪县", }, { "value": 350427, "pid": 350400, "label": "沙县", }, { "value": 350428, "pid": 350400, "label": "将乐县", }, { "value": 350429, "pid": 350400, "label": "泰宁县", }, { "value": 350430, "pid": 350400, "label": "建宁县", }, { "value": 350481, "pid": 350400, "label": "永安市", }] }, { "value": 350500, "pid": 350000, "label": "泉州市", "children": [{ "value": 350502, "pid": 350500, "label": "鲤城区", }, { "value": 350503, "pid": 350500, "label": "丰泽区", }, { "value": 350504, "pid": 350500, "label": "洛江区", }, { "value": 350505, "pid": 350500, "label": "泉港区", }, { "value": 350521, "pid": 350500, "label": "惠安县", }, { "value": 350524, "pid": 350500, "label": "安溪县", }, { "value": 350525, "pid": 350500, "label": "永春县", }, { "value": 350526, "pid": 350500, "label": "德化县", }, { "value": 350527, "pid": 350500, "label": "金门县", }, { "value": 350581, "pid": 350500, "label": "石狮市", }, { "value": 350582, "pid": 350500, "label": "晋江市", }, { "value": 350583, "pid": 350500, "label": "南安市", }, { "value": 350584, "pid": 350500, "label": "台商投资区", }, { "value": 350585, "pid": 350500, "label": "经济技术开发区", }, { "value": 350586, "pid": 350500, "label": "高新区", }, { "value": 350587, "pid": 350500, "label": "综合保税区", }] }, { "value": 350600, "pid": 350000, "label": "漳州市", "children": [{ "value": 350602, "pid": 350600, "label": "芗城区", }, { "value": 350603, "pid": 350600, "label": "龙文区", }, { "value": 350622, "pid": 350600, "label": "云霄县", }, { "value": 350623, "pid": 350600, "label": "漳浦县", }, { "value": 350624, "pid": 350600, "label": "诏安县", }, { "value": 350625, "pid": 350600, "label": "长泰县", }, { "value": 350626, "pid": 350600, "label": "东山县", }, { "value": 350627, "pid": 350600, "label": "南靖县", }, { "value": 350628, "pid": 350600, "label": "平和县", }, { "value": 350629, "pid": 350600, "label": "华安县", }, { "value": 350681, "pid": 350600, "label": "龙海市", }] }, { "value": 350700, "pid": 350000, "label": "南平市", "children": [{ "value": 350702, "pid": 350700, "label": "延平区", }, { "value": 350703, "pid": 350700, "label": "建阳区", }, { "value": 350721, "pid": 350700, "label": "顺昌县", }, { "value": 350722, "pid": 350700, "label": "浦城县", }, { "value": 350723, "pid": 350700, "label": "光泽县", }, { "value": 350724, "pid": 350700, "label": "松溪县", }, { "value": 350725, "pid": 350700, "label": "政和县", }, { "value": 350781, "pid": 350700, "label": "邵武市", }, { "value": 350782, "pid": 350700, "label": "武夷山市", }, { "value": 350783, "pid": 350700, "label": "建瓯市", }] }, { "value": 350800, "pid": 350000, "label": "龙岩市", "children": [{ "value": 350802, "pid": 350800, "label": "新罗区", }, { "value": 350803, "pid": 350800, "label": "永定区", }, { "value": 350821, "pid": 350800, "label": "长汀县", }, { "value": 350823, "pid": 350800, "label": "上杭县", }, { "value": 350824, "pid": 350800, "label": "武平县", }, { "value": 350825, "pid": 350800, "label": "连城县", }, { "value": 350881, "pid": 350800, "label": "漳平市", }] }, { "value": 350900, "pid": 350000, "label": "宁德市", "children": [{ "value": 350902, "pid": 350900, "label": "蕉城区", }, { "value": 350921, "pid": 350900, "label": "霞浦县", }, { "value": 350922, "pid": 350900, "label": "古田县", }, { "value": 350923, "pid": 350900, "label": "屏南县", }, { "value": 350924, "pid": 350900, "label": "寿宁县", }, { "value": 350925, "pid": 350900, "label": "周宁县", }, { "value": 350926, "pid": 350900, "label": "柘荣县", }, { "value": 350981, "pid": 350900, "label": "福安市", }, { "value": 350982, "pid": 350900, "label": "福鼎市", }, { "value": 350983, "pid": 350900, "label": "东侨开发区", }] }] }, { "value": 360000, "pid": 100000, "label": "江西省", "children": [{ "value": 360100, "pid": 360000, "label": "南昌市", "children": [{ "value": 360102, "pid": 360100, "label": "东湖区", }, { "value": 360103, "pid": 360100, "label": "西湖区", }, { "value": 360104, "pid": 360100, "label": "青云谱区", }, { "value": 360105, "pid": 360100, "label": "湾里区", }, { "value": 360111, "pid": 360100, "label": "青山湖区", }, { "value": 360112, "pid": 360100, "label": "新建区", }, { "value": 360121, "pid": 360100, "label": "南昌县", }, { "value": 360123, "pid": 360100, "label": "安义县", }, { "value": 360124, "pid": 360100, "label": "进贤县", }, { "value": 360125, "pid": 360100, "label": "红谷滩新区", }, { "value": 360126, "pid": 360100, "label": "高新区", }, { "value": 360127, "pid": 360100, "label": "经济开发区", }, { "value": 360128, "pid": 360100, "label": "小蓝开发区", }, { "value": 360129, "pid": 360100, "label": "桑海开发区", }, { "value": 360130, "pid": 360100, "label": "望城新区", }, { "value": 360131, "pid": 360100, "label": "赣江新区", }] }, { "value": 360200, "pid": 360000, "label": "景德镇市", "children": [{ "value": 360202, "pid": 360200, "label": "昌江区", }, { "value": 360203, "pid": 360200, "label": "珠山区", }, { "value": 360222, "pid": 360200, "label": "浮梁县", }, { "value": 360281, "pid": 360200, "label": "乐平市", }] }, { "value": 360300, "pid": 360000, "label": "萍乡市", "children": [{ "value": 360302, "pid": 360300, "label": "安源区", }, { "value": 360313, "pid": 360300, "label": "湘东区", }, { "value": 360321, "pid": 360300, "label": "莲花县", }, { "value": 360322, "pid": 360300, "label": "上栗县", }, { "value": 360323, "pid": 360300, "label": "芦溪县", }] }, { "value": 360400, "pid": 360000, "label": "九江市", "children": [{ "value": 360402, "pid": 360400, "label": "濂溪区", }, { "value": 360403, "pid": 360400, "label": "浔阳区", }, { "value": 360404, "pid": 360400, "label": "柴桑区", }, { "value": 360423, "pid": 360400, "label": "武宁县", }, { "value": 360424, "pid": 360400, "label": "修水县", }, { "value": 360425, "pid": 360400, "label": "永修县", }, { "value": 360426, "pid": 360400, "label": "德安县", }, { "value": 360428, "pid": 360400, "label": "都昌县", }, { "value": 360429, "pid": 360400, "label": "湖口县", }, { "value": 360430, "pid": 360400, "label": "彭泽县", }, { "value": 360481, "pid": 360400, "label": "瑞昌市", }, { "value": 360482, "pid": 360400, "label": "共青城市", }, { "value": 360483, "pid": 360400, "label": "庐山市", }, { "value": 360484, "pid": 360400, "label": "经济技术开发区", }, { "value": 360485, "pid": 360400, "label": "八里湖新区", }, { "value": 360486, "pid": 360400, "label": "庐山风景名胜区", }] }, { "value": 360500, "pid": 360000, "label": "新余市", "children": [{ "value": 360502, "pid": 360500, "label": "渝水区", }, { "value": 360521, "pid": 360500, "label": "分宜县", }] }, { "value": 360600, "pid": 360000, "label": "鹰潭市", "children": [{ "value": 360602, "pid": 360600, "label": "月湖区", }, { "value": 360603, "pid": 360600, "label": "余江区", }, { "value": 360681, "pid": 360600, "label": "贵溪市", }, { "value": 360682, "pid": 360600, "label": "高新区", }] }, { "value": 360700, "pid": 360000, "label": "赣州市", "children": [{ "value": 360702, "pid": 360700, "label": "章贡区", }, { "value": 360703, "pid": 360700, "label": "南康区", }, { "value": 360704, "pid": 360700, "label": "赣县区", }, { "value": 360722, "pid": 360700, "label": "信丰县", }, { "value": 360723, "pid": 360700, "label": "大余县", }, { "value": 360724, "pid": 360700, "label": "上犹县", }, { "value": 360725, "pid": 360700, "label": "崇义县", }, { "value": 360726, "pid": 360700, "label": "安远县", }, { "value": 360727, "pid": 360700, "label": "龙南县", }, { "value": 360728, "pid": 360700, "label": "定南县", }, { "value": 360729, "pid": 360700, "label": "全南县", }, { "value": 360730, "pid": 360700, "label": "宁都县", }, { "value": 360731, "pid": 360700, "label": "于都县", }, { "value": 360732, "pid": 360700, "label": "兴国县", }, { "value": 360733, "pid": 360700, "label": "会昌县", }, { "value": 360734, "pid": 360700, "label": "寻乌县", }, { "value": 360735, "pid": 360700, "label": "石城县", }, { "value": 360781, "pid": 360700, "label": "瑞金市", }, { "value": 360782, "pid": 360700, "label": "章康新区", }] }, { "value": 360800, "pid": 360000, "label": "吉安市", "children": [{ "value": 360802, "pid": 360800, "label": "吉州区", }, { "value": 360803, "pid": 360800, "label": "青原区", }, { "value": 360821, "pid": 360800, "label": "吉安县", }, { "value": 360822, "pid": 360800, "label": "吉水县", }, { "value": 360823, "pid": 360800, "label": "峡江县", }, { "value": 360824, "pid": 360800, "label": "新干县", }, { "value": 360825, "pid": 360800, "label": "永丰县", }, { "value": 360826, "pid": 360800, "label": "泰和县", }, { "value": 360827, "pid": 360800, "label": "遂川县", }, { "value": 360828, "pid": 360800, "label": "万安县", }, { "value": 360829, "pid": 360800, "label": "安福县", }, { "value": 360830, "pid": 360800, "label": "永新县", }, { "value": 360881, "pid": 360800, "label": "井冈山市", }] }, { "value": 360900, "pid": 360000, "label": "宜春市", "children": [{ "value": 360902, "pid": 360900, "label": "袁州区", }, { "value": 360921, "pid": 360900, "label": "奉新县", }, { "value": 360922, "pid": 360900, "label": "万载县", }, { "value": 360923, "pid": 360900, "label": "上高县", }, { "value": 360924, "pid": 360900, "label": "宜丰县", }, { "value": 360925, "pid": 360900, "label": "靖安县", }, { "value": 360926, "pid": 360900, "label": "铜鼓县", }, { "value": 360981, "pid": 360900, "label": "丰城市", }, { "value": 360982, "pid": 360900, "label": "樟树市", }, { "value": 360983, "pid": 360900, "label": "高安市", }] }, { "value": 361000, "pid": 360000, "label": "抚州市", "children": [{ "value": 361002, "pid": 361000, "label": "临川区", }, { "value": 361003, "pid": 361000, "label": "东乡区", }, { "value": 361021, "pid": 361000, "label": "南城县", }, { "value": 361022, "pid": 361000, "label": "黎川县", }, { "value": 361023, "pid": 361000, "label": "南丰县", }, { "value": 361024, "pid": 361000, "label": "崇仁县", }, { "value": 361025, "pid": 361000, "label": "乐安县", }, { "value": 361026, "pid": 361000, "label": "宜黄县", }, { "value": 361027, "pid": 361000, "label": "金溪县", }, { "value": 361028, "pid": 361000, "label": "资溪县", }, { "value": 361030, "pid": 361000, "label": "广昌县", }] }, { "value": 361100, "pid": 360000, "label": "上饶市", "children": [{ "value": 361102, "pid": 361100, "label": "信州区", }, { "value": 361103, "pid": 361100, "label": "广丰区", }, { "value": 361121, "pid": 361100, "label": "上饶县", }, { "value": 361123, "pid": 361100, "label": "玉山县", }, { "value": 361124, "pid": 361100, "label": "铅山县", }, { "value": 361125, "pid": 361100, "label": "横峰县", }, { "value": 361126, "pid": 361100, "label": "弋阳县", }, { "value": 361127, "pid": 361100, "label": "余干县", }, { "value": 361128, "pid": 361100, "label": "鄱阳县", }, { "value": 361129, "pid": 361100, "label": "万年县", }, { "value": 361130, "pid": 361100, "label": "婺源县", }, { "value": 361181, "pid": 361100, "label": "德兴市", }] }] }, { "value": 370000, "pid": 100000, "label": "山东省", "children": [{ "value": 370100, "pid": 370000, "label": "济南市", "children": [{ "value": 370102, "pid": 370100, "label": "历下区", }, { "value": 370103, "pid": 370100, "label": "市中区", }, { "value": 370104, "pid": 370100, "label": "槐荫区", }, { "value": 370105, "pid": 370100, "label": "天桥区", }, { "value": 370112, "pid": 370100, "label": "历城区", }, { "value": 370113, "pid": 370100, "label": "长清区", }, { "value": 370114, "pid": 370100, "label": "章丘区", }, { "value": 370115, "pid": 370100, "label": "济阳区", }, { "value": 370116, "pid": 370100, "label": "莱芜区", }, { "value": 370117, "pid": 370100, "label": "钢城区", }, { "value": 370124, "pid": 370100, "label": "平阴县", }, { "value": 370126, "pid": 370100, "label": "商河县", }, { "value": 370182, "pid": 370100, "label": "高新区", }] }, { "value": 370200, "pid": 370000, "label": "青岛市", "children": [{ "value": 370202, "pid": 370200, "label": "市南区", }, { "value": 370203, "pid": 370200, "label": "市北区", }, { "value": 370211, "pid": 370200, "label": "黄岛区", }, { "value": 370212, "pid": 370200, "label": "崂山区", }, { "value": 370213, "pid": 370200, "label": "李沧区", }, { "value": 370214, "pid": 370200, "label": "城阳区", }, { "value": 370215, "pid": 370200, "label": "即墨区", }, { "value": 370281, "pid": 370200, "label": "胶州市", }, { "value": 370283, "pid": 370200, "label": "平度市", }, { "value": 370285, "pid": 370200, "label": "莱西市", }, { "value": 370286, "pid": 370200, "label": "西海岸新区", }, { "value": 370287, "pid": 370200, "label": "高新区", }] }, { "value": 370300, "pid": 370000, "label": "淄博市", "children": [{ "value": 370302, "pid": 370300, "label": "淄川区", }, { "value": 370303, "pid": 370300, "label": "张店区", }, { "value": 370304, "pid": 370300, "label": "博山区", }, { "value": 370305, "pid": 370300, "label": "临淄区", }, { "value": 370306, "pid": 370300, "label": "周村区", }, { "value": 370321, "pid": 370300, "label": "桓台县", }, { "value": 370322, "pid": 370300, "label": "高青县", }, { "value": 370323, "pid": 370300, "label": "沂源县", }, { "value": 370324, "pid": 370300, "label": "高新区", }] }, { "value": 370400, "pid": 370000, "label": "枣庄市", "children": [{ "value": 370402, "pid": 370400, "label": "市中区", }, { "value": 370403, "pid": 370400, "label": "薛城区", }, { "value": 370404, "pid": 370400, "label": "峄城区", }, { "value": 370405, "pid": 370400, "label": "台儿庄区", }, { "value": 370406, "pid": 370400, "label": "山亭区", }, { "value": 370481, "pid": 370400, "label": "滕州市", }, { "value": 370482, "pid": 370400, "label": "高新区", }] }, { "value": 370500, "pid": 370000, "label": "东营市", "children": [{ "value": 370502, "pid": 370500, "label": "东营区", }, { "value": 370503, "pid": 370500, "label": "河口区", }, { "value": 370505, "pid": 370500, "label": "垦利区", }, { "value": 370522, "pid": 370500, "label": "利津县", }, { "value": 370523, "pid": 370500, "label": "广饶县", }] }, { "value": 370600, "pid": 370000, "label": "烟台市", "children": [{ "value": 370602, "pid": 370600, "label": "芝罘区", }, { "value": 370611, "pid": 370600, "label": "福山区", }, { "value": 370612, "pid": 370600, "label": "牟平区", }, { "value": 370613, "pid": 370600, "label": "莱山区", }, { "value": 370634, "pid": 370600, "label": "长岛县", }, { "value": 370681, "pid": 370600, "label": "龙口市", }, { "value": 370682, "pid": 370600, "label": "莱阳市", }, { "value": 370683, "pid": 370600, "label": "莱州市", }, { "value": 370684, "pid": 370600, "label": "蓬莱市", }, { "value": 370685, "pid": 370600, "label": "招远市", }, { "value": 370686, "pid": 370600, "label": "栖霞市", }, { "value": 370687, "pid": 370600, "label": "海阳市", }, { "value": 370688, "pid": 370600, "label": "高新区", }, { "value": 370689, "pid": 370600, "label": "经济开发区", }] }, { "value": 370700, "pid": 370000, "label": "潍坊市", "children": [{ "value": 370702, "pid": 370700, "label": "潍城区", }, { "value": 370703, "pid": 370700, "label": "寒亭区", }, { "value": 370704, "pid": 370700, "label": "坊子区", }, { "value": 370705, "pid": 370700, "label": "奎文区", }, { "value": 370724, "pid": 370700, "label": "临朐县", }, { "value": 370725, "pid": 370700, "label": "昌乐县", }, { "value": 370781, "pid": 370700, "label": "青州市", }, { "value": 370782, "pid": 370700, "label": "诸城市", }, { "value": 370783, "pid": 370700, "label": "寿光市", }, { "value": 370784, "pid": 370700, "label": "安丘市", }, { "value": 370785, "pid": 370700, "label": "高密市", }, { "value": 370786, "pid": 370700, "label": "昌邑市", }, { "value": 370787, "pid": 370700, "label": "高新区", }] }, { "value": 370800, "pid": 370000, "label": "济宁市", "children": [{ "value": 370811, "pid": 370800, "label": "任城区", }, { "value": 370812, "pid": 370800, "label": "兖州区", }, { "value": 370826, "pid": 370800, "label": "微山县", }, { "value": 370827, "pid": 370800, "label": "鱼台县", }, { "value": 370828, "pid": 370800, "label": "金乡县", }, { "value": 370829, "pid": 370800, "label": "嘉祥县", }, { "value": 370830, "pid": 370800, "label": "汶上县", }, { "value": 370831, "pid": 370800, "label": "泗水县", }, { "value": 370832, "pid": 370800, "label": "梁山县", }, { "value": 370881, "pid": 370800, "label": "曲阜市", }, { "value": 370883, "pid": 370800, "label": "邹城市", }, { "value": 370884, "pid": 370800, "label": "高新区", }] }, { "value": 370900, "pid": 370000, "label": "泰安市", "children": [{ "value": 370902, "pid": 370900, "label": "泰山区", }, { "value": 370911, "pid": 370900, "label": "岱岳区", }, { "value": 370921, "pid": 370900, "label": "宁阳县", }, { "value": 370923, "pid": 370900, "label": "东平县", }, { "value": 370982, "pid": 370900, "label": "新泰市", }, { "value": 370983, "pid": 370900, "label": "肥城市", }] }, { "value": 371000, "pid": 370000, "label": "威海市", "children": [{ "value": 371002, "pid": 371000, "label": "环翠区", }, { "value": 371003, "pid": 371000, "label": "文登区", }, { "value": 371082, "pid": 371000, "label": "荣成市", }, { "value": 371083, "pid": 371000, "label": "乳山市", }, { "value": 371084, "pid": 371000, "label": "火炬高新区", }, { "value": 371085, "pid": 371000, "label": "经济技术开发区", }, { "value": 371086, "pid": 371000, "label": "临港经济技术开发区", }] }, { "value": 371100, "pid": 370000, "label": "日照市", "children": [{ "value": 371102, "pid": 371100, "label": "东港区", }, { "value": 371103, "pid": 371100, "label": "岚山区", }, { "value": 371121, "pid": 371100, "label": "五莲县", }, { "value": 371122, "pid": 371100, "label": "莒县", }] }, { "value": 371300, "pid": 370000, "label": "临沂市", "children": [{ "value": 371302, "pid": 371300, "label": "兰山区", }, { "value": 371311, "pid": 371300, "label": "罗庄区", }, { "value": 371312, "pid": 371300, "label": "河东区", }, { "value": 371321, "pid": 371300, "label": "沂南县", }, { "value": 371322, "pid": 371300, "label": "郯城县", }, { "value": 371323, "pid": 371300, "label": "沂水县", }, { "value": 371324, "pid": 371300, "label": "兰陵县", }, { "value": 371325, "pid": 371300, "label": "费县", }, { "value": 371326, "pid": 371300, "label": "平邑县", }, { "value": 371327, "pid": 371300, "label": "莒南县", }, { "value": 371328, "pid": 371300, "label": "蒙阴县", }, { "value": 371329, "pid": 371300, "label": "临沭县", }] }, { "value": 371400, "pid": 370000, "label": "德州市", "children": [{ "value": 371402, "pid": 371400, "label": "德城区", }, { "value": 371403, "pid": 371400, "label": "陵城区", }, { "value": 371422, "pid": 371400, "label": "宁津县", }, { "value": 371423, "pid": 371400, "label": "庆云县", }, { "value": 371424, "pid": 371400, "label": "临邑县", }, { "value": 371425, "pid": 371400, "label": "齐河县", }, { "value": 371426, "pid": 371400, "label": "平原县", }, { "value": 371427, "pid": 371400, "label": "夏津县", }, { "value": 371428, "pid": 371400, "label": "武城县", }, { "value": 371481, "pid": 371400, "label": "乐陵市", }, { "value": 371482, "pid": 371400, "label": "禹城市", }] }, { "value": 371500, "pid": 370000, "label": "聊城市", "children": [{ "value": 371502, "pid": 371500, "label": "东昌府区", }, { "value": 371521, "pid": 371500, "label": "阳谷县", }, { "value": 371522, "pid": 371500, "label": "莘县", }, { "value": 371523, "pid": 371500, "label": "茌平县", }, { "value": 371524, "pid": 371500, "label": "东阿县", }, { "value": 371525, "pid": 371500, "label": "冠县", }, { "value": 371526, "pid": 371500, "label": "高唐县", }, { "value": 371581, "pid": 371500, "label": "临清市", }] }, { "value": 371600, "pid": 370000, "label": "滨州市", "children": [{ "value": 371602, "pid": 371600, "label": "滨城区", }, { "value": 371603, "pid": 371600, "label": "沾化区", }, { "value": 371621, "pid": 371600, "label": "惠民县", }, { "value": 371622, "pid": 371600, "label": "阳信县", }, { "value": 371623, "pid": 371600, "label": "无棣县", }, { "value": 371625, "pid": 371600, "label": "博兴县", }, { "value": 371681, "pid": 371600, "label": "邹平市", }, { "value": 371682, "pid": 371600, "label": "北海新区", }] }, { "value": 371700, "pid": 370000, "label": "菏泽市", "children": [{ "value": 371702, "pid": 371700, "label": "牡丹区", }, { "value": 371703, "pid": 371700, "label": "定陶区", }, { "value": 371721, "pid": 371700, "label": "曹县", }, { "value": 371722, "pid": 371700, "label": "单县", }, { "value": 371723, "pid": 371700, "label": "成武县", }, { "value": 371724, "pid": 371700, "label": "巨野县", }, { "value": 371725, "pid": 371700, "label": "郓城县", }, { "value": 371726, "pid": 371700, "label": "鄄城县", }, { "value": 371728, "pid": 371700, "label": "东明县", }, { "value": 371772, "pid": 371700, "label": "高新开发区", }] }] }, { "value": 410000, "pid": 100000, "label": "河南省", "children": [{ "value": 410100, "pid": 410000, "label": "郑州市", "children": [{ "value": 410102, "pid": 410100, "label": "中原区", }, { "value": 410103, "pid": 410100, "label": "二七区", }, { "value": 410104, "pid": 410100, "label": "管城回族区", }, { "value": 410105, "pid": 410100, "label": "金水区", }, { "value": 410106, "pid": 410100, "label": "上街区", }, { "value": 410108, "pid": 410100, "label": "惠济区", }, { "value": 410122, "pid": 410100, "label": "中牟县", }, { "value": 410181, "pid": 410100, "label": "巩义市", }, { "value": 410182, "pid": 410100, "label": "荥阳市", }, { "value": 410183, "pid": 410100, "label": "新密市", }, { "value": 410184, "pid": 410100, "label": "新郑市", }, { "value": 410185, "pid": 410100, "label": "登封市", }, { "value": 410186, "pid": 410100, "label": "郑东新区", }, { "value": 410187, "pid": 410100, "label": "郑汴新区", }, { "value": 410188, "pid": 410100, "label": "高新开发区", }, { "value": 410189, "pid": 410100, "label": "经济开发区", }, { "value": 410190, "pid": 410100, "label": "航空港区", }] }, { "value": 410200, "pid": 410000, "label": "开封市", "children": [{ "value": 410202, "pid": 410200, "label": "龙亭区", }, { "value": 410203, "pid": 410200, "label": "顺河回族区", }, { "value": 410204, "pid": 410200, "label": "鼓楼区", }, { "value": 410205, "pid": 410200, "label": "禹王台区", }, { "value": 410212, "pid": 410200, "label": "祥符区", }, { "value": 410221, "pid": 410200, "label": "杞县", }, { "value": 410222, "pid": 410200, "label": "通许县", }, { "value": 410223, "pid": 410200, "label": "尉氏县", }, { "value": 410225, "pid": 410200, "label": "兰考县", }, { "value": 410226, "pid": 410200, "label": "经济技术开发区", }] }, { "value": 410300, "pid": 410000, "label": "洛阳市", "children": [{ "value": 410302, "pid": 410300, "label": "老城区", }, { "value": 410303, "pid": 410300, "label": "西工区", }, { "value": 410304, "pid": 410300, "label": "瀍河回族区", }, { "value": 410305, "pid": 410300, "label": "涧西区", }, { "value": 410306, "pid": 410300, "label": "吉利区", }, { "value": 410311, "pid": 410300, "label": "洛龙区", }, { "value": 410322, "pid": 410300, "label": "孟津县", }, { "value": 410323, "pid": 410300, "label": "新安县", }, { "value": 410324, "pid": 410300, "label": "栾川县", }, { "value": 410325, "pid": 410300, "label": "嵩县", }, { "value": 410326, "pid": 410300, "label": "汝阳县", }, { "value": 410327, "pid": 410300, "label": "宜阳县", }, { "value": 410328, "pid": 410300, "label": "洛宁县", }, { "value": 410329, "pid": 410300, "label": "伊川县", }, { "value": 410381, "pid": 410300, "label": "偃师市", }, { "value": 410382, "pid": 410300, "label": "洛阳新区", }, { "value": 410383, "pid": 410300, "label": "高新区", }] }, { "value": 410400, "pid": 410000, "label": "平顶山市", "children": [{ "value": 410402, "pid": 410400, "label": "新华区", }, { "value": 410403, "pid": 410400, "label": "卫东区", }, { "value": 410404, "pid": 410400, "label": "石龙区", }, { "value": 410411, "pid": 410400, "label": "湛河区", }, { "value": 410421, "pid": 410400, "label": "宝丰县", }, { "value": 410422, "pid": 410400, "label": "叶县", }, { "value": 410423, "pid": 410400, "label": "鲁山县", }, { "value": 410425, "pid": 410400, "label": "郏县", }, { "value": 410481, "pid": 410400, "label": "舞钢市", }, { "value": 410482, "pid": 410400, "label": "汝州市", }, { "value": 410483, "pid": 410400, "label": "高新区", }, { "value": 410484, "pid": 410400, "label": "新城区", }] }, { "value": 410500, "pid": 410000, "label": "安阳市", "children": [{ "value": 410502, "pid": 410500, "label": "文峰区", }, { "value": 410503, "pid": 410500, "label": "北关区", }, { "value": 410505, "pid": 410500, "label": "殷都区", }, { "value": 410506, "pid": 410500, "label": "龙安区", }, { "value": 410522, "pid": 410500, "label": "安阳县", }, { "value": 410523, "pid": 410500, "label": "汤阴县", }, { "value": 410526, "pid": 410500, "label": "滑县", }, { "value": 410527, "pid": 410500, "label": "内黄县", }, { "value": 410581, "pid": 410500, "label": "林州市", }, { "value": 410582, "pid": 410500, "label": "安阳新区", }] }, { "value": 410600, "pid": 410000, "label": "鹤壁市", "children": [{ "value": 410602, "pid": 410600, "label": "鹤山区", }, { "value": 410603, "pid": 410600, "label": "山城区", }, { "value": 410611, "pid": 410600, "label": "淇滨区", }, { "value": 410621, "pid": 410600, "label": "浚县", }, { "value": 410622, "pid": 410600, "label": "淇县", }] }, { "value": 410700, "pid": 410000, "label": "新乡市", "children": [{ "value": 410702, "pid": 410700, "label": "红旗区", }, { "value": 410703, "pid": 410700, "label": "卫滨区", }, { "value": 410704, "pid": 410700, "label": "凤泉区", }, { "value": 410711, "pid": 410700, "label": "牧野区", }, { "value": 410721, "pid": 410700, "label": "新乡县", }, { "value": 410724, "pid": 410700, "label": "获嘉县", }, { "value": 410725, "pid": 410700, "label": "原阳县", }, { "value": 410726, "pid": 410700, "label": "延津县", }, { "value": 410727, "pid": 410700, "label": "封丘县", }, { "value": 410728, "pid": 410700, "label": "长垣县", }, { "value": 410781, "pid": 410700, "label": "卫辉市", }, { "value": 410782, "pid": 410700, "label": "辉县市", }] }, { "value": 410800, "pid": 410000, "label": "焦作市", "children": [{ "value": 410802, "pid": 410800, "label": "解放区", }, { "value": 410803, "pid": 410800, "label": "中站区", }, { "value": 410804, "pid": 410800, "label": "马村区", }, { "value": 410811, "pid": 410800, "label": "山阳区", }, { "value": 410821, "pid": 410800, "label": "修武县", }, { "value": 410822, "pid": 410800, "label": "博爱县", }, { "value": 410823, "pid": 410800, "label": "武陟县", }, { "value": 410825, "pid": 410800, "label": "温县", }, { "value": 410882, "pid": 410800, "label": "沁阳市", }, { "value": 410883, "pid": 410800, "label": "孟州市", }] }, { "value": 410900, "pid": 410000, "label": "濮阳市", "children": [{ "value": 410902, "pid": 410900, "label": "华龙区", }, { "value": 410922, "pid": 410900, "label": "清丰县", }, { "value": 410923, "pid": 410900, "label": "南乐县", }, { "value": 410926, "pid": 410900, "label": "范县", }, { "value": 410927, "pid": 410900, "label": "台前县", }, { "value": 410928, "pid": 410900, "label": "濮阳县", }] }, { "value": 411000, "pid": 410000, "label": "许昌市", "children": [{ "value": 411002, "pid": 411000, "label": "魏都区", }, { "value": 411003, "pid": 411000, "label": "建安区", }, { "value": 411024, "pid": 411000, "label": "鄢陵县", }, { "value": 411025, "pid": 411000, "label": "襄城县", }, { "value": 411081, "pid": 411000, "label": "禹州市", }, { "value": 411082, "pid": 411000, "label": "长葛市", }] }, { "value": 411100, "pid": 410000, "label": "漯河市", "children": [{ "value": 411102, "pid": 411100, "label": "源汇区", }, { "value": 411103, "pid": 411100, "label": "郾城区", }, { "value": 411104, "pid": 411100, "label": "召陵区", }, { "value": 411121, "pid": 411100, "label": "舞阳县", }, { "value": 411122, "pid": 411100, "label": "临颍县", }] }, { "value": 411200, "pid": 410000, "label": "三门峡市", "children": [{ "value": 411202, "pid": 411200, "label": "湖滨区", }, { "value": 411203, "pid": 411200, "label": "陕州区", }, { "value": 411221, "pid": 411200, "label": "渑池县", }, { "value": 411224, "pid": 411200, "label": "卢氏县", }, { "value": 411281, "pid": 411200, "label": "义马市", }, { "value": 411282, "pid": 411200, "label": "灵宝市", }] }, { "value": 411300, "pid": 410000, "label": "南阳市", "children": [{ "value": 411302, "pid": 411300, "label": "宛城区", }, { "value": 411303, "pid": 411300, "label": "卧龙区", }, { "value": 411321, "pid": 411300, "label": "南召县", }, { "value": 411322, "pid": 411300, "label": "方城县", }, { "value": 411323, "pid": 411300, "label": "西峡县", }, { "value": 411324, "pid": 411300, "label": "镇平县", }, { "value": 411325, "pid": 411300, "label": "内乡县", }, { "value": 411326, "pid": 411300, "label": "淅川县", }, { "value": 411327, "pid": 411300, "label": "社旗县", }, { "value": 411328, "pid": 411300, "label": "唐河县", }, { "value": 411329, "pid": 411300, "label": "新野县", }, { "value": 411330, "pid": 411300, "label": "桐柏县", }, { "value": 411381, "pid": 411300, "label": "邓州市", }] }, { "value": 411400, "pid": 410000, "label": "商丘市", "children": [{ "value": 411402, "pid": 411400, "label": "梁园区", }, { "value": 411403, "pid": 411400, "label": "睢阳区", }, { "value": 411421, "pid": 411400, "label": "民权县", }, { "value": 411422, "pid": 411400, "label": "睢县", }, { "value": 411423, "pid": 411400, "label": "宁陵县", }, { "value": 411424, "pid": 411400, "label": "柘城县", }, { "value": 411425, "pid": 411400, "label": "虞城县", }, { "value": 411426, "pid": 411400, "label": "夏邑县", }, { "value": 411481, "pid": 411400, "label": "永城市", }] }, { "value": 411500, "pid": 410000, "label": "信阳市", "children": [{ "value": 411502, "pid": 411500, "label": "浉河区", }, { "value": 411503, "pid": 411500, "label": "平桥区", }, { "value": 411521, "pid": 411500, "label": "罗山县", }, { "value": 411522, "pid": 411500, "label": "光山县", }, { "value": 411523, "pid": 411500, "label": "新县", }, { "value": 411524, "pid": 411500, "label": "商城县", }, { "value": 411525, "pid": 411500, "label": "固始县", }, { "value": 411526, "pid": 411500, "label": "潢川县", }, { "value": 411527, "pid": 411500, "label": "淮滨县", }, { "value": 411528, "pid": 411500, "label": "息县", }] }, { "value": 411600, "pid": 410000, "label": "周口市", "children": [{ "value": 411602, "pid": 411600, "label": "川汇区", }, { "value": 411621, "pid": 411600, "label": "扶沟县", }, { "value": 411622, "pid": 411600, "label": "西华县", }, { "value": 411623, "pid": 411600, "label": "商水县", }, { "value": 411624, "pid": 411600, "label": "沈丘县", }, { "value": 411625, "pid": 411600, "label": "郸城县", }, { "value": 411626, "pid": 411600, "label": "淮阳县", }, { "value": 411627, "pid": 411600, "label": "太康县", }, { "value": 411628, "pid": 411600, "label": "鹿邑县", }, { "value": 411681, "pid": 411600, "label": "项城市", }, { "value": 411682, "pid": 411600, "label": "东新区", }, { "value": 411683, "pid": 411600, "label": "经济开发区", }] }, { "value": 411700, "pid": 410000, "label": "驻马店市", "children": [{ "value": 411702, "pid": 411700, "label": "驿城区", }, { "value": 411721, "pid": 411700, "label": "西平县", }, { "value": 411722, "pid": 411700, "label": "上蔡县", }, { "value": 411723, "pid": 411700, "label": "平舆县", }, { "value": 411724, "pid": 411700, "label": "正阳县", }, { "value": 411725, "pid": 411700, "label": "确山县", }, { "value": 411726, "pid": 411700, "label": "泌阳县", }, { "value": 411727, "pid": 411700, "label": "汝南县", }, { "value": 411728, "pid": 411700, "label": "遂平县", }, { "value": 411729, "pid": 411700, "label": "新蔡县", }, { "value": 411771, "pid": 411700, "label": "经济开发区", }] }, { "value": 419001, "pid": 410000, "label": "济源市", "children": [{ "value": 419011, "pid": 419001, "label": "沁园街道", }, { "value": 419012, "pid": 419001, "label": "济水街道", }, { "value": 419013, "pid": 419001, "label": "北海街道", }, { "value": 419014, "pid": 419001, "label": "天坛街道", }, { "value": 419015, "pid": 419001, "label": "玉泉街道", }, { "value": 419016, "pid": 419001, "label": "克井镇", }, { "value": 419017, "pid": 419001, "label": "五龙口镇", }, { "value": 419018, "pid": 419001, "label": "梨林镇", }, { "value": 419019, "pid": 419001, "label": "轵城镇", }, { "value": 419020, "pid": 419001, "label": "承留镇", }, { "value": 419021, "pid": 419001, "label": "坡头镇", }, { "value": 419022, "pid": 419001, "label": "大峪镇", }, { "value": 419023, "pid": 419001, "label": "邵原镇", }, { "value": 419024, "pid": 419001, "label": "思礼镇", }, { "value": 419025, "pid": 419001, "label": "王屋镇", }, { "value": 419026, "pid": 419001, "label": "下冶镇", }] }] }, { "value": 420000, "pid": 100000, "label": "湖北省", "children": [{ "value": 420100, "pid": 420000, "label": "武汉市", "children": [{ "value": 420102, "pid": 420100, "label": "江岸区", }, { "value": 420103, "pid": 420100, "label": "江汉区", }, { "value": 420104, "pid": 420100, "label": "硚口区", }, { "value": 420105, "pid": 420100, "label": "汉阳区", }, { "value": 420106, "pid": 420100, "label": "武昌区", }, { "value": 420107, "pid": 420100, "label": "青山区", }, { "value": 420111, "pid": 420100, "label": "洪山区", }, { "value": 420112, "pid": 420100, "label": "东西湖区", }, { "value": 420113, "pid": 420100, "label": "汉南区", }, { "value": 420114, "pid": 420100, "label": "蔡甸区", }, { "value": 420115, "pid": 420100, "label": "江夏区", }, { "value": 420116, "pid": 420100, "label": "黄陂区", }, { "value": 420117, "pid": 420100, "label": "新洲区", }, { "value": 420118, "pid": 420100, "label": "经济技术开发区", }] }, { "value": 420200, "pid": 420000, "label": "黄石市", "children": [{ "value": 420202, "pid": 420200, "label": "黄石港区", }, { "value": 420203, "pid": 420200, "label": "西塞山区", }, { "value": 420204, "pid": 420200, "label": "下陆区", }, { "value": 420205, "pid": 420200, "label": "铁山区", }, { "value": 420222, "pid": 420200, "label": "阳新县", }, { "value": 420281, "pid": 420200, "label": "大冶市", }, { "value": 420282, "pid": 420200, "label": "经济开发区", }] }, { "value": 420300, "pid": 420000, "label": "十堰市", "children": [{ "value": 420302, "pid": 420300, "label": "茅箭区", }, { "value": 420303, "pid": 420300, "label": "张湾区", }, { "value": 420304, "pid": 420300, "label": "郧阳区", }, { "value": 420322, "pid": 420300, "label": "郧西县", }, { "value": 420323, "pid": 420300, "label": "竹山县", }, { "value": 420324, "pid": 420300, "label": "竹溪县", }, { "value": 420325, "pid": 420300, "label": "房县", }, { "value": 420381, "pid": 420300, "label": "丹江口市", }] }, { "value": 420500, "pid": 420000, "label": "宜昌市", "children": [{ "value": 420502, "pid": 420500, "label": "西陵区", }, { "value": 420503, "pid": 420500, "label": "伍家岗区", }, { "value": 420504, "pid": 420500, "label": "点军区", }, { "value": 420505, "pid": 420500, "label": "猇亭区", }, { "value": 420506, "pid": 420500, "label": "夷陵区", }, { "value": 420525, "pid": 420500, "label": "远安县", }, { "value": 420526, "pid": 420500, "label": "兴山县", }, { "value": 420527, "pid": 420500, "label": "秭归县", }, { "value": 420528, "pid": 420500, "label": "长阳土家族自治县", }, { "value": 420529, "pid": 420500, "label": "五峰土家族自治县", }, { "value": 420581, "pid": 420500, "label": "宜都市", }, { "value": 420582, "pid": 420500, "label": "当阳市", }, { "value": 420583, "pid": 420500, "label": "枝江市", }, { "value": 420584, "pid": 420500, "label": "宜昌新区", }] }, { "value": 420600, "pid": 420000, "label": "襄阳市", "children": [{ "value": 420602, "pid": 420600, "label": "襄城区", }, { "value": 420606, "pid": 420600, "label": "樊城区", }, { "value": 420607, "pid": 420600, "label": "襄州区", }, { "value": 420624, "pid": 420600, "label": "南漳县", }, { "value": 420625, "pid": 420600, "label": "谷城县", }, { "value": 420626, "pid": 420600, "label": "保康县", }, { "value": 420682, "pid": 420600, "label": "老河口市", }, { "value": 420683, "pid": 420600, "label": "枣阳市", }, { "value": 420684, "pid": 420600, "label": "宜城市", }, { "value": 420685, "pid": 420600, "label": "高新区", }, { "value": 420686, "pid": 420600, "label": "经济开发区", }] }, { "value": 420700, "pid": 420000, "label": "鄂州市", "children": [{ "value": 420702, "pid": 420700, "label": "梁子湖区", }, { "value": 420703, "pid": 420700, "label": "华容区", }, { "value": 420704, "pid": 420700, "label": "鄂城区", }] }, { "value": 420800, "pid": 420000, "label": "荆门市", "children": [{ "value": 420802, "pid": 420800, "label": "东宝区", }, { "value": 420804, "pid": 420800, "label": "掇刀区", }, { "value": 420822, "pid": 420800, "label": "沙洋县", }, { "value": 420881, "pid": 420800, "label": "钟祥市", }, { "value": 420882, "pid": 420800, "label": "京山市", }] }, { "value": 420900, "pid": 420000, "label": "孝感市", "children": [{ "value": 420902, "pid": 420900, "label": "孝南区", }, { "value": 420921, "pid": 420900, "label": "孝昌县", }, { "value": 420922, "pid": 420900, "label": "大悟县", }, { "value": 420923, "pid": 420900, "label": "云梦县", }, { "value": 420981, "pid": 420900, "label": "应城市", }, { "value": 420982, "pid": 420900, "label": "安陆市", }, { "value": 420984, "pid": 420900, "label": "汉川市", }] }, { "value": 421000, "pid": 420000, "label": "荆州市", "children": [{ "value": 421002, "pid": 421000, "label": "沙市区", }, { "value": 421003, "pid": 421000, "label": "荆州区", }, { "value": 421022, "pid": 421000, "label": "公安县", }, { "value": 421023, "pid": 421000, "label": "监利县", }, { "value": 421024, "pid": 421000, "label": "江陵县", }, { "value": 421081, "pid": 421000, "label": "石首市", }, { "value": 421083, "pid": 421000, "label": "洪湖市", }, { "value": 421087, "pid": 421000, "label": "松滋市", }] }, { "value": 421100, "pid": 420000, "label": "黄冈市", "children": [{ "value": 421102, "pid": 421100, "label": "黄州区", }, { "value": 421121, "pid": 421100, "label": "团风县", }, { "value": 421122, "pid": 421100, "label": "红安县", }, { "value": 421123, "pid": 421100, "label": "罗田县", }, { "value": 421124, "pid": 421100, "label": "英山县", }, { "value": 421125, "pid": 421100, "label": "浠水县", }, { "value": 421126, "pid": 421100, "label": "蕲春县", }, { "value": 421127, "pid": 421100, "label": "黄梅县", }, { "value": 421181, "pid": 421100, "label": "麻城市", }, { "value": 421182, "pid": 421100, "label": "武穴市", }, { "value": 421183, "pid": 421100, "label": "城东新区", }] }, { "value": 421200, "pid": 420000, "label": "咸宁市", "children": [{ "value": 421202, "pid": 421200, "label": "咸安区", }, { "value": 421221, "pid": 421200, "label": "嘉鱼县", }, { "value": 421222, "pid": 421200, "label": "通城县", }, { "value": 421223, "pid": 421200, "label": "崇阳县", }, { "value": 421224, "pid": 421200, "label": "通山县", }, { "value": 421281, "pid": 421200, "label": "赤壁市", }] }, { "value": 421300, "pid": 420000, "label": "随州市", "children": [{ "value": 421303, "pid": 421300, "label": "曾都区", }, { "value": 421321, "pid": 421300, "label": "随县", }, { "value": 421381, "pid": 421300, "label": "广水市", }] }, { "value": 422800, "pid": 420000, "label": "恩施土家族苗族自治州", "children": [{ "value": 422801, "pid": 422800, "label": "恩施市", }, { "value": 422802, "pid": 422800, "label": "利川市", }, { "value": 422822, "pid": 422800, "label": "建始县", }, { "value": 422823, "pid": 422800, "label": "巴东县", }, { "value": 422825, "pid": 422800, "label": "宣恩县", }, { "value": 422826, "pid": 422800, "label": "咸丰县", }, { "value": 422827, "pid": 422800, "label": "来凤县", }, { "value": 422828, "pid": 422800, "label": "鹤峰县", }] }, { "value": 429004, "pid": 420000, "label": "仙桃市", "children": [{ "value": 429401, "pid": 429004, "label": "沙嘴街道", }, { "value": 429402, "pid": 429004, "label": "干河街道", }, { "value": 429403, "pid": 429004, "label": "龙华山街道", }, { "value": 429404, "pid": 429004, "label": "郑场镇", }, { "value": 429405, "pid": 429004, "label": "毛嘴镇", }, { "value": 429406, "pid": 429004, "label": "豆河镇", }, { "value": 429407, "pid": 429004, "label": "三伏潭镇", }, { "value": 429408, "pid": 429004, "label": "胡场镇", }, { "value": 429409, "pid": 429004, "label": "长埫口镇", }, { "value": 429410, "pid": 429004, "label": "西流河镇", }, { "value": 429411, "pid": 429004, "label": "沙湖镇", }, { "value": 429412, "pid": 429004, "label": "杨林尾镇", }, { "value": 429413, "pid": 429004, "label": "彭场镇", }, { "value": 429414, "pid": 429004, "label": "张沟镇", }, { "value": 429415, "pid": 429004, "label": "郭河镇", }, { "value": 429416, "pid": 429004, "label": "沔城镇", }, { "value": 429417, "pid": 429004, "label": "通海口镇", }, { "value": 429418, "pid": 429004, "label": "陈场镇", }, { "value": 429419, "pid": 429004, "label": "高新区", }, { "value": 429420, "pid": 429004, "label": "经济开发区", }, { "value": 429421, "pid": 429004, "label": "工业园区", }, { "value": 429422, "pid": 429004, "label": "九合垸原种场", }, { "value": 429423, "pid": 429004, "label": "沙湖原种场", }, { "value": 429424, "pid": 429004, "label": "排湖渔场", }, { "value": 429425, "pid": 429004, "label": "五湖渔场", }, { "value": 429426, "pid": 429004, "label": "赵西垸林场", }, { "value": 429427, "pid": 429004, "label": "刘家垸林场", }, { "value": 429428, "pid": 429004, "label": "畜禽良种场", }] }, { "value": 429005, "pid": 420000, "label": "潜江市", "children": [{ "value": 429501, "pid": 429005, "label": "园林", }, { "value": 429502, "pid": 429005, "label": "广华", }, { "value": 429503, "pid": 429005, "label": "杨市", }, { "value": 429504, "pid": 429005, "label": "周矶", }, { "value": 429505, "pid": 429005, "label": "泽口", }, { "value": 429506, "pid": 429005, "label": "泰丰", }, { "value": 429507, "pid": 429005, "label": "高场", }, { "value": 429508, "pid": 429005, "label": "熊口镇", }, { "value": 429509, "pid": 429005, "label": "竹根滩镇", }, { "value": 429510, "pid": 429005, "label": "高石碑镇", }, { "value": 429511, "pid": 429005, "label": "老新镇", }, { "value": 429512, "pid": 429005, "label": "王场镇", }, { "value": 429513, "pid": 429005, "label": "渔洋镇", }, { "value": 429514, "pid": 429005, "label": "龙湾镇", }, { "value": 429515, "pid": 429005, "label": "浩口镇", }, { "value": 429516, "pid": 429005, "label": "积玉口镇", }, { "value": 429517, "pid": 429005, "label": "张金镇", }, { "value": 429518, "pid": 429005, "label": "白鹭湖管理区", }, { "value": 429519, "pid": 429005, "label": "总口管理区", }, { "value": 429520, "pid": 429005, "label": "熊口农场管理区", }, { "value": 429521, "pid": 429005, "label": "运粮湖管理区", }, { "value": 429522, "pid": 429005, "label": "后湖管理区", }, { "value": 429523, "pid": 429005, "label": "周矶管理区", }, { "value": 429524, "pid": 429005, "label": "经济开发区", }] }, { "value": 429006, "pid": 420000, "label": "天门市", "children": [{ "value": 429601, "pid": 429006, "label": "竟陵街道", }, { "value": 429602, "pid": 429006, "label": "杨林街道", }, { "value": 429603, "pid": 429006, "label": "佛子山镇", }, { "value": 429604, "pid": 429006, "label": "多宝镇", }, { "value": 429605, "pid": 429006, "label": "拖市镇", }, { "value": 429606, "pid": 429006, "label": "张港镇", }, { "value": 429607, "pid": 429006, "label": "蒋场镇", }, { "value": 429608, "pid": 429006, "label": "汪场镇", }, { "value": 429609, "pid": 429006, "label": "渔薪镇", }, { "value": 429610, "pid": 429006, "label": "黄潭镇", }, { "value": 429611, "pid": 429006, "label": "岳口镇", }, { "value": 429612, "pid": 429006, "label": "横林镇", }, { "value": 429613, "pid": 429006, "label": "彭市镇", }, { "value": 429614, "pid": 429006, "label": "麻洋镇", }, { "value": 429615, "pid": 429006, "label": "多祥镇", }, { "value": 429616, "pid": 429006, "label": "干驿镇", }, { "value": 429617, "pid": 429006, "label": "马湾镇", }, { "value": 429618, "pid": 429006, "label": "卢市镇", }, { "value": 429619, "pid": 429006, "label": "小板镇", }, { "value": 429620, "pid": 429006, "label": "九真镇", }, { "value": 429621, "pid": 429006, "label": "皂市镇", }, { "value": 429622, "pid": 429006, "label": "胡市镇", }, { "value": 429623, "pid": 429006, "label": "石河镇", }, { "value": 429624, "pid": 429006, "label": "净潭乡", }, { "value": 429625, "pid": 429006, "label": "蒋湖农场", }, { "value": 429626, "pid": 429006, "label": "白茅湖农场", }, { "value": 429627, "pid": 429006, "label": "沉湖林业科技示范区", }, { "value": 429628, "pid": 429006, "label": "天门工业园", }, { "value": 429629, "pid": 429006, "label": "侨乡街道开发区", }] }, { "value": 429021, "pid": 420000, "label": "神农架林区", "children": [{ "value": 429022, "pid": 429021, "label": "松柏镇", }, { "value": 429023, "pid": 429021, "label": "阳日镇", }, { "value": 429024, "pid": 429021, "label": "木鱼镇", }, { "value": 429025, "pid": 429021, "label": "红坪镇", }, { "value": 429026, "pid": 429021, "label": "新华镇", }, { "value": 429027, "pid": 429021, "label": "大九湖", }, { "value": 429028, "pid": 429021, "label": "宋洛", }, { "value": 429029, "pid": 429021, "label": "下谷坪乡", }] }] }, { "value": 430000, "pid": 100000, "label": "湖南省", "children": [{ "value": 430100, "pid": 430000, "label": "长沙市", "children": [{ "value": 430102, "pid": 430100, "label": "芙蓉区", }, { "value": 430103, "pid": 430100, "label": "天心区", }, { "value": 430104, "pid": 430100, "label": "岳麓区", }, { "value": 430105, "pid": 430100, "label": "开福区", }, { "value": 430111, "pid": 430100, "label": "雨花区", }, { "value": 430112, "pid": 430100, "label": "望城区", }, { "value": 430121, "pid": 430100, "label": "长沙县", }, { "value": 430181, "pid": 430100, "label": "浏阳市", }, { "value": 430182, "pid": 430100, "label": "宁乡市", }, { "value": 430183, "pid": 430100, "label": "湘江新区", }] }, { "value": 430200, "pid": 430000, "label": "株洲市", "children": [{ "value": 430202, "pid": 430200, "label": "荷塘区", }, { "value": 430203, "pid": 430200, "label": "芦淞区", }, { "value": 430204, "pid": 430200, "label": "石峰区", }, { "value": 430211, "pid": 430200, "label": "天元区", }, { "value": 430212, "pid": 430200, "label": "渌口区", }, { "value": 430223, "pid": 430200, "label": "攸县", }, { "value": 430224, "pid": 430200, "label": "茶陵县", }, { "value": 430225, "pid": 430200, "label": "炎陵县", }, { "value": 430281, "pid": 430200, "label": "醴陵市", }] }, { "value": 430300, "pid": 430000, "label": "湘潭市", "children": [{ "value": 430302, "pid": 430300, "label": "雨湖区", }, { "value": 430304, "pid": 430300, "label": "岳塘区", }, { "value": 430321, "pid": 430300, "label": "湘潭县", }, { "value": 430381, "pid": 430300, "label": "湘乡市", }, { "value": 430382, "pid": 430300, "label": "韶山市", }, { "value": 430383, "pid": 430300, "label": "高新区", }] }, { "value": 430400, "pid": 430000, "label": "衡阳市", "children": [{ "value": 430405, "pid": 430400, "label": "珠晖区", }, { "value": 430406, "pid": 430400, "label": "雁峰区", }, { "value": 430407, "pid": 430400, "label": "石鼓区", }, { "value": 430408, "pid": 430400, "label": "蒸湘区", }, { "value": 430412, "pid": 430400, "label": "南岳区", }, { "value": 430421, "pid": 430400, "label": "衡阳县", }, { "value": 430422, "pid": 430400, "label": "衡南县", }, { "value": 430423, "pid": 430400, "label": "衡山县", }, { "value": 430424, "pid": 430400, "label": "衡东县", }, { "value": 430426, "pid": 430400, "label": "祁东县", }, { "value": 430481, "pid": 430400, "label": "耒阳市", }, { "value": 430482, "pid": 430400, "label": "常宁市", }, { "value": 430483, "pid": 430400, "label": "高新区", }, { "value": 430484, "pid": 430400, "label": "综合保税区", }] }, { "value": 430500, "pid": 430000, "label": "邵阳市", "children": [{ "value": 430502, "pid": 430500, "label": "双清区", }, { "value": 430503, "pid": 430500, "label": "大祥区", }, { "value": 430511, "pid": 430500, "label": "北塔区", }, { "value": 430521, "pid": 430500, "label": "邵东县", }, { "value": 430522, "pid": 430500, "label": "新邵县", }, { "value": 430523, "pid": 430500, "label": "邵阳县", }, { "value": 430524, "pid": 430500, "label": "隆回县", }, { "value": 430525, "pid": 430500, "label": "洞口县", }, { "value": 430527, "pid": 430500, "label": "绥宁县", }, { "value": 430528, "pid": 430500, "label": "新宁县", }, { "value": 430529, "pid": 430500, "label": "城步苗族自治县", }, { "value": 430581, "pid": 430500, "label": "武冈市", }] }, { "value": 430600, "pid": 430000, "label": "岳阳市", "children": [{ "value": 430602, "pid": 430600, "label": "岳阳楼区", }, { "value": 430603, "pid": 430600, "label": "云溪区", }, { "value": 430611, "pid": 430600, "label": "君山区", }, { "value": 430621, "pid": 430600, "label": "岳阳县", }, { "value": 430623, "pid": 430600, "label": "华容县", }, { "value": 430624, "pid": 430600, "label": "湘阴县", }, { "value": 430626, "pid": 430600, "label": "平江县", }, { "value": 430681, "pid": 430600, "label": "汨罗市", }, { "value": 430682, "pid": 430600, "label": "临湘市", }] }, { "value": 430700, "pid": 430000, "label": "常德市", "children": [{ "value": 430702, "pid": 430700, "label": "武陵区", }, { "value": 430703, "pid": 430700, "label": "鼎城区", }, { "value": 430721, "pid": 430700, "label": "安乡县", }, { "value": 430722, "pid": 430700, "label": "汉寿县", }, { "value": 430723, "pid": 430700, "label": "澧县", }, { "value": 430724, "pid": 430700, "label": "临澧县", }, { "value": 430725, "pid": 430700, "label": "桃源县", }, { "value": 430726, "pid": 430700, "label": "石门县", }, { "value": 430781, "pid": 430700, "label": "津市市", }] }, { "value": 430800, "pid": 430000, "label": "张家界市", "children": [{ "value": 430802, "pid": 430800, "label": "永定区", }, { "value": 430811, "pid": 430800, "label": "武陵源区", }, { "value": 430821, "pid": 430800, "label": "慈利县", }, { "value": 430822, "pid": 430800, "label": "桑植县", }] }, { "value": 430900, "pid": 430000, "label": "益阳市", "children": [{ "value": 430902, "pid": 430900, "label": "资阳区", }, { "value": 430903, "pid": 430900, "label": "赫山区", }, { "value": 430921, "pid": 430900, "label": "南县", }, { "value": 430922, "pid": 430900, "label": "桃江县", }, { "value": 430923, "pid": 430900, "label": "安化县", }, { "value": 430981, "pid": 430900, "label": "沅江市", }] }, { "value": 431000, "pid": 430000, "label": "郴州市", "children": [{ "value": 431002, "pid": 431000, "label": "北湖区", }, { "value": 431003, "pid": 431000, "label": "苏仙区", }, { "value": 431021, "pid": 431000, "label": "桂阳县", }, { "value": 431022, "pid": 431000, "label": "宜章县", }, { "value": 431023, "pid": 431000, "label": "永兴县", }, { "value": 431024, "pid": 431000, "label": "嘉禾县", }, { "value": 431025, "pid": 431000, "label": "临武县", }, { "value": 431026, "pid": 431000, "label": "汝城县", }, { "value": 431027, "pid": 431000, "label": "桂东县", }, { "value": 431028, "pid": 431000, "label": "安仁县", }, { "value": 431081, "pid": 431000, "label": "资兴市", }] }, { "value": 431100, "pid": 430000, "label": "永州市", "children": [{ "value": 431102, "pid": 431100, "label": "零陵区", }, { "value": 431103, "pid": 431100, "label": "冷水滩区", }, { "value": 431121, "pid": 431100, "label": "祁阳县", }, { "value": 431122, "pid": 431100, "label": "东安县", }, { "value": 431123, "pid": 431100, "label": "双牌县", }, { "value": 431124, "pid": 431100, "label": "道县", }, { "value": 431125, "pid": 431100, "label": "江永县", }, { "value": 431126, "pid": 431100, "label": "宁远县", }, { "value": 431127, "pid": 431100, "label": "蓝山县", }, { "value": 431128, "pid": 431100, "label": "新田县", }, { "value": 431129, "pid": 431100, "label": "江华瑶族自治县", }] }, { "value": 431200, "pid": 430000, "label": "怀化市", "children": [{ "value": 431202, "pid": 431200, "label": "鹤城区", }, { "value": 431221, "pid": 431200, "label": "中方县", }, { "value": 431222, "pid": 431200, "label": "沅陵县", }, { "value": 431223, "pid": 431200, "label": "辰溪县", }, { "value": 431224, "pid": 431200, "label": "溆浦县", }, { "value": 431225, "pid": 431200, "label": "会同县", }, { "value": 431226, "pid": 431200, "label": "麻阳苗族自治县", }, { "value": 431227, "pid": 431200, "label": "新晃侗族自治县", }, { "value": 431228, "pid": 431200, "label": "芷江侗族自治县", }, { "value": 431229, "pid": 431200, "label": "靖州苗族侗族自治县", }, { "value": 431230, "pid": 431200, "label": "通道侗族自治县", }, { "value": 431281, "pid": 431200, "label": "洪江市", }] }, { "value": 431300, "pid": 430000, "label": "娄底市", "children": [{ "value": 431302, "pid": 431300, "label": "娄星区", }, { "value": 431321, "pid": 431300, "label": "双峰县", }, { "value": 431322, "pid": 431300, "label": "新化县", }, { "value": 431381, "pid": 431300, "label": "冷水江市", }, { "value": 431382, "pid": 431300, "label": "涟源市", }] }, { "value": 433100, "pid": 430000, "label": "湘西土家族苗族自治州", "children": [{ "value": 433101, "pid": 433100, "label": "吉首市", }, { "value": 433122, "pid": 433100, "label": "泸溪县", }, { "value": 433123, "pid": 433100, "label": "凤凰县", }, { "value": 433124, "pid": 433100, "label": "花垣县", }, { "value": 433125, "pid": 433100, "label": "保靖县", }, { "value": 433126, "pid": 433100, "label": "古丈县", }, { "value": 433127, "pid": 433100, "label": "永顺县", }, { "value": 433130, "pid": 433100, "label": "龙山县", }] }] }, { "value": 440000, "pid": 100000, "label": "广东省", "children": [{ "value": 440100, "pid": 440000, "label": "广州市", "children": [{ "value": 440103, "pid": 440100, "label": "荔湾区", }, { "value": 440104, "pid": 440100, "label": "越秀区", }, { "value": 440105, "pid": 440100, "label": "海珠区", }, { "value": 440106, "pid": 440100, "label": "天河区", }, { "value": 440111, "pid": 440100, "label": "白云区", }, { "value": 440112, "pid": 440100, "label": "黄埔区", }, { "value": 440113, "pid": 440100, "label": "番禺区", }, { "value": 440114, "pid": 440100, "label": "花都区", }, { "value": 440115, "pid": 440100, "label": "南沙区", }, { "value": 440117, "pid": 440100, "label": "从化区", }, { "value": 440118, "pid": 440100, "label": "增城区", }] }, { "value": 440200, "pid": 440000, "label": "韶关市", "children": [{ "value": 440203, "pid": 440200, "label": "武江区", }, { "value": 440204, "pid": 440200, "label": "浈江区", }, { "value": 440205, "pid": 440200, "label": "曲江区", }, { "value": 440222, "pid": 440200, "label": "始兴县", }, { "value": 440224, "pid": 440200, "label": "仁化县", }, { "value": 440229, "pid": 440200, "label": "翁源县", }, { "value": 440232, "pid": 440200, "label": "乳源瑶族自治县", }, { "value": 440233, "pid": 440200, "label": "新丰县", }, { "value": 440281, "pid": 440200, "label": "乐昌市", }, { "value": 440282, "pid": 440200, "label": "南雄市", }] }, { "value": 440300, "pid": 440000, "label": "深圳市", "children": [{ "value": 440303, "pid": 440300, "label": "罗湖区", }, { "value": 440304, "pid": 440300, "label": "福田区", }, { "value": 440305, "pid": 440300, "label": "南山区", }, { "value": 440306, "pid": 440300, "label": "宝安区", }, { "value": 440307, "pid": 440300, "label": "龙岗区", }, { "value": 440308, "pid": 440300, "label": "盐田区", }, { "value": 440309, "pid": 440300, "label": "龙华区", }, { "value": 440310, "pid": 440300, "label": "坪山区", }, { "value": 440311, "pid": 440300, "label": "光明区", }, { "value": 440312, "pid": 440300, "label": "大鹏新区", }] }, { "value": 440400, "pid": 440000, "label": "珠海市", "children": [{ "value": 440402, "pid": 440400, "label": "香洲区", }, { "value": 440403, "pid": 440400, "label": "斗门区", }, { "value": 440404, "pid": 440400, "label": "金湾区", }, { "value": 440405, "pid": 440400, "label": "横琴新区", }, { "value": 440406, "pid": 440400, "label": "经济开发区", }] }, { "value": 440500, "pid": 440000, "label": "汕头市", "children": [{ "value": 440507, "pid": 440500, "label": "龙湖区", }, { "value": 440511, "pid": 440500, "label": "金平区", }, { "value": 440512, "pid": 440500, "label": "濠江区", }, { "value": 440513, "pid": 440500, "label": "潮阳区", }, { "value": 440514, "pid": 440500, "label": "潮南区", }, { "value": 440515, "pid": 440500, "label": "澄海区", }, { "value": 440523, "pid": 440500, "label": "南澳县", }] }, { "value": 440600, "pid": 440000, "label": "佛山市", "children": [{ "value": 440604, "pid": 440600, "label": "禅城区", }, { "value": 440605, "pid": 440600, "label": "南海区", }, { "value": 440606, "pid": 440600, "label": "顺德区", }, { "value": 440607, "pid": 440600, "label": "三水区", }, { "value": 440608, "pid": 440600, "label": "高明区", }] }, { "value": 440700, "pid": 440000, "label": "江门市", "children": [{ "value": 440703, "pid": 440700, "label": "蓬江区", }, { "value": 440704, "pid": 440700, "label": "江海区", }, { "value": 440705, "pid": 440700, "label": "新会区", }, { "value": 440781, "pid": 440700, "label": "台山市", }, { "value": 440783, "pid": 440700, "label": "开平市", }, { "value": 440784, "pid": 440700, "label": "鹤山市", }, { "value": 440785, "pid": 440700, "label": "恩平市", }] }, { "value": 440800, "pid": 440000, "label": "湛江市", "children": [{ "value": 440802, "pid": 440800, "label": "赤坎区", }, { "value": 440803, "pid": 440800, "label": "霞山区", }, { "value": 440804, "pid": 440800, "label": "坡头区", }, { "value": 440811, "pid": 440800, "label": "麻章区", }, { "value": 440823, "pid": 440800, "label": "遂溪县", }, { "value": 440825, "pid": 440800, "label": "徐闻县", }, { "value": 440881, "pid": 440800, "label": "廉江市", }, { "value": 440882, "pid": 440800, "label": "雷州市", }, { "value": 440883, "pid": 440800, "label": "吴川市", }, { "value": 440884, "pid": 440800, "label": "经济开发区", }] }, { "value": 440900, "pid": 440000, "label": "茂名市", "children": [{ "value": 440902, "pid": 440900, "label": "茂南区", }, { "value": 440904, "pid": 440900, "label": "电白区", }, { "value": 440981, "pid": 440900, "label": "高州市", }, { "value": 440982, "pid": 440900, "label": "化州市", }, { "value": 440983, "pid": 440900, "label": "信宜市", }] }, { "value": 441200, "pid": 440000, "label": "肇庆市", "children": [{ "value": 441202, "pid": 441200, "label": "端州区", }, { "value": 441203, "pid": 441200, "label": "鼎湖区", }, { "value": 441204, "pid": 441200, "label": "高要区", }, { "value": 441223, "pid": 441200, "label": "广宁县", }, { "value": 441224, "pid": 441200, "label": "怀集县", }, { "value": 441225, "pid": 441200, "label": "封开县", }, { "value": 441226, "pid": 441200, "label": "德庆县", }, { "value": 441284, "pid": 441200, "label": "四会市", }] }, { "value": 441300, "pid": 440000, "label": "惠州市", "children": [{ "value": 441302, "pid": 441300, "label": "惠城区", }, { "value": 441303, "pid": 441300, "label": "惠阳区", }, { "value": 441322, "pid": 441300, "label": "博罗县", }, { "value": 441323, "pid": 441300, "label": "惠东县", }, { "value": 441324, "pid": 441300, "label": "龙门县", }, { "value": 441325, "pid": 441300, "label": "大亚湾区", }] }, { "value": 441400, "pid": 440000, "label": "梅州市", "children": [{ "value": 441402, "pid": 441400, "label": "梅江区", }, { "value": 441403, "pid": 441400, "label": "梅县区", }, { "value": 441422, "pid": 441400, "label": "大埔县", }, { "value": 441423, "pid": 441400, "label": "丰顺县", }, { "value": 441424, "pid": 441400, "label": "五华县", }, { "value": 441426, "pid": 441400, "label": "平远县", }, { "value": 441427, "pid": 441400, "label": "蕉岭县", }, { "value": 441481, "pid": 441400, "label": "兴宁市", }] }, { "value": 441500, "pid": 440000, "label": "汕尾市", "children": [{ "value": 441502, "pid": 441500, "label": "城区", }, { "value": 441521, "pid": 441500, "label": "海丰县", }, { "value": 441523, "pid": 441500, "label": "陆河县", }, { "value": 441581, "pid": 441500, "label": "陆丰市", }] }, { "value": 441600, "pid": 440000, "label": "河源市", "children": [{ "value": 441602, "pid": 441600, "label": "源城区", }, { "value": 441621, "pid": 441600, "label": "紫金县", }, { "value": 441622, "pid": 441600, "label": "龙川县", }, { "value": 441623, "pid": 441600, "label": "连平县", }, { "value": 441624, "pid": 441600, "label": "和平县", }, { "value": 441625, "pid": 441600, "label": "东源县", }] }, { "value": 441700, "pid": 440000, "label": "阳江市", "children": [{ "value": 441702, "pid": 441700, "label": "江城区", }, { "value": 441704, "pid": 441700, "label": "阳东区", }, { "value": 441721, "pid": 441700, "label": "阳西县", }, { "value": 441781, "pid": 441700, "label": "阳春市", }] }, { "value": 441800, "pid": 440000, "label": "清远市", "children": [{ "value": 441802, "pid": 441800, "label": "清城区", }, { "value": 441803, "pid": 441800, "label": "清新区", }, { "value": 441821, "pid": 441800, "label": "佛冈县", }, { "value": 441823, "pid": 441800, "label": "阳山县", }, { "value": 441825, "pid": 441800, "label": "连山壮族瑶族自治县", }, { "value": 441826, "pid": 441800, "label": "连南瑶族自治县", }, { "value": 441881, "pid": 441800, "label": "英德市", }, { "value": 441882, "pid": 441800, "label": "连州市", }] }, { "value": 441900, "pid": 440000, "label": "东莞市", "children": [{ "value": 441901, "pid": 441900, "label": "莞城区", }, { "value": 441902, "pid": 441900, "label": "南城区", }, { "value": 441903, "pid": 441900, "label": "东城区", }, { "value": 441904, "pid": 441900, "label": "万江区", }, { "value": 441905, "pid": 441900, "label": "石碣镇", }, { "value": 441906, "pid": 441900, "label": "石龙镇", }, { "value": 441907, "pid": 441900, "label": "茶山镇", }, { "value": 441908, "pid": 441900, "label": "石排镇", }, { "value": 441909, "pid": 441900, "label": "企石镇", }, { "value": 441910, "pid": 441900, "label": "横沥镇", }, { "value": 441911, "pid": 441900, "label": "桥头镇", }, { "value": 441912, "pid": 441900, "label": "谢岗镇", }, { "value": 441913, "pid": 441900, "label": "东坑镇", }, { "value": 441914, "pid": 441900, "label": "常平镇", }, { "value": 441915, "pid": 441900, "label": "寮步镇", }, { "value": 441916, "pid": 441900, "label": "大朗镇", }, { "value": 441917, "pid": 441900, "label": "麻涌镇", }, { "value": 441918, "pid": 441900, "label": "中堂镇", }, { "value": 441919, "pid": 441900, "label": "高埗镇", }, { "value": 441920, "pid": 441900, "label": "樟木头镇", }, { "value": 441921, "pid": 441900, "label": "大岭山镇", }, { "value": 441922, "pid": 441900, "label": "望牛墩镇", }, { "value": 441923, "pid": 441900, "label": "黄江镇", }, { "value": 441924, "pid": 441900, "label": "洪梅镇", }, { "value": 441925, "pid": 441900, "label": "清溪镇", }, { "value": 441926, "pid": 441900, "label": "沙田镇", }, { "value": 441927, "pid": 441900, "label": "道滘镇", }, { "value": 441928, "pid": 441900, "label": "塘厦镇", }, { "value": 441929, "pid": 441900, "label": "虎门镇", }, { "value": 441930, "pid": 441900, "label": "厚街镇", }, { "value": 441931, "pid": 441900, "label": "凤岗镇", }, { "value": 441932, "pid": 441900, "label": "长安镇", }, { "value": 441933, "pid": 441900, "label": "松山湖高新区", }] }, { "value": 442000, "pid": 440000, "label": "中山市", "children": [{ "value": 442001, "pid": 442000, "label": "石岐区", }, { "value": 442002, "pid": 442000, "label": "东区", }, { "value": 442003, "pid": 442000, "label": "西区", }, { "value": 442004, "pid": 442000, "label": "南区", }, { "value": 442005, "pid": 442000, "label": "五桂山区", }, { "value": 442006, "pid": 442000, "label": "火炬开发区", }, { "value": 442007, "pid": 442000, "label": "黄圃镇", }, { "value": 442008, "pid": 442000, "label": "南头镇", }, { "value": 442009, "pid": 442000, "label": "东凤镇", }, { "value": 442010, "pid": 442000, "label": "阜沙镇", }, { "value": 442011, "pid": 442000, "label": "小榄镇", }, { "value": 442012, "pid": 442000, "label": "东升镇", }, { "value": 442013, "pid": 442000, "label": "古镇镇", }, { "value": 442014, "pid": 442000, "label": "横栏镇", }, { "value": 442015, "pid": 442000, "label": "三角镇", }, { "value": 442016, "pid": 442000, "label": "民众镇", }, { "value": 442017, "pid": 442000, "label": "南朗镇", }, { "value": 442018, "pid": 442000, "label": "港口镇", }, { "value": 442019, "pid": 442000, "label": "大涌镇", }, { "value": 442020, "pid": 442000, "label": "沙溪镇", }, { "value": 442021, "pid": 442000, "label": "三乡镇", }, { "value": 442022, "pid": 442000, "label": "板芙镇", }, { "value": 442023, "pid": 442000, "label": "神湾镇", }, { "value": 442024, "pid": 442000, "label": "坦洲镇", }] }, { "value": 445100, "pid": 440000, "label": "潮州市", "children": [{ "value": 445102, "pid": 445100, "label": "湘桥区", }, { "value": 445103, "pid": 445100, "label": "潮安区", }, { "value": 445122, "pid": 445100, "label": "饶平县", }] }, { "value": 445200, "pid": 440000, "label": "揭阳市", "children": [{ "value": 445202, "pid": 445200, "label": "榕城区", }, { "value": 445203, "pid": 445200, "label": "揭东区", }, { "value": 445222, "pid": 445200, "label": "揭西县", }, { "value": 445224, "pid": 445200, "label": "惠来县", }, { "value": 445281, "pid": 445200, "label": "普宁市", }] }, { "value": 445300, "pid": 440000, "label": "云浮市", "children": [{ "value": 445302, "pid": 445300, "label": "云城区", }, { "value": 445303, "pid": 445300, "label": "云安区", }, { "value": 445321, "pid": 445300, "label": "新兴县", }, { "value": 445322, "pid": 445300, "label": "郁南县", }, { "value": 445381, "pid": 445300, "label": "罗定市", }] }] }, { "value": 450000, "pid": 100000, "label": "广西壮族自治区", "children": [{ "value": 450100, "pid": 450000, "label": "南宁市", "children": [{ "value": 450102, "pid": 450100, "label": "兴宁区", }, { "value": 450103, "pid": 450100, "label": "青秀区", }, { "value": 450105, "pid": 450100, "label": "江南区", }, { "value": 450107, "pid": 450100, "label": "西乡塘区", }, { "value": 450108, "pid": 450100, "label": "良庆区", }, { "value": 450109, "pid": 450100, "label": "邕宁区", }, { "value": 450110, "pid": 450100, "label": "武鸣区", }, { "value": 450123, "pid": 450100, "label": "隆安县", }, { "value": 450124, "pid": 450100, "label": "马山县", }, { "value": 450125, "pid": 450100, "label": "上林县", }, { "value": 450126, "pid": 450100, "label": "宾阳县", }, { "value": 450127, "pid": 450100, "label": "横县", }, { "value": 450128, "pid": 450100, "label": "埌东新区", }] }, { "value": 450200, "pid": 450000, "label": "柳州市", "children": [{ "value": 450202, "pid": 450200, "label": "城中区", }, { "value": 450203, "pid": 450200, "label": "鱼峰区", }, { "value": 450204, "pid": 450200, "label": "柳南区", }, { "value": 450205, "pid": 450200, "label": "柳北区", }, { "value": 450206, "pid": 450200, "label": "柳江区", }, { "value": 450222, "pid": 450200, "label": "柳城县", }, { "value": 450223, "pid": 450200, "label": "鹿寨县", }, { "value": 450224, "pid": 450200, "label": "融安县", }, { "value": 450225, "pid": 450200, "label": "融水苗族自治县", }, { "value": 450226, "pid": 450200, "label": "三江侗族自治县", }, { "value": 450227, "pid": 450200, "label": "柳东新区", }] }, { "value": 450300, "pid": 450000, "label": "桂林市", "children": [{ "value": 450302, "pid": 450300, "label": "秀峰区", }, { "value": 450303, "pid": 450300, "label": "叠彩区", }, { "value": 450304, "pid": 450300, "label": "象山区", }, { "value": 450305, "pid": 450300, "label": "七星区", }, { "value": 450311, "pid": 450300, "label": "雁山区", }, { "value": 450312, "pid": 450300, "label": "临桂区", }, { "value": 450321, "pid": 450300, "label": "阳朔县", }, { "value": 450323, "pid": 450300, "label": "灵川县", }, { "value": 450324, "pid": 450300, "label": "全州县", }, { "value": 450325, "pid": 450300, "label": "兴安县", }, { "value": 450326, "pid": 450300, "label": "永福县", }, { "value": 450327, "pid": 450300, "label": "灌阳县", }, { "value": 450328, "pid": 450300, "label": "龙胜各族自治县", }, { "value": 450329, "pid": 450300, "label": "资源县", }, { "value": 450330, "pid": 450300, "label": "平乐县", }, { "value": 450332, "pid": 450300, "label": "恭城瑶族自治县", }, { "value": 450381, "pid": 450300, "label": "荔浦市", }] }, { "value": 450400, "pid": 450000, "label": "梧州市", "children": [{ "value": 450403, "pid": 450400, "label": "万秀区", }, { "value": 450405, "pid": 450400, "label": "长洲区", }, { "value": 450406, "pid": 450400, "label": "龙圩区", }, { "value": 450421, "pid": 450400, "label": "苍梧县", }, { "value": 450422, "pid": 450400, "label": "藤县", }, { "value": 450423, "pid": 450400, "label": "蒙山县", }, { "value": 450481, "pid": 450400, "label": "岑溪市", }] }, { "value": 450500, "pid": 450000, "label": "北海市", "children": [{ "value": 450502, "pid": 450500, "label": "海城区", }, { "value": 450503, "pid": 450500, "label": "银海区", }, { "value": 450512, "pid": 450500, "label": "铁山港区", }, { "value": 450521, "pid": 450500, "label": "合浦县", }] }, { "value": 450600, "pid": 450000, "label": "防城港市", "children": [{ "value": 450602, "pid": 450600, "label": "港口区", }, { "value": 450603, "pid": 450600, "label": "防城区", }, { "value": 450621, "pid": 450600, "label": "上思县", }, { "value": 450681, "pid": 450600, "label": "东兴市", }] }, { "value": 450700, "pid": 450000, "label": "钦州市", "children": [{ "value": 450702, "pid": 450700, "label": "钦南区", }, { "value": 450703, "pid": 450700, "label": "钦北区", }, { "value": 450721, "pid": 450700, "label": "灵山县", }, { "value": 450722, "pid": 450700, "label": "浦北县", }] }, { "value": 450800, "pid": 450000, "label": "贵港市", "children": [{ "value": 450802, "pid": 450800, "label": "港北区", }, { "value": 450803, "pid": 450800, "label": "港南区", }, { "value": 450804, "pid": 450800, "label": "覃塘区", }, { "value": 450821, "pid": 450800, "label": "平南县", }, { "value": 450881, "pid": 450800, "label": "桂平市", }] }, { "value": 450900, "pid": 450000, "label": "玉林市", "children": [{ "value": 450902, "pid": 450900, "label": "玉州区", }, { "value": 450903, "pid": 450900, "label": "福绵区", }, { "value": 450921, "pid": 450900, "label": "容县", }, { "value": 450922, "pid": 450900, "label": "陆川县", }, { "value": 450923, "pid": 450900, "label": "博白县", }, { "value": 450924, "pid": 450900, "label": "兴业县", }, { "value": 450981, "pid": 450900, "label": "北流市", }, { "value": 450982, "pid": 450900, "label": "玉东新区", }, { "value": 450983, "pid": 450900, "label": "高新区", }] }, { "value": 451000, "pid": 450000, "label": "百色市", "children": [{ "value": 451002, "pid": 451000, "label": "右江区", }, { "value": 451021, "pid": 451000, "label": "田阳县", }, { "value": 451022, "pid": 451000, "label": "田东县", }, { "value": 451023, "pid": 451000, "label": "平果县", }, { "value": 451024, "pid": 451000, "label": "德保县", }, { "value": 451026, "pid": 451000, "label": "那坡县", }, { "value": 451027, "pid": 451000, "label": "凌云县", }, { "value": 451028, "pid": 451000, "label": "乐业县", }, { "value": 451029, "pid": 451000, "label": "田林县", }, { "value": 451030, "pid": 451000, "label": "西林县", }, { "value": 451031, "pid": 451000, "label": "隆林各族自治县", }, { "value": 451081, "pid": 451000, "label": "靖西市", }] }, { "value": 451100, "pid": 450000, "label": "贺州市", "children": [{ "value": 451102, "pid": 451100, "label": "八步区", }, { "value": 451103, "pid": 451100, "label": "平桂区", }, { "value": 451121, "pid": 451100, "label": "昭平县", }, { "value": 451122, "pid": 451100, "label": "钟山县", }, { "value": 451123, "pid": 451100, "label": "富川瑶族自治县", }] }, { "value": 451200, "pid": 450000, "label": "河池市", "children": [{ "value": 451202, "pid": 451200, "label": "金城江区", }, { "value": 451203, "pid": 451200, "label": "宜州区", }, { "value": 451221, "pid": 451200, "label": "南丹县", }, { "value": 451222, "pid": 451200, "label": "天峨县", }, { "value": 451223, "pid": 451200, "label": "凤山县", }, { "value": 451224, "pid": 451200, "label": "东兰县", }, { "value": 451225, "pid": 451200, "label": "罗城仫佬族自治县", }, { "value": 451226, "pid": 451200, "label": "环江毛南族自治县", }, { "value": 451227, "pid": 451200, "label": "巴马瑶族自治县", }, { "value": 451228, "pid": 451200, "label": "都安瑶族自治县", }, { "value": 451229, "pid": 451200, "label": "大化瑶族自治县", }] }, { "value": 451300, "pid": 450000, "label": "来宾市", "children": [{ "value": 451302, "pid": 451300, "label": "兴宾区", }, { "value": 451321, "pid": 451300, "label": "忻城县", }, { "value": 451322, "pid": 451300, "label": "象州县", }, { "value": 451323, "pid": 451300, "label": "武宣县", }, { "value": 451324, "pid": 451300, "label": "金秀瑶族自治县", }, { "value": 451381, "pid": 451300, "label": "合山市", }] }, { "value": 451400, "pid": 450000, "label": "崇左市", "children": [{ "value": 451402, "pid": 451400, "label": "江州区", }, { "value": 451421, "pid": 451400, "label": "扶绥县", }, { "value": 451422, "pid": 451400, "label": "宁明县", }, { "value": 451423, "pid": 451400, "label": "龙州县", }, { "value": 451424, "pid": 451400, "label": "大新县", }, { "value": 451425, "pid": 451400, "label": "天等县", }, { "value": 451481, "pid": 451400, "label": "凭祥市", }] }] }, { "value": 460000, "pid": 100000, "label": "海南省", "children": [{ "value": 460100, "pid": 460000, "label": "海口市", "children": [{ "value": 460105, "pid": 460100, "label": "秀英区", }, { "value": 460106, "pid": 460100, "label": "龙华区", }, { "value": 460107, "pid": 460100, "label": "琼山区", }, { "value": 460108, "pid": 460100, "label": "美兰区", }, { "value": 460109, "pid": 460100, "label": "江东新区", }] }, { "value": 460200, "pid": 460000, "label": "三亚市", "children": [{ "value": 460202, "pid": 460200, "label": "海棠区", }, { "value": 460203, "pid": 460200, "label": "吉阳区", }, { "value": 460204, "pid": 460200, "label": "天涯区", }, { "value": 460205, "pid": 460200, "label": "崖州区", }] }, { "value": 460300, "pid": 460000, "label": "三沙市", "children": [{ "value": 460321, "pid": 460300, "label": "西沙群岛", }, { "value": 460322, "pid": 460300, "label": "南沙群岛", }, { "value": 460323, "pid": 460300, "label": "中沙群岛", }] }, { "value": 460400, "pid": 460000, "label": "儋州市", "children": [{ "value": 460401, "pid": 460400, "label": "洋浦经济开发区", }, { "value": 460402, "pid": 460400, "label": "那大镇", }, { "value": 460403, "pid": 460400, "label": "南丰镇", }, { "value": 460404, "pid": 460400, "label": "雅星镇", }, { "value": 460405, "pid": 460400, "label": "和庆镇", }, { "value": 460406, "pid": 460400, "label": "大成镇", }, { "value": 460407, "pid": 460400, "label": "新州镇", }, { "value": 460408, "pid": 460400, "label": "光村镇", }, { "value": 460409, "pid": 460400, "label": "东成镇", }, { "value": 460410, "pid": 460400, "label": "中和镇", }, { "value": 460411, "pid": 460400, "label": "峨蔓镇", }, { "value": 460412, "pid": 460400, "label": "兰洋镇", }, { "value": 460413, "pid": 460400, "label": "王五镇", }, { "value": 460414, "pid": 460400, "label": "排浦镇", }, { "value": 460415, "pid": 460400, "label": "海头镇", }, { "value": 460416, "pid": 460400, "label": "木棠镇", }, { "value": 460417, "pid": 460400, "label": "白马井镇", }, { "value": 460418, "pid": 460400, "label": "三都镇", }, { "value": 460419, "pid": 460400, "label": "西培农场", }, { "value": 460420, "pid": 460400, "label": "西联农场", }, { "value": 460421, "pid": 460400, "label": "蓝洋农场", }, { "value": 460422, "pid": 460400, "label": "八一农场", }, { "value": 460423, "pid": 460400, "label": "西华农场", }, { "value": 460424, "pid": 460400, "label": "西庆农场", }, { "value": 460425, "pid": 460400, "label": "西流农场", }, { "value": 460426, "pid": 460400, "label": "新盈农场", }, { "value": 460427, "pid": 460400, "label": "龙山农场", }, { "value": 460428, "pid": 460400, "label": "红岭农场", }] }, { "value": 469001, "pid": 460000, "label": "五指山市", "children": [{ "value": 469101, "pid": 469001, "label": "通什镇", }, { "value": 469102, "pid": 469001, "label": "南圣镇", }, { "value": 469103, "pid": 469001, "label": "毛阳镇", }, { "value": 469104, "pid": 469001, "label": "番阳镇", }, { "value": 469105, "pid": 469001, "label": "畅好乡", }, { "value": 469106, "pid": 469001, "label": "毛道乡", }, { "value": 469107, "pid": 469001, "label": "水满乡", }] }, { "value": 469002, "pid": 460000, "label": "琼海市", "children": [{ "value": 469201, "pid": 469002, "label": "嘉积镇", }, { "value": 469202, "pid": 469002, "label": "万泉镇", }, { "value": 469203, "pid": 469002, "label": "石壁镇", }, { "value": 469204, "pid": 469002, "label": "中原镇", }, { "value": 469205, "pid": 469002, "label": "博鳌镇", }, { "value": 469206, "pid": 469002, "label": "阳江镇", }, { "value": 469207, "pid": 469002, "label": "龙江镇", }, { "value": 469208, "pid": 469002, "label": "潭门镇", }, { "value": 469209, "pid": 469002, "label": "塔洋镇", }, { "value": 469210, "pid": 469002, "label": "���坡镇", }, { "value": 469211, "pid": 469002, "label": "大路镇", }, { "value": 469212, "pid": 469002, "label": "会山镇", }, { "value": 469213, "pid": 469002, "label": "东太农场", }, { "value": 469214, "pid": 469002, "label": "东红农场", }, { "value": 469215, "pid": 469002, "label": "东升农场", }, { "value": 469216, "pid": 469002, "label": "南俸农场", }, { "value": 469217, "pid": 469002, "label": "彬村山华侨农场", }] }, { "value": 469005, "pid": 460000, "label": "文昌市", "children": [{ "value": 469501, "pid": 469005, "label": "文城镇", }, { "value": 469502, "pid": 469005, "label": "重兴镇", }, { "value": 469503, "pid": 469005, "label": "蓬莱镇", }, { "value": 469504, "pid": 469005, "label": "会文镇", }, { "value": 469505, "pid": 469005, "label": "东路镇", }, { "value": 469506, "pid": 469005, "label": "潭牛镇", }, { "value": 469507, "pid": 469005, "label": "东阁镇", }, { "value": 469508, "pid": 469005, "label": "文教镇", }, { "value": 469509, "pid": 469005, "label": "东郊镇", }, { "value": 469510, "pid": 469005, "label": "龙楼镇", }, { "value": 469511, "pid": 469005, "label": "昌洒镇", }, { "value": 469512, "pid": 469005, "label": "翁田镇", }, { "value": 469513, "pid": 469005, "label": "抱罗镇", }, { "value": 469514, "pid": 469005, "label": "冯坡镇", }, { "value": 469515, "pid": 469005, "label": "锦山镇", }, { "value": 469516, "pid": 469005, "label": "铺前镇", }, { "value": 469517, "pid": 469005, "label": "公坡镇", }, { "value": 469518, "pid": 469005, "label": "迈号镇", }, { "value": 469519, "pid": 469005, "label": "清谰镇", }, { "value": 469520, "pid": 469005, "label": "南阳镇", }, { "value": 469521, "pid": 469005, "label": "新桥镇", }, { "value": 469522, "pid": 469005, "label": "头苑镇", }, { "value": 469523, "pid": 469005, "label": "宝芳乡", }, { "value": 469524, "pid": 469005, "label": "龙马乡", }, { "value": 469525, "pid": 469005, "label": "湖山乡", }, { "value": 469526, "pid": 469005, "label": "东路农场", }, { "value": 469527, "pid": 469005, "label": "南阳农场", }, { "value": 469528, "pid": 469005, "label": "罗豆农场", }] }, { "value": 469006, "pid": 460000, "label": "万宁市", "children": [{ "value": 469601, "pid": 469006, "label": "万城镇", }, { "value": 469602, "pid": 469006, "label": "龙滚镇", }, { "value": 469603, "pid": 469006, "label": "和乐镇", }, { "value": 469604, "pid": 469006, "label": "后安镇", }, { "value": 469605, "pid": 469006, "label": "大茂镇", }, { "value": 469606, "pid": 469006, "label": "东澳镇", }, { "value": 469607, "pid": 469006, "label": "礼纪镇", }, { "value": 469608, "pid": 469006, "label": "长丰镇", }, { "value": 469609, "pid": 469006, "label": "山根镇", }, { "value": 469610, "pid": 469006, "label": "北大镇", }, { "value": 469611, "pid": 469006, "label": "南桥镇", }, { "value": 469612, "pid": 469006, "label": "三更罗镇", }, { "value": 469613, "pid": 469006, "label": "东岭农场", }, { "value": 469614, "pid": 469006, "label": "南林农场", }, { "value": 469615, "pid": 469006, "label": "东兴农场", }, { "value": 469616, "pid": 469006, "label": "东和农场", }, { "value": 469617, "pid": 469006, "label": "新中农场", }, { "value": 469618, "pid": 469006, "label": "兴隆华侨农场", }] }, { "value": 469007, "pid": 460000, "label": "东方市", "children": [{ "value": 469701, "pid": 469007, "label": "八所镇", }, { "value": 469702, "pid": 469007, "label": "东河镇", }, { "value": 469703, "pid": 469007, "label": "大田镇", }, { "value": 469704, "pid": 469007, "label": "感城镇", }, { "value": 469705, "pid": 469007, "label": "板桥镇", }, { "value": 469706, "pid": 469007, "label": "三家镇", }, { "value": 469707, "pid": 469007, "label": "四更镇", }, { "value": 469708, "pid": 469007, "label": "新龙镇", }, { "value": 469709, "pid": 469007, "label": "天安乡", }, { "value": 469710, "pid": 469007, "label": "江边乡", }, { "value": 469711, "pid": 469007, "label": "广坝农场", }, { "value": 469712, "pid": 469007, "label": "东方华侨农场", }] }, { "value": 469021, "pid": 460000, "label": "定安县", "children": [{ "value": 469801, "pid": 469021, "label": "定城镇", }, { "value": 469802, "pid": 469021, "label": "新竹镇", }, { "value": 469803, "pid": 469021, "label": "龙湖镇", }, { "value": 469804, "pid": 469021, "label": "雷鸣镇", }, { "value": 469805, "pid": 469021, "label": "龙门镇", }, { "value": 469806, "pid": 469021, "label": "龙河镇", }, { "value": 469807, "pid": 469021, "label": "岭口镇", }, { "value": 469808, "pid": 469021, "label": "翰林镇", }, { "value": 469809, "pid": 469021, "label": "富文镇", }, { "value": 469810, "pid": 469021, "label": "黄竹镇", }, { "value": 469811, "pid": 469021, "label": "金鸡岭农场", }, { "value": 469812, "pid": 469021, "label": "中瑞农场", }, { "value": 469813, "pid": 469021, "label": "南海农场", }, { "value": 469814, "pid": 469021, "label": "城区", }] }, { "value": 469022, "pid": 460000, "label": "屯昌县", "children": [{ "value": 469821, "pid": 469022, "label": "屯城镇", }, { "value": 469822, "pid": 469022, "label": "新兴镇", }, { "value": 469823, "pid": 469022, "label": "枫木镇", }, { "value": 469824, "pid": 469022, "label": "乌坡镇", }, { "value": 469825, "pid": 469022, "label": "南吕镇", }, { "value": 469826, "pid": 469022, "label": "南坤镇", }, { "value": 469827, "pid": 469022, "label": "坡心镇", }, { "value": 469828, "pid": 469022, "label": "西昌镇", }, { "value": 469829, "pid": 469022, "label": "中建农场", }, { "value": 469830, "pid": 469022, "label": "中坤农场", }, { "value": 469831, "pid": 469022, "label": "县城内", }] }, { "value": 469023, "pid": 460000, "label": "澄迈县", "children": [{ "value": 469841, "pid": 469023, "label": "金江镇", }, { "value": 469842, "pid": 469023, "label": "老城镇", }, { "value": 469843, "pid": 469023, "label": "瑞溪镇", }, { "value": 469844, "pid": 469023, "label": "永发镇", }, { "value": 469845, "pid": 469023, "label": "加乐镇", }, { "value": 469846, "pid": 469023, "label": "文儒镇", }, { "value": 469847, "pid": 469023, "label": "中兴镇", }, { "value": 469848, "pid": 469023, "label": "仁兴镇", }, { "value": 469849, "pid": 469023, "label": "福山镇", }, { "value": 469850, "pid": 469023, "label": "桥头镇", }, { "value": 469851, "pid": 469023, "label": "大丰镇", }, { "value": 469852, "pid": 469023, "label": "红光农场", }, { "value": 469853, "pid": 469023, "label": "西达农场", }, { "value": 469854, "pid": 469023, "label": "金安农场", }, { "value": 469855, "pid": 469023, "label": "城区", }] }, { "value": 469024, "pid": 460000, "label": "临高县", "children": [{ "value": 469861, "pid": 469024, "label": "临城镇", }, { "value": 469862, "pid": 469024, "label": "波莲镇", }, { "value": 469863, "pid": 469024, "label": "东英镇", }, { "value": 469864, "pid": 469024, "label": "博厚镇", }, { "value": 469865, "pid": 469024, "label": "皇桐镇", }, { "value": 469866, "pid": 469024, "label": "多文镇", }, { "value": 469867, "pid": 469024, "label": "和舍镇", }, { "value": 469868, "pid": 469024, "label": "南宝镇", }, { "value": 469869, "pid": 469024, "label": "新盈镇", }, { "value": 469870, "pid": 469024, "label": "调楼镇", }, { "value": 469871, "pid": 469024, "label": "加来镇", }, { "value": 469872, "pid": 469024, "label": "红华农场", }, { "value": 469873, "pid": 469024, "label": "加来农场", }, { "value": 469874, "pid": 469024, "label": "城区", }] }, { "value": 469025, "pid": 460000, "label": "白沙黎族自治县", "children": [{ "value": 469881, "pid": 469025, "label": "牙叉镇", }, { "value": 469882, "pid": 469025, "label": "七坊镇", }, { "value": 469883, "pid": 469025, "label": "邦溪镇", }, { "value": 469884, "pid": 469025, "label": "打安镇", }, { "value": 469885, "pid": 469025, "label": "细水乡", }, { "value": 469886, "pid": 469025, "label": "元门乡", }, { "value": 469887, "pid": 469025, "label": "南开乡", }, { "value": 469888, "pid": 469025, "label": "阜龙乡", }, { "value": 469889, "pid": 469025, "label": "青松乡", }, { "value": 469890, "pid": 469025, "label": "金波乡", }, { "value": 469891, "pid": 469025, "label": "荣邦乡", }, { "value": 469892, "pid": 469025, "label": "白沙农场", }, { "value": 469893, "pid": 469025, "label": "龙江农场", }, { "value": 469894, "pid": 469025, "label": "邦溪农场", }, { "value": 469895, "pid": 469025, "label": "城区", }] }, { "value": 469026, "pid": 460000, "label": "昌江黎族自治县", "children": [{ "value": 469901, "pid": 469026, "label": "石碌镇", }, { "value": 469902, "pid": 469026, "label": "叉河镇", }, { "value": 469903, "pid": 469026, "label": "十月田镇", }, { "value": 469904, "pid": 469026, "label": "乌烈镇", }, { "value": 469905, "pid": 469026, "label": "海尾镇", }, { "value": 469906, "pid": 469026, "label": "南罗镇", }, { "value": 469907, "pid": 469026, "label": "太坡镇", }, { "value": 469908, "pid": 469026, "label": "昌化镇", }, { "value": 469909, "pid": 469026, "label": "七叉镇", }, { "value": 469910, "pid": 469026, "label": "保平乡", }, { "value": 469911, "pid": 469026, "label": "昌城乡", }, { "value": 469912, "pid": 469026, "label": "王下乡", }, { "value": 469913, "pid": 469026, "label": "霸王岭林场", }, { "value": 469914, "pid": 469026, "label": "红林农场", }, { "value": 469915, "pid": 469026, "label": "城区", }] }, { "value": 469027, "pid": 460000, "label": "乐东黎族自治县", "children": [{ "value": 469920, "pid": 469027, "label": "抱由镇", }, { "value": 469921, "pid": 469027, "label": "万冲镇", }, { "value": 469922, "pid": 469027, "label": "大安镇", }, { "value": 469923, "pid": 469027, "label": "志仲镇", }, { "value": 469924, "pid": 469027, "label": "千家镇", }, { "value": 469925, "pid": 469027, "label": "九所镇", }, { "value": 469926, "pid": 469027, "label": "利国镇", }, { "value": 469927, "pid": 469027, "label": "黄流镇", }, { "value": 469928, "pid": 469027, "label": "佛罗镇", }, { "value": 469929, "pid": 469027, "label": "尖峰镇", }, { "value": 469930, "pid": 469027, "label": "莺歌海镇", }, { "value": 469931, "pid": 469027, "label": "乐中农场", }, { "value": 469932, "pid": 469027, "label": "山荣农场", }, { "value": 469933, "pid": 469027, "label": "乐光农场", }, { "value": 469934, "pid": 469027, "label": "报伦农场", }, { "value": 469935, "pid": 469027, "label": "福报农场", }, { "value": 469936, "pid": 469027, "label": "保国农场", }, { "value": 469937, "pid": 469027, "label": "保显农场", }, { "value": 469938, "pid": 469027, "label": "尖峰岭林业", }, { "value": 469939, "pid": 469027, "label": "莺歌海盐场", }, { "value": 469940, "pid": 469027, "label": "城区", }] }, { "value": 469028, "pid": 460000, "label": "陵水黎族自治县", "children": [{ "value": 469941, "pid": 469028, "label": "椰林镇", }, { "value": 469942, "pid": 469028, "label": "光坡镇", }, { "value": 469943, "pid": 469028, "label": "三才镇", }, { "value": 469944, "pid": 469028, "label": "英州镇", }, { "value": 469945, "pid": 469028, "label": "隆广镇", }, { "value": 469946, "pid": 469028, "label": "文罗镇", }, { "value": 469947, "pid": 469028, "label": "本号镇", }, { "value": 469948, "pid": 469028, "label": "新村镇", }, { "value": 469949, "pid": 469028, "label": "黎安镇", }, { "value": 469950, "pid": 469028, "label": "提蒙乡", }, { "value": 469951, "pid": 469028, "label": "群英乡", }, { "value": 469952, "pid": 469028, "label": "岭门农场", }, { "value": 469953, "pid": 469028, "label": "南平农场", }, { "value": 469954, "pid": 469028, "label": "城区", }] }, { "value": 469029, "pid": 460000, "label": "保亭黎族苗族自治县", "children": [{ "value": 469961, "pid": 469029, "label": "保城镇", }, { "value": 469962, "pid": 469029, "label": "什玲镇", }, { "value": 469963, "pid": 469029, "label": "加茂镇", }, { "value": 469964, "pid": 469029, "label": "响水镇", }, { "value": 469965, "pid": 469029, "label": "新政镇", }, { "value": 469966, "pid": 469029, "label": "三道镇", }, { "value": 469967, "pid": 469029, "label": "六弓乡", }, { "value": 469968, "pid": 469029, "label": "南林乡", }, { "value": 469969, "pid": 469029, "label": "毛感乡", }, { "value": 469970, "pid": 469029, "label": "新星农场", }, { "value": 469971, "pid": 469029, "label": "金江农场", }, { "value": 469972, "pid": 469029, "label": "三道农场", }] }, { "value": 469030, "pid": 460000, "label": "琼中黎族苗族自治县", "children": [{ "value": 469981, "pid": 469030, "label": "营根镇", }, { "value": 469982, "pid": 469030, "label": "湾岭镇", }, { "value": 469983, "pid": 469030, "label": "黎母山镇", }, { "value": 469984, "pid": 469030, "label": "和平镇", }, { "value": 469985, "pid": 469030, "label": "长征镇", }, { "value": 469986, "pid": 469030, "label": "红毛镇", }, { "value": 469987, "pid": 469030, "label": "中平镇", }, { "value": 469988, "pid": 469030, "label": "上安乡", }, { "value": 469989, "pid": 469030, "label": "什运乡", }, { "value": 469990, "pid": 469030, "label": "吊罗山乡", }, { "value": 469991, "pid": 469030, "label": "阳江农场", }, { "value": 469992, "pid": 469030, "label": "乌石农场", }, { "value": 469993, "pid": 469030, "label": "加钗农场", }, { "value": 469994, "pid": 469030, "label": "长征农场", }, { "value": 469995, "pid": 469030, "label": "城区", }] }] }, { "value": 500000, "pid": 100000, "label": "重庆", "children": [{ "value": 500100, "pid": 500000, "label": "重庆市", "children": [{ "value": 500101, "pid": 500100, "label": "万州区", }, { "value": 500102, "pid": 500100, "label": "涪陵区", }, { "value": 500103, "pid": 500100, "label": "渝中区", }, { "value": 500104, "pid": 500100, "label": "大渡口区", }, { "value": 500105, "pid": 500100, "label": "江北区", }, { "value": 500106, "pid": 500100, "label": "沙坪坝区", }, { "value": 500107, "pid": 500100, "label": "九龙坡区", }, { "value": 500108, "pid": 500100, "label": "南岸区", }, { "value": 500109, "pid": 500100, "label": "北碚区", }, { "value": 500110, "pid": 500100, "label": "綦江区", }, { "value": 500111, "pid": 500100, "label": "大足区", }, { "value": 500112, "pid": 500100, "label": "渝北区", }, { "value": 500113, "pid": 500100, "label": "巴南区", }, { "value": 500114, "pid": 500100, "label": "黔江区", }, { "value": 500115, "pid": 500100, "label": "长寿区", }, { "value": 500116, "pid": 500100, "label": "江津区", }, { "value": 500117, "pid": 500100, "label": "合川区", }, { "value": 500118, "pid": 500100, "label": "永川区", }, { "value": 500119, "pid": 500100, "label": "南川区", }, { "value": 500120, "pid": 500100, "label": "璧山区", }, { "value": 500151, "pid": 500100, "label": "铜梁区", }, { "value": 500152, "pid": 500100, "label": "潼南区", }, { "value": 500153, "pid": 500100, "label": "荣昌区", }, { "value": 500154, "pid": 500100, "label": "开州区", }, { "value": 500155, "pid": 500100, "label": "梁平区", }, { "value": 500156, "pid": 500100, "label": "武隆区", }, { "value": 500229, "pid": 500100, "label": "城口县", }, { "value": 500230, "pid": 500100, "label": "丰都县", }, { "value": 500231, "pid": 500100, "label": "垫江县", }, { "value": 500233, "pid": 500100, "label": "忠县", }, { "value": 500235, "pid": 500100, "label": "云阳县", }, { "value": 500236, "pid": 500100, "label": "奉节县", }, { "value": 500237, "pid": 500100, "label": "巫山县", }, { "value": 500238, "pid": 500100, "label": "巫溪县", }, { "value": 500240, "pid": 500100, "label": "石柱土家族自治县", }, { "value": 500241, "pid": 500100, "label": "秀山土家族苗族自治县", }, { "value": 500242, "pid": 500100, "label": "酉阳土家族苗族自治县", }, { "value": 500243, "pid": 500100, "label": "彭水苗族土家族自治县", }, { "value": 500300, "pid": 500100, "label": "两江新区", }, { "value": 500301, "pid": 500100, "label": "高新区", }, { "value": 500302, "pid": 500100, "label": "璧山高新区", }] }] }, { "value": 510000, "pid": 100000, "label": "四川省", "children": [{ "value": 510100, "pid": 510000, "label": "成都市", "children": [{ "value": 510104, "pid": 510100, "label": "锦江区", }, { "value": 510105, "pid": 510100, "label": "青羊区", }, { "value": 510106, "pid": 510100, "label": "金牛区", }, { "value": 510107, "pid": 510100, "label": "武侯区", }, { "value": 510108, "pid": 510100, "label": "成华区", }, { "value": 510112, "pid": 510100, "label": "龙泉驿区", }, { "value": 510113, "pid": 510100, "label": "青白江区", }, { "value": 510114, "pid": 510100, "label": "新都区", }, { "value": 510115, "pid": 510100, "label": "温江区", }, { "value": 510116, "pid": 510100, "label": "双流区", }, { "value": 510117, "pid": 510100, "label": "郫都区", }, { "value": 510121, "pid": 510100, "label": "金堂县", }, { "value": 510129, "pid": 510100, "label": "大邑县", }, { "value": 510131, "pid": 510100, "label": "蒲江县", }, { "value": 510132, "pid": 510100, "label": "新津县", }, { "value": 510181, "pid": 510100, "label": "都江堰市", }, { "value": 510182, "pid": 510100, "label": "彭州市", }, { "value": 510183, "pid": 510100, "label": "邛崃市", }, { "value": 510184, "pid": 510100, "label": "崇州市", }, { "value": 510185, "pid": 510100, "label": "简阳市", }, { "value": 510186, "pid": 510100, "label": "天府新区", }, { "value": 510187, "pid": 510100, "label": "高新南区", }, { "value": 510188, "pid": 510100, "label": "高新西区", }] }, { "value": 510300, "pid": 510000, "label": "自贡市", "children": [{ "value": 510302, "pid": 510300, "label": "自流井区", }, { "value": 510303, "pid": 510300, "label": "贡井区", }, { "value": 510304, "pid": 510300, "label": "大安区", }, { "value": 510311, "pid": 510300, "label": "沿滩区", }, { "value": 510321, "pid": 510300, "label": "荣县", }, { "value": 510322, "pid": 510300, "label": "富顺县", }, { "value": 510323, "pid": 510300, "label": "高新区", }] }, { "value": 510400, "pid": 510000, "label": "攀枝花市", "children": [{ "value": 510402, "pid": 510400, "label": "东区", }, { "value": 510403, "pid": 510400, "label": "西区", }, { "value": 510411, "pid": 510400, "label": "仁和区", }, { "value": 510421, "pid": 510400, "label": "米易县", }, { "value": 510422, "pid": 510400, "label": "盐边县", }] }, { "value": 510500, "pid": 510000, "label": "泸州市", "children": [{ "value": 510502, "pid": 510500, "label": "江阳区", }, { "value": 510503, "pid": 510500, "label": "纳溪区", }, { "value": 510504, "pid": 510500, "label": "龙马潭区", }, { "value": 510521, "pid": 510500, "label": "泸县", }, { "value": 510522, "pid": 510500, "label": "合江县", }, { "value": 510524, "pid": 510500, "label": "叙永县", }, { "value": 510525, "pid": 510500, "label": "古蔺县", }] }, { "value": 510600, "pid": 510000, "label": "德阳市", "children": [{ "value": 510603, "pid": 510600, "label": "旌阳区", }, { "value": 510604, "pid": 510600, "label": "罗江区", }, { "value": 510623, "pid": 510600, "label": "中江县", }, { "value": 510681, "pid": 510600, "label": "广汉市", }, { "value": 510682, "pid": 510600, "label": "什邡市", }, { "value": 510683, "pid": 510600, "label": "绵竹市", }] }, { "value": 510700, "pid": 510000, "label": "绵阳市", "children": [{ "value": 510703, "pid": 510700, "label": "涪城区", }, { "value": 510704, "pid": 510700, "label": "游仙区", }, { "value": 510705, "pid": 510700, "label": "安州区", }, { "value": 510722, "pid": 510700, "label": "三台县", }, { "value": 510723, "pid": 510700, "label": "盐亭县", }, { "value": 510725, "pid": 510700, "label": "梓潼县", }, { "value": 510726, "pid": 510700, "label": "北川羌族自治县", }, { "value": 510727, "pid": 510700, "label": "平武县", }, { "value": 510781, "pid": 510700, "label": "江油市", }, { "value": 510782, "pid": 510700, "label": "高新区", }, { "value": 510783, "pid": 510700, "label": "经开区", }] }, { "value": 510800, "pid": 510000, "label": "广元市", "children": [{ "value": 510802, "pid": 510800, "label": "利州区", }, { "value": 510811, "pid": 510800, "label": "昭化区", }, { "value": 510812, "pid": 510800, "label": "朝天区", }, { "value": 510821, "pid": 510800, "label": "旺苍县", }, { "value": 510822, "pid": 510800, "label": "青川县", }, { "value": 510823, "pid": 510800, "label": "剑阁县", }, { "value": 510824, "pid": 510800, "label": "苍溪县", }] }, { "value": 510900, "pid": 510000, "label": "遂宁市", "children": [{ "value": 510903, "pid": 510900, "label": "船山区", }, { "value": 510904, "pid": 510900, "label": "安居区", }, { "value": 510921, "pid": 510900, "label": "蓬溪县", }, { "value": 510922, "pid": 510900, "label": "射洪县", }, { "value": 510923, "pid": 510900, "label": "大英县", }, { "value": 510924, "pid": 510900, "label": "经济技术开发区", }] }, { "value": 511000, "pid": 510000, "label": "内江市", "children": [{ "value": 511002, "pid": 511000, "label": "市中区", }, { "value": 511011, "pid": 511000, "label": "东兴区", }, { "value": 511024, "pid": 511000, "label": "威远县", }, { "value": 511025, "pid": 511000, "label": "资中县", }, { "value": 511083, "pid": 511000, "label": "隆昌市", }] }, { "value": 511100, "pid": 510000, "label": "乐山市", "children": [{ "value": 511102, "pid": 511100, "label": "市中区", }, { "value": 511111, "pid": 511100, "label": "沙湾区", }, { "value": 511112, "pid": 511100, "label": "五通桥区", }, { "value": 511113, "pid": 511100, "label": "金口河区", }, { "value": 511123, "pid": 511100, "label": "犍为县", }, { "value": 511124, "pid": 511100, "label": "井研县", }, { "value": 511126, "pid": 511100, "label": "夹江县", }, { "value": 511129, "pid": 511100, "label": "沐川县", }, { "value": 511132, "pid": 511100, "label": "峨边彝族自治县", }, { "value": 511133, "pid": 511100, "label": "马边彝族自治县", }, { "value": 511181, "pid": 511100, "label": "峨眉山市", }] }, { "value": 511300, "pid": 510000, "label": "南充市", "children": [{ "value": 511302, "pid": 511300, "label": "顺庆区", }, { "value": 511303, "pid": 511300, "label": "高坪区", }, { "value": 511304, "pid": 511300, "label": "嘉陵区", }, { "value": 511321, "pid": 511300, "label": "南部县", }, { "value": 511322, "pid": 511300, "label": "营山县", }, { "value": 511323, "pid": 511300, "label": "蓬安县", }, { "value": 511324, "pid": 511300, "label": "仪陇县", }, { "value": 511325, "pid": 511300, "label": "西充县", }, { "value": 511381, "pid": 511300, "label": "阆中市", }] }, { "value": 511400, "pid": 510000, "label": "眉山市", "children": [{ "value": 511402, "pid": 511400, "label": "东坡区", }, { "value": 511403, "pid": 511400, "label": "彭山区", }, { "value": 511421, "pid": 511400, "label": "仁寿县", }, { "value": 511423, "pid": 511400, "label": "洪雅县", }, { "value": 511424, "pid": 511400, "label": "丹棱县", }, { "value": 511425, "pid": 511400, "label": "青神县", }] }, { "value": 511500, "pid": 510000, "label": "宜宾市", "children": [{ "value": 511502, "pid": 511500, "label": "翠屏区", }, { "value": 511503, "pid": 511500, "label": "南溪区", }, { "value": 511504, "pid": 511500, "label": "叙州区", }, { "value": 511523, "pid": 511500, "label": "江安县", }, { "value": 511524, "pid": 511500, "label": "长宁县", }, { "value": 511525, "pid": 511500, "label": "高县", }, { "value": 511526, "pid": 511500, "label": "珙县", }, { "value": 511527, "pid": 511500, "label": "筠连县", }, { "value": 511528, "pid": 511500, "label": "兴文县", }, { "value": 511529, "pid": 511500, "label": "屏山县", }] }, { "value": 511600, "pid": 510000, "label": "广安市", "children": [{ "value": 511602, "pid": 511600, "label": "广安区", }, { "value": 511603, "pid": 511600, "label": "前锋区", }, { "value": 511621, "pid": 511600, "label": "岳池县", }, { "value": 511622, "pid": 511600, "label": "武胜县", }, { "value": 511623, "pid": 511600, "label": "邻水县", }, { "value": 511681, "pid": 511600, "label": "华蓥市", }] }, { "value": 511700, "pid": 510000, "label": "达州市", "children": [{ "value": 511702, "pid": 511700, "label": "通川区", }, { "value": 511703, "pid": 511700, "label": "达川区", }, { "value": 511722, "pid": 511700, "label": "宣汉县", }, { "value": 511723, "pid": 511700, "label": "开江县", }, { "value": 511724, "pid": 511700, "label": "大竹县", }, { "value": 511725, "pid": 511700, "label": "渠县", }, { "value": 511781, "pid": 511700, "label": "万源市", }] }, { "value": 511800, "pid": 510000, "label": "雅安市", "children": [{ "value": 511802, "pid": 511800, "label": "雨城区", }, { "value": 511803, "pid": 511800, "label": "名山区", }, { "value": 511822, "pid": 511800, "label": "荥经县", }, { "value": 511823, "pid": 511800, "label": "汉源县", }, { "value": 511824, "pid": 511800, "label": "石棉县", }, { "value": 511825, "pid": 511800, "label": "天全县", }, { "value": 511826, "pid": 511800, "label": "芦山县", }, { "value": 511827, "pid": 511800, "label": "宝兴县", }] }, { "value": 511900, "pid": 510000, "label": "巴中市", "children": [{ "value": 511902, "pid": 511900, "label": "巴州区", }, { "value": 511903, "pid": 511900, "label": "恩阳区", }, { "value": 511921, "pid": 511900, "label": "通江县", }, { "value": 511922, "pid": 511900, "label": "南江县", }, { "value": 511923, "pid": 511900, "label": "平昌县", }] }, { "value": 512000, "pid": 510000, "label": "资阳市", "children": [{ "value": 512002, "pid": 512000, "label": "雁江区", }, { "value": 512021, "pid": 512000, "label": "安岳县", }, { "value": 512022, "pid": 512000, "label": "乐至县", }] }, { "value": 513200, "pid": 510000, "label": "阿坝藏族羌族自治州", "children": [{ "value": 513201, "pid": 513200, "label": "马尔康市", }, { "value": 513221, "pid": 513200, "label": "汶川县", }, { "value": 513222, "pid": 513200, "label": "理县", }, { "value": 513223, "pid": 513200, "label": "茂县", }, { "value": 513224, "pid": 513200, "label": "松潘县", }, { "value": 513225, "pid": 513200, "label": "九寨沟县", }, { "value": 513226, "pid": 513200, "label": "金川县", }, { "value": 513227, "pid": 513200, "label": "小金县", }, { "value": 513228, "pid": 513200, "label": "黑水县", }, { "value": 513230, "pid": 513200, "label": "壤塘县", }, { "value": 513231, "pid": 513200, "label": "阿坝县", }, { "value": 513232, "pid": 513200, "label": "若尔盖县", }, { "value": 513233, "pid": 513200, "label": "红原县", }] }, { "value": 513300, "pid": 510000, "label": "甘孜藏族自治州", "children": [{ "value": 513301, "pid": 513300, "label": "康定市", }, { "value": 513322, "pid": 513300, "label": "泸定县", }, { "value": 513323, "pid": 513300, "label": "丹巴县", }, { "value": 513324, "pid": 513300, "label": "九龙县", }, { "value": 513325, "pid": 513300, "label": "雅江县", }, { "value": 513326, "pid": 513300, "label": "道孚县", }, { "value": 513327, "pid": 513300, "label": "炉霍县", }, { "value": 513328, "pid": 513300, "label": "甘孜县", }, { "value": 513329, "pid": 513300, "label": "新龙县", }, { "value": 513330, "pid": 513300, "label": "德格县", }, { "value": 513331, "pid": 513300, "label": "白玉县", }, { "value": 513332, "pid": 513300, "label": "石渠县", }, { "value": 513333, "pid": 513300, "label": "色达县", }, { "value": 513334, "pid": 513300, "label": "理塘县", }, { "value": 513335, "pid": 513300, "label": "巴塘县", }, { "value": 513336, "pid": 513300, "label": "乡城县", }, { "value": 513337, "pid": 513300, "label": "稻城县", }, { "value": 513338, "pid": 513300, "label": "得荣县", }] }, { "value": 513400, "pid": 510000, "label": "凉山彝族自治州", "children": [{ "value": 513401, "pid": 513400, "label": "西昌市", }, { "value": 513422, "pid": 513400, "label": "木里藏族自治县", }, { "value": 513423, "pid": 513400, "label": "盐源县", }, { "value": 513424, "pid": 513400, "label": "德昌县", }, { "value": 513425, "pid": 513400, "label": "会理县", }, { "value": 513426, "pid": 513400, "label": "会东县", }, { "value": 513427, "pid": 513400, "label": "宁南县", }, { "value": 513428, "pid": 513400, "label": "普格县", }, { "value": 513429, "pid": 513400, "label": "布拖县", }, { "value": 513430, "pid": 513400, "label": "金阳县", }, { "value": 513431, "pid": 513400, "label": "昭觉县", }, { "value": 513432, "pid": 513400, "label": "喜德县", }, { "value": 513433, "pid": 513400, "label": "冕宁县", }, { "value": 513434, "pid": 513400, "label": "越西县", }, { "value": 513435, "pid": 513400, "label": "甘洛县", }, { "value": 513436, "pid": 513400, "label": "美姑县", }, { "value": 513437, "pid": 513400, "label": "雷波县", }] }] }, { "value": 520000, "pid": 100000, "label": "贵州省", "children": [{ "value": 520100, "pid": 520000, "label": "贵阳市", "children": [{ "value": 520102, "pid": 520100, "label": "南明区", }, { "value": 520103, "pid": 520100, "label": "云岩区", }, { "value": 520111, "pid": 520100, "label": "花溪区", }, { "value": 520112, "pid": 520100, "label": "乌当区", }, { "value": 520113, "pid": 520100, "label": "白云区", }, { "value": 520115, "pid": 520100, "label": "观山湖区", }, { "value": 520121, "pid": 520100, "label": "开阳县", }, { "value": 520122, "pid": 520100, "label": "息烽县", }, { "value": 520123, "pid": 520100, "label": "修文县", }, { "value": 520181, "pid": 520100, "label": "清镇市", }, { "value": 520182, "pid": 520100, "label": "贵安新区", }, { "value": 520183, "pid": 520100, "label": "高新区", }] }, { "value": 520200, "pid": 520000, "label": "六盘水市", "children": [{ "value": 520201, "pid": 520200, "label": "钟山区", }, { "value": 520203, "pid": 520200, "label": "六枝特区", }, { "value": 520221, "pid": 520200, "label": "水城县", }, { "value": 520281, "pid": 520200, "label": "盘州市", }] }, { "value": 520300, "pid": 520000, "label": "遵义市", "children": [{ "value": 520302, "pid": 520300, "label": "红花岗区", }, { "value": 520303, "pid": 520300, "label": "汇川区", }, { "value": 520304, "pid": 520300, "label": "播州区", }, { "value": 520322, "pid": 520300, "label": "桐梓县", }, { "value": 520323, "pid": 520300, "label": "绥阳县", }, { "value": 520324, "pid": 520300, "label": "正安县", }, { "value": 520325, "pid": 520300, "label": "道真仡佬族苗族自治县", }, { "value": 520326, "pid": 520300, "label": "务川仡佬族苗族自治县", }, { "value": 520327, "pid": 520300, "label": "凤冈县", }, { "value": 520328, "pid": 520300, "label": "湄潭县", }, { "value": 520329, "pid": 520300, "label": "余庆县", }, { "value": 520330, "pid": 520300, "label": "习水县", }, { "value": 520381, "pid": 520300, "label": "赤水市", }, { "value": 520382, "pid": 520300, "label": "仁怀市", }] }, { "value": 520400, "pid": 520000, "label": "安顺市", "children": [{ "value": 520402, "pid": 520400, "label": "西秀区", }, { "value": 520403, "pid": 520400, "label": "平坝区", }, { "value": 520422, "pid": 520400, "label": "普定县", }, { "value": 520423, "pid": 520400, "label": "镇宁布依族苗族自治县", }, { "value": 520424, "pid": 520400, "label": "关岭布依族苗族自治县", }, { "value": 520425, "pid": 520400, "label": "紫云苗族布依族自治县", }] }, { "value": 520500, "pid": 520000, "label": "毕节市", "children": [{ "value": 520502, "pid": 520500, "label": "七星关区", }, { "value": 520521, "pid": 520500, "label": "大方县", }, { "value": 520522, "pid": 520500, "label": "黔西县", }, { "value": 520523, "pid": 520500, "label": "金沙县", }, { "value": 520524, "pid": 520500, "label": "织金县", }, { "value": 520525, "pid": 520500, "label": "纳雍县", }, { "value": 520526, "pid": 520500, "label": "威宁彝族回族苗族自治县", }, { "value": 520527, "pid": 520500, "label": "赫章县", }] }, { "value": 520600, "pid": 520000, "label": "铜仁市", "children": [{ "value": 520602, "pid": 520600, "label": "碧江区", }, { "value": 520603, "pid": 520600, "label": "万山区", }, { "value": 520621, "pid": 520600, "label": "江口县", }, { "value": 520622, "pid": 520600, "label": "玉屏侗族自治县", }, { "value": 520623, "pid": 520600, "label": "石阡县", }, { "value": 520624, "pid": 520600, "label": "思南县", }, { "value": 520625, "pid": 520600, "label": "印江土家族苗族自治县", }, { "value": 520626, "pid": 520600, "label": "德江县", }, { "value": 520627, "pid": 520600, "label": "沿河土家族自治县", }, { "value": 520628, "pid": 520600, "label": "松桃苗族自治县", }] }, { "value": 522300, "pid": 520000, "label": "黔西南布依族苗族自治州", "children": [{ "value": 522301, "pid": 522300, "label": "兴义市 ", }, { "value": 522302, "pid": 522300, "label": "兴仁市", }, { "value": 522323, "pid": 522300, "label": "普安县", }, { "value": 522324, "pid": 522300, "label": "晴隆县", }, { "value": 522325, "pid": 522300, "label": "贞丰县", }, { "value": 522326, "pid": 522300, "label": "望谟县", }, { "value": 522327, "pid": 522300, "label": "册亨县", }, { "value": 522328, "pid": 522300, "label": "安龙县", }] }, { "value": 522600, "pid": 520000, "label": "黔东南苗族侗族自治州", "children": [{ "value": 522601, "pid": 522600, "label": "凯里市", }, { "value": 522622, "pid": 522600, "label": "黄平县", }, { "value": 522623, "pid": 522600, "label": "施秉县", }, { "value": 522624, "pid": 522600, "label": "三穗县", }, { "value": 522625, "pid": 522600, "label": "镇远县", }, { "value": 522626, "pid": 522600, "label": "岑巩县", }, { "value": 522627, "pid": 522600, "label": "天柱县", }, { "value": 522628, "pid": 522600, "label": "锦屏县", }, { "value": 522629, "pid": 522600, "label": "剑河县", }, { "value": 522630, "pid": 522600, "label": "台江县", }, { "value": 522631, "pid": 522600, "label": "黎平县", }, { "value": 522632, "pid": 522600, "label": "榕江县", }, { "value": 522633, "pid": 522600, "label": "从江县", }, { "value": 522634, "pid": 522600, "label": "雷山县", }, { "value": 522635, "pid": 522600, "label": "麻江县", }, { "value": 522636, "pid": 522600, "label": "丹寨县", }] }, { "value": 522700, "pid": 520000, "label": "黔南布依族苗族自治州", "children": [{ "value": 522701, "pid": 522700, "label": "都匀市", }, { "value": 522702, "pid": 522700, "label": "福泉市", }, { "value": 522722, "pid": 522700, "label": "荔波县", }, { "value": 522723, "pid": 522700, "label": "贵定县", }, { "value": 522725, "pid": 522700, "label": "瓮安县", }, { "value": 522726, "pid": 522700, "label": "独山县", }, { "value": 522727, "pid": 522700, "label": "平塘县", }, { "value": 522728, "pid": 522700, "label": "罗甸县", }, { "value": 522729, "pid": 522700, "label": "长顺县", }, { "value": 522730, "pid": 522700, "label": "龙里县", }, { "value": 522731, "pid": 522700, "label": "惠水县", }, { "value": 522732, "pid": 522700, "label": "三都水族自治县", }] }] }, { "value": 530000, "pid": 100000, "label": "云南省", "children": [{ "value": 530100, "pid": 530000, "label": "昆明市", "children": [{ "value": 530102, "pid": 530100, "label": "五华区", }, { "value": 530103, "pid": 530100, "label": "盘龙区", }, { "value": 530111, "pid": 530100, "label": "官渡区", }, { "value": 530112, "pid": 530100, "label": "西山区", }, { "value": 530113, "pid": 530100, "label": "东川区", }, { "value": 530114, "pid": 530100, "label": "呈贡区", }, { "value": 530115, "pid": 530100, "label": "晋宁区", }, { "value": 530124, "pid": 530100, "label": "富民县", }, { "value": 530125, "pid": 530100, "label": "宜良县", }, { "value": 530126, "pid": 530100, "label": "石林彝族自治县", }, { "value": 530127, "pid": 530100, "label": "嵩明县", }, { "value": 530128, "pid": 530100, "label": "禄劝彝族苗族自治县", }, { "value": 530129, "pid": 530100, "label": "寻甸回族彝族自治县 ", }, { "value": 530181, "pid": 530100, "label": "安宁市", }, { "value": 530182, "pid": 530100, "label": "滇中新区", }, { "value": 530183, "pid": 530100, "label": "高新区", }] }, { "value": 530300, "pid": 530000, "label": "曲靖市", "children": [{ "value": 530302, "pid": 530300, "label": "麒麟区", }, { "value": 530303, "pid": 530300, "label": "沾益区", }, { "value": 530304, "pid": 530300, "label": "马龙区", }, { "value": 530322, "pid": 530300, "label": "陆良县", }, { "value": 530323, "pid": 530300, "label": "师宗县", }, { "value": 530324, "pid": 530300, "label": "罗平县", }, { "value": 530325, "pid": 530300, "label": "富源县", }, { "value": 530326, "pid": 530300, "label": "会泽县", }, { "value": 530381, "pid": 530300, "label": "宣威市", }] }, { "value": 530400, "pid": 530000, "label": "玉溪市", "children": [{ "value": 530402, "pid": 530400, "label": "红塔区", }, { "value": 530403, "pid": 530400, "label": "江川区", }, { "value": 530422, "pid": 530400, "label": "澄江县", }, { "value": 530423, "pid": 530400, "label": "通海县", }, { "value": 530424, "pid": 530400, "label": "华宁县", }, { "value": 530425, "pid": 530400, "label": "易门县", }, { "value": 530426, "pid": 530400, "label": "峨山彝族自治县", }, { "value": 530427, "pid": 530400, "label": "新平彝族傣族自治县", }, { "value": 530428, "pid": 530400, "label": "元江哈尼族彝族傣族自治县", }] }, { "value": 530500, "pid": 530000, "label": "保山市", "children": [{ "value": 530502, "pid": 530500, "label": "隆阳区", }, { "value": 530521, "pid": 530500, "label": "施甸县", }, { "value": 530523, "pid": 530500, "label": "龙陵县", }, { "value": 530524, "pid": 530500, "label": "昌宁县", }, { "value": 530581, "pid": 530500, "label": "腾冲市", }] }, { "value": 530600, "pid": 530000, "label": "昭通市", "children": [{ "value": 530602, "pid": 530600, "label": "昭阳区", }, { "value": 530621, "pid": 530600, "label": "鲁甸县", }, { "value": 530622, "pid": 530600, "label": "巧家县", }, { "value": 530623, "pid": 530600, "label": "盐津县", }, { "value": 530624, "pid": 530600, "label": "大关县", }, { "value": 530625, "pid": 530600, "label": "永善县", }, { "value": 530626, "pid": 530600, "label": "绥江县", }, { "value": 530627, "pid": 530600, "label": "镇雄县", }, { "value": 530628, "pid": 530600, "label": "彝良县", }, { "value": 530629, "pid": 530600, "label": "威信县", }, { "value": 530681, "pid": 530600, "label": "水富市", }] }, { "value": 530700, "pid": 530000, "label": "丽江市", "children": [{ "value": 530702, "pid": 530700, "label": "古城区", }, { "value": 530721, "pid": 530700, "label": "玉龙纳西族自治县", }, { "value": 530722, "pid": 530700, "label": "永胜县", }, { "value": 530723, "pid": 530700, "label": "华坪县", }, { "value": 530724, "pid": 530700, "label": "宁蒗彝族自治县", }] }, { "value": 530800, "pid": 530000, "label": "普洱市", "children": [{ "value": 530802, "pid": 530800, "label": "思茅区", }, { "value": 530821, "pid": 530800, "label": "宁洱哈尼族彝族自治县", }, { "value": 530822, "pid": 530800, "label": "墨江哈尼族自治县", }, { "value": 530823, "pid": 530800, "label": "景东彝族自治县", }, { "value": 530824, "pid": 530800, "label": "景谷傣族彝族自治县", }, { "value": 530825, "pid": 530800, "label": "镇沅彝族哈尼族拉祜族自治县", }, { "value": 530826, "pid": 530800, "label": "江城哈尼族彝族自治县", }, { "value": 530827, "pid": 530800, "label": "孟连傣族拉祜族佤族自治县", }, { "value": 530828, "pid": 530800, "label": "澜沧拉祜族自治县", }, { "value": 530829, "pid": 530800, "label": "西盟佤族自治县", }] }, { "value": 530900, "pid": 530000, "label": "临沧市", "children": [{ "value": 530902, "pid": 530900, "label": "临翔区", }, { "value": 530921, "pid": 530900, "label": "凤庆县", }, { "value": 530922, "pid": 530900, "label": "云县", }, { "value": 530923, "pid": 530900, "label": "永德县", }, { "value": 530924, "pid": 530900, "label": "镇康县", }, { "value": 530925, "pid": 530900, "label": "双江拉祜族佤族布朗族傣族自治县", }, { "value": 530926, "pid": 530900, "label": "耿马傣族佤族自治县", }, { "value": 530927, "pid": 530900, "label": "沧源佤族自治县", }] }, { "value": 532300, "pid": 530000, "label": "楚雄彝族自治州", "children": [{ "value": 532301, "pid": 532300, "label": "楚雄市", }, { "value": 532322, "pid": 532300, "label": "双柏县", }, { "value": 532323, "pid": 532300, "label": "牟定县", }, { "value": 532324, "pid": 532300, "label": "南华县", }, { "value": 532325, "pid": 532300, "label": "姚安县", }, { "value": 532326, "pid": 532300, "label": "大姚县", }, { "value": 532327, "pid": 532300, "label": "永仁县", }, { "value": 532328, "pid": 532300, "label": "元谋县", }, { "value": 532329, "pid": 532300, "label": "武定县", }, { "value": 532331, "pid": 532300, "label": "禄丰县", }] }, { "value": 532500, "pid": 530000, "label": "红河哈尼族彝族自治州", "children": [{ "value": 532501, "pid": 532500, "label": "个旧市", }, { "value": 532502, "pid": 532500, "label": "开远市", }, { "value": 532503, "pid": 532500, "label": "蒙自市", }, { "value": 532504, "pid": 532500, "label": "弥勒市", }, { "value": 532523, "pid": 532500, "label": "屏边苗族自治县", }, { "value": 532524, "pid": 532500, "label": "建水县", }, { "value": 532525, "pid": 532500, "label": "石屏县", }, { "value": 532527, "pid": 532500, "label": "泸西县", }, { "value": 532528, "pid": 532500, "label": "元阳县", }, { "value": 532529, "pid": 532500, "label": "红河县", }, { "value": 532530, "pid": 532500, "label": "金平苗族瑶族傣族自治县", }, { "value": 532531, "pid": 532500, "label": "绿春县", }, { "value": 532532, "pid": 532500, "label": "河口瑶族自治县", }] }, { "value": 532600, "pid": 530000, "label": "文山壮族苗族自治州", "children": [{ "value": 532601, "pid": 532600, "label": "文山市", }, { "value": 532622, "pid": 532600, "label": "砚山县", }, { "value": 532623, "pid": 532600, "label": "西畴县", }, { "value": 532624, "pid": 532600, "label": "麻栗坡县", }, { "value": 532625, "pid": 532600, "label": "马关县", }, { "value": 532626, "pid": 532600, "label": "丘北县", }, { "value": 532627, "pid": 532600, "label": "广南县", }, { "value": 532628, "pid": 532600, "label": "富宁县", }] }, { "value": 532800, "pid": 530000, "label": "西双版纳傣族自治州", "children": [{ "value": 532801, "pid": 532800, "label": "景洪市", }, { "value": 532822, "pid": 532800, "label": "勐海县", }, { "value": 532823, "pid": 532800, "label": "勐腊县", }] }, { "value": 532900, "pid": 530000, "label": "大理白族自治州", "children": [{ "value": 532901, "pid": 532900, "label": "大理市", }, { "value": 532922, "pid": 532900, "label": "漾濞彝族自治县", }, { "value": 532923, "pid": 532900, "label": "祥云县", }, { "value": 532924, "pid": 532900, "label": "宾川县", }, { "value": 532925, "pid": 532900, "label": "弥渡县", }, { "value": 532926, "pid": 532900, "label": "南涧彝族自治县", }, { "value": 532927, "pid": 532900, "label": "巍山彝族回族自治县", }, { "value": 532928, "pid": 532900, "label": "永平县", }, { "value": 532929, "pid": 532900, "label": "云龙县", }, { "value": 532930, "pid": 532900, "label": "洱源县", }, { "value": 532931, "pid": 532900, "label": "剑川县", }, { "value": 532932, "pid": 532900, "label": "鹤庆县", }] }, { "value": 533100, "pid": 530000, "label": "德宏傣族景颇族自治州", "children": [{ "value": 533102, "pid": 533100, "label": "瑞丽市", }, { "value": 533103, "pid": 533100, "label": "芒市", }, { "value": 533122, "pid": 533100, "label": "梁河县", }, { "value": 533123, "pid": 533100, "label": "盈江县", }, { "value": 533124, "pid": 533100, "label": "陇川县", }] }, { "value": 533300, "pid": 530000, "label": "怒江傈僳族自治州", "children": [{ "value": 533301, "pid": 533300, "label": "泸水市", }, { "value": 533323, "pid": 533300, "label": "福贡县", }, { "value": 533324, "pid": 533300, "label": "贡山独龙族怒族自治县", }, { "value": 533325, "pid": 533300, "label": "兰坪白族普米族自治县", }] }, { "value": 533400, "pid": 530000, "label": "迪庆藏族自治州", "children": [{ "value": 533401, "pid": 533400, "label": "香格里拉市", }, { "value": 533422, "pid": 533400, "label": "德钦县", }, { "value": 533423, "pid": 533400, "label": "维西傈僳族自治县", }] }] }, { "value": 540000, "pid": 100000, "label": "西藏自治区", "children": [{ "value": 540100, "pid": 540000, "label": "拉萨市", "children": [{ "value": 540102, "pid": 540100, "label": "城关区", }, { "value": 540103, "pid": 540100, "label": "堆龙德庆区", }, { "value": 540104, "pid": 540100, "label": "达孜区", }, { "value": 540121, "pid": 540100, "label": "林周县", }, { "value": 540122, "pid": 540100, "label": "当雄县", }, { "value": 540123, "pid": 540100, "label": "尼木县", }, { "value": 540124, "pid": 540100, "label": "曲水县", }, { "value": 540127, "pid": 540100, "label": "墨竹工卡县", }, { "value": 540171, "pid": 540100, "label": "格尔木藏青工业园区", }, { "value": 540173, "pid": 540100, "label": "西藏文化旅游创意园区", }, { "value": 540174, "pid": 540100, "label": "达孜工业园区", }] }, { "value": 540200, "pid": 540000, "label": "日喀则市", "children": [{ "value": 540202, "pid": 540200, "label": "桑珠孜区", }, { "value": 540221, "pid": 540200, "label": "南木林县", }, { "value": 540222, "pid": 540200, "label": "江孜县", }, { "value": 540223, "pid": 540200, "label": "定日县", }, { "value": 540224, "pid": 540200, "label": "萨迦县", }, { "value": 540225, "pid": 540200, "label": "拉孜县", }, { "value": 540226, "pid": 540200, "label": "昂仁县", }, { "value": 540227, "pid": 540200, "label": "谢通门县", }, { "value": 540228, "pid": 540200, "label": "白朗县", }, { "value": 540229, "pid": 540200, "label": "仁布县", }, { "value": 540230, "pid": 540200, "label": "康马县", }, { "value": 540231, "pid": 540200, "label": "定结县", }, { "value": 540232, "pid": 540200, "label": "仲巴县", }, { "value": 540233, "pid": 540200, "label": "亚东县", }, { "value": 540234, "pid": 540200, "label": "吉隆县", }, { "value": 540235, "pid": 540200, "label": "聂拉木县", }, { "value": 540236, "pid": 540200, "label": "萨嘎县", }, { "value": 540237, "pid": 540200, "label": "岗巴县", }] }, { "value": 540300, "pid": 540000, "label": "昌都市", "children": [{ "value": 540302, "pid": 540300, "label": "卡若区", }, { "value": 540321, "pid": 540300, "label": "江达县", }, { "value": 540322, "pid": 540300, "label": "贡觉县", }, { "value": 540323, "pid": 540300, "label": "类乌齐县", }, { "value": 540324, "pid": 540300, "label": "丁青县", }, { "value": 540325, "pid": 540300, "label": "察雅县", }, { "value": 540326, "pid": 540300, "label": "八宿县", }, { "value": 540327, "pid": 540300, "label": "左贡县", }, { "value": 540328, "pid": 540300, "label": "芒康县", }, { "value": 540329, "pid": 540300, "label": "洛隆县", }, { "value": 540330, "pid": 540300, "label": "边坝县", }] }, { "value": 540400, "pid": 540000, "label": "林芝市", "children": [{ "value": 540402, "pid": 540400, "label": "巴宜区", }, { "value": 540421, "pid": 540400, "label": "工布江达县", }, { "value": 540422, "pid": 540400, "label": "米林县", }, { "value": 540423, "pid": 540400, "label": "墨脱县", }, { "value": 540424, "pid": 540400, "label": "波密县", }, { "value": 540425, "pid": 540400, "label": "察隅县", }, { "value": 540426, "pid": 540400, "label": "朗县", }] }, { "value": 540500, "pid": 540000, "label": "山南市", "children": [{ "value": 540502, "pid": 540500, "label": "乃东区", }, { "value": 540521, "pid": 540500, "label": "扎囊县", }, { "value": 540522, "pid": 540500, "label": "贡嘎县", }, { "value": 540523, "pid": 540500, "label": "桑日县", }, { "value": 540524, "pid": 540500, "label": "琼结县", }, { "value": 540525, "pid": 540500, "label": "曲松县", }, { "value": 540526, "pid": 540500, "label": "措美县", }, { "value": 540527, "pid": 540500, "label": "洛扎县", }, { "value": 540528, "pid": 540500, "label": "加查县", }, { "value": 540529, "pid": 540500, "label": "隆子县", }, { "value": 540530, "pid": 540500, "label": "错那县", }, { "value": 540531, "pid": 540500, "label": "浪卡子县", }] }, { "value": 540600, "pid": 540000, "label": "那曲市", "children": [{ "value": 540602, "pid": 540600, "label": "色尼区", }, { "value": 540621, "pid": 540600, "label": "嘉黎县", }, { "value": 540622, "pid": 540600, "label": "比如县", }, { "value": 540623, "pid": 540600, "label": "聂荣县", }, { "value": 540624, "pid": 540600, "label": "安多县", }, { "value": 540625, "pid": 540600, "label": "申扎县", }, { "value": 540626, "pid": 540600, "label": "索县", }, { "value": 540627, "pid": 540600, "label": "班戈县", }, { "value": 540628, "pid": 540600, "label": "巴青县", }, { "value": 540629, "pid": 540600, "label": "尼玛县", }, { "value": 540630, "pid": 540600, "label": "双湖县", }] }, { "value": 542500, "pid": 540000, "label": "阿里地区", "children": [{ "value": 542521, "pid": 542500, "label": "普兰县", }, { "value": 542522, "pid": 542500, "label": "札达县", }, { "value": 542523, "pid": 542500, "label": "噶尔县", }, { "value": 542524, "pid": 542500, "label": "日土县", }, { "value": 542525, "pid": 542500, "label": "革吉县", }, { "value": 542526, "pid": 542500, "label": "改则县", }, { "value": 542527, "pid": 542500, "label": "措勤县", }] }] }, { "value": 610000, "pid": 100000, "label": "陕西省", "children": [{ "value": 610100, "pid": 610000, "label": "西安市", "children": [{ "value": 610102, "pid": 610100, "label": "新城区", }, { "value": 610103, "pid": 610100, "label": "碑林区", }, { "value": 610104, "pid": 610100, "label": "莲湖区", }, { "value": 610111, "pid": 610100, "label": "灞桥区", }, { "value": 610112, "pid": 610100, "label": "未央区", }, { "value": 610113, "pid": 610100, "label": "雁塔区", }, { "value": 610114, "pid": 610100, "label": "阎良区", }, { "value": 610115, "pid": 610100, "label": "临潼区", }, { "value": 610116, "pid": 610100, "label": "长安区", }, { "value": 610117, "pid": 610100, "label": "高陵区", }, { "value": 610118, "pid": 610100, "label": "鄠邑区", }, { "value": 610122, "pid": 610100, "label": "蓝田县", }, { "value": 610124, "pid": 610100, "label": "周至县", }, { "value": 610125, "pid": 610100, "label": "西咸新区", }, { "value": 610127, "pid": 610100, "label": "曲江新区", }, { "value": 610128, "pid": 610100, "label": "高新区", }] }, { "value": 610200, "pid": 610000, "label": "铜川市", "children": [{ "value": 610202, "pid": 610200, "label": "王益区", }, { "value": 610203, "pid": 610200, "label": "印台区", }, { "value": 610204, "pid": 610200, "label": "耀州区", }, { "value": 610222, "pid": 610200, "label": "宜君县", }] }, { "value": 610300, "pid": 610000, "label": "宝鸡市", "children": [{ "value": 610302, "pid": 610300, "label": "渭滨区", }, { "value": 610303, "pid": 610300, "label": "金台区", }, { "value": 610304, "pid": 610300, "label": "陈仓区", }, { "value": 610322, "pid": 610300, "label": "凤翔县", }, { "value": 610323, "pid": 610300, "label": "岐山县", }, { "value": 610324, "pid": 610300, "label": "扶风县", }, { "value": 610326, "pid": 610300, "label": "眉县", }, { "value": 610327, "pid": 610300, "label": "陇县", }, { "value": 610328, "pid": 610300, "label": "千阳县", }, { "value": 610329, "pid": 610300, "label": "麟游县", }, { "value": 610330, "pid": 610300, "label": "凤县", }, { "value": 610331, "pid": 610300, "label": "太白县", }, { "value": 610332, "pid": 610300, "label": "高新区", }] }, { "value": 610400, "pid": 610000, "label": "咸阳市", "children": [{ "value": 610402, "pid": 610400, "label": "秦都区", }, { "value": 610403, "pid": 610400, "label": "杨陵区", }, { "value": 610404, "pid": 610400, "label": "渭城区", }, { "value": 610422, "pid": 610400, "label": "三原县", }, { "value": 610423, "pid": 610400, "label": "泾阳县", }, { "value": 610424, "pid": 610400, "label": "乾县", }, { "value": 610425, "pid": 610400, "label": "礼泉县", }, { "value": 610426, "pid": 610400, "label": "永寿县", }, { "value": 610428, "pid": 610400, "label": "长武县", }, { "value": 610429, "pid": 610400, "label": "旬邑县", }, { "value": 610430, "pid": 610400, "label": "淳化县", }, { "value": 610431, "pid": 610400, "label": "武功县", }, { "value": 610481, "pid": 610400, "label": "兴平市", }, { "value": 610482, "pid": 610400, "label": "彬州市", }, { "value": 610483, "pid": 610400, "label": "高新区", }] }, { "value": 610500, "pid": 610000, "label": "渭南市", "children": [{ "value": 610502, "pid": 610500, "label": "临渭区", }, { "value": 610503, "pid": 610500, "label": "华州区", }, { "value": 610522, "pid": 610500, "label": "潼关县", }, { "value": 610523, "pid": 610500, "label": "大荔县", }, { "value": 610524, "pid": 610500, "label": "合阳县", }, { "value": 610525, "pid": 610500, "label": "澄城县", }, { "value": 610526, "pid": 610500, "label": "蒲城县", }, { "value": 610527, "pid": 610500, "label": "白水县", }, { "value": 610528, "pid": 610500, "label": "富平县", }, { "value": 610581, "pid": 610500, "label": "韩城市", }, { "value": 610582, "pid": 610500, "label": "华阴市", }] }, { "value": 610600, "pid": 610000, "label": "延安市", "children": [{ "value": 610602, "pid": 610600, "label": "宝塔区", }, { "value": 610603, "pid": 610600, "label": "安塞区", }, { "value": 610621, "pid": 610600, "label": "延长县", }, { "value": 610622, "pid": 610600, "label": "延川县", }, { "value": 610623, "pid": 610600, "label": "子长县", }, { "value": 610625, "pid": 610600, "label": "志丹县", }, { "value": 610626, "pid": 610600, "label": "吴起县", }, { "value": 610627, "pid": 610600, "label": "甘泉县", }, { "value": 610628, "pid": 610600, "label": "富县", }, { "value": 610629, "pid": 610600, "label": "洛川县", }, { "value": 610630, "pid": 610600, "label": "宜川县", }, { "value": 610631, "pid": 610600, "label": "黄龙县", }, { "value": 610632, "pid": 610600, "label": "黄陵县", }] }, { "value": 610700, "pid": 610000, "label": "汉中市", "children": [{ "value": 610702, "pid": 610700, "label": "汉台区", }, { "value": 610703, "pid": 610700, "label": "南郑区", }, { "value": 610722, "pid": 610700, "label": "城固县", }, { "value": 610723, "pid": 610700, "label": "洋县", }, { "value": 610724, "pid": 610700, "label": "西乡县", }, { "value": 610725, "pid": 610700, "label": "勉县", }, { "value": 610726, "pid": 610700, "label": "宁强县", }, { "value": 610727, "pid": 610700, "label": "略阳县", }, { "value": 610728, "pid": 610700, "label": "镇巴县", }, { "value": 610729, "pid": 610700, "label": "留坝县", }, { "value": 610730, "pid": 610700, "label": "佛坪县", }] }, { "value": 610800, "pid": 610000, "label": "榆林市", "children": [{ "value": 610802, "pid": 610800, "label": "榆阳区", }, { "value": 610803, "pid": 610800, "label": "横山区", }, { "value": 610822, "pid": 610800, "label": "府谷县", }, { "value": 610824, "pid": 610800, "label": "靖边县", }, { "value": 610825, "pid": 610800, "label": "定边县", }, { "value": 610826, "pid": 610800, "label": "绥德县", }, { "value": 610827, "pid": 610800, "label": "米脂县", }, { "value": 610828, "pid": 610800, "label": "佳县", }, { "value": 610829, "pid": 610800, "label": "吴堡县", }, { "value": 610830, "pid": 610800, "label": "清涧县", }, { "value": 610831, "pid": 610800, "label": "子洲县", }, { "value": 610881, "pid": 610800, "label": "神木市", }] }, { "value": 610900, "pid": 610000, "label": "安康市", "children": [{ "value": 610902, "pid": 610900, "label": "汉滨区", }, { "value": 610921, "pid": 610900, "label": "汉阴县", }, { "value": 610922, "pid": 610900, "label": "石泉县", }, { "value": 610923, "pid": 610900, "label": "宁陕县", }, { "value": 610924, "pid": 610900, "label": "紫阳县", }, { "value": 610925, "pid": 610900, "label": "岚皋县", }, { "value": 610926, "pid": 610900, "label": "平利县", }, { "value": 610927, "pid": 610900, "label": "镇坪县", }, { "value": 610928, "pid": 610900, "label": "旬阳县", }, { "value": 610929, "pid": 610900, "label": "白河县", }] }, { "value": 611000, "pid": 610000, "label": "商洛市", "children": [{ "value": 611002, "pid": 611000, "label": "商州区", }, { "value": 611021, "pid": 611000, "label": "洛南县", }, { "value": 611022, "pid": 611000, "label": "丹凤县", }, { "value": 611023, "pid": 611000, "label": "商南县", }, { "value": 611024, "pid": 611000, "label": "山阳县", }, { "value": 611025, "pid": 611000, "label": "镇安县", }, { "value": 611026, "pid": 611000, "label": "柞水县", }] }] }, { "value": 620000, "pid": 100000, "label": "甘肃省", "children": [{ "value": 620100, "pid": 620000, "label": "兰州市", "children": [{ "value": 620102, "pid": 620100, "label": "城关区", }, { "value": 620103, "pid": 620100, "label": "七里河区", }, { "value": 620104, "pid": 620100, "label": "西固区", }, { "value": 620105, "pid": 620100, "label": "安宁区", }, { "value": 620111, "pid": 620100, "label": "红古区", }, { "value": 620121, "pid": 620100, "label": "永登县", }, { "value": 620122, "pid": 620100, "label": "皋兰县", }, { "value": 620123, "pid": 620100, "label": "榆中县", }, { "value": 620124, "pid": 620100, "label": "兰州新区", }, { "value": 620125, "pid": 620100, "label": "高新区", }, { "value": 620126, "pid": 620100, "label": "经济开发区", }] }, { "value": 620200, "pid": 620000, "label": "嘉峪关市", "children": [{ "value": 620201, "pid": 620200, "label": "雄关区", }, { "value": 620202, "pid": 620200, "label": "长城区", }, { "value": 620203, "pid": 620200, "label": "镜铁区", }] }, { "value": 620300, "pid": 620000, "label": "金昌市", "children": [{ "value": 620302, "pid": 620300, "label": "金川区", }, { "value": 620321, "pid": 620300, "label": "永昌县", }] }, { "value": 620400, "pid": 620000, "label": "白银市", "children": [{ "value": 620402, "pid": 620400, "label": "白银区", }, { "value": 620403, "pid": 620400, "label": "平川区", }, { "value": 620421, "pid": 620400, "label": "靖远县", }, { "value": 620422, "pid": 620400, "label": "会宁县", }, { "value": 620423, "pid": 620400, "label": "景泰县", }] }, { "value": 620500, "pid": 620000, "label": "天水市", "children": [{ "value": 620502, "pid": 620500, "label": "秦州区", }, { "value": 620503, "pid": 620500, "label": "麦积区", }, { "value": 620521, "pid": 620500, "label": "清水县", }, { "value": 620522, "pid": 620500, "label": "秦安县", }, { "value": 620523, "pid": 620500, "label": "甘谷县", }, { "value": 620524, "pid": 620500, "label": "武山县", }, { "value": 620525, "pid": 620500, "label": "张家川回族自治县", }] }, { "value": 620600, "pid": 620000, "label": "武威市", "children": [{ "value": 620602, "pid": 620600, "label": "凉州区", }, { "value": 620621, "pid": 620600, "label": "民勤县", }, { "value": 620622, "pid": 620600, "label": "古浪县", }, { "value": 620623, "pid": 620600, "label": "天祝藏族自治县", }] }, { "value": 620700, "pid": 620000, "label": "张掖市", "children": [{ "value": 620702, "pid": 620700, "label": "甘州区", }, { "value": 620721, "pid": 620700, "label": "肃南裕固族自治县", }, { "value": 620722, "pid": 620700, "label": "民乐县", }, { "value": 620723, "pid": 620700, "label": "临泽县", }, { "value": 620724, "pid": 620700, "label": "高台县", }, { "value": 620725, "pid": 620700, "label": "山丹县", }] }, { "value": 620800, "pid": 620000, "label": "平凉市", "children": [{ "value": 620802, "pid": 620800, "label": "崆峒区", }, { "value": 620821, "pid": 620800, "label": "泾川县", }, { "value": 620822, "pid": 620800, "label": "灵台县", }, { "value": 620823, "pid": 620800, "label": "崇信县", }, { "value": 620825, "pid": 620800, "label": "庄浪县", }, { "value": 620826, "pid": 620800, "label": "静宁县", }, { "value": 620881, "pid": 620800, "label": "华亭市", }] }, { "value": 620900, "pid": 620000, "label": "酒泉市", "children": [{ "value": 620902, "pid": 620900, "label": "肃州区", }, { "value": 620921, "pid": 620900, "label": "金塔县", }, { "value": 620922, "pid": 620900, "label": "瓜州县", }, { "value": 620923, "pid": 620900, "label": "肃北蒙古族自治县", }, { "value": 620924, "pid": 620900, "label": "阿克塞哈萨克族自治县", }, { "value": 620981, "pid": 620900, "label": "玉门市", }, { "value": 620982, "pid": 620900, "label": "敦煌市", }] }, { "value": 621000, "pid": 620000, "label": "庆阳市", "children": [{ "value": 621002, "pid": 621000, "label": "西峰区", }, { "value": 621021, "pid": 621000, "label": "庆城县", }, { "value": 621022, "pid": 621000, "label": "环县", }, { "value": 621023, "pid": 621000, "label": "华池县", }, { "value": 621024, "pid": 621000, "label": "合水县", }, { "value": 621025, "pid": 621000, "label": "正宁县", }, { "value": 621026, "pid": 621000, "label": "宁县", }, { "value": 621027, "pid": 621000, "label": "镇原县", }] }, { "value": 621100, "pid": 620000, "label": "定西市", "children": [{ "value": 621102, "pid": 621100, "label": "安定区", }, { "value": 621121, "pid": 621100, "label": "通渭县", }, { "value": 621122, "pid": 621100, "label": "陇西县", }, { "value": 621123, "pid": 621100, "label": "渭源县", }, { "value": 621124, "pid": 621100, "label": "临洮县", }, { "value": 621125, "pid": 621100, "label": "漳县", }, { "value": 621126, "pid": 621100, "label": "岷县", }] }, { "value": 621200, "pid": 620000, "label": "陇南市", "children": [{ "value": 621202, "pid": 621200, "label": "武都区", }, { "value": 621221, "pid": 621200, "label": "成县", }, { "value": 621222, "pid": 621200, "label": "文县", }, { "value": 621223, "pid": 621200, "label": "宕昌县", }, { "value": 621224, "pid": 621200, "label": "康县", }, { "value": 621225, "pid": 621200, "label": "西和县", }, { "value": 621226, "pid": 621200, "label": "礼县", }, { "value": 621227, "pid": 621200, "label": "徽县", }, { "value": 621228, "pid": 621200, "label": "两当县", }] }, { "value": 622900, "pid": 620000, "label": "临夏回族自治州", "children": [{ "value": 622901, "pid": 622900, "label": "临夏市", }, { "value": 622921, "pid": 622900, "label": "临夏县", }, { "value": 622922, "pid": 622900, "label": "康乐县", }, { "value": 622923, "pid": 622900, "label": "永靖县", }, { "value": 622924, "pid": 622900, "label": "广河县", }, { "value": 622925, "pid": 622900, "label": "和政县", }, { "value": 622926, "pid": 622900, "label": "东乡族自治县", }, { "value": 622927, "pid": 622900, "label": "积石山保安族东乡族撒拉族自治县", }] }, { "value": 623000, "pid": 620000, "label": "甘南藏族自治州", "children": [{ "value": 623001, "pid": 623000, "label": "合作市", }, { "value": 623021, "pid": 623000, "label": "临潭县", }, { "value": 623022, "pid": 623000, "label": "卓尼县", }, { "value": 623023, "pid": 623000, "label": "舟曲县", }, { "value": 623024, "pid": 623000, "label": "迭部县", }, { "value": 623025, "pid": 623000, "label": "玛曲县", }, { "value": 623026, "pid": 623000, "label": "碌曲县", }, { "value": 623027, "pid": 623000, "label": "夏河县", }] }] }, { "value": 630000, "pid": 100000, "label": "青海省", "children": [{ "value": 630100, "pid": 630000, "label": "西宁市", "children": [{ "value": 630102, "pid": 630100, "label": "城东区", }, { "value": 630103, "pid": 630100, "label": "城中区", }, { "value": 630104, "pid": 630100, "label": "城西区", }, { "value": 630105, "pid": 630100, "label": "城北区", }, { "value": 630121, "pid": 630100, "label": "大通回族土族自治县", }, { "value": 630122, "pid": 630100, "label": "湟中县", }, { "value": 630123, "pid": 630100, "label": "湟源县", }] }, { "value": 630200, "pid": 630000, "label": "海东市", "children": [{ "value": 630202, "pid": 630200, "label": "乐都区", }, { "value": 630203, "pid": 630200, "label": "平安区", }, { "value": 630222, "pid": 630200, "label": "民和回族土族自治县", }, { "value": 630223, "pid": 630200, "label": "互助土族自治县", }, { "value": 630224, "pid": 630200, "label": "化隆回族自治县", }, { "value": 630225, "pid": 630200, "label": "循化撒拉族自治县", }] }, { "value": 632200, "pid": 630000, "label": "海北藏族自治州", "children": [{ "value": 632221, "pid": 632200, "label": "门源回族自治县", }, { "value": 632222, "pid": 632200, "label": "祁连县", }, { "value": 632223, "pid": 632200, "label": "海晏县", }, { "value": 632224, "pid": 632200, "label": "刚察县", }] }, { "value": 632300, "pid": 630000, "label": "黄南藏族自治州", "children": [{ "value": 632321, "pid": 632300, "label": "同仁县", }, { "value": 632322, "pid": 632300, "label": "尖扎县", }, { "value": 632323, "pid": 632300, "label": "泽库县", }, { "value": 632324, "pid": 632300, "label": "河南蒙古族自治县", }] }, { "value": 632500, "pid": 630000, "label": "海南藏族自治州", "children": [{ "value": 632521, "pid": 632500, "label": "共和县", }, { "value": 632522, "pid": 632500, "label": "同德县", }, { "value": 632523, "pid": 632500, "label": "贵德县", }, { "value": 632524, "pid": 632500, "label": "兴海县", }, { "value": 632525, "pid": 632500, "label": "贵南县", }] }, { "value": 632600, "pid": 630000, "label": "果洛藏族自治州", "children": [{ "value": 632621, "pid": 632600, "label": "玛沁县", }, { "value": 632622, "pid": 632600, "label": "班玛县", }, { "value": 632623, "pid": 632600, "label": "甘德县", }, { "value": 632624, "pid": 632600, "label": "达日县", }, { "value": 632625, "pid": 632600, "label": "久治县", }, { "value": 632626, "pid": 632600, "label": "玛多县", }] }, { "value": 632700, "pid": 630000, "label": "玉树藏族自治州", "children": [{ "value": 632701, "pid": 632700, "label": "玉树市", }, { "value": 632722, "pid": 632700, "label": "杂多县", }, { "value": 632723, "pid": 632700, "label": "称多县", }, { "value": 632724, "pid": 632700, "label": "治多县", }, { "value": 632725, "pid": 632700, "label": "囊谦县", }, { "value": 632726, "pid": 632700, "label": "曲麻莱县", }] }, { "value": 632800, "pid": 630000, "label": "海西蒙古族藏族自治州", "children": [{ "value": 632801, "pid": 632800, "label": "格尔木市", }, { "value": 632802, "pid": 632800, "label": "德令哈市", }, { "value": 632803, "pid": 632800, "label": "茫崖市", }, { "value": 632821, "pid": 632800, "label": "乌兰县", }, { "value": 632822, "pid": 632800, "label": "都兰县", }, { "value": 632823, "pid": 632800, "label": "天峻县", }] }] }, { "value": 640000, "pid": 100000, "label": "宁夏回族自治区", "children": [{ "value": 640100, "pid": 640000, "label": "银川市", "children": [{ "value": 640104, "pid": 640100, "label": "兴庆区", }, { "value": 640105, "pid": 640100, "label": "西夏区", }, { "value": 640106, "pid": 640100, "label": "金凤区", }, { "value": 640121, "pid": 640100, "label": "永宁县", }, { "value": 640122, "pid": 640100, "label": "贺兰县", }, { "value": 640181, "pid": 640100, "label": "灵武市", }, { "value": 640182, "pid": 640100, "label": "经济开发区", }] }, { "value": 640200, "pid": 640000, "label": "石嘴山市", "children": [{ "value": 640202, "pid": 640200, "label": "大武口区", }, { "value": 640205, "pid": 640200, "label": "惠农区", }, { "value": 640221, "pid": 640200, "label": "平罗县", }, { "value": 640222, "pid": 640200, "label": "经济开发区", }] }, { "value": 640300, "pid": 640000, "label": "吴忠市", "children": [{ "value": 640302, "pid": 640300, "label": "利通区", }, { "value": 640303, "pid": 640300, "label": "红寺堡区", }, { "value": 640323, "pid": 640300, "label": "盐池县", }, { "value": 640324, "pid": 640300, "label": "同心县", }, { "value": 640381, "pid": 640300, "label": "青铜峡市", }] }, { "value": 640400, "pid": 640000, "label": "固原市", "children": [{ "value": 640402, "pid": 640400, "label": "原州区", }, { "value": 640422, "pid": 640400, "label": "西吉县", }, { "value": 640423, "pid": 640400, "label": "隆德县", }, { "value": 640424, "pid": 640400, "label": "泾源县", }, { "value": 640425, "pid": 640400, "label": "彭阳县", }] }, { "value": 640500, "pid": 640000, "label": "中卫市", "children": [{ "value": 640502, "pid": 640500, "label": "沙坡头区", }, { "value": 640521, "pid": 640500, "label": "中宁县", }, { "value": 640522, "pid": 640500, "label": "海原县", }] }] }, { "value": 650000, "pid": 100000, "label": "新疆维吾尔自治区", "children": [{ "value": 650100, "pid": 650000, "label": "乌鲁木齐市", "children": [{ "value": 650102, "pid": 650100, "label": "天山区", }, { "value": 650103, "pid": 650100, "label": "沙依巴克区", }, { "value": 650104, "pid": 650100, "label": "新市区", }, { "value": 650105, "pid": 650100, "label": "水磨沟区", }, { "value": 650106, "pid": 650100, "label": "头屯河区", }, { "value": 650107, "pid": 650100, "label": "达坂城区", }, { "value": 650109, "pid": 650100, "label": "米东区", }, { "value": 650121, "pid": 650100, "label": "乌鲁木齐县", }, { "value": 650171, "pid": 650100, "label": "经济技术开发区", }, { "value": 650172, "pid": 650100, "label": "高新区", }] }, { "value": 650200, "pid": 650000, "label": "克拉玛依市", "children": [{ "value": 650202, "pid": 650200, "label": "独山子区", }, { "value": 650203, "pid": 650200, "label": "克拉玛依区", }, { "value": 650204, "pid": 650200, "label": "白碱滩区", }, { "value": 650205, "pid": 650200, "label": "乌尔禾区", }] }, { "value": 650400, "pid": 650000, "label": "吐鲁番市", "children": [{ "value": 650402, "pid": 650400, "label": "高昌区", }, { "value": 650421, "pid": 650400, "label": "鄯善县", }, { "value": 650422, "pid": 650400, "label": "托克逊县", }] }, { "value": 650500, "pid": 650000, "label": "哈密市", "children": [{ "value": 650502, "pid": 650500, "label": "伊州区", }, { "value": 650521, "pid": 650500, "label": "巴里坤哈萨克自治县", }, { "value": 650522, "pid": 650500, "label": "伊吾县", }] }, { "value": 652300, "pid": 650000, "label": "昌吉回族自治州", "children": [{ "value": 652301, "pid": 652300, "label": "昌吉市", }, { "value": 652302, "pid": 652300, "label": "阜康市", }, { "value": 652323, "pid": 652300, "label": "呼图壁县", }, { "value": 652324, "pid": 652300, "label": "玛纳斯县", }, { "value": 652325, "pid": 652300, "label": "奇台县", }, { "value": 652327, "pid": 652300, "label": "吉木萨尔县", }, { "value": 652328, "pid": 652300, "label": "木垒哈萨克自治县", }] }, { "value": 652700, "pid": 650000, "label": "博尔塔拉蒙古自治州", "children": [{ "value": 652701, "pid": 652700, "label": "博乐市", }, { "value": 652702, "pid": 652700, "label": "阿拉山口市", }, { "value": 652722, "pid": 652700, "label": "精河县", }, { "value": 652723, "pid": 652700, "label": "温泉县", }] }, { "value": 652800, "pid": 650000, "label": "巴音郭楞蒙古自治州", "children": [{ "value": 652801, "pid": 652800, "label": "库尔勒市", }, { "value": 652822, "pid": 652800, "label": "轮台县", }, { "value": 652823, "pid": 652800, "label": "尉犁县", }, { "value": 652824, "pid": 652800, "label": "若羌县", }, { "value": 652825, "pid": 652800, "label": "且末县", }, { "value": 652826, "pid": 652800, "label": "焉耆回族自治县", }, { "value": 652827, "pid": 652800, "label": "和静县", }, { "value": 652828, "pid": 652800, "label": "和硕县", }, { "value": 652829, "pid": 652800, "label": "博湖县", }, { "value": 652871, "pid": 652800, "label": "库尔勒开发区", }] }, { "value": 652900, "pid": 650000, "label": "阿克苏地区", "children": [{ "value": 652901, "pid": 652900, "label": "阿克苏市", }, { "value": 652922, "pid": 652900, "label": "温宿县", }, { "value": 652923, "pid": 652900, "label": "库车县", }, { "value": 652924, "pid": 652900, "label": "沙雅县", }, { "value": 652925, "pid": 652900, "label": "新和县", }, { "value": 652926, "pid": 652900, "label": "拜城县", }, { "value": 652927, "pid": 652900, "label": "乌什县", }, { "value": 652928, "pid": 652900, "label": "阿瓦提县", }, { "value": 652929, "pid": 652900, "label": "柯坪县", }] }, { "value": 653000, "pid": 650000, "label": "克孜勒苏柯尔克孜自治州", "children": [{ "value": 653001, "pid": 653000, "label": "阿图什市", }, { "value": 653022, "pid": 653000, "label": "阿克陶县", }, { "value": 653023, "pid": 653000, "label": "阿合奇县", }, { "value": 653024, "pid": 653000, "label": "乌恰县", }] }, { "value": 653100, "pid": 650000, "label": "喀什地区", "children": [{ "value": 653101, "pid": 653100, "label": "喀什市", }, { "value": 653121, "pid": 653100, "label": "疏附县", }, { "value": 653122, "pid": 653100, "label": "疏勒县", }, { "value": 653123, "pid": 653100, "label": "英吉沙县", }, { "value": 653124, "pid": 653100, "label": "泽普县", }, { "value": 653125, "pid": 653100, "label": "莎车县", }, { "value": 653126, "pid": 653100, "label": "叶城县", }, { "value": 653127, "pid": 653100, "label": "麦盖提县", }, { "value": 653128, "pid": 653100, "label": "岳普湖县", }, { "value": 653129, "pid": 653100, "label": "伽师县", }, { "value": 653130, "pid": 653100, "label": "巴楚县", }, { "value": 653131, "pid": 653100, "label": "塔什库尔干塔吉克自治县", }] }, { "value": 653200, "pid": 650000, "label": "和田地区", "children": [{ "value": 653201, "pid": 653200, "label": "和田市", }, { "value": 653221, "pid": 653200, "label": "和田县", }, { "value": 653222, "pid": 653200, "label": "墨玉县", }, { "value": 653223, "pid": 653200, "label": "皮山县", }, { "value": 653224, "pid": 653200, "label": "洛浦县", }, { "value": 653225, "pid": 653200, "label": "策勒县", }, { "value": 653226, "pid": 653200, "label": "于田县", }, { "value": 653227, "pid": 653200, "label": "民丰县", }] }, { "value": 654000, "pid": 650000, "label": "伊犁哈萨克自治州", "children": [{ "value": 654002, "pid": 654000, "label": "伊宁市", }, { "value": 654003, "pid": 654000, "label": "奎屯市", }, { "value": 654004, "pid": 654000, "label": "霍尔果斯市", }, { "value": 654021, "pid": 654000, "label": "伊宁县", }, { "value": 654022, "pid": 654000, "label": "察布查尔锡伯自治县", }, { "value": 654023, "pid": 654000, "label": "霍城县", }, { "value": 654024, "pid": 654000, "label": "巩留县", }, { "value": 654025, "pid": 654000, "label": "新源县", }, { "value": 654026, "pid": 654000, "label": "昭苏县", }, { "value": 654027, "pid": 654000, "label": "特克斯县", }, { "value": 654028, "pid": 654000, "label": "尼勒克县", }] }, { "value": 654200, "pid": 650000, "label": "塔城地区", "children": [{ "value": 654201, "pid": 654200, "label": "塔城市", }, { "value": 654202, "pid": 654200, "label": "乌苏市", }, { "value": 654221, "pid": 654200, "label": "额敏县", }, { "value": 654223, "pid": 654200, "label": "沙湾县", }, { "value": 654224, "pid": 654200, "label": "托里县", }, { "value": 654225, "pid": 654200, "label": "裕民县", }, { "value": 654226, "pid": 654200, "label": "和布克赛尔蒙古自治县", }] }, { "value": 654300, "pid": 650000, "label": "阿勒泰地区", "children": [{ "value": 654301, "pid": 654300, "label": "阿勒泰市", }, { "value": 654321, "pid": 654300, "label": "布尔津县", }, { "value": 654322, "pid": 654300, "label": "富蕴县", }, { "value": 654323, "pid": 654300, "label": "福海县", }, { "value": 654324, "pid": 654300, "label": "哈巴河县", }, { "value": 654325, "pid": 654300, "label": "青河县", }, { "value": 654326, "pid": 654300, "label": "吉木乃县", }] }, { "value": 659001, "pid": 650000, "label": "石河子市", "children": [{ "value": 659101, "pid": 659001, "label": "新城街道", }, { "value": 659102, "pid": 659001, "label": "向阳街道", }, { "value": 659103, "pid": 659001, "label": "红山街道", }, { "value": 659104, "pid": 659001, "label": "老街街道", }, { "value": 659105, "pid": 659001, "label": "东城街道", }, { "value": 659106, "pid": 659001, "label": "北泉镇", }, { "value": 659107, "pid": 659001, "label": "石河子乡", }, { "value": 659108, "pid": 659001, "label": "一五二团", }] }, { "value": 659002, "pid": 650000, "label": "阿拉尔市", "children": [{ "value": 659201, "pid": 659002, "label": "幸福路街道", }, { "value": 659202, "pid": 659002, "label": "金银川路街道", }, { "value": 659203, "pid": 659002, "label": "青松路街道", }, { "value": 659204, "pid": 659002, "label": "南口街道", }, { "value": 659205, "pid": 659002, "label": "托喀依乡", }, { "value": 659206, "pid": 659002, "label": "金银川镇", }] }, { "value": 659003, "pid": 650000, "label": "图木舒克市", "children": [{ "value": 659301, "pid": 659003, "label": "图木舒克市区", }, { "value": 659302, "pid": 659003, "label": "兵团四十四团", }, { "value": 659303, "pid": 659003, "label": "兵团四十九团", }, { "value": 659304, "pid": 659003, "label": "兵团五十团", }, { "value": 659305, "pid": 659003, "label": "兵团五十一团", }, { "value": 659306, "pid": 659003, "label": "兵团五十二团", }, { "value": 659307, "pid": 659003, "label": "兵团五十三团", }, { "value": 659308, "pid": 659003, "label": "喀拉拜勒镇", }, { "value": 659309, "pid": 659003, "label": "永安坝", }] }, { "value": 659004, "pid": 650000, "label": "五家渠市", "children": [{ "value": 659401, "pid": 659004, "label": "城区", }, { "value": 659402, "pid": 659004, "label": "一零一团", }, { "value": 659403, "pid": 659004, "label": "一零二团", }, { "value": 659404, "pid": 659004, "label": "一零三团", }] }, { "value": 659005, "pid": 650000, "label": "北屯市", "children": [{ "value": 659501, "pid": 659005, "label": "新城区", }, { "value": 659502, "pid": 659005, "label": "老城区", }, { "value": 659503, "pid": 659005, "label": "工业园区", }, { "value": 659504, "pid": 659005, "label": "海川镇", }, { "value": 659505, "pid": 659005, "label": "丰庆镇", }, { "value": 659506, "pid": 659005, "label": "锡伯渡镇", }] }, { "value": 659006, "pid": 650000, "label": "铁门关市", "children": [{ "value": 659601, "pid": 659006, "label": "二十九团场", }, { "value": 659602, "pid": 659006, "label": "库西经济工业园", }, { "value": 659603, "pid": 659006, "label": "博古其镇", }, { "value": 659604, "pid": 659006, "label": "双丰镇", }] }, { "value": 659007, "pid": 650000, "label": "双河市", "children": [{ "value": 659701, "pid": 659007, "label": "八十一团", }, { "value": 659702, "pid": 659007, "label": "八十四团", }, { "value": 659703, "pid": 659007, "label": "八十五团", }, { "value": 659704, "pid": 659007, "label": "八十六团", }, { "value": 659705, "pid": 659007, "label": "八十九团", }, { "value": 659706, "pid": 659007, "label": "九十团", }] }, { "value": 659008, "pid": 650000, "label": "可克达拉市", "children": [{ "value": 659801, "pid": 659008, "label": "63团", }, { "value": 659802, "pid": 659008, "label": "64团", }, { "value": 659803, "pid": 659008, "label": "66团", }, { "value": 659804, "pid": 659008, "label": "67团", }, { "value": 659805, "pid": 659008, "label": "68团", }] }, { "value": 659009, "pid": 650000, "label": "昆玉市", "children": [{ "value": 659901, "pid": 659009, "label": "皮山农场", }, { "value": 659902, "pid": 659009, "label": "二二四团", }, { "value": 659903, "pid": 659009, "label": "四十七团", }, { "value": 659904, "pid": 659009, "label": "一牧场", }] }] }, { "value": 710000, "pid": 100000, "label": "台湾", "children": [{ "value": 710100, "pid": 710000, "label": "台北市", "children": [{ "value": 710101, "pid": 710100, "label": "松山区", }, { "value": 710102, "pid": 710100, "label": "信义区", }, { "value": 710103, "pid": 710100, "label": "大安区", }, { "value": 710104, "pid": 710100, "label": "中山区", }, { "value": 710105, "pid": 710100, "label": "中正区", }, { "value": 710106, "pid": 710100, "label": "大同区", }, { "value": 710107, "pid": 710100, "label": "万华区", }, { "value": 710108, "pid": 710100, "label": "文山区", }, { "value": 710109, "pid": 710100, "label": "南港区", }, { "value": 710110, "pid": 710100, "label": "内湖区", }, { "value": 710111, "pid": 710100, "label": "士林区", }, { "value": 710112, "pid": 710100, "label": "北投区", }] }, { "value": 710200, "pid": 710000, "label": "高雄市", "children": [{ "value": 710201, "pid": 710200, "label": "盐埕区", }, { "value": 710202, "pid": 710200, "label": "鼓山区", }, { "value": 710203, "pid": 710200, "label": "左营区", }, { "value": 710204, "pid": 710200, "label": "楠梓区", }, { "value": 710205, "pid": 710200, "label": "三民区", }, { "value": 710206, "pid": 710200, "label": "新兴区", }, { "value": 710207, "pid": 710200, "label": "前金区", }, { "value": 710208, "pid": 710200, "label": "苓雅区", }, { "value": 710209, "pid": 710200, "label": "前镇区", }, { "value": 710210, "pid": 710200, "label": "旗津区", }, { "value": 710211, "pid": 710200, "label": "小港区", }, { "value": 710212, "pid": 710200, "label": "凤山区", }, { "value": 710213, "pid": 710200, "label": "林园区", }, { "value": 710214, "pid": 710200, "label": "大寮区", }, { "value": 710215, "pid": 710200, "label": "大树区", }, { "value": 710216, "pid": 710200, "label": "大社区", }, { "value": 710217, "pid": 710200, "label": "仁武区", }, { "value": 710218, "pid": 710200, "label": "鸟松区", }, { "value": 710219, "pid": 710200, "label": "冈山区", }, { "value": 710220, "pid": 710200, "label": "桥头区", }, { "value": 710221, "pid": 710200, "label": "燕巢区", }, { "value": 710222, "pid": 710200, "label": "田寮区", }, { "value": 710223, "pid": 710200, "label": "阿莲区", }, { "value": 710224, "pid": 710200, "label": "路竹区", }, { "value": 710225, "pid": 710200, "label": "湖内区", }, { "value": 710226, "pid": 710200, "label": "茄萣区", }, { "value": 710227, "pid": 710200, "label": "永安区", }, { "value": 710228, "pid": 710200, "label": "弥陀区", }, { "value": 710229, "pid": 710200, "label": "梓官区", }, { "value": 710230, "pid": 710200, "label": "旗山区", }, { "value": 710231, "pid": 710200, "label": "美浓区", }, { "value": 710232, "pid": 710200, "label": "六龟区", }, { "value": 710233, "pid": 710200, "label": "甲仙区", }, { "value": 710234, "pid": 710200, "label": "杉林区", }, { "value": 710235, "pid": 710200, "label": "内门区", }, { "value": 710236, "pid": 710200, "label": "茂林区", }, { "value": 710237, "pid": 710200, "label": "桃源区", }, { "value": 710238, "pid": 710200, "label": "那玛夏区", }] }, { "value": 710300, "pid": 710000, "label": "基隆市", "children": [{ "value": 710301, "pid": 710300, "label": "中正区", }, { "value": 710302, "pid": 710300, "label": "七堵区", }, { "value": 710303, "pid": 710300, "label": "暖暖区", }, { "value": 710304, "pid": 710300, "label": "仁爱区", }, { "value": 710305, "pid": 710300, "label": "中山区", }, { "value": 710306, "pid": 710300, "label": "安乐区", }, { "value": 710307, "pid": 710300, "label": "信义区", }] }, { "value": 710400, "pid": 710000, "label": "台中市", "children": [{ "value": 710401, "pid": 710400, "label": "中区", }, { "value": 710402, "pid": 710400, "label": "东区", }, { "value": 710403, "pid": 710400, "label": "南区", }, { "value": 710404, "pid": 710400, "label": "西区", }, { "value": 710405, "pid": 710400, "label": "北区", }, { "value": 710406, "pid": 710400, "label": "西屯区", }, { "value": 710407, "pid": 710400, "label": "南屯区", }, { "value": 710408, "pid": 710400, "label": "北屯区", }, { "value": 710409, "pid": 710400, "label": "丰原区", }, { "value": 710410, "pid": 710400, "label": "东势区", }, { "value": 710411, "pid": 710400, "label": "大甲区", }, { "value": 710412, "pid": 710400, "label": "清水区", }, { "value": 710413, "pid": 710400, "label": "沙鹿区", }, { "value": 710414, "pid": 710400, "label": "梧栖区", }, { "value": 710415, "pid": 710400, "label": "后里区", }, { "value": 710416, "pid": 710400, "label": "神冈区", }, { "value": 710417, "pid": 710400, "label": "潭子区", }, { "value": 710418, "pid": 710400, "label": "大雅区", }, { "value": 710419, "pid": 710400, "label": "新社区", }, { "value": 710420, "pid": 710400, "label": "石冈区", }, { "value": 710421, "pid": 710400, "label": "外埔区", }, { "value": 710422, "pid": 710400, "label": "大安区", }, { "value": 710423, "pid": 710400, "label": "乌日区", }, { "value": 710424, "pid": 710400, "label": "大肚区", }, { "value": 710425, "pid": 710400, "label": "龙井区", }, { "value": 710426, "pid": 710400, "label": "雾峰区", }, { "value": 710427, "pid": 710400, "label": "太平区", }, { "value": 710428, "pid": 710400, "label": "大里区", }, { "value": 710429, "pid": 710400, "label": "和平区", }] }, { "value": 710500, "pid": 710000, "label": "台南市", "children": [{ "value": 710501, "pid": 710500, "label": "东区", }, { "value": 710502, "pid": 710500, "label": "南区", }, { "value": 710504, "pid": 710500, "label": "北区", }, { "value": 710506, "pid": 710500, "label": "安南区", }, { "value": 710507, "pid": 710500, "label": "安平区", }, { "value": 710508, "pid": 710500, "label": "中西区", }, { "value": 710509, "pid": 710500, "label": "新营区", }, { "value": 710510, "pid": 710500, "label": "盐水区", }, { "value": 710511, "pid": 710500, "label": "白河区", }, { "value": 710512, "pid": 710500, "label": "柳营区", }, { "value": 710513, "pid": 710500, "label": "后壁区", }, { "value": 710514, "pid": 710500, "label": "东山区", }, { "value": 710515, "pid": 710500, "label": "麻豆区", }, { "value": 710516, "pid": 710500, "label": "下营区", }, { "value": 710517, "pid": 710500, "label": "六甲区", }, { "value": 710518, "pid": 710500, "label": "官田区", }, { "value": 710519, "pid": 710500, "label": "大内区", }, { "value": 710520, "pid": 710500, "label": "佳里区", }, { "value": 710521, "pid": 710500, "label": "学甲区", }, { "value": 710522, "pid": 710500, "label": "西港区", }, { "value": 710523, "pid": 710500, "label": "七股区", }, { "value": 710524, "pid": 710500, "label": "将军区", }, { "value": 710525, "pid": 710500, "label": "北门区", }, { "value": 710526, "pid": 710500, "label": "新化区", }, { "value": 710527, "pid": 710500, "label": "善化区", }, { "value": 710528, "pid": 710500, "label": "新市区", }, { "value": 710529, "pid": 710500, "label": "安定区", }, { "value": 710530, "pid": 710500, "label": "山上区", }, { "value": 710531, "pid": 710500, "label": "玉井区", }, { "value": 710532, "pid": 710500, "label": "楠西区", }, { "value": 710533, "pid": 710500, "label": "南化区", }, { "value": 710534, "pid": 710500, "label": "左镇区", }, { "value": 710535, "pid": 710500, "label": "仁德区", }, { "value": 710536, "pid": 710500, "label": "归仁区", }, { "value": 710537, "pid": 710500, "label": "关庙区", }, { "value": 710538, "pid": 710500, "label": "龙崎区", }, { "value": 710539, "pid": 710500, "label": "永康区", }] }, { "value": 710600, "pid": 710000, "label": "新竹市", "children": [{ "value": 710601, "pid": 710600, "label": "东区", }, { "value": 710602, "pid": 710600, "label": "北区", }, { "value": 710603, "pid": 710600, "label": "香山区", }] }, { "value": 710700, "pid": 710000, "label": "嘉义市", "children": [{ "value": 710701, "pid": 710700, "label": "东区", }, { "value": 710702, "pid": 710700, "label": "西区", }] }, { "value": 710800, "pid": 710000, "label": "新北市", "children": [{ "value": 710801, "pid": 710800, "label": "板桥区", }, { "value": 710802, "pid": 710800, "label": "三重区", }, { "value": 710803, "pid": 710800, "label": "中和区", }, { "value": 710804, "pid": 710800, "label": "永和区", }, { "value": 710805, "pid": 710800, "label": "新庄区", }, { "value": 710806, "pid": 710800, "label": "新店区", }, { "value": 710807, "pid": 710800, "label": "树林区", }, { "value": 710808, "pid": 710800, "label": "莺歌区", }, { "value": 710809, "pid": 710800, "label": "三峡区", }, { "value": 710810, "pid": 710800, "label": "淡水区", }, { "value": 710811, "pid": 710800, "label": "汐止区", }, { "value": 710812, "pid": 710800, "label": "瑞芳区", }, { "value": 710813, "pid": 710800, "label": "土城区", }, { "value": 710814, "pid": 710800, "label": "芦洲区", }, { "value": 710815, "pid": 710800, "label": "五股区", }, { "value": 710816, "pid": 710800, "label": "泰山区", }, { "value": 710817, "pid": 710800, "label": "林口区", }, { "value": 710818, "pid": 710800, "label": "深坑区", }, { "value": 710819, "pid": 710800, "label": "石碇区", }, { "value": 710820, "pid": 710800, "label": "坪林区", }, { "value": 710821, "pid": 710800, "label": "三芝区", }, { "value": 710822, "pid": 710800, "label": "石门区", }, { "value": 710823, "pid": 710800, "label": "八里区", }, { "value": 710824, "pid": 710800, "label": "平溪区", }, { "value": 710825, "pid": 710800, "label": "双溪区", }, { "value": 710826, "pid": 710800, "label": "贡寮区", }, { "value": 710827, "pid": 710800, "label": "金山区", }, { "value": 710828, "pid": 710800, "label": "万里区", }, { "value": 710829, "pid": 710800, "label": "乌来区", }] }, { "value": 712200, "pid": 710000, "label": "宜兰县", "children": [{ "value": 712201, "pid": 712200, "label": "宜兰市", }, { "value": 712221, "pid": 712200, "label": "罗东镇", }, { "value": 712222, "pid": 712200, "label": "苏澳镇", }, { "value": 712223, "pid": 712200, "label": "头城镇", }, { "value": 712224, "pid": 712200, "label": "礁溪乡", }, { "value": 712225, "pid": 712200, "label": "壮围乡", }, { "value": 712226, "pid": 712200, "label": "员山乡", }, { "value": 712227, "pid": 712200, "label": "冬山乡", }, { "value": 712228, "pid": 712200, "label": "五结乡", }, { "value": 712229, "pid": 712200, "label": "三星乡", }, { "value": 712230, "pid": 712200, "label": "大同乡", }, { "value": 712231, "pid": 712200, "label": "南澳乡", }] }, { "value": 712300, "pid": 710000, "label": "桃园市", "children": [{ "value": 712301, "pid": 712300, "label": "桃园市", }, { "value": 712302, "pid": 712300, "label": "中坜市", }, { "value": 712303, "pid": 712300, "label": "平镇市", }, { "value": 712304, "pid": 712300, "label": "八德市", }, { "value": 712305, "pid": 712300, "label": "杨梅市", }, { "value": 712306, "pid": 712300, "label": "芦竹市", }, { "value": 712321, "pid": 712300, "label": "大溪镇", }, { "value": 712324, "pid": 712300, "label": "大园乡", }, { "value": 712325, "pid": 712300, "label": "龟山乡", }, { "value": 712327, "pid": 712300, "label": "龙潭乡", }, { "value": 712329, "pid": 712300, "label": "新屋乡", }, { "value": 712330, "pid": 712300, "label": "观音乡", }, { "value": 712331, "pid": 712300, "label": "复兴乡", }] }, { "value": 712400, "pid": 710000, "label": "新竹县", "children": [{ "value": 712401, "pid": 712400, "label": "竹北市", }, { "value": 712421, "pid": 712400, "label": "竹东镇", }, { "value": 712422, "pid": 712400, "label": "新埔镇", }, { "value": 712423, "pid": 712400, "label": "关西镇", }, { "value": 712424, "pid": 712400, "label": "湖口乡", }, { "value": 712425, "pid": 712400, "label": "新丰乡", }, { "value": 712426, "pid": 712400, "label": "芎林乡", }, { "value": 712427, "pid": 712400, "label": "横山乡", }, { "value": 712428, "pid": 712400, "label": "北埔乡", }, { "value": 712429, "pid": 712400, "label": "宝山乡", }, { "value": 712430, "pid": 712400, "label": "峨眉乡", }, { "value": 712431, "pid": 712400, "label": "尖石乡", }, { "value": 712432, "pid": 712400, "label": "五峰乡", }] }, { "value": 712500, "pid": 710000, "label": "苗栗县", "children": [{ "value": 712501, "pid": 712500, "label": "苗栗市", }, { "value": 712521, "pid": 712500, "label": "苑里镇", }, { "value": 712522, "pid": 712500, "label": "通霄镇", }, { "value": 712523, "pid": 712500, "label": "竹南镇", }, { "value": 712524, "pid": 712500, "label": "头份市", }, { "value": 712525, "pid": 712500, "label": "后龙镇", }, { "value": 712526, "pid": 712500, "label": "卓兰镇", }, { "value": 712527, "pid": 712500, "label": "大湖乡", }, { "value": 712528, "pid": 712500, "label": "公馆乡", }, { "value": 712529, "pid": 712500, "label": "铜锣乡", }, { "value": 712530, "pid": 712500, "label": "南庄乡", }, { "value": 712531, "pid": 712500, "label": "头屋乡", }, { "value": 712532, "pid": 712500, "label": "三义乡", }, { "value": 712533, "pid": 712500, "label": "西湖乡", }, { "value": 712534, "pid": 712500, "label": "造桥乡", }, { "value": 712535, "pid": 712500, "label": "三湾乡", }, { "value": 712536, "pid": 712500, "label": "狮潭乡", }, { "value": 712537, "pid": 712500, "label": "泰安乡", }] }, { "value": 712700, "pid": 710000, "label": "彰化县", "children": [{ "value": 712701, "pid": 712700, "label": "彰化市", }, { "value": 712721, "pid": 712700, "label": "鹿港镇", }, { "value": 712722, "pid": 712700, "label": "和美镇", }, { "value": 712723, "pid": 712700, "label": "线西乡", }, { "value": 712724, "pid": 712700, "label": "伸港乡", }, { "value": 712725, "pid": 712700, "label": "福兴乡", }, { "value": 712726, "pid": 712700, "label": "秀水乡", }, { "value": 712727, "pid": 712700, "label": "花坛乡", }, { "value": 712728, "pid": 712700, "label": "芬园乡", }, { "value": 712729, "pid": 712700, "label": "员林市", }, { "value": 712730, "pid": 712700, "label": "溪湖镇", }, { "value": 712731, "pid": 712700, "label": "田中镇", }, { "value": 712732, "pid": 712700, "label": "大村乡", }, { "value": 712733, "pid": 712700, "label": "埔盐乡", }, { "value": 712734, "pid": 712700, "label": "埔心乡", }, { "value": 712735, "pid": 712700, "label": "永靖乡", }, { "value": 712736, "pid": 712700, "label": "社头乡", }, { "value": 712737, "pid": 712700, "label": "二水乡", }, { "value": 712738, "pid": 712700, "label": "北斗镇", }, { "value": 712739, "pid": 712700, "label": "二林镇", }, { "value": 712740, "pid": 712700, "label": "田尾乡", }, { "value": 712741, "pid": 712700, "label": "埤头乡", }, { "value": 712742, "pid": 712700, "label": "芳苑乡", }, { "value": 712743, "pid": 712700, "label": "大城乡", }, { "value": 712744, "pid": 712700, "label": "竹塘乡", }, { "value": 712745, "pid": 712700, "label": "溪州乡", }] }, { "value": 712800, "pid": 710000, "label": "南投县", "children": [{ "value": 712801, "pid": 712800, "label": "南投市", }, { "value": 712821, "pid": 712800, "label": "埔里镇", }, { "value": 712822, "pid": 712800, "label": "草屯镇", }, { "value": 712823, "pid": 712800, "label": "竹山镇", }, { "value": 712824, "pid": 712800, "label": "集集镇", }, { "value": 712825, "pid": 712800, "label": "名间乡", }, { "value": 712826, "pid": 712800, "label": "鹿谷乡", }, { "value": 712827, "pid": 712800, "label": "中寮乡", }, { "value": 712828, "pid": 712800, "label": "鱼池乡", }, { "value": 712829, "pid": 712800, "label": "国姓乡", }, { "value": 712830, "pid": 712800, "label": "水里乡", }, { "value": 712831, "pid": 712800, "label": "信义乡", }, { "value": 712832, "pid": 712800, "label": "仁爱乡", }] }, { "value": 712900, "pid": 710000, "label": "云林县", "children": [{ "value": 712901, "pid": 712900, "label": "斗六市", }, { "value": 712921, "pid": 712900, "label": "斗南镇", }, { "value": 712922, "pid": 712900, "label": "虎尾镇", }, { "value": 712923, "pid": 712900, "label": "西螺镇", }, { "value": 712924, "pid": 712900, "label": "土库镇", }, { "value": 712925, "pid": 712900, "label": "北港镇", }, { "value": 712926, "pid": 712900, "label": "古坑乡", }, { "value": 712927, "pid": 712900, "label": "大埤乡", }, { "value": 712928, "pid": 712900, "label": "莿桐乡", }, { "value": 712929, "pid": 712900, "label": "林内乡", }, { "value": 712930, "pid": 712900, "label": "二仑乡", }, { "value": 712931, "pid": 712900, "label": "仑背乡", }, { "value": 712932, "pid": 712900, "label": "麦寮乡", }, { "value": 712933, "pid": 712900, "label": "东势乡", }, { "value": 712934, "pid": 712900, "label": "褒忠乡", }, { "value": 712935, "pid": 712900, "label": "台西乡", }, { "value": 712936, "pid": 712900, "label": "元长乡", }, { "value": 712937, "pid": 712900, "label": "四湖乡", }, { "value": 712938, "pid": 712900, "label": "口湖乡", }, { "value": 712939, "pid": 712900, "label": "水林乡", }] }, { "value": 713000, "pid": 710000, "label": "嘉义县", "children": [{ "value": 713001, "pid": 713000, "label": "太保市", }, { "value": 713002, "pid": 713000, "label": "朴子市", }, { "value": 713023, "pid": 713000, "label": "布袋镇", }, { "value": 713024, "pid": 713000, "label": "大林镇", }, { "value": 713025, "pid": 713000, "label": "民雄乡", }, { "value": 713026, "pid": 713000, "label": "溪口乡", }, { "value": 713027, "pid": 713000, "label": "新港乡", }, { "value": 713028, "pid": 713000, "label": "六脚乡", }, { "value": 713029, "pid": 713000, "label": "东石乡", }, { "value": 713030, "pid": 713000, "label": "义竹乡", }, { "value": 713031, "pid": 713000, "label": "鹿草乡", }, { "value": 713032, "pid": 713000, "label": "水上乡", }, { "value": 713033, "pid": 713000, "label": "中埔乡", }, { "value": 713034, "pid": 713000, "label": "竹崎乡", }, { "value": 713035, "pid": 713000, "label": "梅山乡", }, { "value": 713036, "pid": 713000, "label": "番路乡", }, { "value": 713037, "pid": 713000, "label": "大埔乡", }, { "value": 713038, "pid": 713000, "label": "阿里山乡", }] }, { "value": 713300, "pid": 710000, "label": "屏东县", "children": [{ "value": 713301, "pid": 713300, "label": "屏东市", }, { "value": 713321, "pid": 713300, "label": "潮州镇", }, { "value": 713322, "pid": 713300, "label": "东港镇", }, { "value": 713323, "pid": 713300, "label": "恒春镇", }, { "value": 713324, "pid": 713300, "label": "万丹乡", }, { "value": 713325, "pid": 713300, "label": "长治乡", }, { "value": 713326, "pid": 713300, "label": "麟洛乡", }, { "value": 713327, "pid": 713300, "label": "九如乡", }, { "value": 713328, "pid": 713300, "label": "里港乡", }, { "value": 713329, "pid": 713300, "label": "盐埔乡", }, { "value": 713330, "pid": 713300, "label": "高树乡", }, { "value": 713331, "pid": 713300, "label": "万峦乡", }, { "value": 713332, "pid": 713300, "label": "内埔乡", }, { "value": 713333, "pid": 713300, "label": "竹田乡", }, { "value": 713334, "pid": 713300, "label": "新埤乡", }, { "value": 713335, "pid": 713300, "label": "枋寮乡", }, { "value": 713336, "pid": 713300, "label": "新园乡", }, { "value": 713337, "pid": 713300, "label": "崁顶乡", }, { "value": 713338, "pid": 713300, "label": "林边乡", }, { "value": 713339, "pid": 713300, "label": "南州乡", }, { "value": 713340, "pid": 713300, "label": "佳冬乡", }, { "value": 713341, "pid": 713300, "label": "琉球乡", }, { "value": 713342, "pid": 713300, "label": "车城乡", }, { "value": 713343, "pid": 713300, "label": "满州乡", }, { "value": 713344, "pid": 713300, "label": "枋山乡", }, { "value": 713345, "pid": 713300, "label": "三地门乡", }, { "value": 713346, "pid": 713300, "label": "雾台乡", }, { "value": 713347, "pid": 713300, "label": "玛家乡", }, { "value": 713348, "pid": 713300, "label": "泰武乡", }, { "value": 713349, "pid": 713300, "label": "来义乡", }, { "value": 713350, "pid": 713300, "label": "春日乡", }, { "value": 713351, "pid": 713300, "label": "狮子乡", }, { "value": 713352, "pid": 713300, "label": "牡丹乡", }] }, { "value": 713400, "pid": 710000, "label": "台东县", "children": [{ "value": 713401, "pid": 713400, "label": "台东市", }, { "value": 713421, "pid": 713400, "label": "成功镇", }, { "value": 713422, "pid": 713400, "label": "关山镇", }, { "value": 713423, "pid": 713400, "label": "卑南乡", }, { "value": 713424, "pid": 713400, "label": "鹿野乡", }, { "value": 713425, "pid": 713400, "label": "池上乡", }, { "value": 713426, "pid": 713400, "label": "东河乡", }, { "value": 713427, "pid": 713400, "label": "长滨乡", }, { "value": 713428, "pid": 713400, "label": "太麻里乡", }, { "value": 713429, "pid": 713400, "label": "大武乡", }, { "value": 713430, "pid": 713400, "label": "绿岛乡", }, { "value": 713431, "pid": 713400, "label": "海端乡", }, { "value": 713432, "pid": 713400, "label": "延平乡", }, { "value": 713433, "pid": 713400, "label": "金峰乡", }, { "value": 713434, "pid": 713400, "label": "达仁乡", }, { "value": 713435, "pid": 713400, "label": "兰屿乡", }] }, { "value": 713500, "pid": 710000, "label": "花莲县", "children": [{ "value": 713501, "pid": 713500, "label": "花莲市", }, { "value": 713521, "pid": 713500, "label": "凤林镇", }, { "value": 713522, "pid": 713500, "label": "玉里镇", }, { "value": 713523, "pid": 713500, "label": "新城乡", }, { "value": 713524, "pid": 713500, "label": "吉安乡", }, { "value": 713525, "pid": 713500, "label": "寿丰乡", }, { "value": 713526, "pid": 713500, "label": "光复乡", }, { "value": 713527, "pid": 713500, "label": "丰滨乡", }, { "value": 713528, "pid": 713500, "label": "瑞穗乡", }, { "value": 713529, "pid": 713500, "label": "富里乡", }, { "value": 713530, "pid": 713500, "label": "秀林乡", }, { "value": 713531, "pid": 713500, "label": "万荣乡", }, { "value": 713532, "pid": 713500, "label": "卓溪乡", }] }, { "value": 713600, "pid": 710000, "label": "澎湖县", "children": [{ "value": 713601, "pid": 713600, "label": "马公市", }, { "value": 713621, "pid": 713600, "label": "湖西乡", }, { "value": 713622, "pid": 713600, "label": "白沙乡", }, { "value": 713623, "pid": 713600, "label": "西屿乡", }, { "value": 713624, "pid": 713600, "label": "望安乡", }, { "value": 713625, "pid": 713600, "label": "七美乡", }] }, { "value": 713700, "pid": 710000, "label": "金门县", "children": [{ "value": 713701, "pid": 713700, "label": "金城镇", }, { "value": 713702, "pid": 713700, "label": "金湖镇", }, { "value": 713703, "pid": 713700, "label": "金沙镇", }, { "value": 713704, "pid": 713700, "label": "金宁乡", }, { "value": 713705, "pid": 713700, "label": "烈屿乡", }, { "value": 713706, "pid": 713700, "label": "乌丘乡", }] }, { "value": 713800, "pid": 710000, "label": "连江县", "children": [{ "value": 713801, "pid": 713800, "label": "南竿乡", }, { "value": 713802, "pid": 713800, "label": "北竿乡", }, { "value": 713803, "pid": 713800, "label": "莒光乡", }, { "value": 713804, "pid": 713800, "label": "东引乡", }] }] },] \ No newline at end of file diff --git a/src/utils/auth.ts b/src/utils/auth.ts new file mode 100644 index 0000000..e7a6877 --- /dev/null +++ b/src/utils/auth.ts @@ -0,0 +1,18 @@ +import { TOKEN_KEY } from '@/enums/cacheEnums' +import { resetRouter } from '@/router' +import useTabsStore from '@/stores/modules/multipleTabs' +import useUserStore from '@/stores/modules/user' +import cache from './cache' + +export function getToken() { + return cache.get(TOKEN_KEY) +} + +export function clearAuthInfo() { + const userStore = useUserStore() + const tabsStore = useTabsStore() + userStore.resetState() + tabsStore.$reset() + cache.remove(TOKEN_KEY) + resetRouter() +} diff --git a/src/utils/cache.ts b/src/utils/cache.ts new file mode 100644 index 0000000..e655ff5 --- /dev/null +++ b/src/utils/cache.ts @@ -0,0 +1,57 @@ +/* + * @Author: micky + * @Date: 2024-07-17 17:01:15 + * @LastEditors: micky + * @LastEditTime: 2024-07-18 19:54:20 + * @FilePath: \maintenance-admin\src\utils\cache.ts + */ +const cache = { + key: 'cdz_admin_', + //设置缓存(expire为缓存时效) + set(key: string, value: any, expire?: string) { + key = this.getKey(key) + let data: any = { + expire: expire ? this.time() + expire : '', + value + } + + if (typeof data === 'object') { + data = JSON.stringify(data) + } + try { + window.localStorage.setItem(key, data) + } catch (e) { + return null + } + }, + get(key: string) { + key = this.getKey(key) + try { + const data = window.localStorage.getItem(key) + if (!data) { + return null + } + const { value, expire } = JSON.parse(data) + if (expire && expire < this.time()) { + window.localStorage.removeItem(key) + return null + } + return value + } catch (e) { + return null + } + }, + //获取当前时间 + time() { + return Math.round(new Date().getTime() / 1000) + }, + remove(key: string) { + key = this.getKey(key) + window.localStorage.removeItem(key) + }, + getKey(key: string) { + return this.key + key + } +} + +export default cache diff --git a/src/utils/enum.ts b/src/utils/enum.ts new file mode 100644 index 0000000..a85db7c --- /dev/null +++ b/src/utils/enum.ts @@ -0,0 +1,4 @@ +export enum PageMode { + 'ADD' = 'add', // 添加 + 'EDIT' = 'edit' // 编辑 +} diff --git a/src/utils/env.ts b/src/utils/env.ts new file mode 100644 index 0000000..d8951e9 --- /dev/null +++ b/src/utils/env.ts @@ -0,0 +1,13 @@ +/** + * @description: 开发模式 + */ +export function isDevMode(): boolean { + return import.meta.env.DEV +} + +/** + * @description: 生成模式 + */ +export function isProdMode(): boolean { + return import.meta.env.PROD +} diff --git a/src/utils/feedback.ts b/src/utils/feedback.ts new file mode 100644 index 0000000..94f7d80 --- /dev/null +++ b/src/utils/feedback.ts @@ -0,0 +1,107 @@ +/* + * @Author: micky 1254597151@qq.com + * @Date: 2023-08-14 15:56:31 + * @LastEditors: micky 1254597151@qq.com + * @LastEditTime: 2023-10-18 16:31:56 + * @FilePath: \housekeeping-admin\src\utils\feedback.ts + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +import { + ElMessage, + ElMessageBox, + ElNotification, + ElLoading, + type ElMessageBoxOptions +} from 'element-plus' +import type { LoadingInstance } from 'element-plus/es/components/loading/src/loading' + +export class Feedback { + private loadingInstance: LoadingInstance | null = null + static instance: Feedback | null = null + static getInstance() { + return this.instance ?? (this.instance = new Feedback()) + } + // 消息提示 + msg(msg: string) { + ElMessage.info(msg) + } + // 错误消息 + msgError(msg: string) { + ElMessage({ + dangerouslyUseHTMLString: true, + message: msg, + type: 'error' + }) + } + // 成功消息 + msgSuccess(msg: string) { + ElMessage.success(msg) + } + // 警告消息 + msgWarning(msg: string) { + ElMessage.warning(msg) + } + // 弹出提示 + alert(msg: string) { + ElMessageBox.alert(msg, '系统提示') + } + // 错误提示 + alertError(msg: string) { + ElMessageBox.alert(msg, '系统提示', { type: 'error' }) + } + // 成功提示 + alertSuccess(msg: string) { + ElMessageBox.alert(msg, '系统提示', { type: 'success' }) + } + // 警告提示 + alertWarning(msg: string) { + ElMessageBox.alert(msg, '系统提示', { type: 'warning' }) + } + // 通知提示 + notify(msg: string) { + ElNotification.info(msg) + } + // 错误通知 + notifyError(msg: string) { + ElNotification.error(msg) + } + // 成功通知 + notifySuccess(msg: string) { + ElNotification.success(msg) + } + // 警告通知 + notifyWarning(msg: string) { + ElNotification.warning(msg) + } + // 确认窗体 + confirm(msg: string) { + return ElMessageBox.confirm(msg, '温馨提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }) + } + // 提交内容 + prompt(content: string, title: string, options?: ElMessageBoxOptions) { + return ElMessageBox.prompt(content, title, { + confirmButtonText: '确定', + cancelButtonText: '取消', + ...options + }) + } + // 打开全局loading + loading(msg: string) { + this.loadingInstance = ElLoading.service({ + lock: true, + text: msg + }) + } + // 关闭全局loading + closeLoading() { + this.loadingInstance?.close() + } +} + +const feedback = Feedback.getInstance() + +export default feedback diff --git a/src/utils/file.ts b/src/utils/file.ts new file mode 100644 index 0000000..e8704c9 --- /dev/null +++ b/src/utils/file.ts @@ -0,0 +1,16 @@ +/** + * @description + * @param file + */ +export function streamFileDownload(file: any, fileName = '文件名称.zip', type = 'application/octet-stream;charset=UTF-8') { + const blob = new Blob([file], { type }) + const url = window.URL.createObjectURL(blob) + const link = document.createElement('a') + link.style.display = 'none' + link.href = url + link.setAttribute('download', fileName) + document.body.appendChild(link) + link.click() + document.body.removeChild(link) // 下载完成移除元素 + window.URL.revokeObjectURL(url) +} diff --git a/src/utils/request/axios.ts b/src/utils/request/axios.ts new file mode 100644 index 0000000..0adebff --- /dev/null +++ b/src/utils/request/axios.ts @@ -0,0 +1,167 @@ +import { RequestMethodsEnum } from '@/enums/requestEnums' +import axios, { + AxiosError, + type AxiosInstance, + type AxiosRequestConfig, + type AxiosResponse +} from 'axios' +import { isFunction, merge, cloneDeep } from 'lodash' +import axiosCancel from './cancel' +import type { RequestData, RequestOptions } from './type' + +export class Axios { + private axiosInstance: AxiosInstance + private readonly config: AxiosRequestConfig + private readonly options: RequestOptions + constructor(config: AxiosRequestConfig) { + this.config = config + this.options = config.requestOptions + this.axiosInstance = axios.create(config) + this.setupInterceptors() + } + + /** + * @description 获取axios实例 + */ + getAxiosInstance() { + return this.axiosInstance + } + + /** + * @description 设置拦截器 + */ + setupInterceptors() { + if (!this.config.axiosHooks) { + return + } + const { + requestInterceptorsHook, + requestInterceptorsCatchHook, + responseInterceptorsHook, + responseInterceptorsCatchHook + } = this.config.axiosHooks + this.axiosInstance.interceptors.request.use( + (config) => { + this.addCancelToken(config) + if (isFunction(requestInterceptorsHook)) { + config = requestInterceptorsHook(config) + } + return config + }, + (err: Error) => { + if (isFunction(requestInterceptorsCatchHook)) { + requestInterceptorsCatchHook(err) + } + return err + } + ) + this.axiosInstance.interceptors.response.use( + (response: AxiosResponse) => { + this.removeCancelToken(response.config.url!) + if (isFunction(responseInterceptorsHook)) { + response = responseInterceptorsHook(response) + } + return response + }, + (err: AxiosError) => { + if (isFunction(responseInterceptorsCatchHook)) { + responseInterceptorsCatchHook(err) + } + if (err.code != AxiosError.ERR_CANCELED) { + this.removeCancelToken(err.config?.url!) + } + + if (err.code == AxiosError.ECONNABORTED || err.code == AxiosError.ERR_NETWORK) { + return new Promise((resolve) => setTimeout(resolve, 500)).then(() => + this.retryRequest(err) + ) + } + return Promise.reject(err) + } + ) + } + + /** + * @description 添加CancelToken + */ + addCancelToken(config: AxiosRequestConfig) { + const { ignoreCancelToken } = config.requestOptions + !ignoreCancelToken && axiosCancel.add(config) + } + + /** + * @description 移除CancelToken + */ + removeCancelToken(url: string) { + axiosCancel.remove(url) + } + + /** + * @description 重新请求 + */ + retryRequest(error: AxiosError) { + const config = error.config + const { retryCount, isOpenRetry } = config.requestOptions + if (!isOpenRetry || config.method?.toUpperCase() == RequestMethodsEnum.POST) { + return Promise.reject(error) + } + config.retryCount = config.retryCount ?? 0 + + if (config.retryCount >= retryCount) { + return Promise.reject(error) + } + config.retryCount++ + + return this.axiosInstance.request(config) + } + /** + * @description get请求 + */ + get( + config: Partial, + options?: Partial + ): Promise { + return this.request({ ...config, method: RequestMethodsEnum.GET }, options) + } + + /** + * @description post请求 + */ + post( + config: Partial, + options?: Partial + ): Promise { + return this.request({ ...config, method: RequestMethodsEnum.POST }, options) + } + + /** + * @description 请求函数 + */ + request( + config: Partial, + options?: Partial + ): Promise { + const opt: RequestOptions = merge({}, this.options, options) + const axioxConfig: AxiosRequestConfig = { + ...cloneDeep(config), + requestOptions: opt + } + + + const { urlPrefix } = opt + // 拼接请求前缀如api + if (urlPrefix) { + axioxConfig.url = `${urlPrefix}${config.url}` + } + return new Promise((resolve, reject) => { + this.axiosInstance + .request>>(axioxConfig) + .then((res) => { + resolve(res) + }) + .catch((err) => { + reject(err) + }) + }) + } +} diff --git a/src/utils/request/cancel.ts b/src/utils/request/cancel.ts new file mode 100644 index 0000000..b092e1d --- /dev/null +++ b/src/utils/request/cancel.ts @@ -0,0 +1,31 @@ +import axios, { type AxiosRequestConfig, type Canceler } from 'axios' + +const cancelerMap = new Map() + +export class AxiosCancel { + private static instance?: AxiosCancel + + static createInstance() { + return this.instance ?? (this.instance = new AxiosCancel()) + } + add(config: AxiosRequestConfig) { + const url = config.url! + this.remove(url) + config.cancelToken = new axios.CancelToken((cancel) => { + if (!cancelerMap.has(url)) { + cancelerMap.set(url, cancel) + } + }) + } + remove(url: string) { + if (cancelerMap.has(url)) { + const cancel = cancelerMap.get(url) + cancel && cancel(url) + cancelerMap.delete(url) + } + } +} + +const axiosCancel = AxiosCancel.createInstance() + +export default axiosCancel diff --git a/src/utils/request/index.ts b/src/utils/request/index.ts new file mode 100644 index 0000000..abd68cd --- /dev/null +++ b/src/utils/request/index.ts @@ -0,0 +1,126 @@ +import { merge } from 'lodash' +import configs from '@/config' +import { Axios } from './axios' +import { ContentTypeEnum, RequestCodeEnum, RequestMethodsEnum } from '@/enums/requestEnums' +import type { AxiosHooks } from './type' +import { clearAuthInfo, getToken } from '../auth' +import feedback from '../feedback' +import NProgress from 'nprogress' +import { AxiosError, type AxiosRequestConfig } from 'axios' +import router from '@/router' +import { PageEnum } from '@/enums/pageEnum' + +// 处理axios的钩子函数 +const axiosHooks: AxiosHooks = { + requestInterceptorsHook(config) { + NProgress.start() + const { withToken, isParamsToData } = config.requestOptions + const params = config.params || {} + const headers = config.headers || {} + + // 添加token + if (withToken) { + const token = getToken() + headers.token = token + } + // POST请求下如果无data,则将params视为data + if (isParamsToData && !Reflect.has(config, 'data') && config.method?.toUpperCase() === RequestMethodsEnum.POST) { + config.data = params + config.params = {} + } + config.headers = headers + return config + }, + requestInterceptorsCatchHook(err) { + NProgress.done() + return err + }, + async responseInterceptorsHook(response) { + NProgress.done() + const { isTransformResponse, isReturnDefaultResponse } = response.config.requestOptions + + //返回默认响应,当需要获取响应头及其他数据时可使用 + if (isReturnDefaultResponse) { + return response + } + // 是否需要对数据进行处理 + if (!isTransformResponse) { + return response.data + } + const { code, data, show, msg } = response.data + switch (code) { + case RequestCodeEnum.SUCCESS: + if (show) { + msg && feedback.msgSuccess(msg) + } + return data + + case RequestCodeEnum.PARAMS_TYPE_ERROR: + case RequestCodeEnum.PARAMS_VALID_ERROR: + case RequestCodeEnum.REQUEST_METHOD_ERROR: + case RequestCodeEnum.ASSERT_ARGUMENT_ERROR: + case RequestCodeEnum.ASSERT_MYBATIS_ERROR: + case RequestCodeEnum.LOGIN_ACCOUNT_ERROR: + case RequestCodeEnum.LOGIN_DISABLE_ERROR: + case RequestCodeEnum.NO_PERMISSTION: + case RequestCodeEnum.FAILED: + case RequestCodeEnum.SYSTEM_ERROR: + msg && feedback.msgError(msg) + return Promise.reject(data) + + case RequestCodeEnum.TOKEN_INVALID: + case RequestCodeEnum.TOKEN_EMPTY: + clearAuthInfo() + router.push(PageEnum.LOGIN) + return Promise.reject() + + default: + return data + } + }, + responseInterceptorsCatchHook(error) { + NProgress.done() + if (error.code !== AxiosError.ERR_CANCELED) { + error.message && feedback.msgError(error.message) + } + return Promise.reject(error) + } +} + +const defaultOptions: AxiosRequestConfig = { + timeout: configs.timeout, + // 基础接口地址 + baseURL: configs.baseUrl, + headers: { 'Content-Type': ContentTypeEnum.JSON, version: configs.version }, + + // 处理 axios的钩子函数 + axiosHooks: axiosHooks, + // 每个接口可以单独配置 + requestOptions: { + // 是否将params视为data参数,仅限post请求 + isParamsToData: true, + //是否返回默认的响应 + isReturnDefaultResponse: false, + // 需要对返回数据进行处理 + isTransformResponse: true, + // 接口拼接地址 + urlPrefix: configs.urlPrefix, + // 忽略重复请求 + ignoreCancelToken: false, + // 是否携带token + withToken: true, + // 开启请求超时重新发起请求请求机制 + isOpenRetry: true, + // 重新请求次数 + retryCount: 2 + } +} + +function createAxios(opt?: Partial) { + return new Axios( + // 深度合并 + merge(defaultOptions, opt || {}) + ) +} +const request = createAxios() +export default request diff --git a/src/utils/request/type.d.ts b/src/utils/request/type.d.ts new file mode 100644 index 0000000..a7f364d --- /dev/null +++ b/src/utils/request/type.d.ts @@ -0,0 +1,38 @@ +import type { AxiosRequestConfig, AxiosResponse } from 'axios' + +import 'axios' +declare module 'axios' { + // 扩展 RouteMeta + interface AxiosRequestConfig { + retryCount?: number + axiosHooks?: AxiosHooks + requestOptions: RequestOptions + } +} + +export interface RequestOptions { + isParamsToData: boolean + isReturnDefaultResponse: boolean + isTransformResponse: boolean + urlPrefix: string + ignoreCancelToken: boolean + withToken: boolean + isOpenRetry: boolean + retryCount: number +} + +export interface AxiosHooks { + requestInterceptorsHook?: (config: AxiosRequestConfig) => AxiosRequestConfig + requestInterceptorsCatchHook?: (error: Error) => void + responseInterceptorsHook?: ( + response: AxiosResponse> + ) => AxiosResponse | RequestData | T + responseInterceptorsCatchHook?: (error: AxiosError) => void +} + +export interface RequestData { + code: number + data: T + msg: string + show: boolean +} diff --git a/src/utils/table2excel.ts b/src/utils/table2excel.ts new file mode 100644 index 0000000..17fdb1e --- /dev/null +++ b/src/utils/table2excel.ts @@ -0,0 +1,10 @@ +import table2excel from 'js-table2excel' +export interface Column { + title: string + key: string + width?: number +} + +export const batchExport = (column: Column[], datas: any, excelName: string) => { + table2excel(column, datas, excelName) +} diff --git a/src/utils/theme.ts b/src/utils/theme.ts new file mode 100644 index 0000000..d11fe18 --- /dev/null +++ b/src/utils/theme.ts @@ -0,0 +1,74 @@ +import colors from 'css-color-function' +const lightConfig = { + 'dark-2': 'shade(20%)', + 'light-3': 'tint(30%)', + 'light-5': 'tint(50%)', + 'light-7': 'tint(70%)', + 'light-8': 'tint(80%)', + 'light-9': 'tint(90%)' +} + +const darkConfig = { + 'light-3': 'shade(20%)', + 'light-5': 'shade(30%)', + 'light-7': 'shade(50%)', + 'light-8': 'shade(60%)', + 'light-9': 'shade(70%)', + 'dark-2': 'tint(20%)' +} + +const themeId = 'theme-vars' + +/** + * @author Jason + * @description 用于生成elementui主题的行为变量 + * 可选值有primary、success、warning、danger、error、info + */ + +export const generateVars = (color: string, type = 'primary', isDark = false) => { + const colos = { + [`--el-color-${type}`]: color + } + const config: Record = isDark ? darkConfig : lightConfig + for (const key in config) { + colos[`--el-color-${type}-${key}`] = `color(${color} ${config[key]})` + } + return colos +} + +/** + * @author Jason + * @description 用于设置css变量 + * @param key css变量key 如 --color-primary + * @param value css变量值 如 #f40 + * @param dom dom元素 + */ +export const setCssVar = (key: string, value: string, dom = document.documentElement) => { + dom.style.setProperty(key, value) +} + +/** + * @author Jason + * @description 设置主题 + */ +export const setTheme = (options: Record, isDark = false) => { + const varsMap: Record = Object.keys(options).reduce((prev, key) => { + return Object.assign(prev, generateVars(options[key], key, isDark)) + }, {}) + + let theme = Object.keys(varsMap).reduce((prev, key) => { + const color = colors.convert(varsMap[key]) + return `${prev}${key}:${color};` + }, '') + theme = `:root{${theme}}` + let style = document.getElementById(themeId) + if (style) { + style.innerHTML = theme + return + } + style = document.createElement('style') + style.setAttribute('type', 'text/css') + style.setAttribute('id', themeId) + style.innerHTML = theme + document.head.append(style) +} diff --git a/src/utils/util.ts b/src/utils/util.ts new file mode 100644 index 0000000..430d6ba --- /dev/null +++ b/src/utils/util.ts @@ -0,0 +1,271 @@ +import { isObject } from '@vue/shared' +import { ElMessage, type messageType } from 'element-plus' +import { cloneDeep } from 'lodash' + +/** + * @description 添加单位 + * @param {String | Number} value 值 100 + * @param {String} unit 单位 px em rem + */ +export const addUnit = (value: string | number, unit = 'px') => { + return !Object.is(Number(value), NaN) ? `${value}${unit}` : value +} + +/** + * @description 添加单位 + * @param {unknown} value + * @return {Boolean} + */ +export const isEmpty = (value: unknown) => { + return value == null && typeof value == 'undefined' +} + +/** + * @description 树转数组,队列实现广度优先遍历 + * @param {Array} data 数据 + * @param {Object} props `{ children: 'children' }` + */ + +export const treeToArray = (data: any[], props = { children: 'children' }) => { + data = cloneDeep(data) + const { children } = props + const newData = [] + const queue: any[] = [] + data.forEach((child: any) => queue.push(child)) + while (queue.length) { + const item: any = queue.shift() + if (item[children]) { + item[children].forEach((child: any) => queue.push(child)) + delete item[children] + } + newData.push(item) + } + return newData +} + +/** + * @description 数组转 + * @param {Array} data 数据 + * @param {Object} props `{ parent: 'pid', children: 'children' }` + */ + +export const arrayToTree = (data: any[], props = { id: 'id', parentId: 'pid', children: 'children' }) => { + data = cloneDeep(data) + const { id, parentId, children } = props + const result: any[] = [] + const map = new Map() + data.forEach(item => { + map.set(item[id], item) + const parent = map.get(item[parentId]) + if (parent) { + parent[children] = parent[children] ?? [] + parent[children].push(item) + } else { + result.push(item) + } + }) + return result +} + +/** + * 深拷贝 + * @param {any} target 需要深拷贝的对象 + * @returns {Object} + */ +export function deepClone(target: any) { + if (typeof target !== 'object' || target === null) { + return target + } + + const cloneResult: any = Array.isArray(target) ? [] : {} + + for (const key in target) { + if (Object.prototype.hasOwnProperty.call(target, key)) { + const value = target[key] + + if (typeof value === 'object' && value !== null) { + cloneResult[key] = deepClone(value) + } else { + cloneResult[key] = value + } + } + } + + return cloneResult +} + +/** + * @description 获取正确的路经 + * @param {String} path 数据 + */ +export function getNormalPath(path: string) { + if (path.length === 0 || !path || path == 'undefined') { + return path + } + const newPath = path.replace('//', '/') + const length = newPath.length + if (newPath[length - 1] === '/') { + return newPath.slice(0, length - 1) + } + return newPath +} + +/** + * @description对象格式化为Query语法 + * @param { Object } params + * @return {string} Query语法 + */ +export function objectToQuery(params: Record): string { + let query = '' + for (const props of Object.keys(params)) { + const value = params[props] + const part = encodeURIComponent(props) + '=' + if (!isEmpty(value)) { + if (isObject(value)) { + for (const key of Object.keys(value)) { + if (!isEmpty(value[key])) { + const params = props + '[' + key + ']' + const subPart = encodeURIComponent(params) + '=' + query += subPart + encodeURIComponent(value[key]) + '&' + } + } + } else { + query += part + encodeURIComponent(value) + '&' + } + } + } + return query.slice(0, -1) +} + +/** + * @description 时间格式化 + * @param dateTime { number } 时间戳 + * @param fmt { string } 时间格式 + * @return { string } + */ +// yyyy:mm:dd|yyyy:mm|yyyy年mm月dd日|yyyy年mm月dd日 hh时MM分等,可自定义组合 +export const timeFormat = (dateTime: number, fmt = 'yyyy-mm-dd') => { + // 如果为null,则格式化当前时间 + if (!dateTime) { + dateTime = Number(new Date()) + } + // 如果dateTime长度为10或者13,则为秒和毫秒的时间戳,如果超过13位,则为其他的时间格式 + if (dateTime.toString().length == 10) { + dateTime *= 1000 + } + const date = new Date(dateTime) + let ret + const opt: any = { + 'y+': date.getFullYear().toString(), // 年 + 'm+': (date.getMonth() + 1).toString(), // 月 + 'd+': date.getDate().toString(), // 日 + 'h+': date.getHours().toString(), // 时 + 'M+': date.getMinutes().toString(), // 分 + 's+': date.getSeconds().toString() // 秒 + } + for (const k in opt) { + ret = new RegExp('(' + k + ')').exec(fmt) + if (ret) { + fmt = fmt.replace(ret[1], ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')) + } + } + return fmt +} + +/** + * @description 获取不重复的id + * @param length { Number } id的长度 + * @return { String } id + */ +export const getNonDuplicateID = (length = 8) => { + let idStr = Date.now().toString(36) + idStr += Math.random().toString(36).substring(3, length) + return idStr +} + +/** + * @description 单词首字母大写 + * @param { String } str + * @return { String } id + */ +export const firstToUpperCase = (str = '') => { + return str.toLowerCase().replace(/( |^)[a-z]/g, $1 => $1.toUpperCase()) +} + +/** + * @description ElMessage提示 + * @param { String } message + * @param { String } type + * @param { Number } duration + * @return { String } ElMessage + */ +export const toast = (message = '', type: messageType = 'error', duration = 1500) => { + return ElMessage({ + message, + type, + duration + }) +} +interface Row { + [key: string]: any +} +/**空判断 */ +export function parseEmpty(row: Row, key: string, unit?: string) { + if (!row) return '--' + return unit ? (row[key] != null ? `${row[key]}${unit}` : '--') : row[key] ?? '--' +} + +/**循环截取文本 */ +export function interceptText(text: string, interceptThreshold = 20, wrap = '\n') { + let str = '' + for (let i = 0; i < text.length; i += interceptThreshold) { + str = str + text.slice(i, i + interceptThreshold) + wrap + } + return str +} + +/** + * 根据字节数获取文件大小,并转换成 KB、MB、GB、TB 等形式 + * @param {number} bytes - 文件的字节数 + * @returns {string} - 文件大小的字符串表示形式 + */ +export function formatFileSize(bytes: number) { + const units = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] + let size = bytes + let unitIndex = 0 + + while (size >= 1024 && unitIndex < units.length - 1) { + size /= 1024 + unitIndex++ + } + + // 保留两位小数,四舍五入 + size = Math.round(size * 100) / 100 + + return `${size} ${units[unitIndex]}` +} + +/** + * value: 数据源 + * n: 保留几位小数 + */ +export function retain(value: any, n: any): string { + if (n === 'null' || n === 'undefined' || n === 0) return value + let tran = Math.round(value * Math.pow(10, n)) / Math.pow(10, n) + let tranV = tran.toString() + let newVal = tranV.indexOf('.') + if (newVal < 0) { + tranV += '.' + } + for (let i = tranV.length - tranV.indexOf('.'); i <= n; i++) { + tranV += '0' + } + return tranV +} +// 根据字典值获取字典名称 +export function getDictName(arr: any[], key: string) { + if (!arr) return + const obj = arr.find(i => i.value == key) + if (obj) return obj.name + else return '' +} diff --git a/src/utils/validate.ts b/src/utils/validate.ts new file mode 100644 index 0000000..fdbf4a0 --- /dev/null +++ b/src/utils/validate.ts @@ -0,0 +1,359 @@ +import { DispatchCountEnum, DispatchEnum, UseConditionEnum, UseGoodsEnum } from '@/enums/modeEnum' +import type { UploadFile } from 'element-plus' + +/* + * @Author: micky 1254597151@qq.com + * @Date: 2023-08-14 15:56:31 + * @LastEditors: micky 1254597151@qq.com + * @LastEditTime: 2024-01-09 16:32:58 + * @FilePath: \housekeeping-admin\src\utils\validate.ts + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +const mobileReg = /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/ + +const integerReg = /^\+?[1-9]\d*$/ +const positiveNumberReg = /^(?!0+(?:\.0+)?$)(?:[1-9]\d*|0)(?:\.\d{1,2})?$/ + +const positiveNumberAndZeroReg = /^(0|[1-9]\d*)(\.\d{1,2})?$/ +const idCardReg = /^[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]$/ +const ageReg = /^(?:1[0-5][0-9]|[1-9][0-9]|[1-9])$/ + +/** + * @param {string} path + * @returns {Boolean} + */ +export function isExternal(path: string) { + return /^(https?:|mailto:|tel:)/.test(path) +} + +/**手机号码 */ +export function validateContact(rule: any, value: any, callback: any) { + if (value) { + if (!mobileReg.test(value)) { + callback(new Error('请输入正确的手机号')) + } else { + callback() + } + } else { + callback() + } +} +/**分销抽佣比 */ +export function validateCommissionRate(args, payload: string) { + const [, value, callback] = args + if (value && positiveNumberAndZeroReg.test(value)) { + if (parseFloat(value) <= 20) { + callback() + } else { + callback(new Error(`${payload}抽佣比范围在0-20%`)) + } + } else { + callback(new Error(`${payload}抽佣比请输入正数,且最多保留两位小数`)) + } +} + +/**分销码有效期 */ +export function validateEffectTime(args, payload: any) { + const [, value, callback] = args + if (!payload.validEndTime) { + callback('请选择日期') + } else if (payload.validEndTime < payload.validStartTime) { + callback('结束日期不能小于开始日期') + } else { + callback() + } +} +/**分销抽佣比、师傅服务金额 */ +export function validateServiceCommissionRate(args, payload: string, max: number) { + const [, value, callback] = args + if (positiveNumberAndZeroReg.test(value)) { + if (parseFloat(value) <= max) { + callback() + } else { + callback(new Error(`${payload}抽佣比范围在0-${max}%`)) + } + } else { + callback(new Error(`${payload}抽佣比请输入正数,且最多保留两位小数`)) + } +} + +// 全数字 +export function isNumber(path: string) { + return /^\d+$/.test(path) +} +// 带小数点的数字 +export function isNumberWithDot(path: string) { + return /^(?!0\.00$)(?:0|[1-9]\d*)(?:\.\d{1,2})?$/.test(path) +} + +/**优惠券的校验规则 */ +/**优惠券面值 */ +export function validateMoney(args: any, payload: any[]) { + const [, value, callback] = args + const [conditionType, conditionMoney] = payload + if (value && positiveNumberReg.test(value)) { + if (conditionType === UseConditionEnum.CONDITION) { + if (parseFloat(value) > parseFloat(conditionMoney)) { + callback(new Error('优惠值面额必须小于最低消费金额')) + } else { + callback() + } + } else { + callback() + } + } else { + callback(new Error('优惠面值请输入正数,但不包含0且最多保留两位小数')) + } +} +/**发放方式渠道派发 */ +export function validateUserList(args: any, payload: number, channel: number) { + const [, value, callback] = args + if (payload === DispatchEnum.CHANNEL_DISPATCH) { + const val = value[channel] + if (!Array.isArray(val) || !val.length) { + callback(new Error('请选择赠送对象')) + } else { + callback() + } + } else { + callback() + } +} +/**品类券 */ +export function validateServiceCategory(args: any, payload: number) { + const [, value, callback] = args + if (payload === UseGoodsEnum.CATEGORY) { + if (!value.length) { + callback(new Error('请选择商品品类')) + } else { + callback() + } + } else { + callback() + } +} +/**商品券 */ +export function validateGoodsList(args: any, payload: number) { + const [, value, callback] = args + if (payload === UseGoodsEnum.CATEGOYR_PART) { + if (!value.length) { + callback(new Error('请选择商品')) + } else { + callback() + } + } else { + callback() + } +} +/**有门槛 */ +export function valdiateConditionMoney(args: any, payload: number[]) { + const [, value, callback] = args + const [conditionType, money] = payload + if (conditionType === UseConditionEnum.CONDITION) { + if (!value) { + callback(new Error('请输入最低消费金额,但不包含0')) + } else if (positiveNumberReg.test(value)) { + if (money && parseFloat(value) < parseFloat(money)) { + callback(new Error('最低消费金额必须大于优惠券面值')) + } else { + callback() + } + } else { + callback(new Error('最低消费金额请输入正数,但不包含0且最多保留两位小数')) + } + } else { + callback() + } +} +/**限量 */ +export function validateDispatchCount(args: any, payload: number[]) { + const [, value, callback] = args + const [sendTotalType, getType] = payload + if (getType == DispatchEnum.SYSTEM_GIVE) return callback() + if (sendTotalType === DispatchCountEnum.COUNT) { + if (!value) { + callback(new Error('请输入发放数量,但不包含0')) + } else if (integerReg.test(value)) { + callback() + } else { + callback(new Error('请输入正整数,但不包含0')) + } + } else { + callback() + } +} +/**用户可领取数量 */ +export function validateGetNum(args: any, payload: number[]) { + const [, value, callback] = args + const [sendTotalType, dispatchCount] = payload + if (value && integerReg.test(value)) { + if (sendTotalType === DispatchCountEnum.COUNT && dispatchCount && value > dispatchCount) { + callback(new Error('用户领取数量必须小于发放数量')) + } else { + callback() + } + } else { + callback(new Error('请输入正整数,但不包含0')) + } +} +/**发放时间 */ +export function validateSendTime(args: any, payload: number[]) { + const [, value, callback] = args + const [sendTimeStart, sendTimeEnd, useTimeStart, useTimeEnd] = payload + if (!sendTimeStart || !sendTimeEnd) { + callback(new Error('请选择发放时间')) + } else if (sendTimeStart === sendTimeEnd) { + callback(new Error('结束时间不能等于开始时间')) + } else if ((useTimeStart && sendTimeStart > useTimeStart) || (useTimeEnd && sendTimeEnd > useTimeEnd)) { + callback(new Error('发放时间的开始时间应该小于使用时间的开始时间,发放时间的结束时间应该小于使用时间的结束时间')) + } else { + callback() + } +} +/**使用时间 */ +export function validateUseTime(args: any, payload: number[]) { + const [, value, callback] = args + const [useTimeStart, useTimeEnd, sendTimeStart, sendTimeEnd] = payload + if (!useTimeStart || !useTimeEnd) { + callback(new Error('请选择使用时间')) + } else if (useTimeStart === useTimeEnd) { + callback(new Error('结束时间不能等于开始时间')) + } else if ((useTimeStart && sendTimeStart > useTimeStart) || (useTimeEnd && sendTimeEnd > useTimeEnd)) { + callback(new Error('使用时间的开始时间应该大于发放时间的开始时间,使用时间的结束时间应该大于发放时间的结束时间')) + } else { + callback() + } +} + +// 服务时间格式校验 +export function validateGoodsTime(args: any) { + const [, value, callback] = args + if (!/^\+?[1-9]\d*$/.test(value)) { + callback(new Error('请输入正整数,但不包含0')) + } else { + callback() + } +} +/**身份证号 */ +export function validateIdCard(rule: any, value: any, callback: any) { + if (value === '') { + callback(new Error('请输入身份证号')) + } else if (!idCardReg.test(value)) { + callback(new Error('身份证号格式有误')) + } else { + callback() + } +} +/**服务类别 */ +export function validateGoodsIds(rule: any, value: any, callback: any) { + if (!value.length) { + callback(new Error('请选择服务类别')) + } else { + callback() + } +} +/**身份证照片 */ +export function validateFileUploadList(args: any, payload: Record) { + const [, , callback] = args + if (!payload.idCard.length) { + callback(new Error('请上传身份证正反面照片')) + } else if (payload.idCard.length < 2) { + callback(new Error('请上传2张身份证照片')) + } else { + callback() + } +} +/**师傅全身照 */ +export function validateAvatarUploadList(args: any, payload: Record) { + const [, , callback] = args + if (!payload.avatar.length) { + callback(new Error('请上传全身照')) + } else { + callback() + } +} +/**所在地区 */ +export function validateLocation(args: any, payload: Record) { + const [, , callback] = args + const { provinceId, cityId, districtId } = payload + if (provinceId === '' && cityId === '' && districtId === '') { + callback(new Error('请选择所在地区')) + } else { + callback() + } +} + +export function validateAge(rule: any, value: any, callback: any) { + if (value === '') { + callback(new Error('请输入年龄')) + } else if (!ageReg.test(value)) { + callback(new Error('请输入正确的年龄')) + } else { + callback() + } +} +// 运营师傅工作时间 +export function validateWorkTime(args: any, value: any) { + const [, , callback] = args + if (!value.workStartTime || !value.workEndTime) { + callback('请选择工作时间') + } else if (value.workStartTime > value.workEndTime) { + callback('结束时间不能小于开始时间') + } else { + callback() + } +} +/**重新指派师傅-扣分 */ +export function validateScore(rule: any, value: any, callback: any) { + const reg = /^\d+(\.\d{1,2})?$/ + if (value) { + if (value < 0 || value > 5) { + callback(new Error('最小0分,最大5分')) + } else if (!/^[0-9]\d*(\.\d+)?$/.test(value)) { + callback(new Error('请输入正数')) + } else if (!reg.test(value)) { + callback(new Error('请输入正数,最多保留2位小数')) + } else { + callback() + } + } +} +/**体检报告 */ +export function validateFiles(args, payload: any) { + const [, value, callback] = args + const { pdf, report } = payload + if (report.length == 0 && pdf.length == 0) { + callback(new Error('请上传体检报告')) + } else { + callback() + } +} +/**扣款比例 */ +export function validateValue(rule: any, value: any, callback: any) { + const _reg = /[^\d.]/g //移除特殊字符 + const zeroReg = /^0+(\d+)/ //连续输入多个0 + const precisionReg = /(\.\d\d)\d+$/ //最多保留2位小数 + const _reg2 = /^\./ //点开头 + const _reg3 = /(\.\d*\.)/g //连续输入多个小数点,只保留一个 + + if (value === '') { + callback(new Error('请输入退款比例')) + } else { + const parsedValue = parseFloat(value) + if (parsedValue < 0 || parsedValue > 100) { + callback(new Error('扣款比例范围在0-100')) + } else if (_reg.test(value)) { + callback(new Error('不能输入特殊字符')) + } else if (zeroReg.test(value)) { + callback(new Error('不能连续输入多个0')) + } else if (precisionReg.test(value)) { + callback(new Error('最多保留2位小数')) + } else if (_reg2.test(value)) { + callback(new Error('不能输入以点开头字符')) + } else if (_reg3.test(value)) { + callback(new Error('不能连续输入多个小数点')) + } else { + callback() + } + } +} diff --git a/src/views/account/images/login_bg.png b/src/views/account/images/login_bg.png new file mode 100644 index 0000000..787837a Binary files /dev/null and b/src/views/account/images/login_bg.png differ diff --git a/src/views/account/login.vue b/src/views/account/login.vue new file mode 100644 index 0000000..001a6ac --- /dev/null +++ b/src/views/account/login.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/src/views/dev_tools/code/edit.vue b/src/views/dev_tools/code/edit.vue new file mode 100644 index 0000000..374ed96 --- /dev/null +++ b/src/views/dev_tools/code/edit.vue @@ -0,0 +1,388 @@ + + + diff --git a/src/views/dev_tools/code/index.vue b/src/views/dev_tools/code/index.vue new file mode 100644 index 0000000..ca1f9a2 --- /dev/null +++ b/src/views/dev_tools/code/index.vue @@ -0,0 +1,246 @@ + + + diff --git a/src/views/dev_tools/components/code-preview.vue b/src/views/dev_tools/components/code-preview.vue new file mode 100644 index 0000000..36c7439 --- /dev/null +++ b/src/views/dev_tools/components/code-preview.vue @@ -0,0 +1,63 @@ + + + diff --git a/src/views/dev_tools/components/data-table.vue b/src/views/dev_tools/components/data-table.vue new file mode 100644 index 0000000..e4d2d49 --- /dev/null +++ b/src/views/dev_tools/components/data-table.vue @@ -0,0 +1,102 @@ + + + diff --git a/src/views/error/403.vue b/src/views/error/403.vue new file mode 100644 index 0000000..53905ec --- /dev/null +++ b/src/views/error/403.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/views/error/404.vue b/src/views/error/404.vue new file mode 100644 index 0000000..1a7bea7 --- /dev/null +++ b/src/views/error/404.vue @@ -0,0 +1,16 @@ + + + + diff --git a/src/views/error/components/error.vue b/src/views/error/components/error.vue new file mode 100644 index 0000000..5f0b959 --- /dev/null +++ b/src/views/error/components/error.vue @@ -0,0 +1,57 @@ + + + + diff --git a/src/views/material/allot/detail.vue b/src/views/material/allot/detail.vue new file mode 100644 index 0000000..46e6808 --- /dev/null +++ b/src/views/material/allot/detail.vue @@ -0,0 +1,38 @@ + + + + diff --git a/src/views/material/allot/edit.vue b/src/views/material/allot/edit.vue new file mode 100644 index 0000000..97c91ca --- /dev/null +++ b/src/views/material/allot/edit.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/src/views/material/allot/index.vue b/src/views/material/allot/index.vue new file mode 100644 index 0000000..96f175c --- /dev/null +++ b/src/views/material/allot/index.vue @@ -0,0 +1,117 @@ + + + + + + diff --git a/src/views/material/audit/audit.vue b/src/views/material/audit/audit.vue new file mode 100644 index 0000000..9f1cd38 --- /dev/null +++ b/src/views/material/audit/audit.vue @@ -0,0 +1,117 @@ + + + + diff --git a/src/views/material/audit/index.vue b/src/views/material/audit/index.vue new file mode 100644 index 0000000..0171311 --- /dev/null +++ b/src/views/material/audit/index.vue @@ -0,0 +1,139 @@ + + + + + + diff --git a/src/views/material/components/accessoryList.vue b/src/views/material/components/accessoryList.vue new file mode 100644 index 0000000..cb4d078 --- /dev/null +++ b/src/views/material/components/accessoryList.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/src/views/material/components/audit.vue b/src/views/material/components/audit.vue new file mode 100644 index 0000000..7aaf254 --- /dev/null +++ b/src/views/material/components/audit.vue @@ -0,0 +1,23 @@ + + + + diff --git a/src/views/material/components/detail.vue b/src/views/material/components/detail.vue new file mode 100644 index 0000000..cc979dc --- /dev/null +++ b/src/views/material/components/detail.vue @@ -0,0 +1,303 @@ + + + + diff --git a/src/views/material/components/footer.vue b/src/views/material/components/footer.vue new file mode 100644 index 0000000..756c89f --- /dev/null +++ b/src/views/material/components/footer.vue @@ -0,0 +1,31 @@ + + + + diff --git a/src/views/material/components/header.vue b/src/views/material/components/header.vue new file mode 100644 index 0000000..a468de1 --- /dev/null +++ b/src/views/material/components/header.vue @@ -0,0 +1,21 @@ + + + + diff --git a/src/views/material/components/popupDetail.vue b/src/views/material/components/popupDetail.vue new file mode 100644 index 0000000..8f7ad12 --- /dev/null +++ b/src/views/material/components/popupDetail.vue @@ -0,0 +1,66 @@ + + + diff --git a/src/views/material/inventory/components/form.vue b/src/views/material/inventory/components/form.vue new file mode 100644 index 0000000..c011b77 --- /dev/null +++ b/src/views/material/inventory/components/form.vue @@ -0,0 +1,139 @@ + + + + diff --git a/src/views/material/inventory/index.vue b/src/views/material/inventory/index.vue new file mode 100644 index 0000000..6ddc21f --- /dev/null +++ b/src/views/material/inventory/index.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/src/views/material/inventory/useTree.ts b/src/views/material/inventory/useTree.ts new file mode 100644 index 0000000..3386a5d --- /dev/null +++ b/src/views/material/inventory/useTree.ts @@ -0,0 +1,45 @@ +import { apiWarehouseList } from '@/api/material/index' +export const useTree = function () { + const treeData = ref() + const filterText = ref('') + const treeRef = ref() + const currentNodeKey = ref('') + const activeTreeObj = ref() + const foldTree = ref(false) + + // 获取仓库数据 + const getOptions = async () => { + const { lists } = await apiWarehouseList() + treeData.value = lists + currentNodeKey.value = lists[0].id + activeTreeObj.value = lists[0] + } + // 过滤 + const filterNode = (value: string, data: any) => { + if (!value) return true + return data.name.indexOf(value) !== -1 + } + // 节点点击 + const handleNodeClick = (data: any) => { + currentNodeKey.value = data.id + activeTreeObj.value = data + } + // 搜索内容发生改变 + watch(filterText, (val: string) => { + treeRef.value.filter(val) + }) + + onMounted(() => { + getOptions() + }) + return { + treeData, + filterText, + treeRef, + currentNodeKey, + activeTreeObj, + filterNode, + foldTree, + handleNodeClick + } +} diff --git a/src/views/material/outOfStock/detail.vue b/src/views/material/outOfStock/detail.vue new file mode 100644 index 0000000..3b83849 --- /dev/null +++ b/src/views/material/outOfStock/detail.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/src/views/material/outOfStock/edit.vue b/src/views/material/outOfStock/edit.vue new file mode 100644 index 0000000..c641774 --- /dev/null +++ b/src/views/material/outOfStock/edit.vue @@ -0,0 +1,126 @@ + + + + diff --git a/src/views/material/outOfStock/index.vue b/src/views/material/outOfStock/index.vue new file mode 100644 index 0000000..3a7c456 --- /dev/null +++ b/src/views/material/outOfStock/index.vue @@ -0,0 +1,132 @@ + + + + + + diff --git a/src/views/material/purchase/add.vue b/src/views/material/purchase/add.vue new file mode 100644 index 0000000..ac45bfa --- /dev/null +++ b/src/views/material/purchase/add.vue @@ -0,0 +1,257 @@ + + + + + diff --git a/src/views/material/purchase/detail.vue b/src/views/material/purchase/detail.vue new file mode 100644 index 0000000..19b47ac --- /dev/null +++ b/src/views/material/purchase/detail.vue @@ -0,0 +1,178 @@ + + + + + diff --git a/src/views/material/purchase/index.vue b/src/views/material/purchase/index.vue new file mode 100644 index 0000000..33aeac9 --- /dev/null +++ b/src/views/material/purchase/index.vue @@ -0,0 +1,126 @@ + + + diff --git a/src/views/material/purchaseOrder/detail.vue b/src/views/material/purchaseOrder/detail.vue new file mode 100644 index 0000000..4ac0a48 --- /dev/null +++ b/src/views/material/purchaseOrder/detail.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/src/views/material/purchaseOrder/index.vue b/src/views/material/purchaseOrder/index.vue new file mode 100644 index 0000000..a845c44 --- /dev/null +++ b/src/views/material/purchaseOrder/index.vue @@ -0,0 +1,140 @@ + + + diff --git a/src/views/material/purchaseOrder/send.vue b/src/views/material/purchaseOrder/send.vue new file mode 100644 index 0000000..673502b --- /dev/null +++ b/src/views/material/purchaseOrder/send.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/src/views/material/receive/detail.vue b/src/views/material/receive/detail.vue new file mode 100644 index 0000000..2abccf8 --- /dev/null +++ b/src/views/material/receive/detail.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/views/material/receive/index.vue b/src/views/material/receive/index.vue new file mode 100644 index 0000000..7527952 --- /dev/null +++ b/src/views/material/receive/index.vue @@ -0,0 +1,143 @@ + + + diff --git a/src/views/material/receive/send.vue b/src/views/material/receive/send.vue new file mode 100644 index 0000000..f4b614c --- /dev/null +++ b/src/views/material/receive/send.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/src/views/material/warehouse/components/form.vue b/src/views/material/warehouse/components/form.vue new file mode 100644 index 0000000..55289e1 --- /dev/null +++ b/src/views/material/warehouse/components/form.vue @@ -0,0 +1,144 @@ + + + + diff --git a/src/views/material/warehouse/index.vue b/src/views/material/warehouse/index.vue new file mode 100644 index 0000000..69e5226 --- /dev/null +++ b/src/views/material/warehouse/index.vue @@ -0,0 +1,87 @@ + + + + + + diff --git a/src/views/material/warehousing/detail.vue b/src/views/material/warehousing/detail.vue new file mode 100644 index 0000000..282611a --- /dev/null +++ b/src/views/material/warehousing/detail.vue @@ -0,0 +1,36 @@ + + + + diff --git a/src/views/material/warehousing/edit.vue b/src/views/material/warehousing/edit.vue new file mode 100644 index 0000000..1a4e282 --- /dev/null +++ b/src/views/material/warehousing/edit.vue @@ -0,0 +1,125 @@ + + + + diff --git a/src/views/material/warehousing/index.vue b/src/views/material/warehousing/index.vue new file mode 100644 index 0000000..fe1bce1 --- /dev/null +++ b/src/views/material/warehousing/index.vue @@ -0,0 +1,131 @@ + + + + + + diff --git a/src/views/organization/department/edit.vue b/src/views/organization/department/edit.vue new file mode 100644 index 0000000..52840b5 --- /dev/null +++ b/src/views/organization/department/edit.vue @@ -0,0 +1,172 @@ + + diff --git a/src/views/organization/department/index.vue b/src/views/organization/department/index.vue new file mode 100644 index 0000000..54a4188 --- /dev/null +++ b/src/views/organization/department/index.vue @@ -0,0 +1,138 @@ + + diff --git a/src/views/organization/post/edit.vue b/src/views/organization/post/edit.vue new file mode 100644 index 0000000..1fe644f --- /dev/null +++ b/src/views/organization/post/edit.vue @@ -0,0 +1,120 @@ + + diff --git a/src/views/organization/post/index.vue b/src/views/organization/post/index.vue new file mode 100644 index 0000000..f2b1bdc --- /dev/null +++ b/src/views/organization/post/index.vue @@ -0,0 +1,100 @@ + + diff --git a/src/views/permission/admin/edit.vue b/src/views/permission/admin/edit.vue new file mode 100644 index 0000000..06a0008 --- /dev/null +++ b/src/views/permission/admin/edit.vue @@ -0,0 +1,262 @@ + + diff --git a/src/views/permission/admin/index.vue b/src/views/permission/admin/index.vue new file mode 100644 index 0000000..b634b8d --- /dev/null +++ b/src/views/permission/admin/index.vue @@ -0,0 +1,132 @@ + + + diff --git a/src/views/permission/menu/edit.vue b/src/views/permission/menu/edit.vue new file mode 100644 index 0000000..6fbad7a --- /dev/null +++ b/src/views/permission/menu/edit.vue @@ -0,0 +1,247 @@ + + diff --git a/src/views/permission/menu/index.vue b/src/views/permission/menu/index.vue new file mode 100644 index 0000000..03ad440 --- /dev/null +++ b/src/views/permission/menu/index.vue @@ -0,0 +1,129 @@ + + diff --git a/src/views/permission/role/auth.vue b/src/views/permission/role/auth.vue new file mode 100644 index 0000000..3e16834 --- /dev/null +++ b/src/views/permission/role/auth.vue @@ -0,0 +1,154 @@ + + diff --git a/src/views/permission/role/edit.vue b/src/views/permission/role/edit.vue new file mode 100644 index 0000000..0ef0d60 --- /dev/null +++ b/src/views/permission/role/edit.vue @@ -0,0 +1,112 @@ + + diff --git a/src/views/permission/role/index.vue b/src/views/permission/role/index.vue new file mode 100644 index 0000000..c5c359a --- /dev/null +++ b/src/views/permission/role/index.vue @@ -0,0 +1,108 @@ + + + diff --git a/src/views/setting/dict/data/edit.vue b/src/views/setting/dict/data/edit.vue new file mode 100644 index 0000000..7080251 --- /dev/null +++ b/src/views/setting/dict/data/edit.vue @@ -0,0 +1,114 @@ + + diff --git a/src/views/setting/dict/data/index.vue b/src/views/setting/dict/data/index.vue new file mode 100644 index 0000000..61265c6 --- /dev/null +++ b/src/views/setting/dict/data/index.vue @@ -0,0 +1,140 @@ + + + diff --git a/src/views/setting/dict/type/edit.vue b/src/views/setting/dict/type/edit.vue new file mode 100644 index 0000000..1d61d56 --- /dev/null +++ b/src/views/setting/dict/type/edit.vue @@ -0,0 +1,103 @@ + + diff --git a/src/views/setting/dict/type/index.vue b/src/views/setting/dict/type/index.vue new file mode 100644 index 0000000..0e5f2d2 --- /dev/null +++ b/src/views/setting/dict/type/index.vue @@ -0,0 +1,131 @@ + + + diff --git a/src/views/setting/storage/edit.vue b/src/views/setting/storage/edit.vue new file mode 100644 index 0000000..28dae8f --- /dev/null +++ b/src/views/setting/storage/edit.vue @@ -0,0 +1,196 @@ + + diff --git a/src/views/setting/storage/index.vue b/src/views/setting/storage/index.vue new file mode 100644 index 0000000..1112f38 --- /dev/null +++ b/src/views/setting/storage/index.vue @@ -0,0 +1,65 @@ + + diff --git a/src/views/setting/system/cache.vue b/src/views/setting/system/cache.vue new file mode 100644 index 0000000..606ab0b --- /dev/null +++ b/src/views/setting/system/cache.vue @@ -0,0 +1,260 @@ + + + + + + diff --git a/src/views/setting/system/environment.vue b/src/views/setting/system/environment.vue new file mode 100644 index 0000000..b3a218e --- /dev/null +++ b/src/views/setting/system/environment.vue @@ -0,0 +1,142 @@ + + + + + + diff --git a/src/views/setting/system/journal.vue b/src/views/setting/system/journal.vue new file mode 100644 index 0000000..a554a83 --- /dev/null +++ b/src/views/setting/system/journal.vue @@ -0,0 +1,120 @@ + + + + + + diff --git a/src/views/setting/system/task/edit.vue b/src/views/setting/system/task/edit.vue new file mode 100644 index 0000000..4521b97 --- /dev/null +++ b/src/views/setting/system/task/edit.vue @@ -0,0 +1,147 @@ + + + diff --git a/src/views/setting/system/task/index.vue b/src/views/setting/system/task/index.vue new file mode 100644 index 0000000..75ce453 --- /dev/null +++ b/src/views/setting/system/task/index.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/views/setting/website/filing.vue b/src/views/setting/website/filing.vue new file mode 100644 index 0000000..fd96332 --- /dev/null +++ b/src/views/setting/website/filing.vue @@ -0,0 +1,93 @@ + + + + diff --git a/src/views/setting/website/information.vue b/src/views/setting/website/information.vue new file mode 100644 index 0000000..e545811 --- /dev/null +++ b/src/views/setting/website/information.vue @@ -0,0 +1,118 @@ + + + + + + diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..c227d52 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,119 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'], + theme: { + colors: { + white: 'var(--color-white)', + primary: { + DEFAULT: 'var(--el-color-primary)', + 'light-3': 'var(--el-color-primary-light-3)', + 'light-5': 'var(--el-color-primary-light-5)', + 'light-7': 'var(--el-color-primary-light-7)', + 'light-8': 'var(--el-color-primary-light-8)', + 'light-9': 'var(--el-color-primary-light-9)', + 'dark-2': 'var(--el-color-primary-dark-2)' + }, + success: 'var(--el-color-success)', + warning: 'var(--el-color-warning)', + danger: 'var(--el-color-danger)', + error: 'var(--el-color-error)', + info: 'var(--el-color-info)', + body: 'var(--el-bg-color)', + page: 'var(--el-bg-color-page)', + 'tx-primary': 'var(--el-text-color-primary)', + 'tx-regular': 'var(--el-text-color-regular)', + 'tx-secondary': 'var(--el-text-color-secondary)', + 'tx-placeholder': 'var(--el-text-color-placeholder)', + 'tx-disabled': 'var(--el-text-color-disabled)', + br: 'var(--el-border-color)', + 'br-light': 'var(--el-border-color-light)', + 'br-extra-light': 'var(--el-border-color-extra-light)', + 'br-dark': 'var( --el-border-color-dark)', + fill: 'var(--el-fill-color)', + 'fill-light': 'var(--el-fill-color-light)', + 'fill-lighter': 'var(--el-fill-color-lighter)', + mask: 'var(--el-mask-color)' + }, + fontFamily: { + sans: ['AlimamaAgileVF', 'PingFang SC', 'Arial', 'Hiragino Sans GB', 'Microsoft YaHei', 'sans-serif'] + }, + boxShadow: { + DEFAULT: 'var(--el-box-shadow)', + light: 'var(--el-box-shadow-light)', + lighter: 'var(--el-box-shadow-lighter)', + dark: 'var(--el-box-shadow-dark)' + }, + fontSize: { + xs: 'var(--el-font-size-extra-small)', + sm: 'var( --el-font-size-small)', + base: 'var( --el-font-size-base)', + lg: 'var( --el-font-size-medium)', + xl: 'var( --el-font-size-large)', + '2xl': 'var( --el-font-size-extra-large)', + '3xl': '20px', + '4xl': '24px', + '5xl': '28px', + '6xl': '30px', + '7xl': '36px', + '8xl': '48px', + '9xl': '60px' + }, + spacing: { + px: '1px', + 0: '0px', + 0.5: '2px', + 1: '4px', + 1.5: '6px', + 2: '8px', + 2.5: '10px', + 3: '12px', + 3.5: '14px', + 4: '16px', + 5: '20px', + 6: '24px', + 7: '28px', + 8: '32px', + 9: '36px', + 10: '40px', + 11: '44px', + 12: '48px', + 14: '56px', + 16: '64px', + 20: '80px', + 24: '96px', + 28: '112px', + 32: '128px', + 36: '144px', + 40: '160px', + 44: '176px', + 48: '192px', + 52: '208px', + 56: '224px', + 60: '240px', + 64: '256px', + 72: '288px', + 80: '320px', + 96: '384px' + }, + lineHeight: { + none: '1', + tight: '1.25', + snug: '1.375', + normal: '1.5', + relaxed: '1.625', + loose: '2', + 3: '12px', + 4: '16px', + 5: '20px', + 6: '24px', + 7: '28px', + 8: '32px', + 9: '36px', + 10: '40px' + } + }, + + plugins: [ + require('@tailwindcss/line-clamp') // 引入插件 + ] +} diff --git a/tsconfig.config.json b/tsconfig.config.json new file mode 100644 index 0000000..93fe584 --- /dev/null +++ b/tsconfig.config.json @@ -0,0 +1,8 @@ +{ + "extends": "@vue/tsconfig/tsconfig.node.json", + "include": ["vite.config.*"], + "compilerOptions": { + "composite": true, + "types": ["node"] + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..f440818 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "@vue/tsconfig/tsconfig.web.json", + "include": ["global.d.ts", "src/**/*", "src/**/*.vue", "components.d.ts", "auto-imports.d.ts", "typings/*.d.ts"], + "compilerOptions": { + "isolatedModules": true, + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + }, + "references": [ + { + "path": "./tsconfig.config.json" + } + ] +} diff --git a/typings/index.d.ts b/typings/index.d.ts new file mode 100644 index 0000000..daf761b --- /dev/null +++ b/typings/index.d.ts @@ -0,0 +1,19 @@ +/* + * @Author: micky + * @Date: 2024-07-17 17:01:15 + * @LastEditors: micky + * @LastEditTime: 2024-07-17 18:46:55 + * @FilePath: \maintenance-admin\typings\index.d.ts + */ +declare module 'vue3-video-play' + +declare module 'css-color-function' +declare module 'vue3-eventbus' +declare module 'element-plus' +declare module '@element-plus/icons-vue' + +type PromiseFun = (...arg: any[]) => Promise + +declare interface Fn { + (...arg: T[]): R +} diff --git a/typings/material.d.ts b/typings/material.d.ts new file mode 100644 index 0000000..43d408b --- /dev/null +++ b/typings/material.d.ts @@ -0,0 +1,132 @@ +/* + * @Author: micky + * @Date: 2024-07-19 19:04:21 + * @LastEditors: micky + * @LastEditTime: 2024-07-29 15:12:36 + * @FilePath: \maintenance-admin\typings\material.d.ts + */ +// 配件子项 +declare type MaterialItem = { + /** 配件编码 */ + sparePartsCode: string + /** 配件名称 */ + sparePartsName: string + /** 所属仓库 */ + owningWarehouse: string + /** 型号规格 */ + specificationsModel: string + /** 数量 */ + quantity: string + // warehouseId: string + // warehouseName: string + price: string + id: string + unit: string +} & ApiResCommon +// 仓库子项 +declare type WarehouseItem = { + name: string + code: string + id: string + updateTime: string + createTime: string + address: string + partsNumber: number + parentId: string +} + +// 配件领用列表 +declare type ReceiveItem = { + orderId: string + id: string + amount: string + status: string + inspector: string + inspectorId: string + phone: string + createTime: string + lists: MaterialItem[] + receiverPerson: string + receiverPhone: string + receiverAddress: string + receiveWay: string +} +// 入库 +declare type WarehousingItem = { + id: string + warehouseId: string + warehouseName: string + classifyId: string + classifyName: string + supplier: string + phone: string + status: string + result: string + auditOpinion: string + createBy: string + createTime: string + lists: MaterialItem[] +} + +// 出库 +declare type OutOfStockItem = { + id: string + warehouseId: string + warehouseName: string + classifyId: string + classifyName: string + contact: string + phone: string + status: string + result: string + createBy: string + createTime: string + lists: MaterialItem[] +} + +// 调拨 +declare type AllotItem = { + id: string + inWarehouseId: string + inWarehouseName: string + outWarehouseId: string + outWarehouseName: string + status: string + result: string + createBy: string + createTime: string + lists: MaterialItem[] + remark: string +} + +// 出入库审核 +declare type WarehouseAuditItem = { + id: string + type: string + typeDesc: string + warsehouseId: string + warsehouseName: string + warsehouseType: string + warsehouseTypeDesc: string + status: string + result: string + createBy: string + createTime: string + updateTime: string + opinion: string +} + +// 配件采购订单 +declare type ReceiveItem = { + orderId: string + id: string + purchasingPerson: string + phone: string + status: string + createTime: string + lists: MaterialItem[] + receiverPerson: string + receiverPhone: string + receiverAddress: string + receiveWay: string +} diff --git a/typings/router.d.ts b/typings/router.d.ts new file mode 100644 index 0000000..9fae641 --- /dev/null +++ b/typings/router.d.ts @@ -0,0 +1,14 @@ +import 'vue-router' +declare module 'vue-router' { + // 扩展 RouteMeta + interface RouteMeta { + type?: string + perms?: string + title?: string + icon?: string + hidden?: boolean + activeMenu?: string + hideTab?: boolean + keepAlive?: boolean + } +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..f471574 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,77 @@ +/* + * @Author: micky + * @Date: 2024-07-17 17:01:15 + * @LastEditors: micky + * @LastEditTime: 2024-07-25 10:30:23 + * @FilePath: \maintenance-admin\vite.config.ts + */ +import { fileURLToPath, URL } from 'url' + +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import vueJsx from '@vitejs/plugin-vue-jsx' +import AutoImport from 'unplugin-auto-import/vite' +import Components from 'unplugin-vue-components/vite' +import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' +import { createStyleImportPlugin, ElementPlusResolve } from 'vite-plugin-style-import' +import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' +import vueSetupExtend from 'vite-plugin-vue-setup-extend' +// https://vitejs.dev/config/ +export default defineConfig({ + // base: '/admin/', + server: { + port: 3000, + host: '0.0.0.0', + proxy: { + // '/api': { + // target: 'https://admin.yuegoodlife.com/', + // changeOrigin: true, + // }, + '/tecent': { + target: 'https://apis.map.qq.com', + changeOrigin: true, + rewrite: path => { + return path.replace(/^\/tecent/, '') + } + } + } + }, + plugins: [ + vue(), + vueJsx(), + AutoImport({ + imports: ['vue', 'vue-router'], + resolvers: [ElementPlusResolver()], + eslintrc: { + enabled: true + } + }), + Components({ + directoryAsNamespace: true, + resolvers: [ElementPlusResolver()] + }), + createStyleImportPlugin({ + resolves: [ElementPlusResolve()] + }), + createSvgIconsPlugin({ + // 配置路劲在你的src里的svg存放文件 + iconDirs: [fileURLToPath(new URL('./src/assets/icons', import.meta.url))], + symbolId: 'local-icon-[dir]-[name]' + }), + vueSetupExtend() + ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + } + }, + build: { + rollupOptions: { + manualChunks(id) { + if (id.includes('node_modules')) { + return id.toString().split('node_modules/')[1].split('/')[0].toString() + } + } + } + } +})