diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d22e2c9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2023 niucloud-admin + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/admin/.env.development b/admin/.env.development new file mode 100644 index 0000000..3524195 --- /dev/null +++ b/admin/.env.development @@ -0,0 +1,13 @@ +NODE_ENV = 'development' + +# 本地开发-api请求地址 +VITE_APP_BASE_URL='http://zfgl.cc/index.php/adminapi/' + +# 图片服务器地址 +VITE_IMG_DOMAIN='http://zfgl.cc' + +# 请求时header中token的参数名 +VITE_REQUEST_HEADER_TOKEN_KEY='token' + +# 请求时header中站点的参数名 +VITE_REQUEST_HEADER_SITEID_KEY='site-id' \ No newline at end of file diff --git a/admin/.env.production b/admin/.env.production new file mode 100644 index 0000000..4290f9e --- /dev/null +++ b/admin/.env.production @@ -0,0 +1,13 @@ +NODE_ENV = 'production' + +# api请求地址 +VITE_APP_BASE_URL='/adminapi/' + +# 图片服务器地址 +VITE_IMG_DOMAIN='' + +# 请求时header中token的参数名 +VITE_REQUEST_HEADER_TOKEN_KEY='token' + +# 请求时header中站点的参数名 +VITE_REQUEST_HEADER_SITEID_KEY='site-id' \ No newline at end of file diff --git a/admin/.eslintrc.json b/admin/.eslintrc.json new file mode 100644 index 0000000..0e83837 --- /dev/null +++ b/admin/.eslintrc.json @@ -0,0 +1,27 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "extends": [ + "plugin:vue/vue3-essential", + "standard-with-typescript", + "eslint:recommended" + ], + "overrides": [ + ], + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module", + "parser": "@typescript-eslint/parser" + }, + "plugins": [ + "vue", + "@typescript-eslint" + ], + "rules": { + "no-tabs":"off", + "indent": [1, 4, { "SwitchCase": 1 }], + "eqeqeq":"off" + } +} diff --git a/admin/.gitignore b/admin/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/admin/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/admin/README.md b/admin/README.md new file mode 100644 index 0000000..ef72fd5 --- /dev/null +++ b/admin/README.md @@ -0,0 +1,18 @@ +# Vue 3 + TypeScript + Vite + +This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 ` + + diff --git a/admin/package-lock.json b/admin/package-lock.json new file mode 100644 index 0000000..0617450 --- /dev/null +++ b/admin/package-lock.json @@ -0,0 +1,6949 @@ +{ + "name": "admin", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "admin", + "version": "1.0.0", + "dependencies": { + "@element-plus/icons-vue": "2.0.10", + "@highlightjs/vue-plugin": "2.1.0", + "@types/lodash-es": "4.17.6", + "@vueuse/core": "9.12.0", + "@wangeditor/editor": "5.1.23", + "@wangeditor/editor-for-vue": "5.1.12", + "axios": "1.4.0", + "crypto-js": "4.1.1", + "css-color-function": "1.3.3", + "echarts": "5.4.1", + "element-plus": "2.2.29", + "highlight.js": "11.0.1", + "lodash-es": "4.17.21", + "nprogress": "0.2.0", + "pinia": "2.0.30", + "qrcode": "1.5.1", + "sass": "1.58.0", + "sortablejs": "1.15.0", + "vue": "3.2.45", + "vue-i18n": "9.2.2", + "vue-jsonp": "2.0.0", + "vue-router": "4.1.6", + "vue-web-terminal": "3.2.2", + "vue3-video-play": "1.3.1-beta.6" + }, + "devDependencies": { + "@tailwindcss/line-clamp": "0.4.2", + "@types/qrcode": "1.5.0", + "@types/sortablejs": "1.15.0", + "@typescript-eslint/eslint-plugin": "5.53.0", + "@vitejs/plugin-vue": "4.0.0", + "autoprefixer": "10.4.13", + "eslint": "8.34.0", + "eslint-config-standard-with-typescript": "34.0.0", + "eslint-plugin-import": "2.27.5", + "eslint-plugin-n": "15.6.1", + "eslint-plugin-promise": "6.1.1", + "eslint-plugin-vue": "9.9.0", + "postcss": "8.4.21", + "tailwindcss": "3.2.4", + "typescript": "4.9.5", + "unplugin-auto-import": "0.13.0", + "unplugin-vue-components": "0.23.0", + "vite": "4.1.0", + "vue-tsc": "1.0.24" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmmirror.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@antfu/utils": { + "version": "0.7.7", + "resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.7.tgz", + "integrity": "sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==", + "dev": true + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.5", + "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.6", + "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.23.6.tgz", + "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.6", + "@babel/parser": "^7.23.6", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.6", + "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.23.6.tgz", + "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.6", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.23.6", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.23.6.tgz", + "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/standalone": { + "version": "7.23.6", + "resolved": "https://registry.npmmirror.com/@babel/standalone/-/standalone-7.23.6.tgz", + "integrity": "sha512-+AzS6BZwZdSosrgS/TiGDYLxtlefARKClWgJ4ql//XfmV9KbPWbkEekvbvDRJ8a6qog8E9j3CziHLz5dbIEMyw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.6", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.23.6.tgz", + "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.23.6", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.6.1", + "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", + "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@element-plus/icons-vue": { + "version": "2.0.10", + "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.0.10.tgz", + "integrity": "sha512-ygEZ1mwPjcPo/OulhzLE7mtDrQBWI8vZzEWSNB2W/RNCRjoQGwbaK4N8lV4rid7Ts4qvySU3njMN7YCiSlSaTQ==", + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz", + "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", + "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz", + "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", + "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", + "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", + "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", + "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", + "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", + "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", + "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", + "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", + "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", + "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", + "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", + "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", + "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", + "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", + "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", + "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", + "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", + "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", + "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.5.2", + "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.5.2.tgz", + "integrity": "sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==", + "dependencies": { + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "dependencies": { + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.6", + "resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" + }, + "node_modules/@highlightjs/vue-plugin": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/@highlightjs/vue-plugin/-/vue-plugin-2.1.0.tgz", + "integrity": "sha512-E+bmk4ncca+hBEYRV2a+1aIzIV0VSY/e5ArjpuSN9IO7wBJrzUE2u4ESCwrbQD7sAy+jWQjkV5qCCWgc+pu7CQ==", + "peerDependencies": { + "highlight.js": "^11.0.1", + "vue": "^3" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, + "node_modules/@intlify/core-base": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.2.2.tgz", + "integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==", + "dependencies": { + "@intlify/devtools-if": "9.2.2", + "@intlify/message-compiler": "9.2.2", + "@intlify/shared": "9.2.2", + "@intlify/vue-devtools": "9.2.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@intlify/devtools-if": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/devtools-if/-/devtools-if-9.2.2.tgz", + "integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==", + "dependencies": { + "@intlify/shared": "9.2.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@intlify/message-compiler": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.2.2.tgz", + "integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==", + "dependencies": { + "@intlify/shared": "9.2.2", + "source-map": "0.6.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@intlify/shared": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.2.2.tgz", + "integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/@intlify/vue-devtools": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz", + "integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==", + "dependencies": { + "@intlify/core-base": "9.2.2", + "@intlify/shared": "9.2.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nuxt/kit": { + "version": "3.8.2", + "resolved": "https://registry.npmmirror.com/@nuxt/kit/-/kit-3.8.2.tgz", + "integrity": "sha512-LrXCm8hAkw+zpX8teUSD/LqXRarlXjbRiYxDkaqw739JSHFReWzBFgJbojsJqL4h1XIEScDGGOWiEgO4QO1sMg==", + "dev": true, + "dependencies": { + "@nuxt/schema": "3.8.2", + "c12": "^1.5.1", + "consola": "^3.2.3", + "defu": "^6.1.3", + "globby": "^14.0.0", + "hash-sum": "^2.0.0", + "ignore": "^5.3.0", + "jiti": "^1.21.0", + "knitwork": "^1.0.0", + "mlly": "^1.4.2", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "scule": "^1.1.0", + "semver": "^7.5.4", + "ufo": "^1.3.2", + "unctx": "^2.3.1", + "unimport": "^3.5.0", + "untyped": "^1.4.0" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/@nuxt/kit/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@nuxt/kit/node_modules/globby": { + "version": "14.0.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-14.0.0.tgz", + "integrity": "sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==", + "dev": true, + "dependencies": { + "@sindresorhus/merge-streams": "^1.0.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@nuxt/kit/node_modules/local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "dev": true, + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nuxt/kit/node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@nuxt/kit/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@nuxt/kit/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@nuxt/kit/node_modules/unimport": { + "version": "3.6.1", + "resolved": "https://registry.npmmirror.com/unimport/-/unimport-3.6.1.tgz", + "integrity": "sha512-zKzbp8AQ+l8QK3XrONtUBdgBbMI8TkGh8hBYF77ZkVqMLLIAHwGSwJRFolPQMBx/5pezeRKvmu2gzlqnxRZeqQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.1.0", + "escape-string-regexp": "^5.0.0", + "fast-glob": "^3.3.2", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "mlly": "^1.4.2", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "scule": "^1.1.1", + "strip-literal": "^1.3.0", + "unplugin": "^1.5.1" + } + }, + "node_modules/@nuxt/schema": { + "version": "3.8.2", + "resolved": "https://registry.npmmirror.com/@nuxt/schema/-/schema-3.8.2.tgz", + "integrity": "sha512-AMpysQ/wHK2sOujLShqYdC4OSj/S3fFJGjhYXqA2g6dgmz+FNQWJRG/ie5sI9r2EX9Ela1wt0GN1jZR3wYNE8Q==", + "dev": true, + "dependencies": { + "@nuxt/ui-templates": "^1.3.1", + "consola": "^3.2.3", + "defu": "^6.1.3", + "hookable": "^5.5.3", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "scule": "^1.1.0", + "std-env": "^3.5.0", + "ufo": "^1.3.2", + "unimport": "^3.5.0", + "untyped": "^1.4.0" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/@nuxt/schema/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@nuxt/schema/node_modules/local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "dev": true, + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nuxt/schema/node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@nuxt/schema/node_modules/unimport": { + "version": "3.6.1", + "resolved": "https://registry.npmmirror.com/unimport/-/unimport-3.6.1.tgz", + "integrity": "sha512-zKzbp8AQ+l8QK3XrONtUBdgBbMI8TkGh8hBYF77ZkVqMLLIAHwGSwJRFolPQMBx/5pezeRKvmu2gzlqnxRZeqQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.1.0", + "escape-string-regexp": "^5.0.0", + "fast-glob": "^3.3.2", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "mlly": "^1.4.2", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "scule": "^1.1.1", + "strip-literal": "^1.3.0", + "unplugin": "^1.5.1" + } + }, + "node_modules/@nuxt/ui-templates": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/@nuxt/ui-templates/-/ui-templates-1.3.1.tgz", + "integrity": "sha512-5gc02Pu1HycOVUWJ8aYsWeeXcSTPe8iX8+KIrhyEtEoOSkY0eMBuo0ssljB8wALuEmepv31DlYe5gpiRwkjESA==", + "dev": true + }, + "node_modules/@popperjs/core": { + "name": "@sxzz/popperjs-es", + "version": "2.11.7", + "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", + "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==" + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz", + "integrity": "sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@tailwindcss/line-clamp": { + "version": "0.4.2", + "resolved": "https://registry.npmmirror.com/@tailwindcss/line-clamp/-/line-clamp-0.4.2.tgz", + "integrity": "sha512-HFzAQuqYCjyy/SX9sLGB1lroPzmcnWv1FHkIpmypte10hptf4oPUfucryMKovZh2u0uiS9U5Ty3GghWfEJGwVw==", + "dev": true, + "peerDependencies": { + "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1" + } + }, + "node_modules/@transloadit/prettier-bytes": { + "version": "0.0.7", + "resolved": "https://registry.npmmirror.com/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz", + "integrity": "sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==" + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmmirror.com/@types/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ==" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmmirror.com/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.14.202", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.6", + "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz", + "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/node": { + "version": "20.10.5", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/qrcode": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@types/qrcode/-/qrcode-1.5.0.tgz", + "integrity": "sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmmirror.com/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, + "node_modules/@types/sortablejs": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/@types/sortablejs/-/sortablejs-1.15.0.tgz", + "integrity": "sha512-qrhtM7M41EhH4tZQTNw2/RJkxllBx3reiJpTbgWCM2Dx0U1sZ6LwKp9lfNln9uqE26ZMKUaPEYaD4rzvOWYtZw==", + "dev": true + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.16", + "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.53.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.53.0.tgz", + "integrity": "sha512-alFpFWNucPLdUOySmXCJpzr6HKC3bu7XooShWM+3w/EL6J2HIoB2PFxpLnq4JauWVk6DiVeNKzQlFEaE+X9sGw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.53.0", + "@typescript-eslint/type-utils": "5.53.0", + "@typescript-eslint/utils": "5.53.0", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "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" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.53.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.53.0.tgz", + "integrity": "sha512-Opy3dqNsp/9kBBeCPhkCNR7fmdSQqA+47r21hr9a14Bx0xnkElEQmhoHga+VoaoQ6uDHjDKmQPIYcUcKJifS7w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.53.0", + "@typescript-eslint/visitor-keys": "5.53.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": { + "version": "5.53.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.53.0.tgz", + "integrity": "sha512-5kcDL9ZUIP756K6+QOAfPkigJmCPHcLN7Zjdz76lQWWDdzfOhZDTj1irs6gPBKiXx5/6O3L0+AvupAut3z7D2A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.53.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.53.0.tgz", + "integrity": "sha512-HO2hh0fmtqNLzTAme/KnND5uFNwbsdYhCZghK2SoxGp3Ifn2emv+hi0PBUjzzSh0dstUIFqOj3bp0AwQlK4OWw==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.53.0", + "@typescript-eslint/utils": "5.53.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "5.53.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.53.0.tgz", + "integrity": "sha512-5kcDL9ZUIP756K6+QOAfPkigJmCPHcLN7Zjdz76lQWWDdzfOhZDTj1irs6gPBKiXx5/6O3L0+AvupAut3z7D2A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.53.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.53.0.tgz", + "integrity": "sha512-eKmipH7QyScpHSkhbptBBYh9v8FxtngLquq292YTEQ1pxVs39yFBlLC1xeIZcPPz1RWGqb7YgERJRGkjw8ZV7w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.53.0", + "@typescript-eslint/visitor-keys": "5.53.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.53.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.53.0.tgz", + "integrity": "sha512-VUOOtPv27UNWLxFwQK/8+7kvxVC+hPHNsJjzlJyotlaHjLSIgOCKj9I0DBUjwOOA64qjBwx5afAPjksqOxMO0g==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.53.0", + "@typescript-eslint/types": "5.53.0", + "@typescript-eslint/typescript-estree": "5.53.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "5.53.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.53.0.tgz", + "integrity": "sha512-5kcDL9ZUIP756K6+QOAfPkigJmCPHcLN7Zjdz76lQWWDdzfOhZDTj1irs6gPBKiXx5/6O3L0+AvupAut3z7D2A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.53.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.53.0.tgz", + "integrity": "sha512-eKmipH7QyScpHSkhbptBBYh9v8FxtngLquq292YTEQ1pxVs39yFBlLC1xeIZcPPz1RWGqb7YgERJRGkjw8ZV7w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.53.0", + "@typescript-eslint/visitor-keys": "5.53.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.53.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.53.0.tgz", + "integrity": "sha512-JqNLnX3leaHFZEN0gCh81sIvgrp/2GOACZNgO4+Tkf64u51kTpAyWFOY8XHx8XuXr3N2C9zgPPHtcpMg6z1g0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.53.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": { + "version": "5.53.0", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.53.0.tgz", + "integrity": "sha512-5kcDL9ZUIP756K6+QOAfPkigJmCPHcLN7Zjdz76lQWWDdzfOhZDTj1irs6gPBKiXx5/6O3L0+AvupAut3z7D2A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@uppy/companion-client": { + "version": "2.2.2", + "resolved": "https://registry.npmmirror.com/@uppy/companion-client/-/companion-client-2.2.2.tgz", + "integrity": "sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==", + "dependencies": { + "@uppy/utils": "^4.1.2", + "namespace-emitter": "^2.0.1" + } + }, + "node_modules/@uppy/core": { + "version": "2.3.4", + "resolved": "https://registry.npmmirror.com/@uppy/core/-/core-2.3.4.tgz", + "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.1.25", + "preact": "^10.5.13" + } + }, + "node_modules/@uppy/store-default": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/@uppy/store-default/-/store-default-2.1.1.tgz", + "integrity": "sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==" + }, + "node_modules/@uppy/utils": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/@uppy/utils/-/utils-4.1.3.tgz", + "integrity": "sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==", + "dependencies": { + "lodash.throttle": "^4.1.1" + } + }, + "node_modules/@uppy/xhr-upload": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz", + "integrity": "sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==", + "dependencies": { + "@uppy/companion-client": "^2.2.2", + "@uppy/utils": "^4.1.2", + "nanoid": "^3.1.25" + }, + "peerDependencies": { + "@uppy/core": "^2.3.3" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.0.0.tgz", + "integrity": "sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "1.0.24", + "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.0.24.tgz", + "integrity": "sha512-vTN+alJiWwK0Pax6POqrmevbtFW2dXhjwWiW/MW4f48eDYPLdyURWcr8TixO7EN/nHsUBj2udT7igFKPtjyAKg==", + "dev": true, + "dependencies": { + "@volar/source-map": "1.0.24", + "muggle-string": "^0.1.0" + } + }, + "node_modules/@volar/source-map": { + "version": "1.0.24", + "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.0.24.tgz", + "integrity": "sha512-Qsv/tkplx18pgBr8lKAbM1vcDqgkGKQzbChg6NW+v0CZc3G7FLmK+WrqEPzKlN7Cwdc6XVL559Nod8WKAfKr4A==", + "dev": true, + "dependencies": { + "muggle-string": "^0.1.0" + } + }, + "node_modules/@volar/typescript": { + "version": "1.0.24", + "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.0.24.tgz", + "integrity": "sha512-f8hCSk+PfKR1/RQHxZ79V1NpDImHoivqoizK+mstphm25tn/YJ/JnKNjZHB+o21fuW0yKlI26NV3jkVb2Cc/7A==", + "dev": true, + "dependencies": { + "@volar/language-core": "1.0.24" + } + }, + "node_modules/@volar/vue-language-core": { + "version": "1.0.24", + "resolved": "https://registry.npmmirror.com/@volar/vue-language-core/-/vue-language-core-1.0.24.tgz", + "integrity": "sha512-2NTJzSgrwKu6uYwPqLiTMuAzi7fAY3yFy5PJ255bGJc82If0Xr+cW8pC80vpjG0D/aVLmlwAdO4+Ya2BI8GdDg==", + "dev": true, + "dependencies": { + "@volar/language-core": "1.0.24", + "@volar/source-map": "1.0.24", + "@vue/compiler-dom": "^3.2.45", + "@vue/compiler-sfc": "^3.2.45", + "@vue/reactivity": "^3.2.45", + "@vue/shared": "^3.2.45", + "minimatch": "^5.1.1", + "vue-template-compiler": "^2.7.14" + } + }, + "node_modules/@volar/vue-language-core/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/@volar/vue-language-core/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@volar/vue-language-core/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@volar/vue-typescript": { + "version": "1.0.24", + "resolved": "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-1.0.24.tgz", + "integrity": "sha512-9a25oHDvGaNC0okRS47uqJI6FxY4hUQZUsxeOUFHcqVxZEv8s17LPuP/pMMXyz7jPygrZubB/qXqHY5jEu/akA==", + "deprecated": "WARNING: This project has been renamed to @vue/typescript. Install using @vue/typescript instead.", + "dev": true, + "dependencies": { + "@volar/typescript": "1.0.24", + "@volar/vue-language-core": "1.0.24" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.45.tgz", + "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz", + "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==", + "dependencies": { + "@vue/compiler-core": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz", + "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.45", + "@vue/compiler-dom": "3.2.45", + "@vue/compiler-ssr": "3.2.45", + "@vue/reactivity-transform": "3.2.45", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz", + "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==", + "dependencies": { + "@vue/compiler-dom": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.5.1", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.1.tgz", + "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" + }, + "node_modules/@vue/reactivity": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.45.tgz", + "integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==", + "dependencies": { + "@vue/shared": "3.2.45" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz", + "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.45", + "@vue/shared": "3.2.45", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "node_modules/@vue/reactivity-transform/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.45.tgz", + "integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==", + "dependencies": { + "@vue/reactivity": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz", + "integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==", + "dependencies": { + "@vue/runtime-core": "3.2.45", + "@vue/shared": "3.2.45", + "csstype": "^2.6.8" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.45.tgz", + "integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==", + "dependencies": { + "@vue/compiler-ssr": "3.2.45", + "@vue/shared": "3.2.45" + }, + "peerDependencies": { + "vue": "3.2.45" + } + }, + "node_modules/@vue/shared": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz", + "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==" + }, + "node_modules/@vueuse/core": { + "version": "9.12.0", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.12.0.tgz", + "integrity": "sha512-h/Di8Bvf6xRcvS/PvUVheiMYYz3U0tH3X25YxONSaAUBa841ayMwxkuzx/DGUMCW/wHWzD8tRy2zYmOC36r4sg==", + "dependencies": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.12.0", + "@vueuse/shared": "9.12.0", + "vue-demi": "*" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "9.12.0", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.12.0.tgz", + "integrity": "sha512-9oJ9MM9lFLlmvxXUqsR1wLt1uF7EVbP5iYaHJYqk+G2PbMjY6EXvZeTjbdO89HgoF5cI6z49o2zT/jD9SVoNpQ==" + }, + "node_modules/@vueuse/shared": { + "version": "9.12.0", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.12.0.tgz", + "integrity": "sha512-TWuJLACQ0BVithVTRbex4Wf1a1VaRuSpVeyEd4vMUWl54PzlE0ciFUshKCXnlLuD0lxIaLK4Ypj3NXYzZh4+SQ==", + "dependencies": { + "vue-demi": "*" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@wangeditor/basic-modules": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz", + "integrity": "sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==", + "dependencies": { + "is-url": "^1.2.4" + }, + "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" + } + }, + "node_modules/@wangeditor/code-highlight": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz", + "integrity": "sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==", + "dependencies": { + "prismjs": "^1.23.0" + }, + "peerDependencies": { + "@wangeditor/core": "1.x", + "dom7": "^3.0.0", + "slate": "^0.72.0", + "snabbdom": "^3.1.0" + } + }, + "node_modules/@wangeditor/core": { + "version": "1.1.19", + "resolved": "https://registry.npmmirror.com/@wangeditor/core/-/core-1.1.19.tgz", + "integrity": "sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==", + "dependencies": { + "@types/event-emitter": "^0.3.3", + "event-emitter": "^0.3.5", + "html-void-elements": "^2.0.0", + "i18next": "^20.4.0", + "scroll-into-view-if-needed": "^2.2.28", + "slate-history": "^0.66.0" + }, + "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" + } + }, + "node_modules/@wangeditor/editor": { + "version": "5.1.23", + "resolved": "https://registry.npmmirror.com/@wangeditor/editor/-/editor-5.1.23.tgz", + "integrity": "sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==", + "dependencies": { + "@uppy/core": "^2.1.1", + "@uppy/xhr-upload": "^2.0.3", + "@wangeditor/basic-modules": "^1.1.7", + "@wangeditor/code-highlight": "^1.0.3", + "@wangeditor/core": "^1.1.19", + "@wangeditor/list-module": "^1.0.5", + "@wangeditor/table-module": "^1.1.4", + "@wangeditor/upload-image-module": "^1.0.2", + "@wangeditor/video-module": "^1.1.4", + "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" + } + }, + "node_modules/@wangeditor/editor-for-vue": { + "version": "5.1.12", + "resolved": "https://registry.npmmirror.com/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz", + "integrity": "sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==", + "peerDependencies": { + "@wangeditor/editor": ">=5.1.0", + "vue": "^3.0.5" + } + }, + "node_modules/@wangeditor/list-module": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/@wangeditor/list-module/-/list-module-1.0.5.tgz", + "integrity": "sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==", + "peerDependencies": { + "@wangeditor/core": "1.x", + "dom7": "^3.0.0", + "slate": "^0.72.0", + "snabbdom": "^3.1.0" + } + }, + "node_modules/@wangeditor/table-module": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/@wangeditor/table-module/-/table-module-1.1.4.tgz", + "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" + } + }, + "node_modules/@wangeditor/upload-image-module": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz", + "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" + } + }, + "node_modules/@wangeditor/video-module": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/@wangeditor/video-module/-/video-module-1.1.4.tgz", + "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" + } + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "dependencies": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "node_modules/acorn-node/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ansi-styles/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmmirror.com/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + } + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmmirror.com/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/autoprefixer": { + "version": "10.4.13", + "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/axios": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-0.1.0.tgz", + "integrity": "sha512-4xb6XqAEo3Z+5pEDJz33R8BZXI8FRJU+cDNLdKgDpmnz+pKKRVYLpdv+VvUAC7yUhBMj4izmyt19eCGv1QGV7A==" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/brace-expansion/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.2", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/c12": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/c12/-/c12-1.5.1.tgz", + "integrity": "sha512-BWZRJgDEveT8uI+cliCwvYSSSSvb4xKoiiu5S0jaDbKBopQLQF7E+bq9xKk1pTcG+mUa3yXuFO7bD9d8Lr9Xxg==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.3", + "defu": "^6.1.2", + "dotenv": "^16.3.1", + "giget": "^1.1.3", + "jiti": "^1.20.0", + "mlly": "^1.4.2", + "ohash": "^1.1.3", + "pathe": "^1.1.1", + "perfect-debounce": "^1.0.0", + "pkg-types": "^1.0.3", + "rc9": "^2.1.1" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001571", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001571.tgz", + "integrity": "sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==", + "dev": true + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/clipboard": { + "version": "2.0.11", + "resolved": "https://registry.npmmirror.com/clipboard/-/clipboard-2.0.11.tgz", + "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "dependencies": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color": { + "version": "0.11.4", + "resolved": "https://registry.npmmirror.com/color/-/color-0.11.4.tgz", + "integrity": "sha512-Ajpjd8asqZ6EdxQeqGzU5WBhhTfJ/0cA4Wlbre7e5vXfmDSmda7Ov6jeKoru+b0vHcb1CqvuroTHp5zIWzhVMA==", + "dependencies": { + "clone": "^1.0.2", + "color-convert": "^1.3.0", + "color-string": "^0.3.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha512-sz29j1bmSDfoAxKIEU6zwoIZXN6BrFbAMIhfYCNyiZXBDuU/aiHlN84lp/xDzL2ubyFhLDobHIlU1X70XRrMDA==", + "dependencies": { + "color-name": "^1.0.0" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compute-scroll-into-view": { + "version": "1.0.20", + "resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz", + "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/consola": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, + "node_modules/css-color-function": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/css-color-function/-/css-color-function-1.3.3.tgz", + "integrity": "sha512-YD/WhiRZIYgadwFJ48X5QmlOQ/w8Me4yQI6/eSUoiE8spIFp+S/rGpsAH48iyq/0ZWkCDWqVQKUlQmUzn7BQ9w==", + "dependencies": { + "balanced-match": "0.1.0", + "color": "^0.11.0", + "debug": "^3.1.0", + "rgb": "~0.1.0" + } + }, + "node_modules/css-color-function/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/defined": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/defined/-/defined-1.0.1.tgz", + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", + "dev": true + }, + "node_modules/defu": { + "version": "6.1.3", + "resolved": "https://registry.npmmirror.com/defu/-/defu-6.1.3.tgz", + "integrity": "sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==", + "dev": true + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, + "node_modules/destr": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/destr/-/destr-2.0.2.tgz", + "integrity": "sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==", + "dev": true + }, + "node_modules/detective": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/detective/-/detective-5.2.1.tgz", + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", + "dev": true, + "dependencies": { + "acorn-node": "^1.8.2", + "defined": "^1.0.0", + "minimist": "^1.2.6" + }, + "bin": { + "detective": "bin/detective.js" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom7": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/dom7/-/dom7-3.0.0.tgz", + "integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==", + "dependencies": { + "ssr-window": "^3.0.0-alpha.1" + } + }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/echarts": { + "version": "5.4.1", + "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.1.tgz", + "integrity": "sha512-9ltS3M2JB0w2EhcYjCdmtrJ+6haZcW6acBolMGIuf01Hql1yrIV01L1aRj7jsaaIULJslEP9Z3vKlEmnJaWJVQ==", + "dependencies": { + "tslib": "2.3.0", + "zrender": "5.4.1" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.616", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.616.tgz", + "integrity": "sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==", + "dev": true + }, + "node_modules/element-plus": { + "version": "2.2.29", + "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.29.tgz", + "integrity": "sha512-g4dcrURrKkR5uUX8n5RVnnqGnimoki9HfqS4yHHG6XwCHBkZGozdq4x+478BzeWUe31h++BO+7dakSx4VnM8RQ==", + "dependencies": { + "@ctrl/tinycolor": "^3.4.1", + "@element-plus/icons-vue": "^2.0.6", + "@floating-ui/dom": "^1.0.1", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.14.182", + "@types/lodash-es": "^4.17.6", + "@vueuse/core": "^9.1.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.3", + "escape-html": "^1.0.3", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "lodash-unified": "^1.0.2", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, + "node_modules/es-abstract": { + "version": "1.22.3", + "resolved": "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/esbuild": { + "version": "0.16.17", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.16.17.tgz", + "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.16.17", + "@esbuild/android-arm64": "0.16.17", + "@esbuild/android-x64": "0.16.17", + "@esbuild/darwin-arm64": "0.16.17", + "@esbuild/darwin-x64": "0.16.17", + "@esbuild/freebsd-arm64": "0.16.17", + "@esbuild/freebsd-x64": "0.16.17", + "@esbuild/linux-arm": "0.16.17", + "@esbuild/linux-arm64": "0.16.17", + "@esbuild/linux-ia32": "0.16.17", + "@esbuild/linux-loong64": "0.16.17", + "@esbuild/linux-mips64el": "0.16.17", + "@esbuild/linux-ppc64": "0.16.17", + "@esbuild/linux-riscv64": "0.16.17", + "@esbuild/linux-s390x": "0.16.17", + "@esbuild/linux-x64": "0.16.17", + "@esbuild/netbsd-x64": "0.16.17", + "@esbuild/openbsd-x64": "0.16.17", + "@esbuild/sunos-x64": "0.16.17", + "@esbuild/win32-arm64": "0.16.17", + "@esbuild/win32-ia32": "0.16.17", + "@esbuild/win32-x64": "0.16.17" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint": { + "version": "8.34.0", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.34.0.tgz", + "integrity": "sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "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.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-config-standard": { + "version": "17.0.0", + "resolved": "https://registry.npmmirror.com/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", + "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", + "dev": true, + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0", + "eslint-plugin-promise": "^6.0.0" + } + }, + "node_modules/eslint-config-standard-with-typescript": { + "version": "34.0.0", + "resolved": "https://registry.npmmirror.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-34.0.0.tgz", + "integrity": "sha512-zhCsI4/A0rJ1ma8sf3RLXYc0gc7yPmdTWRVXMh9dtqeUx3yBQyALH0wosHhk1uQ9QyItynLdNOtcHKNw8G7lQw==", + "dev": true, + "dependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint-config-standard": "17.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0", + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0", + "eslint-plugin-promise": "^6.0.0", + "typescript": "*" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmmirror.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmmirror.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-es": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.27.5", + "resolved": "https://registry.npmmirror.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", + "has": "^1.0.3", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-n": { + "version": "15.6.1", + "resolved": "https://registry.npmmirror.com/eslint-plugin-n/-/eslint-plugin-n-15.6.1.tgz", + "integrity": "sha512-R9xw9OtCRxxaxaszTQmQAlPgM+RdGjaL1akWuY/Fv9fRAi8Wj4CUKc6iYVG8QNRjRuo8/BqVYIpfqberJUEacA==", + "dev": true, + "dependencies": { + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.11.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-promise": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", + "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.9.0", + "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.9.0.tgz", + "integrity": "sha512-YbubS7eK0J7DCf0U2LxvVP7LMfs6rC6UltihIgval3azO3gyDwEGVgsCMe1TmDiEkl6GdMKfRpaME6QxIYtzDQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^3.0.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^9.0.1", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmmirror.com/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.16.0", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmmirror.com/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/giget": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/giget/-/giget-1.1.3.tgz", + "integrity": "sha512-zHuCeqtfgqgDwvXlR84UNgnJDuUHQcNI5OqWqFxxuk2BshuKbYhJWdxBsEo4PvKqoGh23lUAIvBNpChMLv7/9Q==", + "dev": true, + "dependencies": { + "colorette": "^2.0.20", + "defu": "^6.1.2", + "https-proxy-agent": "^7.0.2", + "mri": "^1.2.0", + "node-fetch-native": "^1.4.0", + "pathe": "^1.1.1", + "tar": "^6.2.0" + }, + "bin": { + "giget": "dist/cli.mjs" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "dependencies": { + "delegate": "^3.1.2" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + } + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/highlight.js": { + "version": "11.0.1", + "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.0.1.tgz", + "integrity": "sha512-EqYpWyTF2s8nMfttfBA2yLKPNoZCO33pLS4MnbXQ4hECf1TKujCt1Kq7QAdrio7roL4+CqsfjqwYj4tYgq0pJQ==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/hls.js": { + "version": "1.4.14", + "resolved": "https://registry.npmmirror.com/hls.js/-/hls.js-1.4.14.tgz", + "integrity": "sha512-UppQjyvPVclg+6t2KY/Rv03h0+bA5u6zwqVoz4LAC/L0fgYmIaCD7ZCrwe8WI1Gv01be1XL0QFsRbSdIHV/Wbw==" + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmmirror.com/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true + }, + "node_modules/html-void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-2.0.1.tgz", + "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==" + }, + "node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/i18next": { + "version": "20.6.1", + "resolved": "https://registry.npmmirror.com/i18next/-/i18next-20.6.1.tgz", + "integrity": "sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==", + "dependencies": { + "@babel/runtime": "^7.12.0" + } + }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmmirror.com/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==" + }, + "node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hotkey": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/is-hotkey/-/is-hotkey-0.2.0.tgz", + "integrity": "sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==" + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmmirror.com/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-sdsl": { + "version": "4.4.2", + "resolved": "https://registry.npmmirror.com/js-sdsl/-/js-sdsl-4.4.2.tgz", + "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/knitwork": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/knitwork/-/knitwork-1.0.0.tgz", + "integrity": "sha512-dWl0Dbjm6Xm+kDxhPQJsCBTxrJzuGl0aP9rhr+TG8D3l+GL90N8O8lYUi7dTSAN2uuDqCtNgb6aEuQH5wsiV8Q==", + "dev": true + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash-unified": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz", + "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", + "peerDependencies": { + "@types/lodash-es": "*", + "lodash": "*", + "lodash-es": "*" + } + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + }, + "node_modules/lodash.toarray": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "integrity": "sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/mime-match/-/mime-match-1.0.2.tgz", + "integrity": "sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==", + "dependencies": { + "wildcard": "^1.1.0" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mlly": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/mlly/-/mlly-1.4.2.tgz", + "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==", + "dev": true, + "dependencies": { + "acorn": "^8.10.0", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "ufo": "^1.3.0" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/muggle-string": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.1.0.tgz", + "integrity": "sha512-Tr1knR3d2mKvvWthlk7202rywKbiOm4rVFLsfAaSIhJ6dt9o47W4S+JMtWhd/PW9Wrdew2/S2fSvhz3E2gkfEg==", + "dev": true + }, + "node_modules/namespace-emitter": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/namespace-emitter/-/namespace-emitter-2.0.1.tgz", + "integrity": "sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node_modules/node-fetch-native": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/node-fetch-native/-/node-fetch-native-1.4.1.tgz", + "integrity": "sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ohash": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/ohash/-/ohash-1.1.3.tgz", + "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "dev": true + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinia": { + "version": "2.0.30", + "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.0.30.tgz", + "integrity": "sha512-q6DUmxWwe/mQgg+55QQjykpKC+aGeGdaJV3niminl19V08dE+LRTvSEuqi6/NLSGCKHI49KGL6tMNEOssFiMyA==", + "dependencies": { + "@vue/devtools-api": "^6.4.5", + "vue-demi": "*" + }, + "peerDependencies": { + "@vue/composition-api": "^1.4.0", + "typescript": ">=4.4.4", + "vue": "^2.6.14 || ^3.2.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + } + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "14.1.0", + "resolved": "https://registry.npmmirror.com/postcss-import/-/postcss-import-14.1.0.tgz", + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/postcss-nested/-/postcss-nested-6.0.0.tgz", + "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/preact": { + "version": "10.19.3", + "resolved": "https://registry.npmmirror.com/preact/-/preact-10.19.3.tgz", + "integrity": "sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmmirror.com/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.1.tgz", + "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==", + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/rc9": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/rc9/-/rc9-2.1.1.tgz", + "integrity": "sha512-lNeOl38Ws0eNxpO3+wD1I9rkHGQyj1NU1jlzv4go2CtEnEQEUfqnIvZG7W+bC/aXdJ27n5x/yUjb6RoT9tko+Q==", + "dev": true, + "dependencies": { + "defu": "^6.1.2", + "destr": "^2.0.0", + "flat": "^5.0.2" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rgb": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/rgb/-/rgb-0.1.0.tgz", + "integrity": "sha512-F49dXX73a92N09uQkfCp2QjwXpmJcn9/i9PvjmwsSIXUGqRLCf/yx5Q9gRxuLQTq248kakqQuc8GX/U/CxSqlA==", + "bin": { + "rgb": "bin/rgb" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "node_modules/sass": { + "version": "1.58.0", + "resolved": "https://registry.npmmirror.com/sass/-/sass-1.58.0.tgz", + "integrity": "sha512-PiMJcP33DdKtZ/1jSjjqVIKihoDc6yWmYr9K/4r3fVVIEDAluD0q7XZiRKrNJcPK3qkLRF/79DND1H5q1LBjgg==", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/scroll-into-view-if-needed": { + "version": "2.2.31", + "resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz", + "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==", + "dependencies": { + "compute-scroll-into-view": "^1.0.20" + } + }, + "node_modules/scule": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/scule/-/scule-1.1.1.tgz", + "integrity": "sha512-sHtm/SsIK9BUBI3EFT/Gnp9VoKfY6QLvlkvAE6YK7454IF8FSgJEAnJpVdSC7K5/pjI5NfxhzBLW2JAfYA/shQ==", + "dev": true + }, + "node_modules/select": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slate": { + "version": "0.72.8", + "resolved": "https://registry.npmmirror.com/slate/-/slate-0.72.8.tgz", + "integrity": "sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==", + "dependencies": { + "immer": "^9.0.6", + "is-plain-object": "^5.0.0", + "tiny-warning": "^1.0.3" + } + }, + "node_modules/slate-history": { + "version": "0.66.0", + "resolved": "https://registry.npmmirror.com/slate-history/-/slate-history-0.66.0.tgz", + "integrity": "sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==", + "dependencies": { + "is-plain-object": "^5.0.0" + }, + "peerDependencies": { + "slate": ">=0.65.3" + } + }, + "node_modules/snabbdom": { + "version": "3.5.1", + "resolved": "https://registry.npmmirror.com/snabbdom/-/snabbdom-3.5.1.tgz", + "integrity": "sha512-wHMNIOjkm/YNE5EM3RCbr/+DVgPg6AqQAX1eOxO46zYNvCXjKP5Y865tqQj3EXnaMBjkxmQA5jFuDpDK/dbfiA==", + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/sortablejs": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz", + "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead" + }, + "node_modules/ssr-window": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-3.0.0.tgz", + "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==" + }, + "node_modules/std-env": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/std-env/-/std-env-3.6.0.tgz", + "integrity": "sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-literal": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/strip-literal/-/strip-literal-1.3.0.tgz", + "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "dev": true, + "dependencies": { + "acorn": "^8.10.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/tailwindcss": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/tailwindcss/-/tailwindcss-3.2.4.tgz", + "integrity": "sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==", + "dev": true, + "dependencies": { + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "color-name": "^1.1.4", + "detective": "^5.2.1", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.12", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "lilconfig": "^2.0.6", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.18", + "postcss-import": "^14.1.0", + "postcss-js": "^4.0.0", + "postcss-load-config": "^3.1.4", + "postcss-nested": "6.0.0", + "postcss-selector-parser": "^6.0.10", + "postcss-value-parser": "^4.2.0", + "quick-lru": "^5.1.1", + "resolve": "^1.22.1" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/tailwindcss/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/tar": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/throttle-debounce": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz", + "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmmirror.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "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" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ufo": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.3.2.tgz", + "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==", + "dev": true + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "node_modules/unctx": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/unctx/-/unctx-2.3.1.tgz", + "integrity": "sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A==", + "dev": true, + "dependencies": { + "acorn": "^8.8.2", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.0", + "unplugin": "^1.3.1" + } + }, + "node_modules/unctx/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/unctx/node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/unimport": { + "version": "2.2.4", + "resolved": "https://registry.npmmirror.com/unimport/-/unimport-2.2.4.tgz", + "integrity": "sha512-qMgmeEGqqrrmEtm0dqxMG37J6xBtrriqxq9hILvDb+e6l2F0yTnJomLoCCp0eghLR7bYGeBsUU5Y0oyiUYhViw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.2", + "escape-string-regexp": "^5.0.0", + "fast-glob": "^3.2.12", + "local-pkg": "^0.4.3", + "magic-string": "^0.27.0", + "mlly": "^1.1.0", + "pathe": "^1.1.0", + "pkg-types": "^1.0.1", + "scule": "^1.0.0", + "strip-literal": "^1.0.0", + "unplugin": "^1.0.1" + } + }, + "node_modules/unimport/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/unplugin": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-1.5.1.tgz", + "integrity": "sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew==", + "dev": true, + "dependencies": { + "acorn": "^8.11.2", + "chokidar": "^3.5.3", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.6.0" + } + }, + "node_modules/unplugin-auto-import": { + "version": "0.13.0", + "resolved": "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.13.0.tgz", + "integrity": "sha512-nKMxDbkjM4FRPInFfm7sWrJOKgxfKKwb5yLPP+DEGl/SG0/FtBoW1LnZL4PQfx0FXjertoHO1P/5nDf+RSip2Q==", + "dev": true, + "dependencies": { + "@antfu/utils": "^0.7.2", + "@rollup/pluginutils": "^5.0.2", + "local-pkg": "^0.4.3", + "magic-string": "^0.27.0", + "unimport": "^2.1.0", + "unplugin": "^1.0.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@vueuse/core": "*" + }, + "peerDependenciesMeta": { + "@vueuse/core": { + "optional": true + } + } + }, + "node_modules/unplugin-vue-components": { + "version": "0.23.0", + "resolved": "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.23.0.tgz", + "integrity": "sha512-JAJ+BGvjHvi9P7lICwOzDx2Av+OcI6ZTzvySmjXDNGCNVPrt2NQQmbcp7cW027CR1mRugIX5G//awm3doHyqkg==", + "dev": true, + "dependencies": { + "@antfu/utils": "^0.7.2", + "@nuxt/kit": "^3.1.1", + "@rollup/pluginutils": "^5.0.2", + "chokidar": "^3.5.3", + "debug": "^4.3.4", + "fast-glob": "^3.2.12", + "local-pkg": "^0.4.3", + "magic-string": "^0.27.0", + "minimatch": "^6.1.6", + "resolve": "^1.22.1", + "unplugin": "^1.0.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@babel/parser": "^7.15.8", + "vue": "2 || 3" + }, + "peerDependenciesMeta": { + "@babel/parser": { + "optional": true + } + } + }, + "node_modules/unplugin-vue-components/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/unplugin-vue-components/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/unplugin-vue-components/node_modules/minimatch": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-6.2.0.tgz", + "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/untyped": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/untyped/-/untyped-1.4.0.tgz", + "integrity": "sha512-Egkr/s4zcMTEuulcIb7dgURS6QpN7DyqQYdf+jBtiaJvQ+eRsrtWUoX84SbvQWuLkXsOjM+8sJC9u6KoMK/U7Q==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.9", + "@babel/standalone": "^7.22.9", + "@babel/types": "^7.22.5", + "defu": "^6.1.2", + "jiti": "^1.19.1", + "mri": "^1.2.0", + "scule": "^1.0.0" + }, + "bin": { + "untyped": "dist/cli.mjs" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/vite": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/vite/-/vite-4.1.0.tgz", + "integrity": "sha512-YoUKE/9bbK4C8ZeSYMDDEF8H5aypmWUq4WisftDhntR1gkI2zt2SGT/5Wd2xu6ZoVXkCyO3U4844KWG9e4nFoQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.16.14", + "postcss": "^8.4.21", + "resolve": "^1.22.1", + "rollup": "^3.10.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "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 + } + } + }, + "node_modules/vue": { + "version": "3.2.45", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.45.tgz", + "integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==", + "dependencies": { + "@vue/compiler-dom": "3.2.45", + "@vue/compiler-sfc": "3.2.45", + "@vue/runtime-dom": "3.2.45", + "@vue/server-renderer": "3.2.45", + "@vue/shared": "3.2.45" + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.3.2", + "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz", + "integrity": "sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/vue-i18n": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.2.2.tgz", + "integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==", + "dependencies": { + "@intlify/core-base": "9.2.2", + "@intlify/shared": "9.2.2", + "@intlify/vue-devtools": "9.2.2", + "@vue/devtools-api": "^6.2.1" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-json-viewer": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/vue-json-viewer/-/vue-json-viewer-3.0.4.tgz", + "integrity": "sha512-pnC080rTub6YjccthVSNQod2z9Sl5IUUq46srXtn6rxwhW8QM4rlYn+CTSLFKXWfw+N3xv77Cioxw7B4XUKIbQ==", + "dependencies": { + "clipboard": "^2.0.4" + }, + "peerDependencies": { + "vue": "^3.2.2" + } + }, + "node_modules/vue-jsonp": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/vue-jsonp/-/vue-jsonp-2.0.0.tgz", + "integrity": "sha512-Mzd9GNeuKP5hHFDWZNMWOsCuMILSkA6jo2l4A02wheFz3qqBzH7aSEFTey1BRCZCLizlaf1EqJ5YUtF392KspA==" + }, + "node_modules/vue-router": { + "version": "4.1.6", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.1.6.tgz", + "integrity": "sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==", + "dependencies": { + "@vue/devtools-api": "^6.4.5" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.7.15", + "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.15.tgz", + "integrity": "sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "1.0.24", + "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.0.24.tgz", + "integrity": "sha512-mmU1s5SAqE1nByQAiQnao9oU4vX+mSdsgI8H57SfKH6UVzq/jP9+Dbi2GaV+0b4Cn361d2ln8m6xeU60ApiEXg==", + "dev": true, + "dependencies": { + "@volar/vue-language-core": "1.0.24", + "@volar/vue-typescript": "1.0.24" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/vue-web-terminal": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/vue-web-terminal/-/vue-web-terminal-3.2.2.tgz", + "integrity": "sha512-TaUvqF5F2mfsbvuVw7kCcjd4IXlrPJDU17kDdS1PCuVcsw/qdAfjoDirJhKy3JtzM4A6E4WrgUO7BnXwrKEBeg==", + "dependencies": { + "vue": "^3.3.4", + "vue-json-viewer": "^3.0.4" + } + }, + "node_modules/vue-web-terminal/node_modules/@vue/compiler-core": { + "version": "3.3.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.13.tgz", + "integrity": "sha512-bwi9HShGu7uaZLOErZgsH2+ojsEdsjerbf2cMXPwmvcgZfVPZ2BVZzCVnwZBxTAYd6Mzbmf6izcUNDkWnBBQ6A==", + "dependencies": { + "@babel/parser": "^7.23.5", + "@vue/shared": "3.3.13", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/vue-web-terminal/node_modules/@vue/compiler-dom": { + "version": "3.3.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.13.tgz", + "integrity": "sha512-EYRDpbLadGtNL0Gph+HoKiYqXLqZ0xSSpR5Dvnu/Ep7ggaCbjRDIus1MMxTS2Qm0koXED4xSlvTZaTnI8cYAsw==", + "dependencies": { + "@vue/compiler-core": "3.3.13", + "@vue/shared": "3.3.13" + } + }, + "node_modules/vue-web-terminal/node_modules/@vue/compiler-sfc": { + "version": "3.3.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.13.tgz", + "integrity": "sha512-DQVmHEy/EKIgggvnGRLx21hSqnr1smUS9Aq8tfxiiot8UR0/pXKHN9k78/qQ7etyQTFj5em5nruODON7dBeumw==", + "dependencies": { + "@babel/parser": "^7.23.5", + "@vue/compiler-core": "3.3.13", + "@vue/compiler-dom": "3.3.13", + "@vue/compiler-ssr": "3.3.13", + "@vue/reactivity-transform": "3.3.13", + "@vue/shared": "3.3.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5", + "postcss": "^8.4.32", + "source-map-js": "^1.0.2" + } + }, + "node_modules/vue-web-terminal/node_modules/@vue/compiler-ssr": { + "version": "3.3.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.13.tgz", + "integrity": "sha512-d/P3bCeUGmkJNS1QUZSAvoCIW4fkOKK3l2deE7zrp0ypJEy+En2AcypIkqvcFQOcw3F0zt2VfMvNsA9JmExTaw==", + "dependencies": { + "@vue/compiler-dom": "3.3.13", + "@vue/shared": "3.3.13" + } + }, + "node_modules/vue-web-terminal/node_modules/@vue/reactivity": { + "version": "3.3.13", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.13.tgz", + "integrity": "sha512-fjzCxceMahHhi4AxUBzQqqVhuA21RJ0COaWTbIBl1PruGW1CeY97louZzLi4smpYx+CHfFPPU/CS8NybbGvPKQ==", + "dependencies": { + "@vue/shared": "3.3.13" + } + }, + "node_modules/vue-web-terminal/node_modules/@vue/reactivity-transform": { + "version": "3.3.13", + "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.13.tgz", + "integrity": "sha512-oWnydGH0bBauhXvh5KXUy61xr9gKaMbtsMHk40IK9M4gMuKPJ342tKFarY0eQ6jef8906m35q37wwA8DMZOm5Q==", + "dependencies": { + "@babel/parser": "^7.23.5", + "@vue/compiler-core": "3.3.13", + "@vue/shared": "3.3.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5" + } + }, + "node_modules/vue-web-terminal/node_modules/@vue/runtime-core": { + "version": "3.3.13", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.13.tgz", + "integrity": "sha512-1TzA5TvGuh2zUwMJgdfvrBABWZ7y8kBwBhm7BXk8rvdx2SsgcGfz2ruv2GzuGZNvL1aKnK8CQMV/jFOrxNQUMA==", + "dependencies": { + "@vue/reactivity": "3.3.13", + "@vue/shared": "3.3.13" + } + }, + "node_modules/vue-web-terminal/node_modules/@vue/runtime-dom": { + "version": "3.3.13", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.13.tgz", + "integrity": "sha512-JJkpE8R/hJKXqVTgUoODwS5wqKtOsmJPEqmp90PDVGygtJ4C0PtOkcEYXwhiVEmef6xeXcIlrT3Yo5aQ4qkHhQ==", + "dependencies": { + "@vue/runtime-core": "3.3.13", + "@vue/shared": "3.3.13", + "csstype": "^3.1.3" + } + }, + "node_modules/vue-web-terminal/node_modules/@vue/server-renderer": { + "version": "3.3.13", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.13.tgz", + "integrity": "sha512-vSnN+nuf6iSqTL3Qgx/9A+BT+0Zf/VJOgF5uMZrKjYPs38GMYyAU1coDyBNHauehXDaP+zl73VhwWv0vBRBHcg==", + "dependencies": { + "@vue/compiler-ssr": "3.3.13", + "@vue/shared": "3.3.13" + }, + "peerDependencies": { + "vue": "3.3.13" + } + }, + "node_modules/vue-web-terminal/node_modules/@vue/shared": { + "version": "3.3.13", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.13.tgz", + "integrity": "sha512-/zYUwiHD8j7gKx2argXEMCUXVST6q/21DFU0sTfNX0URJroCe3b1UF6vLJ3lQDfLNIiiRl2ONp7Nh5UVWS6QnA==" + }, + "node_modules/vue-web-terminal/node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/vue-web-terminal/node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/vue-web-terminal/node_modules/postcss": { + "version": "8.4.32", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/vue-web-terminal/node_modules/vue": { + "version": "3.3.13", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.3.13.tgz", + "integrity": "sha512-LDnUpQvDgsfc0u/YgtAgTMXJlJQqjkxW1PVcOnJA5cshPleULDjHi7U45pl2VJYazSSvLH8UKcid/kzH8I0a0Q==", + "dependencies": { + "@vue/compiler-dom": "3.3.13", + "@vue/compiler-sfc": "3.3.13", + "@vue/runtime-dom": "3.3.13", + "@vue/server-renderer": "3.3.13", + "@vue/shared": "3.3.13" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue3-video-play": { + "version": "1.3.1-beta.6", + "resolved": "https://registry.npmmirror.com/vue3-video-play/-/vue3-video-play-1.3.1-beta.6.tgz", + "integrity": "sha512-Olrx2/LNAds7fuor/yX9ZKT9sOcwcfTt2g2YbbCrEaAmZ5Tb0hwBr5z+/CoLwELzzRzXCHPmWWoT0Wm5W/Nwpw==", + "dependencies": { + "hls.js": "^1.0.10", + "throttle-debounce": "^3.0.1", + "vue": "^3.2.2" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz", + "integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/wildcard": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-1.1.2.tgz", + "integrity": "sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==" + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/zrender": { + "version": "5.4.1", + "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.4.1.tgz", + "integrity": "sha512-M4Z05BHWtajY2241EmMPHglDQAJ1UyHQcYsxDNzD9XLSkPDqMq4bB28v9Pb4mvHnVQ0GxyTklZ/69xCFP6RXBA==", + "dependencies": { + "tslib": "2.3.0" + } + } + } +} diff --git a/admin/package.json b/admin/package.json new file mode 100644 index 0000000..c459ef0 --- /dev/null +++ b/admin/package.json @@ -0,0 +1,58 @@ +{ + "name": "admin", + "private": true, + "version": "1.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build && node publish.cjs", + "preview": "vite preview" + }, + "dependencies": { + "@element-plus/icons-vue": "2.0.10", + "@highlightjs/vue-plugin": "2.1.0", + "@vueuse/core": "9.12.0", + "@wangeditor/editor": "5.1.23", + "@wangeditor/editor-for-vue": "5.1.12", + "@types/lodash-es": "4.17.6", + "axios": "1.4.0", + "crypto-js": "4.1.1", + "css-color-function": "1.3.3", + "echarts": "5.4.1", + "element-plus": "2.2.29", + "nprogress": "0.2.0", + "pinia": "2.0.30", + "qrcode": "1.5.1", + "sass": "1.58.0", + "sortablejs": "1.15.0", + "vue": "3.2.45", + "vue-i18n": "9.2.2", + "vue-router": "4.1.6", + "vue-web-terminal": "3.2.2", + "vue3-video-play": "1.3.1-beta.6", + "vue-jsonp": "2.0.0", + "lodash-es": "4.17.21", + "highlight.js": "11.0.1" + }, + "devDependencies": { + "@tailwindcss/line-clamp": "0.4.2", + "@types/qrcode": "1.5.0", + "@types/sortablejs": "1.15.0", + "@typescript-eslint/eslint-plugin": "5.53.0", + "@vitejs/plugin-vue": "4.0.0", + "autoprefixer": "10.4.13", + "eslint": "8.34.0", + "eslint-config-standard-with-typescript": "34.0.0", + "eslint-plugin-import": "2.27.5", + "eslint-plugin-n": "15.6.1", + "eslint-plugin-promise": "6.1.1", + "eslint-plugin-vue": "9.9.0", + "postcss": "8.4.21", + "tailwindcss": "3.2.4", + "typescript": "4.9.5", + "unplugin-auto-import": "0.13.0", + "unplugin-vue-components": "0.23.0", + "vite": "4.1.0", + "vue-tsc": "1.0.24" + } +} \ No newline at end of file diff --git a/admin/postcss.config.cjs b/admin/postcss.config.cjs new file mode 100644 index 0000000..787a42d --- /dev/null +++ b/admin/postcss.config.cjs @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {} + } +} \ No newline at end of file diff --git a/admin/public/niucloud.ico b/admin/public/niucloud.ico new file mode 100644 index 0000000..d770505 Binary files /dev/null and b/admin/public/niucloud.ico differ diff --git a/admin/publish.cjs b/admin/publish.cjs new file mode 100644 index 0000000..16fe5ed --- /dev/null +++ b/admin/publish.cjs @@ -0,0 +1,39 @@ +const fs = require('fs') + +const publish = () => { + const src = './dist' + const dest = '../niucloud/public/admin' + + solve() + + // 目标目录不存在停止复制 + try { + const dir = fs.readdirSync(dest) + } catch (e) { + return + } + + // 删除目标目录下文件 + fs.rm(dest, { recursive: true }, err => { + if(err) { + console.log(err) + return + } + + fs.cp(src, dest, { recursive: true }, (err) => { + if (err) { + console.error(err) + } + }) + }) +} + +const solve = () => { + const fn = './dist/index.html' + const fc = fs.readFileSync(fn, 'utf-8') + let text = new String(fc) + text = text.replaceAll('./assets/', '/admin/assets/') + fs.writeFileSync(fn, text, 'utf8') +} + +publish() diff --git a/admin/src/App.vue b/admin/src/App.vue new file mode 100644 index 0000000..b3376de --- /dev/null +++ b/admin/src/App.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/admin/src/addon/hygl/api/advertising.ts b/admin/src/addon/hygl/api/advertising.ts new file mode 100644 index 0000000..534076e --- /dev/null +++ b/admin/src/addon/hygl/api/advertising.ts @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// USER_CODE_BEGIN -- hygl_advertising +/** + * 获取广告管理列表 + * @param params + * @returns + */ +export function getAdvertisingList(params: Record) { + return request.get(`hygl/advertising`, {params}) +} + +/** + * 获取广告管理详情 + * @param id 广告管理id + * @returns + */ +export function getAdvertisingInfo(id: number) { + return request.get(`hygl/advertising/${id}`); +} + +/** + * 添加广告管理 + * @param params + * @returns + */ +export function addAdvertising(params: Record) { + return request.post('hygl/advertising', params, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 编辑广告管理 + * @param id + * @param params + * @returns + */ +export function editAdvertising(params: Record) { + return request.put(`hygl/advertising/${params.id}`, params, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 删除广告管理 + * @param id + * @returns + */ +export function deleteAdvertising(id: number) { + return request.delete(`hygl/advertising/${id}`, { showErrorMessage: true, showSuccessMessage: true }) +} + + + +// USER_CODE_END -- hygl_advertising diff --git a/admin/src/addon/hygl/api/common.ts b/admin/src/addon/hygl/api/common.ts new file mode 100644 index 0000000..ee0e107 --- /dev/null +++ b/admin/src/addon/hygl/api/common.ts @@ -0,0 +1,29 @@ +import request from '@/utils/request' + +// USER_CODE_BEGIN -- hygl_common +/** + * 上传文件到本地 + * @param params + * @returns + */ +export function uploadFile(params: FormData) { + let config = { + headers: { + "Content-Type": "multipart/form-data", + } + } + return request.post('hygl/uploadFile', params,config) +} + +/** + * 获取远程搜索优惠券下拉菜单 + * @param params + */ +export function getWithCouponsList(params: Record){ + return request.get('hygl/getCouponsList', {params}) +} + + + + +// USER_CODE_END -- hygl_common \ No newline at end of file diff --git a/admin/src/addon/hygl/api/config.ts b/admin/src/addon/hygl/api/config.ts new file mode 100644 index 0000000..395fded --- /dev/null +++ b/admin/src/addon/hygl/api/config.ts @@ -0,0 +1,60 @@ +import request from '@/utils/request' + +// USER_CODE_BEGIN -- hygl_config +/** + * 获取配置项列表 + * @param params + * @returns + */ +export function getConfigList(params: Record) { + return request.get(`hygl/config`, {params}) +} + +/** + * 获取配置项详情 + * @param id 配置项id + * @returns + */ +export function getConfigInfo(id: number) { + return request.get(`hygl/config/${id}`); +} + +/** + * 添加配置项 + * @param params + * @returns + */ +export function addConfig(params: Record) { + return request.post('hygl/config', params, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 编辑配置项 + * @param id + * @param params + * @returns + */ +export function editConfig(params: Record) { + return request.put(`hygl/config/${params.id}`, params, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 删除配置项 + * @param id + * @returns + */ +export function deleteConfig(id: number) { + return request.delete(`hygl/config/${id}`, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 重新生成H5站点二维码 + * @param id + */ +export function resetH5SiteQRCode(id: number) { + return request.get(`hygl/config/resetH5SiteQRCode/${id}`); +} + + + +// USER_CODE_END -- hygl_config diff --git a/admin/src/addon/hygl/api/coupons.ts b/admin/src/addon/hygl/api/coupons.ts new file mode 100644 index 0000000..106bfb1 --- /dev/null +++ b/admin/src/addon/hygl/api/coupons.ts @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// USER_CODE_BEGIN -- hygl_coupons +/** + * 获取优惠券列表 + * @param params + * @returns + */ +export function getCouponsList(params: Record) { + return request.get(`hygl/coupons`, {params}) +} + +/** + * 获取优惠券详情 + * @param id 优惠券id + * @returns + */ +export function getCouponsInfo(id: number) { + return request.get(`hygl/coupons/${id}`); +} + +/** + * 添加优惠券 + * @param params + * @returns + */ +export function addCoupons(params: Record) { + return request.post('hygl/coupons', params, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 编辑优惠券 + * @param id + * @param params + * @returns + */ +export function editCoupons(params: Record) { + return request.put(`hygl/coupons/${params.id}`, params, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 删除优惠券 + * @param id + * @returns + */ +export function deleteCoupons(id: number) { + return request.delete(`hygl/coupons/${id}`, { showErrorMessage: true, showSuccessMessage: true }) +} + + + +// USER_CODE_END -- hygl_coupons diff --git a/admin/src/addon/hygl/api/hello_world.ts b/admin/src/addon/hygl/api/hello_world.ts new file mode 100644 index 0000000..6a70487 --- /dev/null +++ b/admin/src/addon/hygl/api/hello_world.ts @@ -0,0 +1,7 @@ + +import request from '@/utils/request' + +/***************************************************** hello world ****************************************************/ +export function getHelloWorld() { + return request.get(`hygl/hello_world`) +} \ No newline at end of file diff --git a/admin/src/addon/hygl/api/transaction_history.ts b/admin/src/addon/hygl/api/transaction_history.ts new file mode 100644 index 0000000..0cbfd9b --- /dev/null +++ b/admin/src/addon/hygl/api/transaction_history.ts @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// USER_CODE_BEGIN -- hygl_transaction_history +/** + * 获取会员交易记录列表 + * @param params + * @returns + */ +export function getTransactionHistoryList(params: Record) { + return request.get(`hygl/transaction_history`, {params}) +} + +/** + * 获取会员交易记录详情 + * @param id 会员交易记录id + * @returns + */ +export function getTransactionHistoryInfo(id: number) { + return request.get(`hygl/transaction_history/${id}`); +} + +/** + * 添加会员交易记录 + * @param params + * @returns + */ +export function addTransactionHistory(params: Record) { + return request.post('hygl/transaction_history', params, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 编辑会员交易记录 + * @param id + * @param params + * @returns + */ +export function editTransactionHistory(params: Record) { + return request.put(`hygl/transaction_history/${params.id}`, params, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 删除会员交易记录 + * @param id + * @returns + */ +export function deleteTransactionHistory(id: number) { + return request.delete(`hygl/transaction_history/${id}`, { showErrorMessage: true, showSuccessMessage: true }) +} + + + +// USER_CODE_END -- hygl_transaction_history diff --git a/admin/src/addon/hygl/api/user.ts b/admin/src/addon/hygl/api/user.ts new file mode 100644 index 0000000..8300bc4 --- /dev/null +++ b/admin/src/addon/hygl/api/user.ts @@ -0,0 +1,61 @@ +import request from '@/utils/request' + +// USER_CODE_BEGIN -- hygl_user +/** + * 获取会员管理列表 + * @param params + * @returns + */ +export function getUserList(params: Record) { + return request.get(`hygl/user`, {params}) +} + +/** + * 获取会员管理详情 + * @param id 会员管理id + * @returns + */ +export function getUserInfo(id: number) { + return request.get(`hygl/user/${id}`); +} + +/** + * 添加会员管理 + * @param params + * @returns + */ +export function addUser(params: Record) { + return request.post('hygl/user', params, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 编辑会员管理 + * @param id + * @param params + * @returns + */ +export function editUser(params: Record) { + return request.put(`hygl/user/${params.id}`, params, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 删除会员管理 + * @param id + * @returns + */ +export function deleteUser(id: number) { + return request.delete(`hygl/user/${id}`, { showErrorMessage: true, showSuccessMessage: true }) +} + + +//获取全部站点 +export function getWithSiteList(params: Record) { + return request.get('hygl/site', {params}) +} + +//获取全部用户 +export function getWithUserList(params: Record) { + return request.get('hygl/user', {params}) +} + +// USER_CODE_END -- hygl_user \ No newline at end of file diff --git a/admin/src/addon/hygl/api/user_coupons.ts b/admin/src/addon/hygl/api/user_coupons.ts new file mode 100644 index 0000000..7fe8cda --- /dev/null +++ b/admin/src/addon/hygl/api/user_coupons.ts @@ -0,0 +1,54 @@ +import request from '@/utils/request' + +// USER_CODE_BEGIN -- hygl_user_coupons +/** + * 获取用户优惠券列表 + * @param params + * @returns + */ +export function getUserCouponsList(params: Record) { + return request.get(`hygl/user_coupons`, {params}) +} + +/** + * 获取用户优惠券详情 + * @param id 用户优惠券id + * @returns + */ +export function getUserCouponsInfo(id: number) { + return request.get(`hygl/user_coupons/${id}`); +} + +/** + * 添加用户优惠券 + * @param params + * @returns + */ +export function addUserCoupons(params: Record) { + return request.post('hygl/user_coupons', params, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 编辑用户优惠券 + * @param id + * @param params + * @returns + */ +export function editUserCoupons(params: Record) { + return request.put(`hygl/user_coupons/${params.id}`, params, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 删除用户优惠券 + * @param id + * @returns + */ +export function deleteUserCoupons(id: number) { + return request.delete(`hygl/user_coupons/${id}`, { showErrorMessage: true, showSuccessMessage: true }) +} + +export function getWithUserList(params: Record){ + return request.get('hygl/user', {params}) +} + +// USER_CODE_END -- hygl_user_coupons diff --git a/admin/src/addon/hygl/lang/zh-cn/advertising.advertising.json b/admin/src/addon/hygl/lang/zh-cn/advertising.advertising.json new file mode 100644 index 0000000..340b261 --- /dev/null +++ b/admin/src/addon/hygl/lang/zh-cn/advertising.advertising.json @@ -0,0 +1,17 @@ +{ + "id":"序号", + "siteId":"站点", + "siteIdPlaceholder":"请输入站点", + "imgUrl":"广告图", + "imgUrlPlaceholder":"请输入广告图", + "skipUrl":"跳转链接", + "skipUrlPlaceholder":"请输入跳转链接", + "sort":"排序", + "sortPlaceholder":"请输入排序", + "createTime":"创建时间", + "addAdvertising":"添加广告管理", + "updateAdvertising":"编辑广告管理", + "advertisingDeleteTips":"确定要删除该数据吗?", + "startDate":"请选择开始时间", + "endDate":"请选择结束时间" +} \ No newline at end of file diff --git a/admin/src/addon/hygl/lang/zh-cn/config.config.json b/admin/src/addon/hygl/lang/zh-cn/config.config.json new file mode 100644 index 0000000..3b95498 --- /dev/null +++ b/admin/src/addon/hygl/lang/zh-cn/config.config.json @@ -0,0 +1,33 @@ +{ + "id":"id", + "siteId":"站点id", + "siteIdPlaceholder":"请输入站点id", + "weChatPayAppid":"微信支付-APP的id", + "weChatPayAppidPlaceholder":"请输入微信支付-APP的id", + "weChatPayAppId":"微信支付-公众号APPID", + "weChatPayAppIdPlaceholder":"请输入微信支付-公众号APPID", + "weChatPayMiniappId":"微信支付-小程序APPID", + "weChatPayMiniappIdPlaceholder":"请输入微信支付-小程序APPID", + "weChatPayMchId":"微信支付-商户号", + "weChatPayMchIdPlaceholder":"请输入微信支付-商户号", + "weChatPayKey":"微信支付-商户号秘钥", + "weChatPayKeyPlaceholder":"请输入微信支付-商户号秘钥", + "weChatPayMiniappSecret":"微信支付-小程序secret", + "weChatPayMiniappSecretPlaceholder":"请输入微信支付-小程序secret", + "weChatPayNotifyUrl":"微信支付-异步回调地址", + "weChatPayNotifyUrlPlaceholder":"请输入微信支付-异步回调地址", + "alipayAppId":"支付宝-appid", + "alipayAppIdPlaceholder":"请输入支付宝-appid", + "alipayRsaPrivateKey":"支付宝-开发者私钥", + "alipayRsaPrivateKeyPlaceholder":"请输入支付宝-开发者私钥", + "alipayPublicKey":"支付宝-支付宝公钥", + "alipayPublicKeyPlaceholder":"请输入支付宝-支付宝公钥", + "alipayNotifyUrl":"支付宝-异步回调地址", + "alipayNotifyUrlPlaceholder":"请输入支付宝-异步回调地址", + "createTime":"创建时间", + "addConfig":"添加配置项", + "updateConfig":"编辑配置项", + "configDeleteTips":"确定要删除该数据吗?", + "startDate":"请选择开始时间", + "endDate":"请选择结束时间" +} \ No newline at end of file diff --git a/admin/src/addon/hygl/lang/zh-cn/coupons.coupons.json b/admin/src/addon/hygl/lang/zh-cn/coupons.coupons.json new file mode 100644 index 0000000..5feaf0c --- /dev/null +++ b/admin/src/addon/hygl/lang/zh-cn/coupons.coupons.json @@ -0,0 +1,26 @@ +{ + "id": "id", + "siteId": "站点id", + "siteIdPlaceholder": "请输入站点id", + "name": "卡券名字", + "namePlaceholder": "请输入卡券名字", + "nominalValue": "卡券面值", + "nominalValuePlaceholder": "请输入卡券面值", + "stock": "卡券库存", + "stockPlaceholder": "请输入卡券库存", + "isShow": "是否展示", + "isShowPlaceholder": "请输入是否展示", + "isLongTermValid": "是否长期有效", + "isLongTermValidPlaceholder": "请输入是否长期有效", + "createTime": "创建时间", + "addCoupons": "添加优惠券", + "updateCoupons": "编辑优惠券", + "couponsDeleteTips": "确定要删除该数据吗?", + "startDate": "请选择开始时间", + "endDate": "请选择结束时间", + "validFrom": "有效期开始时间", + "validUntil": "有效期截止时间", + "validTime": "有效期", + "isObsolete": "是否作废", + "isObsoletePlaceholder": "请输入是否作废" +} \ No newline at end of file diff --git a/admin/src/addon/hygl/lang/zh-cn/hello_world.index.json b/admin/src/addon/hygl/lang/zh-cn/hello_world.index.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/admin/src/addon/hygl/lang/zh-cn/hello_world.index.json @@ -0,0 +1 @@ +{} diff --git a/admin/src/addon/hygl/lang/zh-cn/transaction_history.transaction_history.json b/admin/src/addon/hygl/lang/zh-cn/transaction_history.transaction_history.json new file mode 100644 index 0000000..a2d96a2 --- /dev/null +++ b/admin/src/addon/hygl/lang/zh-cn/transaction_history.transaction_history.json @@ -0,0 +1,33 @@ +{ + "id":"序号", + "siteId":"站点id", + "siteIdPlaceholder":"请输入站点id", + "userId":"用户", + "userIdPlaceholder":"请输入用户", + "remark":"用户备注", + "remarkPlaceholder":"请输入用户备注", + "orderNum":"我方订单号", + "orderNumPlaceholder":"请输入我方订单号", + "payNum":"支付平台订单号", + "payNumPlaceholder":"请输入支付平台订单号", + "payType":"支付方式", + "payTypePlaceholder":"请输入支付方式", + "price":"订单应付金额(元)", + "pricePlaceholder":"请输入订单应付金额(元)", + "cashFee":"用户实际支付金额(元)", + "cashFeePlaceholder":"请输入用户实际支付金额(元)", + "payStatus":"是否完成支付", + "payStatusPlaceholder":"请输入是否完成支付", + "payTime":"用户付款时间", + "payTimePlaceholder":"请输入用户付款时间", + "payDataJson":"支付回调json字符串|默认null,支付成功后异步回调的值", + "payDataJsonPlaceholder":"请输入支付回调json字符串|默认null,支付成功后异步回调的值", + "createTime":"创建时间", + "createTimePlaceholder":"请输入创建时间", + "addTransactionHistory":"添加会员交易记录", + "updateTransactionHistory":"编辑会员交易记录", + "transactionHistoryDeleteTips":"确定要删除该数据吗?", + "startDate":"请选择开始时间", + "endDate":"请选择结束时间", + "couponsInfo":"优惠券使用" +} \ No newline at end of file diff --git a/admin/src/addon/hygl/lang/zh-cn/user.user.json b/admin/src/addon/hygl/lang/zh-cn/user.user.json new file mode 100644 index 0000000..f2b74e6 --- /dev/null +++ b/admin/src/addon/hygl/lang/zh-cn/user.user.json @@ -0,0 +1,34 @@ +{ + "id":"id", + "idPlaceholder":"请输入", + "siteId":"站点id", + "siteIdPlaceholder":"请输入站点id", + "tel":"联系电话", + "telPlaceholder":"请输入联系电话", + "name":"姓名", + "namePlaceholder":"请输入姓名", + "pic":"用户头像|相对路径", + "picPlaceholder":"请输入用户头像", + "password":"密码", + "passwordPlaceholder":"请输入密码", + "pid":"用户上级", + "pidPlaceholder":"请输入用户上级", + "level":"会员层级", + "levelPlaceholder":"请输入会员层级", + "wxOpenid":"微信小程序openid", + "wxOpenidPlaceholder":"请输入微信小程序openid", + "wxUnionid":"微信unionid", + "wxUnionidPlaceholder":"请输入微信unionid", + "sex":"性别", + "sexPlaceholder":"请输入性别", + "birthday":"生日", + "birthdayPlaceholder":"请输入生日", + "isShow":"是否可用", + "isShowPlaceholder":"请输入是否可用", + "createTime":"创建时间", + "addUser":"添加会员管理", + "updateUser":"编辑会员管理", + "userDeleteTips":"确定要删除该数据吗?", + "startDate":"请选择开始时间", + "endDate":"请选择结束时间" +} \ No newline at end of file diff --git a/admin/src/addon/hygl/lang/zh-cn/user_coupons.user_coupons.json b/admin/src/addon/hygl/lang/zh-cn/user_coupons.user_coupons.json new file mode 100644 index 0000000..8b67268 --- /dev/null +++ b/admin/src/addon/hygl/lang/zh-cn/user_coupons.user_coupons.json @@ -0,0 +1,21 @@ +{ + "id":"id", + "userId":"用户id", + "userIdPlaceholder":"全部", + "siteId":"站点id", + "siteIdPlaceholder":"请输入站点id", + "couponsId":"卡券名字", + "couponsIdPlaceholder":"请输入卡券名字", + "nominalValue":"卡券面值", + "nominalValuePlaceholder":"请输入卡券面值", + "isShow":"是否可用", + "isShowPlaceholder":"请输入是否可用", + "createTime":"创建时间", + "createTimePlaceholder":"请输入创建时间", + "addUserCoupons":"添加用户优惠券", + "updateUserCoupons":"编辑用户优惠券", + "userCouponsDeleteTips":"确定要删除该数据吗?", + "startDate":"请选择开始时间", + "endDate":"请选择结束时间", + "validTime":"有效期" +} \ No newline at end of file diff --git a/admin/src/addon/hygl/views/advertising/advertising.vue b/admin/src/addon/hygl/views/advertising/advertising.vue new file mode 100644 index 0000000..94b97aa --- /dev/null +++ b/admin/src/addon/hygl/views/advertising/advertising.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/admin/src/addon/hygl/views/advertising/components/advertising-edit.vue b/admin/src/addon/hygl/views/advertising/components/advertising-edit.vue new file mode 100644 index 0000000..3875394 --- /dev/null +++ b/admin/src/addon/hygl/views/advertising/components/advertising-edit.vue @@ -0,0 +1,174 @@ + + + + + + diff --git a/admin/src/addon/hygl/views/config/components/config-edit.vue b/admin/src/addon/hygl/views/config/components/config-edit.vue new file mode 100644 index 0000000..f8db59d --- /dev/null +++ b/admin/src/addon/hygl/views/config/components/config-edit.vue @@ -0,0 +1,257 @@ + + + + + + diff --git a/admin/src/addon/hygl/views/config/config.vue b/admin/src/addon/hygl/views/config/config.vue new file mode 100644 index 0000000..5e53783 --- /dev/null +++ b/admin/src/addon/hygl/views/config/config.vue @@ -0,0 +1,378 @@ + + + + + \ No newline at end of file diff --git a/admin/src/addon/hygl/views/coupons/components/coupons-edit.vue b/admin/src/addon/hygl/views/coupons/components/coupons-edit.vue new file mode 100644 index 0000000..989ed61 --- /dev/null +++ b/admin/src/addon/hygl/views/coupons/components/coupons-edit.vue @@ -0,0 +1,238 @@ + + + + + + diff --git a/admin/src/addon/hygl/views/coupons/coupons.vue b/admin/src/addon/hygl/views/coupons/coupons.vue new file mode 100644 index 0000000..0510102 --- /dev/null +++ b/admin/src/addon/hygl/views/coupons/coupons.vue @@ -0,0 +1,227 @@ + + + + + diff --git a/admin/src/addon/hygl/views/hello_world/index.vue b/admin/src/addon/hygl/views/hello_world/index.vue new file mode 100644 index 0000000..b06efa2 --- /dev/null +++ b/admin/src/addon/hygl/views/hello_world/index.vue @@ -0,0 +1,17 @@ + + + + + diff --git a/admin/src/addon/hygl/views/transaction_history/components/transaction-history-edit.vue b/admin/src/addon/hygl/views/transaction_history/components/transaction-history-edit.vue new file mode 100644 index 0000000..fa2ee25 --- /dev/null +++ b/admin/src/addon/hygl/views/transaction_history/components/transaction-history-edit.vue @@ -0,0 +1,295 @@ + + + + + + diff --git a/admin/src/addon/hygl/views/transaction_history/transaction_history.vue b/admin/src/addon/hygl/views/transaction_history/transaction_history.vue new file mode 100644 index 0000000..765f95d --- /dev/null +++ b/admin/src/addon/hygl/views/transaction_history/transaction_history.vue @@ -0,0 +1,286 @@ + + + + + \ No newline at end of file diff --git a/admin/src/addon/hygl/views/user/components/user-edit.vue b/admin/src/addon/hygl/views/user/components/user-edit.vue new file mode 100644 index 0000000..eda5bca --- /dev/null +++ b/admin/src/addon/hygl/views/user/components/user-edit.vue @@ -0,0 +1,311 @@ + + + + + + diff --git a/admin/src/addon/hygl/views/user/user.vue b/admin/src/addon/hygl/views/user/user.vue new file mode 100644 index 0000000..d23ac7f --- /dev/null +++ b/admin/src/addon/hygl/views/user/user.vue @@ -0,0 +1,283 @@ + + + + + diff --git a/admin/src/addon/hygl/views/user_coupons/components/user-coupons-edit.vue b/admin/src/addon/hygl/views/user_coupons/components/user-coupons-edit.vue new file mode 100644 index 0000000..e64f86f --- /dev/null +++ b/admin/src/addon/hygl/views/user_coupons/components/user-coupons-edit.vue @@ -0,0 +1,233 @@ + + + + + + diff --git a/admin/src/addon/hygl/views/user_coupons/user_coupons.vue b/admin/src/addon/hygl/views/user_coupons/user_coupons.vue new file mode 100644 index 0000000..da6c747 --- /dev/null +++ b/admin/src/addon/hygl/views/user_coupons/user_coupons.vue @@ -0,0 +1,249 @@ + + + + + diff --git a/admin/src/app/api/addon.ts b/admin/src/app/api/addon.ts new file mode 100644 index 0000000..84af6fd --- /dev/null +++ b/admin/src/app/api/addon.ts @@ -0,0 +1,92 @@ +import request from '@/utils/request' + +/** + * 本地下载的插件列表 + * @returns + */ +export function getAddonLocal(params: Record) { + return request.get('addon/local', params, { showSuccessMessage: true }) +} + +/** + * 插件详情 + * @returns + */ +export function getAddonDetial(id: number) { + return request.get(`addon/${id}`) +} + +/** + * 安装插件 + * @param params + * @returns + */ +export function installAddon(params: Record) { + return request.post(`addon/install/${params.addon}`, params) +} + +/** + * 安装插件 + * @param params + * @returns + */ +export function cloudInstallAddon(params: Record) { + return request.post(`addon/cloudinstall/${params.addon}`, params, { timeout: 60 * 1000 }) +} + +/** + * 卸载插件 + * @param params + * @returns + */ +export function uninstallAddon(params: Record) { + return request.post(`addon/uninstall/${params.addon}`, params, { showSuccessMessage: true }) +} + +/** + * 插件安装前检测 + * @param addon + * @returns + */ +export function preInstallCheck(addon: string) { + return request.get(`addon/install/check/${addon}`, { timeout: 30 * 1000 }) +} + +/** + * 获取正在安装的插件 + * @returns + */ +export function getAddonInstalltask() { + return request.get('addon/installtask') +} + +/** + * 获取插件云安装日志 + * @param addon + * @returns + */ +export function getAddonCloudInstallLog(addon: string) { + return request.get(`addon/cloudinstall/${addon}`) +} + +/** + * 插件卸载前检测 + * @param addon + * @returns + */ +export function preUninstallCheck(addon: string) { + return request.get(`addon/uninstall/check/${addon}`, { timeout: 30 * 1000 }) +} + +/** + * 取消插件安装 + * @param addon + * @returns + */ +export function cancelInstall(addon: string) { + return request.put(`addon/install/cancel/${addon}`, {}, { showErrorMessage: false }) +} + +export function getInstalledAddonList() { + return request.get('addon/list/install') +} diff --git a/admin/src/app/api/aliapp.ts b/admin/src/app/api/aliapp.ts new file mode 100644 index 0000000..e3df32a --- /dev/null +++ b/admin/src/app/api/aliapp.ts @@ -0,0 +1,26 @@ +import request from '@/utils/request' + +/** + * 获取支付宝小程序配置 + * @returns + */ +export function getAliappConfig() { + return request.get('aliapp/config') +} + +/** + * 编辑支付宝小程序配置 + * @param params + * @returns + */ +export function setAliappConfig(params: Record) { + return request.put('aliapp/config', params, {showSuccessMessage: true}) +} + +/** + * 获取支付宝小程序静态资源 + * @returns + */ +export function getAliappStatic() { + return request.get('aliapp/static') +} diff --git a/admin/src/app/api/auth.ts b/admin/src/app/api/auth.ts new file mode 100644 index 0000000..ea2892d --- /dev/null +++ b/admin/src/app/api/auth.ts @@ -0,0 +1,48 @@ +import request from '@/utils/request' + +/** + * 登录 + * @param params + * @param app_type + */ +export function login(params: Record, app_type: string) { + return request.get(`login/${app_type}`, {params}) +} + +/** + * 退出登录 + */ +export function logout() { + return request.put('auth/logout', {}, { showErrorMessage: false }) +} + +/** + * 获取登录用户权限 + * @returns + */ +export function getAuthMenus(params: Record) { + return request.get('auth/authmenu', {params}) +} + +/** + * 获取登录用户权限 + * @returns + */ +export function getSiteInfo() { + return request.get('auth/site') +} + +/** + * 获取登录配置信息 + * @returns + */ +export function getLoginConfig() { + return request.get('login/config') +} + +/** + * 获取当前版本信息 + */ +export function getVersions() { + return request.get(`sys/info`) +} diff --git a/admin/src/app/api/cloud.ts b/admin/src/app/api/cloud.ts new file mode 100644 index 0000000..4f4710c --- /dev/null +++ b/admin/src/app/api/cloud.ts @@ -0,0 +1,38 @@ +import request from '@/utils/request' + +/** + * 云编译 + * @param addon + */ +export function cloudBuild() { + return request.post('niucloud/build', {}, { timeout: 0 }) +} + +/** + * 获取云编译任务 + * @param addon + */ +export function getCloudBuildTask() { + return request.get('niucloud/build') +} + +/** + * 云编译前检测 + */ +export function getCloudBuildLog() { + return request.get('niucloud/build/log') +} + +/** + * 清除 + */ +export function clearCloudBuildTask() { + return request.post('niucloud/build/clear') +} + +/** + * 云编译前检测 + */ +export function preBuildCheck() { + return request.get('niucloud/build/check') +} diff --git a/admin/src/app/api/dict.ts b/admin/src/app/api/dict.ts new file mode 100644 index 0000000..7695220 --- /dev/null +++ b/admin/src/app/api/dict.ts @@ -0,0 +1,81 @@ +import request from '@/utils/request' + +/** + * 获取数据字典列表 + * @param params + * @returns + */ +export function getDictList(params: Record) { + return request.get(`dict/dict`, {params}) +} + +/** + * 获取数据字典详情 + * @param id 数据字典id + * @returns + */ +export function getDictInfo(id: number) { + return request.get(`dict/dict/${id}`); +} + +/** + * 添加数据字典 + * @param params + * @returns + */ +export function addDict(params: Record) { + return request.post('dict/dict', params, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 编辑数据字典 + * @param params + * @returns + */ +export function addDictData(params: Record) { + return request.put(`dict/dict/${params.id}`, params, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 编辑数据字典 + * @param params + * @returns + */ +export function editDict(params: Record) { + return request.put(`dict/dict/${params.id}`, params, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 删除数据字典 + * @param id + * @returns + */ +export function deleteDict(id: number) { + return request.delete(`dict/dict/${id}`, { showErrorMessage: true, showSuccessMessage: true }) +} +/** + * 编辑数据字典内容 + * @param id + * @param params + * @returns + */ +export function setDictData(id:number,params: Record) { + return request.put(`dict/dictionary/${id}`, params, { showErrorMessage: true,showSuccessMessage: true }) +} +/** + * 获取数据字典列表全部 + * @returns + */ +export function getDictAll() { + return request.get(`dict/all`) +} + +/** + * 数据字典关键词查询 + * @param type + * @returns + */ +export function useDictionary(type: string) { + return request.get(`dict/dictionary/type/${type}`) +} + diff --git a/admin/src/app/api/diy.ts b/admin/src/app/api/diy.ts new file mode 100644 index 0000000..436d536 --- /dev/null +++ b/admin/src/app/api/diy.ts @@ -0,0 +1,183 @@ +import request from '@/utils/request' + +/***************************************************** 自定义页面 ****************************************************/ + +/** + * 获取自定义页面分页列表 + * @param params + * @returns + */ +export function getDiyPageList(params: Record) { + return request.get(`diy/diy`, {params}) +} + +/** + * 获取自定义页面列表 + * @param params + * @returns + */ +export function getDiyList(params: Record) { + return request.get(`diy/list`, {params}) +} + +/** + * 获取自定义页面详情 + * @param id 自定义页面id + * @returns + */ +export function getDiyPageInfo(id: number) { + return request.get(`diy/diy/${id}`); +} + +/** + * 添加自定义页面 + * @param params + * @returns + */ +export function addDiyPage(params: Record) { + return request.post('diy/diy', params, {showSuccessMessage: true}) +} + +/** + * 编辑自定义页面 + * @param params + */ +export function editDiyPage(params: Record) { + return request.put(`diy/diy/${params.id}`, params, {showSuccessMessage: true}) +} + +/** + * 设为使用 + * @param params + */ +export function setUseDiyPage(params: Record) { + return request.put(`diy/use`, params, {showSuccessMessage: true}) +} + +/** + * 修改自定义页面分享内容 + * @param params + */ +export function editDiyPageShare(params: Record) { + return request.put(`diy/diy/share`, params, {showSuccessMessage: true}) +} + +/** + * 删除自定义页面 + * @param id + * @returns + */ +export function deleteDiyPage(id: number) { + return request.delete(`diy/diy/${id}`, {showSuccessMessage: true}) +} + +/** + * 获取自定义页面初始化数据 + */ +export function initPage(params: Record) { + return request.get(`diy/init`, {params}) +} + +/** + * 获取自定义链接列表 + */ +export function getLink(params: Record) { + return request.get(`diy/link`, {params}) +} + +/** + * 获取底部导航列表 + */ +export function getDiyBottomList(params: Record) { + return request.get(`diy/bottom`, {params}) +} + +/** + * 获取底部导航数据 + */ +export function getDiyBottomConfig(params: Record) { + return request.get(`diy/bottom/config`, {params}) +} + +/** + * 设置底部导航数据 + * @param params + * @returns + */ +export function setDiyBottomConfig(params: Record) { + return request.post('diy/bottom', params, {showSuccessMessage: true}) +} + +/** + * 获取页面模板类型 + */ +export function getDiyTemplate(params: Record) { + return request.get(`diy/template`, {params}) +} + +/** + * 获取模板页面列表 + */ +export function getDiyTemplatePages(params: Record) { + return request.get(`diy/template/pages`, {params}) +} + +/** + * 获取自定义路由列表 + * @param params + * @returns + */ +export function getDiyRouteList(params: Record) { + return request.get(`diy/route`, {params}) +} + +/** + * 获取路由列表(存在的应用插件列表) + * @returns + */ +export function getDiyRouteAppList() { + return request.get(`diy/route/apps`) +} + +/** + * 获取自定义路由信息 + * @param params + */ +export function getDiyRouteInfo(params: Record) { + return request.get(`diy/route/info`, {params}); +} + +/** + * 修改路由页面分享内容 + * @param params + */ +export function editDiyRouteShare(params: Record) { + return request.put(`diy/route/share`, params, {showSuccessMessage: true}) +} + +/** + * 获取自定义页面列表 + * @param params + * @returns + */ +export function getDecoratePage(params: Record) { + return request.get(`diy/decorate`, {params}) +} + +/** + * 切换模板 + * @param params + * @returns + */ +export function changeTemplate(params: Record) { + return request.put(`diy/change`, params, {showSuccessMessage: true}) +} + +/** + * 获取模板页面(存在的应用插件列表) + * @param params + * @returns + */ +export function getApps(params: Record) { + return request.get(`diy/apps`) +} \ No newline at end of file diff --git a/admin/src/app/api/h5.ts b/admin/src/app/api/h5.ts new file mode 100644 index 0000000..b9a766f --- /dev/null +++ b/admin/src/app/api/h5.ts @@ -0,0 +1,18 @@ +import request from '@/utils/request' + +/** + * 获取h5配置 + * @returns + */ +export function getH5Config() { + return request.get('channel/h5/config') +} + +/** + * 编辑h5配置 + * @param params + * @returns + */ +export function setH5Config(params: Record) { + return request.put('channel/h5/config', params, {showSuccessMessage: true}) +} diff --git a/admin/src/app/api/home.ts b/admin/src/app/api/home.ts new file mode 100644 index 0000000..c73c1bc --- /dev/null +++ b/admin/src/app/api/home.ts @@ -0,0 +1,5 @@ +import request from '@/utils/request' + +export function getHomeSite(params: Record) { + return request.get(`home/site`, { params }) +} diff --git a/admin/src/app/api/member.ts b/admin/src/app/api/member.ts new file mode 100644 index 0000000..9a825b5 --- /dev/null +++ b/admin/src/app/api/member.ts @@ -0,0 +1,354 @@ +import request from '@/utils/request' + + +/***************************************************** 会员管理 ****************************************************/ + +/** + * 获取会员列表 + * @param params + * @returns + */ +export function getMemberList(params: Record) { + return request.get(`member/member`, {params}) +} + +/** + * 获取会员详情 + * @param id 会员id + * @returns + */ +export function getMemberInfo(id: number) { + return request.get(`member/member/${id}`); +} + +/** + * 获取会员编码 + * @returns + */ +export function getMemberNo() { + return request.get(`member/memberno`); +} + +/** + * 添加会员 + * @param params + * @returns + */ +export function addMember(params: Record) { + return request.post(`member/member`, params, {showSuccessMessage: true}) +} + +/** + * 会员注册方式 + * @param params + * @returns + */ +export function getRegisterType(params: Record) { + return request.get(`member/registertype`, params) +} + +/** + * 会员注册渠道 + * @param params + * @returns + */ +export function getRegisterChannelType(params: Record) { + return request.get(`member/register/channel`, params) +} + +/** + * 会员删除 + * @param member_id + */ +export function deleteMember(member_id: number) { + return request.delete(`member/member/${member_id}`, {showSuccessMessage: true}) +} + + +/***************************************************** 会员标签 ****************************************************/ + +/** + * 获取会员标签列表 + * @param params + * @returns + */ +export function getMemberLabelList(params: Record) { + return request.get(`member/label`, {params}) +} + +/** + * 获取会员标签详情 + * @param label_id 会员标签label_id + * @returns + */ +export function getMemberLabelInfo(label_id: number) { + return request.get(`member/label/${label_id}`); +} + +/** + * 添加会员标签 + * @param params + * @returns + */ +export function addMemberLabel(params: Record) { + return request.post('member/label', params, {showSuccessMessage: true}) +} + +/** + * 编辑会员标签 + * @param params + */ +export function updateMemberLabel(params: Record) { + return request.put(`member/label/${params.label_id}`, params, {showSuccessMessage: true}) +} + +/** + * 删除会员标签 + * @param label_id + * @returns + */ +export function deleteMemberLabel(label_id: number) { + return request.delete(`member/label/${label_id}`, {showSuccessMessage: true}) +} + +/** + * 获取全部会员标签 + */ +export function getMemberLabelAll() { + return request.get(`member/label/all`); +} + +/** + * 编辑会员详情 + * @param params + */ +export function editMemberDetail(params: Record) { + return request.put(`member/member/modify/${params.member_id}/${params.field}`, params, {showSuccessMessage: true}) +} + +/***************************************************** 会员零钱 ****************************************************/ + + +/***************************************************** 会员账户 ****************************************************/ + +/** + * 账户变动方式 + * @param change_type + */ +export function getChangeTypeList(change_type: string) { + return request.get(`member/account/change_type/${change_type}`) +} + +/** + * 会员积分流水 + * @param params + * @returns + */ +export function getPointList(params: Record) { + return request.get(`member/account/point`, {params}) +} + +/** + * 会员余额流水 + * @param params + * @returns + */ +export function getBalanceList(params: Record) { + return request.get(`member/account/balance`, {params}) +} + +/** + * 获取会员可提现余额列表 + * @param params + * @returns + */ +export function getMoneyList(params: Record) { + return request.get(`member/account/money`, {params}) +} + +/** + * 获取会员佣金列表 + * @param params + * @returns + */ +export function getCommissionList(params: Record) { + return request.get(`member/account/commission`, {params}) +} + +/** + * 会员积分调整 + * @param params + * @returns + */ +export function adjustPoint(params: Record) { + return request.post(`member/account/point`, params, {showSuccessMessage: true}) +} + +/** + * 会员余额调整 + * @param params + * @returns + */ +export function adjustBalance(params: Record) { + return request.post(`member/account/balance`, params, {showSuccessMessage: true}) +} + +/***************************************************** 会员相关设置 ****************************************************/ + +/** + * 获取登录设置 + */ +export function getLoginConfig() { + return request.get(`member/config/login`) +} + +/** + * 注册登录设置 + * @param params + * @returns + */ +export function setLoginConfig(params: Record) { + return request.post(`member/config/login`, params, {showSuccessMessage: true}) +} + +/** + * 获取会员设置 + */ +export function getMemberConfig() { + return request.get(`member/config/member`) +} + +/** + * 会员设置 + * @param params + * @returns + */ +export function setMemberConfig(params: Record) { + return request.post(`member/config/member`, params, {showSuccessMessage: true}) +} + + +/** + * 获取会员转账方式 + */ +export function getTransfertype() { + return request.get(`member/cash_out/transfertype`) +} + + +/** + * 佣金统计 + * @param params + * @returns + */ +export function getCommissionSum(params: Record) { + return request.get(`member/account/sum_commission`, {params}) +} + +/** + * 积分统计 + * @param params + * @returns + */ +export function getPointSum(params: Record) { + return request.get(`member/account/sum_point`, {params}) +} + +/** + * 余额统计 + * @param params + * @returns + */ +export function getBalanceSum(params: Record) { + return request.get(`member/account/sum_balance`, {params}) +} + +/** + * 余额类型 + */ +export function getBalanceStatus() { + return request.get(`member/account/type`) +} + +/** + * 获取余额变动类型 + */ +export function getAccountType(params: Record) { + return request.get(`member/account/change_type/${params.account_type}`) +} + + +/***************************************************** 会员提现 ****************************************************/ + +/** + * 获取提现设置 + */ +export function getCashOutConfig() { + return request.get(`member/config/cash_out`) +} + +/** + * 设置提现设置 + * @param params + * @returns + */ +export function setCashOutConfig(params: Record) { + return request.post(`member/config/cash_out`, params, {showSuccessMessage: true}) +} + +/** + * 获取会员提现列表 + * @param params + * @returns + */ +export function getCashOutList(params: Record) { + return request.get(`member/cash_out`, {params}) +} + +/** + * 会员提现详情 + * @param id + */ +export function getCashOutDetail(id: number) { + return request.get(`member/cash_out/${id}`, {}) +} + +/** + * 会员提现审核 + * @param params + */ +export function memberAudit(params: Record) { + return request.put(`member/cash_out/audit/${params.id}/${params.action}`, params, {showSuccessMessage: true}) +} + +/** + * 会员提现转账 + * @param params + */ +export function memberTransfer(params: Record) { + return request.put(`member/cash_out/transfer/${params.id}`, params, {showSuccessMessage: true}) +} + +/** + * 会员状态变更 + * @param params + */ +export function editMemberStatus(params: Record) { + return request.put(`member/setstatus/${params.status}`, params, {showSuccessMessage: true}) +} + +/** + * 会员提现状态 + */ +export function getCashOutStatusList() { + return request.get(`member/cash_out/status`) +} + +/** + * 提现统计 + * @returns + */ +export function getCashOutStat() { + return request.get(`member/cash_out/stat`) +} + diff --git a/admin/src/app/api/module.ts b/admin/src/app/api/module.ts new file mode 100644 index 0000000..876e0ab --- /dev/null +++ b/admin/src/app/api/module.ts @@ -0,0 +1,67 @@ +import request from '@/utils/request' + +/** + * 获取授权信息 + */ +export function getAuthinfo() { + return request.get('niucloud/authinfo', { showErrorMessage: false }) +} + +/** + * 设置 授权配置 + */ +export function setAuthinfo(params: Record) { + return request.post('niucloud/authinfo', params, {showSuccessMessage: true}) +} + +/** + * 获取 授权配置 + */ +export function getAdminAuthinfo() { + return request.get('niucloud/admin/authinfo') +} + + + +/** + * 获取授权插件列表 + * @returns + */ +export function getModule() { + return request.get('niucloud/module') +} + +/** + * 获取插件版本 + * @param params + * @returns + */ +export function getModuleVersion() { + return request.get(`niucloud/module`) +} + +/** + * 下载版本 + * @param params + * @returns + */ +export function downloadVersion(params: Record) { + return request.post(`addon/download/${params.addon}`, params, { showSuccessMessage: true }) +} + +/** + * 获取框架最新版本 + * @param params + * @returns + */ +export function getFrameworkNewVersion() { + return request.get(`niucloud/framework/newversion`) +} + +/** + * 获取框架更新记录 + * @returns + */ +export function getFrameworkVersionList() { + return request.get(`niucloud/framework/version/list`) +} diff --git a/admin/src/app/api/notice.ts b/admin/src/app/api/notice.ts new file mode 100644 index 0000000..eae131e --- /dev/null +++ b/admin/src/app/api/notice.ts @@ -0,0 +1,81 @@ +import request from '@/utils/request' + +/***************************************************** 消息管理 ****************************************************/ + +/** + * 消息列表 + * @returns + */ +export function getNoticeList() { + return request.get('notice/notice') +} + +/** + * 消息详情 + * @param key + * @returns + */ +export function getNoticeInfo(key: string) { + return request.get(`notice/notice/${key}`) +} + +/** + * 消息发送记录 + * @param params + * @returns + */ +export function getNoticeLog(params: any) { + return request.get(`notice/log`, {params}) +} + + +/** + * 消息启动与关闭 + * @param params + * @returns + */ +export function editNoticeStatus(params: Record) { + return request.post(`notice/notice/editstatus`, params, {showSuccessMessage: true}) +} + +/** + * 消息修改 + * @param params + * @returns + */ +export function editNotice(params: Record) { + return request.post(`notice/notice/edit`, params, {showSuccessMessage: true}) +} + +/** + * 短信配置列表 + * @returns + */ +export function getSmsList() { + return request.get('notice/notice/sms') +} + +/** + * 短信配置详情 + * @param sms_type + * @returns + */ +export function getSmsInfo(sms_type: string) { + return request.get(`notice/notice/sms/${sms_type}`,) +} + +/** + * 短信配置修改 + * @param params + */ +export function editSms(params: Record) { + return request.put(`notice/notice/sms/${params.sms_type}`, params, {showSuccessMessage: true}) +} + +/** + * 短信发送记录 + * @param params + */ +export function getSmsLog(params: Record) { + return request.get(`notice/sms/log`, params) +} diff --git a/admin/src/app/api/order.ts b/admin/src/app/api/order.ts new file mode 100644 index 0000000..7fdf586 --- /dev/null +++ b/admin/src/app/api/order.ts @@ -0,0 +1,70 @@ +import request from '@/utils/request' + +/***************************************************** 充值订单 ****************************************************/ + +/** + * 获取充值订单列表 + * @param params + * @returns + */ +export function getRechargeOrderList(params: Record) { + return request.get(`order/recharge`, {params}) +} + +/** + * 获取充值订单统计 + * @param params + * @returns + */ +export function getRechargeStat(params: Record) { + return request.get(`order/recharge/stat`, {params}) +} + +/** + * 获取充值订单详情 + * @param order_id + * @returns + */ +export function getRechargeOrderInfo(order_id: number) { + return request.get(`order/recharge/${order_id}`); +} + +/** + * 获取充值订单状态列表 + * @returns + */ +export function getRechargeOrderStatusList() { + return request.get(`order/recharge/status`) +} + +/** + * 获取退款记录 + * @returns + */ +export function getRechargeRefund(params: Record) { + return request.get(`order/recharge/refund`, {params}) +} + +/** + * 获取退款状态 + * @returns + */ +export function getRechargeRefundStatus() { + return request.get(`order/recharge/refund/status`) +} + +/** + * 充值订单发起退款 + * @returns + */ +export function rechargeRefund(id: number) { + return request.put(`order/recharge/refund/${id}`, {}, {showSuccessMessage: true}); +} + +/** + * 获取退款统计 + * @returns + */ +export function getRechargeRefundStat() { + return request.get(`order/recharge/refund/stat`); +} \ No newline at end of file diff --git a/admin/src/app/api/pay.ts b/admin/src/app/api/pay.ts new file mode 100644 index 0000000..426d0fb --- /dev/null +++ b/admin/src/app/api/pay.ts @@ -0,0 +1,71 @@ +import request from '@/utils/request' + +/***************************************************** 账单列表 **************************************************/ + +/** + * 获取账单列表 + * @param params + * @returns + */ +export function getAccountList(params: Record) { + return request.get(`pay/account`, {params}) +} + +/** + * 获取账单详情 + * @param id + */ +export function getAccountInfo(id: number) { + return request.get(`pay/account/${id}`) +} + +/** + * 获取账单统计 + * @returns + */ +export function getAccountStat() { + return request.get(`pay/account/stat`) +} + +/** + * 获取账单类型 + * @returns + */ +export function getAccountType() { + return request.get(`pay/account/type`) +} + +/***************************************************** 退款信息 **************************************************/ + +/** + * 退款列表 + * @param params + * @returns + */ +export function getPayRefundPages(params: Record) { + return request.get(`pay/refund`, {params}) +} + +/** + * 获取退款详情 + * @param id + */ +export function getPayRefundInfo(refund_no: string) { + return request.get(`pay/refund/${refund_no}`) +} + +/** + * 退款方式 + * @param id + */ +export function getRefundType() { + return request.get(`pay/refund/type`) +} + +/** + * 退款转账 + * @param id + */ +export function getRefundTransfer(params: Record) { + return request.post(`pay/refund/transfer`, params, {showSuccessMessage: true}) +} \ No newline at end of file diff --git a/admin/src/app/api/personal.ts b/admin/src/app/api/personal.ts new file mode 100644 index 0000000..105925f --- /dev/null +++ b/admin/src/app/api/personal.ts @@ -0,0 +1,18 @@ +import request from '@/utils/request' + +/** + * 获取支付设置 + * @returns + */ +export function getUserInfo() { + return request.get(`auth/get`) +} + +/** + * 配置支付 + * @returns + */ +export function setUserInfo(params: Record) { + return request.put(`auth/edit`, params, {showSuccessMessage: true}); +} + diff --git a/admin/src/app/api/site.ts b/admin/src/app/api/site.ts new file mode 100644 index 0000000..dad1c52 --- /dev/null +++ b/admin/src/app/api/site.ts @@ -0,0 +1,252 @@ +import request from '@/utils/request' + +//包含站点管理,站点用户管理,站点操作日志 + +/***************************************************** 站点管理 ****************************************************/ + +/** + * 获取站点列表 + * @param params + * @returns + */ +export function getSiteList(params: Record) { + return request.get(`site/site`, { params }) +} + +/** + * 获取站点详情 + * @param site_id + */ +export function getSiteInfo(site_id: number) { + return request.get(`site/site/${site_id}`); +} + +/** + * 添加站点 + * @param params + * @returns + */ +export function addSite(params: Record) { + return request.post('site/site', params, { showSuccessMessage: true }) +} + +/** + * 更新站点 + * @param params + */ +export function editSite(params: Record) { + return request.put(`site/site/${params.site_id}`, params, { showSuccessMessage: true }) +} + +/** + * 删除站点 + * @param siteId + */ +export function deleteSite(siteId: number) { + return request.delete(`site/site/${siteId}`) +} + +/** + * 关闭站点 + * @param params + */ +export function closeSite(params: Record) { + return request.put(`site/closesite/${params.site_id}`, params, { showSuccessMessage: true }) +} + +/** + * 打开站点 + * @param params + */ +export function openSite(params: Record) { + return request.put(`site/opensite/${params.site_id}`, params, { showSuccessMessage: true }) +} + +/** + * 获取全部站点状态 + */ +export function getStatusList() { + return request.get(`site/statuslist`) +} + + +/***************************************************** 站点分组管理 ****************************************************/ + +/** + * 获取站点分组列表 + * @param params + * @returns + */ +export function getSiteGroupList(params: Record) { + return request.get(`site/group`, { params }) +} + +/** + * 获取站点分组详情 + * @param site_id + */ +export function getSiteGroupInfo(groupId: number) { + return request.get(`site/group/${groupId}`); +} + +/** + * 添加站点分组 + * @param params + * @returns + */ +export function addSiteGroup(params: Record) { + return request.post('site/group', params, { showSuccessMessage: true }) +} + +/** + * 更新站点分组 + * @param params + */ +export function editSiteGroup(params: Record) { + return request.put(`site/group/${params.group_id}`, params, { showSuccessMessage: true }) +} + +/** + * 删除站点分组 + * @param group_id + */ +export function deleteSiteGroup(group_id: number) { + return request.delete(`site/group/${group_id}`, { showSuccessMessage: true }); +} + +/** + * 获取全部站点分组 + * @param params + * @returns + */ +export function getSiteGroupAll(params: Record = {}) { + return request.get(`site/group/all`) +} + +/***************************************************** 当前站点用户 *************************************************/ + +/** + * 获取站点用户列表 + * @param params + * @returns + */ +export function getUserList(params: Record) { + return request.get(`site/user`, { params }) +} + +/** + * 获取站点用户详情 + * @param uid + */ +export function getUserInfo(uid: number) { + return request.get(`site/user/${uid}`); +} + +/** + * 添加用户 + * @param params + * @returns + */ +export function addUser(params: Record) { + return request.post('site/user', params, { showSuccessMessage: true }) +} + +/** + * 编辑用户 + * @param params + */ +export function editUser(params: Record) { + return request.put(`site/user/${params.uid}`, params, { showSuccessMessage: true }) +} + +/** + * 删除用户 + * @param uid + * @returns + */ +export function deleteUser(uid: number) { + return request.delete(`site/user/${uid}`, { showSuccessMessage: true }) +} + + +/** + * 锁定用户 + * @param uid + * @returns + */ +export function lockUser(uid: number) { + return request.put(`site/user/lock/${uid}`) +} + + +/** + * 解锁用户 + * @param uid + * @returns + */ +export function unlockUser(uid: number) { + return request.put(`site/user/unlock/${uid}`) +} + + +/***************************************************** 操作日志 **************************************************/ + +/** + * 获取操作日志列表 + * @param params + * @returns + */ +export function getLogList(params: Record) { + return request.get(`site/log`, { params }) +} + +/** + * 获取操作日志详情 + * @param id + */ +export function getLogInfo(id: number) { + return request.get(`site/log/${id}`) +} + +/***************************************************** 账单列表 **************************************************/ + +/** + * 获取账单列表 + * @param params + * @returns + */ +export function getAccountList(params: Record) { + return request.get(`site/account`, { params }) +} + +/** + * 获取账单详情 + * @param id + */ +export function getAccountInfo(id: number) { + return request.get(`site/account/${id}`) +} + +/** + * 获取账单统计 + * @returns + */ +export function getAccountStat() { + return request.get(`site/account/stat`) +} + +/** + * 获取账单类型 + * @returns + */ +export function getAccountType() { + return request.get(`site/account/type`) +} + +/** + * 获取站点应用 + * @returns + */ +export function getSiteAddons() { + return request.get('site/addons') +} diff --git a/admin/src/app/api/stat.ts b/admin/src/app/api/stat.ts new file mode 100644 index 0000000..02f5f85 --- /dev/null +++ b/admin/src/app/api/stat.ts @@ -0,0 +1,17 @@ +import request from '@/utils/request' + +/***************************************************** 统计信息 **************************************************/ +/** + * 获取统计信息 + */ +export function getStatInfo() { + return request.get(`stat/index`) +} + +/** + * 获取站点统计信息 + */ +export function getSiteStatInfo() { + return request.get(`stat/siteindex`) +} + diff --git a/admin/src/app/api/sys.ts b/admin/src/app/api/sys.ts new file mode 100644 index 0000000..b0616b2 --- /dev/null +++ b/admin/src/app/api/sys.ts @@ -0,0 +1,702 @@ +import request from '@/utils/request' + +/***************************************************** 系统整体信息 *************************************************/ + +/** + * 系统信息 + * @returns + */ +export function getInfo() { + return request.get('sys/role') +} + +/** + * 系统信息 + * @returns + */ +export function getUrl() { + return request.get('sys/url') +} + +/***************************************************** 用户组 ****************************************************/ + +/** + * 用户组列表 + * @returns + */ +export function getRoleList(params: Record) { + return request.get('sys/role', { params }) +} + +/** + * 用户组详情 + * @param roleId + */ +export function getRoleInfo(roleId: number) { + return request.get(`sys/role/${roleId}`) +} + +/** + * 添加用户组 + * @param params + * @returns + */ +export function addRole(params: Record) { + return request.post(`sys/role`, params, { showSuccessMessage: true }) +} + +/** + * 编辑用户组 + * @param params + */ +export function editRole(params: Record) { + return request.put(`sys/role/${params.role_id}`, params, { showSuccessMessage: true }) +} + +/** + * 删除用户组 + * @param roleId + */ +export function deleteRole(roleId: number) { + return request.delete(`sys/role/${roleId}`, { showSuccessMessage: true }) +} + +/** + * 全部分组 + * @returns + */ +export function allRole() { + return request.get('sys/role/all') +} + +/***************************************************** 全部菜单 ****************************************************/ + +/** + * 获取全部菜单 + * @returns + */ +export function getMenus(type: string) { + return request.get(`sys/menu/${type}`) +} + +/** + * 获取菜单信息 + * @param menu_key + */ +export function getMenuInfo(app_type: string, menu_key: string) { + return request.get(`sys/menu/${app_type}/info/${menu_key}`); +} + +/** + * 添加菜单 + * @param params + * @returns + */ +export function addMenu(params: Record) { + return request.post('sys/menu', params, { showSuccessMessage: true }) +} + +/** + * 更新菜单 + * @param params + */ +export function editMenu(params: Record) { + return request.put(`sys/menu/${params.app_type}/${params.menu_key}`, params, { showSuccessMessage: true }) +} + +/** + * 删除菜单 + * @param menu_key + */ +export function deleteMenu(app_type: string, menu_key: string) { + return request.delete(`sys/menu/${app_type}/${menu_key}`, { showSuccessMessage: true }) +} + +/** + * 获取系统菜单 + * + */ +export function getSystemMenu() { + return request.get(`sys/menu/system_menu`) +} + +/** + * 获取应用菜单 + * + */ +export function getAddonMenu(key: any) { + return request.get(`sys/menu/addon_menu/${key}`) +} + +/** + * 获取类型为目录的菜单 + * @param key + */ +export function getMenuByTypeDir(key: any = 'system') { + return request.get(`sys/menu/dir/${key}`) +} + + +/***************************************************** 站点菜单 ****************************************************/ + +/** + * 获取站点菜单 + * @returns + */ +export function getSiteMenus() { + return request.get(`site/site/menu`) +} + + +/***************************************************** 设置 ****************************************************/ + +/** + * 获取网站设置 + * @returns + */ +export function getWebsite() { + return request.get('sys/config/website') +} + +/** + * 获取网站设置 + * @returns + */ +export function getWebConfig() { + return request.get('sys/web/website') +} + +/** + * 获取网站设置 + * @returns + */ +export function getWebCopyright() { + return request.get('sys/web/copyright') +} + +/** + * 更新网站设置 + * @param params + * @returns + */ +export function setWebsite(params: Record) { + return request.put(`sys/config/website`, params, { showSuccessMessage: true }) +} + +/** + * 获取版权设置 + * @returns + */ +export function getCopyright() { + return request.get('sys/config/copyright') +} + +/** + * 获服务信息 + * @returns + */ +export function getService() { + return request.get('sys/config/service') +} + +/** + * 更新版权设置 + * @param params + * @returns + */ +export function setCopyright(params: Record) { + return request.put(`sys/config/copyright`, params, { showSuccessMessage: true }) +} + +/** + * 获取附件组列表 + * @param params + * @returns + */ +export function getAttachmentCategoryList(params: Record) { + return request.get(`sys/attachment/category`, { params }) +} + +/** + * 添加分类 + * @param params + */ +export function addAttachmentCategory(params: Record) { + return request.post(`sys/attachment/category`, params, { showSuccessMessage: true }) +} + +/** + * 编辑分类 + * @param params + * @returns + */ +export function editAttachmentCategory(params: Record) { + return request.put(`sys/attachment/category/${params.id}`, params, { showSuccessMessage: true }) +} + +/** + * 删除分类 + * @param id + * @returns + */ +export function deleteAttachmentCategory(id: number) { + return request.delete(`sys/attachment/category/${id}`, { showSuccessMessage: true }) +} + +/** + * 获取附件列表 + * @param params + * @returns + */ +export function getAttachmentList(params: Record) { + return request.get(`sys/attachment`, { params }) +} + +/** + * 删除附件 + * @param params + * @returns + */ +export function deleteAttachment(params: Record) { + return request.delete(`sys/attachment/del`, { data: params, showSuccessMessage: true }) +} + +/** + * 移动附件 + * @param params + * @returns + */ +export function moveAttachment(params: Record) { + return request.put(`sys/attachment/batchmove`, params) +} + +/** + * 获取menu菜单 + */ +export function getAuthMenu() { + return request.get(`auth/site/showmenu`) +} + +/** + * 获取快捷菜单 + */ +export function getShortcutMenu() { + return request.get(`sys/config/shortcut_menu`) +} + +/** + * 添加快捷菜单 + */ +export function setShortcutMenu(params: Record) { + return request.put(`sys/config/shortcut_menu`, params, { showSuccessMessage: true }) +} + +/** + * 获取图标库分类列表 + * @param params + * @returns + */ +export function getIconCategoryList(params: Record) { + return request.get(`sys/attachment/icon_category`, { params }) +} + +/** + * 获取图标库列表 + * @param params + * @returns + */ +export function getIconList(params: Record) { + return request.get(`sys/attachment/icon`, { params }) +} + +/** + * 获取evn + * @param params + * @returns + */ +export function getEnv() { + return request.get(`sys/env`) +} +/***************************************************** 地址管理 ****************************************************/ + +/** + * 获取下级地址列表 + * @param pid + */ +export function getAreaListByPid(pid: number = 0) { + return request.get(`sys/area/list_by_pid/${pid}`) +} + +/** + * 获取地址树列表 + * @param level + */ +export function getAreatree(level: number = 1) { + return request.get(`sys/area/tree/${level}`) +} + + +/** + * 获取地址信息 + */ +export function getAddressInfo(params: any) { + return request.get(`sys/area/get_info`, { params }) +} + +/** + * 获取地址信息 + */ +export function getContraryAddress(params: any) { + return request.get(`sys/area/contrary`, { params }) +} + +/** + * 获取地址 + * @param code + */ +export function getAreaByCode(code: number | string) { + return request.get(`sys/area/code/${code}`) +} +/***************************************************** 存储设置 ****************************************************/ + +/** + * 获取存储配置列表 + */ +export function getStorageList() { + return request.get(`sys/storage`) +} + +/** + * 获取存储详情 + * @param type + */ +export function getStorageInfo(type: string) { + return request.get(`sys/storage/${type}`) +} + +/** + * 修改存储 + * @param params + * @returns + */ +export function editStorage(params: Record) { + return request.put(`sys/storage/${params.storage_type}`, params, { showSuccessMessage: true }) +} + +/***************************************************** 支付设置 ****************************************************/ + +/** + * 获取支付设置 + * @returns + */ +export function getPayConfig(type: string) { + return request.get(`pay/config/${type}`) +} + +/** + * 配置支付 + * @returns + */ +export function setPayConfig(params: Record) { + return request.put(`pay/config/${params.type}`, params, { showSuccessMessage: true }); +} + +/** + * 获取支付列表 + * @returns + */ +export function getPayList() { + return request.get(`pay/lists`) +} + +/***************************************************** 打款设置 ****************************************************/ +/** + * 获取打款设置配置 + * @param channel + */ +export function getTransferInfo(channel) { + return request.get(`pay/channel/lists/${channel}`) +} + +/** + * 设置打款配置 + * @param params + * @returns + */ +export function setTransferInfo(params: Record) { + return request.post(`pay/channel/set/transfer`, params) +} + +/***************************************************** 定时任务 ****************************************************/ + +/** + * 获取任务列表 + * @returns + */ +export function getCronList(params: any) { + return request.get(`sys/schedule/list`, { params }) +} + +/** + * 任务详情 + * @returns + */ +export function getCronInfo(id: string) { + return request.get(`sys/cron/${id}`); +} + +/** + * 任务模版 + * @returns + */ +export function getCronTemplate() { + return request.get(`sys/schedule/template`) +} + +/** + * 任务间隔 + * @returns + */ +export function getCronDateType() { + return request.get(`sys/schedule/datetype`) +} + +/** + * 获取星期 + * @returns + */ +export function getWeek() { + return request.get(`sys/date/week`) +} + +/** + * 添加计划任务 + * @returns + */ +export function addCron(params: Record) { + return request.post(`sys/schedule`, params, { showSuccessMessage: true }) +} + +/** + * 编辑任务 + * @returns + */ +export function editCron(params: Record) { + return request.put(`sys/schedule/${params.id}`, params, { showSuccessMessage: true }) +} + +/** + * 删除任务 + * @returns + */ +export function deleteCron(id: string) { + return request.delete(`sys/schedule/${id}`, { showSuccessMessage: true }) +} + +/***************************************************** 协议管理 ****************************************************/ + +/** + * 获取协议列表 + * @returns + */ +export function getAgreementList() { + return request.get(`sys/agreement`) +} + +/** + * 协议详情 + * @returns + */ +export function getAgreementInfo(key: string) { + return request.get(`sys/agreement/${key}`); +} + +/** + * 更新协议 + * @returns + */ +export function editAgreement(params: Record) { + return request.put(`sys/agreement/${params.key}`, params, { showSuccessMessage: true }) +} + +/** + * 协议详情 + * @returns + */ +export function getChannelType() { + return request.get(`sys/channel`); +} + + +/** + * 获取渠道域名 + * @returns + */ +export function getSceneDomain() { + return request.get(`sys/scene_domain`); +} + +/***************************************************** 登录注册配置 ****************************************************/ + +/** + * 管理端登录注册配置 + */ +export function getConfigLogin() { + return request.get(`sys/config/login`) +} + +/** + * 设置管理端登录注册配置 + * @param params + * @returns + */ +export function setConfigLogin(params: Record) { + return request.put(`sys/config/login`, params, { showSuccessMessage: true }) +} + +/** + * 获取支付设置 + */ +export function getPayConfigList() { + return request.get(`pay/channel/lists`) +} + +/** + * 设置支付配置 + */ +export function setPatConfig(params: Record) { + return request.post(`pay/channel/set/all`, params, { showSuccessMessage: true }) +} + + +/***************************************************** 刷新菜单 ****************************************************/ +/** + * 刷新菜单 + */ +export function menuRefresh(params: Record) { + return request.post(`sys/menu/refresh`, {}, { showSuccessMessage: true }) +} + +/** + * 清理数据字段缓存 + */ +export function clearSchemaCache(params: Record) { + return request.post(`sys/schema/clear`, {}, { showSuccessMessage: true }) +} + + +/***************************************************** 获取应用 ****************************************************/ +/** + * 获取应用 + */ +export function getAppMange() { + return request.get(`sys/applist`) +} + +/***************************************************** 地图设置 ****************************************************/ + +/** + * 设置地图key + */ +export function setMap(params: Record) { + return request.put(`sys/config/map`, params, { showSuccessMessage: true }) +} + +/** + * 获取地图配置 + */ +export function getMap() { + return request.get(`sys/config/map`) +} + +/***************************************************** 首页 ****************************************************/ +/** + * 获取首页列表 + */ +export function getIndexList() { + return request.get(`sys/config/site_index`) +} + +/** + * 设置首页模版 + */ +export function setIndexList(params: Record) { + return request.put(`sys/config/site_index`, params, { showSuccessMessage: true }) +} + +/** + * 获取布局 + * @returns + */ +export function getLayouts() { + return request.get('sys/layout') +} + +/** + * 设置布局 + * @returns + */ +export function setLayout(key: string) { + return request.put('sys/layout', { key }, { showSuccessMessage: true }) +} + +/** + * 获取支付待审核记录 + */ +export function getPayAuditList(params: Record) { + return request.get('pay/audit', { params }) +} + +/** + * 支付审核通过 + * @returns + */ +export function payAuditPass(outTradeNo: string) { + return request.put(`pay/pass/${outTradeNo}`, {}, { showSuccessMessage: true }) +} + +/** + * 支付审核拒绝 + * @returns + */ +export function payAuditRefuse(params: Record) { + return request.put(`pay/refuse/${params.out_trade_no}`, params, { showSuccessMessage: true }) +} + +/** + * 获取支付单据详情 + */ +export function getPayDetail(id: number) { + return request.get(`pay/detail/${id}`) +} + +/** + * 获取应用列表 + */ +export function getAddonList() { + return request.get(`app/getAddonList`) +} + +/** + * 获取手机端首页列表 + */ +export function getWapIndexList(params: Record) { + return request.get('sys/config/wap_index', { params }) +} + +/** + * 获取开发者key + * @returns + */ +export function getDeveloperToken() { + return request.get('sys/config/developer_token') +} + +/** + * 设置开发者key + * @param params + * @returns + */ +export function setDeveloperToken(params: Record) { + return request.put(`sys/config/developer_token`, params, { showSuccessMessage: true }) +} diff --git a/admin/src/app/api/tools.ts b/admin/src/app/api/tools.ts new file mode 100644 index 0000000..e02bbcc --- /dev/null +++ b/admin/src/app/api/tools.ts @@ -0,0 +1,184 @@ +import request from '@/utils/request' + +/***************************************************** 插件开发 ****************************************************/ +/** + * 获取插件列表 + * @returns + */ +export function getAddonDevelop(params: Record) { + return request.get(`addon_develop`, {params}); +} + +/** + * 获取插件类型配置 + * @returns + */ +export function getAddontype() { + return request.get(`addontype`); +} + +/** + * 获取插件详情 + * @returns + */ +export function getAddonDevelopInfo(key: any) { + return request.get(`addon_develop/${key}`) +} + +/** + * 获取插件key是否存在 + * @returns + */ +export function getAddonDevelopCheck(key: any) { + return request.get(`addon_develop/check/${key}`) +} + +/** + * 添加插件 + * @param key + * @param params + * @returns + */ +export function addAddonDevelop(key: any, params: Record) { + return request.post(`addon_develop/${key}`, params) +} + +/** + * 编辑插件 + * @param key + * @param params + * @returns + */ +export function editAddonDevelop(key: any, params: Record) { + return request.put(`addon_develop/${key}`, params) +} + +/** + * 删除插件 + * @param key + * @returns + */ +export function deleteAddonDevelop(key: any) { + return request.delete(`addon_develop/${key}`, {showSuccessMessage: true}) +} + +/** + * 打包插件 + * @returns + */ +export function addonDevelopBuild(key: any) { + return request.post(`addon_develop/build/${key}`) +} + +/** + * 下载插件 + * @returns + */ +export function addonDevelopDownload(key: any) { + return request.post(`addon_develop/download/${key}`, {}) +} +/***************************************************** 代码生成 ****************************************************/ + +/** + * 获取代码生成列表 + * @param params + * @returns + */ +export function getGenerateTableList(params: Record) { + return request.get(`generator/generator`, {params}) +} + +/** + * 获取代码生成详情 + * @param id 代码生成id + * @returns + */ +export function getGenerateTableInfo(id: number) { + return request.get(`generator/generator/${id}`); +} + +/** + * 添加代码生成 + * @param params + * @returns + */ +export function addGenerateTable(params: Record) { + return request.post('generator/generator', params, {showSuccessMessage: true}) +} + +/** + * 编辑代码生成 + * @param params + */ +export function editGenerateTable(params: Record) { + return request.put(`generator/generator/${params.id}`, params, {showSuccessMessage: true}) +} + +/** + * 删除代码生成 + * @param id + * @returns + */ +export function deleteGenerateTable(id: number) { + return request.delete(`generator/generator/${id}`, {showSuccessMessage: true}) +} + +/** + * 代码生成 + * @param params + * @returns + */ +export function generateCreate(params: Record) { + return request.post(`generator/download`, params) +} + +/** + * 代码生成预览 + * @param id + * @returns + */ +export function generatePreview(id: number) { + return request.get(`generator/preview/${id}`) +} + +/** + * 数据表 + */ +export function generateTable() { + return request.get(`generator/table`) +} + +/** + * 获取服务器环境配置 + */ +export function getSystem() { + return request.get(`sys/system`) +} + +/** + * 获取全部模型 + */ +export function getGeneratorAllModel(params: any) { + return request.get(`generator/all_model`, {params}) +} + +/** + * 获取 表字段 + */ +export function getGeneratorTableColumn(params: any) { + return request.get(`generator/table_column`, {params}) +} + +/** + * 同步校验 + */ +export function generatorCheckFile(params: Record) { + return request.get(`generator/check_file`, {params}) +} + +/** + * 根据模型获取表字段 + */ +export function getGeneratorModelTableColumn(params: any) { + return request.get(`generator/model_table_column`, {params}) +} diff --git a/admin/src/app/api/upgrade.ts b/admin/src/app/api/upgrade.ts new file mode 100644 index 0000000..f7a5a26 --- /dev/null +++ b/admin/src/app/api/upgrade.ts @@ -0,0 +1,47 @@ +import request from '@/utils/request' + + +/** + * 获取更新内容 + * @param addon + */ +export function getUpgradeContent(addon: string = '') { + return request.get(addon ? `upgrade/${addon}` : 'upgrade') +} + +/** + * 获取升级任务 + * @param addon + */ +export function getUpgradeTask() { + return request.get('upgrade/task') +} + +/** + * 升级 + * @param addon + */ +export function upgradeAddon(addon: string = '') { + return request.post(addon ? `upgrade/${addon}` : 'upgrade') +} + +/** + * 执行升级 + */ +export function executeUpgrade() { + return request.post('upgrade/execute', {}, { timeout: 0 }) +} + +/** + * 升级前检测 + */ +export function preUpgradeCheck(addon: string = '') { + return request.get(addon ? `upgrade/check/${addon}` : 'upgrade/check') +} + +/** + * 清除 + */ +export function clearUpgradeTask() { + return request.post('upgrade/clear') +} diff --git a/admin/src/app/api/user.ts b/admin/src/app/api/user.ts new file mode 100644 index 0000000..79fe9cc --- /dev/null +++ b/admin/src/app/api/user.ts @@ -0,0 +1,58 @@ +import request from '@/utils/request' + +//当前接口用户指系统整体用户管理,站内用户添加,编辑,详情,操作日志,请查看站点内部相关接口 + +/***************************************************** 用户 ****************************************************/ + +/** + * 获取用户列表 + * @param params + * @returns + */ +export function getUserList(params: Record) { + return request.get(`user/user`, { params }) +} + +/** + * 获取用户详情 + * @param uid 用户uid + * @returns + */ +export function getUserInfo(uid: number) { + return request.get(`user/user/${uid}`); +} + +/** + * 添加用户 + * @param params + * @returns + */ +export function addUser(params: Record) { + return request.post('user/user', params, { showSuccessMessage: true }) +} + +/** + * 更新用户 + * @param params + */ +export function editUser(params: Record) { + return request.put(`user/user/${params.uid}`, params, { showSuccessMessage: true }) +} + +/** + * 获取所有用户列表 + * @param params + * @returns + */ +export function getAllUserList(params: Record) { + return request.get(`user/user_all`, { params }) +} + +/** + * 查询用户名是否存在 + * @param username + * @returns + */ +export function checkUsernameIsExist(username: string) { + return request.get(`user/isexist`, { params: { username } }) +} \ No newline at end of file diff --git a/admin/src/app/api/weapp.ts b/admin/src/app/api/weapp.ts new file mode 100644 index 0000000..9a612d5 --- /dev/null +++ b/admin/src/app/api/weapp.ts @@ -0,0 +1,125 @@ +import request from '@/utils/request' + +/** + * 获取微信小程序配置 + * @returns + */ +export function getWeappConfig() { + return request.get('weapp/config') +} + +/** + * 编辑微信小程序配置 + * @param params + * @returns + */ +export function setWeappConfig(params: Record) { + return request.put('weapp/config', params, { showSuccessMessage: true }) +} + +/** + * 获取订阅消息列表 + * @returns + */ +export function getTemplateList() { + return request.get('weapp/template') +} + +/** + * 获取同步 + * @param params + * @returns + */ +export function getBatchAcquisition(params: Record) { + return request.put('weapp/template/sync', params, { showSuccessMessage: true }) +} +/** + * 添加微信小程序版本 + * @param params + * @returns + */ +export function setWeappVersion(params: Record) { + return request.post('weapp/version', params, { showSuccessMessage: true }) +} + +/** + * 微信小程序预览码 + * @returns + */ +export function getWeappPreview() { + return request.get('weapp/preview') +} + +/** + * 微信小程序版本列表 + * @param params + * @returns + */ +export function getWeappVersionList(params: Record) { + return request.get('weapp/version', { params }) +} + +/** + * 获取微信小程序上传日志 + * @param key + * @returns + */ +export function getWeappUploadLog(key: string) { + return request.get(`weapp/upload/${key}`) +} + +/***************************************************** 管理端 ****************************************************/ + +/** + * 上传文件 + * @param params + * @returns + */ +export function uploadVersion(params: Record) { + return request.put('applet/upload', params, { showSuccessMessage: true }) +} + +/** + * 添加版本 + * @param params + * @returns + */ +export function addVersion(params: Record) { + return request.post('applet/version', params, { showSuccessMessage: true }) +} + +/** + * 版本列表 + * @param params + * @returns + */ +export function getVersionList(params: Record) { + return request.get('applet/version', { params }) +} + +/** + * 版本详情 + * @param id + * @returns + */ +export function getVersionInfo(id: string) { + return request.get(`applet/version/${id}`) +} + +/** + * 编辑版本 + * @param params + * @returns + */ +export function editVersion(params: Record) { + return request.put(`applet/version/${params.id}`, params, { showSuccessMessage: true }) +} + +/** + * 版本删除 + * @param id + * @returns + */ +export function deleteVersion(id: string) { + return request.delete(`applet/version/${id}`) +} \ No newline at end of file diff --git a/admin/src/app/api/wechat.ts b/admin/src/app/api/wechat.ts new file mode 100644 index 0000000..30744a9 --- /dev/null +++ b/admin/src/app/api/wechat.ts @@ -0,0 +1,64 @@ +import request from '@/utils/request' + +/** + * 获取微信配置 + * @returns + */ +export function getWechatConfig() { + return request.get('wechat/config') +} + +/** + * 微信配置所需的静态信息 + */ +export function getWechatStatic() { + return request.get('wechat/static'); +} + +/** + * 编辑微信配置 + * @param params + * @returns + */ +export function editWechatConfig(params: Record) { + return request.put('wechat/config', params, {showSuccessMessage: true}) +} + +/** + * 获取微信菜单 + * @returns + */ +export function getWechatMenu() { + return request.get('wechat/menu') +} + +/** + * 编辑微信菜单 + * @param params + * @returns + */ +export function editWechatMenu(params: Record) { + return request.put('wechat/menu', params, {showSuccessMessage: true}) +} + +/** + * 获取消息模板列表 + * @returns + */ +export function getTemplateList() { + return request.get('wechat/template') +} + + +/** + * 获取同步 + * @param params + * @returns + */ +export function getBatchAcquisition(params: Record) { + return request.put('wechat/template/sync', params, {showSuccessMessage: true}) +} + + + + diff --git a/admin/src/app/assets/images/SaaS.png b/admin/src/app/assets/images/SaaS.png new file mode 100644 index 0000000..e21b118 Binary files /dev/null and b/admin/src/app/assets/images/SaaS.png differ diff --git a/admin/src/app/assets/images/app_default.png b/admin/src/app/assets/images/app_default.png new file mode 100644 index 0000000..513b021 Binary files /dev/null and b/admin/src/app/assets/images/app_default.png differ diff --git a/admin/src/app/assets/images/app_store/app_store_default.png b/admin/src/app/assets/images/app_store/app_store_default.png new file mode 100644 index 0000000..766eced Binary files /dev/null and b/admin/src/app/assets/images/app_store/app_store_default.png differ diff --git a/admin/src/app/assets/images/app_store/local_icon.png b/admin/src/app/assets/images/app_store/local_icon.png new file mode 100644 index 0000000..d3ebb61 Binary files /dev/null and b/admin/src/app/assets/images/app_store/local_icon.png differ diff --git a/admin/src/app/assets/images/app_store/local_icon_select.png b/admin/src/app/assets/images/app_store/local_icon_select.png new file mode 100644 index 0000000..0af1afe Binary files /dev/null and b/admin/src/app/assets/images/app_store/local_icon_select.png differ diff --git a/admin/src/app/assets/images/app_store/market_icon.png b/admin/src/app/assets/images/app_store/market_icon.png new file mode 100644 index 0000000..a7d068b Binary files /dev/null and b/admin/src/app/assets/images/app_store/market_icon.png differ diff --git a/admin/src/app/assets/images/app_store/market_icon_select.png b/admin/src/app/assets/images/app_store/market_icon_select.png new file mode 100644 index 0000000..a7d068b Binary files /dev/null and b/admin/src/app/assets/images/app_store/market_icon_select.png differ diff --git a/admin/src/app/assets/images/app_store/switch_icon_1.png b/admin/src/app/assets/images/app_store/switch_icon_1.png new file mode 100644 index 0000000..80aa0e3 Binary files /dev/null and b/admin/src/app/assets/images/app_store/switch_icon_1.png differ diff --git a/admin/src/app/assets/images/app_store/switch_icon_2.png b/admin/src/app/assets/images/app_store/switch_icon_2.png new file mode 100644 index 0000000..001ba31 Binary files /dev/null and b/admin/src/app/assets/images/app_store/switch_icon_2.png differ diff --git a/admin/src/app/assets/images/back_login.jpg b/admin/src/app/assets/images/back_login.jpg new file mode 100644 index 0000000..bc50300 Binary files /dev/null and b/admin/src/app/assets/images/back_login.jpg differ diff --git a/admin/src/app/assets/images/category_default.png b/admin/src/app/assets/images/category_default.png new file mode 100644 index 0000000..fcd7f98 Binary files /dev/null and b/admin/src/app/assets/images/category_default.png differ diff --git a/admin/src/app/assets/images/channel/preview.png b/admin/src/app/assets/images/channel/preview.png new file mode 100644 index 0000000..4930506 Binary files /dev/null and b/admin/src/app/assets/images/channel/preview.png differ diff --git a/admin/src/app/assets/images/default_headimg.png b/admin/src/app/assets/images/default_headimg.png new file mode 100644 index 0000000..bb09f5e Binary files /dev/null and b/admin/src/app/assets/images/default_headimg.png differ diff --git a/admin/src/app/assets/images/diy/notice/style_01.png b/admin/src/app/assets/images/diy/notice/style_01.png new file mode 100644 index 0000000..81d4cea Binary files /dev/null and b/admin/src/app/assets/images/diy/notice/style_01.png differ diff --git a/admin/src/app/assets/images/diy/text/style1.png b/admin/src/app/assets/images/diy/text/style1.png new file mode 100644 index 0000000..8e43e38 Binary files /dev/null and b/admin/src/app/assets/images/diy/text/style1.png differ diff --git a/admin/src/app/assets/images/diy/text/style2.png b/admin/src/app/assets/images/diy/text/style2.png new file mode 100644 index 0000000..0b7c449 Binary files /dev/null and b/admin/src/app/assets/images/diy/text/style2.png differ diff --git a/admin/src/app/assets/images/diy_preview_head.png b/admin/src/app/assets/images/diy_preview_head.png new file mode 100644 index 0000000..7d8df8a Binary files /dev/null and b/admin/src/app/assets/images/diy_preview_head.png differ diff --git a/admin/src/app/assets/images/empty.png b/admin/src/app/assets/images/empty.png new file mode 100644 index 0000000..c8421c9 Binary files /dev/null and b/admin/src/app/assets/images/empty.png differ diff --git a/admin/src/app/assets/images/error.png b/admin/src/app/assets/images/error.png new file mode 100644 index 0000000..143d6c6 Binary files /dev/null and b/admin/src/app/assets/images/error.png differ diff --git a/admin/src/app/assets/images/gov_icon.png b/admin/src/app/assets/images/gov_icon.png new file mode 100644 index 0000000..9241291 Binary files /dev/null and b/admin/src/app/assets/images/gov_icon.png differ diff --git a/admin/src/app/assets/images/icon-addon.png b/admin/src/app/assets/images/icon-addon.png new file mode 100644 index 0000000..8dad733 Binary files /dev/null and b/admin/src/app/assets/images/icon-addon.png differ diff --git a/admin/src/app/assets/images/icon_folder.png b/admin/src/app/assets/images/icon_folder.png new file mode 100644 index 0000000..99b800f Binary files /dev/null and b/admin/src/app/assets/images/icon_folder.png differ diff --git a/admin/src/app/assets/images/icon_preview.png b/admin/src/app/assets/images/icon_preview.png new file mode 100644 index 0000000..7be9482 Binary files /dev/null and b/admin/src/app/assets/images/icon_preview.png differ diff --git a/admin/src/app/assets/images/index/add_menu.png b/admin/src/app/assets/images/index/add_menu.png new file mode 100644 index 0000000..3bc05d8 Binary files /dev/null and b/admin/src/app/assets/images/index/add_menu.png differ diff --git a/admin/src/app/assets/images/index/administrator.png b/admin/src/app/assets/images/index/administrator.png new file mode 100644 index 0000000..655b4e1 Binary files /dev/null and b/admin/src/app/assets/images/index/administrator.png differ diff --git a/admin/src/app/assets/images/index/app.png b/admin/src/app/assets/images/index/app.png new file mode 100644 index 0000000..a305932 Binary files /dev/null and b/admin/src/app/assets/images/index/app.png differ diff --git a/admin/src/app/assets/images/index/app1.png b/admin/src/app/assets/images/index/app1.png new file mode 100644 index 0000000..476afff Binary files /dev/null and b/admin/src/app/assets/images/index/app1.png differ diff --git a/admin/src/app/assets/images/index/app_default.png b/admin/src/app/assets/images/index/app_default.png new file mode 100644 index 0000000..4a22d9e Binary files /dev/null and b/admin/src/app/assets/images/index/app_default.png differ diff --git a/admin/src/app/assets/images/index/apply_empty.png b/admin/src/app/assets/images/index/apply_empty.png new file mode 100644 index 0000000..030b443 Binary files /dev/null and b/admin/src/app/assets/images/index/apply_empty.png differ diff --git a/admin/src/app/assets/images/index/article.png b/admin/src/app/assets/images/index/article.png new file mode 100644 index 0000000..47efeab Binary files /dev/null and b/admin/src/app/assets/images/index/article.png differ diff --git a/admin/src/app/assets/images/index/article_list.png b/admin/src/app/assets/images/index/article_list.png new file mode 100644 index 0000000..f4682f7 Binary files /dev/null and b/admin/src/app/assets/images/index/article_list.png differ diff --git a/admin/src/app/assets/images/index/auth.png b/admin/src/app/assets/images/index/auth.png new file mode 100644 index 0000000..208ac21 Binary files /dev/null and b/admin/src/app/assets/images/index/auth.png differ diff --git a/admin/src/app/assets/images/index/auth1.png b/admin/src/app/assets/images/index/auth1.png new file mode 100644 index 0000000..01c0766 Binary files /dev/null and b/admin/src/app/assets/images/index/auth1.png differ diff --git a/admin/src/app/assets/images/index/balance.png b/admin/src/app/assets/images/index/balance.png new file mode 100644 index 0000000..022eeda Binary files /dev/null and b/admin/src/app/assets/images/index/balance.png differ diff --git a/admin/src/app/assets/images/index/del_model.png b/admin/src/app/assets/images/index/del_model.png new file mode 100644 index 0000000..ac223b9 Binary files /dev/null and b/admin/src/app/assets/images/index/del_model.png differ diff --git a/admin/src/app/assets/images/index/edit.png b/admin/src/app/assets/images/index/edit.png new file mode 100644 index 0000000..97f8eda Binary files /dev/null and b/admin/src/app/assets/images/index/edit.png differ diff --git a/admin/src/app/assets/images/index/fitment.png b/admin/src/app/assets/images/index/fitment.png new file mode 100644 index 0000000..3821cef Binary files /dev/null and b/admin/src/app/assets/images/index/fitment.png differ diff --git a/admin/src/app/assets/images/index/member.png b/admin/src/app/assets/images/index/member.png new file mode 100644 index 0000000..2f44ca0 Binary files /dev/null and b/admin/src/app/assets/images/index/member.png differ diff --git a/admin/src/app/assets/images/index/model_tag.png b/admin/src/app/assets/images/index/model_tag.png new file mode 100644 index 0000000..01cfc40 Binary files /dev/null and b/admin/src/app/assets/images/index/model_tag.png differ diff --git a/admin/src/app/assets/images/index/new_site.png b/admin/src/app/assets/images/index/new_site.png new file mode 100644 index 0000000..69151dc Binary files /dev/null and b/admin/src/app/assets/images/index/new_site.png differ diff --git a/admin/src/app/assets/images/index/new_site1.png b/admin/src/app/assets/images/index/new_site1.png new file mode 100644 index 0000000..f9d2b2e Binary files /dev/null and b/admin/src/app/assets/images/index/new_site1.png differ diff --git a/admin/src/app/assets/images/index/overview.png b/admin/src/app/assets/images/index/overview.png new file mode 100644 index 0000000..302bb9d Binary files /dev/null and b/admin/src/app/assets/images/index/overview.png differ diff --git a/admin/src/app/assets/images/index/renovation.png b/admin/src/app/assets/images/index/renovation.png new file mode 100644 index 0000000..4c90a18 Binary files /dev/null and b/admin/src/app/assets/images/index/renovation.png differ diff --git a/admin/src/app/assets/images/index/site.png b/admin/src/app/assets/images/index/site.png new file mode 100644 index 0000000..bd54d39 Binary files /dev/null and b/admin/src/app/assets/images/index/site.png differ diff --git a/admin/src/app/assets/images/index/site1.png b/admin/src/app/assets/images/index/site1.png new file mode 100644 index 0000000..b1ea6dd Binary files /dev/null and b/admin/src/app/assets/images/index/site1.png differ diff --git a/admin/src/app/assets/images/index/site_auth.png b/admin/src/app/assets/images/index/site_auth.png new file mode 100644 index 0000000..969a993 Binary files /dev/null and b/admin/src/app/assets/images/index/site_auth.png differ diff --git a/admin/src/app/assets/images/index/site_balance.png b/admin/src/app/assets/images/index/site_balance.png new file mode 100644 index 0000000..a445337 Binary files /dev/null and b/admin/src/app/assets/images/index/site_balance.png differ diff --git a/admin/src/app/assets/images/index/site_bg.png b/admin/src/app/assets/images/index/site_bg.png new file mode 100644 index 0000000..68f1637 Binary files /dev/null and b/admin/src/app/assets/images/index/site_bg.png differ diff --git a/admin/src/app/assets/images/index/site_class.png b/admin/src/app/assets/images/index/site_class.png new file mode 100644 index 0000000..573fbb5 Binary files /dev/null and b/admin/src/app/assets/images/index/site_class.png differ diff --git a/admin/src/app/assets/images/index/site_class1.png b/admin/src/app/assets/images/index/site_class1.png new file mode 100644 index 0000000..d15af25 Binary files /dev/null and b/admin/src/app/assets/images/index/site_class1.png differ diff --git a/admin/src/app/assets/images/index/site_img.png b/admin/src/app/assets/images/index/site_img.png new file mode 100644 index 0000000..9cb88f3 Binary files /dev/null and b/admin/src/app/assets/images/index/site_img.png differ diff --git a/admin/src/app/assets/images/index/site_member.png b/admin/src/app/assets/images/index/site_member.png new file mode 100644 index 0000000..b1b0cd3 Binary files /dev/null and b/admin/src/app/assets/images/index/site_member.png differ diff --git a/admin/src/app/assets/images/index/wework_qrcode.png b/admin/src/app/assets/images/index/wework_qrcode.png new file mode 100644 index 0000000..384435e Binary files /dev/null and b/admin/src/app/assets/images/index/wework_qrcode.png differ diff --git a/admin/src/app/assets/images/index/wx_qrcode.jpg b/admin/src/app/assets/images/index/wx_qrcode.jpg new file mode 100644 index 0000000..54cb4a4 Binary files /dev/null and b/admin/src/app/assets/images/index/wx_qrcode.jpg differ diff --git a/admin/src/app/assets/images/iphone_bg.png b/admin/src/app/assets/images/iphone_bg.png new file mode 100644 index 0000000..0906ff5 Binary files /dev/null and b/admin/src/app/assets/images/iphone_bg.png differ diff --git a/admin/src/app/assets/images/login/admin_login_img.png b/admin/src/app/assets/images/login/admin_login_img.png new file mode 100644 index 0000000..c21c753 Binary files /dev/null and b/admin/src/app/assets/images/login/admin_login_img.png differ diff --git a/admin/src/app/assets/images/login/login_index_bg.png b/admin/src/app/assets/images/login/login_index_bg.png new file mode 100644 index 0000000..9a0a4ec Binary files /dev/null and b/admin/src/app/assets/images/login/login_index_bg.png differ diff --git a/admin/src/app/assets/images/login/login_index_left.png b/admin/src/app/assets/images/login/login_index_left.png new file mode 100644 index 0000000..a585968 Binary files /dev/null and b/admin/src/app/assets/images/login/login_index_left.png differ diff --git a/admin/src/app/assets/images/login/site_bg.png b/admin/src/app/assets/images/login/site_bg.png new file mode 100644 index 0000000..f755f33 Binary files /dev/null and b/admin/src/app/assets/images/login/site_bg.png differ diff --git a/admin/src/app/assets/images/login/site_bg_1.png b/admin/src/app/assets/images/login/site_bg_1.png new file mode 100644 index 0000000..c105653 Binary files /dev/null and b/admin/src/app/assets/images/login/site_bg_1.png differ diff --git a/admin/src/app/assets/images/login/site_code.png b/admin/src/app/assets/images/login/site_code.png new file mode 100644 index 0000000..a41cd7b Binary files /dev/null and b/admin/src/app/assets/images/login/site_code.png differ diff --git a/admin/src/app/assets/images/login_bg.png b/admin/src/app/assets/images/login_bg.png new file mode 100644 index 0000000..c30e775 Binary files /dev/null and b/admin/src/app/assets/images/login_bg.png differ diff --git a/admin/src/app/assets/images/login_logo.png b/admin/src/app/assets/images/login_logo.png new file mode 100644 index 0000000..d6aa4ec Binary files /dev/null and b/admin/src/app/assets/images/login_logo.png differ diff --git a/admin/src/app/assets/images/member_head.png b/admin/src/app/assets/images/member_head.png new file mode 100644 index 0000000..bb09f5e Binary files /dev/null and b/admin/src/app/assets/images/member_head.png differ diff --git a/admin/src/app/assets/images/no_perms.png b/admin/src/app/assets/images/no_perms.png new file mode 100644 index 0000000..c37c89b Binary files /dev/null and b/admin/src/app/assets/images/no_perms.png differ diff --git a/admin/src/app/assets/images/one_type.png b/admin/src/app/assets/images/one_type.png new file mode 100644 index 0000000..a3816e8 Binary files /dev/null and b/admin/src/app/assets/images/one_type.png differ diff --git a/admin/src/app/assets/images/setting/QRcode.png b/admin/src/app/assets/images/setting/QRcode.png new file mode 100644 index 0000000..493edef Binary files /dev/null and b/admin/src/app/assets/images/setting/QRcode.png differ diff --git a/admin/src/app/assets/images/setting/alipay1.png b/admin/src/app/assets/images/setting/alipay1.png new file mode 100644 index 0000000..df5e7da Binary files /dev/null and b/admin/src/app/assets/images/setting/alipay1.png differ diff --git a/admin/src/app/assets/images/setting/alipay2.png b/admin/src/app/assets/images/setting/alipay2.png new file mode 100644 index 0000000..107a67f Binary files /dev/null and b/admin/src/app/assets/images/setting/alipay2.png differ diff --git a/admin/src/app/assets/images/setting/alipay3.png b/admin/src/app/assets/images/setting/alipay3.png new file mode 100644 index 0000000..3675532 Binary files /dev/null and b/admin/src/app/assets/images/setting/alipay3.png differ diff --git a/admin/src/app/assets/images/setting/alipay4.png b/admin/src/app/assets/images/setting/alipay4.png new file mode 100644 index 0000000..b546fc4 Binary files /dev/null and b/admin/src/app/assets/images/setting/alipay4.png differ diff --git a/admin/src/app/assets/images/setting/alipay4_1.jpg b/admin/src/app/assets/images/setting/alipay4_1.jpg new file mode 100644 index 0000000..66e4d2c Binary files /dev/null and b/admin/src/app/assets/images/setting/alipay4_1.jpg differ diff --git a/admin/src/app/assets/images/setting/alipay4_2.jpg b/admin/src/app/assets/images/setting/alipay4_2.jpg new file mode 100644 index 0000000..30e1728 Binary files /dev/null and b/admin/src/app/assets/images/setting/alipay4_2.jpg differ diff --git a/admin/src/app/assets/images/setting/alipay4_3.jpg b/admin/src/app/assets/images/setting/alipay4_3.jpg new file mode 100644 index 0000000..bf161fb Binary files /dev/null and b/admin/src/app/assets/images/setting/alipay4_3.jpg differ diff --git a/admin/src/app/assets/images/setting/alipay4_4.jpg b/admin/src/app/assets/images/setting/alipay4_4.jpg new file mode 100644 index 0000000..448afc5 Binary files /dev/null and b/admin/src/app/assets/images/setting/alipay4_4.jpg differ diff --git a/admin/src/app/assets/images/setting/alipay5.png b/admin/src/app/assets/images/setting/alipay5.png new file mode 100644 index 0000000..6eb3043 Binary files /dev/null and b/admin/src/app/assets/images/setting/alipay5.png differ diff --git a/admin/src/app/assets/images/setting/alipay6.png b/admin/src/app/assets/images/setting/alipay6.png new file mode 100644 index 0000000..6526b2c Binary files /dev/null and b/admin/src/app/assets/images/setting/alipay6.png differ diff --git a/admin/src/app/assets/images/setting/alipay7.png b/admin/src/app/assets/images/setting/alipay7.png new file mode 100644 index 0000000..8ae1d9f Binary files /dev/null and b/admin/src/app/assets/images/setting/alipay7.png differ diff --git a/admin/src/app/assets/images/setting/alipay8.png b/admin/src/app/assets/images/setting/alipay8.png new file mode 100644 index 0000000..caba3e3 Binary files /dev/null and b/admin/src/app/assets/images/setting/alipay8.png differ diff --git a/admin/src/app/assets/images/setting/app-authorize1.png b/admin/src/app/assets/images/setting/app-authorize1.png new file mode 100644 index 0000000..b790137 Binary files /dev/null and b/admin/src/app/assets/images/setting/app-authorize1.png differ diff --git a/admin/src/app/assets/images/setting/weapp_1.png b/admin/src/app/assets/images/setting/weapp_1.png new file mode 100644 index 0000000..8aa33eb Binary files /dev/null and b/admin/src/app/assets/images/setting/weapp_1.png differ diff --git a/admin/src/app/assets/images/setting/weapp_2.png b/admin/src/app/assets/images/setting/weapp_2.png new file mode 100644 index 0000000..bb6fc76 Binary files /dev/null and b/admin/src/app/assets/images/setting/weapp_2.png differ diff --git a/admin/src/app/assets/images/setting/weapp_3.png b/admin/src/app/assets/images/setting/weapp_3.png new file mode 100644 index 0000000..cd085d4 Binary files /dev/null and b/admin/src/app/assets/images/setting/weapp_3.png differ diff --git a/admin/src/app/assets/images/setting/weapp_4.png b/admin/src/app/assets/images/setting/weapp_4.png new file mode 100644 index 0000000..0fb16fe Binary files /dev/null and b/admin/src/app/assets/images/setting/weapp_4.png differ diff --git a/admin/src/app/assets/images/setting/wechat_1.png b/admin/src/app/assets/images/setting/wechat_1.png new file mode 100644 index 0000000..41b58a2 Binary files /dev/null and b/admin/src/app/assets/images/setting/wechat_1.png differ diff --git a/admin/src/app/assets/images/setting/wechat_2.png b/admin/src/app/assets/images/setting/wechat_2.png new file mode 100644 index 0000000..8c7b11c Binary files /dev/null and b/admin/src/app/assets/images/setting/wechat_2.png differ diff --git a/admin/src/app/assets/images/setting/wechat_3.png b/admin/src/app/assets/images/setting/wechat_3.png new file mode 100644 index 0000000..031025d Binary files /dev/null and b/admin/src/app/assets/images/setting/wechat_3.png differ diff --git a/admin/src/app/assets/images/setting/wechat_4.png b/admin/src/app/assets/images/setting/wechat_4.png new file mode 100644 index 0000000..c56f6ff Binary files /dev/null and b/admin/src/app/assets/images/setting/wechat_4.png differ diff --git a/admin/src/app/assets/images/site_login.png b/admin/src/app/assets/images/site_login.png new file mode 100644 index 0000000..39df7d4 Binary files /dev/null and b/admin/src/app/assets/images/site_login.png differ diff --git a/admin/src/app/assets/images/site_login_bg.png b/admin/src/app/assets/images/site_login_bg.png new file mode 100644 index 0000000..1563f9c Binary files /dev/null and b/admin/src/app/assets/images/site_login_bg.png differ diff --git a/admin/src/app/assets/images/site_login_logo.png b/admin/src/app/assets/images/site_login_logo.png new file mode 100644 index 0000000..1174602 Binary files /dev/null and b/admin/src/app/assets/images/site_login_logo.png differ diff --git a/admin/src/app/assets/images/site_logo.png b/admin/src/app/assets/images/site_logo.png new file mode 100644 index 0000000..9046ef6 Binary files /dev/null and b/admin/src/app/assets/images/site_logo.png differ diff --git a/admin/src/app/assets/images/theme_black.png b/admin/src/app/assets/images/theme_black.png new file mode 100644 index 0000000..417b4d4 Binary files /dev/null and b/admin/src/app/assets/images/theme_black.png differ diff --git a/admin/src/app/assets/images/theme_white.png b/admin/src/app/assets/images/theme_white.png new file mode 100644 index 0000000..52714ba Binary files /dev/null and b/admin/src/app/assets/images/theme_white.png differ diff --git a/admin/src/app/assets/images/three_type.png b/admin/src/app/assets/images/three_type.png new file mode 100644 index 0000000..b15557b Binary files /dev/null and b/admin/src/app/assets/images/three_type.png differ diff --git a/admin/src/app/assets/images/tools/addon_develop.png b/admin/src/app/assets/images/tools/addon_develop.png new file mode 100644 index 0000000..88511a0 Binary files /dev/null and b/admin/src/app/assets/images/tools/addon_develop.png differ diff --git a/admin/src/app/assets/images/tools/app_auth.png b/admin/src/app/assets/images/tools/app_auth.png new file mode 100644 index 0000000..1de3c21 Binary files /dev/null and b/admin/src/app/assets/images/tools/app_auth.png differ diff --git a/admin/src/app/assets/images/tools/auth_menu.png b/admin/src/app/assets/images/tools/auth_menu.png new file mode 100644 index 0000000..6217800 Binary files /dev/null and b/admin/src/app/assets/images/tools/auth_menu.png differ diff --git a/admin/src/app/assets/images/tools/code.png b/admin/src/app/assets/images/tools/code.png new file mode 100644 index 0000000..498bd67 Binary files /dev/null and b/admin/src/app/assets/images/tools/code.png differ diff --git a/admin/src/app/assets/images/tools/developer.png b/admin/src/app/assets/images/tools/developer.png new file mode 100644 index 0000000..8ffd37b Binary files /dev/null and b/admin/src/app/assets/images/tools/developer.png differ diff --git a/admin/src/app/assets/images/tools/official_market.png b/admin/src/app/assets/images/tools/official_market.png new file mode 100644 index 0000000..3f1b6bd Binary files /dev/null and b/admin/src/app/assets/images/tools/official_market.png differ diff --git a/admin/src/app/assets/images/tools/sys_dict_list.png b/admin/src/app/assets/images/tools/sys_dict_list.png new file mode 100644 index 0000000..0a718a4 Binary files /dev/null and b/admin/src/app/assets/images/tools/sys_dict_list.png differ diff --git a/admin/src/app/assets/images/tools/tools_Update_cache.png b/admin/src/app/assets/images/tools/tools_Update_cache.png new file mode 100644 index 0000000..925c58d Binary files /dev/null and b/admin/src/app/assets/images/tools/tools_Update_cache.png differ diff --git a/admin/src/app/assets/images/tools/tools_check_environment.png b/admin/src/app/assets/images/tools/tools_check_environment.png new file mode 100644 index 0000000..0a240ed Binary files /dev/null and b/admin/src/app/assets/images/tools/tools_check_environment.png differ diff --git a/admin/src/app/assets/images/tools/tools_schedule.png b/admin/src/app/assets/images/tools/tools_schedule.png new file mode 100644 index 0000000..8c79958 Binary files /dev/null and b/admin/src/app/assets/images/tools/tools_schedule.png differ diff --git a/admin/src/app/assets/images/two_type.png b/admin/src/app/assets/images/two_type.png new file mode 100644 index 0000000..ee55536 Binary files /dev/null and b/admin/src/app/assets/images/two_type.png differ diff --git a/admin/src/app/assets/images/versions.png b/admin/src/app/assets/images/versions.png new file mode 100644 index 0000000..d384f46 Binary files /dev/null and b/admin/src/app/assets/images/versions.png differ diff --git a/admin/src/app/assets/images/wechat-menu-head-bg.png b/admin/src/app/assets/images/wechat-menu-head-bg.png new file mode 100644 index 0000000..2d87e11 Binary files /dev/null and b/admin/src/app/assets/images/wechat-menu-head-bg.png differ diff --git a/admin/src/app/assets/images/wechat-menu-head-dark-bg.png b/admin/src/app/assets/images/wechat-menu-head-dark-bg.png new file mode 100644 index 0000000..dde9c21 Binary files /dev/null and b/admin/src/app/assets/images/wechat-menu-head-dark-bg.png differ diff --git a/admin/src/app/components/cloud-build/index.vue b/admin/src/app/components/cloud-build/index.vue new file mode 100644 index 0000000..2b0eeed --- /dev/null +++ b/admin/src/app/components/cloud-build/index.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/admin/src/app/components/upgrade/index.vue b/admin/src/app/components/upgrade/index.vue new file mode 100644 index 0000000..f5091c5 --- /dev/null +++ b/admin/src/app/components/upgrade/index.vue @@ -0,0 +1,324 @@ + + + + + diff --git a/admin/src/app/lang/en/403.json b/admin/src/app/lang/en/403.json new file mode 100644 index 0000000..7bd9b15 --- /dev/null +++ b/admin/src/app/lang/en/403.json @@ -0,0 +1,3 @@ +{ + "tips": "Your account permissions are insufficient. Please contact the administrator to add permissions!" +} \ No newline at end of file diff --git a/admin/src/app/lang/en/auth.menu.json b/admin/src/app/lang/en/auth.menu.json new file mode 100644 index 0000000..c729593 --- /dev/null +++ b/admin/src/app/lang/en/auth.menu.json @@ -0,0 +1,21 @@ +{ + "menuName": "Menu name", + "menuType": "Type", + "authId": "Permission ID", + "menuTypeDir": "Dir", + "menuTypeMenu": "Menu", + "menuTypeButton": "Button", + "menuDeleteTips": "Are you sure you want to delete this menu?", + "addMenu": "Add menu", + "updateMenu": "Update menu", + "routePath": "Route path", + "viewPath": "Component path", + "parentMenu": "Parent menu", + "menuIcon": "Menu Icon", + "menuNamePlaceholder": "Please enter a menu name", + "routePathPlaceholder": "Please enter routing path", + "viewPathPlaceholder": "Please enter the component path", + "authIdPlaceholder": "Please enter Permission id", + "selectIconPlaceholder": "Please select the menu icon", + "topLevel": "top-level" +} \ No newline at end of file diff --git a/admin/src/app/lang/en/index.json b/admin/src/app/lang/en/index.json new file mode 100644 index 0000000..a2ad72c --- /dev/null +++ b/admin/src/app/lang/en/index.json @@ -0,0 +1,25 @@ +{ + "todayData": "today's data", + "memberNumb": "number of member", + "numberOfSites": "number of sites", + "numberOfVisitors": "number of visitors", + "commonlyUsedFunction": "commonly used function", + "articleList": "article list", + "memberManagement": "member management", + "balanceAccount": "balance account", + "administrator": "administrator", + "WebDecoration": "website decoration", + "accessMessage": "access message", + "memberDistribution": "membership distribution", + "systemInfo": "system environment", + "os": "os", + "phpVersions": "php version number", + "productionEnvironment": "production environment", + "versionsInfo": "version information", + "versions": "current version", + "frame": "framework based", + "channel": "access channel", + "serviceSupport": "service support", + "officialWbsite": "official website", + "pageView": "page view" +} \ No newline at end of file diff --git a/admin/src/app/lang/en/login.json b/admin/src/app/lang/en/login.json new file mode 100644 index 0000000..1db5f73 --- /dev/null +++ b/admin/src/app/lang/en/login.json @@ -0,0 +1,7 @@ +{ + "title": "Niucloud Vite Management side", + "login": "Login", + "logging": "Logging", + "userPlaceholder": "Please enter your account number", + "passwordPlaceholder": "Please enter your password" +} \ No newline at end of file diff --git a/admin/src/app/lang/en/member.member.json b/admin/src/app/lang/en/member.member.json new file mode 100644 index 0000000..685eea5 --- /dev/null +++ b/admin/src/app/lang/en/member.member.json @@ -0,0 +1,26 @@ +{ + "channel":"logon mode", + "nickname":"Name of member", + "mobile":"mobile", + "createTime":"creation time", + "updateTime":"Update time", + "addMember":"add member", + "updateMember":"edit member", + "nickNamePlaceholder":"Please enter the member name", + "mobilePlaceholder":"Please enter your mobile phone number", + "channelPlaceholder":"Please select a registration type", + "memberDeleteTips" : "Are you sure you want to delete this member?", + "detail": "detail", + "edit": "edit", + "startDate": "start time", + "endDate": "end time", + "essentialInfo": "essential information", + "accountInfo": "account information", + "registeredSource": "registered source", + "memberLabel": "Member label", + "urserName": "user name", + "point": "point", + "balance": "balance", + "growth": "growth" + +} \ No newline at end of file diff --git a/admin/src/app/lang/en/user.center.json b/admin/src/app/lang/en/user.center.json new file mode 100644 index 0000000..f392b6f --- /dev/null +++ b/admin/src/app/lang/en/user.center.json @@ -0,0 +1,14 @@ +{ + "headImg": "head", + "realName": "name", + "originalPassword": "original password", + "password": "new password", + "passwordCopy": "confirm password", + "passwordTip": "This parameter is mandatory when changing the password. Leave a blank if you do not change the password", + "realNamePlaceholder": "Please enter the user name", + "headImgPlaceholder": "Please enter the user profile picture", + "originalPasswordPlaceholder": "Please enter the original password", + "passwordPlaceholder": "Please enter a new password", + "save": "save", + "cancel": "cancel" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/403.json b/admin/src/app/lang/zh-cn/403.json new file mode 100644 index 0000000..237b256 --- /dev/null +++ b/admin/src/app/lang/zh-cn/403.json @@ -0,0 +1,3 @@ +{ + "tips": "您的账号权限不足,请联系管理员添加权限!" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/app.authorize.json b/admin/src/app/lang/zh-cn/app.authorize.json new file mode 100644 index 0000000..faddbbe --- /dev/null +++ b/admin/src/app/lang/zh-cn/app.authorize.json @@ -0,0 +1,18 @@ +{ + "companyName": "授权主体", + "siteAddress": "授权域名", + "contactName": "授权联系人", + "authCode": "授权码", + "authSecret": "授权秘钥", + "createTime": "授权时间", + "expireTime": "到期时间", + "authApp": "授权应用", + "authAppKey": "应用标识", + "siteAddressTips": "授权域名不匹配", + "authCodePlaceholder": "请输入授权码", + "authSecretPlaceholder": "请输入授权秘钥", + "updateCode": "重新绑定", + "notHaveAuth": "还没有授权?去购买", + "authInfoTips": "授权码和授权秘钥可在Niucloud官网我的授权 授权详情中查看", + "cloudBuildTips": "是否要进行云编译该操作可能会影响到正在访问的客户是否要继续操作?" +} diff --git a/admin/src/app/lang/zh-cn/app.index.json b/admin/src/app/lang/zh-cn/app.index.json new file mode 100644 index 0000000..d48f750 --- /dev/null +++ b/admin/src/app/lang/zh-cn/app.index.json @@ -0,0 +1,5 @@ +{ + "appName": "应用名称", + "appNamePlaceholder": "请输入应用名称", + "emptyAppData": "暂无应用" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/app.store.json b/admin/src/app/lang/zh-cn/app.store.json new file mode 100644 index 0000000..16bdb99 --- /dev/null +++ b/admin/src/app/lang/zh-cn/app.store.json @@ -0,0 +1,67 @@ +{ + "search":"搜索应用名称", + "appName":"应用名/版本信息", + "introduction":"简介", + "type":"类型", + "app":"应用", + "addon":"插件", + "noPlug":"暂无应用", + "install":"安装", + "unload":"卸载", + "installLabel":"已安装", + "uninstalledLabel":"未安装", + "version":"版本", + "title":"名称", + "desc":"简介", + "plugDetail": "插件信息", + "author": "作者", + "detail":"详情", + "addonInstall": "插件安装", + "dirPermission": "目录读写权限", + "path": "路径", + "demand": "要求", + "readable": "可读", + "write": "可写", + "packageManageTool": "包管理工具", + "name": "名称", + "addonInstallSuccess": "插件安装成功", + "envCheck": "环境检查", + "installProgress": "安装进度", + "installComplete": "安装完成", + "localAppText":"插件管理", + "marketAppText":"官方市场", + "installShowDialogCloseTips": "安装任务尚未完成,关闭将取消安装任务,是否要继续关闭?", + "marketDevelopMessage":"官方市场正在开发中!", + "jobError": "任务队列未启动 请在服务端源码部署目录打开终端执行 php think queue:listen", + "conflictFiles": "冲突文件", + "process": "启动进程", + "open": "开启", + "down": "下载", + "addonVersion": "插件版本", + "versionCode": "版本号", + "createTime": "发布时间", + "buyLabel": "已购买", + "installTips": "安装后需手动更新插件引用的依赖和编译各个端口的前端源码", + "localInstall":"本地安装", + "cloudInstall": "一键云安装", + "cloudInstallTips": "云安装可实现一键安装,安装后无需手动更新依赖和编译前端源码", + "installingTips": "有插件正在安装中请等待安装完成之后再进行其他操作,点击查看", + "installPercent": "安装进度", + "downloading": "下载中", + "authTips": "云安装需先绑定授权码,如果已有授权请先进行绑定,没有授权可到niucloud官网购买云服务之后再进行操作", + "toBind": "绑定授权", + "toNiucloud": "去niucloud官网", + "descriptionLeft": "暂无任何应用,马上去", + "link": "官方应用市场", + "descriptionRight": "逛逛", + "installed-empty": "暂未安装任何应用,请先安装", + "siteAddressTips": "授权域名不匹配", + "authCodePlaceholder": "请输入授权码", + "authSecretPlaceholder": "请输入授权秘钥", + "updateCode": "重新绑定", + "notHaveAuth": "还没有授权?去购买", + "authInfoTips": "授权码和授权秘钥可在Niucloud官网我的授权 授权详情中查看", + "addonUninstall": "插件卸载", + "appIdentification":"应用标识", + "tipText":"标识指开发应用或插件的文件夹名称" +} diff --git a/admin/src/app/lang/zh-cn/auth.log.json b/admin/src/app/lang/zh-cn/auth.log.json new file mode 100644 index 0000000..65ec54a --- /dev/null +++ b/admin/src/app/lang/zh-cn/auth.log.json @@ -0,0 +1,19 @@ +{ + "ip":"登录IP", + "username":"管理员姓名", + "url":"链接", + "detail": "详情", + "params":"参数", + "type":"请求方式", + "createTime":"操作时间", + "ipPlaceholder":"请输入登录IP", + "uidPlaceholder":"请输入管理员id", + "usernamePlaceholder":"请输入管理员姓名", + "urlPlaceholder":"请输入链接", + "paramsPlaceholder":"请输入参数", + "typePlaceholder":"请输入请求方式", + "createTimePlaceholder":"请输入操作时间", + "addSysUserLog":"添加管理员操作记录表", + "updateSysUserLog":"编辑管理员操作记录表", + "sys_user_logDeleteTips":"确定要删除该管理员操作记录表吗?" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/auth.menu.json b/admin/src/app/lang/zh-cn/auth.menu.json new file mode 100644 index 0000000..fa33bdd --- /dev/null +++ b/admin/src/app/lang/zh-cn/auth.menu.json @@ -0,0 +1,28 @@ +{ + "menuName": "菜单名称", + "menuType": "类型", + "authId": "api路径", + "menuTypeDir": "目录", + "menuTypeMenu": "菜单", + "menuTypeButton": "按钮", + "menuDeleteTips": "删除菜单会删除当前菜单以及该菜单下所有子菜单,是否确认删除?", + "addMenu": "添加菜单", + "updateMenu": "编辑菜单", + "routePath": "路由路径", + "viewPath": "组件路径", + "addon":"选择应用", + "parentMenu": "父级菜单", + "menuIcon": "菜单图标", + "sort":"权重", + "menuKey":"权限标识", + "menuNamePlaceholder": "请输入菜单名称", + "menuKeyPlaceholder": "请输入权限标识", + "menuKeyValidata":"菜单标识只能使用字母数字下划线并且开头不能为数字", + "routePathPlaceholder": "请输入路由路径", + "viewPathPlaceholder": "请输入组件路径", + "authIdPlaceholder": "请输入api路径", + "selectIconPlaceholder": "请选择菜单图标", + "topLevel": "顶级", + "menuShortName":"菜单短标题", + "menuShortNamePlaceholder":"请输入菜单短标题" +} diff --git a/admin/src/app/lang/zh-cn/auth.role.json b/admin/src/app/lang/zh-cn/auth.role.json new file mode 100644 index 0000000..68de808 --- /dev/null +++ b/admin/src/app/lang/zh-cn/auth.role.json @@ -0,0 +1,11 @@ +{ + "addRole": "新增角色", + "updateRole": "编辑角色", + "roleName": "角色名称", + "roleDeleteTips": "确定要删除该角色吗?", + "roleNamePlaceholder": "请输入角色名称", + "rulesPlaceholder": "请选择权限", + "checkStrictly": "父子级不关联", + "permission": "权限", + "foldText":"展开/折叠" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/auth.site_menu.json b/admin/src/app/lang/zh-cn/auth.site_menu.json new file mode 100644 index 0000000..d3cced0 --- /dev/null +++ b/admin/src/app/lang/zh-cn/auth.site_menu.json @@ -0,0 +1,30 @@ +{ + "menuName": "菜单名称", + "menuType": "类型", + "authId": "权限标识", + "menuTypeDir": "目录", + "menuTypeMenu": "菜单", + "menuTypeButton": "按钮", + "menuDeleteTips": "确定要删除该菜单吗?", + "addMenu": "添加菜单", + "updateMenu": "编辑菜单", + "routePath": "路由路径", + "viewPath": "组件路径", + "parentMenu": "父级菜单", + "menuIcon": "菜单图标", + "sort":"权重", + "menuKey":"菜单标识", + "menuNamePlaceholder": "请输入菜单名称", + "menuKeyPlaceholder": "请输入菜单标识", + "menuKeyValidata":"菜单标识只能使用字母数字下划线并且开头不能为数字", + "routePathPlaceholder": "请输入路由路径", + "viewPathPlaceholder": "请输入组件路径", + "authIdPlaceholder": "请输入权限标识", + "selectIconPlaceholder": "请选择菜单图标", + "topLevel": "顶级", + "menuShortName":"菜单短标题", + "menuShortNamePlaceholder":"请输入菜单短标题", + "addon":"选择应用", + "system":"系统菜单", + "application":"应用菜单" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/auth.user.json b/admin/src/app/lang/zh-cn/auth.user.json new file mode 100644 index 0000000..53a95f6 --- /dev/null +++ b/admin/src/app/lang/zh-cn/auth.user.json @@ -0,0 +1,32 @@ +{ + "addUser": "新增管理员", + "updateUser": "编辑管理员", + "userRealName": "姓名", + "lastLoginTime": "最后登录时间", + "lastLoginIP": "最后登录IP", + "accountNumberPlaceholder": "请输入账号", + "passwordPlaceholder": "请输入密码", + "confirmPasswordPlaceholder": "请再次确认密码", + "userRealNamePlaceholder": "请输入姓名", + "confirmPasswordError": "两次输入的密码不一致", + "userRoleName": "角色", + "administrator":"超级管理员", + "userRolePlaceholder": "请选择角色", + "lock":"锁定", + "unlock":"解锁", + "status":"用户状态", + "statusUnlock":"正常", + "statusLock":"锁定", + "adminDisabled":"超级管理员不可编辑", + "userUnlockTips":"确定要解锁该管理员吗?", + "userLockTips":"确定要锁定该管理员吗?", + "userType": "用户类型", + "adminAdministrators": "平台管理员", + "siteAdministrators": "站点管理员", + "userTypePlaceholder": "请选择用户类型", + "siteAdministratorsDisabled": "站点管理员不可编辑", + "manager": "用户", + "managerPlaceholder": "请选择用户", + "managerTips": "选择或者新增用户作为管理员", + "newAddManager": "新增用户" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/channel.aliapp.access.json b/admin/src/app/lang/zh-cn/channel.aliapp.access.json new file mode 100644 index 0000000..ac6c3c9 --- /dev/null +++ b/admin/src/app/lang/zh-cn/channel.aliapp.access.json @@ -0,0 +1,23 @@ +{ + "weappAccessFlow": "接入流程", + "title": "支付宝小程序", + "weappInlet": "支付宝小程序接入流程", + "weappAttestation": "支付宝小程序认证", + "weappAttest": "点击注册打开支付宝小程序官方,注册支付宝小程序后点击企业认证,申请之后等待支付宝官方审核", + "clickAccess": "点击注册", + "clickAccess2":"扫描二维码进入支付宝小程序", + "clickAccess3": "没有小程序马上注册", + "weappSetting": "支付宝小程序配置", + "weappSettingBtn": "点击配置支付宝小程序", + "uploadVersion": "上传小程序", + "emplace": "支付宝小程序认证之后按照官方提供的手册进行配置", + "settingInfo": "配置信息", + "releaseCourse": "版本管理中存放上传的支付宝小程序历更版本,通过uniapp版本编译小程序然后打包上传提交", + "completeAccess": "提交审核", + "wechatAccess": "提交uniapp对应版本,可以通过支付宝小程序查看版本的审核进度,审核成功后就可以使用了", + "wechatAccessBtn": "查看审核进度", + "wechatSet": "小程序配置", + "subscribeMessage": "订阅消息", + "weappRelease": "版本管理", + "alert":"您正在体验通用版小程序,不发布你将不可用" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/channel.aliapp.config.json b/admin/src/app/lang/zh-cn/channel.aliapp.config.json new file mode 100644 index 0000000..2ea7d76 --- /dev/null +++ b/admin/src/app/lang/zh-cn/channel.aliapp.config.json @@ -0,0 +1,34 @@ +{ + "aliappSet": "小程序设置", + "aliappName": "小程序名称", + "aliappOriginal": "APPID", + "aliappQrcode": "小程序二维码", + "aliappQrcodeTips": "建议尺寸上传430px*430px宽高的二维码", + "aliappAppid": "应用私钥", + "aliappAppsecret": "开发者密码", + "downloadUrl": "downloadFile合法域名", + "aliappInfo": "小程序信息", + "aliappDevelopInfo": "开发设置", + "theServerSetting": "接口内容加密设置", + "functionSetting": "服务器配置信息", + "encryptionType": "消息加解密方式", + "compatibleMode": "兼容模式", + "safeMode": "安全模式(推荐)", + "aliappNamePlaceholder": "请输入小程序名称", + "aliappOriginalPlaceholder": "请输入APPID", + "appidPlaceholder": "请输入应用私钥", + "tokenPlaceholder": "请输入Token", + "encodingAesKeyPlaceholder": "请输入EncodingAESKey", + "countersignType": "接口加签方式", + "certificate": "证书", + "publicKey": "应用公钥证书", + "alipayPublicKey": "支付宝公钥证书", + "alipayWithCrt": "支付宝根证书", + "publicKeyTips": "上传appCertPublicKey_***.crt文件", + "alipayPublicKeyTips": "上传alipayCertPublicKey_RSA2.crt文件", + "alipayWithCrtTips": "上传alipayRootCert.crt文件", + "AESKey": "AES秘钥", + "serveWhiteList": "服务器域名白名单", + "AESKeyPlaceholder": "请输入AES秘钥" + +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/channel.aliapp.course.json b/admin/src/app/lang/zh-cn/channel.aliapp.course.json new file mode 100644 index 0000000..d63cf9b --- /dev/null +++ b/admin/src/app/lang/zh-cn/channel.aliapp.course.json @@ -0,0 +1,10 @@ +{ + "alipayCourseTipsOne1": "登录", + "alipayCourseTipsOne2": "支付宝开放平台open.alipay.com", + "alipayCourseTipsOne3": "选择小程序应用,没有需先创建。点击进入小程序", + "alipayCourseTipsTwo1": "先在小程序内进行产品绑定和开发配置, 绑定下图内这些产品", + "alipayCourseTipsTwo2": "获取会员手机号需进行申请", + "alipayCourseTipsThree1": "配置开发配置,配置接口加签方式,接口加签方式选择证书", + "alipayCourseTipsThree2": "配置接口内容加密方式", + "alipayCourseTipsThree3": "配置服务器域名白名单可在商城后台支付宝配置中复制" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/channel.h5.config.json b/admin/src/app/lang/zh-cn/channel.h5.config.json new file mode 100644 index 0000000..0b38985 --- /dev/null +++ b/admin/src/app/lang/zh-cn/channel.h5.config.json @@ -0,0 +1,7 @@ +{ + "isOpen": "是否开启", + "h5DomainName": "h5域名", + "clickVisit": "点击访问", + "H5Info": "h5配置信息" + +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/channel.pc.config.json b/admin/src/app/lang/zh-cn/channel.pc.config.json new file mode 100644 index 0000000..5a7a331 --- /dev/null +++ b/admin/src/app/lang/zh-cn/channel.pc.config.json @@ -0,0 +1,8 @@ +{ + "pcInfo": "电脑端信息", + "preview": "预览图", + "copy": "复制", + "clickVisit": "点击访问", + "PCDomainName": "pc域名", + "newInfo": "最新消息" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/channel.weapp.access.json b/admin/src/app/lang/zh-cn/channel.weapp.access.json new file mode 100644 index 0000000..d3012f1 --- /dev/null +++ b/admin/src/app/lang/zh-cn/channel.weapp.access.json @@ -0,0 +1,23 @@ +{ + "weappAccessFlow": "接入流程", + "title": "微信小程序", + "weappInlet": "微信小程序接入流程", + "weappAttestation": "微信小程序认证", + "weappAttest": "点击注册打开微信小程序官方,注册微信小程序后点击企业认证,申请之后等待微信官方审核", + "clickAccess": "点击注册", + "clickAccess2": "扫描二维码进入小程序", + "clickAccess3": "没有小程序马上注册", + "weappSetting": "微信小程序配置", + "weappSettingBtn": "点击配置微信小程序", + "uploadVersion": "上传小程序", + "emplace": "微信小程序认证之后按照官方提供的手册进行配置", + "settingInfo": "配置信息", + "releaseCourse": "版本管理中存放上传的微信小程序历更版本,通过uniapp版本编译小程序然后打包上传提交", + "completeAccess": "提交审核", + "wechatAccess": "提交uniapp对应版本,可以通过微信小程序查看版本的审核进度,审核成功后就可以使用了", + "wechatAccessBtn": "查看审核进度", + "wechatSet": "小程序配置", + "subscribeMessage": "订阅消息", + "weappRelease": "版本管理", + "alert":"您正在体验通用版小程序,不发布你将不可用" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/channel.weapp.code.json b/admin/src/app/lang/zh-cn/channel.weapp.code.json new file mode 100644 index 0000000..24d9324 --- /dev/null +++ b/admin/src/app/lang/zh-cn/channel.weapp.code.json @@ -0,0 +1,42 @@ +{ + "operatePrompt": "操作提示", + "operatePromptTipsOne": "下载之后需使用微信开发者工具上传代码,微信开发者工具下载地址", + "operatePromptTipsTwo": "上传之后登录微信公众平台,在版本管理中选择刚上传的版本提交审核,审核通过之后即可发布小程序。", + "weappName": "小程序名称", + "weappId": "小程序ID", + "weappOriginalId": "小程序原始ID", + "weappInfo": "小程序信息", + "versionCode": "小程序代码", + "version": "版本", + "down": "下载", + "codeDown": "代码下载", + "downWeappCode": "下载代码", + "weappTips": "请先完善小程序配置", + "codeDownOneTips": "下载小程序代码包", + "codeDownTwoDesc": "上传代码", + "codeDownTwoTips": "下载完成之后,使用微信开发工具进行上传", + "codeDownThreeDesc": "发布小程序", + "codeDownThreeTips": "上传之后提交审核,审核通过发布小程序", + "weappVersion": "小程序版本", + "close": "关闭", + "code":"版本号", + "codePlaceholder":"请输入版本号", + "path":"小程序代码", + "pathPlaceholder":"请上传小程序代码", + "content":"版本说明", + "weappAccessFlow": "接入流程", + "subscribeMessage": "订阅消息", + "weappRelease": "版本管理", + "contentPlaceholder":"请输入版本说明", + "uploadingTips": "小程序代码上传中", + "status": "状态", + "preview": "预览", + "authTips": "上传代码需先绑定授权码,如果已有授权请先进行绑定,没有授权可到niucloud官网购买云服务之后再进行操作", + "toBind": "绑定授权", + "toNiucloud": "去niucloud官网", + "failReason": "失败原因:", + "toSetting": "去配置", + "cloudRelease": "一键云端发布", + "localRelease": "本地发布", + "localInsertTips": "请先将uni-app编译成微信小程序,然后使用微信开发者工具进行上传" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/channel.weapp.config.json b/admin/src/app/lang/zh-cn/channel.weapp.config.json new file mode 100644 index 0000000..cbc5317 --- /dev/null +++ b/admin/src/app/lang/zh-cn/channel.weapp.config.json @@ -0,0 +1,38 @@ +{ + "weappName": "小程序名称", + "weappOriginal": "小程序原始ID", + "weappQrcode": "小程序二维码", + "weappQrcodeTips": "建议尺寸上传430px*430px宽高的二维码", + "weappAppid": "AppID(小程序ID)", + "weappAppidTips": "AppID是小程序开发识别码,配合AppSecret可调用小程序的接口能力。", + "weappAppsecret": "AppSecret(小程序密钥)", + "weappAppsecretTips": "AppSecret是校验小程序开发者身份的密钥,具有极高的安全性", + "businessDomain": "业务域名", + "requestUrl": "request合法域名", + "socketUrl": "socket合法域名", + "uploadUrl": "uploadFile合法域名", + "downloadUrl": "downloadFile合法域名", + "weappInfo": "小程序信息", + "weappDevelopInfo": "小程序开发信息", + "theServerSetting": "消息推送配置", + "functionSetting": "服务器域名设置", + "tokenTips": "必须为英文或数字,长度为3-32字符。", + "encodingAESKeyTips": "消息加密密钥由43位字符组成,可随机修改,字符范围为A-Z,a-z,0-9。", + "encryptionType": "消息加解密方式", + "cleartextMode": "明文模式", + "compatibleMode": "兼容模式", + "safeMode": "安全模式(推荐)", + "weappNamePlaceholder": "请输入小程序名称", + "weappOriginalPlaceholder": "请输入小程序原始ID", + "appidPlaceholder": "请输入开发者ID", + "appSecretPlaceholder": "请输入开发者密码", + "tokenPlaceholder": "请输入Token", + "encodingAesKeyPlaceholder": "请输入EncodingAESKey", + "cleartextModeTips": "明文模式下,不使用消息体加解密功能,安全系数较低", + "compatibleModeTips": "兼容模式下,明文、密文将共存,方便开发者调试和维护", + "safeModeTips": "安全模式下,消息包为纯密文,需要开发者加密和解密,安全系数高", + "weappUpload": "小程序代码上传", + "uploadKey": "上传密钥", + "uploadKeyTips": "配置之后可实现在线上传小程序版本", + "uploadIpTips": "如果小程序代码上传开启了ip白名单设置,在ip白名单中添加ip:" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/channel.weapp.course.json b/admin/src/app/lang/zh-cn/channel.weapp.course.json new file mode 100644 index 0000000..ed02d56 --- /dev/null +++ b/admin/src/app/lang/zh-cn/channel.weapp.course.json @@ -0,0 +1,10 @@ +{ + "writingTipsOne1": "登录--", + "writingTipsOne2": "微信公众平台mp.weixin.qq.com", + "writingTipsOne3": "基本配置中,找到【设置--基本设置】,查看小程序是否认证,没有认证需要先进行认证", + "writingTipsTwo1": "再在【开发-开发管理-开发设置】中,配置开发者ID 里面的【IP白名单】,修改后保存。", + "writingTipsThree1": "在【开发-开发管理-开发设置】中,配置", + "writingTipsThree2": "request合法域名/ socket合法域名/ uploadFile合法域名/ downloadFile合法域名/ udp合法域名", + "writingTipsFour1": "在【开发-开发管理-开发设置】中,将", + "writingTipsFour2": "对应填写至服务器配置" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/channel.weapp.template.json b/admin/src/app/lang/zh-cn/channel.weapp.template.json new file mode 100644 index 0000000..3153e3f --- /dev/null +++ b/admin/src/app/lang/zh-cn/channel.weapp.template.json @@ -0,0 +1,22 @@ +{ + "name": "类型", + "response": "回复内容", + "isStart": "是否启用", + "serialNumber": "编号", + "operation": "操作", + "operationTip": "温馨提示", + "operationTipOne": "请在小程序的服务类目中添加类目:一级类目:商业服务 二级类目:软件/建站/技术开发", + "operationTipTwo": "小程序最多支持50个消息模板获取时请注意小程序剩余模板数量是否充足", + "buyerNews": "买家消息", + "sellerMessage": "卖家消息", + "started": "启用", + "closed": "禁用", + "close": "关闭", + "open": "开启", + "regain": "重新获取", + "weappAccessFlow": "接入流程", + "subscribeMessage": "订阅消息", + "weappRelease": "版本管理", + "batchAcquisition": "一键获取" + +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/channel.wechat.access.json b/admin/src/app/lang/zh-cn/channel.wechat.access.json new file mode 100644 index 0000000..43dd5cc --- /dev/null +++ b/admin/src/app/lang/zh-cn/channel.wechat.access.json @@ -0,0 +1,19 @@ +{ + "wechatAccessFlow": "接入流程", + "title": "微信公众号", + "wechatInlet": "微信公众号接入流程", + "wechatAttestation": "微信公众号认证", + "wechatAttestation1": "点击接入打开微信公众号官方,注册微信公众号后申请服务号认证,申请之后等待微信官方审核", + "clickAccess": "点击接入", + "wechatSetting": "微信公众号配置", + "wechatSetting1": "微信公众号认证之后配置微信公众号连接,具体查看配置与发布教程", + "settingInfo": "点击配置", + "wechatAccess": "微信公众号发布", + "releaseCourse": "发布教程", + "completeAccess": "完成接入", + "wechatSet": "公众号配置", + "customMenu": "自定义菜单", + "wechatAccessBtn": "查看审核进度", + "clickAccess2":"扫描二维码进入微信公众号", + "wechatTemplate": "模板消息" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/channel.wechat.config.json b/admin/src/app/lang/zh-cn/channel.wechat.config.json new file mode 100644 index 0000000..a86663f --- /dev/null +++ b/admin/src/app/lang/zh-cn/channel.wechat.config.json @@ -0,0 +1,33 @@ +{ + "wechatName": "公众号名称", + "wechatOriginal": "公众号原始ID", + "wechatQrcode": "公众号二维码", + "wechatQrcodeTips": "建议尺寸上传430px*430px宽高的二维码", + "wechatAppid": "开发者ID", + "wechatAppidTips": "开发者ID是公众号开发识别码,配合开发者密码可调用公众号的接口能力。", + "wechatAppsecret": "开发者密码", + "wechatAppsecretTips": "开发者密码是校验公众号开发者身份的密码,具有极高的安全性", + "businessDomain": "业务域名", + "jsSecureDomain": "JS接口安全域名", + "webAuthDomain": "网页授权域名", + "wechatInfo": "公众号信息", + "wechatDevelopInfo": "公众号开发信息", + "theServerSetting": "消息推送配置", + "functionSetting": "功能设置", + "functionSettingTips" : "在微信公众平台中,点击 设置与开发>公众号设置>功能设置,设置业务域名 JS接口安全域名 网页授权域名", + "tokenTips": "必须为英文或数字,长度为3-32字符。", + "encodingAESKeyTips": "消息加密密钥由43位字符组成,可随机修改,字符范围为A-Z,a-z,0-9。", + "encryptionType": "消息加解密方式", + "cleartextMode": "明文模式", + "compatibleMode": "兼容模式", + "safeMode": "安全模式(推荐)", + "wechatNamePlaceholder": "请输入公众号名称", + "wechatOriginalPlaceholder": "请输入公众号原始ID", + "appidPlaceholder": "请输入开发者ID", + "appSecretPlaceholder": "请输入开发者密码", + "tokenPlaceholder": "请输入Token", + "encodingAesKeyPlaceholder": "请输入EncodingAESKey", + "cleartextModeTips": "明文模式下,不使用消息体加解密功能,安全系数较低", + "compatibleModeTips": "兼容模式下,明文、密文将共存,方便开发者调试和维护", + "safeModeTips": "安全模式下,消息包为纯密文,需要开发者加密和解密,安全系数高" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/channel.wechat.course.json b/admin/src/app/lang/zh-cn/channel.wechat.course.json new file mode 100644 index 0000000..75d182b --- /dev/null +++ b/admin/src/app/lang/zh-cn/channel.wechat.course.json @@ -0,0 +1,10 @@ +{ + "writingTipsOne1": "登录", + "writingTipsOne2": "微信公众平台mp.weixin.qq.com", + "writingTipsOne3": "基本配置中,找到【服务器配置--修改配置】, 将", + "writingTipsOne4": "对应填写至服务器配置", + "writingTipsOne5": "填写完成之后提交。返回服务器配置,点击【启用】, 启用服务器配置。", + "writingTipsTwo1": "再在基本配置中,选择【IP白名单】,修改后保存。", + "writingTipsThree1": "进入【设置-公众号设置】,选择【功能设置】,", + "writingTipsThree2": "依次配置业务域名/ JS接口安全域名/网页授权域名" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/channel.wechat.menu.json b/admin/src/app/lang/zh-cn/channel.wechat.menu.json new file mode 100644 index 0000000..f4886bf --- /dev/null +++ b/admin/src/app/lang/zh-cn/channel.wechat.menu.json @@ -0,0 +1,23 @@ +{ + "menuNameInfo": "菜单信息", + "subMenuNameInfo": "子菜单信息", + "menuNameTips": "仅支持中英文和数字,字数不超过4个汉字或8个字母。", + "subMenuNameTips": "仅支持中英文和数字,字数不超过8个汉字或16个字母。", + "menuName": "名称", + "deleteMemu": "删除菜单", + "deleteMemuTips": "删除后,菜单下设置的内容全部将被删除", + "messageType": "消息类型", + "skipWebpage": "跳转网页", + "skipWeapp": "跳转小程序", + "webpageUrl": "网页链接", + "weappAppid": "小程序Appid", + "weappPage": "小程序页面路径", + "menuNamePlaceholder": "请输入菜单名称", + "webpageUrlPlaceholder": "请输入网页链接", + "weappAppidPlaceholder": "请输入小程序Appid", + "weappPagePlaceholder": "请输入小程序页面路径", + "wechatAccessFlow": "接入流程", + "customMenu": "自定义菜单", + "wechatTemplate": "模板消息", + "menusEmptyTips": "空菜单,不能保存与发布。" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/channel.wechat.template.json b/admin/src/app/lang/zh-cn/channel.wechat.template.json new file mode 100644 index 0000000..24550d4 --- /dev/null +++ b/admin/src/app/lang/zh-cn/channel.wechat.template.json @@ -0,0 +1,25 @@ +{ + "name": "类型", + "messageType": "消息类型", + "isStart": "是否启用", + "serialNumber": "编号", + "operation": "操作", + "operationTip": "温馨提示", + "operationTipOne": "请将微信公众平台的服务类目选择为:商业服务——>软件/建站/技术开发,生活服务——>百货/超市/便利店,工具—>信息查询,所选行业不一致将会导致模板消息不可用。", + "operationTipTwo": "公众号可设置20个服务类目,每月只能修改5次,请谨慎选择。", + "operationTipThree": "公众号最多支持25个模板消息获取时请注意公众号剩余模板数量是否充足", + "operationTipFour": "所需跳转到的小程序必须与发模板消息的公众号是绑定关联关系,暂不支持小游戏", + "buyerNews": "买家消息", + "sellerMessage": "卖家消息", + "started": "启用", + "closed": "禁用", + "close": "关闭", + "open": "开启", + "response": "回复内容", + "regain": "重新获取", + "batchAcquisition": "一键获取", + "wechatAccessFlow": "接入流程", + "customMenu": "自定义菜单", + "wechatTemplate": "模板消息", + "id": "id" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/decorate.edit.json b/admin/src/app/lang/zh-cn/decorate.edit.json new file mode 100644 index 0000000..c80ec21 --- /dev/null +++ b/admin/src/app/lang/zh-cn/decorate.edit.json @@ -0,0 +1,123 @@ +{ + "developTitle": "开发环境配置", + "wapDomain": "wap域名(WAP_DOMAIN)", + "wapDomainPlaceholder": "请输入wap域名", + "pageSet": "页面设置", + "tabEditContent": "内容", + "tabEditStyle": "样式", + "pageStyle": "页面样式", + "pageContent": "页面内容", + "pageName": "页面名称", + "pageNamePlaceholder": "请输入页面名称", + "pageBgColor": "页面颜色", + "bgUrl": "背景图片", + "marginSet": "边距设置", + "componentStyleTitle": "组件样式", + "bottomBgColor": "底部背景", + "bottomBgTips": "底部背景包含边距和圆角", + "componentBgColor": "组件背景", + "marginTop": "上边距", + "marginBottom": "下边距", + "marginBoth": "左右边距", + "topRounded": "上圆角", + "bottomRounded": "下圆角", + "warmPrompt": "温馨提示", + "leavePageTitleTips": "确定离开此页面?", + "leavePageContentTips": "系统可能不会保存您所做的更改。", + "decorating": "正在装修", + "moveUpComponent": "上移", + "moveDownComponent": "下移", + "copyComponent": "复制", + "delComponent": "删除", + "resetComponent": "重置", + "tabbar": "底部导航", + "tabbarSwitchTips": "此处控制当前页面底部导航菜单是否显示", + "link": "链接地址", + "delComponentTips": "确定要删除吗?", + "notCopy": "无法复制", + "componentCanOnlyAdd": "组件只能添加", + "piece": "个", + "resetComponentTips": "确认要重置组件默认数据吗?", + "image": "图片上传", + "imageUpload": "图片上传", + "imageSet": "图片设置", + "imageAdsTips": "建议上传尺寸相同的图片,推荐尺寸750*350", + "addImageAd": "添加图片", + "imageUrlTip": "请上传图片", + "imageHeight": "图片高度", + "imageHeightPlaceholder": "请输入图片高度", + "imageHeightRegNum": "图片高度格式错误,请输入数字", + "articleData": "文章数据", + "articleStyle": "文章样式", + "articleBgColor": "文章背景", + "dataSources": "数据来源", + "defaultSources": "默认", + "manualSelectionSources": "手动选择", + "articleNum": "文章数量", + "selectPlaceholder": "请选择", + "selectArticleTips": "文章选择", + "articleTitle": "标题", + "articleImage": "封面", + "articleCategoryName": "栏目", + "articleSummary": "摘要", + "selected": "已选", + "selectArticleTip": "请选择文章", + "graphicNavModeTitle": "导航模式", + "layoutMode": "排版模式", + "layoutModeHorizontal": "横排", + "layoutModeVertical": "竖排", + "graphicNavSelectMode": "选择模式", + "graphicNavModeGraphic": "图文导航", + "graphicNavModeImg": "图片导航", + "graphicNavModeText": "文字导航", + "graphicNavImageSet": "图片设置", + "graphicNavImageSize": "图片大小", + "graphicNavAroundRadius": "图片圆角", + "graphicNavShowStyle": "展示风格", + "graphicNavStyleFixed": "固定显示", + "graphicNavStyleSingleSlide": "单行滑动", + "graphicNavStylePageSlide": "分页滑动", + "graphicNavRowCount": "每行数量", + "graphicNavPageCount": "每行数量", + "graphicNavSetLabel": "导航设置", + "line": "行", + "graphicNavTips": "建议上传尺寸相同的图片,推荐尺寸60*60", + "graphicNavTitle": "标题", + "graphicNavTitlePlaceholder": "请输入标题", + "addGraphicNav": "添加导航", + "blankHeightSet": "高度设置", + "blankHeight": "空白高度", + "styleSet": "风格设置", + "titleStyle": "标题样式", + "selectStyle": "风格选择", + "titleContent": "标题内容", + "title": "标题名称", + "titlePlaceholder": "请输入标题", + "textAlign": "对齐方式", + "textAlignLeft": "居左", + "textAlignCenter": "居中", + "textSet": "文字设置", + "textFontSize": "文字大小", + "textFontWeight": "文字粗细", + "fontWeightBold": "加粗", + "fontWeightNormal": "常规", + "textColor": "文字颜色", + "subTitleContent": "标题内容", + "subTitle": "副标题", + "subTitlePlaceholder": "请输入副标题", + "moreContent": "“更多”按钮内容", + "more": "文字", + "morePlaceholder": "请输入文字", + "moreIsShow": "是否显示", + "memberStyle": "会员样式", + "template": "模板", + "imageGap": "图片间隙", + "rubikCubeStyle": "魔方样式", + "hotArea": "热区", + "hotAreaSet": "热区设置", + "addHotArea": "添加热区", + "selectedAfterHotArea": "个热区", + "hotAreaManage": "热区管理", + "selectedHotArea": "请选择热区", + "hotAreaLink": "的链接地址" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/decorate.preview.json b/admin/src/app/lang/zh-cn/decorate.preview.json new file mode 100644 index 0000000..b706dee --- /dev/null +++ b/admin/src/app/lang/zh-cn/decorate.preview.json @@ -0,0 +1,12 @@ +{ + "preview": "预览", + "weapp": "微信小程序", + "wechat": "微信公众号", + "link": "链接", + "copy": "复制", + "copySuccess": "复制成功", + "weappNotSet": "小程序未配置", + "developTitle": "开发环境配置", + "wapDomain": "wap域名(WAP_DOMAIN)", + "wapDomainPlaceholder": "请输入wap域名" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/dict.list.json b/admin/src/app/lang/zh-cn/dict.list.json new file mode 100644 index 0000000..0d8d795 --- /dev/null +++ b/admin/src/app/lang/zh-cn/dict.list.json @@ -0,0 +1,23 @@ +{ + "name":"字典名称", + "namePlaceholder":"请输入字典名称", + "key":"字典关键词", + "keyPlaceholder":"请输入字典关键词", + "data":"字典数据", + "dataPlaceholder":"请输入字典数据", + "memo":"备注", + "memoPlaceholder":"请输入备注", + "addDict":"添加数据字典", + "updateDict":"编辑数据字典", + "dictDeleteTips":"确定要删除该数据吗?", + "dictData":"数据管理", + "addDictData":"添加数据", + "editDictData":"编辑数据", + "dataName":"数据名称", + "dataNamePlaceholder":"请输入数据名称", + "dataValue":"数据值", + "dataValuePlaceholder":"请输入数据值", + "sortPlaceholder":"数值越大越排前", + "momePlaceholder":"请输入备注", + "createTime":"创建时间" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/diy.edit.json b/admin/src/app/lang/zh-cn/diy.edit.json new file mode 100644 index 0000000..4142ac2 --- /dev/null +++ b/admin/src/app/lang/zh-cn/diy.edit.json @@ -0,0 +1,192 @@ +{ + "templatePagePlaceholder": "选择模板", + "templatePageEmpty": "无", + "changeTemplatePageTips":"切换模板后,当前页面内容将被替换且不被保存,请谨慎操作", + "developTitle": "开发环境配置", + "wapDomain": "wap域名(WAP_DOMAIN)", + "wapDomainPlaceholder": "请输入wap域名", + "pageSet": "页面设置", + "tabEditContent": "内容", + "tabEditStyle": "样式", + "pageStyle": "页面样式", + "pageContent": "页面内容", + "pageName": "页面名称", + "pageNamePlaceholder": "请输入页面名称", + "pageBgColor": "页面颜色", + "bgUrl": "背景图片", + "marginSet": "边距设置", + "componentStyleTitle": "组件样式", + "bottomBgColor": "底部背景", + "bottomBgTips": "底部背景包含边距和圆角", + "componentBgColor": "组件背景", + "marginTop": "上边距", + "marginBottom": "下边距", + "marginBoth": "左右边距", + "topRounded": "上圆角", + "bottomRounded": "下圆角", + "warmPrompt": "温馨提示", + "leavePageTitleTips": "确定离开此页面?", + "leavePageContentTips": "系统可能不会保存您所做的更改。", + "decorating": "正在装修", + "preview": "保存并预览", + "moveUpComponent": "上移", + "moveDownComponent": "下移", + "copyComponent": "复制", + "delComponent": "删除", + "resetComponent": "重置", + "tabbar": "底部导航", + "tabbarSwitchTips": "此处控制当前页面底部导航菜单是否显示", + "link": "链接地址", + "delComponentTips": "确认要删除当前组件吗?", + "notCopy": "无法复制", + "componentCanOnlyAdd": "组件只能添加", + "piece": "个", + "resetComponentTips": "确认要重置组件默认数据吗?", + "image": "图片上传", + "imageUpload": "图片上传", + "imageSet": "图片设置", + "imageAdsTips": "建议上传尺寸相同的图片,推荐尺寸750*350", + "addImageAd": "添加图片", + "imageUrlTip": "请上传图片", + "imageHeight": "图片高度", + "imageHeightPlaceholder": "请输入图片高度", + "imageHeightRegNum": "图片高度格式错误,请输入数字", + "articleData": "文章数据", + "articleStyle": "文章样式", + "articleBgColor": "文章背景", + "dataSources": "数据来源", + "defaultSources": "默认", + "manualSelectionSources": "手动选择", + "articleNum": "文章数量", + "selectPlaceholder": "请选择", + "selectArticleTips": "文章选择", + "articleTitle": "标题", + "articleImage": "封面", + "articleCategoryName": "栏目", + "articleSummary": "摘要", + "selected": "已选", + "selectArticleTip": "请选择文章", + "graphicNavModeTitle": "导航模式", + "layoutMode": "排版模式", + "layoutModeHorizontal": "横排", + "layoutModeVertical": "竖排", + "graphicNavSelectMode": "选择模式", + "graphicNavModeGraphic": "图文导航", + "graphicNavModeImg": "图片导航", + "graphicNavModeText": "文字导航", + "graphicNavImageSet": "图片设置", + "graphicNavImageSize": "图片大小", + "graphicNavAroundRadius": "图片圆角", + "graphicNavShowStyle": "展示风格", + "graphicNavStyleFixed": "固定显示", + "graphicNavStyleSingleSlide": "单行滑动", + "graphicNavStylePageSlide": "分页滑动", + "graphicNavRowCount": "每行数量", + "graphicNavPageCount": "每行数量", + "graphicNavSetLabel": "导航设置", + "line": "行", + "graphicNavTips": "建议上传尺寸相同的图片,推荐尺寸60*60", + "graphicNavTitle": "标题", + "graphicNavTitlePlaceholder": "请输入标题", + "subGraphicNavTitle": "副标题", + "subGraphicNavTitlePlaceholder": "请输入副标题", + "subGraphicNavTitleLink": "副标题链接", + "addGraphicNav": "添加导航", + "blankHeightSet": "高度设置", + "blankHeight": "空白高度", + "styleSet": "风格设置", + "titleStyle": "标题样式", + "selectStyle": "风格选择", + "titleContent": "标题内容", + "title": "标题名称", + "titlePlaceholder": "请输入标题", + "textAlign": "对齐方式", + "textAlignLeft": "居左", + "textAlignCenter": "居中", + "textSet": "文字设置", + "textFontSize": "文字大小", + "textFontWeight": "文字粗细", + "fontWeightBold": "加粗", + "fontWeightNormal": "常规", + "textColor": "文字颜色", + "subTextColor": "副标题颜色", + "subTitleContent": "标题内容", + "subTitle": "副标题", + "subTitlePlaceholder": "请输入副标题", + "moreContent": "“更多”按钮内容", + "more": "文字", + "morePlaceholder": "请输入文字", + "moreIsShow": "是否显示", + "memberStyle": "会员样式", + "template": "模板", + "imageGap": "图片间隙", + "rubikCubeStyle": "魔方样式", + "rubikCubeLayout": "魔方布局", + "hotArea": "热区", + "hotAreaSet": "热区设置", + "hotAreaBackground": "热区背景", + "addHotArea": "添加热区", + "clickSet": "点击设置", + "selectedAfterHotArea": "个热区", + "hotAreaManage": "热区管理", + "selectedHotArea": "请选择热区", + "hotAreaLink": "的链接地址", + "addonListSet": "应用设置", + "addonListTips": "应用选择", + "selectAddonTips": "请选择应用", + "addonTitle": "应用名称", + "addonDesc": "应用描述", + "addonIcon": "应用图标", + "selectAddon": "选择应用", + "addAddon": "添加应用", + "travel": "旅游", + "tickets": "门票", + "hotel": "酒店", + "travelNum": "线路数量", + "ticketsNum": "景点数量", + "hotelNum": "酒店数量", + "serve": "项目", + "serveNum": "项目数量", + "card": "卡项", + "cardNum": "卡项数量", + "isSet": "会员设置", + "isMemberCode": "会员码", + "show": "显示", + "hideen": "隐藏", + "nicknameStyle": "昵称样式", + "UIDStyle": "UID样式", + "accountStyle": "积分/余额样式", + "accountNumberColor": "数值颜色", + "accountNumberWeight": "数值粗细", + "goodsCategoryTitle":"商品分类", + "customGoods":"手动选择", + "goodsNum":"商品数量", + "selectCategory":"选择分类", + "categoryName": "分类名称", + "categoryImage": "分类图片", + "selectSource": "选择数据源", + "goodsSelectPopupSelectGoodsButton": "选择商品", + "goodsSelectPopupSelect": "已选", + "goodsSelectPopupPiece": "个", + "goodsSelectPopupSelectGoodsDialog": "商品选择", + "goodsSelectPopupAllGoods": "全部商品", + "goodsSelectPopupSelectedGoods": "已选商品", + "goodsSelectPopupGoodsName": "商品名称", + "goodsSelectPopupGoodsNamePlaceholder": "请输入商品名称", + "goodsSelectPopupGoodsCategory": "商品分类", + "goodsSelectPopupGoodsCategoryPlaceholder": "全部", + "goodsSelectPopupGoodsType": "商品类型", + "goodsSelectPopupGoodsTypePlaceholder": "请选择商品类型", + "goodsSelectPopupGoodsInfo": "商品", + "goodsSelectPopupPrice": "价格", + "goodsSelectPopupStock": "库存", + "goodsSelectPopupBeforeTip": "已选择", + "goodsSelectPopupAfterTip": "个商品", + "goodsSelectPopupClearGoods": "取消选择", + "goodsSelectPopupGoodsMinTip": "所选商品数量不能少于", + "goodsSelectPopupGoodsMaxTip": "所选商品数量不能超过", + "confirm": "确定", + "cancel": "取消" + + +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/diy.index.json b/admin/src/app/lang/zh-cn/diy.index.json new file mode 100644 index 0000000..12c473e --- /dev/null +++ b/admin/src/app/lang/zh-cn/diy.index.json @@ -0,0 +1,12 @@ +{ + "decorate": "装修", + "changePage": "设置", + "preview": "预览", + "developTitle": "开发环境配置", + "wapDomain": "wap域名(WAP_DOMAIN)", + "wapDomainPlaceholder": "请输入wap域名", + "settingTips": "点击查看如何配置", + "link": "链接", + "copy": "复制", + "scanQRCodeOnRight": "扫描右侧二维码查看" +} diff --git a/admin/src/app/lang/zh-cn/diy.list.json b/admin/src/app/lang/zh-cn/diy.list.json new file mode 100644 index 0000000..8b008a8 --- /dev/null +++ b/admin/src/app/lang/zh-cn/diy.list.json @@ -0,0 +1,33 @@ +{ + "title": "页面名称", + "typeName": "页面类型", + "forAddon": "所属插件", + "addPageTips": "创建新页面", + "pageTypePlaceholder": "请选择页面类型", + "nameMax": "名称不能超过12个字符", + "status": "状态", + "updateTime": "更新时间", + "use": "使用", + "isUse": "使用中", + "unused": "未使用", + "all": "全部", + "wapUrl": "wap链接", + "weappUrl": "小程序链接", + "shareLink": "分享链接", + "copy": "复制", + "copySuccess": "复制成功", + "titlePlaceholder": "请输入页面名称", + "addDiyPage": "添加页面", + "diyPageDeleteTips": "确定要删除该自定义页面吗?", + "promote": "推广", + "share": "分享", + "shareSet": "分享设置", + "sharePage": "分享页面", + "wechat": "微信公众号", + "weapp": "微信小程序", + "shareTitle": "分享标题", + "shareTitlePlaceholder": "请输入分享标题", + "shareDesc": "分享描述", + "shareDescPlaceholder": "请输入分享描述", + "shareImageUrl": "分享图片" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/diy.member.json b/admin/src/app/lang/zh-cn/diy.member.json new file mode 100644 index 0000000..86c6e79 --- /dev/null +++ b/admin/src/app/lang/zh-cn/diy.member.json @@ -0,0 +1,13 @@ +{ + "decorate": "装修", + "changePage": "设置", + "preview": "预览", + "pageSelectTips": "页面选择", + "developTitle": "开发环境配置", + "wapDomain": "wap域名(WAP_DOMAIN)", + "wapDomainPlaceholder": "请输入wap域名", + "settingTips": "点击查看如何配置", + "link": "链接", + "copy": "复制", + "scanQRCodeOnRight": "扫描右侧二维码查看" +} diff --git a/admin/src/app/lang/zh-cn/diy.preview.json b/admin/src/app/lang/zh-cn/diy.preview.json new file mode 100644 index 0000000..b69d5ec --- /dev/null +++ b/admin/src/app/lang/zh-cn/diy.preview.json @@ -0,0 +1,13 @@ +{ + "preview": "预览", + "h5": "H5", + "weapp": "微信小程序", + "wechat": "微信公众号", + "link": "链接", + "copy": "复制", + "copySuccess": "复制成功", + "weappNotSet": "小程序未配置", + "developTitle": "开发环境配置", + "wapDomain": "wap域名(WAP_DOMAIN)", + "wapDomainPlaceholder": "请输入wap域名" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/diy.route.json b/admin/src/app/lang/zh-cn/diy.route.json new file mode 100644 index 0000000..175a8b4 --- /dev/null +++ b/admin/src/app/lang/zh-cn/diy.route.json @@ -0,0 +1,22 @@ +{ + "title": "页面名称", + "forAddon": "所属插件", + "all": "全部", + "wapUrl": "wap链接", + "weappUrl": "小程序链接", + "shareLink": "分享链接", + "copy": "复制", + "copySuccess": "复制成功", + "titlePlaceholder": "请输入页面名称", + "promote": "推广", + "share": "分享", + "shareSet": "分享设置", + "sharePage": "分享页面", + "wechat": "微信公众号", + "weapp": "微信小程序", + "shareTitle": "分享标题", + "shareTitlePlaceholder": "请输入分享标题", + "shareDesc": "分享描述", + "shareDescPlaceholder": "请输入分享描述", + "shareImageUrl": "分享图片" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/diy.tabbar.json b/admin/src/app/lang/zh-cn/diy.tabbar.json new file mode 100644 index 0000000..97c4815 --- /dev/null +++ b/admin/src/app/lang/zh-cn/diy.tabbar.json @@ -0,0 +1,4 @@ +{ + "title": "插件名称", + "key": "插件标识" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/diy.tabbar_edit.json b/admin/src/app/lang/zh-cn/diy.tabbar_edit.json new file mode 100644 index 0000000..80526f1 --- /dev/null +++ b/admin/src/app/lang/zh-cn/diy.tabbar_edit.json @@ -0,0 +1,30 @@ +{ + "leastTwoNav": "至少添加2个导航", + "pleaseUpload": "请上传第[", + "pleaseEnter": "请输入第[", + "pleaseChoose": "请选择第[", + "navIcon": "]个图标", + "navSelectIcon": "]个选中图标", + "navTitle": "]个导航标题", + "navLink": "]个导航链接", + "backgroundColor": "背景颜色", + "imageText": "图文", + "image": "图片", + "text": "文字", + "textColor": "文字颜色", + "textSelectColor": "文字选中颜色", + "reset": "重置", + "navType": "导航类型", + "styleSet": "样式设置", + "addnav": "添加导航", + "navLinkOne": "导航链接", + "navTitleOne": "导航标题", + "titleContent": "请输入标题内容", + "navIconOne": "导航图标", + "navImage": "导航图片", + "editing": "正在编辑", + "bottomNav": "底部导航", + "bottomNavHint": "设置至少添加2个导航,最多添加5个导航", + "uploadImgUnselected": "未选中", + "uploadImgSelected": "选中" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/finance.account.json b/admin/src/app/lang/zh-cn/finance.account.json new file mode 100644 index 0000000..3039180 --- /dev/null +++ b/admin/src/app/lang/zh-cn/finance.account.json @@ -0,0 +1,27 @@ +{ + "id":"主键", + "accountDetail":"账单详情", + "detail":"详情", + "type":"账单类型", + "money":"账单金额", + "moneyPlaceholder":"请输入账单金额", + "tradeNo":"账单编号", + "tradeNoPlaceholder":"请输入账单编号", + "createTime":"账单日期", + "totalPay":"累计收款(元)", + "totalRefund":"累计退款(元)", + "totalTransfer":"累计转账(元)", + "accountType": "请选择账单类型", + "startDate": "开始时间", + "endDate": "结束时间", + "transferNo" : "转账单号", + "transferTime": "转账时间", + "transferType": "转账类型", + "transferMoney": "转账金额", + "transferRemark": "转账说明", + "outTradeNo": "单号", + "refundMoney": "退款金额", + "failReason": "退款说明", + "body": "说明", + "all": "全部" +} diff --git a/admin/src/app/lang/zh-cn/finance.cash_out.json b/admin/src/app/lang/zh-cn/finance.cash_out.json new file mode 100644 index 0000000..fdd439c --- /dev/null +++ b/admin/src/app/lang/zh-cn/finance.cash_out.json @@ -0,0 +1,48 @@ +{ + "orderNo":"订单编号", + "orderStatus":"订单状态", + "orderNoPlaceholder":"请输入订单编号", + "createTime":"创建时间", + "rechargeMoney":"充值金额", + "totalTransfered":"累计提现(元)", + "totalCashOuting":"提现中(元)", + "transfered":"累计提现", + "cashOuting":"提现中", + "orderMoney":"订单金额", + "member":"买家", + "orderFromName":"订单来源", + "payTypeName":"支付方式", + "startDate":"开始时间", + "endDate":"结束时间", + "namePlaceholder":"请选择", + "applyTime":"申请时间", + "cashOutStatus":"提现状态", + "actualTransferAmount":"实际转账金额", + "cashOutCommission":"提现手续费", + "applicationForWithdrawalAmount":"申请提现金额", + "cashOutMethod":"提现方式", + "cashOutAccountType":"会员账户", + "memberInfo":"会员信息", + "toBeReviewed":"待审核", + "toBeTransferred":"待转账", + "transferred":"已转账", + "turnDown":"拒绝", + "transfer": "转账", + "detail": "详情", + "auditFailure": "审核失败", + "successfulAudit": "审核成功", + "rejectionAudit": "拒绝审核", + "reasonsRefusal": "拒绝理由", + "reasonsRefusalPlaceholder": "请输入拒绝理由", + "isTransfer": "是否确认转账", + "nickname":"会员名称", + "headimg":"会员头像", + "cashOutDetail":"提现详情", + "cashOutMoney": "转账金额", + "auditTime": "审核时间", + "transferTime": "转账时间", + "memberInfoPlaceholder":"请输入会员名称/会员昵称/手机号", + "cashOutNumber": "提现单号", + "cashOutNumberPlaceholder": "请输入提现单号" + +} diff --git a/admin/src/app/lang/zh-cn/finance.offlinepay.json b/admin/src/app/lang/zh-cn/finance.offlinepay.json new file mode 100644 index 0000000..edfd911 --- /dev/null +++ b/admin/src/app/lang/zh-cn/finance.offlinepay.json @@ -0,0 +1,18 @@ +{ + "money":"支付金额", + "outTradeNo": "交易流水号", + "voucher": "支付凭证", + "body": "支付内容", + "pass": "通过", + "refuse": "拒绝", + "refuseReason": "拒绝原因", + "passTips": "确认要通过该支付单据吗?", + "startDate": "开始时间", + "endDate": "结束时间", + "outTradeNoPlaceholder":"请输入交易流水号", + "detail": "详情", + "waitAudit": "待审核", + "passed": "已通过", + "notPass": "未通过", + "all": "全部" +} diff --git a/admin/src/app/lang/zh-cn/finance.pay_detail.json b/admin/src/app/lang/zh-cn/finance.pay_detail.json new file mode 100644 index 0000000..9af723c --- /dev/null +++ b/admin/src/app/lang/zh-cn/finance.pay_detail.json @@ -0,0 +1,18 @@ +{ + "pass": "通过", + "refuse": "拒绝", + "refuseReason": "拒绝原因", + "passTips": "确认要通过该支付单据吗?", + "outTradeNo": "交易单号", + "createTime": "交易时间", + "money": "交易金额", + "body": "交易内容", + "channel": "支付场景", + "payStatus": "支付状态", + "payType": "支付方式", + "payTime": "支付时间", + "failTime": "失败时间", + "failReason": "失败原因", + "voucher": "支付凭证", + "auditVoucher": "审核支付凭证" +} diff --git a/admin/src/app/lang/zh-cn/finance.pay_refund.json b/admin/src/app/lang/zh-cn/finance.pay_refund.json new file mode 100644 index 0000000..0b186fa --- /dev/null +++ b/admin/src/app/lang/zh-cn/finance.pay_refund.json @@ -0,0 +1,10 @@ +{ + "refundNo": "退款编号", + "refundMoney": "退款金额", + "payType": "支付类型", + "status": "退款状态", + "createTime": "申请时间", + "refundNoPlaceholder": "请输入退款编号", + "startDate": "开始时间", + "endDate": "结束时间" +} diff --git a/admin/src/app/lang/zh-cn/finance.refund_detail.json b/admin/src/app/lang/zh-cn/finance.refund_detail.json new file mode 100644 index 0000000..a3c072a --- /dev/null +++ b/admin/src/app/lang/zh-cn/finance.refund_detail.json @@ -0,0 +1,16 @@ +{ + "refundNo": "退款编号", + "refundMoney": "退款金额", + "payType": "支付类型", + "status": "退款状态", + "createTime": "申请时间", + "refundNoPlaceholder": "请输入退款编号", + "startDate": "开始时间", + "endDate": "结束时间", + "outTradeNo": "交易流水号", + "refundTypeName": "退款方式", + "statusName": "退款状态", + "transfer": "转账", + "transferType": "转账方式", + "voucher": "凭证" +} diff --git a/admin/src/app/lang/zh-cn/index.app_manage.json b/admin/src/app/lang/zh-cn/index.app_manage.json new file mode 100644 index 0000000..43119f8 --- /dev/null +++ b/admin/src/app/lang/zh-cn/index.app_manage.json @@ -0,0 +1,10 @@ +{ + "app": "应用中心", + "descriptionLeft": "暂无安装任何应用,请点击", + "link": "安装应用", + "descriptionRight": "安装使用", + "niucloud": "Niucloud官网", + "appStore": "安装应用", + "versionInfo":"版本信息:", + "currentVersion":"当前版本" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/index.index.json b/admin/src/app/lang/zh-cn/index.index.json new file mode 100644 index 0000000..41c3acd --- /dev/null +++ b/admin/src/app/lang/zh-cn/index.index.json @@ -0,0 +1,51 @@ +{ + "dataSummarize": "数据概况", + "todayData": "今日数据", + "memberNumb": "新增会员数", + "orderMoney": "订单金额", + "numberOfSites": "站点数量", + "numberOfVisitors": "今日访客数", + "commonlyUsedFunction": "常用功能", + "articleList": "文章列表", + "memberManagement": "会员管理", + "balanceAccount": "余额账户", + "administrator": "站点用户", + "WebDecoration": "网站装修", + "accessMessage": "访问消息", + "memberDistribution": "会员分布", + "systemInfo": "系统环境", + "os": "操作系统:", + "phpVersions": "PHP版本号:", + "productionEnvironment": "生产环境:", + "versionsInfo": "版本信息", + "versions": "当前版本", + "frame": "基于框架", + "channel": "获取渠道", + "serviceSupport": "官方客服", + "officialWbsite": "官网", + "pageView": "访问量", + "siteInfo":"站点信息", + "siteName":"站点名称", + "groupName":"站点套餐", + "expireTime":"过期时间", + "permanent":"永久", + "statusName":"站点状态", + "newSiteSum": "新增站点数", + "total": "总计", + "newMemberSum": "新增用户数", + "siteList": "站点列表", + "sitePackage": "站点套餐", + "newSite": "新增站点", + "appMarketplace": "应用市场", + "siteDistribution": "站点分布", + "normalSiteSum": "正常站点(个)", + "expireSiteSum": "过期站点(个)", + "noInstallAppSun": "未安装应用(个)", + "installAppSun": "已安装应用(个)", + "officialAccount": "Niucloud官方公众号", + "officialAccountDesc": "微信扫码关注", + "WeCom": "客服二维码", + "WeComDesc": "扫码联系客服", + "tel": "服务热线:", + "newVersion": "最新版本" +} diff --git a/admin/src/app/lang/zh-cn/index.preview.json b/admin/src/app/lang/zh-cn/index.preview.json new file mode 100644 index 0000000..b706dee --- /dev/null +++ b/admin/src/app/lang/zh-cn/index.preview.json @@ -0,0 +1,12 @@ +{ + "preview": "预览", + "weapp": "微信小程序", + "wechat": "微信公众号", + "link": "链接", + "copy": "复制", + "copySuccess": "复制成功", + "weappNotSet": "小程序未配置", + "developTitle": "开发环境配置", + "wapDomain": "wap域名(WAP_DOMAIN)", + "wapDomainPlaceholder": "请输入wap域名" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/index.site_index.json b/admin/src/app/lang/zh-cn/index.site_index.json new file mode 100644 index 0000000..8c5a36f --- /dev/null +++ b/admin/src/app/lang/zh-cn/index.site_index.json @@ -0,0 +1,67 @@ +{ + "todayData": "实时概况", + "memberNumb": "新增会员数(人)", + "orderMoney": "订单金额(元)", + "numberOfSites": "站点数量", + "numberOfVisitors": "今日访客数(人)", + "commonlyUsedFunction": "常用功能", + "articleList": "文章列表", + "memberManagement": "会员管理", + "balanceAccount": "余额账户", + "administrator": "管理员", + "WebDecoration": "网站装修", + "accessMessage": "访问消息", + "memberDistribution": "会员分布", + "systemInfo": "系统环境", + "os": "操作系统", + "phpVersions": "PHP版本号", + "productionEnvironment": "生产环境", + "versionsInfo": "版本信息", + "versions": "当前版本", + "frame": "基于框架", + "channel": "获取渠道", + "serviceSupport": "服务支持", + "officialWbsite": "官网", + "pageView": "访客数(人)", + "siteInfo":"站点信息", + "siteName":"站点名称", + "groupName":"站点套餐", + "expireTime":"过期时间", + "permanent":"永久", + "statusName":"站点状态", + "orderNumber": "订单数(笔)", + "wechatCode": "公众号二维码", + "wechatCodeDesc": "微信扫码关注", + "enterpriseWechatCode": "客服二维码", + "enterpriseWechatCodeDesc": "扫码联系客服", + "tel": "服务热线:", + "message": "请联系客服", + "messageTitle": "提示", + "accumulative":"累计", + "officialAccount": "Niucloud官方公众号", + "officialAccountDesc": "微信扫码关注", + "WeCom": "添加企业微信群", + "path": "地址", + "menuName": "名称", + "menuNamePlaceholder": "模版名称", + "menuBgColor": "背景颜色", + "menuImg": "选择图标", + "menuDesc": "描述", + "addShortcutMenu": "添加快捷模版", + "appTemplate": "应用模块", + "siteType": "站点类型", + "periodTime": "有效期", + "renew": "续费", + "selectModel": "选择模块", + "addMenu": "添加模块", + "shortcutLink": "模版", + "emptyMenu": "暂无快捷模块", + "select": "选择", + "custom": "自定义", + "accessSite": "访问站点", + "pathSelect": "选择模块", + "bgColorPlaceholder": "请选择背景色", + "iconPlaceholder": "请选择图标", + "pathPlaceholder": "请选择链接", + "descPlaceholder": "输入描述语…" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/index.store.json b/admin/src/app/lang/zh-cn/index.store.json new file mode 100644 index 0000000..7a8ca3d --- /dev/null +++ b/admin/src/app/lang/zh-cn/index.store.json @@ -0,0 +1,75 @@ +{ + "search":"搜索应用名称", + "appName":"应用名/版本信息", + "introduction":"简介", + "type":"类型", + "app":"应用", + "addon":"插件", + "noPlug":"暂无应用", + "install":"安装", + "unload":"卸载", + "installLabel":"已安装", + "uninstalledLabel":"未安装", + "version":"版本", + "title":"名称", + "desc":"简介", + "plugDetail": "插件信息", + "author": "作者", + "detail":"详情", + "addonInstall": "插件安装", + "dirPermission": "目录读写权限", + "path": "路径", + "demand": "要求", + "readable": "可读", + "write": "可写", + "packageManageTool": "包管理工具", + "name": "名称", + "addonInstallSuccess": "插件安装成功", + "envCheck": "环境检查", + "installProgress": "安装进度", + "installComplete": "安装完成", + "localAppText":"插件管理", + "marketAppText":"官方市场", + "installShowDialogCloseTips": "安装任务尚未完成,关闭将取消安装任务,是否要继续关闭?", + "marketDevelopMessage":"官方市场正在开发中!", + "jobError": "任务队列未启动 请在服务端源码部署目录打开终端执行 php think queue:listen", + "conflictFiles": "冲突文件", + "process": "启动进程", + "open": "开启", + "down": "下载", + "installDown":"未安装(重新下载)", + "unloadDown":"已安装(重新下载)", + "addonVersion": "插件版本", + "versionCode": "版本号", + "createTime": "发布时间", + "buyLabel": "已购买", + "installTips": "安装后需手动更新插件引用的依赖和编译各个端口的前端源码", + "localInstall":"本地安装", + "cloudInstall": "一键云安装", + "cloudInstallTips": "云安装可实现一键安装,安装后无需手动更新依赖和编译前端源码", + "installingTips": "有插件正在安装中请等待安装完成之后再进行其他操作,点击查看", + "installPercent": "安装进度", + "downloading": "下载中", + "authTips": "云安装需先绑定授权码,如果已有授权请先进行绑定,没有授权可到niucloud官网购买云服务之后再进行操作", + "toBind": "绑定授权", + "toNiucloud": "去niucloud官网", + "descriptionLeft": "暂无任何应用,马上去", + "buyDescriptionLeft": "您还没有购买过应用,马上去", + "link": "官方应用市场", + "descriptionRight": "逛逛", + "installed-empty": "暂未安装任何应用", + "siteAddressTips": "授权域名不匹配", + "authCodePlaceholder": "请输入授权码", + "authSecretPlaceholder": "请输入授权秘钥", + "updateCode": "重新绑定", + "notHaveAuth": "还没有授权?去购买", + "authInfoTips": "授权码和授权秘钥可在Niucloud官网我的授权 授权详情中查看", + "addonUninstall": "插件卸载", + "appIdentification":"应用标识", + "tipText":"标识指开发应用或插件的文件夹名称", + "uninstallTips": "卸载插件将会移除admin web uni-app目录下该插件的内容,是否要继续进行卸载?", + "upgrade": "升级", + "newVersion": "最新版本", + "cloudBuild": "云编译", + "cloudBuildTips": "是否要进行云编译该操作可能会影响到正在访问的客户是否要继续操作?" +} diff --git a/admin/src/app/lang/zh-cn/login.json b/admin/src/app/lang/zh-cn/login.json new file mode 100644 index 0000000..a748713 --- /dev/null +++ b/admin/src/app/lang/zh-cn/login.json @@ -0,0 +1,12 @@ +{ + "siteTitle": "NIUCLOUD-ADMIN", + "siteDesc": "基于thinkphp6+elementplus+typescript等技术的多端saas通用管理框架,采用restful的api接口设计,前后端完全分离,同时支持多语言开发。", + "logging": "登录中", + "platform": "管理端", + "login" : "登录", + "siteLogin": "站点登录", + "adminLogin": "平台登录", + "userPlaceholder": "请输入您的账号", + "passwordPlaceholder": "请输入您的密码", + "manageAdminFramework": "管理系统后台框架" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/member.balance.json b/admin/src/app/lang/zh-cn/member.balance.json new file mode 100644 index 0000000..a5758e2 --- /dev/null +++ b/admin/src/app/lang/zh-cn/member.balance.json @@ -0,0 +1,34 @@ +{ + "memberId":"会员编号", + "accountData":"变动金额", + "fromType":"来源/用途", + "balanceInfo":"余额变动详情", + "memberInfo":"会员信息", + "memo":"备注", + "mobile":"手机号码", + "nickName":"会员昵称", + "headimg":"会员头像", + "createTime":"发生时间", + "startDate":"开始时间", + "endDate":"结束时间", + "searchMember":"昵称/手机号", + "searchMemberPlaceholder":"请输入会员昵称/手机号码", + "memberIdPlaceholder":"请输入会员id", + "accountTypePlaceholder":"请输入账户类型", + "accountDataPlaceholder":"请输入账户数据", + "fromTypePlaceholder":"请输入来源类型", + "relatedIdPlaceholder":"请输入关联Id", + "createTimePlaceholder":"请输入创建时间", + "memoPlaceholder":"请输入备注信息", + "addMemberAccountLog":"添加会员账单表", + "updateMemberAccountLog":"编辑会员账单表", + "memberAccountLogDeleteTips":"确定要删除该会员账单表吗?", + "totalAllBalance": "余额(元)", + "totalBalance": "不可提现(元)", + "totalMoney": "可提现(元)", + "balance": "不可提现", + "money":"可提现", + "balanceType":"账户类型", + "accountSum" : "剩余金额", + "memberInfoPlaceholder":"请输入会员编号/昵称/手机号" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/member.commission.json b/admin/src/app/lang/zh-cn/member.commission.json new file mode 100644 index 0000000..0399136 --- /dev/null +++ b/admin/src/app/lang/zh-cn/member.commission.json @@ -0,0 +1,33 @@ +{ + "totalCommission":"累计佣金(元)", + "commission":"未提现佣金(元)", + "withdrawnCommission":"已提现佣金(元)", + "cashOutingCommission":"提现中佣金(元)", + "accountData":"变动金额", + "memberId":"会员编号", + "accountSum":"剩余金额", + "fromType":"来源/用途", + "moneyInfo":"佣金变动详情", + "memo":"备注", + "mobile":"手机号码", + "nickName":"会员信息", + "headimg":"会员头像", + "createTime":"发生时间", + "startDate":"开始时间", + "endDate":"结束时间", + "searchMember":"昵称/手机号", + "searchMemberPlaceholder":"请输入会员昵称/手机号码", + "memberIdPlaceholder":"请输入会员id", + "accountTypePlaceholder":"请输入账户类型", + "accountDataPlaceholder":"请输入账户数据", + "fromTypePlaceholder":"请输入来源类型", + "relatedIdPlaceholder":"请输入关联Id", + "createTimePlaceholder":"请输入创建时间", + "memoPlaceholder":"请输入备注信息", + "addMemberAccountLog":"添加会员账单表", + "updateMemberAccountLog":"编辑会员账单表", + "member_account_logDeleteTips":"确定要删除该会员账单表吗?", + "memberInfo":"会员信息", + "memberInfoPlaceholder":"请输入会员编号/昵称/手机号" + +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/member.label.edit.json b/admin/src/app/lang/zh-cn/member.label.edit.json new file mode 100644 index 0000000..ff8a0c7 --- /dev/null +++ b/admin/src/app/lang/zh-cn/member.label.edit.json @@ -0,0 +1,13 @@ +{ + "siteId":"站点id", + "labelName":"标签名称", + "memo":"备注", + "sort":"排序", + "siteIdPlaceholder":"请输入站点id", + "labelNamePlaceholder":"请输入标签名称", + "memoPlaceholder":"请输入备注", + "sortPlaceholder":"请输入排序", + "addMemberLabel":"添加会员标签", + "updateMemberLabel":"编辑会员标签", + "memberLabelDeleteTips":"确定要删除该会员标签吗?" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/member.label.json b/admin/src/app/lang/zh-cn/member.label.json new file mode 100644 index 0000000..f70bf73 --- /dev/null +++ b/admin/src/app/lang/zh-cn/member.label.json @@ -0,0 +1,18 @@ +{ + "labelName":"标签名称", + "memberNumber":"会员数量", + "memo":"备注", + "sort":"排序", + "siteIdPlaceholder":"请输入站点id", + "labelNamePlaceholder":"请输入标签名称", + "memoPlaceholder":"请输入备注", + "sortPlaceholder":"请输入排序", + "createTimePlaceholder":"请输入添加时间", + "updateTimePlaceholder":"请输入更新时间", + "addMemberLabel":"添加会员标签", + "updateMemberLabel":"编辑会员标签", + "sortVerifyOne":"排序要大于零", + "sortVerifyTwo":"排序不能是小数", + "memberLabelDeleteTips":"确定要删除该会员标签吗?" + +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/member.member.json b/admin/src/app/lang/zh-cn/member.member.json new file mode 100644 index 0000000..5f9176a --- /dev/null +++ b/admin/src/app/lang/zh-cn/member.member.json @@ -0,0 +1,53 @@ +{ + "registerChannel":"注册来源", + "nickname":"会员名称", + "memberNo":"会员编号", + "mobile":"手机号", + "createTime":"注册时间", + "lastVisitTime":"最后访问时间", + "addMember":"添加会员", + "updateMember":"编辑会员", + "nickNamePlaceholder":"请输入会员名称", + "mobilePlaceholder":"请输入手机号", + "channelPlaceholder":"请选择注册类型", + "memberNoPlaceholder":"请选择会员编号", + "memberDeleteTips" : "确定要删除该会员吗?", + "detail": "详情", + "edit": "编辑", + "memberDelete":"删除", + "adjust":"调整", + "startDate": "开始时间", + "endDate": "结束时间", + "essentialInfo": "基本信息", + "accountInfo": "账户信息", + "registeredSource": "注册来源", + "memberLabel": "会员标签", + "urserName": "用户名", + "point": "积分", + "balance": "余额", + "growth": "成长值", + "memo":"备注", + "adjustPoint":"调整积分", + "detaBirth": "出生日期", + "sex": "性别", + "wxUnionid": "微信unionid", + "weappOpenid": "微信用户openid", + "wxOpenid": "微信小程openid", + "head": "会员头像", + "username": "用户名", + "usernamePlaceholder": "请输入用户名", + "password": "密码", + "passwordCopy": "确认密码", + "passwordPlaceholder": "请输入密码", + "doubleCipherHint": "输入的两次密码不一致", + "memberNoHint":"会员编号只能输入字母和数字", + "mobileHint": "请输入正确的手机号!", + "lable": "标签", + "setLable": "标签", + "notAvailable": "暂无", + "memberLabelPlaceholder": "请选择会员标签", + "memberInfo":"会员信息", + "memberInfoPlaceholder":"请输入会员编号/昵称/手机号", + "lock": "锁定", + "normal": "正常" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/member.member_detail.json b/admin/src/app/lang/zh-cn/member.member_detail.json new file mode 100644 index 0000000..dd5cbfa --- /dev/null +++ b/admin/src/app/lang/zh-cn/member.member_detail.json @@ -0,0 +1,51 @@ +{ + "adjustType":"调整类型", + "adjustReduceBalance":"减少余额", + "adjustAddBalance":"增加余额", + "adjustReducePoint":"减少积分", + "adjustAddPoint":"增加积分", + "adjustBalance":"调整余额", + "memberNo":"会员编号", + "currBalance":"当前余额", + "currPoint":"当前积分", + "memo":"备注", + "adjustPlaceholder":"请输入调整数量", + "memoPlaceholder":"请输入备注", + "adjustBalancePlaceholder":"请输入调整余额", + "adjustPointPlaceholder":"请输入调整积分", + "adjustBalanceMaxAccountMessage":"调整后余额需大于0", + "adjustPointMaxAccountMessage":"调整后积分需大于0", + "birthday": "出生日期", + "birthdayTip": "请输入出生日期", + "sex": "性别", + "sexPlaceholder": "请选择性别", + "headimg": "会员头像", + "wxUnionid": "微信unionid", + "weappOpenid": "微信公众号openid", + "wxOpenid": "微信小程序openid", + "memberLabel": "会员标签", + "memberLabelPlaceholder": "请选择会员标签", + "nickNamePlaceholder": "请输入会员名称", + "updateMember": "编辑会员信息", + "notAvailable":"暂无", + "girlSex":"女", + "manSex":"男", + "secrecySex":"保密", + "essentialInfo": "基本信息", + "accountInfo": "账户信息", + "urserName": "用户名", + "nickname":"会员名称", + "registeredSource": "注册来源", + "lastVisitTime":"最后登录时间", + "point": "积分", + "balance": "余额", + "growth": "成长值", + "adjust":"调整", + "mobile":"手机号", + "detail":"详情", + "accumulative":"累计", + "money":"可提现余额", + "adjustPoint":"调整积分", + "commission":"佣金", + "memberNull":"未读取到会员详情信息" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/member.point.json b/admin/src/app/lang/zh-cn/member.point.json new file mode 100644 index 0000000..56a576b --- /dev/null +++ b/admin/src/app/lang/zh-cn/member.point.json @@ -0,0 +1,30 @@ +{ + "pointGet":"累计发放积分", + "pointUse":"累计使用积分", + "accountData":"变动积分", + "accountSum":"剩余积分", + "fromType":"来源/用途", + "memberId":"会员编号", + "pointInfo":"积分变动详情", + "memo":"备注", + "mobile":"手机号码", + "nickName":"会员信息", + "headimg":"会员头像", + "createTime":"发生时间", + "startDate":"开始时间", + "endDate":"结束时间", + "searchMember":"昵称/手机号", + "searchMemberPlaceholder":"请输入会员昵称/手机号码", + "memberIdPlaceholder":"请输入会员id", + "accountTypePlaceholder":"请输入账户类型", + "accountDataPlaceholder":"请输入账户数据", + "fromTypePlaceholder":"请输入来源类型", + "relatedIdPlaceholder":"请输入关联Id", + "createTimePlaceholder":"请输入创建时间", + "memoPlaceholder":"请输入备注信息", + "addMemberAccountLog":"添加会员账单表", + "updateMemberAccountLog":"编辑会员账单表", + "member_account_logDeleteTips":"确定要删除该会员账单表吗?", + "memberInfo":"会员信息", + "memberInfoPlaceholder":"请输入会员编号/昵称/手机号" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/order.recharge.detail.json b/admin/src/app/lang/zh-cn/order.recharge.detail.json new file mode 100644 index 0000000..b9399e1 --- /dev/null +++ b/admin/src/app/lang/zh-cn/order.recharge.detail.json @@ -0,0 +1,19 @@ +{ + "orderInfo":"订单详情", + "orderDiscountMoney":"优惠金额", + "ip":"下单IP", + "payTime":"支付时间", + "remark":"商家留言", + "memberMessage":"买家留言", + "orderNo":"订单编号", + "orderStatus":"订单状态", + "orderNoPlaceholder":"请输入订单编号", + "createTime":"创建时间", + "rechargeMoney":"充值金额", + "orderMoney":"订单金额", + "member":"买家", + "orderFromName":"订单来源", + "payTypeName":"支付方式", + "startDate":"开始时间", + "endDate":"结束时间" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/order.recharge.list.json b/admin/src/app/lang/zh-cn/order.recharge.list.json new file mode 100644 index 0000000..bb9e49d --- /dev/null +++ b/admin/src/app/lang/zh-cn/order.recharge.list.json @@ -0,0 +1,23 @@ +{ + "totalRechargeRefundMoney":"充值退款(元)", + "totalRechargeMoney":"充值金额(元)", + "rechargeRefundMoney":"充值退款", + "rechargeNo":"充值单号", + "orderStatus":"订单状态", + "rechargeNoPlaceholder":"请输入充值单号", + "createTime":"充值时间", + "rechargeMoney":"充值金额", + "orderMoney":"订单金额", + "member":"会员信息", + "orderFromName":"订单来源", + "payTypeName":"支付方式", + "startDate":"开始时间", + "endDate":"结束时间", + "namePlaceholder":"请选择", + "refundBtn":"退款", + "refundContent":"是否确认退款", + "payTime": "支付时间", + "refundStatus": "退款状态", + "startMoney": "起始金额", + "endMoney": "结束金额" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/order.recharge.refund.json b/admin/src/app/lang/zh-cn/order.recharge.refund.json new file mode 100644 index 0000000..a02a18f --- /dev/null +++ b/admin/src/app/lang/zh-cn/order.recharge.refund.json @@ -0,0 +1,24 @@ +{ + "refundNumber":"退款单号", + "userInfo":"用户信息", + "sourceNumber":"来源单号", + "refundAmount":"退款金额", + "refundTime":"退款时间", + "detail": "详情", + "statusName": "状态", + "memberInfo": "会员信息", + "refundSource": "退款来源", + "startDate":"开始时间", + "endDate":"结束时间", + "refundStatus": "退款状态", + "accumulateRefundMoney": "累计退款金额(元)", + "haveRefundMoney": "退款中金额(元)", + "refundSuccessMonry": "退款成功金额(元)", + "refundFailMoney": "退款失败金额(元)", + "memberInfoPlaceholder":"请输入会员编号/昵称/手机号", + "refundNumberPlaceholder":"请输入退款单号", + "orderNumber": "来源单号", + "orderNumberPlaceholder": "请输入来源单号", + "refundDetail": "退款详情", + "nickname": "会员昵称" +} diff --git a/admin/src/app/lang/zh-cn/setting.adminlogin.json b/admin/src/app/lang/zh-cn/setting.adminlogin.json new file mode 100644 index 0000000..d2d3629 --- /dev/null +++ b/admin/src/app/lang/zh-cn/setting.adminlogin.json @@ -0,0 +1,8 @@ +{ + "isCaptcha": "是否启用验证码", + "bgImg": "登录页广告图", + "admin": "平台端", + "adminBgImgTip": "建议上传尺寸为450*400px", + "site": "站点端", + "siteBgImgTip": "建议上传尺寸为450*400px" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/setting.agreement.json b/admin/src/app/lang/zh-cn/setting.agreement.json new file mode 100644 index 0000000..fc4283c --- /dev/null +++ b/admin/src/app/lang/zh-cn/setting.agreement.json @@ -0,0 +1,6 @@ +{ + "typeName": "协议类型", + "title": "协议标题", + "updateTime": "修改时间", + "config": "设置" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/setting.agreement_edit.json b/admin/src/app/lang/zh-cn/setting.agreement_edit.json new file mode 100644 index 0000000..f8bc532 --- /dev/null +++ b/admin/src/app/lang/zh-cn/setting.agreement_edit.json @@ -0,0 +1,6 @@ +{ + "title": "协议标题", + "type": "协议类型", + "titlePlaceholder": "请输入协议标题", + "content": "内容" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/setting.cash_out.json b/admin/src/app/lang/zh-cn/setting.cash_out.json new file mode 100644 index 0000000..69b3ff9 --- /dev/null +++ b/admin/src/app/lang/zh-cn/setting.cash_out.json @@ -0,0 +1,18 @@ +{ + "isOpen": "是否开启", + "cashWithdrawalAmount": "最低提现金额", + "cashWithdrawalAmountPlaceholder": "请输入提现金额", + "cashWithdrawalAmountHint": "最低提现金额不能小于0.01", + "commissionRatio": "提现手续费比率", + "commissionRatioHint": "提现手续费比率不能超出0-100%的范围", + "commissionRatioPlaceholder": "请输入提现手续费比率", + "audit": "审核", + "transfer": "转账", + "transferMode": "转账方式", + "automaticAudit": "自动审核", + "manualAudit": "手动审核", + "automatedTransit": "自动转账", + "manualTransfer": "手动转账", + "wechat": "微信", + "alipay": "支付宝" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/setting.copyright.json b/admin/src/app/lang/zh-cn/setting.copyright.json new file mode 100644 index 0000000..59c2bdf --- /dev/null +++ b/admin/src/app/lang/zh-cn/setting.copyright.json @@ -0,0 +1,23 @@ +{ + "copyrightEdit":"版权设置", + "putOnRecordEdit":"备案设置", + + "companyName": "公司名称", + "copyrightLink": "版权链接", + "copyrightDesc": "版权信息", + + "icp": "网站ICP备案号", + "govRecord": "网站公安备案", + "govUrl": "网站公安链接", + "marketSupervisionUrl": "市场监督管理局链接", + + "companyNamePlaceholder": "请输入公司名称", + "copyrightLinkPlaceholder": "请输入版权链接", + "copyrightDescPlaceholder": "请输入版权信息", + + "icpPlaceholder": "请输入网站ICP备案号", + "govRecordPlaceholder": "请输入网站公安备案", + "govUrlPlaceholder": "请输入网站公安链接", + "marketSupervisionUrlPlaceholder": "请输入市场监督管理局链接" + +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/setting.developer_token.json b/admin/src/app/lang/zh-cn/setting.developer_token.json new file mode 100644 index 0000000..583e362 --- /dev/null +++ b/admin/src/app/lang/zh-cn/setting.developer_token.json @@ -0,0 +1,5 @@ +{ + "developerTokenEdit":"开发者KEY设置", + "tokenPlaceholder":"请输入开发者令牌", + "tokenTips": "开发者KEY可以在已安装的框架中设置。框架安装并配置好开发者KEY后,开发者自己开发的应用和插件,会像普通授权插件一样可以安装使用,特别是当开发者发布自己开发的插件或应用时,尚在未发布状态时,开发者也可以对其进行安装测试" +} diff --git a/admin/src/app/lang/zh-cn/setting.login.json b/admin/src/app/lang/zh-cn/setting.login.json new file mode 100644 index 0000000..d74fd9a --- /dev/null +++ b/admin/src/app/lang/zh-cn/setting.login.json @@ -0,0 +1,15 @@ +{ + "logonMode": "普通注册方式", + "isUsername": "账号密码登录", + "isMobile": "手机验证码登录", + "isAuthRegister": "第三方自动注册", + "isBindMobile": "强制绑定手机", + "isUsernameTip": "开启之后可以使用账号+密码进行注册和登录", + "isMobileTip": "开启之后可以使用手机+验证码进行注册和登录", + "isAuthRegisterTip": "开启之后,微信公众号、小程序等等第三方平台可以自动注册会员。方便会员自动登录", + "isBindMobileTip": "开启之后,会员通过账号或者第三方注册账户会强制绑定手机号,方便商家进行管理,同时方便会员在不同端口统一账号", + "agreement": "政策协议", + "agreementTips": "注册时服务协议和隐私协议是否进行展示", + "commonSetting": "通用设置", + "tripartiteSetting": "第三方设置" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/setting.map.json b/admin/src/app/lang/zh-cn/setting.map.json new file mode 100644 index 0000000..f1405e5 --- /dev/null +++ b/admin/src/app/lang/zh-cn/setting.map.json @@ -0,0 +1,4 @@ +{ + "clickTutorial": "查看教程", + "clickSecretKey": "获取密钥" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/setting.member.json b/admin/src/app/lang/zh-cn/setting.member.json new file mode 100644 index 0000000..3cc0ff6 --- /dev/null +++ b/admin/src/app/lang/zh-cn/setting.member.json @@ -0,0 +1,11 @@ +{ + "memberNoRule": "会员编号生成规则", + "prefix": "编码前缀", + "prefixPlaceholder": "请输入编码前缀", + "prefixHint":"编码前缀只能为英文字母", + "lengthHint":"编码长度包含前缀,去除前缀最少不能低于4位,最多不能超过30位", + "prefixTips": "编码格式如:", + "length": "编码长度", + "lengthPlaceholder": "请输入编码长度", + "lengthTips": "编码长度包含前缀,去除前缀最少不能低于4位,最多不能超过30位" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/setting.notice.json b/admin/src/app/lang/zh-cn/setting.notice.json new file mode 100644 index 0000000..4424afc --- /dev/null +++ b/admin/src/app/lang/zh-cn/setting.notice.json @@ -0,0 +1,22 @@ +{ + "buyerNotice": "会员消息", + "sellerNotice":"平台消息", + "sms":"短信", + "weapp":"微信小程序", + "wechat":"微信公众号", + "noticeSetting":"消息设置", + "name": "模板名称", + "title": "场景", + "smsContent": "短信内容", + "tempKey": "模板消息ID", + "keywordNameList": "类目模板", + "first": "头部标题", + "remark": "尾部描述", + "firstPlaceholder": "请输入头部标题", + "remarkPlaceholder": "请输入尾部描述", + "content": "模板内容", + "weappTempKey" : "模板编号", + "smsId":"短信模版ID", + "smsIdPlaceholder":"短信模版ID", + "noticeType":"消息类型" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/setting.notice_records.json b/admin/src/app/lang/zh-cn/setting.notice_records.json new file mode 100644 index 0000000..fedfe2d --- /dev/null +++ b/admin/src/app/lang/zh-cn/setting.notice_records.json @@ -0,0 +1,32 @@ +{ + "siteId":"站点id", + "noticeKey":"消息模板", + "noticeType":"消息类型", + "noticeInfo":"消息详情", + "uid":"通知的用户id", + "memberId":"消息的会员id", + "nickname":"接收会员", + "receiver":"手机/OPENID", + "noticeData":"消息内容", + "isClick":"点击次数", + "searchReceiver":"接收人", + "isVisit":"访问次数", + "createTime":"发送时间", + "startDate":"开始时间", + "endDate":"结束时间", + "sms":"短信", + "weapp":"微信小程序", + "wechat":"微信公众号", + "noticeTypePlaceholder":"请选择消息类型", + "uidPlaceholder":"请输入通知的用户id", + "memberIdPlaceholder":"请输入消息的会员id", + "nicknamePlaceholder":"请输入接收人用户昵称或姓名", + "receiverPlaceholder":"请输入接收人手机号/openid", + "noticeDataPlaceholder":"请输入消息数据", + "isClickPlaceholder":"请输入点击次数", + "isVisitPlaceholder":"请输入访问次数", + "visitTimePlaceholder":"请输入访问时间", + "createTimePlaceholder":"请输入消息时间", + "buyerNotice": "会员消息", + "sellerNotice":"平台消息" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/setting.pay.json b/admin/src/app/lang/zh-cn/setting.pay.json new file mode 100644 index 0000000..acc6f15 --- /dev/null +++ b/admin/src/app/lang/zh-cn/setting.pay.json @@ -0,0 +1,61 @@ +{ + "status": "是否启用", + "name": "支付类型", + "wechatpay": "微信支付", + "alipay": "支付宝支付", + "paydesc": "支付方式描述", + "wechatpayDesc": "微信支付,用户通过扫描二维码、微信内打开商品页面购买等多种方式调起微信支付模块完成支付。", + "alipayDesc": "支付宝网站(www.alipay.com) 是国内先进的网上支付平台。", + "config": "设置", + "updateWechat": "微信支付", + "updateAlipay": "支付宝支付", + "updateOfflinepay": "线下支付", + "mchId": "商户号", + "mchIdPlaceholder": "请输入商户号", + "mchIdTips": "微信支付商户号(MCHID)", + "mchSecretKey": "API密钥", + "mchSecretKeyPlaceholder": "请输入API密钥", + "mchSecretKeyTips": "微信支付商户API密钥(paySignKey)", + "mchSecretCert": "商户私钥", + "mchSecretCertPlaceholder": "请上传商户私钥", + "mchSecretCertTips": "微信支付API证书(apiclient_key.pem)", + "mchPublicCertPath": "商户公钥", + "mchPublicCertPathPlaceholder": "请上传商户公钥", + "mchPublicCertPathTips": "微信支付API证书(apiclient_cert.pem)", + "appId": "支付宝应用ID", + "appIdPlaceholder": "请输入支付宝应用ID", + "appSecretCert": "应用私钥", + "appSecretCertPlaceholder": "请输入应用私钥", + "appPublicCertPath": "应用公钥", + "appPublicCertPathPlaceholder": "请上传应用公钥", + "alipayPublicCertPath": "支付宝公钥", + "alipayPublicCertPathPlaceholder": "请上传支付宝公钥", + "alipayRootCertPath": "支付宝根证书", + "alipayRootCertPathPlaceholder": "请上传支付宝根证书", + "appIdTips": "支付宝分配给开发者的应用ID", + "appPublicCertPathTips": "上传appCertPublicKey文件", + "alipayPublicCertPathTips": "上传alipayCertPublicKey文件", + "alipayRootCertPathTips": "上传alipayRootCert文件", + "payType": "支付方式", + "templateName": "配置信息", + "settingDefaultPay": "设置默认支付", + "settingDefault": "设置默认", + "defaultTamplate": "请选择模板", + "isEnable": "是否启用", + "onState": "开启状态", + "configurePaymentMethod": "请先配置值该支付方式", + "enablePaymentMode": "请先开启该支付方式", + "clickConfigure": "点击配置", + "setConfig": "设置支付配置", + "open": "已开启", + "notOpen": "未开启", + "cancel": "取消", + "collectionName": "收款账户名称", + "collectionBank": "收款银行", + "collectionAccount": "收款账号", + "collectionDesc": "转账说明", + "collectionNamePlaceholder": "请输入收款账户名称", + "collectionBankPlaceholder": "请输入收款银行", + "collectionAccountPlaceholder": "请输入收款账号", + "collectionDescPlaceholder": "请输入转账说明" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/setting.sms.json b/admin/src/app/lang/zh-cn/setting.sms.json new file mode 100644 index 0000000..2214832 --- /dev/null +++ b/admin/src/app/lang/zh-cn/setting.sms.json @@ -0,0 +1,21 @@ +{ + "name": "短信类型", + "aliSms":"阿里云短信", + "tencentSms": "腾讯云短信", + "isUse":"是否启用", + "config":"设置", + "aliAppKey": "APP_KEY", + "aliSign":"短信签名", + "aliSecretKey":"SECRET_KEY", + "aliAppKeyPlaceholder": "请输入APP_KEY", + "aliSignPlaceholder":"请输入短信签名", + "aliSecretKeyPlaceholder":"请输入SECRET_KEY", + "tencentSign":"短信签名", + "tencentAppId":"APP_ID", + "tencentSecretId":"SECRET_ID", + "tencentSecretKey":"SECRET_KEY", + "tencentSignPlaceholder":"请输入短信签名", + "tencentAppIdPlaceholder":"请输入APP_ID", + "tencentSecretIdPlaceholder":"请输入SECRET_ID", + "tencentSecretKeyPlaceholder":"请输入SECRET_KEY" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/setting.sms_records.json b/admin/src/app/lang/zh-cn/setting.sms_records.json new file mode 100644 index 0000000..3ad8e96 --- /dev/null +++ b/admin/src/app/lang/zh-cn/setting.sms_records.json @@ -0,0 +1,32 @@ +{ + "siteId":"站点id", + "noticeKey":"消息模板", + "noticeType":"消息类型", + "noticeInfo":"消息详情", + "uid":"通知的用户id", + "memberId":"消息的会员id", + "nickname":"接收会员", + "receiver":"手机号", + "noticeData":"消息内容", + "isClick":"点击次数", + "searchReceiver":"接收人", + "isVisit":"访问次数", + "createTime":"发送时间", + "startDate":"开始时间", + "endDate":"结束时间", + "sms":"短信", + "weapp":"微信小程序", + "wechat":"微信公众号", + "noticeTypePlaceholder":"请选择消息类型", + "uidPlaceholder":"请输入通知的用户id", + "memberIdPlaceholder":"请输入消息的会员id", + "nicknamePlaceholder":"请输入接收人用户昵称或姓名", + "receiverPlaceholder":"请输入接收人手机号", + "noticeDataPlaceholder":"请输入消息数据", + "isClickPlaceholder":"请输入点击次数", + "isVisitPlaceholder":"请输入访问次数", + "visitTimePlaceholder":"请输入访问时间", + "createTimePlaceholder":"请输入消息时间", + "buyerNotice": "会员消息", + "sellerNotice":"平台消息" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/setting.storage.json b/admin/src/app/lang/zh-cn/setting.storage.json new file mode 100644 index 0000000..d63a010 --- /dev/null +++ b/admin/src/app/lang/zh-cn/setting.storage.json @@ -0,0 +1,44 @@ +{ + "name": "存储方式", + "aliStorage":"阿里云存储", + "localStorage": "本地存储", + "qiniuStorage": "七牛云存储", + "tencentStorage": "腾讯云存储", + "isUse":"是否启用", + "config":"设置", + "aliBucket": "存储空间", + "aliAccessKey": "AccessKeyID", + "aliSecretKey": "AccessKeySecret", + "aliEndpoint": "Endpoint", + "domain": "空间域名", + "domainPlaceholder": "请输入空间域名", + "aliBucketPlaceholder": "请输入存储空间", + "aliAccessKeyPlaceholder": "请输入AccessKeyID", + "aliSecretKeyPlaceholder": "请输入AccessKeySecret", + "aliEndpointPlaceholder": "请输入Endpoint", + "aliBucketTips": "存储空间与阿里云OSS开通对象名称一致", + "aliAccessKeyTips": "填写阿里云Access Key管理的(ID)。", + "aliSecretKeyTips": "Access Key Secret是您访问阿里云API的密钥,具有该账户完全的权限,请您妥善保管。(填写完Access Key ID 和 Access Key Secret 后请选择bucket)", + "aliEndpointTips": "Bucket地域endpoint", + "aliDomainTips": "域名格式:http://xx.xxxx.com/(不可绑定当前网站域名,建议新开二级域名)", + + "qiniuBucket":"存储空间", + "qiniuAccessKey":"Accesskey", + "qiniuSecretKey":"Secretkey", + "qiniuBucketTips":"请保证bucket为可公共读取的", + "qiniuBucketPlaceholder": "请输入存储空间", + "qiniuAccessKeyPlaceholder": "请输入Accesskey", + "qiniuSecretKeyPlaceholder": "请输入Secretkey", + + "tencentBucket":"存储空间", + "tencentAccessKey":"SECRET_ID", + "tencentSecretKey":"SECRET_KEY", + "region":"REGION", + "regionPlaceholder":"请输入REGION", + "tencentBucketTips":"请保证bucket为可公共读取的", + "tencentBucketPlaceholder": "请输入存储空间", + "tencentAccessKeyPlaceholder": "请输入SECRET_ID", + "tencentSecretKeyPlaceholder": "请输入SECRET_KEY" + + +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/setting.system.json b/admin/src/app/lang/zh-cn/setting.system.json new file mode 100644 index 0000000..0658ee7 --- /dev/null +++ b/admin/src/app/lang/zh-cn/setting.system.json @@ -0,0 +1,35 @@ +{ + "websiteInfo":"后台设置", + "contactAddress":"联系地址", + "siteName": "站点名称", + "keywords": "网站关键字", + "logo": "长方形Logo", + "desc": "网站简介", + "province": "省", + "city": "市", + "district": "区/县", + "selectAddress": "请选择地址", + "address": "详细地址", + "phone": "客服电话", + "businessHours": "营业时间", + "contactAddressPlaceholder":"联系地址", + "siteNamePlaceholder": "站点名称", + "keywordsPlaceholder": "网站关键字", + "descPlaceholder": "网站简介", + "addressPlaceholder": "详细地址", + "phonePlaceholder": "客服电话", + "businessHoursPlaceholder": "营业时间", + "businessHoursTips": "例:上午9:00-12:00,下午2:00-6:00", + "frontEndInfo": "前台设置", + "frontEndName": "前台名称", + "frontEndNamePlaceholder": "请输入前台名称", + "frontEndLogo": "前台Logo", + "icon": "正方形Logo", + "serviceInformation": "服务信息", + "wechatCode": "公众号二维码", + "customerServiceCode": "客服二维码", + "contactsTel": "联系电话", + "contactsTelPlaceholder": "请输入联系电话", + "logoPlaceholder": "建议图片尺寸:210*30像素;图片格式:jpg、png、jpeg。", + "iconPlaceholder": "建议图片尺寸:100*100像素;图片格式:jpg、png、jpeg。" +} diff --git a/admin/src/app/lang/zh-cn/setting.transfer.json b/admin/src/app/lang/zh-cn/setting.transfer.json new file mode 100644 index 0000000..6a27a55 --- /dev/null +++ b/admin/src/app/lang/zh-cn/setting.transfer.json @@ -0,0 +1,31 @@ +{ + "wechatpay": "微信打款设置", + "alipay": "支付宝打款设置", + "mchId": "商户号", + "mchIdPlaceholder": "请输入商户号", + "mchIdTips": "微信支付商户号(MCHID)", + "mchSecretKey": "API密钥", + "mchSecretKeyPlaceholder": "请输入API密钥", + "mchSecretKeyTips": "微信支付商户API密钥(paySignKey)", + "mchSecretCert": "商户私钥", + "mchSecretCertPlaceholder": "请上传商户私钥", + "mchSecretCertTips": "微信支付API证书(apiclient_key.pem)", + "mchPublicCertPath": "商户公钥", + "mchPublicCertPathPlaceholder": "请上传商户公钥", + "mchPublicCertPathTips": "微信支付API证书(apiclient_cert.pem)", + "appId": "支付宝应用ID", + "appIdPlaceholder": "请输入支付宝应用ID", + "appSecretCert": "应用私钥", + "appSecretCertPlaceholder": "请输入应用私钥", + "appPublicCertPath": "应用公钥", + "appPublicCertPathPlaceholder": "请上传应用公钥", + "alipayPublicCertPath": "支付宝公钥", + "alipayPublicCertPathPlaceholder": "请上传支付宝公钥", + "alipayRootCertPath": "支付宝根证书", + "alipayRootCertPathPlaceholder": "请上传支付宝根证书", + "appIdTips": "支付宝分配给开发者的应用ID", + "appPublicCertPathTips": "上传appCertPublicKey文件", + "alipayPublicCertPathTips": "上传alipayCertPublicKey文件", + "alipayRootCertPathTips": "上传alipayRootCert文件", + "operationTip": "温馨提示:打款设置用于会员提现转账,发放红包等场景" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/setting.weapp.json b/admin/src/app/lang/zh-cn/setting.weapp.json new file mode 100644 index 0000000..e3d1692 --- /dev/null +++ b/admin/src/app/lang/zh-cn/setting.weapp.json @@ -0,0 +1,12 @@ +{ + "addVersion": "上传版本", + "version": "版本号", + "versionPlaceholder": "请添加版本号", + "createTime": "创建时间", + "status": "状态", + "editVersion": "添加/编辑版本", + "file": "文件", + "filePlaceholder":"请上传版本文件", + "desc": "版本说明", + "weappVersionDeleteTips": "确定要删除小程序版本吗" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/setting.wxoplatform.json b/admin/src/app/lang/zh-cn/setting.wxoplatform.json new file mode 100644 index 0000000..d992cfe --- /dev/null +++ b/admin/src/app/lang/zh-cn/setting.wxoplatform.json @@ -0,0 +1,19 @@ +{ + "oplatformSetting": "开放平台设置", + "appidPlaceholder": "微信第三方平台AppId", + "appsecretPlaceholder": "微信第三方平台AppSecret", + "oplatformComm": "开放平台通信", + "empowerStartDomain": "授权发起页域名", + "empowerReceiveUrl": "授权事件接收URL", + "messageValidationToken": "消息校验Token", + "messageDecryptKey": "消息加解密Key", + "messageReceiveUrl": "消息与事件接收URL", + "wechatDomain": "公众号开发域名", + "weappDomain": "小程序服务器域名", + "weappBusinessDomain": "小程序业务域名", + "oplatformBuilder": "开发者设置", + "builderEmail": "开发者邮箱", + "builderMobile": "开发者手机号", + "builderQQ": "开发者QQ", + "builderWx": "开发者微信" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/site.group.json b/admin/src/app/lang/zh-cn/site.group.json new file mode 100644 index 0000000..4c9f20d --- /dev/null +++ b/admin/src/app/lang/zh-cn/site.group.json @@ -0,0 +1,23 @@ +{ + "addSiteGroup": "添加套餐", + "updateTime": "修改时间", + "createTime": "创建时间", + "groupName": "套餐名称", + "groupDesc": "套餐说明", + "groupRoles": "套餐权限", + "groupDeleteTips": "确定要删除该套餐吗?", + "groupNamePlaceholder": "请输入套餐名称", + "groupDescPlaceholder": "请输入套餐说明", + "groupRolesPlaceholder": "请选择套餐权限", + "groupPlaceholder": "请选择权限", + "permission": "权限", + "updateGroup":"编辑套餐", + "addGroup":"添加套餐", + "checkStrictly": "父子级不关联", + "remark": "套餐说明", + "reset": "重置", + "search": "搜索", + "foldText":"展开/折叠", + "appName": "套餐内含应用", + "addonName": "套餐内含插件" +} diff --git a/admin/src/app/lang/zh-cn/site.group_edit.json b/admin/src/app/lang/zh-cn/site.group_edit.json new file mode 100644 index 0000000..eb1677b --- /dev/null +++ b/admin/src/app/lang/zh-cn/site.group_edit.json @@ -0,0 +1,26 @@ +{ + "addSiteGroup": "添加套餐", + "updateTime": "修改时间", + "createTime": "创建时间", + "groupName": "套餐名称", + "groupDesc": "套餐说明", + "groupRoles": "套餐权限", + "groupDeleteTips": "确定要删除该套餐吗?", + "groupNamePlaceholder": "请输入套餐名称", + "groupDescPlaceholder": "请输入套餐说明", + "groupRolesPlaceholder": "请选择套餐权限", + "groupPlaceholder": "请选择权限", + "permission": "权限", + "updateGroup":"编辑套餐", + "addGroup":"添加套餐", + "checkStrictly": "父子级不关联", + "remark": "套餐说明", + "reset": "重置", + "search": "搜索", + "foldText":"展开/折叠", + "mainApp": "套餐内含应用", + "mainAppPlaceholder": "请选择套餐内包含的应用", + "containAddon": "套餐内含插件", + "appListEmpty": "没有可选择的应用", + "addonListEmpty": "没有可选择的插件" +} diff --git a/admin/src/app/lang/zh-cn/site.info.json b/admin/src/app/lang/zh-cn/site.info.json new file mode 100644 index 0000000..c710a51 --- /dev/null +++ b/admin/src/app/lang/zh-cn/site.info.json @@ -0,0 +1,35 @@ +{ + "siteName":"站点名称", + "siteInfo": "站点信息", + "editSite": "站点信息", + "groupId":"套餐", + "logo":"站点logo", + "phone":"客服电话", + "businessHours":"营业时间", + "siteLogo": "店铺LOGO", + "expireTime":"到期时间", + "groupName": "店铺套餐", + "siteNamePlaceholder":"请输入站点名称", + "groupIdPlaceholder":"请输入套餐", + "addSite":"添加站点", + "updateSite":"编辑站点", + + "expireTimePlaceholder":"请选择到期时间", + "desc": "网站简介", + "province": "省", + "city": "市", + "district": "区/县", + "selectAddress": "请选择地址", + "contactAddress": "联系地址", + "address": "详细地址", + "contactAddressPlaceholder":"联系地址", + "keywords":"关键字", + "keywordsPlaceholder": "网站关键字", + "logoPlaceholder": "网站Logo", + "descPlaceholder": "网站简介", + + "phonePlaceholder": "客服电话", + "app" : "站点应用", + "addon" : "站点插件" + +} diff --git a/admin/src/app/lang/zh-cn/site.list.json b/admin/src/app/lang/zh-cn/site.list.json new file mode 100644 index 0000000..e246d75 --- /dev/null +++ b/admin/src/app/lang/zh-cn/site.list.json @@ -0,0 +1,49 @@ +{ + "siteName":"站点名称", + "groupId":"套餐", + "app":"应用", + "logo":"站点logo", + "status":"状态", + "businessHours":"营业时间", + "createTime":"创建时间", + "expireTime":"到期时间", + "siteNamePlaceholder":"请输入站点名称", + "createTimePlaceholder":"请输入创建时间", + "addSite":"添加站点", + "editSite":"编辑站点", + "updateSite":"编辑站点", + "siteDeleteTips":"确定要删除该站点吗?", + "statusExpire":"已到期", + "phone":"客服电话", + "groupIdPlaceholder":"请选择套餐", + "appIdPlaceholder":"请选择应用", + "keywordsPlaceholder":"请输入关键字", + "keywords":"关键字", + "username": "账号", + "realName": "真实姓名", + "passwordPlaceholder": "请输入管理员密码", + "usernamePlaceholder": "请输入管理员账号", + "realNamePlaceholder": "请输入真实姓名", + "confirmPasswordPlaceholder": "请再次确认密码", + "userRealNamePlaceholder": "请输入名称", + "expireTimePlaceholder":"请选择到期时间", + "confirmPasswordError": "两次输入的密码不一致", + "operationTip": "温馨提示:站点登录页面", + "siteId": "站点ID", + "siteInfo": "站点信息", + "siteInlet": "站点入口", + "enterSite": "访问站点", + "siteList": "站点列表", + "openClose": "开启/停止", + "closeTxt":"停止", + "openTxt":"开启", + "siteUrlDevelopMessage": "站点域名功能正在开发中", + "url": "域名", + "startDate":"开始时间", + "endDate":"结束时间", + "manager": "站点管理员", + "managerPlaceholder": "请选择站点管理员", + "newAddManager": "新增管理员", + "edit": "编辑", + "siteDeleteTips": "确定要删除该站点吗?该操作将删除该站点和站点相关数据,该操作无法退回,确定要继续删除吗?" +} diff --git a/admin/src/app/lang/zh-cn/site.user.json b/admin/src/app/lang/zh-cn/site.user.json new file mode 100644 index 0000000..d086874 --- /dev/null +++ b/admin/src/app/lang/zh-cn/site.user.json @@ -0,0 +1,12 @@ +{ + "userRealName": "用户真实名称", + "lastLoginTime": "最后登录时间", + "createTime": "注册时间", + "lastLoginIP": "最后登录IP", + "userNamePlaceholder": "请输入账号/用户名", + "detail": "详情", + "siteNum": "站点数量", + "endDate": "结束时间", + "startDate": "开始时间", + "loginTime": "最后登录时间" +} diff --git a/admin/src/app/lang/zh-cn/site.user_info.json b/admin/src/app/lang/zh-cn/site.user_info.json new file mode 100644 index 0000000..4d2556a --- /dev/null +++ b/admin/src/app/lang/zh-cn/site.user_info.json @@ -0,0 +1,17 @@ +{ + "userInfo": "用户信息", + "siteInfo": "站点信息", + "uid": "用户ID", + "username": "账号", + "realname": "真实姓名", + "siteId": "站点ID", + "siteName": "站点名称", + "isAdmin": "是否是超级管理员", + "addTime": "添加时间", + "createTime":"创建时间", + "expireTime":"到期时间", + "lastLoginTime": "最后登录时间", + "lastLoginIP": "最后登录IP", + "yes": "是", + "no": "否" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/tools.addon.edit.json b/admin/src/app/lang/zh-cn/tools.addon.edit.json new file mode 100644 index 0000000..a96dcb8 --- /dev/null +++ b/admin/src/app/lang/zh-cn/tools.addon.edit.json @@ -0,0 +1,34 @@ +{ + "title":"插件名称", + "titlePlaceholder":"请输入插件名称", + "icon":"插件图标", + "iconPlaceholder":"请上传插件图标", + "iconPlaceholder1":"建议图片尺寸:200*200像素;图片格式:jpg、png、jpeg", + "key":"插件标识", + "keyPlaceholder":"请输入插件标识", + "keyPlaceholderErr":"插件标识格式不正确,只能以字母开头且只能输入字母、数字、下划线", + "keyPlaceholder1":"插件标识指开发插件的文件夹名称,申请之后不能修改(只能包括字母、数字和下划线,且只能以字母开头,格式如:f1111、f11_22)", + "keyPlaceholder2":"插件标识设置后建议进行插件标识检测,如果当前插件标识已经在niucloud官方市场注册,则只能在本地使用,无法在官方市场发布销售", + "desc":"插件描述", + "descPlaceholder":"请输入插件描述", + "author":"作者", + "authorPlaceholder":"请输入作者", + "version":"版本号", + "versionPlaceholder":"请输入版本号", + "versionPlaceholderErr":"版本号格式不正确", + "versionPlaceholder1":"请注意版本号输入格式,例如: 1.1.1", + "cover":"插件封面", + "coverPlaceholder":"请上传插件封面", + "coverPlaceholder1":"建议图片尺寸:480*240像素;图片格式:jpg、png、jpeg", + "type":"插件类型", + "typePlaceholder":"请选择插件类型", + "typePlaceholder1":"应用:指独立开发的系统,比如商城,零售,erp等", + "typePlaceholder2":"插件:指不是独立的系统,可以是辅助应用的插件比如商城的拼团,也可以是独立的插件比如系统表单等", + "supportType":"所属应用", + "supportApp":"支持应用", + "supportAppPlaceholder":"请选择支持应用", + "GeneratePlugins":"生成插件", + "successText":"检测当前插件标识尚未在应用市场注册,插件开发后可以在niucloud官方市场发布", + "warningText":"检测到当前插件标识已经在niucloud官方市场注册,开发的插件只能在本地使用,无法在官方市场发布销售", + "onSaveSuccessText":"插件生成成功" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/tools.addon.index.json b/admin/src/app/lang/zh-cn/tools.addon.index.json new file mode 100644 index 0000000..bcc99b4 --- /dev/null +++ b/admin/src/app/lang/zh-cn/tools.addon.index.json @@ -0,0 +1,30 @@ +{ + "developmentProcess":"开发流程", + "pluginList":"插件列表", + "addAddon":"新建插件", + "title":"插件名称", + "titlePlaceholder":"请输入插件名称", + "author":"作者", + "authorPlaceholder":"请输入作者", + "key":"插件标识", + "type":"插件类型", + "version":"版本号", + "stutas":"状态", + "codeDeleteTips":"删除插件后对应文件会一并删除,是否确认", + "step1":"新建一个插件", + "describe1":"点击新建插件,生成插件后系统会生成对应插件的基础代码", + "btn1":"新建插件", + "step2":"安装插件", + "describe2":"插件创建之后处于未安装状态,点击进入插件列表选择对应新建插件点击安装", + "btn2":"插件列表", + "step3":"开发插件", + "describe3":"插件安装成功之后就可以进行开发,具体查看开发教程", + "btn3":"查看教程", + "step4":"打包插件", + "describe4":"插件开发的前端代码是直接在对应开发环境运行的,并没有放入插件对应目录,点击打包后会将对应插件的代码整合到插件目录方便后期安装与打包发行版本", + "btn4":"插件列表", + "step5":"上传到云市场", + "describe5":"插件打包成功之后可以上传到官方云市场进行销售,可以打包后选择下载代码zip格式,然后在官网开发商引用选择上传版本", + "btn5":"官方市场", + "addonDownloadText":"插件打包成功,是否下载" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/tools.code.edit.json b/admin/src/app/lang/zh-cn/tools.code.edit.json new file mode 100644 index 0000000..213c1c4 --- /dev/null +++ b/admin/src/app/lang/zh-cn/tools.code.edit.json @@ -0,0 +1,143 @@ +{ + "basicSettings":"基础设置", + "fieldSettings":"字段设置", + "pageSettings":"页面设置", + "generationSettings":"生成配置", + "associatedConfiguration":"关联设置", + "tableName":"表名称", + "tableContent":"描述", + "addon":"所属插件", + "moduleName":"模块名", + "className":"类名", + "editType":"编辑方式", + "createTime":"创建时间", + "updateTime":"更新时间", + "popup":"弹出", + "page":"新页面", + "selectPlaceholder":"请选择", + "tableNamePlaceholder":"请输入表名", + "tableContentPlaceholder":"请输入描述", + "addonPlaceholder":"请选择插件", + "addonPlaceholder1":"/", + "moduleNamePlaceholder":"请输入模块名", + "classNamePlaceholder":"请输入类名", + "editTypePlaceholder":"请选择编辑方式", + "columnNamePlaceholder":"请输入字段名", + "columnCommentPlaceholder":"请输入字段描述", + "tableNameValidata": "表名不符合规范,请以 字母、_ 开头,不能出现 字母、数字、下划线 以外的字符", + "fieldNameValidata": "不符合规范,请以 字母、_ 开头,不能出现 字母、数字、下划线 以外的字符", + "addCode":"导入数据表", + "updateCode":"编辑代码生成", + "codeDeleteTips":"确定要删除吗?", + "tableComment":"表描述", + "tableCreateTime":"创建时间", + "tableUpdateTime":"修改时间", + "addBtn":"添加", + "searchPlaceholder":"请输入表名或表描述搜索", + "selectTableTips":"确认导入该数据表吗?", + "download":"下载", + "commentField":"常用字段", + "baseField":"公用字段", + "columnName": "字段列名", + "columnComment": "字段描述", + "columnType": "字段类型", + "fieldAttribute": "字段属性", + "addAndEdit":"添加编辑", + "listSearch":"列表查询", + "isPk":"主键", + "isRequired":"必填", + "isInsert":"添加", + "isUpdate":"编辑", + "isLists":"列表", + "isSearch":"搜索", + "isQuery":"查询", + "queryType":"搜索方式", + "formType": "表单类型", + "verifyType": "验证类型", + "formInput":"文本框", + "formTextarea":"文本域", + "formSelect":"下拉框", + "formRadio":"单选框", + "formCheckbox":"复选框", + "formDateTime":"日期", + "formImageSelect":"图片上传", + "formEditor":"富文本", + "formNumber":"数字框", + "pk":"主键", + "status": "状态", + "string": "字符串", + "image": "图片", + "radio": "单选", + "checkbox": "复选", + "select": "下拉选择", + "editor": "富文本", + "dateTime": "日期", + "formValidation":"表单验证", + "deleteType":"删除类型", + "physicalDeletion":"物理删除", + "softDeletion":"软删除", + "deleteField":"删除字段", + "deleteFieldPlaceholder":"请选择删除字段", + "orderColumnName":"排序字段", + "orderColumnNamePlaceholder":"请选择排序字段", + "orderType":"排序方式", + "orderTypePlaceholder":"请选择排序方式", + "menuType":"上级菜单", + "autoBuild":"自动构建", + "manualAddition":"手动添加", + "controller":"控制器目录", + "dataModel":"模型目录", + "validator":"验证器目录", + "webView":"WEB端视图目录", + "routerView":"路由目录", + "insertAssociated":"新增关联", + "associatedType":"关联类型", + "associatedTypePlaceholder":"请选择关联类型", + "hasOne":"一对一", + "hasMany":"一对多", + "associatedName":"关联方法名称", + "associatedNamePlaceholder":"请输入关联方法名称", + "associatedModel":"关联模型", + "associatedModelPlaceholder":"请选择关联模型", + "localKey":"关联键", + "localKeyPlaceholder":"请选择关联键", + "foreignKey":"外键", + "foreignKeyPlaceholder":"请输入外键", + "addons":"关联应用", + "addonsPlaceholder":"请选择应用", + "saveAndSync":"同步代码", + "saveAndDownload":"下载代码", + "saveAndSyncText":"同步的代码与项目产生冲突,是否确认覆盖?", + "saveAndSyncText1":"同步的代码会加入到项目代码中,是否确认继续", + "mobileVerify":"手机号验证", + "numberVerify":"整数验证", + "idCardVerify":"身份证验证", + "emailVerify":"邮箱验证", + "maxVerify":"最大输入120个字符", + "minVerify":"最小输入1个字符", + "maxLabel":"最大输入字符", + "minLabel":"最小输入字符", + "minPlaceholder":"最小输入字符不能为空", + "minPlaceholder1":"最小输入字符不可大于最大输入字符", + "maxPlaceholder":"最大字输入字符不能为空", + "maxPlaceholder1":"最大输入字符不可小于最小输入字符", + "maxLabel1":"最大输入数", + "minLabel1":"最小输入数", + "min1Placeholder":"最小输入数不能为空", + "min1Placeholder1":"最小输入数不可大于最大输入数", + "max1Placeholder":"最大字输入数不能为空", + "max1Placeholder1":"最大输入数不可小于最小输入数", + "between":"输入字符区间", + "setUp":"设置", + "dictType":"数据字典", + "dictTypePlaceholder":"请选择数据字典", + "dictTypePlaceholder1":"部分字段未选择数据字典", + "remotePullDown": "远程下拉", + "remotePullDownValue":"远程下拉value字段", + "remotePullDownValuePlaceholder":"请选择远程下拉value字段", + "remotePullDownLabel":"远程下拉标题字段", + "remotePullDownLabelPlaceholder":"请选择远程下拉label字段", + "selectType":"下拉类型" + + +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/tools.code.index.json b/admin/src/app/lang/zh-cn/tools.code.index.json new file mode 100644 index 0000000..f8a7ca2 --- /dev/null +++ b/admin/src/app/lang/zh-cn/tools.code.index.json @@ -0,0 +1,49 @@ +{ + "tableName":"表名称", + "tableContent":"描述", + "addon":"插件", + "moduleName":"模块名", + "className":"类名", + "editType":"编辑方式", + "createTime":"创建时间", + "updateTime":"更新时间", + "popup":"弹出", + "page":"新页面", + "tableNamePlaceholder":"请输入表名", + "tableContentPlaceholder":"请输入描述", + "addonPlaceholder":"请选择插件", + "moduleNamePlaceholder":"请输入模块名", + "classNamePlaceholder":"请输入类名", + "editTypePlaceholder":"请选择编辑方式", + "addCode":"导入数据表", + "updateCode":"编辑代码生成", + "codeDeleteTips":"确定要删除吗?", + "tableComment":"表描述", + "tableCreateTime":"创建时间", + "tableUpdateTime":"修改时间", + "addBtn":"添加", + "searchPlaceholder":"请输入表名或表描述搜索", + "selectTableTips":"确认导入该数据表吗?", + "download":"下载代码", + "codeGeneration":"代码生成", + "codeList":"生成列表", + "step1":"选择数据表生成代码", + "describe1":"点击添加,选择对应数据表,添加之后会跳转到对应生成代码的配置管理页面", + "btn1":"添加", + "step2":"基础设置", + "describe2":"代码生成查看基础设置,包括基础的表名、描述、所属插件设置", + "btn2":"插件列表", + "step3":"字段设置", + "describe3":"代码中字段的管理,包括字段是否进行增加、编辑、列表、查询展示等", + "btn3":"查看教程", + "step4":"页面设置", + "describe4":"正在开发中,会将字段进行展示管理配置,同时提供预览,真正实现自定义表单配置", + "btn4":"插件列表", + "step5":"生成配置", + "describe5":"针对代码中展示页面配置,包括单独页面编辑表单还是弹框,生成的代码穿插到系统中还是进行下载等", + "btn5":"官方市场", + "saveAndSync":"同步代码", + "saveAndSyncText":"同步的代码与项目产生冲突,是否确认覆盖?", + "saveAndSyncText1":"同步的代码会加入到项目代码中,是否确认继续", + "addonName": "所属插件" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/tools.detection.json b/admin/src/app/lang/zh-cn/tools.detection.json new file mode 100644 index 0000000..80c23ab --- /dev/null +++ b/admin/src/app/lang/zh-cn/tools.detection.json @@ -0,0 +1,16 @@ +{ + "title": "名称", + "serverInformation": "服务器信息", + "systemDemand": "系统环境要求", + "authorityStatus": "权限状态", + "name": "选项", + "demand": "要求", + "status": "状态", + "environment": "环境", + "version": "版本", + "phpType": "PHP版本", + "phpTypeValue": "大于等于8.0.0", + "mysqlType": "mysql版本", + "mysqlTypeValue": "大于等于5.7", + "process": "启动进程" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/tools.schedule.json b/admin/src/app/lang/zh-cn/tools.schedule.json new file mode 100644 index 0000000..99e23f0 --- /dev/null +++ b/admin/src/app/lang/zh-cn/tools.schedule.json @@ -0,0 +1,33 @@ +{ + "title": "名称", + "cronInfo": "任务详情", + "type": "任务类型", + "lastTime": "最后执行时间", + "startDate":"开始时间", + "cron":"定时执行", + "endDate":"结束时间", + "titlePlaceholder": "请选择任务模版", + "typeName":"任务类型", + "crondType":"任务周期", + "count":"已执行次数", + "nextTime":"下次执行时间", + "task":"任务命令", + "data":"附加参数", + "statusDesc":"最后执行结果", + "key": "key", + "timeClass": "时间类型", + "executeTime": "执行时间", + "editCron": "编辑任务", + "cronTemplate": "任务模版", + "cronTime": "任务周期", + "openStatus": "任务状态", + "isopen": "是否启用", + "day": "日", + "hour": "时", + "min": "分", + "cronDeleteTips": "你确定要删除任务吗", + "addCron": "添加任务", + "cronTimeTips": "任务周期时间不能为空", + "cronTipsOne": "启动计划任务方式:", + "cronTipsTwo": "1、使用命令启动:php think cron:schedule 如果更改了任务周期、状态、删除任务等操作后,需要重新启动下 php think cron:schedule 确保生效" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/tools.updatecache.json b/admin/src/app/lang/zh-cn/tools.updatecache.json new file mode 100644 index 0000000..bd94c79 --- /dev/null +++ b/admin/src/app/lang/zh-cn/tools.updatecache.json @@ -0,0 +1,7 @@ +{ + "refresh":"刷新", + "refreshMenu":"刷新菜单", + "refreshMenuDesc":"新增/修改插件菜单后,需要刷新插件菜单", + "dataCache":"数据缓存", + "dataCacheDesc":"新增/修改数据表后,需要清除数据表缓存" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/user.center.json b/admin/src/app/lang/zh-cn/user.center.json new file mode 100644 index 0000000..6905b79 --- /dev/null +++ b/admin/src/app/lang/zh-cn/user.center.json @@ -0,0 +1,6 @@ +{ + "personal": "个人中心", + "editPersonal": "编辑", + "headImg": "头像", + "realName": "名称" +} \ No newline at end of file diff --git a/admin/src/app/lang/zh-cn/user.edit_center.json b/admin/src/app/lang/zh-cn/user.edit_center.json new file mode 100644 index 0000000..7b41f3a --- /dev/null +++ b/admin/src/app/lang/zh-cn/user.edit_center.json @@ -0,0 +1,18 @@ +{ + "editPersonal": "编辑个人中心", + "headImg": "头像", + "realName": "名称", + "originalPassword": "原始密码", + "password": "新密码", + "passwordCopy": "确认密码", + "passwordTip": "修改密码时必填.不修改密码时留空", + "realNamePlaceholder": "请输入用户名称", + "headImgPlaceholder": "请输入用户头像", + "originalPasswordPlaceholder": "请输入原始密码", + "passwordPlaceholder": "请输入新密码", + "save": "保存", + "cancel": "返回", + "originalPasswordHint": "原始密码不能为空", + "newPasswordHint": "请输入确认密码", + "doubleCipherHint": "两次新密码不同" +} \ No newline at end of file diff --git a/admin/src/app/views/app/authorize.vue b/admin/src/app/views/app/authorize.vue new file mode 100644 index 0000000..cd9de67 --- /dev/null +++ b/admin/src/app/views/app/authorize.vue @@ -0,0 +1,298 @@ + + + + + + diff --git a/admin/src/app/views/app/index.vue b/admin/src/app/views/app/index.vue new file mode 100644 index 0000000..8c72df0 --- /dev/null +++ b/admin/src/app/views/app/index.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/admin/src/app/views/app/store.vue b/admin/src/app/views/app/store.vue new file mode 100644 index 0000000..0cfcbf9 --- /dev/null +++ b/admin/src/app/views/app/store.vue @@ -0,0 +1,841 @@ + + + + + diff --git a/admin/src/app/views/auth/components/edit-menu.vue b/admin/src/app/views/auth/components/edit-menu.vue new file mode 100644 index 0000000..10dee9f --- /dev/null +++ b/admin/src/app/views/auth/components/edit-menu.vue @@ -0,0 +1,253 @@ + + + + + diff --git a/admin/src/app/views/auth/components/edit-role.vue b/admin/src/app/views/auth/components/edit-role.vue new file mode 100644 index 0000000..c837d1d --- /dev/null +++ b/admin/src/app/views/auth/components/edit-role.vue @@ -0,0 +1,207 @@ + + + + + diff --git a/admin/src/app/views/auth/components/edit-user.vue b/admin/src/app/views/auth/components/edit-user.vue new file mode 100644 index 0000000..5628602 --- /dev/null +++ b/admin/src/app/views/auth/components/edit-user.vue @@ -0,0 +1,224 @@ + + + + + diff --git a/admin/src/app/views/auth/components/select-menu-item.vue b/admin/src/app/views/auth/components/select-menu-item.vue new file mode 100644 index 0000000..10c6751 --- /dev/null +++ b/admin/src/app/views/auth/components/select-menu-item.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/admin/src/app/views/auth/components/user-log-detail.vue b/admin/src/app/views/auth/components/user-log-detail.vue new file mode 100644 index 0000000..25d829b --- /dev/null +++ b/admin/src/app/views/auth/components/user-log-detail.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/admin/src/app/views/auth/log.vue b/admin/src/app/views/auth/log.vue new file mode 100644 index 0000000..51f8272 --- /dev/null +++ b/admin/src/app/views/auth/log.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/admin/src/app/views/auth/menu.vue b/admin/src/app/views/auth/menu.vue new file mode 100644 index 0000000..38b7b2d --- /dev/null +++ b/admin/src/app/views/auth/menu.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/admin/src/app/views/auth/role.vue b/admin/src/app/views/auth/role.vue new file mode 100644 index 0000000..17f0cf7 --- /dev/null +++ b/admin/src/app/views/auth/role.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/admin/src/app/views/auth/site_menu.vue b/admin/src/app/views/auth/site_menu.vue new file mode 100644 index 0000000..4d42fc6 --- /dev/null +++ b/admin/src/app/views/auth/site_menu.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/admin/src/app/views/auth/user.vue b/admin/src/app/views/auth/user.vue new file mode 100644 index 0000000..16f51f4 --- /dev/null +++ b/admin/src/app/views/auth/user.vue @@ -0,0 +1,193 @@ + + + + + diff --git a/admin/src/app/views/channel/aliapp/access.vue b/admin/src/app/views/channel/aliapp/access.vue new file mode 100644 index 0000000..351184d --- /dev/null +++ b/admin/src/app/views/channel/aliapp/access.vue @@ -0,0 +1,313 @@ + + + + diff --git a/admin/src/app/views/channel/aliapp/config.vue b/admin/src/app/views/channel/aliapp/config.vue new file mode 100644 index 0000000..8fba61c --- /dev/null +++ b/admin/src/app/views/channel/aliapp/config.vue @@ -0,0 +1,185 @@ + + + + + diff --git a/admin/src/app/views/channel/aliapp/course.vue b/admin/src/app/views/channel/aliapp/course.vue new file mode 100644 index 0000000..22f9065 --- /dev/null +++ b/admin/src/app/views/channel/aliapp/course.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/admin/src/app/views/channel/h5/config.vue b/admin/src/app/views/channel/h5/config.vue new file mode 100644 index 0000000..bd5dcbf --- /dev/null +++ b/admin/src/app/views/channel/h5/config.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/admin/src/app/views/channel/pc/config.vue b/admin/src/app/views/channel/pc/config.vue new file mode 100644 index 0000000..17ef854 --- /dev/null +++ b/admin/src/app/views/channel/pc/config.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/admin/src/app/views/channel/weapp/access.vue b/admin/src/app/views/channel/weapp/access.vue new file mode 100644 index 0000000..36b44e9 --- /dev/null +++ b/admin/src/app/views/channel/weapp/access.vue @@ -0,0 +1,240 @@ + + + + + diff --git a/admin/src/app/views/channel/weapp/code.vue b/admin/src/app/views/channel/weapp/code.vue new file mode 100644 index 0000000..e7988e7 --- /dev/null +++ b/admin/src/app/views/channel/weapp/code.vue @@ -0,0 +1,290 @@ + + + + + diff --git a/admin/src/app/views/channel/weapp/config.vue b/admin/src/app/views/channel/weapp/config.vue new file mode 100644 index 0000000..04eaf77 --- /dev/null +++ b/admin/src/app/views/channel/weapp/config.vue @@ -0,0 +1,258 @@ + + + + + diff --git a/admin/src/app/views/channel/weapp/course.vue b/admin/src/app/views/channel/weapp/course.vue new file mode 100644 index 0000000..87864ff --- /dev/null +++ b/admin/src/app/views/channel/weapp/course.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/admin/src/app/views/channel/weapp/template.vue b/admin/src/app/views/channel/weapp/template.vue new file mode 100644 index 0000000..1e832d4 --- /dev/null +++ b/admin/src/app/views/channel/weapp/template.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/admin/src/app/views/channel/wechat/access.vue b/admin/src/app/views/channel/wechat/access.vue new file mode 100644 index 0000000..4ecbb71 --- /dev/null +++ b/admin/src/app/views/channel/wechat/access.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/admin/src/app/views/channel/wechat/components/menu-form.vue b/admin/src/app/views/channel/wechat/components/menu-form.vue new file mode 100644 index 0000000..a07f140 --- /dev/null +++ b/admin/src/app/views/channel/wechat/components/menu-form.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/admin/src/app/views/channel/wechat/config.vue b/admin/src/app/views/channel/wechat/config.vue new file mode 100644 index 0000000..f8cade9 --- /dev/null +++ b/admin/src/app/views/channel/wechat/config.vue @@ -0,0 +1,250 @@ + + + + + diff --git a/admin/src/app/views/channel/wechat/course.vue b/admin/src/app/views/channel/wechat/course.vue new file mode 100644 index 0000000..5eaeae2 --- /dev/null +++ b/admin/src/app/views/channel/wechat/course.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/admin/src/app/views/channel/wechat/menu.vue b/admin/src/app/views/channel/wechat/menu.vue new file mode 100644 index 0000000..f59ae46 --- /dev/null +++ b/admin/src/app/views/channel/wechat/menu.vue @@ -0,0 +1,319 @@ + + + + + diff --git a/admin/src/app/views/channel/wechat/reply.vue b/admin/src/app/views/channel/wechat/reply.vue new file mode 100644 index 0000000..c756742 --- /dev/null +++ b/admin/src/app/views/channel/wechat/reply.vue @@ -0,0 +1,8 @@ + + + + + diff --git a/admin/src/app/views/channel/wechat/template.vue b/admin/src/app/views/channel/wechat/template.vue new file mode 100644 index 0000000..b91a886 --- /dev/null +++ b/admin/src/app/views/channel/wechat/template.vue @@ -0,0 +1,178 @@ + + + + diff --git a/admin/src/app/views/dict/components/dict.vue b/admin/src/app/views/dict/components/dict.vue new file mode 100644 index 0000000..0f2e055 --- /dev/null +++ b/admin/src/app/views/dict/components/dict.vue @@ -0,0 +1,179 @@ + + + + + + diff --git a/admin/src/app/views/dict/components/edit.vue b/admin/src/app/views/dict/components/edit.vue new file mode 100644 index 0000000..efa967e --- /dev/null +++ b/admin/src/app/views/dict/components/edit.vue @@ -0,0 +1,172 @@ + + + + + + diff --git a/admin/src/app/views/dict/list.vue b/admin/src/app/views/dict/list.vue new file mode 100644 index 0000000..94b8b69 --- /dev/null +++ b/admin/src/app/views/dict/list.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/admin/src/app/views/diy/components/edit-addon-list.vue b/admin/src/app/views/diy/components/edit-addon-list.vue new file mode 100644 index 0000000..75890e6 --- /dev/null +++ b/admin/src/app/views/diy/components/edit-addon-list.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/admin/src/app/views/diy/components/edit-graphic-nav.vue b/admin/src/app/views/diy/components/edit-graphic-nav.vue new file mode 100644 index 0000000..dff613f --- /dev/null +++ b/admin/src/app/views/diy/components/edit-graphic-nav.vue @@ -0,0 +1,253 @@ + + + + + + diff --git a/admin/src/app/views/diy/components/edit-horz-blank.vue b/admin/src/app/views/diy/components/edit-horz-blank.vue new file mode 100644 index 0000000..9e75831 --- /dev/null +++ b/admin/src/app/views/diy/components/edit-horz-blank.vue @@ -0,0 +1,41 @@ + + + + + + diff --git a/admin/src/app/views/diy/components/edit-hot-area.vue b/admin/src/app/views/diy/components/edit-hot-area.vue new file mode 100644 index 0000000..b7900ce --- /dev/null +++ b/admin/src/app/views/diy/components/edit-hot-area.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/admin/src/app/views/diy/components/edit-image-ads.vue b/admin/src/app/views/diy/components/edit-image-ads.vue new file mode 100644 index 0000000..e8c3ba1 --- /dev/null +++ b/admin/src/app/views/diy/components/edit-image-ads.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/admin/src/app/views/diy/components/edit-member-info.vue b/admin/src/app/views/diy/components/edit-member-info.vue new file mode 100644 index 0000000..b0c260d --- /dev/null +++ b/admin/src/app/views/diy/components/edit-member-info.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/admin/src/app/views/diy/components/edit-notice.vue b/admin/src/app/views/diy/components/edit-notice.vue new file mode 100644 index 0000000..b7e4048 --- /dev/null +++ b/admin/src/app/views/diy/components/edit-notice.vue @@ -0,0 +1,110 @@ + + + + + + diff --git a/admin/src/app/views/diy/components/edit-page.vue b/admin/src/app/views/diy/components/edit-page.vue new file mode 100644 index 0000000..830ff5d --- /dev/null +++ b/admin/src/app/views/diy/components/edit-page.vue @@ -0,0 +1,66 @@ + + + + + diff --git a/admin/src/app/views/diy/components/edit-rubik-cube.vue b/admin/src/app/views/diy/components/edit-rubik-cube.vue new file mode 100644 index 0000000..f42ebe5 --- /dev/null +++ b/admin/src/app/views/diy/components/edit-rubik-cube.vue @@ -0,0 +1,792 @@ + + + + + \ No newline at end of file diff --git a/admin/src/app/views/diy/components/edit-text.vue b/admin/src/app/views/diy/components/edit-text.vue new file mode 100644 index 0000000..1a21c0b --- /dev/null +++ b/admin/src/app/views/diy/components/edit-text.vue @@ -0,0 +1,157 @@ + + + + + + diff --git a/admin/src/app/views/diy/edit.vue b/admin/src/app/views/diy/edit.vue new file mode 100644 index 0000000..d0eb600 --- /dev/null +++ b/admin/src/app/views/diy/edit.vue @@ -0,0 +1,655 @@ + + + + + + diff --git a/admin/src/app/views/diy/index.vue b/admin/src/app/views/diy/index.vue new file mode 100644 index 0000000..fa32376 --- /dev/null +++ b/admin/src/app/views/diy/index.vue @@ -0,0 +1,308 @@ + + + + + diff --git a/admin/src/app/views/diy/list.vue b/admin/src/app/views/diy/list.vue new file mode 100644 index 0000000..35e1545 --- /dev/null +++ b/admin/src/app/views/diy/list.vue @@ -0,0 +1,353 @@ + + + + + \ No newline at end of file diff --git a/admin/src/app/views/diy/member.vue b/admin/src/app/views/diy/member.vue new file mode 100644 index 0000000..0a443eb --- /dev/null +++ b/admin/src/app/views/diy/member.vue @@ -0,0 +1,351 @@ + + + + + diff --git a/admin/src/app/views/diy/route.vue b/admin/src/app/views/diy/route.vue new file mode 100644 index 0000000..5eaf2d9 --- /dev/null +++ b/admin/src/app/views/diy/route.vue @@ -0,0 +1,288 @@ + + + + + diff --git a/admin/src/app/views/diy/tabbar.vue b/admin/src/app/views/diy/tabbar.vue new file mode 100644 index 0000000..75c0ddc --- /dev/null +++ b/admin/src/app/views/diy/tabbar.vue @@ -0,0 +1,90 @@ + + + + + \ No newline at end of file diff --git a/admin/src/app/views/diy/tabbar_edit.vue b/admin/src/app/views/diy/tabbar_edit.vue new file mode 100644 index 0000000..aa55a84 --- /dev/null +++ b/admin/src/app/views/diy/tabbar_edit.vue @@ -0,0 +1,262 @@ + + + + \ No newline at end of file diff --git a/admin/src/app/views/error/404.vue b/admin/src/app/views/error/404.vue new file mode 100644 index 0000000..b0a4d97 --- /dev/null +++ b/admin/src/app/views/error/404.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/admin/src/app/views/finance/account.vue b/admin/src/app/views/finance/account.vue new file mode 100644 index 0000000..1beb86f --- /dev/null +++ b/admin/src/app/views/finance/account.vue @@ -0,0 +1,275 @@ + + + + + diff --git a/admin/src/app/views/finance/cash_out.vue b/admin/src/app/views/finance/cash_out.vue new file mode 100644 index 0000000..2ecd943 --- /dev/null +++ b/admin/src/app/views/finance/cash_out.vue @@ -0,0 +1,422 @@ + + + + + diff --git a/admin/src/app/views/finance/offlinepay.vue b/admin/src/app/views/finance/offlinepay.vue new file mode 100644 index 0000000..d22de9d --- /dev/null +++ b/admin/src/app/views/finance/offlinepay.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/admin/src/app/views/finance/pay_detail.vue b/admin/src/app/views/finance/pay_detail.vue new file mode 100644 index 0000000..bab0a0d --- /dev/null +++ b/admin/src/app/views/finance/pay_detail.vue @@ -0,0 +1,135 @@ + + + + + diff --git a/admin/src/app/views/finance/pay_refund.vue b/admin/src/app/views/finance/pay_refund.vue new file mode 100644 index 0000000..6310874 --- /dev/null +++ b/admin/src/app/views/finance/pay_refund.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/admin/src/app/views/finance/refund_detail.vue b/admin/src/app/views/finance/refund_detail.vue new file mode 100644 index 0000000..003be87 --- /dev/null +++ b/admin/src/app/views/finance/refund_detail.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/admin/src/app/views/home/edit_personal.vue b/admin/src/app/views/home/edit_personal.vue new file mode 100644 index 0000000..6d278a2 --- /dev/null +++ b/admin/src/app/views/home/edit_personal.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/admin/src/app/views/home/index.vue b/admin/src/app/views/home/index.vue new file mode 100644 index 0000000..cccc9ff --- /dev/null +++ b/admin/src/app/views/home/index.vue @@ -0,0 +1,259 @@ + + + + + + diff --git a/admin/src/app/views/home/index_COPY.vue b/admin/src/app/views/home/index_COPY.vue new file mode 100644 index 0000000..75f04fc --- /dev/null +++ b/admin/src/app/views/home/index_COPY.vue @@ -0,0 +1,236 @@ + + + + + + diff --git a/admin/src/app/views/home/personal.vue b/admin/src/app/views/home/personal.vue new file mode 100644 index 0000000..31c2439 --- /dev/null +++ b/admin/src/app/views/home/personal.vue @@ -0,0 +1,104 @@ + + + + + diff --git a/admin/src/app/views/index/app_manage.vue b/admin/src/app/views/index/app_manage.vue new file mode 100644 index 0000000..6571c09 --- /dev/null +++ b/admin/src/app/views/index/app_manage.vue @@ -0,0 +1,148 @@ + + + + + + diff --git a/admin/src/app/views/index/edit_personal.vue b/admin/src/app/views/index/edit_personal.vue new file mode 100644 index 0000000..5e99bb9 --- /dev/null +++ b/admin/src/app/views/index/edit_personal.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/admin/src/app/views/index/index.vue b/admin/src/app/views/index/index.vue new file mode 100644 index 0000000..bf65a0d --- /dev/null +++ b/admin/src/app/views/index/index.vue @@ -0,0 +1,372 @@ + + + + + + diff --git a/admin/src/app/views/index/personal.vue b/admin/src/app/views/index/personal.vue new file mode 100644 index 0000000..0b5fb79 --- /dev/null +++ b/admin/src/app/views/index/personal.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/admin/src/app/views/index/preview.vue b/admin/src/app/views/index/preview.vue new file mode 100644 index 0000000..13a342c --- /dev/null +++ b/admin/src/app/views/index/preview.vue @@ -0,0 +1,213 @@ + + + + + + diff --git a/admin/src/app/views/index/site_index.vue b/admin/src/app/views/index/site_index.vue new file mode 100644 index 0000000..5c7b76c --- /dev/null +++ b/admin/src/app/views/index/site_index.vue @@ -0,0 +1,511 @@ + + + + + diff --git a/admin/src/app/views/index/store.vue b/admin/src/app/views/index/store.vue new file mode 100644 index 0000000..b9704d7 --- /dev/null +++ b/admin/src/app/views/index/store.vue @@ -0,0 +1,997 @@ + + + + + + + diff --git a/admin/src/app/views/index/tools.vue b/admin/src/app/views/index/tools.vue new file mode 100644 index 0000000..a76c70e --- /dev/null +++ b/admin/src/app/views/index/tools.vue @@ -0,0 +1,161 @@ + + + + + + diff --git a/admin/src/app/views/login/index.vue b/admin/src/app/views/login/index.vue new file mode 100644 index 0000000..ee57dc0 --- /dev/null +++ b/admin/src/app/views/login/index.vue @@ -0,0 +1,279 @@ + + + + + diff --git a/admin/src/app/views/member/balance.vue b/admin/src/app/views/member/balance.vue new file mode 100644 index 0000000..56939dc --- /dev/null +++ b/admin/src/app/views/member/balance.vue @@ -0,0 +1,286 @@ + + + + + diff --git a/admin/src/app/views/member/commission.vue b/admin/src/app/views/member/commission.vue new file mode 100644 index 0000000..d2a6aad --- /dev/null +++ b/admin/src/app/views/member/commission.vue @@ -0,0 +1,245 @@ + + + + + diff --git a/admin/src/app/views/member/components/add-member.vue b/admin/src/app/views/member/components/add-member.vue new file mode 100644 index 0000000..9f5d4fb --- /dev/null +++ b/admin/src/app/views/member/components/add-member.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/admin/src/app/views/member/components/edit-label.vue b/admin/src/app/views/member/components/edit-label.vue new file mode 100644 index 0000000..2078b5f --- /dev/null +++ b/admin/src/app/views/member/components/edit-label.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/admin/src/app/views/member/components/edit-member.vue b/admin/src/app/views/member/components/edit-member.vue new file mode 100644 index 0000000..afa297e --- /dev/null +++ b/admin/src/app/views/member/components/edit-member.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/admin/src/app/views/member/components/member-balance-edit.vue b/admin/src/app/views/member/components/member-balance-edit.vue new file mode 100644 index 0000000..278c5c1 --- /dev/null +++ b/admin/src/app/views/member/components/member-balance-edit.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/admin/src/app/views/member/components/member-balance-info.vue b/admin/src/app/views/member/components/member-balance-info.vue new file mode 100644 index 0000000..9e88568 --- /dev/null +++ b/admin/src/app/views/member/components/member-balance-info.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/admin/src/app/views/member/components/member-commission-info.vue b/admin/src/app/views/member/components/member-commission-info.vue new file mode 100644 index 0000000..305dbf8 --- /dev/null +++ b/admin/src/app/views/member/components/member-commission-info.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/admin/src/app/views/member/components/member-money-info.vue b/admin/src/app/views/member/components/member-money-info.vue new file mode 100644 index 0000000..1290468 --- /dev/null +++ b/admin/src/app/views/member/components/member-money-info.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/admin/src/app/views/member/components/member-point-edit.vue b/admin/src/app/views/member/components/member-point-edit.vue new file mode 100644 index 0000000..4f8ce7e --- /dev/null +++ b/admin/src/app/views/member/components/member-point-edit.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/admin/src/app/views/member/components/member-point-info.vue b/admin/src/app/views/member/components/member-point-info.vue new file mode 100644 index 0000000..48ecd8b --- /dev/null +++ b/admin/src/app/views/member/components/member-point-info.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/admin/src/app/views/member/label.vue b/admin/src/app/views/member/label.vue new file mode 100644 index 0000000..47287c5 --- /dev/null +++ b/admin/src/app/views/member/label.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/admin/src/app/views/member/member.vue b/admin/src/app/views/member/member.vue new file mode 100644 index 0000000..0eb3e2c --- /dev/null +++ b/admin/src/app/views/member/member.vue @@ -0,0 +1,279 @@ + + + + + diff --git a/admin/src/app/views/member/member_detail.vue b/admin/src/app/views/member/member_detail.vue new file mode 100644 index 0000000..b41f252 --- /dev/null +++ b/admin/src/app/views/member/member_detail.vue @@ -0,0 +1,367 @@ + + + + + diff --git a/admin/src/app/views/member/point.vue b/admin/src/app/views/member/point.vue new file mode 100644 index 0000000..dbfc7bb --- /dev/null +++ b/admin/src/app/views/member/point.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/admin/src/app/views/order/recharge/detail.vue b/admin/src/app/views/order/recharge/detail.vue new file mode 100644 index 0000000..057f3f7 --- /dev/null +++ b/admin/src/app/views/order/recharge/detail.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/admin/src/app/views/order/recharge/list.vue b/admin/src/app/views/order/recharge/list.vue new file mode 100644 index 0000000..68a6b50 --- /dev/null +++ b/admin/src/app/views/order/recharge/list.vue @@ -0,0 +1,296 @@ + + + + + diff --git a/admin/src/app/views/order/recharge/refund.vue b/admin/src/app/views/order/recharge/refund.vue new file mode 100644 index 0000000..ef36da0 --- /dev/null +++ b/admin/src/app/views/order/recharge/refund.vue @@ -0,0 +1,238 @@ + + + + + diff --git a/admin/src/app/views/setting/adminlogin.vue b/admin/src/app/views/setting/adminlogin.vue new file mode 100644 index 0000000..f653400 --- /dev/null +++ b/admin/src/app/views/setting/adminlogin.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/admin/src/app/views/setting/agreement.vue b/admin/src/app/views/setting/agreement.vue new file mode 100644 index 0000000..0257c72 --- /dev/null +++ b/admin/src/app/views/setting/agreement.vue @@ -0,0 +1,77 @@ + + + + + diff --git a/admin/src/app/views/setting/agreement_edit.vue b/admin/src/app/views/setting/agreement_edit.vue new file mode 100644 index 0000000..0262a82 --- /dev/null +++ b/admin/src/app/views/setting/agreement_edit.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/admin/src/app/views/setting/cash_out.vue b/admin/src/app/views/setting/cash_out.vue new file mode 100644 index 0000000..9e4cefb --- /dev/null +++ b/admin/src/app/views/setting/cash_out.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/admin/src/app/views/setting/components/cron-info.vue b/admin/src/app/views/setting/components/cron-info.vue new file mode 100644 index 0000000..f843b40 --- /dev/null +++ b/admin/src/app/views/setting/components/cron-info.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/admin/src/app/views/setting/components/notice-records-info.vue b/admin/src/app/views/setting/components/notice-records-info.vue new file mode 100644 index 0000000..707f3d0 --- /dev/null +++ b/admin/src/app/views/setting/components/notice-records-info.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/admin/src/app/views/setting/components/notice-sms.vue b/admin/src/app/views/setting/components/notice-sms.vue new file mode 100644 index 0000000..da1f06e --- /dev/null +++ b/admin/src/app/views/setting/components/notice-sms.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/admin/src/app/views/setting/components/notice-weapp.vue b/admin/src/app/views/setting/components/notice-weapp.vue new file mode 100644 index 0000000..70172cf --- /dev/null +++ b/admin/src/app/views/setting/components/notice-weapp.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/admin/src/app/views/setting/components/notice-wechat.vue b/admin/src/app/views/setting/components/notice-wechat.vue new file mode 100644 index 0000000..a5d8e17 --- /dev/null +++ b/admin/src/app/views/setting/components/notice-wechat.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/admin/src/app/views/setting/components/pay-alipay.vue b/admin/src/app/views/setting/components/pay-alipay.vue new file mode 100644 index 0000000..9e96ff9 --- /dev/null +++ b/admin/src/app/views/setting/components/pay-alipay.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/admin/src/app/views/setting/components/pay-offlinepay.vue b/admin/src/app/views/setting/components/pay-offlinepay.vue new file mode 100644 index 0000000..a45c419 --- /dev/null +++ b/admin/src/app/views/setting/components/pay-offlinepay.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/admin/src/app/views/setting/components/pay-wechatpay.vue b/admin/src/app/views/setting/components/pay-wechatpay.vue new file mode 100644 index 0000000..9d105b4 --- /dev/null +++ b/admin/src/app/views/setting/components/pay-wechatpay.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/admin/src/app/views/setting/components/sms-ali.vue b/admin/src/app/views/setting/components/sms-ali.vue new file mode 100644 index 0000000..89120c5 --- /dev/null +++ b/admin/src/app/views/setting/components/sms-ali.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/admin/src/app/views/setting/components/sms-tencent.vue b/admin/src/app/views/setting/components/sms-tencent.vue new file mode 100644 index 0000000..dcb66dc --- /dev/null +++ b/admin/src/app/views/setting/components/sms-tencent.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/admin/src/app/views/setting/components/storage-ali.vue b/admin/src/app/views/setting/components/storage-ali.vue new file mode 100644 index 0000000..895bcfd --- /dev/null +++ b/admin/src/app/views/setting/components/storage-ali.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/admin/src/app/views/setting/components/storage-local.vue b/admin/src/app/views/setting/components/storage-local.vue new file mode 100644 index 0000000..92b88b2 --- /dev/null +++ b/admin/src/app/views/setting/components/storage-local.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/admin/src/app/views/setting/components/storage-qiniu.vue b/admin/src/app/views/setting/components/storage-qiniu.vue new file mode 100644 index 0000000..6a169d8 --- /dev/null +++ b/admin/src/app/views/setting/components/storage-qiniu.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/admin/src/app/views/setting/components/storage-tencent.vue b/admin/src/app/views/setting/components/storage-tencent.vue new file mode 100644 index 0000000..7bf39b8 --- /dev/null +++ b/admin/src/app/views/setting/components/storage-tencent.vue @@ -0,0 +1,135 @@ + + + + + diff --git a/admin/src/app/views/setting/copyright.vue b/admin/src/app/views/setting/copyright.vue new file mode 100644 index 0000000..de564de --- /dev/null +++ b/admin/src/app/views/setting/copyright.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/admin/src/app/views/setting/cron.vue b/admin/src/app/views/setting/cron.vue new file mode 100644 index 0000000..380b3e2 --- /dev/null +++ b/admin/src/app/views/setting/cron.vue @@ -0,0 +1,135 @@ + + + + + diff --git a/admin/src/app/views/setting/developer_token.vue b/admin/src/app/views/setting/developer_token.vue new file mode 100644 index 0000000..1690b90 --- /dev/null +++ b/admin/src/app/views/setting/developer_token.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/admin/src/app/views/setting/login.vue b/admin/src/app/views/setting/login.vue new file mode 100644 index 0000000..fa0ecaa --- /dev/null +++ b/admin/src/app/views/setting/login.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/admin/src/app/views/setting/map.vue b/admin/src/app/views/setting/map.vue new file mode 100644 index 0000000..be85ad4 --- /dev/null +++ b/admin/src/app/views/setting/map.vue @@ -0,0 +1,75 @@ + + + + diff --git a/admin/src/app/views/setting/member.vue b/admin/src/app/views/setting/member.vue new file mode 100644 index 0000000..c84d794 --- /dev/null +++ b/admin/src/app/views/setting/member.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/admin/src/app/views/setting/notice.vue b/admin/src/app/views/setting/notice.vue new file mode 100644 index 0000000..ff03684 --- /dev/null +++ b/admin/src/app/views/setting/notice.vue @@ -0,0 +1,153 @@ + + + + + diff --git a/admin/src/app/views/setting/notice_records.vue b/admin/src/app/views/setting/notice_records.vue new file mode 100644 index 0000000..efc6d0a --- /dev/null +++ b/admin/src/app/views/setting/notice_records.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/admin/src/app/views/setting/pay.vue b/admin/src/app/views/setting/pay.vue new file mode 100644 index 0000000..0ede1be --- /dev/null +++ b/admin/src/app/views/setting/pay.vue @@ -0,0 +1,231 @@ + + + + + diff --git a/admin/src/app/views/setting/sms.vue b/admin/src/app/views/setting/sms.vue new file mode 100644 index 0000000..4e4c138 --- /dev/null +++ b/admin/src/app/views/setting/sms.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/admin/src/app/views/setting/sms_records.vue b/admin/src/app/views/setting/sms_records.vue new file mode 100644 index 0000000..43006d5 --- /dev/null +++ b/admin/src/app/views/setting/sms_records.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/admin/src/app/views/setting/storage.vue b/admin/src/app/views/setting/storage.vue new file mode 100644 index 0000000..e1e78d4 --- /dev/null +++ b/admin/src/app/views/setting/storage.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/admin/src/app/views/setting/system.vue b/admin/src/app/views/setting/system.vue new file mode 100644 index 0000000..7c156c6 --- /dev/null +++ b/admin/src/app/views/setting/system.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/admin/src/app/views/setting/transfer.vue b/admin/src/app/views/setting/transfer.vue new file mode 100644 index 0000000..5fb8f62 --- /dev/null +++ b/admin/src/app/views/setting/transfer.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/admin/src/app/views/setting/weapp.vue b/admin/src/app/views/setting/weapp.vue new file mode 100644 index 0000000..c01c1ff --- /dev/null +++ b/admin/src/app/views/setting/weapp.vue @@ -0,0 +1,202 @@ + + + + + diff --git a/admin/src/app/views/setting/wxoplatform.vue b/admin/src/app/views/setting/wxoplatform.vue new file mode 100644 index 0000000..4089bce --- /dev/null +++ b/admin/src/app/views/setting/wxoplatform.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/admin/src/app/views/site/components/edit-site.vue b/admin/src/app/views/site/components/edit-site.vue new file mode 100644 index 0000000..3256adb --- /dev/null +++ b/admin/src/app/views/site/components/edit-site.vue @@ -0,0 +1,244 @@ + + + + + diff --git a/admin/src/app/views/site/components/user-info.vue b/admin/src/app/views/site/components/user-info.vue new file mode 100644 index 0000000..0b62acc --- /dev/null +++ b/admin/src/app/views/site/components/user-info.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/admin/src/app/views/site/edit_personal.vue b/admin/src/app/views/site/edit_personal.vue new file mode 100644 index 0000000..3777ac3 --- /dev/null +++ b/admin/src/app/views/site/edit_personal.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/admin/src/app/views/site/group.vue b/admin/src/app/views/site/group.vue new file mode 100644 index 0000000..d9c7f25 --- /dev/null +++ b/admin/src/app/views/site/group.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/admin/src/app/views/site/group_edit.vue b/admin/src/app/views/site/group_edit.vue new file mode 100644 index 0000000..13139a6 --- /dev/null +++ b/admin/src/app/views/site/group_edit.vue @@ -0,0 +1,209 @@ + + + + + diff --git a/admin/src/app/views/site/info.vue b/admin/src/app/views/site/info.vue new file mode 100644 index 0000000..13ae84a --- /dev/null +++ b/admin/src/app/views/site/info.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/admin/src/app/views/site/list.vue b/admin/src/app/views/site/list.vue new file mode 100644 index 0000000..57afcea --- /dev/null +++ b/admin/src/app/views/site/list.vue @@ -0,0 +1,331 @@ + + + + + diff --git a/admin/src/app/views/site/personal.vue b/admin/src/app/views/site/personal.vue new file mode 100644 index 0000000..2ff4b77 --- /dev/null +++ b/admin/src/app/views/site/personal.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/admin/src/app/views/site/user.vue b/admin/src/app/views/site/user.vue new file mode 100644 index 0000000..66f01ef --- /dev/null +++ b/admin/src/app/views/site/user.vue @@ -0,0 +1,143 @@ + + + + + diff --git a/admin/src/app/views/site/user_info.vue b/admin/src/app/views/site/user_info.vue new file mode 100644 index 0000000..0aff7ce --- /dev/null +++ b/admin/src/app/views/site/user_info.vue @@ -0,0 +1,117 @@ + + + + + diff --git a/admin/src/app/views/tools/addon/edit.vue b/admin/src/app/views/tools/addon/edit.vue new file mode 100644 index 0000000..6f598ad --- /dev/null +++ b/admin/src/app/views/tools/addon/edit.vue @@ -0,0 +1,235 @@ + + diff --git a/admin/src/app/views/tools/addon/index.vue b/admin/src/app/views/tools/addon/index.vue new file mode 100644 index 0000000..5b3c1aa --- /dev/null +++ b/admin/src/app/views/tools/addon/index.vue @@ -0,0 +1,315 @@ + + + diff --git a/admin/src/app/views/tools/attachment.vue b/admin/src/app/views/tools/attachment.vue new file mode 100644 index 0000000..a39a61c --- /dev/null +++ b/admin/src/app/views/tools/attachment.vue @@ -0,0 +1,60 @@ + + + + + + diff --git a/admin/src/app/views/tools/code/components/add-table.vue b/admin/src/app/views/tools/code/components/add-table.vue new file mode 100644 index 0000000..0691bd4 --- /dev/null +++ b/admin/src/app/views/tools/code/components/add-table.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/admin/src/app/views/tools/code/components/edit-associated.vue b/admin/src/app/views/tools/code/components/edit-associated.vue new file mode 100644 index 0000000..040ba57 --- /dev/null +++ b/admin/src/app/views/tools/code/components/edit-associated.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/admin/src/app/views/tools/code/components/edit-verify.vue b/admin/src/app/views/tools/code/components/edit-verify.vue new file mode 100644 index 0000000..d2d07ea --- /dev/null +++ b/admin/src/app/views/tools/code/components/edit-verify.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/admin/src/app/views/tools/code/components/edit-view-type.vue b/admin/src/app/views/tools/code/components/edit-view-type.vue new file mode 100644 index 0000000..0243777 --- /dev/null +++ b/admin/src/app/views/tools/code/components/edit-view-type.vue @@ -0,0 +1,230 @@ + + + + + diff --git a/admin/src/app/views/tools/code/edit.vue b/admin/src/app/views/tools/code/edit.vue new file mode 100644 index 0000000..aecf2a1 --- /dev/null +++ b/admin/src/app/views/tools/code/edit.vue @@ -0,0 +1,655 @@ + + + + + diff --git a/admin/src/app/views/tools/code/index.vue b/admin/src/app/views/tools/code/index.vue new file mode 100644 index 0000000..9c35ffb --- /dev/null +++ b/admin/src/app/views/tools/code/index.vue @@ -0,0 +1,454 @@ + + + + + + diff --git a/admin/src/app/views/tools/detection.vue b/admin/src/app/views/tools/detection.vue new file mode 100644 index 0000000..2e38da0 --- /dev/null +++ b/admin/src/app/views/tools/detection.vue @@ -0,0 +1,94 @@ + + + + + + diff --git a/admin/src/app/views/tools/form.vue b/admin/src/app/views/tools/form.vue new file mode 100644 index 0000000..52d9465 --- /dev/null +++ b/admin/src/app/views/tools/form.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/admin/src/app/views/tools/schedule.vue b/admin/src/app/views/tools/schedule.vue new file mode 100644 index 0000000..54b89af --- /dev/null +++ b/admin/src/app/views/tools/schedule.vue @@ -0,0 +1,284 @@ + + + + + diff --git a/admin/src/app/views/tools/updatecache.vue b/admin/src/app/views/tools/updatecache.vue new file mode 100644 index 0000000..108bdc2 --- /dev/null +++ b/admin/src/app/views/tools/updatecache.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/admin/src/components/diy-link/index.vue b/admin/src/components/diy-link/index.vue new file mode 100644 index 0000000..fccadf8 --- /dev/null +++ b/admin/src/components/diy-link/index.vue @@ -0,0 +1,210 @@ + + + + + diff --git a/admin/src/components/editor/index.vue b/admin/src/components/editor/index.vue new file mode 100644 index 0000000..2c392dc --- /dev/null +++ b/admin/src/components/editor/index.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/admin/src/components/heat-map/index.vue b/admin/src/components/heat-map/index.vue new file mode 100644 index 0000000..5cf84fc --- /dev/null +++ b/admin/src/components/heat-map/index.vue @@ -0,0 +1,615 @@ + + + + + diff --git a/admin/src/components/icon/index.vue b/admin/src/components/icon/index.vue new file mode 100644 index 0000000..01019f8 --- /dev/null +++ b/admin/src/components/icon/index.vue @@ -0,0 +1,48 @@ + + diff --git a/admin/src/components/popover-input/index.vue b/admin/src/components/popover-input/index.vue new file mode 100644 index 0000000..066d153 --- /dev/null +++ b/admin/src/components/popover-input/index.vue @@ -0,0 +1,70 @@ + + + + + diff --git a/admin/src/components/range-input/index.vue b/admin/src/components/range-input/index.vue new file mode 100644 index 0000000..572e06e --- /dev/null +++ b/admin/src/components/range-input/index.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/admin/src/components/select-area/index.vue b/admin/src/components/select-area/index.vue new file mode 100644 index 0000000..36795f8 --- /dev/null +++ b/admin/src/components/select-area/index.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/admin/src/components/select-icon/index.vue b/admin/src/components/select-icon/index.vue new file mode 100644 index 0000000..247eae1 --- /dev/null +++ b/admin/src/components/select-icon/index.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/admin/src/components/upload-attachment/attachment.vue b/admin/src/components/upload-attachment/attachment.vue new file mode 100644 index 0000000..3fec080 --- /dev/null +++ b/admin/src/components/upload-attachment/attachment.vue @@ -0,0 +1,597 @@ + + + + + + diff --git a/admin/src/components/upload-attachment/index.vue b/admin/src/components/upload-attachment/index.vue new file mode 100644 index 0000000..27eace9 --- /dev/null +++ b/admin/src/components/upload-attachment/index.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/admin/src/components/upload-file/index.vue b/admin/src/components/upload-file/index.vue new file mode 100644 index 0000000..4312948 --- /dev/null +++ b/admin/src/components/upload-file/index.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/admin/src/components/upload-image/index.vue b/admin/src/components/upload-image/index.vue new file mode 100644 index 0000000..8919d93 --- /dev/null +++ b/admin/src/components/upload-image/index.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/admin/src/components/upload-video/index.vue b/admin/src/components/upload-video/index.vue new file mode 100644 index 0000000..9392b53 --- /dev/null +++ b/admin/src/components/upload-video/index.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/admin/src/components/verifition/Verify.vue b/admin/src/components/verifition/Verify.vue new file mode 100644 index 0000000..406980d --- /dev/null +++ b/admin/src/components/verifition/Verify.vue @@ -0,0 +1,430 @@ + + + diff --git a/admin/src/components/verifition/Verify/VerifyPoints.vue b/admin/src/components/verifition/Verify/VerifyPoints.vue new file mode 100644 index 0000000..a8c3f71 --- /dev/null +++ b/admin/src/components/verifition/Verify/VerifyPoints.vue @@ -0,0 +1,260 @@ + + diff --git a/admin/src/components/verifition/Verify/VerifySlide.vue b/admin/src/components/verifition/Verify/VerifySlide.vue new file mode 100644 index 0000000..abec505 --- /dev/null +++ b/admin/src/components/verifition/Verify/VerifySlide.vue @@ -0,0 +1,364 @@ + + diff --git a/admin/src/components/verifition/api/index.js b/admin/src/components/verifition/api/index.js new file mode 100644 index 0000000..4013a72 --- /dev/null +++ b/admin/src/components/verifition/api/index.js @@ -0,0 +1,31 @@ +/** + * 此处可直接引用自己项目封装好的 axios 配合后端联调 + */ + + +import request from "./../utils/axios" //组件内部封装的axios +// import request from "@/app/api/axios.js" //调用项目封装的axios + +//获取验证图片 以及token +export function reqGet(data) { + return request.get('/captcha/create',{params:{...data}}); + + // return request({ + // url: '/captcha/create', + // method: 'get', + // data + // }) +} + +//滑动或者点选验证 +export function reqCheck(data) { + return request.get('/captcha/check',{params:{...data}}); + + // return request({ + // url: '/captcha/check', + // method: 'post', + // data + // }) +} + + diff --git a/admin/src/components/verifition/utils/ase.js b/admin/src/components/verifition/utils/ase.js new file mode 100644 index 0000000..4c1c559 --- /dev/null +++ b/admin/src/components/verifition/utils/ase.js @@ -0,0 +1,11 @@ +import CryptoJS from 'crypto-js' +/** + * @word 要加密的内容 + * @keyWord String 服务器随机返回的关键字 + * */ +export function aesEncrypt(word,keyWord="XwKsGlMcdPMEhR1B"){ + var key = CryptoJS.enc.Utf8.parse(keyWord); + var srcs = CryptoJS.enc.Utf8.parse(word); + var encrypted = CryptoJS.AES.encrypt(srcs, key, {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7}); + return encrypted.toString(); +} diff --git a/admin/src/components/verifition/utils/axios.js b/admin/src/components/verifition/utils/axios.js new file mode 100644 index 0000000..979b44c --- /dev/null +++ b/admin/src/components/verifition/utils/axios.js @@ -0,0 +1,30 @@ +import axios from 'axios'; + +axios.defaults.baseURL = import.meta.env.VITE_APP_BASE_URL; + +const service = axios.create({ + timeout: 40000, + headers: { + 'X-Requested-With': 'XMLHttpRequest', + 'Content-Type': 'application/json; charset=UTF-8' + }, +}) +service.interceptors.request.use( + config => { + return config + }, + error => { + Promise.reject(error) + } +) + +// response interceptor +service.interceptors.response.use( + response => { + const res = response.data; + return res + }, + error => { + } +) +export default service diff --git a/admin/src/components/verifition/utils/util.js b/admin/src/components/verifition/utils/util.js new file mode 100644 index 0000000..4cd1ad9 --- /dev/null +++ b/admin/src/components/verifition/utils/util.js @@ -0,0 +1,35 @@ +export function resetSize(vm) { + var img_width, img_height, bar_width, bar_height; //图片的宽度、高度,移动条的宽度、高度 + + var parentWidth = vm.$el.parentNode.offsetWidth || window.offsetWidth + var parentHeight = vm.$el.parentNode.offsetHeight || window.offsetHeight + if (vm.imgSize.width.indexOf('%') != -1) { + img_width = parseInt(vm.imgSize.width) / 100 * parentWidth + 'px' + } else { + img_width = vm.imgSize.width; + } + + if (vm.imgSize.height.indexOf('%') != -1) { + img_height = parseInt(vm.imgSize.height) / 100 * parentHeight + 'px' + } else { + img_height = vm.imgSize.height + } + + if (vm.barSize.width.indexOf('%') != -1) { + bar_width = parseInt(vm.barSize.width) / 100 * parentWidth + 'px' + } else { + bar_width = vm.barSize.width + } + + if (vm.barSize.height.indexOf('%') != -1) { + bar_height = parseInt(vm.barSize.height) / 100 * parentHeight + 'px' + } else { + bar_height = vm.barSize.height + } + + return {imgWidth: img_width, imgHeight: img_height, barWidth: bar_width, barHeight: bar_height} +} + +export const _code_chars = [1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] +export const _code_color1 = ['#fffff0', '#f0ffff', '#f0fff0', '#fff0f0'] +export const _code_color2 = ['#FF0033', '#006699', '#993366', '#FF9900', '#66CC66', '#FF33CC'] \ No newline at end of file diff --git a/admin/src/components/video-player/index.vue b/admin/src/components/video-player/index.vue new file mode 100644 index 0000000..e9e738e --- /dev/null +++ b/admin/src/components/video-player/index.vue @@ -0,0 +1,10 @@ + + + + + diff --git a/admin/src/lang/en/common.json b/admin/src/lang/en/common.json new file mode 100644 index 0000000..4e491a4 --- /dev/null +++ b/admin/src/lang/en/common.json @@ -0,0 +1,38 @@ +{ + "edit": "Edit", + "delete": "Delete", + "createTime": "Create Time", + "sort": "Sort", + "status": "Status", + "operation": "Operation", + "statusNormal": "Normal", + "statusDeactivate": "Deactivate", + "confirm": "Confirm", + "cancel": "Cancel", + "warning": "Warning", + "isShow": "Show or not", + "show": "show", + "hidden": "hidden", + "icon": "Icon", + "layout": { + "layoutSetting": "Layout configuration", + "darkMode": "Dark mode", + "themeColor": "Theme color" + }, + "axios": { + "unknownError": "Unknown Error", + "400": "Wrong request ", + "401": "Please login again", + "403": "Access denied", + "404": "Request error, the resource was not found", + "405": "Request method not allowed", + "408": "Request timeout", + "500": "Server side error", + "501": "Network not implemented", + "502": "Network error", + "503": "Service unavailable", + "504": "Network Timeout", + "505": "The http version does not support the request", + "timeout": "Network request timeout!" + } +} \ No newline at end of file diff --git a/admin/src/lang/i18n.ts b/admin/src/lang/i18n.ts new file mode 100644 index 0000000..d748f13 --- /dev/null +++ b/admin/src/lang/i18n.ts @@ -0,0 +1,32 @@ +import { createI18n } from "vue-i18n" + +import Language from "./language" +import zhCn from "./zh-cn/common.json"; +import en from "./en/common.json" + +const addonZhCnCommon = import.meta.globEager('@/addon/**/lang/zh-cn/common.json') +const addonEnCommon = import.meta.globEager('@/addon/**/lang/en/common.json') + +for (let key in addonZhCnCommon) { + Object.assign(zhCn, addonZhCnCommon[key].default) +} +for (let key in addonEnCommon) { + Object.assign(en, addonEnCommon[key].default) +} + +//创建实例 +let i18n = createI18n({ + datetimeFormats: {}, + numberFormats: {}, + globalInjection: true, //是否全局注入 + silentTranslationWarn: true, + messages: { + "zh-cn": zhCn, + en + } +}); + +const language = new Language(i18n); + +export { language }; +export default i18n; diff --git a/admin/src/lang/index.ts b/admin/src/lang/index.ts new file mode 100644 index 0000000..07eb723 --- /dev/null +++ b/admin/src/lang/index.ts @@ -0,0 +1,21 @@ +import i18n, { language } from "./i18n" +import useAppStore from '@/stores/modules/app' + +const t = (message: string) => { + const route = useAppStore().route + const path = route.meta.view || route.path + const file = path == '/' ? 'index' : path.replace(/^(\/admin\/|\/site\/|\/)/, '').replaceAll('/', '.') + const key = `${file}.${message}` + return i18n.global.t(key) != key ? i18n.global.t(key) : i18n.global.t(message) +} + +export { language, t } + +export default { + install(app: any) { + //注册i18n + app.use(i18n); + } +}; + + diff --git a/admin/src/lang/language.ts b/admin/src/lang/language.ts new file mode 100644 index 0000000..f6e1cd7 --- /dev/null +++ b/admin/src/lang/language.ts @@ -0,0 +1,65 @@ +import { nextTick } from 'vue' + +class Language { + private i18n: any; + private loadLocale: Array = []; //已加载的语言 + + constructor(i18n: any) { + this.i18n = i18n + } + + /** + * + * @param locale 设置语言 + */ + public setI18nLanguage(locale: string) { + if (this.i18n.mode === 'legacy') { + this.i18n.global.locale = locale + } else { + this.i18n.global.locale = locale + } + let html = document.querySelector('html') + html && html.setAttribute('lang', locale) + } + + /** + * 加载语言包 + * @param path + * @param locale + * @returns + */ + public async loadLocaleMessages(app: string, path: string, locale: string) { + try { + const file = path == '/' ? 'index' : path.replace(/^(\/admin\/|\/site\/|\/)/, '').replaceAll('/', '.') + + // 引入语言包文件 + const messages = await import(app ? `@/addon/${app}/lang/${locale}/${file}.json` : `@/app/lang/${locale}/${file}.json`) + + let data: Record = {} + Object.keys(messages.default).forEach(key => { + data[`${file}.${key}`] = messages.default[key] + }) + + // 查询插件的公共语言包 + if (app) { + try { + var messagesCommon = await import( `@/${app}/lang/${locale}/common.json`) + Object.keys(messagesCommon.default).forEach(key => { + data[`${file}.${key}`] = messagesCommon.default[key] + }) + } catch (e) { + // console.log('未找到插件公共语言包') + } + } + + this.i18n.global.mergeLocaleMessage(locale, data) + this.setI18nLanguage(locale) + return nextTick() + } catch (e) { + this.setI18nLanguage(locale) + return nextTick() + } + } +} + +export default Language diff --git a/admin/src/lang/zh-cn/common.json b/admin/src/lang/zh-cn/common.json new file mode 100644 index 0000000..0e597b6 --- /dev/null +++ b/admin/src/lang/zh-cn/common.json @@ -0,0 +1,158 @@ +{ + "edit": "编辑", + "delete": "删除", + "info": "详情", + "createTime": "创建时间", + "sort": "排序", + "status": "状态", + "operation": "操作", + "more": "更多", + "statusNormal": "正常", + "statusDeactivate": "停用", + "startUsing": "启用", + "confirm": "确认", + "save": "保存", + "back": "返回", + "cancel": "取消", + "search": "搜索", + "reset": "重置", + "warning": "提示", + "isShow": "是否显示", + "show": "显示", + "hidden": "隐藏", + "icon": "图标", + "userName": "用户名", + "headImg": "头像", + "accountNumber": "账号", + "password": "密码", + "confirmPassword": "确认密码", + "image": "图片", + "video": "视频", + "rename": "重命名", + "lookOver": "查看", + "selectAll": "全选", + "yes": "是", + "no": "否", + "copy": "复制", + "complete": "完成", + "copySuccess": "复制成功", + "notSupportCopy": "浏览器不支持一键复制,请手动进行复制", + "selectPlaceholder": "全部", + "provincePlaceholder": "请选择省", + "cityPlaceholder": "请选择市", + "districtPlaceholder": "请选择区/县", + "emptyData": "暂无数据", + "emptyQrCode": "暂无二维码", + "fileErr": "无法显示", + "upload": { + "root": "上传", + "selectimage": "选择图片", + "selectvideo": "选择视频", + "selecticon": "选择图标", + "uploadimage": "上传图片", + "uploadvideo": "上传视频", + "addAttachmentCategory": "添加分组", + "attachmentCategoryPlaceholder": "请输入分组名称", + "attachmentEmpty": "暂无附件,请点击上传按钮上传", + "iconEmpty": "暂无图标", + "deleteCategoryTips": "确定要删除该分组吗?", + "deleteAttachmentTips": "确定要删除所选附件吗?如所选附件已被使用删除将会受到影响,请谨慎操作!", + "move": "移动", + "moveCategory": "移动分组", + "moveTo": "移动至", + "placeholderimageName": "请输入图片名称", + "placeholdervideoName": "请输入视频名称", + "placeholdericonName": "请输入图标名称", + "success": "上传成功", + "triggerUpperLimit": "可选数量已达上限" + }, + "tabs": { + "closeLeft": "关闭左侧", + "closeRight": "关闭右侧", + "closeOther": "关闭其他" + }, + "layout": { + "layoutSetting": "主题设置", + "darkMode": "黑暗模式", + "sidebarMode": "主题风格", + "themeColor": "主题颜色", + "detectionLoginOperation": "确定", + "detectionLoginContent": "已检测到有其他账号登录,需要刷新后才能继续操作。", + "detectionLoginTip": "提示", + "layoutStyle": "布局风格" + }, + "axios": { + "unknownError": "未知错误", + "400": "错误的请求", + "401": "请重新登录", + "403": "拒绝访问", + "404": "请求错误", + "405": "请求方法未允许", + "408": "请求超时", + "409": "请求跨域", + "500": "服务器端出错,错误原因:", + "501": "网络未实现", + "502": "网络错误", + "503": "服务不可用", + "504": "网络超时", + "505": "http版本不支持该请求", + "timeout": "网络请求超时!", + "requestError": "请求错误", + "errNetwork": "网络请求错误", + "baseUrlError": " 接口请求错误,请检查VITE_APP_BASE_URL参数配置或者伪静态配置, 点击查看相关手册" + }, + "linkPlaceholder": "请选择跳转链接", + "selectLinkTips": "链接选择", + "diyLinkName": "链接名称", + "diyLinkNamePlaceholder": "请输入链接名称", + "diyLinkNameNotEmpty": "链接名称不能为空", + "diyLinkUrl": "跳转路径", + "diyLinkUrlPlaceholder": "请输入跳转路径", + "diyLinkUrlNotEmpty": "跳转路径不能为空", + "returnToPreviousPage": "返回", + "preview": "预览", + "emptyApp": "暂未安装任何应用", + "newInfo": "最新消息", + "mapSetting": "地图设置", + "mapKey": "腾讯地图KEY", + "indexTemplate": "首页模版", + "indexSwitch": "切换首页", + "indexWarning": "你确定要切换首页吗?", + "originalPassword": "原始密码", + "newPassword": "新密码", + "passwordCopy": "确认密码", + "passwordTip": "修改密码时必填.不修改密码时留空", + "originalPasswordPlaceholder": "请输入原始密码", + "passwordPlaceholder": "请输入新密码", + "originalPasswordHint": "原始密码不能为空", + "newPasswordHint": "请输入确认密码", + "doubleCipherHint": "两次新密码不同", + "upgrade": { + "upgradeButton": "立即升级", + "title": "升级", + "upgradingTips": "有正在执行的升级任务,", + "clickView": "点击查看", + "dirPermission": "目录读写权限", + "path": "路径", + "demand": "要求", + "readable": "可读", + "write": "可写", + "upgradeSuccess": "升级成功", + "localBuild": "手动编译", + "cloudBuild": "云编译", + "showDialogCloseTips": "升级任务尚未完成,关闭将取消升级,是否要继续关闭?", + "upgradeCompleteTips": "升级完成后还需要编译admin wap web端可选择云编译或者是手动编译" + }, + "cloudbuild": { + "title": "云编译", + "executingTips": "有正在执行的编译任务,", + "clickView": "点击查看", + "dirPermission": "目录读写权限", + "path": "路径", + "demand": "要求", + "readable": "可读", + "write": "可写", + "cloudbuildSuccess": "编译完成", + "showDialogCloseTips": "编译任务尚未完成,关闭将取消编译,是否要继续关闭?" + } +} diff --git a/admin/src/layout/admin/components/aside/index.vue b/admin/src/layout/admin/components/aside/index.vue new file mode 100644 index 0000000..e234b64 --- /dev/null +++ b/admin/src/layout/admin/components/aside/index.vue @@ -0,0 +1,292 @@ + + + + + diff --git a/admin/src/layout/admin/components/aside/menu-item.vue b/admin/src/layout/admin/components/aside/menu-item.vue new file mode 100644 index 0000000..23a3eba --- /dev/null +++ b/admin/src/layout/admin/components/aside/menu-item.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/admin/src/layout/admin/components/aside/side.vue b/admin/src/layout/admin/components/aside/side.vue new file mode 100644 index 0000000..ae91b4f --- /dev/null +++ b/admin/src/layout/admin/components/aside/side.vue @@ -0,0 +1,143 @@ + + + + + diff --git a/admin/src/layout/admin/components/header/index.vue b/admin/src/layout/admin/components/header/index.vue new file mode 100644 index 0000000..f62f4bf --- /dev/null +++ b/admin/src/layout/admin/components/header/index.vue @@ -0,0 +1,221 @@ + + + + + + diff --git a/admin/src/layout/admin/components/header/layout-setting.vue b/admin/src/layout/admin/components/header/layout-setting.vue new file mode 100644 index 0000000..c59ea14 --- /dev/null +++ b/admin/src/layout/admin/components/header/layout-setting.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/admin/src/layout/admin/components/header/switch-lang.vue b/admin/src/layout/admin/components/header/switch-lang.vue new file mode 100644 index 0000000..e48de6e --- /dev/null +++ b/admin/src/layout/admin/components/header/switch-lang.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/admin/src/layout/admin/components/header/user-info.vue b/admin/src/layout/admin/components/header/user-info.vue new file mode 100644 index 0000000..f7ece83 --- /dev/null +++ b/admin/src/layout/admin/components/header/user-info.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/admin/src/layout/admin/components/tabs.vue b/admin/src/layout/admin/components/tabs.vue new file mode 100644 index 0000000..d58f79a --- /dev/null +++ b/admin/src/layout/admin/components/tabs.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/admin/src/layout/admin/index.vue b/admin/src/layout/admin/index.vue new file mode 100644 index 0000000..34b9e4b --- /dev/null +++ b/admin/src/layout/admin/index.vue @@ -0,0 +1,66 @@ + + + + + diff --git a/admin/src/layout/decorate/index.vue b/admin/src/layout/decorate/index.vue new file mode 100644 index 0000000..77929b2 --- /dev/null +++ b/admin/src/layout/decorate/index.vue @@ -0,0 +1,10 @@ + + + + + diff --git a/admin/src/layout/default/components/aside/index.vue b/admin/src/layout/default/components/aside/index.vue new file mode 100644 index 0000000..c2c9bfe --- /dev/null +++ b/admin/src/layout/default/components/aside/index.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/admin/src/layout/default/components/aside/menu-item.vue b/admin/src/layout/default/components/aside/menu-item.vue new file mode 100644 index 0000000..b958d0d --- /dev/null +++ b/admin/src/layout/default/components/aside/menu-item.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/admin/src/layout/default/components/aside/side.vue b/admin/src/layout/default/components/aside/side.vue new file mode 100644 index 0000000..35920fe --- /dev/null +++ b/admin/src/layout/default/components/aside/side.vue @@ -0,0 +1,231 @@ + + + + + diff --git a/admin/src/layout/default/components/header/index.vue b/admin/src/layout/default/components/header/index.vue new file mode 100644 index 0000000..67205da --- /dev/null +++ b/admin/src/layout/default/components/header/index.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/admin/src/layout/default/components/header/layout-setting.vue b/admin/src/layout/default/components/header/layout-setting.vue new file mode 100644 index 0000000..d70b817 --- /dev/null +++ b/admin/src/layout/default/components/header/layout-setting.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/admin/src/layout/default/components/header/switch-lang.vue b/admin/src/layout/default/components/header/switch-lang.vue new file mode 100644 index 0000000..e48de6e --- /dev/null +++ b/admin/src/layout/default/components/header/switch-lang.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/admin/src/layout/default/components/header/user-info.vue b/admin/src/layout/default/components/header/user-info.vue new file mode 100644 index 0000000..2d48bf9 --- /dev/null +++ b/admin/src/layout/default/components/header/user-info.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/admin/src/layout/default/components/tabs.vue b/admin/src/layout/default/components/tabs.vue new file mode 100644 index 0000000..d58f79a --- /dev/null +++ b/admin/src/layout/default/components/tabs.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/admin/src/layout/default/index.vue b/admin/src/layout/default/index.vue new file mode 100644 index 0000000..0edfe86 --- /dev/null +++ b/admin/src/layout/default/index.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/admin/src/layout/home/components/aside/index.vue b/admin/src/layout/home/components/aside/index.vue new file mode 100644 index 0000000..42a3b98 --- /dev/null +++ b/admin/src/layout/home/components/aside/index.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/admin/src/layout/home/components/aside/menu-item.vue b/admin/src/layout/home/components/aside/menu-item.vue new file mode 100644 index 0000000..1cb540d --- /dev/null +++ b/admin/src/layout/home/components/aside/menu-item.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/admin/src/layout/home/components/aside/side.vue b/admin/src/layout/home/components/aside/side.vue new file mode 100644 index 0000000..2bd8bb6 --- /dev/null +++ b/admin/src/layout/home/components/aside/side.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/admin/src/layout/home/components/header/index.vue b/admin/src/layout/home/components/header/index.vue new file mode 100644 index 0000000..69de81b --- /dev/null +++ b/admin/src/layout/home/components/header/index.vue @@ -0,0 +1,213 @@ + + + + + diff --git a/admin/src/layout/home/components/header/layout-setting.vue b/admin/src/layout/home/components/header/layout-setting.vue new file mode 100644 index 0000000..c59ea14 --- /dev/null +++ b/admin/src/layout/home/components/header/layout-setting.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/admin/src/layout/home/components/header/switch-lang.vue b/admin/src/layout/home/components/header/switch-lang.vue new file mode 100644 index 0000000..e48de6e --- /dev/null +++ b/admin/src/layout/home/components/header/switch-lang.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/admin/src/layout/home/components/header/user-info.vue b/admin/src/layout/home/components/header/user-info.vue new file mode 100644 index 0000000..f8bd5d5 --- /dev/null +++ b/admin/src/layout/home/components/header/user-info.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/admin/src/layout/home/components/tabs.vue b/admin/src/layout/home/components/tabs.vue new file mode 100644 index 0000000..d58f79a --- /dev/null +++ b/admin/src/layout/home/components/tabs.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/admin/src/layout/home/index.vue b/admin/src/layout/home/index.vue new file mode 100644 index 0000000..54ea93f --- /dev/null +++ b/admin/src/layout/home/index.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/admin/src/layout/index.vue b/admin/src/layout/index.vue new file mode 100644 index 0000000..aa07621 --- /dev/null +++ b/admin/src/layout/index.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/admin/src/main.ts b/admin/src/main.ts new file mode 100644 index 0000000..708a19a --- /dev/null +++ b/admin/src/main.ts @@ -0,0 +1,26 @@ +import { createApp } from 'vue' +import App from './App.vue' +import roter from './router' +import ElementPlus from 'element-plus' +import pinia from './stores' +import lang from './lang' +import '@/styles/index.scss' +import { useElementIcon } from './utils/common' +import 'highlight.js/styles/stackoverflow-light.css'; +import hljs from 'highlight.js/lib/common' +import hljsVuePlugin from '@highlightjs/vue-plugin' + +window.hl = hljs + +async function run() { + const app = createApp(App) + app.use(pinia) + app.use(lang) + app.use(roter) + app.use(ElementPlus) + app.use(hljsVuePlugin) + useElementIcon(app) + app.mount('#app') +} + +run() diff --git a/admin/src/router/index.ts b/admin/src/router/index.ts new file mode 100644 index 0000000..97c2ec1 --- /dev/null +++ b/admin/src/router/index.ts @@ -0,0 +1,160 @@ +import { createRouter, createWebHistory, RouteLocationRaw, RouteLocationNormalizedLoaded } from 'vue-router' +import NProgress from 'nprogress' +import 'nprogress/nprogress.css' +import { STATIC_ROUTES, NO_LOGIN_ROUTES, ROOT_ROUTER, ADMIN_ROUTE, HOME_ROUTE, SITE_ROUTE, findFirstValidRoute } from './routers' +import { language } from '@/lang' +import useSystemStore from '@/stores/modules/system' +import useUserStore from '@/stores/modules/user' +import { setWindowTitle, getAppType, urlToRouteRaw } from '@/utils/common' +import storage from '@/utils/storage' + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: [ADMIN_ROUTE, HOME_ROUTE, SITE_ROUTE, ...STATIC_ROUTES] +}) + +/** + * 重写push方法 + */ +const originPush = router.push +router.push = (to: RouteLocationRaw) => { + const route = typeof to == 'string' ? urlToRouteRaw(to) : to + if (route.path) { + const paths = route.path.split('/').filter((item: string) => { return item }) + route.path = ['admin', 'site', 'decorate', 'home'].indexOf(paths[0]) == -1 ? `/${getAppType()}${route.path}` : route.path + } + return originPush(route) +} + +/** + * 重写resolve方法 + */ +const originResolve = router.resolve +router.resolve = (to: RouteLocationRaw, currentLocation?: RouteLocationNormalizedLoaded) => { + const route = typeof to == 'string' ? urlToRouteRaw(to) : to + if (route.path) { + const paths = route.path.split('/').filter((item: string) => { return item }) + route.path = ['admin', 'site', 'decorate', 'home'].indexOf(paths[0]) == -1 ? `/${getAppType()}${route.path}` : route.path + } + return originResolve(route, currentLocation) +} + +// 全局前置守卫 +router.beforeEach(async (to, from, next) => { + NProgress.configure({ showSpinner: false }) + NProgress.start() + + to.redirectedFrom && (to.query = to.redirectedFrom.query) + + const userStore = useUserStore() + const siteInfo = userStore.siteInfo + const appType = getAppType() + + let title: string = to.meta.title ?? '' + + if (!siteInfo && appType != 'home') { + await userStore.getSiteInfo() + } + + if (siteInfo) { + title += '-' + siteInfo.site_name + } + + // 设置网站标题 + setWindowTitle(title) + + // 加载语言包 + await language.loadLocaleMessages(to.meta.addon || '', (to.meta.view || to.path), useSystemStore().lang); + + let matched: any = to.matched; + + if (matched && matched.length && matched[0].path != '/:pathMatch(.*)*') { + matched = matched[0].path; + } else { + matched = appType + } + + const loginPath = to.path == '/' ? '/admin/login' : `${matched}/login` + + // 判断是否需登录 + if (NO_LOGIN_ROUTES.includes(to.path)) { + next() + } else if (userStore.token) { + // 如果已加载路由 + if (userStore.routers.length) { + if (to.path === loginPath) { + next(`/${getAppType()}`) + } else { + next() + } + } else { + try { + if (!userStore.siteInfo || userStore.siteInfo.site_id == undefined) { + if (to.path === '/home/index') { + next() + } else { + next({ path: '/home/index', replace: true }) + } + } else { + await userStore.getAuthMenus() + + // 设置首页路由 + let firstRoute: symbol | string | undefined = findFirstValidRoute(userStore.routers) + if (getAppType() != 'admin' && userStore.siteInfo?.apps.length > 1) { + firstRoute = userStore.addonIndexRoute[ userStore.siteInfo?.apps[0].key ] + } + ROOT_ROUTER.redirect = { name: firstRoute } + router.addRoute(ROOT_ROUTER) + + // 设置应用首页路由 + if (getAppType() == 'admin') { + ADMIN_ROUTE.children[0].redirect = { name: firstRoute } + router.addRoute(ADMIN_ROUTE) + } else { + SITE_ROUTE.children[0].redirect = { name: firstRoute } + router.addRoute(SITE_ROUTE) + } + + // 添加动态路由 + userStore.routers.forEach(route => { + if (!route.children) { + if (route.meta.app == 'admin') { + router.addRoute(ADMIN_ROUTE.children[0].name, route) + } else { + router.addRoute(SITE_ROUTE.children[0].name, route) + } + return + } + + // 动态添加可访问路由表 + if (route.meta.app == 'admin') { + router.addRoute(ADMIN_ROUTE.name, route) + } else { + router.addRoute(SITE_ROUTE.name, route) + } + }) + + next({ path: to.path, query: to.query, replace: true }) + } + + } catch (err) { + console.log(err) + // userStore.logout() + next({ path: loginPath, query: { redirect: to.fullPath } }) + } + } + } else { + if (to.path === loginPath) { + next() + } else { + next({ path: loginPath, query: { redirect: to.fullPath } }) + } + } +}) + +// 全局后置钩子 +router.afterEach(() => { + NProgress.done() +}) + +export default router diff --git a/admin/src/router/routers.ts b/admin/src/router/routers.ts new file mode 100644 index 0000000..6e696be --- /dev/null +++ b/admin/src/router/routers.ts @@ -0,0 +1,227 @@ +import { toRaw } from 'vue' +import { RouteRecordRaw, RouterView } from 'vue-router' +import Default from '@/layout/index.vue' +import Decorate from '@/layout/decorate/index.vue' + +// 静态路由 +export const STATIC_ROUTES: Array = [ + { + path: '/:pathMatch(.*)*', + component: () => import('@/app/views/error/404.vue') + } +] + +// 免登录路由 +export const NO_LOGIN_ROUTES: string[] = [ + '/404' +] + +// 根路由 +export const ROOT_ROUTER: RouteRecordRaw = { + path: '/', + component: Default, + name: Symbol() +} + +// 平台端根路由 +export const ADMIN_ROUTE: RouteRecordRaw = { + path: '/admin', + name: Symbol('admin'), + children: [ + { + path: '', + name: Symbol('adminRoot'), + component: Default + }, + { + path: 'login', + component: () => import('@/app/views/login/index.vue') + }, + { + path: 'user', + component: Default, + children: [ + { + path: 'center', + meta: { + type: 1, + title: '个人中心' + }, + component: () => import('@/app/views/index/personal.vue') + } + ] + }, + { + path: 'user', + component: Default, + children: [ + { + path: 'edit_center', + meta: { + type: 1, + title: '编辑个人中心' + }, + component: () => import('@/app/views/index/edit_personal.vue') + } + ] + } + ] +} + +// HOME端根路由 +export const HOME_ROUTE: RouteRecordRaw = { + path: '/home', + name: Symbol('home'), + children: [ + { + path: '', + name: Symbol('homeRoot'), + component: Default + }, + { + path: 'index', + name: Symbol('homeIndex'), + meta: { + type: 1, + title: '站点管理' + }, + component: () => import('@/app/views/home/index.vue') + } + ] +} + +// 站点端根路由 +export const SITE_ROUTE: RouteRecordRaw = { + path: '/site', + name: Symbol('site'), + children: [ + { + path: '', + name: Symbol('siteRoot'), + component: Default + }, + { + path: 'login', + component: () => import('@/app/views/login/index.vue') + }, + { + path: 'user', + component: Default, + children: [ + { + path: 'center', + meta: { + type: 1, + title: '个人中心' + }, + component: () => import('@/app/views/site/personal.vue') + } + ] + }, + { + path: 'user', + component: Default, + children: [ + { + path: 'edit_center', + meta: { + type: 1, + title: '编辑个人中心' + }, + component: () => import('@/app/views/site/edit_personal.vue') + } + ] + } + ] +} + +export const DECORATE_ROUTER: RouteRecordRaw = { + path: '/decorate', + component: Decorate, + name: Symbol('decorate'), + children: [] +} + +const modules = import.meta.glob('@/app/views/**/*.vue') +const addonModules = import.meta.glob('@/addon/**/views/**/*.vue') + +interface Route { + menu_name: string, + menu_short_name: string, + router_path: string, + view_path: string + menu_type: number, + menu_key: string, + icon?: { + name: string, + type: string + }, + children?: [], + is_show: boolean, + app_type: string, + addon: string +} + +/** + * 创建路由 + * @param data + * @returns + */ +const createRoute = function (route: Route, parentRoute: RouteRecordRaw | null = null): RouteRecordRaw { + const record: RouteRecordRaw = { + path: parentRoute ? route.router_path : route.router_path != 'decorate' ? `/${route.app_type}/${route.router_path}` : `/${route.router_path}`, + name: route.menu_key, + meta: { + title: route.menu_name, + short_title: route.menu_short_name, + icon: route.icon, + type: route.menu_type, + show: route.is_show, + app: route.app_type, + view: route.view_path, + addon: route.addon, + parent_route: parentRoute ? parentRoute.meta : parentRoute + } + } + if (route.menu_type == 0) { + record.component = parentRoute ? RouterView : () => Promise.resolve(Default) + if (!route.children) record.component = RouterView + } else { + record.component = route.addon ? addonModules[`/src/addon/${route.addon}/views/${route.view_path}.vue`] : modules[`/src/app/views/${route.view_path}.vue`] + } + return record +} + +/** + * 格式化路由 + * @param routes + * @returns + */ +export function formatRouters(routes: Route[], parentRoute: RouteRecordRaw | null = null) { + return routes.map((route) => { + const routeRecord = createRoute(route, parentRoute) + if (route.children != null && route.children && route.children.length) { + routeRecord.children = formatRouters(route.children, routeRecord) + } + return routeRecord + }) +} + +/** + * 获取首条有效路由 + * @param routes + * @returns + */ +export function findFirstValidRoute(routes: RouteRecordRaw[]): string | undefined { + for (const route of routes) { + if (route.meta?.type == 1) { + return route.name as string + } + if (route.children) { + const name = findFirstValidRoute(route.children) + if (name) { + return name + } + } + } +} diff --git a/admin/src/stores/index.ts b/admin/src/stores/index.ts new file mode 100644 index 0000000..f55eb90 --- /dev/null +++ b/admin/src/stores/index.ts @@ -0,0 +1,5 @@ +import { createPinia } from 'pinia' + +const store = createPinia() + +export default store \ No newline at end of file diff --git a/admin/src/stores/modules/app.ts b/admin/src/stores/modules/app.ts new file mode 100644 index 0000000..d9d5b1c --- /dev/null +++ b/admin/src/stores/modules/app.ts @@ -0,0 +1,33 @@ +import { defineStore } from 'pinia' +import { nextTick } from 'vue' +import NProgress from 'nprogress' +import { RouteRecordRaw } from 'vue-router' + +interface App { + route: RouteRecordRaw | object, + routeRefreshTag: boolean, + pageReturn: boolean +} + +const useAppStore = defineStore('app', { + state: (): App => { + return { + route: {}, + routeRefreshTag: true, + pageReturn: false + } + }, + actions: { + refreshRouterView() { + this.routeRefreshTag = false + NProgress.start() + + nextTick(() => { + this.routeRefreshTag = true + NProgress.done() + }) + } + } +}) + +export default useAppStore diff --git a/admin/src/stores/modules/diy.ts b/admin/src/stores/modules/diy.ts new file mode 100644 index 0000000..c1b2101 --- /dev/null +++ b/admin/src/stores/modules/diy.ts @@ -0,0 +1,391 @@ +import {defineStore} from 'pinia' +import {t} from '@/lang' +import {toRaw} from 'vue' +import {ElMessage, ElMessageBox} from 'element-plus' +import {cloneDeep} from 'lodash-es' + +const useDiyStore = defineStore('diy', { + state: () => { + return { + id: 0, + load: false, // 加载状态 + currentIndex: -99, // 当前正在编辑的组件下标 + currentComponent: 'edit-page', // 当前正在编辑的组件名称 + pageMode: 'diy', + editTab: 'content',// 编辑页面 + name: '', // 页面标识 + type: '', // 页面模板 + typeName: '', // 页面模板名称 + templateName: '', // 页面模板标识 + isDefault: 0, // 是否默认页面 + predefineColors: [ + '#F4391c', + '#ff4500', + '#ff8c00', + '#FFD009', + '#ffd700', + '#19C650', + '#90ee90', + '#00ced1', + '#1e90ff', + '#c71585', + '#FF407E', + '#CFAF70', + '#A253FF', + 'rgba(255, 69, 0, 0.68)', + 'rgb(255, 120, 0)', + 'hsl(181, 100%, 37%)', + 'hsla(209, 100%, 56%, 0.73)', + '#c7158577' + ], + components: [], // 组件集合 + global: { + title: "页面", // 页面标题 + + pageBgColor: "", // 页面背景颜色 + bgUrl: '', // 页面背景图片 + imgWidth: '', // 页面背景图片宽度 + imgHeight: '', // 页面背景图片高度 + + // 顶部状态栏 + topStatusBar: { + bgColor: "#ffffff", // 背景颜色 + isTransparent: false, // 是否透明 + isShow: true, // 是否显示 + style: 'style-1', // 风格样式 + textColor: "#333333", // 文字颜色 + textAlign: 'center', // 文字对齐方式 + }, + + bottomTabBarSwitch: true, // 底部导航开关 + + // 弹框 count:不弹出 -1,首次弹出 1,每次弹出 0 + popWindow: { + imgUrl: "", + imgWidth: '', + imgHeight: '', + count: -1, + show: 0, + link: { + name: "" + }, + }, + + // 公共模板属性,所有组件都继承,无需重复定义,组件内部根据业务自行调用 + template: { + textColor: "#303133", // 文字颜色 + pageBgColor: '', // 底部背景颜色 + + componentBgColor: '', // 组件背景颜色 + topRounded: 0, // 组件上圆角 + bottomRounded: 0, // 组件下圆角 + + elementBgColor: '', // 元素背景颜色 + topElementRounded: 0, // 元素上圆角 + bottomElementRounded: 0, // 元素下圆角 + + margin: { + top: 0, // 上边距 + bottom: 0, // 下边距 + both: 0, // 左右边距 + } + } + + }, + // 组件集合 + value: [] + } + }, + getters: { + editComponent: (state) => { + if (state.currentIndex == -99) { + return state.global; + } else { + return state.value[state.currentIndex]; + } + }, + }, + actions: { + // 初始化数据 + init() { + this.global = { + title: "页面", // 页面标题 + + pageBgColor: "", // 页面背景颜色 + bgUrl: '', // 页面背景图片 + imgWidth: '', // 页面背景图片宽度 + imgHeight: '', // 页面背景图片高度 + + // 顶部状态栏 + topStatusBar: { + bgColor: "#ffffff", // 背景颜色 + isTransparent: false, // 是否透明 + isShow: true, // 是否显示 + style: 'style-1', // 风格样式 + textColor: "#333333", // 文字颜色 + textAlign: 'center', // 文字对齐方式 + }, + + bottomTabBarSwitch: true, // 底部导航开关 + + // 弹框 count:不弹出 -1,首次弹出 1,每次弹出 0 + popWindow: { + imgUrl: "", + imgWidth: '', + imgHeight: '', + count: -1, + show: 0, + link: { + name: "" + }, + }, + + // 公共模板属性,所有组件都继承,无需重复定义,组件内部根据业务自行调用 + template: { + textColor: "#303133", // 文字颜色 + pageBgColor: '', // 底部背景颜色 + + componentBgColor: '', // 组件背景颜色 + topRounded: 0, // 组件上圆角 + bottomRounded: 0, // 组件下圆角 + + elementBgColor: '', // 元素背景颜色 + topElementRounded: 0, // 元素上圆角 + bottomElementRounded: 0, // 元素下圆角 + + margin: { + top: 0, // 上边距 + bottom: 0, // 下边距 + both: 0, // 左右边距 + } + } + + }; + this.value = []; + }, + // 添加组件 + addComponent(key: string, data: any) { + // 加载完才能添加组件 + if (!this.load) return; + + // 删除不用的字段 + let component = cloneDeep(data); + + component.id = this.generateRandom(); + component.componentName = key; + component.componentTitle = component.title; + component.ignore = []; // 忽略公共属性 + + Object.assign(component, component.value); + delete component.title; + delete component.value; + delete component.type; + delete component.icon; + + if(component.template){ + // 按照组件初始的属性加载 + Object.assign(component, component.template); + delete component.template; + }else{ + // 默认继承全局属性 + let template = cloneDeep(this.global.template); + Object.assign(component, template); + } + + if (!this.checkComponentIsAdd(component)) return; + + if (this.currentIndex === -99) { + this.value.push(component); + // 添加组件后(不是编辑调用的),选择最后一个 + this.currentIndex = this.value.length - 1; + } else { + // 指定位置添加组件 + this.value.splice(++this.currentIndex, 0, component); + } + + this.currentComponent = component.path; + }, + generateRandom(len: number = 5) { + return Number(Math.random().toString().substr(3, len) + Date.now()).toString(36); + }, + // 将数据发送到uniapp + postMessage() { + var diyData = JSON.stringify({ + pageMode: this.pageMode, + currentIndex: this.currentIndex, + global: toRaw(this.global), + value: toRaw(this.value) + }); + window.previewIframe.contentWindow.postMessage(diyData, '*'); + }, + // 选中正在编辑的组件 + changeCurrentIndex(index: number, component: any = null) { + this.currentIndex = index; + if (this.currentIndex == -99) { + this.currentComponent = 'edit-page'; + } else if (component) { + this.currentComponent = component.path; + } + }, + // 删除组件 + delComponent() { + if (this.currentIndex == -99) return; + + ElMessageBox.confirm( + t('delComponentTips'), + t('warning'), + { + confirmButtonText: t('confirm'), + cancelButtonText: t('cancel'), + type: 'warning', + autofocus: false + } + ).then(() => { + this.value.splice(this.currentIndex, 1); + + // 如果组件全部删除,则选中页面设置 + if (this.value.length === 0) { + this.currentIndex = -99; + } + + // 如果当前选中的组件不存在,则选择上一个 + if (this.currentIndex === this.value.length) { + this.currentIndex--; + } + let component = cloneDeep(this.value[this.currentIndex]); + + this.changeCurrentIndex(this.currentIndex, component) + + }).catch(() => { + }) + + }, + // 上移组件 + moveUpComponent() { + if ((this.currentIndex - 1) < 0) return; // 从0开始 + + var temp = cloneDeep(this.value[this.currentIndex]); // 当前选中组件 + temp.id = this.generateRandom(); // 更新id,刷新组件数据 + + let prevIndex = this.currentIndex - 1; + var temp2 = cloneDeep(this.value[prevIndex]); // 上个组件 + temp2.id = this.generateRandom(); // 更新id,刷新组件数据 + + this.value[this.currentIndex] = temp2; + this.value[prevIndex] = temp; + + this.changeCurrentIndex(prevIndex, temp); + }, + // 下移组件 + moveDownComponent() { + if ((this.currentIndex + 1) >= this.value.length) return; // 最后一个不能下移 + + var nextIndex = this.currentIndex + 1; + + var temp = cloneDeep(this.value[this.currentIndex]); // 当前选中组件 + temp.id = this.generateRandom(); // 更新id,刷新组件数据 + + var temp2 = cloneDeep(this.value[nextIndex]); // 下个组件 + temp2.id = this.generateRandom(); // 更新id,刷新组件数据 + + this.value[this.currentIndex] = temp2; + this.value[nextIndex] = temp; + + this.changeCurrentIndex(nextIndex, temp); + + }, + // 复制组件 + copyComponent() { + if (this.currentIndex < 0) return; // 从0开始 + + let component = cloneDeep(this.value[this.currentIndex]); // 当前选中组件 + component.id = this.generateRandom(); // 更新id,刷新组件数据 + + if (!this.checkComponentIsAdd(component)) { + ElMessage({ + type: 'warning', + message: `${t('notCopy')},${component.componentTitle}${t('componentCanOnlyAdd')}${component.uses}${t('piece')}`, + }); + return; + } + + var index = this.currentIndex + 1; + this.value.splice(index, 0, component); + + this.changeCurrentIndex(index, component); + + }, + // 检测组件是否允许添加,true:允许 false:不允许 + checkComponentIsAdd(component: any) { + + //为0时不处理 + if (component.uses === 0) return true; + + var count = 0; + + //遍历已添加的自定义组件,检测是否超出数量 + for (var i in this.value) if (this.value[i].componentName === component.componentName) count++; + + if (count >= component.uses) return false; + else return true; + }, + // 重置当前组件数据 + resetComponent() { + if (this.currentIndex < 0) return; // 从0开始 + + ElMessageBox.confirm( + t('resetComponentTips'), + t('warning'), + { + confirmButtonText: t('confirm'), + cancelButtonText: t('cancel'), + type: 'warning', + autofocus: false + } + ).then(() => { + // 重置当前选中的组件数据 + for (let i = 0; i < this.components.length; i++) { + if (this.components[i].componentName == this.editComponent.componentName) { + Object.assign(this.editComponent, this.components[i]); + break; + } + } + + }).catch(() => { + }) + + }, + // 组件验证 + verify() { + if (this.global.title === "") { + ElMessage({ + message: t('pageNamePlaceholder'), + type: 'warning' + }) + this.changeCurrentIndex(-99); + return false; + } + + for (var i = 0; i < this.value.length; i++) { + try { + if (this.value[i].verify) { + var res = this.value[i].verify(i); + if (!res.code) { + this.changeCurrentIndex(i, this.value[i]) + ElMessage({ + message: res.message, + type: 'warning' + }) + return false; + } + } + } catch (e) { + console.log("verify Error:", e, i, this.value[i]); + } + } + return true; + } + } +}) + +export default useDiyStore \ No newline at end of file diff --git a/admin/src/stores/modules/style.ts b/admin/src/stores/modules/style.ts new file mode 100644 index 0000000..f684f47 --- /dev/null +++ b/admin/src/stores/modules/style.ts @@ -0,0 +1,18 @@ +import { defineStore } from 'pinia' +const useStyleStore = defineStore('style', { + state: () => { + return { + flag : true + } + }, + actions: { + changeStyle() { + this. flag = false + }, + changeBlack() { + this. flag = true + } + } +}) + +export default useStyleStore \ No newline at end of file diff --git a/admin/src/stores/modules/system.ts b/admin/src/stores/modules/system.ts new file mode 100644 index 0000000..e311cfc --- /dev/null +++ b/admin/src/stores/modules/system.ts @@ -0,0 +1,48 @@ +import { defineStore } from 'pinia' +import storage from '@/utils/storage' +import { useCssVar } from '@vueuse/core' + +interface System { + menuIsCollapse: boolean, + menuDrawer: boolean, + dark: boolean, + theme: string, + lang: string, + sidebar: string, + sidebarStyle: string +} + +const theme = storage.get('theme') ?? {} + +const useSystemStore = defineStore('system', { + state: (): System => { + return { + // menuIsCollapse: storage.get('menuiscollapse') ?? false, + menuIsCollapse: false, + menuDrawer: false, + dark: theme.dark ?? false, + theme: theme.theme ?? '#273de3', + sidebar: theme.sidebar ?? 'oneType', + lang: storage.get('lang') ?? 'zh-cn', + sidebarStyle: theme.sidebarStyle ?? 'threeType', + currHeadMenuName: '' + } + }, + actions: { + setHeadMenu(value: any) { + this.currHeadMenuName = value + }, + setTheme(state: string, value: any) { + this[state] = value + theme[state] = value + storage.set({ key: 'theme', data: theme }) + }, + toggleMenuCollapse(value: boolean) { + this.menuIsCollapse = value + storage.set({ key: 'menuiscollapse', data: value }) + useCssVar('--aside-width').value = value ? 'calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding) * 2)' : '210px' + } + } +}) + +export default useSystemStore \ No newline at end of file diff --git a/admin/src/stores/modules/tabbar.ts b/admin/src/stores/modules/tabbar.ts new file mode 100644 index 0000000..3397b7d --- /dev/null +++ b/admin/src/stores/modules/tabbar.ts @@ -0,0 +1,51 @@ +import { defineStore } from 'pinia' +import type { RouteLocationNormalizedLoaded } from 'vue-router' + +interface Tabbar { + curr: string, + tabs: { + [key: string]: any + } +} + +const useTabbarStore = defineStore('tabbar', { + state: (): Tabbar => { + return { + curr: '', + tabs: {} + } + }, + actions: { + addTab(roter: RouteLocationNormalizedLoaded) { + if (roter.meta && roter.meta.type != 1) return + if (this.tabs[roter.path]) { + this.tabs[roter.path].query = roter.query || {} + return + } + this.tabs[roter.path] = { + path: roter.path, + title: roter.meta ? roter.meta.title : '', + name: roter.name, + query: roter.query || {} + } + }, + removeTab(path: string) { + delete this.tabs[path] + }, + clearTab() { + this.tabs = {} + } + }, + getters: { + tabLength: (state) => Object.keys(state.tabs).length, + tabNames: (state) => { + const name: any[] = [] + Object.keys(state.tabs).forEach(key => { + name.push(state.tabs[key].name) + }) + return name + } + } +}) + +export default useTabbarStore \ No newline at end of file diff --git a/admin/src/stores/modules/user.ts b/admin/src/stores/modules/user.ts new file mode 100644 index 0000000..bb1d1b7 --- /dev/null +++ b/admin/src/stores/modules/user.ts @@ -0,0 +1,99 @@ +import { defineStore } from 'pinia' +import { getToken, setToken, removeToken, getAppType } from '@/utils/common' +import { login, logout, getAuthMenus, getSiteInfo } from '@/app/api/auth' +import storage from '@/utils/storage' +import router from '@/router' +import { formatRouters, findFirstValidRoute } from '@/router/routers' +import useTabbarStore from './tabbar' + +interface User { + token: string, + userInfo: object, + siteInfo: null | Record, + routers: any[], + rules: any[], + addonIndexRoute: Record +} + +const userStore = defineStore('user', { + state: (): User => { + return { + token: getToken() || '', + userInfo: storage.get('userinfo') || {}, + siteInfo: null, + routers: [], + rules: [], + addonIndexRoute: {} + } + }, + actions: { + async getSiteInfo() { + await getSiteInfo().then(({ data }) => { + this.siteInfo = data + storage.set({ key: 'siteId', data: data.site_id || 0 }) + storage.set({ key: 'siteInfo', data: data }) + storage.set({ key: 'comparisonSiteIdStorage', data: data.site_id || 0 }) + }).catch(() => { + + }) + }, + login(form: object, app_type: any) { + return new Promise((resolve, reject) => { + login(form, app_type) + .then((res) => { + this.token = res.data.token + this.userInfo = res.data.userinfo + this.siteInfo = res.data.site_info || {} + setToken(res.data.token) + storage.set({ key: 'userinfo', data: res.data.userinfo }) + storage.set({ key: 'siteId', data: res.data.site_id || 0 }) + storage.set({ key: 'siteInfo', data: res.data.site_info || {} }) + storage.set({ key: 'comparisonSiteIdStorage', data: res.data.site_id || 0 }) + storage.set({ key: 'comparisonTokenStorage', data: res.data.token }) + resolve(res) + }) + .catch((error) => { + reject(error) + }) + }) + }, + logout() { + if (!this.token) return + this.token = '' + this.userInfo = {} + this.siteInfo = {} + removeToken() + storage.remove(['userinfo', 'siteId', 'siteInfo']) + this.routers = [] + logout() + // 清除tabbar + useTabbarStore().clearTab() + const login = getAppType() == 'admin' ? '/admin/login' : '/site/login' + router.push(login) + }, + getAuthMenus() { + return new Promise((resolve, reject) => { + getAuthMenus({}) + .then((res) => { + this.routers = formatRouters(res.data) + // 获取插件的首个菜单 + this.routers.forEach((item, index) => { + if (item.meta.addon !== '') { + if (item.children && item.children.length) { + this.addonIndexRoute[item.meta.addon] = findFirstValidRoute(item.children) + } else { + this.addonIndexRoute[item.meta.addon] = item.name + } + } + }) + resolve(res) + }) + .catch((error) => { + reject(error) + }) + }) + } + } +}) + +export default userStore diff --git a/admin/src/styles/common.scss b/admin/src/styles/common.scss new file mode 100644 index 0000000..ec145be --- /dev/null +++ b/admin/src/styles/common.scss @@ -0,0 +1,259 @@ +:root { + --aside-width: 210px; + --el-mask-color: rgba(255,255,255,1); +} +body, +html { + font-family: Helvetica Neue, Helvetica, Arial; +} + +.border-color { + border-color: var(--el-border-color-lighter); +} + +.el-form { + .form-tip { + width: 100%; + font-size: var(--el-font-size-small); + color: var(--el-color-info-light-3); + line-height: 1; + margin-top: 10px; + } +} + +.page-form { + .input-width { + width: 300px; + } +} + +.w-e-full-screen-container { + z-index: 10; +} + +.w-e-toolbar { + .w-e-bar-divider { + display: none; + } +} + +.main-container{ + .full-container { + height: calc(100vh - 122px); + } +} + +.panel-title { + margin: 0 0 16px 0; + font-size: 16px; + font-weight: 400; + line-height: 1; +} + +.fixed-footer-wrap { + height: 48px; + + .fixed-footer { + position: fixed; + height: inherit; + background:var(--el-bg-color-overlay); + width: 100%; + left: 0; + bottom: 0; + z-index: 4; + display: flex; + align-items: center; + justify-content: center; + --tw-shadow: var(--el-box-shadow); + --tw-shadow-colored: var(--el-box-shadow); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow); + transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out + } +} + +html.dark { + .el-table { + --el-table-header-bg-color: var(--el-bg-color)!important + } + .table-search-wrap { + background-color: var(--el-bg-color)!important; + } + --w-e-toolbar-bg-color: var(--el-bg-color-overlay); + --w-e-textarea-bg-color: var(--el-bg-color-overlay); + --w-e-textarea-color: var(--el-input-text-color); + --w-e-toolbar-border-color: var(--el-border-color); + --w-e-toolbar-active-bg-color:var(--el-bg-color); + --w-e-toolbar-active-color:var(--el-text-color-primary); +} + +:root input:-webkit-autofill, +textarea:-webkit-autofill, +select:-webkit-autofill { + box-shadow: 0 0 50px 50px white inset; +} + +// 表格 +.el-pager li.is-active{ + font-weight: normal !important; +} + +// 筛选框 +.table-search-wrap { + .el-card__body{ + padding: 10px 0; + } + .el-form { + margin-bottom: -18px; + } +} + +// 背景颜色 +.base-bg{ + background-color: transparent !important; + // background-color: #F5F7F9 !important; 原来的颜色 +} + +// 数据展示面板 +.el-statistic { + --el-statistic-content-font-size: 28px !important; +} + +.region-input { + --region-input-border-color: var(--el-border-color); + display: flex; + box-shadow: 0 0 0 1px var(--region-input-border-color) inset; + border-radius: var(--el-input-border-radius,var(--el-border-radius-base)); + height: calc(var(--el-input-inner-height) - 2px); + line-height: calc(var(--el-input-inner-height) - 2px); + transition: var(--el-transition-box-shadow); + + &:hover { + --region-input-border-color: var(--el-color-primary); + } + + .separator { + flex: 1; + display: inline-flex; + justify-content: center; + align-items: center; + height: 100%; + padding: 0 5px; + margin: 0; + font-size: 14px; + word-break: keep-all; + color: var(--el-text-color-primary); + } + + .el-form-item { + flex: 1; + } + + input { + padding: 0 10px; + appearance: none; + border: none; + outline: 0; + display: inline-block; + height: 30px; + line-height: 30px; + margin: 0; + text-align: center; + font-size: var(--el-font-size-base); + color: var(--el-text-color-regular); + background-color: transparent; + + &::placeholder { + color: var(--el-text-color-placeholder); + } + } +} + + +// 温馨提示样式 +.warm-prompt { + background-color: var(--el-color-primary-light-9) !important; + .el-icon,p,li{ + color: var(--el-color-primary-light-3); + } + .el-alert__content{ + padding: 0; + } +} +html.dark { + .warm-prompt { + background-color: var(--el-color-primary-light-5) !important; + .el-icon, p { + color: var(--el-color-primary-dark-2); + } + } +} +.app-item { + background: #f7f7f7; +} +html.dark { + .app-item { + background: #191a23; + } +} + +// 详情的头部 +.detail-head{ + display: flex; + align-items: center; + margin-left: 30px; + margin-top: 15px; + margin-bottom: 15px; + .left{ + color: #666; + margin-top: 1px; + font-size: 14px; + line-height: 1; + cursor: pointer; + } + .adorn{ + color: #999; + margin: 0 12px; + font-size: 14px; + } + .right{ + font-size: 24px; + } +} + + +// ********************************************** 修改整体样式 ********************************************** +// 修改选择框、ipnut、时间选择、按钮,input带按钮的圆角 +.el-input__wrapper, .el-input-group__append, .el-textarea__inner{ + border-radius: 0 !important; +} +.el-button:not(.is-round){ + border-radius: 2px !important; +} +// 修改表格中上传图片样式冲突的问题 +.el-table .el-table__cell{ + position: inherit !important; +} + +// /* 多行超出隐藏 */ +.multi-hidden { + white-space: normal; + word-break: break-all; + text-overflow: ellipsis; + overflow: hidden; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} +// 滚动条 +//.el-scrollbar__bar.is-vertical{ +// width: 10px !important; +//} +//.el-scrollbar__bar.is-vertical .el-scrollbar__thumb{ +// background-color: #8b8b8b !important; +// opacity: 1 !important; +// width: 9px !important; +//} +//.el-scrollbar__bar.is-vertical .el-scrollbar__thumb:hover{ +// background-color: #636363 !important; +// opacity: 1 !important; +//} diff --git a/admin/src/styles/element-plus.scss b/admin/src/styles/element-plus.scss new file mode 100644 index 0000000..2bc94ec --- /dev/null +++ b/admin/src/styles/element-plus.scss @@ -0,0 +1,52 @@ +:root {} + +.el-header { + --el-header-padding: 0 !important; + --el-header-height: 64px !important; +} + +.el-table { + --el-table-header-bg-color: #F5F7F9!important; + --el-table-header-text-color:#333!important; +} + +.dark { + .el-table { + --el-table-header-text-color: var(--el-text-color-secondary)!important; + } +} + +.el-table thead, .el-table thead th { + font-weight: normal !important; +} + +.el-button { + background-color: var(--el-button-bg-color, var(--el-color-white)); +} + +.el-dialog { + max-width: calc(100vw - 50px); +} + +.el-date-editor--daterange, .el-date-editor--timerange, .el-date-editor.el-input, .el-date-editor .el-input__wrapper { + --el-date-editor-width: 100%!important; + width: 100%; +} + + +.el-textarea__inner::-webkit-scrollbar { + width: 6px ; + height: 6px ; +} + +.el-textarea__inner::-webkit-scrollbar-thumb { + border-radius: 3px ; + -moz-border-radius: 3px ; + -webkit-border-radius: 3px ; + background-color: #909399; + opacity: .3; +} + +.el-textarea__inner::-webkit-scrollbar-track { + background-color: transparent ; +} \ No newline at end of file diff --git a/admin/src/styles/icon/addon-iconfont.css b/admin/src/styles/icon/addon-iconfont.css new file mode 100644 index 0000000..2dc8782 --- /dev/null +++ b/admin/src/styles/icon/addon-iconfont.css @@ -0,0 +1 @@ +@import "addon/tourism/iconfont.css"; diff --git a/admin/src/styles/icon/addon/tourism/iconfont.css b/admin/src/styles/icon/addon/tourism/iconfont.css new file mode 100644 index 0000000..4e28126 --- /dev/null +++ b/admin/src/styles/icon/addon/tourism/iconfont.css @@ -0,0 +1,58 @@ +@font-face { + font-family: "tourism"; /* Project id 4137250 */ + src: url('//at.alicdn.com/t/c/font_4137250_st1ha9l0k1e.woff2?t=1687685028672') format('woff2'), + url('//at.alicdn.com/t/c/font_4137250_st1ha9l0k1e.woff?t=1687685028672') format('woff'), + url('//at.alicdn.com/t/c/font_4137250_st1ha9l0k1e.ttf?t=1687685028672') format('truetype'); +} + +.tourism { + font-family: "tourism" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.tourism-icon-feiji:before { + content: "\e600"; +} + +.tourism-icon-lvyou:before { + content: "\e6a9"; +} + +.tourism-icon-lvyouchanpin:before { + content: "\e63b"; +} + +.tourism-icon-lvyou1:before { + content: "\e623"; +} + +.tourism-icon-lvyou2:before { + content: "\e601"; +} + +.tourism-icon-lvyou3:before { + content: "\e60c"; +} + +.tourism-icon-lvyoubaochedingdan:before { + content: "\e612"; +} + +.tourism-icon-lvyou4:before { + content: "\e653"; +} + +.tourism-icon-lvyou5:before { + content: "\e610"; +} + +.tourism-icon-lvyouguanguang:before { + content: "\e87e"; +} + +.tourism-icon-lvyou6:before { + content: "\e642"; +} diff --git a/admin/src/styles/icon/addon/tourism/iconfont.json b/admin/src/styles/icon/addon/tourism/iconfont.json new file mode 100644 index 0000000..f9bc2b7 --- /dev/null +++ b/admin/src/styles/icon/addon/tourism/iconfont.json @@ -0,0 +1,86 @@ +{ + "id": "4137250", + "name": "旅游业", + "font_family": "tourism", + "css_prefix_text": "tourism-icon-", + "description": "", + "glyphs": [ + { + "icon_id": "1443", + "name": "飞机", + "font_class": "feiji", + "unicode": "e600", + "unicode_decimal": 58880 + }, + { + "icon_id": "446824", + "name": "旅游", + "font_class": "lvyou", + "unicode": "e6a9", + "unicode_decimal": 59049 + }, + { + "icon_id": "1167173", + "name": "旅游产品", + "font_class": "lvyouchanpin", + "unicode": "e63b", + "unicode_decimal": 58939 + }, + { + "icon_id": "1354920", + "name": "旅游", + "font_class": "lvyou1", + "unicode": "e623", + "unicode_decimal": 58915 + }, + { + "icon_id": "1505555", + "name": "旅游", + "font_class": "lvyou2", + "unicode": "e601", + "unicode_decimal": 58881 + }, + { + "icon_id": "2121726", + "name": "旅游", + "font_class": "lvyou3", + "unicode": "e60c", + "unicode_decimal": 58892 + }, + { + "icon_id": "2357494", + "name": "旅游包车订单", + "font_class": "lvyoubaochedingdan", + "unicode": "e612", + "unicode_decimal": 58898 + }, + { + "icon_id": "3944019", + "name": "旅游", + "font_class": "lvyou4", + "unicode": "e653", + "unicode_decimal": 58963 + }, + { + "icon_id": "4838220", + "name": "旅游", + "font_class": "lvyou5", + "unicode": "e610", + "unicode_decimal": 58896 + }, + { + "icon_id": "7444178", + "name": "旅游观光", + "font_class": "lvyouguanguang", + "unicode": "e87e", + "unicode_decimal": 59518 + }, + { + "icon_id": "9748082", + "name": "旅游", + "font_class": "lvyou6", + "unicode": "e642", + "unicode_decimal": 58946 + } + ] +} diff --git a/admin/src/styles/icon/iconfont.css b/admin/src/styles/icon/iconfont.css new file mode 100644 index 0000000..e814809 --- /dev/null +++ b/admin/src/styles/icon/iconfont.css @@ -0,0 +1,1018 @@ +@font-face { + font-family: "iconfont"; /* Project id 3883393 */ + src: url('//at.alicdn.com/t/c/font_3883393_46xoryy5l7v.woff2?t=1701067532618') format('woff2'), + url('//at.alicdn.com/t/c/font_3883393_46xoryy5l7v.woff?t=1701067532618') format('woff'), + url('//at.alicdn.com/t/c/font_3883393_46xoryy5l7v.ttf?t=1701067532618') format('truetype'); +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icontuichudenglu:before { + content: "\e64a"; +} + +.iconhuojian:before { + content: "\e6ff"; +} + +.iconicon_huojian1:before { + content: "\e6fe"; +} + +.iconrili1:before { + content: "\e62e"; +} + +.iconrili:before { + content: "\e664"; +} + +.iconshouquanliebiao:before { + content: "\e6fd"; +} + +.icontishi:before { + content: "\e6fc"; +} + +.iconwodedingdan:before { + content: "\e6f2"; +} + +.icongerenxinxi:before { + content: "\e6f4"; +} + +.iconwodezhandian:before { + content: "\e6f5"; +} + +.iconwodeshouquan:before { + content: "\e6f6"; +} + +.iconwodezhanghu:before { + content: "\e6f8"; +} + +.iconshimingrenzheng:before { + content: "\e6f9"; +} + +.iconkaifashangzhongxin:before { + content: "\e6fa"; +} + +.iconts-tubiao_CertificateServer:before { + content: "\e62b"; +} + +.icona-shangbiao2:before { + content: "\e64f"; +} + +.iconjiagebanben:before { + content: "\e6f0"; +} + +.iconjishuzhichi:before { + content: "\e6f1"; +} + +.iconjichushezhi:before { + content: "\e6ed"; +} + +.iconshangchengshezhi:before { + content: "\e6ee"; +} + +.iconkaifashezhi:before { + content: "\e6ef"; +} + +.iconqiehuan3:before { + content: "\e6ec"; +} + +.iconxiugai:before { + content: "\e62a"; +} + +.iconxiazai01:before { + content: "\ea38"; +} + +.iconjingdiandingdan:before { + content: "\e6ea"; +} + +.iconluxiandingdan:before { + content: "\e6eb"; +} + +.iconfapiaoguanli:before { + content: "\e683"; +} + +.iconhuishouzhan:before { + content: "\e6d7"; +} + +.iconshangpinliebiao1:before { + content: "\e6d8"; +} + +.iconshangpinfenlei:before { + content: "\e6d9"; +} + +.iconfenleishezhi:before { + content: "\e6da"; +} + +.iconluxianguanli:before { + content: "\e6db"; +} + +.iconjiudianguanli:before { + content: "\e6dc"; +} + +.iconshangjiadizhiku:before { + content: "\e6dd"; +} + +.iconkaxiangguanli:before { + content: "\e6de"; +} + +.iconjiudiandingdan:before { + content: "\e6df"; +} + +.iconjingdianguanli:before { + content: "\e6e0"; +} + +.icondingdanshezhi:before { + content: "\e6e3"; +} + +.iconjiaoyishezhi:before { + content: "\e6e4"; +} + +.icondingdanhexiao:before { + content: "\e6e5"; +} + +.icondingdanweiquan:before { + content: "\e6e6"; +} + +.icona-dingdanliebiao:before { + content: "\e6e7"; +} + +.iconyuyuexiangmu:before { + content: "\e68e"; +} + +.iconshangpinpinpai:before { + content: "\e6c9"; +} + +.iconyuyueshezhi:before { + content: "\e6cb"; +} + +.iconxiangmuguanli:before { + content: "\e6cc"; +} + +.iconyouhuiquan:before { + content: "\e6cd"; +} + +.iconpaisongshezhi:before { + content: "\e685"; +} + +.icontuikuanweiquan:before { + content: "\e6ce"; +} + +.iconyingxiaozhongxin:before { + content: "\e6cf"; +} + +.iconjishiguanli:before { + content: "\e684"; +} + +.iconxiangmufenlei:before { + content: "\e6d0"; +} + +.iconwuliugenzong:before { + content: "\e6d1"; +} + +.iconshangpinbiaoqian:before { + content: "\e6d2"; +} + +.iconshangpinpinglun:before { + content: "\e6d3"; +} + +.iconshangpinfuwu:before { + content: "\e6d4"; +} + +.icongonggao:before { + content: "\e629"; +} + +.iconshangpinliebiao:before { + content: "\e628"; +} + +.icongouwuche1:before { + content: "\e680"; +} + +.icongouwuche:before { + content: "\e6c8"; +} + +.iconyun1:before { + content: "\e67e"; +} + +.iconicon-selected:before { + content: "\e626"; +} + +.iconshangpinguanli:before { + content: "\e67c"; +} + +.iconyuanquan_huaban1:before { + content: "\e66c"; +} + +.iconzhankai:before { + content: "\e67b"; +} + +.iconjiantou:before { + content: "\e67a"; +} + +.iconchajian1:before { + content: "\e679"; +} + +.iconicon_huojian:before { + content: "\e677"; +} + +.iconanzhuang:before { + content: "\e676"; +} + +.iconshouye:before { + content: "\e675"; +} + +.iconshouye-shouye:before { + content: "\e638"; +} + +.icondian:before { + content: "\ec1e"; +} + +.iconjiantou_xiangzuoliangci_o:before { + content: "\eb93"; +} + +.iconfenlei:before { + content: "\e6c3"; +} + +.iconqiehuan2:before { + content: "\e6c0"; +} + +.iconqudaoguanli2:before { + content: "\e6c1"; +} + +.iconguanfangshichang:before { + content: "\e6c2"; +} + +.iconyingyong1:before { + content: "\e6bf"; +} + +.iconzhuangxiu2:before { + content: "\e6bd"; +} + +.iconzhuangxiu21:before { + content: "\e6be"; +} + +.iconqiehuan1:before { + content: "\e625"; +} + +.icongaikuang1:before { + content: "\e6b7"; +} + +.iconkaxiangchanpin:before { + content: "\e6b6"; +} + +.iconchongzhidingdan:before { + content: "\e6b8"; +} + +.iconkaxiangdingdan:before { + content: "\e6b9"; +} + +.iconlvyouchanpin:before { + content: "\e6ba"; +} + +.iconlvyoudingdan:before { + content: "\e6bb"; +} + +.iconwenzhangguanli1:before { + content: "\e6bc"; +} + +.iconchajiankaifa:before { + content: "\e6b3"; +} + +.iconyunshichang:before { + content: "\e6b5"; +} + +.iconnav-market:before { + content: "\e60e"; +} + +.icondaimashengcheng:before { + content: "\e6ae"; +} + +.icongengxinhuancun1:before { + content: "\e6ac"; +} + +.iconhuiyuanbiaoqian:before { + content: "\e6a4"; +} + +.iconhuiyuanjifen:before { + content: "\e6ab"; +} + +.iconhuiyuanyongjin:before { + content: "\e6a9"; +} + +.iconchakanlishi:before { + content: "\e6a8"; +} + +.iconqudaoguanli1:before { + content: "\e6aa"; +} + +.iconquanxianguanli:before { + content: "\e6a6"; +} + +.iconsucaiguanli:before { + content: "\e6a7"; +} + +.icona-shouyediannao:before { + content: "\e6a5"; +} + +.iconhuanjingjiance:before { + content: "\e6a2"; +} + +.iconjihuarenwu:before { + content: "\e6a3"; +} + +.iconhuiyuanyue:before { + content: "\e69f"; +} + +.iconxiaoxiguanli:before { + content: "\e6a1"; +} + +.iconwodexingbiao:before { + content: "\e6a0"; +} + +.iconzhifuguanli:before { + content: "\e6af"; +} + +.iconwenzhangguanli:before { + content: "\e6b0"; +} + +.iconhuiyuan2:before { + content: "\e6b1"; +} + +.icongaikuang:before { + content: "\e623"; +} + +.iconyun:before { + content: "\e69e"; +} + +.icona-huaban1fuben25:before { + content: "\e608"; +} + +.iconyun-line:before { + content: "\e622"; +} + +.iconyingyongshichang-:before { + content: "\e607"; +} + +.iconguanzhu:before { + content: "\e739"; +} + +.iconlishijilu:before { + content: "\f1e2"; +} + +.iconhuiyuanliebiao1:before { + content: "\e69c"; +} + +.iconwangzhan1:before { + content: "\e69d"; +} + +.iconcode:before { + content: "\e620"; +} + +.iconcaidan:before { + content: "\e652"; +} + +.iconyingyongshichang11:before { + content: "\e697"; +} + +.iconcaiwuliushui:before { + content: "\e698"; +} + +.iconshouquanxinxi2:before { + content: "\e699"; +} + +.iconxianxiazhifu2:before { + content: "\e69a"; +} + +.iconhuiyuantixian:before { + content: "\e69b"; +} + +.iconqudaoguanli:before { + content: "\e695"; +} + +.iconshichangwuliaozhichi:before { + content: "\e694"; +} + +.iconcaiwu:before { + content: "\e693"; +} + +.iconshezhi1:before { + content: "\e696"; +} + +.iconhuiyuan11:before { + content: "\e691"; +} + +.iconwangzhan:before { + content: "\e690"; +} + +.iconyingyong:before { + content: "\e68f"; +} + +.iconshezhi:before { + content: "\e64b"; +} + +.iconshoucang:before { + content: "\e8c2"; +} + +.iconpaixu:before { + content: "\e60d"; +} + +.iconpaixu1:before { + content: "\e64e"; +} + +.iconwenhao:before { + content: "\e72d"; +} + +.iconshimingrenzheng-xian:before { + content: "\e89c"; +} + +.iconkaifazheguanli1:before { + content: "\e636"; +} + +.iconquanbudingdan:before { + content: "\e606"; +} + +.iconmofang-liangzuoliangyou:before { + content: "\e6c5"; +} + +.iconmofang-yishangliangxia:before { + content: "\e6c6"; +} + +.iconmofang-yizuoliangyou:before { + content: "\e6c7"; +} + +.iconxuanzemoban-yizuosanyou:before { + content: "\e6e9"; +} + +.iconrequ:before { + content: "\e68d"; +} + +.iconmofang1:before { + content: "\e64d"; +} + +.iconxinyongqia:before { + content: "\e785"; +} + +.iconmendian:before { + content: "\e60a"; +} + +.iconico_yuyueguanli_yuyuebiangeng:before { + content: "\e94a"; +} + +.iconsousuo:before { + content: "\e8b9"; +} + +.icongengduo:before { + content: "\e63b"; +} + +.icona-02_luxian:before { + content: "\e687"; +} + +.iconhuiyuanxinxi:before { + content: "\e688"; +} + +.iconjingdian:before { + content: "\e689"; +} + +.iconhuiyuandingdan:before { + content: "\e68a"; +} + +.iconjiudian:before { + content: "\e68b"; +} + +.iconhellowenbenanli:before { + content: "\e68c"; +} + +.iconqiehuan:before { + content: "\e61e"; +} + +.iconxiangyoujiantou:before { + content: "\e660"; +} + +.iconxiangzuojiantou:before { + content: "\e663"; +} + +.icondingdan:before { + content: "\e61d"; +} + +.iconyingyongshichang1:before { + content: "\e61c"; +} + +.iconyingyongshichang2:before { + content: "\e60b"; +} + +.iconlingdang-xianxing:before { + content: "\e8c0"; +} + +.icondianhua:before { + content: "\e8c3"; +} + +.iconic_manage_assignprop:before { + content: "\e60c"; +} + +.iconchengshi:before { + content: "\ec70"; +} + +.icontaocanliebiao:before { + content: "\e6b2"; +} + +.iconweixin:before { + content: "\e647"; +} + +.iconhuiyuanguanli:before { + content: "\e64c"; +} + +.iconhuangjinhuiyuan0101-copy:before { + content: "\e621"; +} + +.iconhuiyuan1:before { + content: "\e644"; +} + +.iconqianbao:before { + content: "\e6ca"; +} + +.iconic_description_file24px:before { + content: "\e61a"; +} + +.iconzhuangxiu1:before { + content: "\e66b"; +} + +.icontuikuanjilu:before { + content: "\e8cf"; +} + +.icongengxinhuancun:before { + content: "\e686"; +} + +.iconsixingjiance:before { + content: "\e645"; +} + +.iconzhuceshezhi:before { + content: "\e6ad"; +} + +.iconmanage-apply:before { + content: "\e619"; +} + +.iconyingyongguanli:before { + content: "\e61f"; +} + +.iconkaifazheguanli:before { + content: "\e624"; +} + +.iconlianmengguanli:before { + content: "\e65f"; +} + +.icondianzan:before { + content: "\ec7f"; +} + +.iconh5e:before { + content: "\e654"; +} + +.iconyingyongshichang:before { + content: "\e618"; +} + +.icondesktop:before { + content: "\e6e8"; +} + +.iconzhifubao:before { + content: "\e8e4"; +} + +.iconyunkongjian:before { + content: "\e666"; +} + +.iconbankuai:before { + content: "\e668"; +} + +.iconneirong2:before { + content: "\e889"; +} + +.icon24gl-userGroup:before { + content: "\eb26"; +} + +.icon14:before { + content: "\e615"; +} + +.iconjubao:before { + content: "\e611"; +} + +.iconbiaoti:before { + content: "\e643"; +} + +.iconhuiyuanzhongxin:before { + content: "\e692"; +} + +.iconfuzhukongbai1:before { + content: "\e642"; +} + +.iconjiantoushang:before { + content: "\e600"; +} + +.iconloader-line:before { + content: "\e601"; +} + +.icondelete-line:before { + content: "\e602"; +} + +.iconjiantouxia:before { + content: "\e603"; +} + +.iconcopy-line:before { + content: "\e605"; +} + +.icontuodong:before { + content: "\e884"; +} + +.iconfuzhushuxian:before { + content: "\e6f7"; +} + +.iconmofang:before { + content: "\e6c4"; +} + +.iconshoudongxuanze:before { + content: "\e6e1"; +} + +.iconyihangsange:before { + content: "\e6d5"; +} + +.iconyihangsige:before { + content: "\e6d6"; +} + +.iconyihangliangge:before { + content: "\e6e2"; +} + +.iconyihang5ge:before { + content: "\e6f3"; +} + +.icontupianguanggao1:before { + content: "\e649"; +} + +.icontuwendaohang2:before { + content: "\e65d"; +} + +.iconwenzhang:before { + content: "\e662"; +} + +.icongudingzhanshi:before { + content: "\e66e"; +} + +.icondanhanghuadong:before { + content: "\e66f"; +} + +.icontuwendaohang3:before { + content: "\e670"; +} + +.icontudaohang:before { + content: "\e671"; +} + +.iconfenyehuadong:before { + content: "\e673"; +} + +.iconwendaohang:before { + content: "\e674"; +} + +.iconzhuangxiu:before { + content: "\e627"; +} + +.icondianpuzhuangxiu:before { + content: "\e616"; +} + +.icondibudaohang:before { + content: "\e617"; +} + +.iconwangpuzhuangxiu:before { + content: "\e881"; +} + +.iconweixingongzhonghao1:before { + content: "\e705"; +} + +.iconweixingongzhonghaoguanli:before { + content: "\e609"; +} + +.iconxiaochengxu:before { + content: "\e635"; +} + +.icondenglu:before { + content: "\e604"; +} + +.iconxiaochengxushezhi:before { + content: "\e6b4"; +} + +.iconjifen:before { + content: "\e70c"; +} + +.iconguanbi:before { + content: "\e612"; +} + +.icondengluzhucemima:before { + content: "\e67f"; +} + +.iconqiehuanjiaose:before { + content: "\e60f"; +} + +.iconbanquan:before { + content: "\e632"; +} + +.iconjifen-xianxing:before { + content: "\e897"; +} + +.iconhuiyuanliebiao:before { + content: "\e62c"; +} + +.iconjiaoseyonghu:before { + content: "\e648"; +} + +.iconyonghu:before { + content: "\e65e"; +} + +.iconbanquan1:before { + content: "\e66d"; +} + +.iconweixingongzhonghao:before { + content: "\e613"; +} + +.iconweixinxiaochengxu:before { + content: "\e614"; +} + +.icon24gl-code:before { + content: "\e9ba"; +} + +.icon24gl-portraitMalePlus2:before { + content: "\eb25"; +} + +.iconyuandaima:before { + content: "\e610"; +} + +.iconjiaoseguanli:before { + content: "\e62d"; +} + +.iconjifen1:before { + content: "\e641"; +} + +.iconbanquan2:before { + content: "\e61b"; +} + +.iconjianpan:before { + content: "\e661"; +} + +.icon24gf-playCircle:before { + content: "\ea82"; +} + +.icontuichuquanping:before { + content: "\e755"; +} + +.iconfanyi:before { + content: "\e6fb"; +} + +.iconquanping:before { + content: "\eb11"; +} diff --git a/admin/src/styles/icon/iconfont.json b/admin/src/styles/icon/iconfont.json new file mode 100644 index 0000000..67fd684 --- /dev/null +++ b/admin/src/styles/icon/iconfont.json @@ -0,0 +1,1731 @@ +{ + "id": "3883393", + "name": "系统", + "font_family": "iconfont", + "css_prefix_text": "icon", + "description": "系统图标", + "glyphs": [ + { + "icon_id": "37970163", + "name": "授权列表", + "font_class": "shouquanliebiao", + "unicode": "e6fd", + "unicode_decimal": 59133 + }, + { + "icon_id": "5309869", + "name": " 提示", + "font_class": "tishi", + "unicode": "e6fc", + "unicode_decimal": 59132 + }, + { + "icon_id": "37891254", + "name": "我的订单", + "font_class": "wodedingdan", + "unicode": "e6f2", + "unicode_decimal": 59122 + }, + { + "icon_id": "37891248", + "name": "个人信息", + "font_class": "gerenxinxi", + "unicode": "e6f4", + "unicode_decimal": 59124 + }, + { + "icon_id": "37891253", + "name": "我的站点", + "font_class": "wodezhandian", + "unicode": "e6f5", + "unicode_decimal": 59125 + }, + { + "icon_id": "37891252", + "name": "我的授权", + "font_class": "wodeshouquan", + "unicode": "e6f6", + "unicode_decimal": 59126 + }, + { + "icon_id": "37891251", + "name": "我的账户", + "font_class": "wodezhanghu", + "unicode": "e6f8", + "unicode_decimal": 59128 + }, + { + "icon_id": "37891249", + "name": "实名认证", + "font_class": "shimingrenzheng", + "unicode": "e6f9", + "unicode_decimal": 59129 + }, + { + "icon_id": "37891250", + "name": "开发商中心", + "font_class": "kaifashangzhongxin", + "unicode": "e6fa", + "unicode_decimal": 59130 + }, + { + "icon_id": "9866423", + "name": "ts-图标_CertificateServer", + "font_class": "ts-tubiao_CertificateServer", + "unicode": "e62b", + "unicode_decimal": 58923 + }, + { + "icon_id": "34273027", + "name": "商标 2", + "font_class": "a-shangbiao2", + "unicode": "e64f", + "unicode_decimal": 58959 + }, + { + "icon_id": "37869625", + "name": "价格版本", + "font_class": "jiagebanben", + "unicode": "e6f0", + "unicode_decimal": 59120 + }, + { + "icon_id": "37869624", + "name": "技术支持", + "font_class": "jishuzhichi", + "unicode": "e6f1", + "unicode_decimal": 59121 + }, + { + "icon_id": "37869628", + "name": "基础设置", + "font_class": "jichushezhi", + "unicode": "e6ed", + "unicode_decimal": 59117 + }, + { + "icon_id": "37869627", + "name": "商城设置", + "font_class": "shangchengshezhi", + "unicode": "e6ee", + "unicode_decimal": 59118 + }, + { + "icon_id": "37869626", + "name": "开发设置", + "font_class": "kaifashezhi", + "unicode": "e6ef", + "unicode_decimal": 59119 + }, + { + "icon_id": "8441714", + "name": "切换", + "font_class": "qiehuan3", + "unicode": "e6ec", + "unicode_decimal": 59116 + }, + { + "icon_id": "8765139", + "name": "修改", + "font_class": "xiugai", + "unicode": "e62a", + "unicode_decimal": 58922 + }, + { + "icon_id": "35102695", + "name": "下载01", + "font_class": "xiazai01", + "unicode": "ea38", + "unicode_decimal": 59960 + }, + { + "icon_id": "37719083", + "name": "景点订单", + "font_class": "jingdiandingdan", + "unicode": "e6ea", + "unicode_decimal": 59114 + }, + { + "icon_id": "37719073", + "name": "路线订单", + "font_class": "luxiandingdan", + "unicode": "e6eb", + "unicode_decimal": 59115 + }, + { + "icon_id": "37717881", + "name": "发票管理", + "font_class": "fapiaoguanli", + "unicode": "e683", + "unicode_decimal": 59011 + }, + { + "icon_id": "37717870", + "name": "回收站", + "font_class": "huishouzhan", + "unicode": "e6d7", + "unicode_decimal": 59095 + }, + { + "icon_id": "37717879", + "name": "商品列表", + "font_class": "shangpinliebiao1", + "unicode": "e6d8", + "unicode_decimal": 59096 + }, + { + "icon_id": "37717878", + "name": "商品分类", + "font_class": "shangpinfenlei", + "unicode": "e6d9", + "unicode_decimal": 59097 + }, + { + "icon_id": "37717875", + "name": "分类设置", + "font_class": "fenleishezhi", + "unicode": "e6da", + "unicode_decimal": 59098 + }, + { + "icon_id": "37717877", + "name": "路线管理", + "font_class": "luxianguanli", + "unicode": "e6db", + "unicode_decimal": 59099 + }, + { + "icon_id": "37717876", + "name": "酒店管理", + "font_class": "jiudianguanli", + "unicode": "e6dc", + "unicode_decimal": 59100 + }, + { + "icon_id": "37717874", + "name": "商家地址库", + "font_class": "shangjiadizhiku", + "unicode": "e6dd", + "unicode_decimal": 59101 + }, + { + "icon_id": "37717873", + "name": "卡项管理", + "font_class": "kaxiangguanli", + "unicode": "e6de", + "unicode_decimal": 59102 + }, + { + "icon_id": "37717871", + "name": "酒店订单", + "font_class": "jiudiandingdan", + "unicode": "e6df", + "unicode_decimal": 59103 + }, + { + "icon_id": "37717872", + "name": "景点管理", + "font_class": "jingdianguanli", + "unicode": "e6e0", + "unicode_decimal": 59104 + }, + { + "icon_id": "37717867", + "name": "订单设置", + "font_class": "dingdanshezhi", + "unicode": "e6e3", + "unicode_decimal": 59107 + }, + { + "icon_id": "37717869", + "name": "交易设置", + "font_class": "jiaoyishezhi", + "unicode": "e6e4", + "unicode_decimal": 59108 + }, + { + "icon_id": "37717866", + "name": "订单核销", + "font_class": "dingdanhexiao", + "unicode": "e6e5", + "unicode_decimal": 59109 + }, + { + "icon_id": "37717868", + "name": "订单维权", + "font_class": "dingdanweiquan", + "unicode": "e6e6", + "unicode_decimal": 59110 + }, + { + "icon_id": "37717865", + "name": "订单—列表", + "font_class": "a-dingdanliebiao", + "unicode": "e6e7", + "unicode_decimal": 59111 + }, + { + "icon_id": "37717894", + "name": "预约项目", + "font_class": "yuyuexiangmu", + "unicode": "e68e", + "unicode_decimal": 59022 + }, + { + "icon_id": "37717886", + "name": "商品品牌", + "font_class": "shangpinpinpai", + "unicode": "e6c9", + "unicode_decimal": 59081 + }, + { + "icon_id": "37717893", + "name": "预约设置", + "font_class": "yuyueshezhi", + "unicode": "e6cb", + "unicode_decimal": 59083 + }, + { + "icon_id": "37717892", + "name": "项目管理", + "font_class": "xiangmuguanli", + "unicode": "e6cc", + "unicode_decimal": 59084 + }, + { + "icon_id": "37717891", + "name": "优惠券", + "font_class": "youhuiquan", + "unicode": "e6cd", + "unicode_decimal": 59085 + }, + { + "icon_id": "37717890", + "name": "派送设置", + "font_class": "paisongshezhi", + "unicode": "e685", + "unicode_decimal": 59013 + }, + { + "icon_id": "37717888", + "name": "退款维权", + "font_class": "tuikuanweiquan", + "unicode": "e6ce", + "unicode_decimal": 59086 + }, + { + "icon_id": "37717889", + "name": "营销中心", + "font_class": "yingxiaozhongxin", + "unicode": "e6cf", + "unicode_decimal": 59087 + }, + { + "icon_id": "37717883", + "name": "技师管理", + "font_class": "jishiguanli", + "unicode": "e684", + "unicode_decimal": 59012 + }, + { + "icon_id": "37717887", + "name": "项目分类", + "font_class": "xiangmufenlei", + "unicode": "e6d0", + "unicode_decimal": 59088 + }, + { + "icon_id": "37717885", + "name": "物流跟踪", + "font_class": "wuliugenzong", + "unicode": "e6d1", + "unicode_decimal": 59089 + }, + { + "icon_id": "37717880", + "name": "商品标签", + "font_class": "shangpinbiaoqian", + "unicode": "e6d2", + "unicode_decimal": 59090 + }, + { + "icon_id": "37717884", + "name": "商品评论", + "font_class": "shangpinpinglun", + "unicode": "e6d3", + "unicode_decimal": 59091 + }, + { + "icon_id": "37717882", + "name": "商品服务", + "font_class": "shangpinfuwu", + "unicode": "e6d4", + "unicode_decimal": 59092 + }, + { + "icon_id": "26182298", + "name": "公告", + "font_class": "gonggao", + "unicode": "e629", + "unicode_decimal": 58921 + }, + { + "icon_id": "6841809", + "name": "商品列表", + "font_class": "shangpinliebiao", + "unicode": "e628", + "unicode_decimal": 58920 + }, + { + "icon_id": "37528678", + "name": "购物车", + "font_class": "gouwuche1", + "unicode": "e680", + "unicode_decimal": 59008 + }, + { + "icon_id": "10268929", + "name": "购物车", + "font_class": "gouwuche", + "unicode": "e6c8", + "unicode_decimal": 59080 + }, + { + "icon_id": "37506986", + "name": "云", + "font_class": "yun1", + "unicode": "e67e", + "unicode_decimal": 59006 + }, + { + "icon_id": "16191887", + "name": "icon-selected", + "font_class": "icon-selected", + "unicode": "e626", + "unicode_decimal": 58918 + }, + { + "icon_id": "37476091", + "name": "商品管理", + "font_class": "shangpinguanli", + "unicode": "e67c", + "unicode_decimal": 59004 + }, + { + "icon_id": "14421470", + "name": "图形-圆", + "font_class": "yuanquan_huaban1", + "unicode": "e66c", + "unicode_decimal": 58988 + }, + { + "icon_id": "37443500", + "name": "展开", + "font_class": "zhankai", + "unicode": "e67b", + "unicode_decimal": 59003 + }, + { + "icon_id": "37443497", + "name": "箭头", + "font_class": "jiantou", + "unicode": "e67a", + "unicode_decimal": 59002 + }, + { + "icon_id": "37440097", + "name": "插件", + "font_class": "chajian1", + "unicode": "e679", + "unicode_decimal": 59001 + }, + { + "icon_id": "37401589", + "name": "icon_火箭", + "font_class": "icon_huojian", + "unicode": "e677", + "unicode_decimal": 58999 + }, + { + "icon_id": "37396974", + "name": "安装", + "font_class": "anzhuang", + "unicode": "e676", + "unicode_decimal": 58998 + }, + { + "icon_id": "37394752", + "name": "首页", + "font_class": "shouye", + "unicode": "e675", + "unicode_decimal": 58997 + }, + { + "icon_id": "2023693", + "name": "首页-首页", + "font_class": "shouye-shouye", + "unicode": "e638", + "unicode_decimal": 58936 + }, + { + "icon_id": "4933869", + "name": "点", + "font_class": "dian", + "unicode": "ec1e", + "unicode_decimal": 60446 + }, + { + "icon_id": "5387931", + "name": "箭头_向左两次_o", + "font_class": "jiantou_xiangzuoliangci_o", + "unicode": "eb93", + "unicode_decimal": 60307 + }, + { + "icon_id": "781940", + "name": "分类", + "font_class": "fenlei", + "unicode": "e6c3", + "unicode_decimal": 59075 + }, + { + "icon_id": "37134174", + "name": "切换", + "font_class": "qiehuan2", + "unicode": "e6c0", + "unicode_decimal": 59072 + }, + { + "icon_id": "37134175", + "name": "渠道管理", + "font_class": "qudaoguanli2", + "unicode": "e6c1", + "unicode_decimal": 59073 + }, + { + "icon_id": "37166533", + "name": "官方市场", + "font_class": "guanfangshichang", + "unicode": "e6c2", + "unicode_decimal": 59074 + }, + { + "icon_id": "37129625", + "name": "应用", + "font_class": "yingyong1", + "unicode": "e6bf", + "unicode_decimal": 59071 + }, + { + "icon_id": "37130963", + "name": "装修", + "font_class": "zhuangxiu2", + "unicode": "e6bd", + "unicode_decimal": 59069 + }, + { + "icon_id": "37130964", + "name": "装修2", + "font_class": "zhuangxiu21", + "unicode": "e6be", + "unicode_decimal": 59070 + }, + { + "icon_id": "7874510", + "name": "切换", + "font_class": "qiehuan1", + "unicode": "e625", + "unicode_decimal": 58917 + }, + { + "icon_id": "37126873", + "name": "概况", + "font_class": "gaikuang1", + "unicode": "e6b7", + "unicode_decimal": 59063 + }, + { + "icon_id": "37126874", + "name": "卡项产品", + "font_class": "kaxiangchanpin", + "unicode": "e6b6", + "unicode_decimal": 59062 + }, + { + "icon_id": "37126875", + "name": "充值订单", + "font_class": "chongzhidingdan", + "unicode": "e6b8", + "unicode_decimal": 59064 + }, + { + "icon_id": "37126876", + "name": "卡项订单", + "font_class": "kaxiangdingdan", + "unicode": "e6b9", + "unicode_decimal": 59065 + }, + { + "icon_id": "37126877", + "name": "旅游产品", + "font_class": "lvyouchanpin", + "unicode": "e6ba", + "unicode_decimal": 59066 + }, + { + "icon_id": "37126878", + "name": "旅游订单", + "font_class": "lvyoudingdan", + "unicode": "e6bb", + "unicode_decimal": 59067 + }, + { + "icon_id": "37126879", + "name": "文章管理", + "font_class": "wenzhangguanli1", + "unicode": "e6bc", + "unicode_decimal": 59068 + }, + { + "icon_id": "37108824", + "name": "插件开发", + "font_class": "chajiankaifa", + "unicode": "e6b3", + "unicode_decimal": 59059 + }, + { + "icon_id": "37108825", + "name": "云市场", + "font_class": "yunshichang", + "unicode": "e6b5", + "unicode_decimal": 59061 + }, + { + "icon_id": "15490409", + "name": "nav-market", + "font_class": "nav-market", + "unicode": "e60e", + "unicode_decimal": 58894 + }, + { + "icon_id": "37108714", + "name": "代码生成", + "font_class": "daimashengcheng", + "unicode": "e6ae", + "unicode_decimal": 59054 + }, + { + "icon_id": "37108715", + "name": "更新缓存", + "font_class": "gengxinhuancun1", + "unicode": "e6ac", + "unicode_decimal": 59052 + }, + { + "icon_id": "37108716", + "name": "会员标签", + "font_class": "huiyuanbiaoqian", + "unicode": "e6a4", + "unicode_decimal": 59044 + }, + { + "icon_id": "37108717", + "name": "会员积分", + "font_class": "huiyuanjifen", + "unicode": "e6ab", + "unicode_decimal": 59051 + }, + { + "icon_id": "37108718", + "name": "会员佣金", + "font_class": "huiyuanyongjin", + "unicode": "e6a9", + "unicode_decimal": 59049 + }, + { + "icon_id": "37108719", + "name": "查看历史", + "font_class": "chakanlishi", + "unicode": "e6a8", + "unicode_decimal": 59048 + }, + { + "icon_id": "37108720", + "name": "渠道管理", + "font_class": "qudaoguanli1", + "unicode": "e6aa", + "unicode_decimal": 59050 + }, + { + "icon_id": "37108721", + "name": "权限管理", + "font_class": "quanxianguanli", + "unicode": "e6a6", + "unicode_decimal": 59046 + }, + { + "icon_id": "37108722", + "name": "素材管理", + "font_class": "sucaiguanli", + "unicode": "e6a7", + "unicode_decimal": 59047 + }, + { + "icon_id": "37108723", + "name": "首页 电脑", + "font_class": "a-shouyediannao", + "unicode": "e6a5", + "unicode_decimal": 59045 + }, + { + "icon_id": "37108724", + "name": "环境监测", + "font_class": "huanjingjiance", + "unicode": "e6a2", + "unicode_decimal": 59042 + }, + { + "icon_id": "37108725", + "name": "计划任务", + "font_class": "jihuarenwu", + "unicode": "e6a3", + "unicode_decimal": 59043 + }, + { + "icon_id": "37108726", + "name": "会员余额", + "font_class": "huiyuanyue", + "unicode": "e69f", + "unicode_decimal": 59039 + }, + { + "icon_id": "37108727", + "name": "消息管理", + "font_class": "xiaoxiguanli", + "unicode": "e6a1", + "unicode_decimal": 59041 + }, + { + "icon_id": "37108728", + "name": "我的星标", + "font_class": "wodexingbiao", + "unicode": "e6a0", + "unicode_decimal": 59040 + }, + { + "icon_id": "37108729", + "name": "支付管理", + "font_class": "zhifuguanli", + "unicode": "e6af", + "unicode_decimal": 59055 + }, + { + "icon_id": "37108730", + "name": "文章管理", + "font_class": "wenzhangguanli", + "unicode": "e6b0", + "unicode_decimal": 59056 + }, + { + "icon_id": "37108739", + "name": "会员", + "font_class": "huiyuan2", + "unicode": "e6b1", + "unicode_decimal": 59057 + }, + { + "icon_id": "11114685", + "name": "概况", + "font_class": "gaikuang", + "unicode": "e623", + "unicode_decimal": 58915 + }, + { + "icon_id": "37107817", + "name": "云", + "font_class": "yun", + "unicode": "e69e", + "unicode_decimal": 59038 + }, + { + "icon_id": "31987464", + "name": "云端连接", + "font_class": "a-huaban1fuben25", + "unicode": "e608", + "unicode_decimal": 58888 + }, + { + "icon_id": "11641865", + "name": "云2-line", + "font_class": "yun-line", + "unicode": "e622", + "unicode_decimal": 58914 + }, + { + "icon_id": "5666357", + "name": "应用市场", + "font_class": "yingyongshichang-", + "unicode": "e607", + "unicode_decimal": 58887 + }, + { + "icon_id": "7140374", + "name": "关注", + "font_class": "guanzhu", + "unicode": "e739", + "unicode_decimal": 59193 + }, + { + "icon_id": "19745540", + "name": "历史记录", + "font_class": "lishijilu", + "unicode": "f1e2", + "unicode_decimal": 61922 + }, + { + "icon_id": "37086900", + "name": "会员列表", + "font_class": "huiyuanliebiao1", + "unicode": "e69c", + "unicode_decimal": 59036 + }, + { + "icon_id": "37086906", + "name": "网站", + "font_class": "wangzhan1", + "unicode": "e69d", + "unicode_decimal": 59037 + }, + { + "icon_id": "4111811", + "name": "代码", + "font_class": "code", + "unicode": "e620", + "unicode_decimal": 58912 + }, + { + "icon_id": "7155227", + "name": "菜单", + "font_class": "caidan", + "unicode": "e652", + "unicode_decimal": 58962 + }, + { + "icon_id": "37081054", + "name": "应用市场", + "font_class": "yingyongshichang11", + "unicode": "e697", + "unicode_decimal": 59031 + }, + { + "icon_id": "37081059", + "name": "财务流水", + "font_class": "caiwuliushui", + "unicode": "e698", + "unicode_decimal": 59032 + }, + { + "icon_id": "37081071", + "name": "授权信息2", + "font_class": "shouquanxinxi2", + "unicode": "e699", + "unicode_decimal": 59033 + }, + { + "icon_id": "37081075", + "name": "线下支付2", + "font_class": "xianxiazhifu2", + "unicode": "e69a", + "unicode_decimal": 59034 + }, + { + "icon_id": "37081077", + "name": "会员提现", + "font_class": "huiyuantixian", + "unicode": "e69b", + "unicode_decimal": 59035 + }, + { + "icon_id": "37076157", + "name": "渠道管理", + "font_class": "qudaoguanli", + "unicode": "e695", + "unicode_decimal": 59029 + }, + { + "icon_id": "37076158", + "name": "市场物料支持", + "font_class": "shichangwuliaozhichi", + "unicode": "e694", + "unicode_decimal": 59028 + }, + { + "icon_id": "37076159", + "name": "财务", + "font_class": "caiwu", + "unicode": "e693", + "unicode_decimal": 59027 + }, + { + "icon_id": "37076160", + "name": "设置", + "font_class": "shezhi1", + "unicode": "e696", + "unicode_decimal": 59030 + }, + { + "icon_id": "37076161", + "name": "会员", + "font_class": "huiyuan11", + "unicode": "e691", + "unicode_decimal": 59025 + }, + { + "icon_id": "37076162", + "name": "网站", + "font_class": "wangzhan", + "unicode": "e690", + "unicode_decimal": 59024 + }, + { + "icon_id": "37076163", + "name": "应用", + "font_class": "yingyong", + "unicode": "e68f", + "unicode_decimal": 59023 + }, + { + "icon_id": "629333", + "name": "设置", + "font_class": "shezhi", + "unicode": "e64b", + "unicode_decimal": 58955 + }, + { + "icon_id": "1727441", + "name": "213收藏", + "font_class": "shoucang", + "unicode": "e8c2", + "unicode_decimal": 59586 + }, + { + "icon_id": "5485640", + "name": "排序", + "font_class": "paixu", + "unicode": "e60d", + "unicode_decimal": 58893 + }, + { + "icon_id": "13636969", + "name": "排序", + "font_class": "paixu1", + "unicode": "e64e", + "unicode_decimal": 58958 + }, + { + "icon_id": "577319", + "name": "问号", + "font_class": "wenhao", + "unicode": "e72d", + "unicode_decimal": 59181 + }, + { + "icon_id": "31819744", + "name": "实名认证-线", + "font_class": "shimingrenzheng-xian", + "unicode": "e89c", + "unicode_decimal": 59548 + }, + { + "icon_id": "6061398", + "name": "开发者管理", + "font_class": "kaifazheguanli1", + "unicode": "e636", + "unicode_decimal": 58934 + }, + { + "icon_id": "88780", + "name": "全部订单", + "font_class": "quanbudingdan", + "unicode": "e606", + "unicode_decimal": 58886 + }, + { + "icon_id": "9924690", + "name": "魔方-两左两右", + "font_class": "mofang-liangzuoliangyou", + "unicode": "e6c5", + "unicode_decimal": 59077 + }, + { + "icon_id": "9924691", + "name": "魔方-一上两下", + "font_class": "mofang-yishangliangxia", + "unicode": "e6c6", + "unicode_decimal": 59078 + }, + { + "icon_id": "9924700", + "name": "魔方-一左两右", + "font_class": "mofang-yizuoliangyou", + "unicode": "e6c7", + "unicode_decimal": 59079 + }, + { + "icon_id": "18287302", + "name": "选择模板-一左三右", + "font_class": "xuanzemoban-yizuosanyou", + "unicode": "e6e9", + "unicode_decimal": 59113 + }, + { + "icon_id": "33490811", + "name": "热区", + "font_class": "requ", + "unicode": "e68d", + "unicode_decimal": 59021 + }, + { + "icon_id": "30454135", + "name": "魔方", + "font_class": "mofang1", + "unicode": "e64d", + "unicode_decimal": 58957 + }, + { + "icon_id": "579624", + "name": "信用卡", + "font_class": "xinyongqia", + "unicode": "e785", + "unicode_decimal": 59269 + }, + { + "icon_id": "2681698", + "name": "门店", + "font_class": "mendian", + "unicode": "e60a", + "unicode_decimal": 58890 + }, + { + "icon_id": "6607852", + "name": "ico_预约管理_预约变更", + "font_class": "ico_yuyueguanli_yuyuebiangeng", + "unicode": "e94a", + "unicode_decimal": 59722 + }, + { + "icon_id": "11372706", + "name": "搜索", + "font_class": "sousuo", + "unicode": "e8b9", + "unicode_decimal": 59577 + }, + { + "icon_id": "1703513", + "name": "更多", + "font_class": "gengduo", + "unicode": "e63b", + "unicode_decimal": 58939 + }, + { + "icon_id": "36212724", + "name": "02_路线", + "font_class": "a-02_luxian", + "unicode": "e687", + "unicode_decimal": 59015 + }, + { + "icon_id": "36212725", + "name": "会员信息", + "font_class": "huiyuanxinxi", + "unicode": "e688", + "unicode_decimal": 59016 + }, + { + "icon_id": "36212726", + "name": "景点", + "font_class": "jingdian", + "unicode": "e689", + "unicode_decimal": 59017 + }, + { + "icon_id": "36212727", + "name": "会员订单", + "font_class": "huiyuandingdan", + "unicode": "e68a", + "unicode_decimal": 59018 + }, + { + "icon_id": "36212728", + "name": "酒店", + "font_class": "jiudian", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "36212729", + "name": "hello文本案例", + "font_class": "hellowenbenanli", + "unicode": "e68c", + "unicode_decimal": 59020 + }, + { + "icon_id": "18993709", + "name": "切换", + "font_class": "qiehuan", + "unicode": "e61e", + "unicode_decimal": 58910 + }, + { + "icon_id": "630094", + "name": "向右箭头", + "font_class": "xiangyoujiantou", + "unicode": "e660", + "unicode_decimal": 58976 + }, + { + "icon_id": "630095", + "name": "向左箭头", + "font_class": "xiangzuojiantou", + "unicode": "e663", + "unicode_decimal": 58979 + }, + { + "icon_id": "2127167", + "name": "订单", + "font_class": "dingdan", + "unicode": "e61d", + "unicode_decimal": 58909 + }, + { + "icon_id": "10066818", + "name": "应用市场", + "font_class": "yingyongshichang1", + "unicode": "e61c", + "unicode_decimal": 58908 + }, + { + "icon_id": "28871251", + "name": "应用市场", + "font_class": "yingyongshichang2", + "unicode": "e60b", + "unicode_decimal": 58891 + }, + { + "icon_id": "1727436", + "name": "211铃铛-线性", + "font_class": "lingdang-xianxing", + "unicode": "e8c0", + "unicode_decimal": 59584 + }, + { + "icon_id": "11372759", + "name": "电话", + "font_class": "dianhua", + "unicode": "e8c3", + "unicode_decimal": 59587 + }, + { + "icon_id": "4734150", + "name": "管理房屋", + "font_class": "ic_manage_assignprop", + "unicode": "e60c", + "unicode_decimal": 58892 + }, + { + "icon_id": "5975445", + "name": "城市", + "font_class": "chengshi", + "unicode": "ec70", + "unicode_decimal": 60528 + }, + { + "icon_id": "25069700", + "name": "套餐列表", + "font_class": "taocanliebiao", + "unicode": "e6b2", + "unicode_decimal": 59058 + }, + { + "icon_id": "11239058", + "name": "微信", + "font_class": "weixin", + "unicode": "e647", + "unicode_decimal": 58951 + }, + { + "icon_id": "417391", + "name": "会员管理", + "font_class": "huiyuanguanli", + "unicode": "e64c", + "unicode_decimal": 58956 + }, + { + "icon_id": "651208", + "name": "我的会员", + "font_class": "huangjinhuiyuan0101-copy", + "unicode": "e621", + "unicode_decimal": 58913 + }, + { + "icon_id": "897811", + "name": "会员(1)", + "font_class": "huiyuan1", + "unicode": "e644", + "unicode_decimal": 58948 + }, + { + "icon_id": "8361821", + "name": "钱包1", + "font_class": "qianbao", + "unicode": "e6ca", + "unicode_decimal": 59082 + }, + { + "icon_id": "15053947", + "name": "文章", + "font_class": "ic_description_file24px", + "unicode": "e61a", + "unicode_decimal": 58906 + }, + { + "icon_id": "26677253", + "name": "FormatPainterOutlined", + "font_class": "zhuangxiu1", + "unicode": "e66b", + "unicode_decimal": 58987 + }, + { + "icon_id": "5856622", + "name": "退款记录", + "font_class": "tuikuanjilu", + "unicode": "e8cf", + "unicode_decimal": 59599 + }, + { + "icon_id": "11296483", + "name": "更新缓存", + "font_class": "gengxinhuancun", + "unicode": "e686", + "unicode_decimal": 59014 + }, + { + "icon_id": "11661874", + "name": "四性检测", + "font_class": "sixingjiance", + "unicode": "e645", + "unicode_decimal": 58949 + }, + { + "icon_id": "30527484", + "name": "注册设置", + "font_class": "zhuceshezhi", + "unicode": "e6ad", + "unicode_decimal": 59053 + }, + { + "icon_id": "9117790", + "name": "应用管理", + "font_class": "manage-apply", + "unicode": "e619", + "unicode_decimal": 58905 + }, + { + "icon_id": "508272", + "name": "应用管理", + "font_class": "yingyongguanli", + "unicode": "e61f", + "unicode_decimal": 58911 + }, + { + "icon_id": "3090731", + "name": "开发者管理", + "font_class": "kaifazheguanli", + "unicode": "e624", + "unicode_decimal": 58916 + }, + { + "icon_id": "6263297", + "name": "联盟管理", + "font_class": "lianmengguanli", + "unicode": "e65f", + "unicode_decimal": 58975 + }, + { + "icon_id": "6337455", + "name": "点赞", + "font_class": "dianzan", + "unicode": "ec7f", + "unicode_decimal": 60543 + }, + { + "icon_id": "1160150", + "name": "h5e", + "font_class": "h5e", + "unicode": "e654", + "unicode_decimal": 58964 + }, + { + "icon_id": "10067274", + "name": "应用市场", + "font_class": "yingyongshichang", + "unicode": "e618", + "unicode_decimal": 58904 + }, + { + "icon_id": "1735584", + "name": "电脑端", + "font_class": "desktop", + "unicode": "e6e8", + "unicode_decimal": 59112 + }, + { + "icon_id": "2465639", + "name": "支付宝", + "font_class": "zhifubao", + "unicode": "e8e4", + "unicode_decimal": 59620 + }, + { + "icon_id": "16372351", + "name": "云空间", + "font_class": "yunkongjian", + "unicode": "e666", + "unicode_decimal": 58982 + }, + { + "icon_id": "1110699", + "name": "板块", + "font_class": "bankuai", + "unicode": "e668", + "unicode_decimal": 58984 + }, + { + "icon_id": "2076244", + "name": " 内容2", + "font_class": "neirong2", + "unicode": "e889", + "unicode_decimal": 59529 + }, + { + "icon_id": "7596821", + "name": "24gl-userGroup", + "font_class": "24gl-userGroup", + "unicode": "eb26", + "unicode_decimal": 60198 + }, + { + "icon_id": "11124966", + "name": "论坛", + "font_class": "14", + "unicode": "e615", + "unicode_decimal": 58901 + }, + { + "icon_id": "13763389", + "name": "举报", + "font_class": "jubao", + "unicode": "e611", + "unicode_decimal": 58897 + }, + { + "icon_id": "30454127", + "name": "标题", + "font_class": "biaoti", + "unicode": "e643", + "unicode_decimal": 58947 + }, + { + "icon_id": "33622251", + "name": "会员中心", + "font_class": "huiyuanzhongxin", + "unicode": "e692", + "unicode_decimal": 59026 + }, + { + "icon_id": "30454128", + "name": "icon-kfckfc", + "font_class": "fuzhukongbai1", + "unicode": "e642", + "unicode_decimal": 58946 + }, + { + "icon_id": "34679438", + "name": "system-jiantoushang", + "font_class": "jiantoushang", + "unicode": "e600", + "unicode_decimal": 58880 + }, + { + "icon_id": "34679439", + "name": "system-loader-4-line", + "font_class": "loader-line", + "unicode": "e601", + "unicode_decimal": 58881 + }, + { + "icon_id": "34679440", + "name": "system-delete-bin-6-line", + "font_class": "delete-line", + "unicode": "e602", + "unicode_decimal": 58882 + }, + { + "icon_id": "34679441", + "name": "system-jiantouxia", + "font_class": "jiantouxia", + "unicode": "e603", + "unicode_decimal": 58883 + }, + { + "icon_id": "34679442", + "name": "system-file-copy-line", + "font_class": "copy-line", + "unicode": "e605", + "unicode_decimal": 58885 + }, + { + "icon_id": "1604633", + "name": "拖动", + "font_class": "tuodong", + "unicode": "e884", + "unicode_decimal": 59524 + }, + { + "icon_id": "4315844", + "name": "line", + "font_class": "fuzhushuxian", + "unicode": "e6f7", + "unicode_decimal": 59127 + }, + { + "icon_id": "9213697", + "name": "魔方", + "font_class": "mofang", + "unicode": "e6c4", + "unicode_decimal": 59076 + }, + { + "icon_id": "13126664", + "name": "手动选择", + "font_class": "shoudongxuanze", + "unicode": "e6e1", + "unicode_decimal": 59105 + }, + { + "icon_id": "15035365", + "name": "一行三个", + "font_class": "yihangsange", + "unicode": "e6d5", + "unicode_decimal": 59093 + }, + { + "icon_id": "15035367", + "name": "一行四个", + "font_class": "yihangsige", + "unicode": "e6d6", + "unicode_decimal": 59094 + }, + { + "icon_id": "16552058", + "name": "一行两个", + "font_class": "yihangliangge", + "unicode": "e6e2", + "unicode_decimal": 59106 + }, + { + "icon_id": "19363687", + "name": "一行5个", + "font_class": "yihang5ge", + "unicode": "e6f3", + "unicode_decimal": 59123 + }, + { + "icon_id": "30454132", + "name": "图片广告", + "font_class": "tupianguanggao1", + "unicode": "e649", + "unicode_decimal": 58953 + }, + { + "icon_id": "30454144", + "name": "图文导航", + "font_class": "tuwendaohang2", + "unicode": "e65d", + "unicode_decimal": 58973 + }, + { + "icon_id": "30461206", + "name": "文章", + "font_class": "wenzhang", + "unicode": "e662", + "unicode_decimal": 58978 + }, + { + "icon_id": "30621137", + "name": "固定展示", + "font_class": "gudingzhanshi", + "unicode": "e66e", + "unicode_decimal": 58990 + }, + { + "icon_id": "30621139", + "name": "单行滑动", + "font_class": "danhanghuadong", + "unicode": "e66f", + "unicode_decimal": 58991 + }, + { + "icon_id": "30621140", + "name": "图文导航", + "font_class": "tuwendaohang3", + "unicode": "e670", + "unicode_decimal": 58992 + }, + { + "icon_id": "30621141", + "name": "图导航", + "font_class": "tudaohang", + "unicode": "e671", + "unicode_decimal": 58993 + }, + { + "icon_id": "30621143", + "name": "分页滑动", + "font_class": "fenyehuadong", + "unicode": "e673", + "unicode_decimal": 58995 + }, + { + "icon_id": "30621144", + "name": "文导航", + "font_class": "wendaohang", + "unicode": "e674", + "unicode_decimal": 58996 + }, + { + "icon_id": "386395", + "name": "装修", + "font_class": "zhuangxiu", + "unicode": "e627", + "unicode_decimal": 58919 + }, + { + "icon_id": "1376045", + "name": "店铺装修", + "font_class": "dianpuzhuangxiu", + "unicode": "e616", + "unicode_decimal": 58902 + }, + { + "icon_id": "4315691", + "name": "底部导航", + "font_class": "dibudaohang", + "unicode": "e617", + "unicode_decimal": 58903 + }, + { + "icon_id": "34453370", + "name": "旺铺装修", + "font_class": "wangpuzhuangxiu", + "unicode": "e881", + "unicode_decimal": 59521 + }, + { + "icon_id": "8710560", + "name": "微信公众号", + "font_class": "weixingongzhonghao1", + "unicode": "e705", + "unicode_decimal": 59141 + }, + { + "icon_id": "4846336", + "name": "微信公众号管理", + "font_class": "weixingongzhonghaoguanli", + "unicode": "e609", + "unicode_decimal": 58889 + }, + { + "icon_id": "9810504", + "name": "小程序", + "font_class": "xiaochengxu", + "unicode": "e635", + "unicode_decimal": 58933 + }, + { + "icon_id": "10392614", + "name": "登录", + "font_class": "denglu", + "unicode": "e604", + "unicode_decimal": 58884 + }, + { + "icon_id": "15643755", + "name": "小程序设置", + "font_class": "xiaochengxushezhi", + "unicode": "e6b4", + "unicode_decimal": 59060 + }, + { + "icon_id": "321993", + "name": "integral", + "font_class": "jifen", + "unicode": "e70c", + "unicode_decimal": 59148 + }, + { + "icon_id": "731270", + "name": "登录注册密码", + "font_class": "guanbi", + "unicode": "e612", + "unicode_decimal": 58898 + }, + { + "icon_id": "845851", + "name": "登录注册密码", + "font_class": "dengluzhucemima", + "unicode": "e67f", + "unicode_decimal": 59007 + }, + { + "icon_id": "1440387", + "name": "切换角色", + "font_class": "qiehuanjiaose", + "unicode": "e60f", + "unicode_decimal": 58895 + }, + { + "icon_id": "1440877", + "name": "版权", + "font_class": "banquan", + "unicode": "e632", + "unicode_decimal": 58930 + }, + { + "icon_id": "1727353", + "name": "20积分-线性", + "font_class": "jifen-xianxing", + "unicode": "e897", + "unicode_decimal": 59543 + }, + { + "icon_id": "3590938", + "name": "会员列表", + "font_class": "huiyuanliebiao", + "unicode": "e62c", + "unicode_decimal": 58924 + }, + { + "icon_id": "5082143", + "name": "角色用户", + "font_class": "jiaoseyonghu", + "unicode": "e648", + "unicode_decimal": 58952 + }, + { + "icon_id": "5582337", + "name": "用户", + "font_class": "yonghu", + "unicode": "e65e", + "unicode_decimal": 58974 + }, + { + "icon_id": "6415223", + "name": "版权", + "font_class": "banquan1", + "unicode": "e66d", + "unicode_decimal": 58989 + }, + { + "icon_id": "7006681", + "name": "微信公众号", + "font_class": "weixingongzhonghao", + "unicode": "e613", + "unicode_decimal": 58899 + }, + { + "icon_id": "7006683", + "name": "微信小程序", + "font_class": "weixinxiaochengxu", + "unicode": "e614", + "unicode_decimal": 58900 + }, + { + "icon_id": "7577294", + "name": "24gl-code", + "font_class": "24gl-code", + "unicode": "e9ba", + "unicode_decimal": 59834 + }, + { + "icon_id": "7596833", + "name": "24gl-portraitMalePlus2", + "font_class": "24gl-portraitMalePlus2", + "unicode": "eb25", + "unicode_decimal": 60197 + }, + { + "icon_id": "7874533", + "name": "源代码", + "font_class": "yuandaima", + "unicode": "e610", + "unicode_decimal": 58896 + }, + { + "icon_id": "11121397", + "name": "角色管理", + "font_class": "jiaoseguanli", + "unicode": "e62d", + "unicode_decimal": 58925 + }, + { + "icon_id": "12797047", + "name": "积分", + "font_class": "jifen1", + "unicode": "e641", + "unicode_decimal": 58945 + }, + { + "icon_id": "26257279", + "name": "版权", + "font_class": "banquan2", + "unicode": "e61b", + "unicode_decimal": 58907 + }, + { + "icon_id": "26847628", + "name": "键盘", + "font_class": "jianpan", + "unicode": "e661", + "unicode_decimal": 58977 + }, + { + "icon_id": "7594157", + "name": "24gf-playCircle", + "font_class": "24gf-playCircle", + "unicode": "ea82", + "unicode_decimal": 60034 + }, + { + "icon_id": "1025135", + "name": "退出全屏", + "font_class": "tuichuquanping", + "unicode": "e755", + "unicode_decimal": 59221 + }, + { + "icon_id": "23359065", + "name": "翻译", + "font_class": "fanyi", + "unicode": "e6fb", + "unicode_decimal": 59131 + }, + { + "icon_id": "5387606", + "name": "全屏", + "font_class": "quanping", + "unicode": "eb11", + "unicode_decimal": 60177 + } + ] +} diff --git a/admin/src/styles/index.scss b/admin/src/styles/index.scss new file mode 100644 index 0000000..4fa5fe9 --- /dev/null +++ b/admin/src/styles/index.scss @@ -0,0 +1,8 @@ +@import 'element-plus/dist/index.css'; +@import 'element-plus/theme-chalk/dark/css-vars.css'; +@import 'element-plus/theme-chalk/display.css'; +@import 'tailwind.css'; +@import 'element-plus.scss'; +@import 'icon/iconfont.css'; +@import 'icon/addon-iconfont.css'; // 安装卸载插件时,动态引用插件的图标库文件 +@import 'common.scss'; \ No newline at end of file diff --git a/admin/src/styles/tailwind.css b/admin/src/styles/tailwind.css new file mode 100644 index 0000000..bd6213e --- /dev/null +++ b/admin/src/styles/tailwind.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/admin/src/types/global.d.ts b/admin/src/types/global.d.ts new file mode 100644 index 0000000..255c940 --- /dev/null +++ b/admin/src/types/global.d.ts @@ -0,0 +1,18 @@ +import { SlateDescendant, SlateElement, SlateText } from '@wangeditor/editor' + +declare module '@wangeditor/editor' { + // 扩展 Text + interface SlateText { + text: string + } + + // 扩展 Element + interface SlateElement { + type: string + children: SlateDescendant[] + } +} + +declare interface AnyObject { + [key: string]: any; +} \ No newline at end of file diff --git a/admin/src/utils/common.ts b/admin/src/utils/common.ts new file mode 100644 index 0000000..a2b5739 --- /dev/null +++ b/admin/src/utils/common.ts @@ -0,0 +1,226 @@ +import type { App } from 'vue' +import * as ElementPlusIconsVue from '@element-plus/icons-vue' +import { useCssVar, useTitle } from '@vueuse/core' +import colorFunction from 'css-color-function' +import storage from './storage' + +/** + * 全局注册element-icon + * @param app + */ +export function useElementIcon(app: App): void { + for (const [key, component] of Object.entries(ElementPlusIconsVue)) { + app.component(key, component) + } +} + +/** + * 设置主题色 + * @param color + */ +export function setThemeColor(color: string, mode: string = 'light'): void { + useCssVar('--el-color-primary', null).value = color + + const colors: any = { + dark: { + 'light-3': 'shade(20%)', + 'light-5': 'shade(30%)', + 'light-7': 'shade(50%)', + 'light-8': 'shade(60%)', + 'light-9': 'shade(70%)', + 'dark-2': 'tint(20%)' + }, + light: { + 'dark-2': 'shade(20%)', + 'light-3': 'tint(30%)', + 'light-5': 'tint(50%)', + 'light-7': 'tint(70%)', + 'light-8': 'tint(80%)', + 'light-9': 'tint(90%)' + } + } + + Object.keys(colors[mode]).forEach((key) => { + useCssVar('--el-color-primary' + '-' + key, null).value = colorFunction.convert(`color(${color} ${colors[mode][key]})`) + }) +} + +/** + * 获取当前访问应用类型 + */ +export function getAppType() { + const path = location.pathname.split('/').filter((val) => { return val }) + + if (!path.length) { + return 'admin' + } else { + return path[0] + } +} + +/** + * 设置网站 title + * @param value + */ +export function setWindowTitle(value: string = ''): void { + const title = useTitle() + title.value = value ? value : import.meta.env.VITE_DETAULT_TITLE +} + +/** + * 获取token + * @returns + */ +export function getToken(): null | string { + return storage.get('token') +} + +/** + * 设置token + * @param token + * @returns + */ +export function setToken(token: string): void { + storage.set({ key: 'token', data: token }) +} + +/** + * 移除token + * @returns + */ +export function removeToken(): void { + storage.remove('token') +} + +/** + * 防抖函数 + * @param fn + * @param delay + * @returns + */ +export function debounce(fn: (args?: any) => any, delay: number = 300) { + let timer: null | number = null + return function (...args) { + if (timer != null) { + clearTimeout(timer) + timer = null + } + timer = setTimeout(() => { + fn.call(this, ...args) + }, delay); + } +} + +/** + * 判断是否是url + * @param str + * @returns + */ +export function isUrl(str: string): boolean { + return str.indexOf('http://') != -1 || str.indexOf('https://') != -1 +} + +/** + * 图片输出 + * @param path + * @returns + */ +export function img(path: string): string { + return isUrl(path) ? path : `${import.meta.env.VITE_IMG_DOMAIN || location.origin}/${path}` +} + +/** + * 获取字符串字节长度 + * @param str + * @returns + */ +export function strByteLength(str: string = ''): number { + let len = 0; + for (let i = 0; i < str.length; i++) { + if (str.charCodeAt(i) > 127 || str.charCodeAt(i) == 94) { + len += 2; + } else { + len++; + } + } + return len; +} + +/** + * url 转 route + * @param url + */ +export function urlToRouteRaw(url: string) { + const query = {} + const [path, param] = url.split('?') + + param && param.split('&').forEach((str: string) => { + let [name, value] = str.split('=') + query[name] = value + }) + + return { path, query } +} + +const isArray = (value: any) => { + if (typeof Array.isArray === 'function') { + return Array.isArray(value) + } + return Object.prototype.toString.call(value) === '[object Array]' +} + +/** + * @description 深度克隆 + * @param {object} obj 需要深度克隆的对象 + * @returns {*} 克隆后的对象或者原值(不是对象) + */ +export function deepClone(obj: object) { + // 对常见的“非”值,直接返回原来值 + if ([null, undefined, NaN, false].includes(obj)) return obj + if (typeof obj !== 'object' && typeof obj !== 'function') { + // 原始类型直接返回 + return obj + } + const o = isArray(obj) ? [] : {} + for (const i in obj) { + if (obj.hasOwnProperty(i)) { + o[i] = typeof obj[i] === 'object' ? deepClone(obj[i]) : obj[i] + } + } + return o +} + +/** + * 生成唯一字符 + * @param {Number} len + * @param {Boolean} firstU + * @param {Nubmer} radix + */ +export function guid(len = 10, firstU = true, radix = null) { + const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('') + const uuid = [] + radix = radix || chars.length + + if (len) { + // 如果指定uuid长度,只是取随机的字符,0|x为位运算,能去掉x的小数位,返回整数位 + for (let i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix] + } else { + let r + // rfc4122标准要求返回的uuid中,某些位为固定的字符 + uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-' + uuid[14] = '4' + + for (let i = 0; i < 36; i++) { + if (!uuid[i]) { + r = 0 | Math.random() * 16 + uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r] + } + } + } + // 移除第一个字符,并用u替代,因为第一个字符为数值时,该guuid不能用作id或者class + if (firstU) { + uuid.shift() + return `u${uuid.join('')}` + } + return uuid.join('') +} diff --git a/admin/src/utils/qqmap.ts b/admin/src/utils/qqmap.ts new file mode 100644 index 0000000..9daa73d --- /dev/null +++ b/admin/src/utils/qqmap.ts @@ -0,0 +1,182 @@ +import { jsonp } from 'vue-jsonp' + +const geometry: any = {} + +/** + * 在地图上创建一个圆形 + */ +export const createCircle = (map: any, geometriesData: any) => { + const TMap = (window as any).TMap + const LatLng = TMap.LatLng + + geometriesData.radius = geometriesData.radius ?? 1000 + geometriesData.center = geometriesData.center ?? { lat: map.getCenter().lat, lng: map.getCenter().lng } + + const color = [ + Math.floor(Math.random() * 255), + Math.floor(Math.random() * 255), + Math.floor(Math.random() * 255) + ] + + // 创建图形 + const multiCircle = new TMap.MultiCircle({ + map, + styles: { // 设置圆形样式 + circle: new TMap.CircleStyle({ + color: `rgba(${color.toString()}, .4)`, + showBorder: true, + borderColor: `rgb(${color.toString()})`, + borderWidth: 2 + }) + }, + geometries: [ + { + styleId: 'circle', + center: new LatLng(geometriesData.center.lat, geometriesData.center.lng), + radius: parseInt(geometriesData.radius), + id: geometriesData.key + } + ] + }) + geometry[geometriesData.key] = { graphical: multiCircle } + + // 创建图形编辑器 + const editor = new TMap.tools.GeometryEditor({ + map: map, + overlayList: [ + { + overlay: multiCircle, + id: geometriesData.key, + } + ], + actionMode: TMap.tools.constants.EDITOR_ACTION.INTERACT, + activeOverlayId: geometriesData.key, // 激活图层 + selectable: true // 开启点选功能 + }) + + editor.on('adjust_complete', (data: any) => { + geometriesData.center = { lat: data.center.lat, lng: data.center.lng } + geometriesData.radius = parseInt(data.radius) + }) + + geometry[geometriesData.key] = { graphical: multiCircle, editor } +} + +/** + * 在地图上创建一个多边形 + * @param map + * @param geometriesData + */ +export const createPolygon = (map: any, geometriesData: any) => { + const TMap = (window as any).TMap + const LatLng = TMap.LatLng + + const { lat, lng } = map.getCenter(); + + geometriesData.paths = geometriesData.paths ?? [ + { lat: lat + 0.01, lng: lng + 0.01 }, + { lat: lat - 0.01, lng: lng + 0.01 }, + { lat: lat - 0.01, lng: lng - 0.01 }, + { lat: lat + 0.01, lng: lng - 0.01 } + ] + + const color = [ + Math.floor(Math.random() * 255), + Math.floor(Math.random() * 255), + Math.floor(Math.random() * 255) + ] + + const multiPolygon = new TMap.MultiPolygon({ + map: map, + styles: { + polygon: new TMap.PolygonStyle({ + color: `rgba(${color.toString()}, .4)`, + showBorder: true, + borderColor: `rgb(${color.toString()})`, + borderWidth: 2 + }) + }, + geometries: [ + { + id: geometriesData.key, + styleId: 'polygon', + paths: geometriesData.paths.map((item: any) => { + return new LatLng(item.lat, item.lng) + }) + } + ] + }); + + const editor = new TMap.tools.GeometryEditor({ + map: map, + overlayList: [ + { + overlay: multiPolygon, + id: geometriesData.key, + } + ], + actionMode: TMap.tools.constants.EDITOR_ACTION.INTERACT, + activeOverlayId: geometriesData.key, // 激活图层 + selectable: true, // 开启点选功能 + }) + + editor.on('adjust_complete', (data: any) => { + geometriesData.paths = data.paths.map(item => { + return { lat: item.lat, lng: item.lng} + }) + }) + + geometry[geometriesData.key] = { graphical: multiPolygon, editor } +} + +/** + * 删除图形 + * @param key + */ +export const deleteGeometry = (key: string) => { + geometry[key].graphical.remove(key) + geometry[key].editor.delete() +} + +/** + * 选中图形 + * @param key + */ +export const selectGeometry = (key: string) => { + geometry[key].editor.select([key]) +} + +/** + * 创建点标记 + * @param map + * @returns + */ +export const createMarker = (map: any) => { + const TMap = (window as any).TMap + const LatLng = TMap.LatLng + + return new TMap.MultiMarker({ + map, + geometries: [ + { + id: 'center', + position: map.getCenter(), + } + ] + }); +} + +/** + * 逆地址解析 + * @param params + */ +export const latLngToAddress = (params: any) => { + return jsonp(`https://apis.map.qq.com/ws/geocoder/v1/?key=${params.mapKey}&location=${params.lat},${params.lng}&output=jsonp&callback=callback`) +} + +/** + * 地址解析 + */ +export const addressToLatLng = (params: any) => { + return jsonp(`https://apis.map.qq.com/ws/geocoder/v1/?key=${params.mapKey}&address=${params.address}&output=jsonp&callback=callback`) +} diff --git a/admin/src/utils/request.ts b/admin/src/utils/request.ts new file mode 100644 index 0000000..4955fa5 --- /dev/null +++ b/admin/src/utils/request.ts @@ -0,0 +1,183 @@ +import axios, { HttpStatusCode } from 'axios' +import type { AxiosInstance, InternalAxiosRequestConfig, AxiosResponse, AxiosRequestConfig } from 'axios' +import { getToken, isUrl } from './common'; +import { ElMessage } from 'element-plus' +import { t } from '@/lang' +import useUserStore from '@/stores/modules/user' +import storage from '@/utils/storage' + +interface RequestConfig extends AxiosRequestConfig { + showErrorMessage?: boolean + showSuccessMessage?: boolean +} + +interface InternalRequestConfig extends InternalAxiosRequestConfig { + showErrorMessage?: boolean + showSuccessMessage?: boolean +} + +interface requestResponse extends AxiosResponse { + config: InternalRequestConfig +} + +class Request { + private instance: AxiosInstance; + + constructor() { + this.instance = axios.create({ + baseURL: import.meta.env.VITE_APP_BASE_URL.substr(-1) == '/' ? import.meta.env.VITE_APP_BASE_URL : `${import.meta.env.VITE_APP_BASE_URL}/`, + timeout: 30000, + headers: { + 'Content-Type': 'application/json', + 'lang': storage.get('lang') ?? 'zh-cn' + } + }); + + // 全局请求拦截器 + this.instance.interceptors.request.use( + (config: InternalRequestConfig) => { + // 携带token site-id + if (getToken()) { + config.headers[import.meta.env.VITE_REQUEST_HEADER_TOKEN_KEY] = getToken() + config.headers[import.meta.env.VITE_REQUEST_HEADER_SITEID_KEY] = storage.get('siteId') || 0 + } + return config + }, + (err: any) => { + return Promise.reject(err) + } + ) + + // 全局响应拦截器 + this.instance.interceptors.response.use( + (response: requestResponse) => { + if (response.request.responseType != 'blob') { + const res = response.data + if (res.code != 1) { + this.handleAuthError(res.code) + if (res.code != 401 && response.config.showErrorMessage !== false) ElMessage({ message: res.msg, type: 'error', dangerouslyUseHTMLString: true, duration: 5000 }) + return Promise.reject(new Error(res.msg || 'Error')) + } else { + if (response.config.showSuccessMessage) ElMessage({ message: res.msg, type: 'success' }) + return res + } + } + return response.data + }, + (err: any) => { + this.handleNetworkError(err) + return Promise.reject(err) + } + ) + } + + /** + * 发送get请求 + * @param url + * @param config + * @returns + */ + public get>(url: string, config?: RequestConfig): Promise { + return this.instance.get(url, config) + } + + /** + * 发送get请求 + * @param url + * @param config + * @returns + */ + public post, D = any>(url: string, data?: D, config?: RequestConfig): Promise { + return this.instance.post(url, data, config) + } + + /** + * 发送get请求 + * @param url + * @param config + * @returns + */ + public put, D = any>(url: string, data?: D, config?: RequestConfig): Promise { + return this.instance.put(url, data, config) + } + + /** + * 发送get请求 + * @param url + * @param config + * @returns + */ + public delete>(url: string, config?: RequestConfig): Promise { + return this.instance.delete(url, config) + } + + /** + * 处理网络请求错误 + * @param err + */ + private handleNetworkError(err: any) { + let errMessage = '' + + if (err.response && err.response.status) { + const errStatus = err.response.status + switch (errStatus) { + case 400: + errMessage = t('axios.400') + break + case 401: + errMessage = t('axios.401') + break + case 403: + errMessage = t('axios.403') + break + case 404: + const baseURL = isUrl(err.response.config.baseURL) ? err.response.config.baseURL : `${location.origin}${err.response.config.baseURL}` + errMessage = baseURL + t('axios.baseUrlError') + break + case 405: + errMessage = t('axios.405') + break + case 408: + errMessage = t('axios.408') + break + case 409: + errMessage = t('axios.409') + break + case 500: + errMessage = t('axios.500') + break + case 501: + errMessage = t('axios.501') + break + case 502: + errMessage = t('axios.502') + break + case 503: + errMessage = t('axios.503') + break + case 504: + errMessage = t('axios.504') + break + case 505: + errMessage = t('axios.505') + break + } + } + err.message.includes('timeout') && (errMessage = t('axios.timeout')) + if (err.code == 'ERR_NETWORK') { + const baseURL = isUrl(err.config.baseURL) ? err.config.baseURL : `${location.origin}${err.config.baseURL}` + errMessage = baseURL + t('axios.baseUrlError') + } + errMessage && ElMessage({ dangerouslyUseHTMLString: true, duration: 5000, message: errMessage, type: 'error' }) + } + + private handleAuthError(code: number) { + switch (code) { + case 401: + useUserStore().logout() + break; + } + } +} + +export default new Request() diff --git a/admin/src/utils/storage.ts b/admin/src/utils/storage.ts new file mode 100644 index 0000000..43597e1 --- /dev/null +++ b/admin/src/utils/storage.ts @@ -0,0 +1,62 @@ +import { getAppType } from './common' + +interface setParam { + key: string, + data: any, + success?: () => {}, + fail?: (err: any) => {} +} + +class Storage { + private prefix = '' + + public constructor() { + this.prefix = getAppType() == 'admin' ? 'admin' : 'site' + } + + /** + * 设置缓存 + * @param param + */ + public set(param: setParam) { + try { + window.localStorage.setItem(`${this.prefix}.${param.key}`, JSON.stringify(param.data)) + typeof param.success == 'function' && param.success() + } catch (error) { + typeof param.fail == 'function' && param.fail(error) + } + } + + /** + * 获取缓存 + * @param key + * @returns + */ + public get(key: string) { + try { + const json: any = window.localStorage.getItem(`${this.prefix}.${key}`) + return JSON.parse(json) + } catch (error) { + return null + } + } + + /** + * 移除指定缓存 + * @param key + */ + public remove(key: string | string[]) { + if (typeof key == 'string') window.localStorage.removeItem(`${this.prefix}.${key}`) + else key.forEach(item => { window.localStorage.removeItem(`${this.prefix}.${item}`) }) + } + + /** + * 清理缓存 + */ + public clear() { + window.localStorage.clear() + } +} + +const storage = new Storage() +export default storage diff --git a/admin/src/utils/test.ts b/admin/src/utils/test.ts new file mode 100644 index 0000000..d32c9b7 --- /dev/null +++ b/admin/src/utils/test.ts @@ -0,0 +1,239 @@ +const test = { + /** + * 验证电子邮箱格式 + */ + email(value: string) { + return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value) + }, + /** + * 验证手机格式 + */ + mobile(value: string) { + return /^1[23456789]\d{9}$/.test(value) + }, + /** + * 验证URL格式 + */ + url(value: string) { + return /^((https|http|ftp|rtsp|mms):\/\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,3}.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\/?)$/ + .test(value) + }, + /** + * 验证日期格式 + */ + date(value: string) { + if (!value) return false + // 判断是否数值或者字符串数值(意味着为时间戳),转为数值,否则new Date无法识别字符串时间戳 + if (this.number(value)) value = +value + return !/Invalid|NaN/.test(new Date(value).toString()) + }, + /** + * 验证ISO类型的日期格式 + */ + dateISO(value: string) { + return /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value) + }, + /** + * 验证十进制数字 + */ + number(value: string) { + return /^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(value) + }, + /** + * 验证字符串 + */ + string(value: string) { + return typeof value === 'string' + }, + /** + * 验证整数 + */ + digits(value: string) { + return /^\d+$/.test(value) + }, + /** + * 验证身份证号码 + */ + idCard(value: string) { + return /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test( + value + ) + }, + /** + * 是否车牌号 + */ + carNo(value: string) { + // 新能源车牌 + const xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/ + // 旧车牌 + const creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/ + if (value.length === 7) { + return creg.test(value) + } if (value.length === 8) { + return xreg.test(value) + } + return false + }, + /** + * 金额,只允许2位小数 + */ + amount(value: string) { + // 金额,只允许保留两位小数 + return /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(value) + }, + /** + * 中文 + */ + chinese(value: string) { + const reg = /^[\u4e00-\u9fa5]+$/gi + return reg.test(value) + }, + /** + * 只能输入字母 + */ + letter(value: string) { + return /^[a-zA-Z]*$/.test(value) + }, + /** + * 只能是字母或者数字 + */ + enOrNum(value: string) { + // 英文或者数字 + const reg = /^[0-9a-zA-Z]*$/g + return reg.test(value) + }, + /** + * 验证是否包含某个值 + */ + contains(value: string, param: string) { + return value.indexOf(param) >= 0 + }, + /** + * 验证一个值范围[min, max] + */ + range(value: number, param: number[]) { + return value >= param[0] && value <= param[1] + }, + /** + * 验证一个长度范围[min, max] + */ + rangeLength(value: string, param: number[]) { + return value.length >= param[0] && value.length <= param[1] + }, + /** + * 是否固定电话 + */ + landline(value: string) { + const reg = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/ + return reg.test(value) + }, + /** + * 判断是否为空 + */ + empty(value: any) { + switch (typeof value) { + case 'undefined': + return true + case 'string': + if (value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '').length == 0) return true + break + case 'boolean': + if (!value) return true + break + case 'number': + if (value === 0 || isNaN(value)) return true + break + case 'object': + if (value === null || value.length === 0) return true + for (const i in value) { + return false + } + return true + } + return false + }, + /** + * 是否json字符串 + */ + jsonString(value: object) { + if (typeof value === 'string') { + try { + const obj = JSON.parse(value) + if (typeof obj === 'object' && obj) { + return true + } + return false + } catch (e) { + return false + } + } + return false + }, + /** + * 是否数组 + */ + array(value: []) { + if (typeof Array.isArray === 'function') { + return Array.isArray(value) + } + return Object.prototype.toString.call(value) === '[object Array]' + }, + /** + * 是否对象 + */ + object(value: object) { + return Object.prototype.toString.call(value) === '[object Object]' + }, + /** + * 是否短信验证码 + */ + code(value: string, len = 6) { + return new RegExp(`^\\d{${len}}$`).test(value) + }, + /** + * 是否函数方法 + * @param {Object} value + */ + func(value: string) { + return typeof value === 'function' + }, + /** + * 是否promise对象 + * @param {Object} value + */ + promise(value: Promise) { + return this.object(value) && this.func(value.then) && this.func(value.catch) + }, + /** 是否图片格式 + * @param {Object} value + */ + image(value: string) { + const newValue = value.split('?')[0] + const IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i + return IMAGE_REGEXP.test(newValue) + }, + /** + * 是否视频格式 + * @param {Object} value + */ + video(value: string) { + const VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i + return VIDEO_REGEXP.test(value) + }, + /** + * 是否为正则对象 + * @param {Object} + * @return {Boolean} + */ + regExp(o) { + return o && Object.prototype.toString.call(o) === '[object RegExp]' + }, + /** + * 验证必填 + */ + require(value: string) { + return /^\s*$/.test(value) + } +} + +export default test \ No newline at end of file diff --git a/admin/src/vite-env.d.ts b/admin/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/admin/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/admin/tailwind.config.cjs b/admin/tailwind.config.cjs new file mode 100644 index 0000000..ba1f950 --- /dev/null +++ b/admin/tailwind.config.cjs @@ -0,0 +1,123 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'], + theme: { + extend: { + colors: { + white: 'var(--el-color-white)', + black: '#000', + 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)', + secondary: 'var(--el-text-color-secondary)', + overlay: 'var(--el-bg-color-overlay)' + }, + fontFamily: { + sans: ['PingFang SC', 'Microsoft YaHei', 'Arial', 'Hiragino Sans GB', '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/admin/tsconfig.json b/admin/tsconfig.json new file mode 100644 index 0000000..e328c87 --- /dev/null +++ b/admin/tsconfig.json @@ -0,0 +1,36 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "moduleResolution": "Node", + "strict": true, + "jsx": "preserve", + "resolveJsonModule": true, + "isolatedModules": true, + "esModuleInterop": true, + "lib": [ + "ESNext", + "DOM" + ], + "skipLibCheck": true, + "noEmit": true, + "paths": { + "@/*": [ + "src/*" + ] + } + }, + "include": [ + "src/**/*.ts", + "src/**/*.d.ts", + "src/**/*.tsx", + "src/**/*.vue" + ], + "references": [ + { + "path": "./tsconfig.node.json" + } + ] +} \ No newline at end of file diff --git a/admin/tsconfig.node.json b/admin/tsconfig.node.json new file mode 100644 index 0000000..dcfd137 --- /dev/null +++ b/admin/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true + }, + "include": [ + "vite.config.ts" + ] +} \ No newline at end of file diff --git a/admin/vite.config.ts b/admin/vite.config.ts new file mode 100644 index 0000000..6d2f7e6 --- /dev/null +++ b/admin/vite.config.ts @@ -0,0 +1,29 @@ +import { fileURLToPath, URL } from "node:url" +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import AutoImport from 'unplugin-auto-import/vite' +import Components from 'unplugin-vue-components/vite' +import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' + +// https://vitejs.dev/config/ +export default defineConfig({ + base: '', + server: { + host: '0.0.0.0' + }, + plugins: [ + vue(), + AutoImport({ + resolvers: [ElementPlusResolver()] + }), + Components({ + resolvers: [ElementPlusResolver()] + }) + ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)), + 'assets': fileURLToPath(new URL('./src/assets', import.meta.url)) + } + } +}) diff --git a/docker-compose/README.md b/docker-compose/README.md new file mode 100644 index 0000000..51d4883 --- /dev/null +++ b/docker-compose/README.md @@ -0,0 +1,69 @@ +# docker-compose 快速运行项目 +## 1、安装docker +docker 官网下载 +https://www.docker.com/products/docker-desktop + +或命令安装 +``` +curl -sSL https://get.daocloud.io/docker | sh +``` +## 2、安装docker-compose +https://www.runoob.com/docker/docker-compose.html +## 3、下载NIUCLOUD程序 +建议去下载最新开源代码 https://gitee.com/niucloud-team/niucloud.git +下载完成后,解压niucloud-master.zip +## 4、启动项目 +``` +进入docker-compose目录 cd /docker-compose + +运行命令:docker-compose up -d +``` +进入PHP容器启动队列、定时任务、长连接命令 +``` +进入容器:docker exec -it niucloud_php /bin/bash +进入到项目目录:cd /var/www +队列命令:php think queue:listen --queue +``` +## 5、访问NIUCLOUD 系统 +http://ip:8011/ +## 6、安装NIUCLOUD +### Mysql数据库信息: +``` +Host:192.168.10.11 +Post:3306 +user:root +pwd:123456 + +user2:niucloud +pwd:123456 +``` +### Redis信息: +``` +Host:192.168.10.10 +Post:6379 +db:0 +pwd:123456 +``` +## 7、常见问题 +1. 端口被占用进入docker-compose.yml 里面修改端口 + +2. 如果运行docker-compose up -d 启动失败,请查看docker-compose.yml 修改里面镜像地址或其它配置 + +3. Error response from daemon: Address already in use 报错 + 一般情况下是设置的ip被占用,修改下某个容器下的ipv4_address地址 + +4. MYSQL容器无法启动,没有任何日志 + 注意m1芯片下需要使用mysql镜像daocloud.io/library/mysql:5.7.5-m15;其他任何情况下都 + 使用mysql:5.7的镜像 + +5. 如果启动成功后访问ip:8011报错,请给执行chmod -R 777 runtime + +6. 如果连接数据库失败,则将host地址修改成192.168.10.11 + +7. 如果需要域名访问,请将docker-compose文件夹下的test.niucloud.com.conf文件拷贝到服务器的nginx配置文件夹下,将域名修改成自己的域名,如果需要https访问,请按照文件内容提示配置 + +8. 如果修改了docker-compose.yml中的内容,请使用docker-compose down进行容器清理,再次执行docker-compose up -d运行 + +9. 安装时候,填写数据库信息,请填写192.168.10.11(如有修改,请按照修改后的填写,建议勿动!),创建出的两个默认用户信息在第6条mysql数据库信息处 + +10. 如遇niucloud_mysql容器无法启动,请检查docker-compose/mysql/log文件夹的权限是否为777,如果不是,请使用chmod 777 /docker-compose/mysql/log diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml new file mode 100644 index 0000000..bad6254 --- /dev/null +++ b/docker-compose/docker-compose.yml @@ -0,0 +1,107 @@ +version: "3.3" +services: + # mysql 容器 + mysql: + container_name: niucloud_mysql #指定容器名 + #image: daocloud.io/library/mysql:5.7.5-m15 #M1芯片可以采用这个镜像 + image: mysql:5.7 #一般电脑可以用这个镜像 + restart: always + ports: + - 3307:3306 + # 环境变量 + environment: + TZ: Asia/Shanghai + MYSQL_ROOT_PASSWORD: '123456' + MYSQL_USER: 'niucloud' + MYSQL_PASSWORD: '123456' + MYSQL_DATABASE: 'niucloud' + privileged: true + command: + --character-set-server=utf8mb4 + --collation-server=utf8mb4_general_ci + --explicit_defaults_for_timestamp=true + --lower_case_table_names=1 + --max_allowed_packet=128M + --default-authentication-plugin=mysql_native_password + --sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" + working_dir: /var/lib/mysql + volumes: + - ./mysql/my.cnf:/etc/mysql/my.cnf + - ./mysql/data:/var/lib/mysql #挂载数据目录到本地 + - ./mysql/log:/var/log/mysql + networks: + app_net: + # 固定子网ip,网段必须在子网络192.168.*.* + ipv4_address: 192.168.10.11 + # redis 容器 + redis: + container_name: niucloud_redis + # image: 'redis:alpine' + # image: daocloud.io/library/redis:6.0.5-alpine + image: redis:6.0 + restart: always + ports: + - "6380:6379" + command: redis-server /usr/local/etc/redis/redis.conf + volumes: + - ./redis/data:/data #挂载数据目录到本地 + - ./redis/redis.conf:/usr/local/etc/redis/redis.conf + networks: + app_net: + ipv4_address: 192.168.10.10 + # php 容器 + phpfpm: + container_name: niucloud_php #指定容器名 + # image: phpfpm-image #指定镜像名 + image: niucloud_php #指定镜像名 + build: + context: ./php #dockerfile文件路径 + dockerfile: Dockerfile #制定dockerfile文件名称 + environment: + TZ: Asia/Shanghai + ports: + - 9000:9000 + tmpfs: /var/temp #上传临时文件夹 + working_dir: /var/www + volumes: + - ../niucloud:/var/www #程序运行目录 + - ../niucloud/runtime:/var/www/temp #程序缓存目录 + - ./php/php-ini-overrides.ini:/etc/php/8.0/fpm/conf.d/99-overrides.ini + networks: + app_net: + ipv4_address: 192.168.10.90 +# command: /bin/bash -c "php -v" + # nginx 容器 + nginx: + container_name: niucloud_nginx + image: 'nginx:1.24' + #image: 'nginx:alpine' + # image: daocloud.io/library/nginx:1.19.1-alpine + restart: always + ports: + - 8011:80 + # - 443:443 + # 依赖关系 先跑php + depends_on: + - phpfpm + environment: + TZ: Asia/Shanghai + working_dir: /var/www +# volumes_from: +# - phpfpm #继承phpfpm挂载目录 + volumes: + - ./nginx/vhost.conf:/etc/nginx/conf.d/default.conf + - ./nginx/log:/etc/nginx/log + - ../niucloud:/var/www #程序运行目录 + - ../niucloud/runtime:/var/www/temp #程序缓存目录 + - ./php/php-ini-overrides.ini:/etc/php/8.0/fpm/conf.d/99-overrides.ini + networks: + app_net: + ipv4_address: 192.168.10.80 +networks: #网络配置 + app_net: #网络名称 + driver: bridge + ipam: #网络配置 + driver: default + config: + - subnet: 192.168.10.0/24 #IP区间 diff --git a/docker-compose/mysql/my.cnf b/docker-compose/mysql/my.cnf new file mode 100644 index 0000000..5699d79 --- /dev/null +++ b/docker-compose/mysql/my.cnf @@ -0,0 +1,64 @@ +# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +# +# The MySQL Community Server configuration file. +# +# For explanations see +# http://dev.mysql.com/doc/mysql/en/server-system-variables.html + +[client] +port = 3306 +socket = /var/run/mysqld/mysqld.sock + +[mysqld_safe] +pid-file = /var/run/mysqld/mysqld.pid +socket = /var/run/mysqld/mysqld.sock +nice = 0 + +[mysqld] +user = mysql +pid-file = /var/run/mysqld/mysqld.pid +socket = /var/run/mysqld/mysqld.sock +port = 3306 +basedir = /usr +datadir = /var/lib/mysql +tmpdir = /tmp +lc-messages-dir = /usr/share/mysql +explicit_defaults_for_timestamp +#skip-grant-tables +lower_case_table_names = 1 +character-set-server = utf8mb4 +collation-server = utf8mb4_unicode_ci +sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION + + + +# Instead of skip-networking the default is now to listen only on +# localhost which is more compatible and is not less secure. +#bind-address = 127.0.0.1 + +log-error = /var/log/mysql/error.log + +# Recommended in standard MySQL setup +sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES + +# Disabling symbolic-links is recommended to prevent assorted security risks +symbolic-links=0 + +# * IMPORTANT: Additional settings that can override those from this file! +# The files must end with '.cnf', otherwise they'll be ignored. +# +!includedir /etc/mysql/conf.d/ diff --git a/docker-compose/nginx/vhost.conf b/docker-compose/nginx/vhost.conf new file mode 100644 index 0000000..a1ca77d --- /dev/null +++ b/docker-compose/nginx/vhost.conf @@ -0,0 +1,26 @@ +server { + listen 80; + index index.php index.html; + server_name test.102sr.cn; + root /var/www/public; + + location / { + + # 检查URL是否包含 install.php + if ($request_uri ~* /install.php) { + rewrite ^/install.php(.*)$ /install.php?s=$1 last; + } + if (!-e $request_filename){ + rewrite ^(.*)$ /index.php?s=$1 last; break; + } + } + + location ~ \.php$ { + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass phpfpm:9000; + fastcgi_index index.php; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param PATH_INFO $fastcgi_path_info; + } +} diff --git a/docker-compose/php/Dockerfile b/docker-compose/php/Dockerfile new file mode 100644 index 0000000..d343818 --- /dev/null +++ b/docker-compose/php/Dockerfile @@ -0,0 +1,14 @@ +FROM phpdockerio/php80-fpm AS niucloud_php +WORKDIR "/var/www" + +# 更新包信息并安装扩展依赖 +RUN apt-get update && \ + apt-get -y --no-install-recommends install apt-utils && \ + apt-get -y --no-install-recommends install php8.0-bcmath php8.0-redis php8.0-mysqli php8.0-gd && \ + apt-get clean && \ + apt-get autoremove && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* + +# 设置 open_basedir +RUN echo "open_basedir = /tmp:/var" > /etc/php/8.0/fpm/conf.d/open_basedir.ini + diff --git a/docker-compose/php/php-ini-overrides.ini b/docker-compose/php/php-ini-overrides.ini new file mode 100644 index 0000000..ee5e24f --- /dev/null +++ b/docker-compose/php/php-ini-overrides.ini @@ -0,0 +1,5 @@ +upload_max_filesize = 100M +post_max_size = 108M +open_basedir = "/var:/var/tmp/:/tmp/" +disable_functions = system, exec, shell_exec, passthru, proc_get_status, checkdnsrr, getmxrr, getservbyname, getservbyport, syslog, popen, show_source, highlight_file, dl, socket_listen, socket_create, socket_bind, socket_accept, socket_connect, stream_socket_server, stream_socket_accept, stream_socket_client, ftp_connect, ftp_login, ftp_pasv, ftp_get, sys_getloadavg, disk_total_space, disk_free_space, posix_ctermid, posix_get_last_error, posix_getcwd, posix_getegid, posix_geteuid, posix_getgid, posix_getgrgid, posix_getgrnam, posix_getgroups, posix_getlogin, posix_getpgid, posix_getpgrp, posix_getpid, posix_getppid, posix_getpwnam, posix_getpwuid, posix_getrlimit, posix_getsid, posix_getuid, posix_isatty, posix_kill, posix_mkfifo, posix_setegid, posix_seteuid, posix_setgid, posix_setpgid, posix_setsid, posix_setuid, posix_strerror, posix_times, posix_ttyname, posix_uname +upload_tmp_dir = /var/www/temp diff --git a/docker-compose/redis/redis.conf b/docker-compose/redis/redis.conf new file mode 100644 index 0000000..30e5e98 --- /dev/null +++ b/docker-compose/redis/redis.conf @@ -0,0 +1,428 @@ +# Redis配置文件样例 + +# Note on units: when memory size is needed, it is possible to specifiy +# it in the usual form of 1k 5GB 4M and so forth: +# +# 1k => 1000 bytes +# 1kb => 1024 bytes +# 1m => 1000000 bytes +# 1mb => 1024*1024 bytes +# 1g => 1000000000 bytes +# 1gb => 1024*1024*1024 bytes +# +# units are case insensitive so 1GB 1Gb 1gB are all the same. + +# Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 +# 启用守护进程后,Redis会把pid写到一个pidfile中,在/var/run/redis.pid +daemonize no + +# 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定 +pidfile /var/run/redis.pid + +# 指定Redis监听端口,默认端口为6379 +# 如果指定0端口,表示Redis不监听TCP连接 +port 6379 + +# 绑定的主机地址 +# 你可以绑定单一接口,如果没有绑定,所有接口都会监听到来的连接 +# bind 127.0.0.1 +protected-mode no + +# Specify the path for the unix socket that will be used to listen for +# incoming connections. There is no default, so Redis will not listen +# on a unix socket when not specified. +# +# unixsocket /tmp/redis.sock +# unixsocketperm 755 + +# 当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能 +timeout 0 + +# 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose +# debug (很多信息, 对开发/测试比较有用) +# verbose (many rarely useful info, but not a mess like the debug level) +# notice (moderately verbose, what you want in production probably) +# warning (only very important / critical messages are logged) +loglevel verbose + +# 日志记录方式,默认为标准输出,如果配置为redis为守护进程方式运行,而这里又配置为标准输出,则日志将会发送给/dev/null +# logfile /logs/redis.log + +# To enable logging to the system logger, just set 'syslog-enabled' to yes, +# and optionally update the other syslog parameters to suit your needs. +# syslog-enabled no + +# Specify the syslog identity. +# syslog-ident redis + +# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7. +# syslog-facility local0 + +# 设置数据库的数量,默认数据库为0,可以使用select 命令在连接上指定数据库id +# dbid是从0到‘databases’-1的数目 +databases 16 + +################################ SNAPSHOTTING ################################# +# 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合 +# Save the DB on disk: +# +# save +# +# Will save the DB if both the given number of seconds and the given +# number of write operations against the DB occurred. +# +# 满足以下条件将会同步数据: +# 900秒(15分钟)内有1个更改 +# 300秒(5分钟)内有10个更改 +# 60秒内有10000个更改 +# Note: 可以把所有“save”行注释掉,这样就取消同步操作了 + +save 900 1 +save 300 10 +save 60 10000 + +# 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大 +rdbcompression yes + +# 指定本地数据库文件名,默认值为dump.rdb +dbfilename dump.rdb + +# 工作目录. +# 指定本地数据库存放目录,文件名由上一个dbfilename配置项指定 +# +# Also the Append Only File will be created inside this directory. +# +# 注意,这里只能指定一个目录,不能指定文件名 +dir ./ + +################################# REPLICATION ################################# + +# 主从复制。使用slaveof从 Redis服务器复制一个Redis实例。注意,该配置仅限于当前slave有效 +# so for example it is possible to configure the slave to save the DB with a +# different interval, or to listen to another port, and so on. +# 设置当本机为slav服务时,设置master服务的ip地址及端口,在Redis启动时,它会自动从master进行数据同步 +# slaveof + + +# 当master服务设置了密码保护时,slav服务连接master的密码 +# 下文的“requirepass”配置项可以指定密码 +# masterauth + +# When a slave lost the connection with the master, or when the replication +# is still in progress, the slave can act in two different ways: +# +# 1) if slave-serve-stale-data is set to 'yes' (the default) the slave will +# still reply to client requests, possibly with out of data data, or the +# data set may just be empty if this is the first synchronization. +# +# 2) if slave-serve-stale data is set to 'no' the slave will reply with +# an error "SYNC with master in progress" to all the kind of commands +# but to INFO and SLAVEOF. +# +slave-serve-stale-data yes + +# Slaves send PINGs to server in a predefined interval. It's possible to change +# this interval with the repl_ping_slave_period option. The default value is 10 +# seconds. +# +# repl-ping-slave-period 10 + +# The following option sets a timeout for both Bulk transfer I/O timeout and +# master data or ping response timeout. The default value is 60 seconds. +# +# It is important to make sure that this value is greater than the value +# specified for repl-ping-slave-period otherwise a timeout will be detected +# every time there is low traffic between the master and the slave. +# +# repl-timeout 60 + +################################## SECURITY ################################### + +# Warning: since Redis is pretty fast an outside user can try up to +# 150k passwords per second against a good box. This means that you should +# use a very strong password otherwise it will be very easy to break. +# 设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过auth 命令提供密码,默认关闭 +requirepass 123456 +# Command renaming. +# +# It is possilbe to change the name of dangerous commands in a shared +# environment. For instance the CONFIG command may be renamed into something +# of hard to guess so that it will be still available for internal-use +# tools but not available for general clients. +# +# Example: +# +# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 +# +# It is also possilbe to completely kill a command renaming it into +# an empty string: +# +# rename-command CONFIG "" + +################################### LIMITS #################################### + +# 设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数, +# 如果设置maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max Number of clients reached错误信息 +# maxclients 128 + +# Don't use more memory than the specified amount of bytes. +# When the memory limit is reached Redis will try to remove keys with an +# EXPIRE set. It will try to start freeing keys that are going to expire +# in little time and preserve keys with a longer time to live. +# Redis will also try to remove objects from free lists if possible. +# +# If all this fails, Redis will start to reply with errors to commands +# that will use more memory, like SET, LPUSH, and so on, and will continue +# to reply to most read-only commands like GET. +# +# WARNING: maxmemory can be a good idea mainly if you want to use Redis as a +# 'state' server or cache, not as a real DB. When Redis is used as a real +# database the memory usage will grow over the weeks, it will be obvious if +# it is going to use too much memory in the long run, and you'll have the time +# to upgrade. With maxmemory after the limit is reached you'll start to get +# errors for write operations, and this may even lead to DB inconsistency. +# 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key, +# 当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。 +# Redis新的vm机制,会把Key存放内存,Value会存放在swap区 +# maxmemory + +# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory +# is reached? You can select among five behavior: +# +# volatile-lru -> remove the key with an expire set using an LRU algorithm +# allkeys-lru -> remove any key accordingly to the LRU algorithm +# volatile-random -> remove a random key with an expire set +# allkeys->random -> remove a random key, any key +# volatile-ttl -> remove the key with the nearest expire time (minor TTL) +# noeviction -> don't expire at all, just return an error on write operations +# +# Note: with all the kind of policies, Redis will return an error on write +# operations, when there are not suitable keys for eviction. +# +# At the date of writing this commands are: set setnx setex append +# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd +# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby +# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby +# getset mset msetnx exec sort +# +# The default is: +# +# maxmemory-policy volatile-lru + +# LRU and minimal TTL algorithms are not precise algorithms but approximated +# algorithms (in order to save memory), so you can select as well the sample +# size to check. For instance for default Redis will check three keys and +# pick the one that was used less recently, you can change the sample size +# using the following configuration directive. +# +# maxmemory-samples 3 + +############################## APPEND ONLY MODE ############################### + +# +# Note that you can have both the async dumps and the append only file if you +# like (you have to comment the "save" statements above to disable the dumps). +# Still if append only mode is enabled Redis will load the data from the +# log file at startup ignoring the dump.rdb file. +# 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。 +# 因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no +# IMPORTANT: Check the BGREWRITEAOF to check how to rewrite the append +# log file in background when it gets too big. + +appendonly yes + +# 指定更新日志文件名,默认为appendonly.aof +# appendfilename appendonly.aof + +# The fsync() call tells the Operating System to actually write data on disk +# instead to wait for more data in the output buffer. Some OS will really flush +# data on disk, some other OS will just try to do it ASAP. + +# 指定更新日志条件,共有3个可选值: +# no:表示等操作系统进行数据缓存同步到磁盘(快) +# always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全) +# everysec:表示每秒同步一次(折衷,默认值) + +appendfsync everysec +# appendfsync no + +# When the AOF fsync policy is set to always or everysec, and a background +# saving process (a background save or AOF log background rewriting) is +# performing a lot of I/O against the disk, in some Linux configurations +# Redis may block too long on the fsync() call. Note that there is no fix for +# this currently, as even performing fsync in a different thread will block +# our synchronous write(2) call. +# +# In order to mitigate this problem it's possible to use the following option +# that will prevent fsync() from being called in the main process while a +# BGSAVE or BGREWRITEAOF is in progress. +# +# This means that while another child is saving the durability of Redis is +# the same as "appendfsync none", that in pratical terms means that it is +# possible to lost up to 30 seconds of log in the worst scenario (with the +# default Linux settings). +# +# If you have latency problems turn this to "yes". Otherwise leave it as +# "no" that is the safest pick from the point of view of durability. +no-appendfsync-on-rewrite no + +# Automatic rewrite of the append only file. +# Redis is able to automatically rewrite the log file implicitly calling +# BGREWRITEAOF when the AOF log size will growth by the specified percentage. +# +# This is how it works: Redis remembers the size of the AOF file after the +# latest rewrite (or if no rewrite happened since the restart, the size of +# the AOF at startup is used). +# +# This base size is compared to the current size. If the current size is +# bigger than the specified percentage, the rewrite is triggered. Also +# you need to specify a minimal size for the AOF file to be rewritten, this +# is useful to avoid rewriting the AOF file even if the percentage increase +# is reached but it is still pretty small. +# +# Specify a precentage of zero in order to disable the automatic AOF +# rewrite feature. + +auto-aof-rewrite-percentage 100 +auto-aof-rewrite-min-size 64mb + +################################## SLOW LOG ################################### + +# The Redis Slow Log is a system to log queries that exceeded a specified +# execution time. The execution time does not include the I/O operations +# like talking with the client, sending the reply and so forth, +# but just the time needed to actually execute the command (this is the only +# stage of command execution where the thread is blocked and can not serve +# other requests in the meantime). +# +# You can configure the slow log with two parameters: one tells Redis +# what is the execution time, in microseconds, to exceed in order for the +# command to get logged, and the other parameter is the length of the +# slow log. When a new command is logged the oldest one is removed from the +# queue of logged commands. + +# The following time is expressed in microseconds, so 1000000 is equivalent +# to one second. Note that a negative number disables the slow log, while +# a value of zero forces the logging of every command. +slowlog-log-slower-than 10000 + +# There is no limit to this length. Just be aware that it will consume memory. +# You can reclaim memory used by the slow log with SLOWLOG RESET. +slowlog-max-len 1024 + +################################ VIRTUAL MEMORY ############################### + +### WARNING! Virtual Memory is deprecated in Redis 2.4 +### The use of Virtual Memory is strongly discouraged. + +### WARNING! Virtual Memory is deprecated in Redis 2.4 +### The use of Virtual Memory is strongly discouraged. + +# Virtual Memory allows Redis to work with datasets bigger than the actual +# amount of RAM needed to hold the whole dataset in memory. +# In order to do so very used keys are taken in memory while the other keys +# are swapped into a swap file, similarly to what operating systems do +# with memory pages. +# 指定是否启用虚拟内存机制,默认值为no, +# VM机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上,访问多的页面由磁盘自动换出到内存中 +# 把vm-enabled设置为yes,根据需要设置好接下来的三个VM参数,就可以启动VM了 +# vm-enabled no +# vm-enabled yes + +# This is the path of the Redis swap file. As you can guess, swap files +# can't be shared by different Redis instances, so make sure to use a swap +# file for every redis process you are running. Redis will complain if the +# swap file is already in use. +# +# Redis交换文件最好的存储是SSD(固态硬盘) +# 虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享 +# *** WARNING *** if you are using a shared hosting the default of putting +# the swap file under /tmp is not secure. Create a dir with access granted +# only to Redis user and configure Redis to create the swap file there. +# vm-swap-file /tmp/redis.swap + +# With vm-max-memory 0 the system will swap everything it can. Not a good +# default, just specify the max amount of RAM you can in bytes, but it's +# better to leave some margin. For instance specify an amount of RAM +# that's more or less between 60 and 80% of your free RAM. +# 将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多少,所有索引数据都是内存存储的(Redis的索引数据就是keys) +# 也就是说当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0 +# vm-max-memory 0 + +# Redis swap文件分成了很多的page,一个对象可以保存在多个page上面,但一个page上不能被多个对象共享,vm-page-size是要根据存储的数据大小来设定的。 +# 建议如果存储很多小对象,page大小最后设置为32或64bytes;如果存储很大的对象,则可以使用更大的page,如果不确定,就使用默认值 +# vm-page-size 32 + +# 设置swap文件中的page数量由于页表(一种表示页面空闲或使用的bitmap)是存放在内存中的,在磁盘上每8个pages将消耗1byte的内存 +# swap空间总容量为 vm-page-size * vm-pages +# +# With the default of 32-bytes memory pages and 134217728 pages Redis will +# use a 4 GB swap file, that will use 16 MB of RAM for the page table. +# +# It's better to use the smallest acceptable value for your application, +# but the default is large in order to work in most conditions. +# vm-pages 134217728 + +# Max number of VM I/O threads running at the same time. +# This threads are used to read/write data from/to swap file, since they +# also encode and decode objects from disk to memory or the reverse, a bigger +# number of threads can help with big objects even if they can't help with +# I/O itself as the physical device may not be able to couple with many +# reads/writes operations at the same time. +# 设置访问swap文件的I/O线程数,最后不要超过机器的核数,如果设置为0,那么所有对swap文件的操作都是串行的,可能会造成比较长时间的延迟,默认值为4 +# vm-max-threads 4 + +############################### ADVANCED CONFIG ############################### + +# Hashes are encoded in a special way (much more memory efficient) when they +# have at max a given numer of elements, and the biggest element does not +# exceed a given threshold. You can configure this limits with the following +# configuration directives. +# 指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法 +# hash-max-zipmap-entries 512 +# hash-max-zipmap-value 64 + +# Similarly to hashes, small lists are also encoded in a special way in order +# to save a lot of space. The special representation is only used when +# you are under the following limits: +list-max-ziplist-entries 512 +list-max-ziplist-value 64 + +# Sets have a special encoding in just one case: when a set is composed +# of just strings that happens to be integers in radix 10 in the range +# of 64 bit signed integers. +# The following configuration setting sets the limit in the size of the +# set in order to use this special memory saving encoding. +set-max-intset-entries 512 + +# Similarly to hashes and lists, sorted sets are also specially encoded in +# order to save a lot of space. This encoding is only used when the length and +# elements of a sorted set are below the following limits: +zset-max-ziplist-entries 128 +zset-max-ziplist-value 64 + +# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in +# order to help rehashing the main Redis hash table (the one mapping top-level +# keys to values). The hash table implementation redis uses (see dict.c) +# performs a lazy rehashing: the more operation you run into an hash table +# that is rhashing, the more rehashing "steps" are performed, so if the +# server is idle the rehashing is never complete and some more memory is used +# by the hash table. +# +# The default is to use this millisecond 10 times every second in order to +# active rehashing the main dictionaries, freeing memory when possible. +# +# If unsure: +# use "activerehashing no" if you have hard latency requirements and it is +# not a good thing in your environment that Redis can reply form time to time +# to queries with 2 milliseconds delay. +# 指定是否激活重置哈希,默认为开启 +activerehashing yes + +################################## INCLUDES ################################### + +# 指定包含其他的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各实例又拥有自己的特定配置文件 +# include /path/to/local.conf +# include /path/to/other.conf + + diff --git a/docker-compose/test.niucloud.com.conf b/docker-compose/test.niucloud.com.conf new file mode 100644 index 0000000..6f4adb4 --- /dev/null +++ b/docker-compose/test.niucloud.com.conf @@ -0,0 +1,37 @@ +server { + listen 80; + server_name test.niucloud.cn; + location / { + #proxy_redirect off; + proxy_pass http://127.0.0.1:8011/; # 转发 + proxy_set_header Host $host; + proxy_set_header X-Real_IP $remote_addr; + proxy_set_header X-Forwarded-For $remote_addr:$remote_port; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + } +} + + +# listen 443 ssl; #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。 +# server_name test.niucloud.com; #将test.niucloud.com修改为您证书绑定的域名,例如:www.niucloud.com。 +# index index.php index.html index.htm; +# ssl_certificate test.niucloud.com.pem; #将domain name.pem替换成您证书的全路径。 +# ssl_certificate_key test.niucloud.com.key; #将domain name.key替换成您证书的密钥文件全路径。 +# ssl_session_timeout 5m; +# ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #使用此加密套件。 +# ssl_protocols TLSv1.2; #使用该协议进行配置。 +# ssl_prefer_server_ciphers on; +# access_log /path/test.niucloud.com.443.access.log; # 将domain替换成您配置的域名,将path替换成您的实际路径 +# location / { +# proxy_redirect off; +# proxy_pass http://127.0.0.1:8011/; # 转发 +# proxy_set_header Host $host; +# proxy_set_header X-Real_IP $remote_addr; +# proxy_set_header X-Forwarded-For $remote_addr:$remote_port; +# proxy_http_version 1.1; +# proxy_set_header Upgrade $http_upgrade; +# proxy_set_header Connection 'upgrade'; +# } +#}