From 80f4390686bd93abb6696a80022244f3bdb225bf Mon Sep 17 00:00:00 2001 From: MoYi <1545929126@qq.com> Date: Sun, 19 Nov 2023 16:14:38 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84,=E6=89=8B=E6=9C=BAPC?= =?UTF-8?q?=E9=80=82=E9=85=8D,=E5=AF=B9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + auto-imports.d.ts | 9 + components.d.ts | 9 +- package-lock.json | 785 +++++++++++++++++++++++++++++++++- package.json | 12 +- src/App.vue | 26 +- src/api/CryptoUtils.ts | 10 + src/api/Requester.ts | 45 ++ src/assets/UserAvatar.jpg | Bin 0 -> 29319 bytes src/components/HelloWorld.vue | 38 -- src/entities/Auth.ts | 3 + src/entities/User.ts | 7 + src/main.ts | 15 +- src/style.css | 81 +--- src/views/AppMobile.vue | 145 +++++++ src/views/AppPC.vue | 11 + vite.config.ts | 17 +- 17 files changed, 1081 insertions(+), 134 deletions(-) create mode 100644 auto-imports.d.ts create mode 100644 src/api/CryptoUtils.ts create mode 100644 src/api/Requester.ts create mode 100644 src/assets/UserAvatar.jpg delete mode 100644 src/components/HelloWorld.vue create mode 100644 src/entities/Auth.ts create mode 100644 src/entities/User.ts create mode 100644 src/views/AppMobile.vue create mode 100644 src/views/AppPC.vue diff --git a/.gitignore b/.gitignore index a547bf3..3b8c784 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,5 @@ dist-ssr *.njsproj *.sln *.sw? + +/keys diff --git a/auto-imports.d.ts b/auto-imports.d.ts new file mode 100644 index 0000000..78813d8 --- /dev/null +++ b/auto-imports.d.ts @@ -0,0 +1,9 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// noinspection JSUnusedGlobalSymbols +// Generated by unplugin-auto-import +export {} +declare global { + const ElMessage: typeof import('element-plus/es')['ElMessage'] +} diff --git a/components.d.ts b/components.d.ts index bedc138..a415978 100644 --- a/components.d.ts +++ b/components.d.ts @@ -7,8 +7,13 @@ export {} declare module 'vue' { export interface GlobalComponents { - HelloWorld: typeof import('./src/components/HelloWorld.vue')['default'] - VanCell: typeof import('vant/es')['Cell'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + VanButton: typeof import('vant/es')['Button'] + VanCellGroup: typeof import('vant/es')['CellGroup'] + VanDivider: typeof import('vant/es')['Divider'] + VanField: typeof import('vant/es')['Field'] + VanImage: typeof import('vant/es')['Image'] VanPopup: typeof import('vant/es')['Popup'] } } diff --git a/package-lock.json b/package-lock.json index 792ef82..1331cbe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,15 +8,25 @@ "name": "file", "version": "0.0.0", "dependencies": { - "vue": "^3.3.4" + "@types/crypto-js": "^4.2.1", + "axios": "^1.6.2", + "crypto-js": "^4.2.0", + "element-plus": "^2.4.2", + "vant": "^4.7.3", + "vue": "^3.3.4", + "vue-router": "^4.2.5" }, "devDependencies": { + "@types/node": "^20.9.1", "@typescript-eslint/eslint-plugin": "^6.11.0", "@typescript-eslint/parser": "^6.11.0", + "@vant/auto-import-resolver": "^1.0.2", "@vitejs/plugin-vue": "^4.2.3", "eslint": "^8.54.0", "eslint-plugin-vue": "^9.18.1", "typescript": "^5.0.2", + "unplugin-auto-import": "^0.16.7", + "unplugin-vue-components": "^0.25.2", "vite": "^4.4.5", "vue-tsc": "^1.8.5" } @@ -30,6 +40,12 @@ "node": ">=0.10.0" } }, + "node_modules/@antfu/utils": { + "version": "0.7.6", + "resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.6.tgz", + "integrity": "sha512-pvFiLP2BeOKA/ZOS6jxx4XhKzdVLHDhGlFEaZ2flWWYf2xOqVniqpk38I04DFRyz+L0ASggl7SkItTc+ZLju4w==", + "dev": true + }, "node_modules/@babel/parser": { "version": "7.23.3", "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.23.3.tgz", @@ -41,6 +57,22 @@ "node": ">=6.0.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.1.0", + "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz", + "integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==", + "peerDependencies": { + "vue": "^3.2.0" + } + }, "node_modules/@esbuild/android-arm": { "version": "0.18.20", "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz", @@ -446,6 +478,28 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.5.0.tgz", + "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", + "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/@humanwhocodes/config-array": { "version": "0.11.13", "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", @@ -515,18 +569,84 @@ "node": ">= 8" } }, + "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.0.5", + "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.0.5.tgz", + "integrity": "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==", + "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/@types/crypto-js": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/@types/crypto-js/-/crypto-js-4.2.1.tgz", + "integrity": "sha512-FSPGd9+OcSok3RsM0UZ/9fcvMOXJ1ENE/ZbLfOPlBWj7BgXtEAM8VYfTtT760GiLbQIMoVozwVuisjvsVwqYWw==" + }, + "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/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/lodash": { + "version": "4.14.201", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.201.tgz", + "integrity": "sha512-y9euML0cim1JrykNxADLfaG0FgD1g/yTHwUs/Jg9ZIU7WKj2/4IW9Lbb1WZbvck78W/lfGXFfe+u2EGfIJXdLQ==" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.11", + "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.11.tgz", + "integrity": "sha512-eCw8FYAWHt2DDl77s+AMLLzPn310LKohruumpucZI4oOFJkIgnlaJcy23OKMJxx4r9PeTF13Gv6w+jqjWQaYUg==", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/node": { + "version": "20.9.2", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.9.2.tgz", + "integrity": "sha512-WHZXKFCEyIUJzAwh3NyyTHYSR35SevJ6mZ1nWwJafKtiQbqRTIKSRcw3Ma3acqgsent3RRDqeVwpHntMk+9irg==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@types/semver": { "version": "7.5.5", "resolved": "https://registry.npmmirror.com/@types/semver/-/semver-7.5.5.tgz", "integrity": "sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==", "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": "6.11.0", "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.11.0.tgz", @@ -690,6 +810,25 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true }, + "node_modules/@vant/auto-import-resolver": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@vant/auto-import-resolver/-/auto-import-resolver-1.0.2.tgz", + "integrity": "sha512-5SYC1izl36KID+3F4pqFtYD8VFK6m1pdulft99sjSkUN4GBX9OslRnsJA0g7xS+0YrytjDuxxBk04YLYIxaYMg==", + "dev": true + }, + "node_modules/@vant/popperjs": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz", + "integrity": "sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw==" + }, + "node_modules/@vant/use": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/@vant/use/-/use-1.6.0.tgz", + "integrity": "sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==", + "peerDependencies": { + "vue": "^3.0.0" + } + }, "node_modules/@vitejs/plugin-vue": { "version": "4.5.0", "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.5.0.tgz", @@ -777,6 +916,11 @@ "@vue/shared": "3.3.8" } }, + "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/language-core": { "version": "1.8.22", "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-1.8.22.tgz", @@ -878,6 +1022,74 @@ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.8.tgz", "integrity": "sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==" }, + "node_modules/@vueuse/core": { + "version": "9.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz", + "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", + "dependencies": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.13.0", + "@vueuse/shared": "9.13.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.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.13.0.tgz", + "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==" + }, + "node_modules/@vueuse/shared": { + "version": "9.13.0", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.13.0.tgz", + "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "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/acorn": { "version": "8.11.2", "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.11.2.tgz", @@ -932,6 +1144,19 @@ "node": ">=8" } }, + "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==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", @@ -947,12 +1172,41 @@ "node": ">=8" } }, + "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/axios": { + "version": "1.6.2", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "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/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", @@ -1003,6 +1257,39 @@ "node": ">=10" } }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", @@ -1021,6 +1308,17 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "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/computeds": { "version": "0.0.1", "resolved": "https://registry.npmmirror.com/computeds/-/computeds-0.0.1.tgz", @@ -1047,6 +1345,11 @@ "node": ">= 8" } }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", @@ -1064,6 +1367,11 @@ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, + "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", @@ -1093,6 +1401,14 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "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/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", @@ -1117,6 +1433,31 @@ "node": ">=6.0.0" } }, + "node_modules/element-plus": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.4.2.tgz", + "integrity": "sha512-E/HwXX7JF1LPvQSjs0fZ8WblIoc0quoXsRXQZiL7QDq7xJdNGSUaXtdk7xiEv7axPmLfEFtxE5du9fFspDrmJw==", + "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/esbuild": { "version": "0.18.20", "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.18.20.tgz", @@ -1154,6 +1495,11 @@ "@esbuild/win32-x64": "0.18.20" } }, + "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", @@ -1431,6 +1777,32 @@ "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/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/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1451,6 +1823,12 @@ "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/glob": { "version": "7.2.3", "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", @@ -1524,6 +1902,18 @@ "node": ">=8" } }, + "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", @@ -1580,6 +1970,27 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "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==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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-extglob": { "version": "2.1.1", "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", @@ -1655,6 +2066,12 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "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", @@ -1677,6 +2094,19 @@ "node": ">= 0.8.0" } }, + "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/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz", @@ -1692,8 +2122,22 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "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.merge": { "version": "4.6.2", @@ -1724,6 +2168,11 @@ "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", @@ -1746,6 +2195,25 @@ "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-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", @@ -1758,6 +2226,18 @@ "node": "*" } }, + "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/ms": { "version": "2.1.2", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", @@ -1787,6 +2267,20 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "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==", + "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/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", @@ -1891,6 +2385,12 @@ "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", @@ -1900,6 +2400,12 @@ "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/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", @@ -1914,6 +2420,17 @@ "node": ">=8.6" } }, + "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/postcss": { "version": "8.4.31", "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.31.tgz", @@ -1949,6 +2466,11 @@ "node": ">= 0.8.0" } }, + "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", @@ -1964,6 +2486,32 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "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", @@ -2020,6 +2568,12 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/scule": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/scule/-/scule-1.1.0.tgz", + "integrity": "sha512-vRUjqhyM/YWYzT+jsMk6tnl3NkY4A4soJ8uyh3O6Um+JXEQL9ozUCe7pqrxn3CSKokw0hw3nFStfskzpgYwR0g==", + "dev": true + }, "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", @@ -2094,6 +2648,15 @@ "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", @@ -2106,6 +2669,15 @@ "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/text-table": { "version": "0.2.0", "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", @@ -2170,6 +2742,174 @@ "node": ">=14.17" } }, + "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/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/unimport": { + "version": "3.5.0", + "resolved": "https://registry.npmmirror.com/unimport/-/unimport-3.5.0.tgz", + "integrity": "sha512-0Ei1iTeSYxs7oxxUf79/KaBc2dPjZxe7qdVpw7yIz5YcdTZjmBYO6ToLDW+fX9QOHiueZ3xtwb5Z/wqaSfXx6A==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.5", + "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.0.0", + "strip-literal": "^1.3.0", + "unplugin": "^1.5.0" + } + }, + "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.16.7", + "resolved": "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.16.7.tgz", + "integrity": "sha512-w7XmnRlchq6YUFJVFGSvG1T/6j8GrdYN6Em9Wf0Ye+HXgD/22kont+WnuCAA0UaUoxtuvRR1u/mXKy63g/hfqQ==", + "dev": true, + "dependencies": { + "@antfu/utils": "^0.7.6", + "@rollup/pluginutils": "^5.0.5", + "fast-glob": "^3.3.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "minimatch": "^9.0.3", + "unimport": "^3.4.0", + "unplugin": "^1.5.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@nuxt/kit": "^3.2.2", + "@vueuse/core": "*" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + }, + "@vueuse/core": { + "optional": true + } + } + }, + "node_modules/unplugin-auto-import/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-auto-import/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/unplugin-vue-components": { + "version": "0.25.2", + "resolved": "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.25.2.tgz", + "integrity": "sha512-OVmLFqILH6w+eM8fyt/d/eoJT9A6WO51NZLf1vC5c1FZ4rmq2bbGxTy8WP2Jm7xwFdukaIdv819+UI7RClPyCA==", + "dev": true, + "dependencies": { + "@antfu/utils": "^0.7.5", + "@rollup/pluginutils": "^5.0.2", + "chokidar": "^3.5.3", + "debug": "^4.3.4", + "fast-glob": "^3.3.0", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.1", + "minimatch": "^9.0.3", + "resolve": "^1.22.2", + "unplugin": "^1.4.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@babel/parser": "^7.15.8", + "@nuxt/kit": "^3.2.2", + "vue": "2 || 3" + }, + "peerDependenciesMeta": { + "@babel/parser": { + "optional": true + }, + "@nuxt/kit": { + "optional": 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/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/unplugin-vue-components/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", @@ -2185,6 +2925,19 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, + "node_modules/vant": { + "version": "4.8.0", + "resolved": "https://registry.npmmirror.com/vant/-/vant-4.8.0.tgz", + "integrity": "sha512-JeEcSd1zt0+fcSo/wuyvhF+dUdd1IaaJmrG0BTiUvH/XcBJEUaTSSEaYG0V8iI38xUTUCuDG+TSfSoSeEwGVAQ==", + "dependencies": { + "@vant/popperjs": "^1.3.0", + "@vant/use": "^1.6.0", + "@vue/shared": "^3.0.0" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, "node_modules/vite": { "version": "4.5.0", "resolved": "https://registry.npmmirror.com/vite/-/vite-4.5.0.tgz", @@ -2278,6 +3031,17 @@ "eslint": ">=6.0.0" } }, + "node_modules/vue-router": { + "version": "4.2.5", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.2.5.tgz", + "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", + "dependencies": { + "@vue/devtools-api": "^6.5.0" + }, + "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", @@ -2305,6 +3069,21 @@ "typescript": "*" } }, + "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.0", + "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.0.tgz", + "integrity": "sha512-KnaMTE6EItz/f2q4Gwg5/rmeKVi79OR58NoYnwDJqCk9ywMtTGbBnBcfoBtN4QbYu0lWXvyMoH2Owxuhe4qI6Q==", + "dev": true + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 18adb8a..a574a46 100644 --- a/package.json +++ b/package.json @@ -9,15 +9,25 @@ "preview": "vite preview" }, "dependencies": { - "vue": "^3.3.4" + "@types/crypto-js": "^4.2.1", + "axios": "^1.6.2", + "crypto-js": "^4.2.0", + "element-plus": "^2.4.2", + "vant": "^4.7.3", + "vue": "^3.3.4", + "vue-router": "^4.2.5" }, "devDependencies": { + "@types/node": "^20.9.1", "@typescript-eslint/eslint-plugin": "^6.11.0", "@typescript-eslint/parser": "^6.11.0", + "@vant/auto-import-resolver": "^1.0.2", "@vitejs/plugin-vue": "^4.2.3", "eslint": "^8.54.0", "eslint-plugin-vue": "^9.18.1", "typescript": "^5.0.2", + "unplugin-auto-import": "^0.16.7", + "unplugin-vue-components": "^0.25.2", "vite": "^4.4.5", "vue-tsc": "^1.8.5" } diff --git a/src/App.vue b/src/App.vue index 7d8e3eb..fa6b202 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,13 +1,25 @@ - - + + + \ No newline at end of file diff --git a/src/api/CryptoUtils.ts b/src/api/CryptoUtils.ts new file mode 100644 index 0000000..b7a88ee --- /dev/null +++ b/src/api/CryptoUtils.ts @@ -0,0 +1,10 @@ +import CryptoJs from "crypto-js"; + +/** + * md5加密为16进制字符串 + * @param content 需要加密的内容 + * @return 加密后的16进制字符串 + */ +export const md5Hex = (content: string): string => { + return CryptoJs.MD5(content).toString(CryptoJs.enc.Hex); +} \ No newline at end of file diff --git a/src/api/Requester.ts b/src/api/Requester.ts new file mode 100644 index 0000000..44de72c --- /dev/null +++ b/src/api/Requester.ts @@ -0,0 +1,45 @@ +import axios from 'axios' +import {md5Hex} from "./CryptoUtils"; +import {User} from "../entities/User.ts"; + +export const baseUrl = 'http://localhost:8081'; +export interface Result { + data: T; + message: string; + status: number; + timestamp: number +} +export interface Page { + data: T[]; + total: number; +} +export type PageResult = Result> +const instance = axios.create({ + baseURL: baseUrl, + timeout: 1000, + headers: {'Content-Type': 'application/json'} +}); +axios.interceptors.request.use(function (config) { + config.headers['Authorization'] = window.sessionStorage.getItem("authorization"); + return config; +}, function (error) { + // 对请求错误做些什么 + return Promise.reject(error); +}); + +// 添加响应拦截器 +axios.interceptors.response.use(function (response) { + const authorization = response.headers['Set-Authorization']; + if (authorization){ + window.sessionStorage.setItem("authorization", authorization); + } + return response; +}, function (error) { + return Promise.reject(error); +}); +export const login = (username: string, password: string) => { + return instance.post>("/api/user/login", { + name: username, + password: md5Hex(password) + }) +} \ No newline at end of file diff --git a/src/assets/UserAvatar.jpg b/src/assets/UserAvatar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cf44e8b0a4718bd795efbb14fcf1319739e486a2 GIT binary patch literal 29319 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 -import { ref } from 'vue' - -defineProps<{ msg: string }>() - -const count = ref(0) - - - - - diff --git a/src/entities/Auth.ts b/src/entities/Auth.ts new file mode 100644 index 0000000..f222322 --- /dev/null +++ b/src/entities/Auth.ts @@ -0,0 +1,3 @@ +export enum Auth { + user,admin +} \ No newline at end of file diff --git a/src/entities/User.ts b/src/entities/User.ts new file mode 100644 index 0000000..1b2519a --- /dev/null +++ b/src/entities/User.ts @@ -0,0 +1,7 @@ +import {Auth} from "./Auth"; + +export interface User { + id: string + name: string; + auth: Auth; +} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index 2425c0f..3c7f557 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,5 +1,16 @@ import { createApp } from 'vue' import './style.css' import App from './App.vue' - -createApp(App).mount('#app') +import Mobile from './views/AppMobile.vue' +import PC from './views/AppPC.vue' +import {createRouter, createWebHashHistory} from "vue-router"; +const router = createRouter({ + history: createWebHashHistory(), + routes: [ + {path: "/", component: PC}, + {path: "/mobile", component: Mobile} + ] +}) +const app = createApp(App); +app.use(router); +app.mount('#app'); diff --git a/src/style.css b/src/style.css index 7294765..6e1b86e 100644 --- a/src/style.css +++ b/src/style.css @@ -1,80 +1,3 @@ :root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; - - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; -} - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} -a:hover { - color: #535bf2; -} - -body { - margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; -} - -h1 { - font-size: 3.2em; - line-height: 1.1; -} - -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; -} -button:hover { - border-color: #646cff; -} -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} - -.card { - padding: 2em; -} - -#app { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } -} + background-color: #242424; +} \ No newline at end of file diff --git a/src/views/AppMobile.vue b/src/views/AppMobile.vue new file mode 100644 index 0000000..4fc2e0a --- /dev/null +++ b/src/views/AppMobile.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/src/views/AppPC.vue b/src/views/AppPC.vue new file mode 100644 index 0000000..afd1a65 --- /dev/null +++ b/src/views/AppPC.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/vite.config.ts b/vite.config.ts index 05c1740..787daf5 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,7 +1,20 @@ -import { defineConfig } from 'vite' +import {defineConfig} from 'vite' import vue from '@vitejs/plugin-vue' +import Components from 'unplugin-vue-components/vite'; +import {VantResolver} from '@vant/auto-import-resolver'; +import {readFileSync} from "node:fs"; +import AutoImport from 'unplugin-auto-import/vite' +import {ElementPlusResolver} from 'unplugin-vue-components/resolvers' // https://vitejs.dev/config/ export default defineConfig({ - plugins: [vue()], + server: { + host: "0.0.0.0", + port: 5173, + https: { + key: readFileSync("keys/agent2-key.pem"), + cert: readFileSync("keys/agent2-cert.pem"), + } + }, + plugins: [AutoImport({resolvers: [ElementPlusResolver()],}), Components({resolvers: [ElementPlusResolver(), VantResolver()],}), vue()], })