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 @@
+
+
+
+
+ 选择配件
+
+
+
+ 请勾选“复选框”来添加配件,已选择
+ {{ selected.length }}
+ 个
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+ {{ index != 0 ? '、' : '' }}{{ item.name }}
+
+
+
+
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 @@
+
+
+
+
+
+
+
请选择图标
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 无
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+ 请填写完整的带有“https://”或“http://”的链接地址,链接的域名必须在微信公众平台设置业务域名
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ ···
+
+
+
+
+ 命名分组
+
+
+
+ 删除分组
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 本地上传
+
+
+ 本地上传
+
+
+ 本地上传
+
+
+ 本地上传
+
+
+
+ 删除
+
+
+
+
+ 移动
+
+
+
+ 移动文件至
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 当页全选
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.name }}
+
+
+
+
+
+
+
+
+ 查看
+
+
+ 删除
+
+
+
+
+
+
暂无数据~
+
+
+
+
+
+
+ 已选择 {{ select.length }}
+ /{{ limit }}
+
+
清空
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+ {{ content }}
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+ {{ content }}
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+ 配货打印
+
+
+
+
配货单
+
+
+ 订单号:
+ {{ formData.orderId }}
+
+
+ 出货日期:
+ {{ formData.time }}
+
+
+ 物流单号:
+ {{ formData.orderId }}
+
+
+
+
+
采购方
+
+
+
{{ formData.company }}
+
{{ formData.receiverAdddress }}
+
+
+
+
{{ formData.receiverPerson }}
+
{{ formData.receiverPhone }}
+
+
+
+
供应方
+
企业名称
+
{{ formData.createCompany }}
+
经办人
+
{{ formData.createBy }}
+
+
+
+
+ {{ $index + 1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+ 打印
+
+
+
+
+
+
+// 去除打印的页眉页脚
+
+// 去除打印的页眉页脚
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 @@
+
+
+
+
+
+
+
+
+
+
{{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+ {{ btnText }}
+
+
+
+
+
{{ userData.nickname || userVo.nickname }}(用户编号{{ userData.sn || userVo.sn }})
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ parseNameValue(row) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+ {{ item.meta.title }}
+
+
+
+
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 @@
+
+
+
+
+
{{ userInfo.nickname }}
+
+
+
+
+
+
+ 个人设置
+
+ 退出登录
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+ {{ routeMeta?.title }}
+
+
+
+
+
+
+ {{ routeMeta?.title }}
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
{{ config.webName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
登录
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+ {{ code }}
+
+
{{ title }}
+
+ {{ second }} 秒后返回上一页
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 新建调拨单
+
+
+
+
+
+
+
+
+ {{ parseStatus(dictData.auditStatus, row.status) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 编辑
+
+ 取消审核
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getDictName(dictData.receiptType, row.type) }}
+
+
+
+
+
+ {{ getDictName(allCategory, row.warsehouseType) }}
+
+
+
+
+ {{ parseStatus(dictData.auditStatus, row.status) }}
+
+
+
+
+
+
+
+
+
+
+
+
+ 审核
+
+
+ 详情
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
{{ nameMap[type] }}明细
+
+
+
+
+
+
+ {{ $index + 1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
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 @@
+
+
+ 审核处理
+
+
+
审核意见
+
{{ formData.auditOpinion || '--' }}
+
+
+
+
+
+
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 @@
+
+
+
+ {{ title || nameMap[type] + '单详情' }}
+ 返回上一级
+
+
+
+ 审核处理
+
+
+
审核意见
+
{{ formData.auditOpinion || '--' }}
+
+
+
+ 基本信息
+
+
+
+
+
+
+
+
+ {{ parseStatus(dictData.auditStatus, formData?.[item.prop]) }}
+
+
+
+
+
+
+ {{ parseName(dictData.receiveStatus, formData?.[item.prop]) }}
+
+
+
+
+ {{ getDictName(dictData.deliveryMethod, formData?.[item.prop]) }}
+
+ {{ formData?.[item.prop] }}
+
+
+
+
+
+ {{ nameMap[type] }}明细
+
+
+
+ {{ $index + 1 }}
+
+
+
+
+
+
+
+
+
+ {{ row.amount }}
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+ 取消
+ {{ confirmText }}
+
+
+
+
+
+
+
+
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 @@
+
+
+
+ {{ title }}
+ 返回上一级
+
+
+
+
+
+
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 @@
+
+
+
+
+ 查看
+
+
+
+
+ {{ $index + 1 }}
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+ {{ btnText }}
+
+ {{ btnText }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ activeTreeObj?.name }}
+
+
+
+
+ 批量删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 新建出库单
+
+
+
+
+
+
+
+ {{ getDictName(dictData.outWarehouseType, row.classifyId) }}
+
+
+
+
+ {{ row.contact }}/{{ row.phone }}
+
+
+
+
+ {{ parseStatus(dictData.auditStatus, row.status) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 编辑
+
+ 取消审核
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+ 基本信息
+
+
+
+ {{ formData.name }}
+
+
+ {{ formData.phone }}
+
+
+
+
+
+
+ {{ parsePurchaseName(dictData.purchaseStatus, formData.status) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $index + 1 }}
+
+
+
+
+
+
+
+
+ ¥{{ row.price }}
+
+
+
+
+
+
+
+
+
+ {{ computedRowTotalPrice(row) }}
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+ 基本信息
+
+
+
+ {{ formData.name }}
+
+
+ {{ formData.phone }}
+
+
+
+
+
+
+ {{ parsePurchaseName(dictData.purchaseStatus, formData.status) }}
+
+
+
+
+
+
+
+
+
+ 采购明细
+
+
+
+
+ {{ $index + 1 }}
+
+
+
+
+
+
+
+
+ ¥{{ row.price }}
+
+
+
+
+
+ {{ computedRowTotalPrice(row) }}
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+ {{ formData.address || '--' }}
+ {{ formData.remark || '--' }}
+
+
+
+
+ 总价:
+ ¥{{ totalPrice }}
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 新建采购单
+
+
+
+
+
+
+ {{ row.purchasingPerson }}/{{ row.phone }}
+
+
+
+
+ {{ getDictName(dictData.deliveryMethod, row.receiveWay) }}
+
+
+
+
+
+
+
+ {{ parsePurchaseName(dictData.purchaseStatus, row.status) }}
+
+
+
+
+
+
+
+
+
+ 收货
+
+ 详情
+
+
+ 继续编辑草稿
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.orderId }}
+
+
+
+
+ {{ row.purchasingPerson }}/{{ row.phone }}
+
+
+
+
+
+
+
+
+
+ {{ getDictName(dictData.deliveryMethod, row.receiveWay) }}
+
+
+
+
+
+
+ {{ parseName(dictData.receiveStatus, row.status) }}
+
+
+
+
+
+
+
+
+ 审核
+
+
+ 发货
+
+
+ 详情
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+ 发货信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 收货信息
+
+
+
+ {{ detail.receiverPerson }}
+
+
+ {{ detail.receiverPhone }}
+
+
+ {{ detail.receiverAddress }}
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.orderId }}
+
+
+
+
+ {{ row.inspector }}/{{ row.phone }}
+
+
+
+
+
+
+
+
+
+ {{ getDictName(dictData.deliveryMethod, row.receiveWay) }}
+
+
+
+
+
+
+
+ {{ parseName(dictData.receiveStatus, row.status) }}
+
+
+
+
+
+
+
+
+ 审核
+
+
+ 发货
+
+
+ 详情
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+ 发货信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 收货信息
+
+
+
+ {{ detail.receiverPerson }}
+
+
+ {{ detail.receiverPhone }}
+
+
+ {{ detail.receiverAddress }}
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+ {{ btnText }}
+
+ {{ btnText }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 新建入库单
+
+
+
+
+
+
+
+ {{ getDictName(dictData.inWarehouseType, row.classifyId) }}
+
+
+
+
+ {{ row.supplier }}/{{ row.phone }}
+
+
+
+
+ {{ parseStatus(dictData.auditStatus, row.status) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 编辑
+
+ 取消审核
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 新增
+
+ 展开/折叠
+
+
+
+
+
+
+ {{ getDictName(dictData.deptStatus, row.isStop) }}
+
+
+
+
+
+
+
+ 新增
+ 编辑
+
+ 删除
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 新增
+
+
+
+
+
+
+
+
+
+
+
+ {{ getDictName(dictData.deptStatus, row.isStop) }}
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 添加数据
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getDictName(dictData.menuStatus, row.status) }}
+
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 新增
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getDictName(dictData.menuStatus, row.dictStatus) }}
+
+
+
+
+
+
+
+ 编辑
+
+
+ 数据管理
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+
基本信息
+
+
+
+
+
+
+
+ Redis版本
+ |
+
+ {{ baseInfo.redis_version }}
+ |
+
+ 运行模式
+ |
+
+
+ {{
+ baseInfo.redis_mode == 'standalone'
+ ? '单机'
+ : '集群'
+ }}
+
+ |
+
+ 端口
+ |
+
+ {{ baseInfo.tcp_port }}
+ |
+
+ 客户端数
+ |
+
+ {{ baseInfo.connected_clients }}
+ |
+
+
+
+ 运行时间(天)
+ |
+
+ {{ baseInfo.uptime_in_days }}
+ |
+
+ 使用内存
+ |
+
+
+ {{ baseInfo.used_memory_human }}
+
+ |
+
+ 使用CPU
+ |
+
+
+ {{ baseInfo.used_cpu_user_children }}
+
+ |
+
+ 内存配置
+ |
+
+ {{ baseInfo.maxmemory_human }}
+ |
+
+
+
+ AOF是否开启
+ |
+
+
+ {{ baseInfo.aof_enabled == 0 ? '开启' : '关闭' }}
+
+ |
+
+ RDB是否成功
+ |
+
+
+ {{ baseInfo.aof_enabled == 'ok' ? '成功' : '失败' }}
+
+ |
+
+ Key数量
+ |
+
+ {{ baseInfo.dbSize }}
+ |
+
+ 网络入口/出口
+ |
+
+
+ {{ baseInfo.instantaneous_input_kbps }}
+ /
+ {{ baseInfo.instantaneous_output_kbps }}
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 @@
+
+
+
+
+
+ CPU
+
+
+
+
{{ info.cpu.cpuNum }}
+
核心数
+
+
+
+
+ {{ info.cpu.used ? `${info.cpu.used}%` : '-' }}
+
+
用户使用率
+
+
+
+
+ {{ info.cpu.sys ? `${info.cpu.sys}%` : '-' }}
+
+
系统使用率
+
+
+
+
+ {{ info.cpu.free ? `${info.cpu.free}%` : '-' }}
+
+
当前空闲率
+
+
+
+
+
+ 内存
+
+
+
+
{{ info.mem.total }}
+
总内存
+
+
+
+
+ {{ info.mem.used ? `${info.mem.used}%` : '-' }}
+
+
已用内存
+
+
+
+
+ {{ info.mem.free ? `${info.mem.free}%` : '-' }}
+
+
剩余内存
+
+
+
+
+ {{ info.mem.usage ? `${info.mem.usage}%` : '-' }}
+
+
使用率
+
+
+
+
+
+
+ 服务器信息
+
+
+
+
+
+
+
+
+
+
+
+
+ Java虚拟机信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 硬盘状态
+
+
+
+
+
+
+
+
+
+ {{ row.usage }}%
+
+
+
+
+
+
+
+
+
+
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()
+ }
+ }
+ }
+ }
+})