diff --git a/Front/vue-unilife/package.json b/Front/vue-unilife/package.json index b53d3a7..25f2901 100644 --- a/Front/vue-unilife/package.json +++ b/Front/vue-unilife/package.json @@ -21,6 +21,7 @@ "devDependencies": { "@vitejs/plugin-vue": "^5.2.1", "@vue/tsconfig": "^0.7.0", + "sass-embedded": "^1.88.0", "typescript": "~5.7.2", "vite": "^6.2.0", "vue-tsc": "^2.2.4" diff --git a/Front/vue-unilife/pnpm-lock.yaml b/Front/vue-unilife/pnpm-lock.yaml index f958087..3bfe1af 100644 --- a/Front/vue-unilife/pnpm-lock.yaml +++ b/Front/vue-unilife/pnpm-lock.yaml @@ -35,16 +35,19 @@ importers: devDependencies: '@vitejs/plugin-vue': specifier: ^5.2.1 - version: 5.2.1(vite@6.2.2)(vue@3.5.13(typescript@5.7.3)) + version: 5.2.1(vite@6.2.2(sass-embedded@1.88.0))(vue@3.5.13(typescript@5.7.3)) '@vue/tsconfig': specifier: ^0.7.0 version: 0.7.0(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) + sass-embedded: + specifier: ^1.88.0 + version: 1.88.0 typescript: specifier: ~5.7.2 version: 5.7.3 vite: specifier: ^6.2.0 - version: 6.2.2 + version: 6.2.2(sass-embedded@1.88.0) vue-tsc: specifier: ^2.2.4 version: 2.2.8(typescript@5.7.3) @@ -68,6 +71,9 @@ packages: resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==} engines: {node: '>=6.9.0'} + '@bufbuild/protobuf@2.4.0': + resolution: {integrity: sha512-RN9M76x7N11QRihKovEglEjjVCQEA9PRBVnDgk9xw8JHLrcUrp4FpAVSPSH91cNbcTft3u2vpLN4GMbiKY9PJw==} + '@ctrl/tinycolor@3.6.1': resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} engines: {node: '>=10'} @@ -458,10 +464,16 @@ packages: brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + buffer-builder@0.2.0: + resolution: {integrity: sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} + colorjs.io@0.5.2: + resolution: {integrity: sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==} + combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -556,6 +568,10 @@ packages: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} @@ -575,6 +591,9 @@ packages: hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + immutable@5.1.2: + resolution: {integrity: sha512-qHKXW1q6liAk1Oys6umoaZbDRqjcjgSrbnrifHsfsttza7zcvRAsL7mMV6xWcyhwQy7Xj5v4hhbr6b+iDYwlmQ==} + is-what@4.1.16: resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} engines: {node: '>=12.13'} @@ -655,6 +674,134 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + sass-embedded-android-arm64@1.88.0: + resolution: {integrity: sha512-YVdxVywlbXH74uomIcRsYLHF1644V+0per6YrfZndWicjfYnWqgbGq1xixdOzLxe3vac90RlsRNxTEb0VWlhmA==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [android] + + sass-embedded-android-arm@1.88.0: + resolution: {integrity: sha512-jveGkHhHxJ2+GnNxl3OyhZAxR8YXJCSuj7JYzoVuFTxlsaFqFQwtUrvZro61xOVOrwfe8xMk2HE3ZEw6dolhBA==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [android] + + sass-embedded-android-ia32@1.88.0: + resolution: {integrity: sha512-6C4o+lGFsYcUPGtCvOdFhFLQl1rrcBUNuC4DILDayI4bZeh3Y2CjonzCT4VNKPsOm7LFGf0OKQAZm+3/oXVIKg==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [android] + + sass-embedded-android-riscv64@1.88.0: + resolution: {integrity: sha512-zW1NmFHwPkBBg8wqVu8e5uCKeuTSk8vasB5BBEPvQubj4tWbgxrXGIVrQyseeGXJJQYSzjNiq3ua4qNoadBWJA==} + engines: {node: '>=14.0.0'} + cpu: [riscv64] + os: [android] + + sass-embedded-android-x64@1.88.0: + resolution: {integrity: sha512-b33Ja8sU67CcWCX9C3M+k8AcWXOb9uhyUJuKg/2hb/RhKUqBRCpMtQhsChpV7/DyXvyevLeosy28j673qNfnuQ==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [android] + + sass-embedded-darwin-arm64@1.88.0: + resolution: {integrity: sha512-Zu+A4OzoFtZwTlcXn66ovZRTI9Ia610KJbtJBrpsXPfqR9QcCg7pPDB/zlPK5E5xFjsxGWaL0tICOifim1HCMg==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [darwin] + + sass-embedded-darwin-x64@1.88.0: + resolution: {integrity: sha512-nZ+/j5Z4llLejNyFcLUWJvbU3WNJDKiyZ7W+Hpn/52dDhzHiNWRVHH7humfzCEgLXZctPZlr56ubaNk/RsoSlA==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [darwin] + + sass-embedded-linux-arm64@1.88.0: + resolution: {integrity: sha512-aphDl0Z4Y+YpPAqT0fEDDxZfrTXS/v36IRpGpVcbuRIua/iHd9L3wrZuwco1nbbY+sShFNiXPE1A9/k/ZGt8rw==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [linux] + + sass-embedded-linux-arm@1.88.0: + resolution: {integrity: sha512-bjiTZ4MNvArReXgwnA56mT3i+vHH3BgkLQT3qVwRv6fVTPQpYopK8D/QzQKbrVGYKgzWPYzZfksSQFC9lzM2yA==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [linux] + + sass-embedded-linux-ia32@1.88.0: + resolution: {integrity: sha512-m+pQMD14JQeMlQ/J8vQxHXwAQPAcfLG034BQz05a8ahXmNrk9qJkrC7FLptDlhsJ6weldX54UvXceoSpw2VsxQ==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [linux] + + sass-embedded-linux-musl-arm64@1.88.0: + resolution: {integrity: sha512-Wxo9qklXqw+eYFHLo+uE9r9sbK/xklMt6xPU/HXs+ikoJcGtmugE7KRyyWeSfvPTi8jZvgfkFfNDZD9elzxEFA==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [linux] + + sass-embedded-linux-musl-arm@1.88.0: + resolution: {integrity: sha512-jGRZZYP8XOiE521Pep2u9ktx1FFkLHosjO7Dj/0pvjwUddBVT16jE40gv9pqtTynG0saD8jokqdkqJ+FM3NJzA==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [linux] + + sass-embedded-linux-musl-ia32@1.88.0: + resolution: {integrity: sha512-utdTihiPCCP5HdKqwblQQWz864c7CqSplSGQ+p06GS+0ZfnuB/SKhtwe8fd11v4+IN8S2o0HAQ5KtWmRmk3eTA==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [linux] + + sass-embedded-linux-musl-riscv64@1.88.0: + resolution: {integrity: sha512-P8XB7QVSU8KJry4oxegzAnuFVWjbHc/JCHgF2ktq2dURVyxcaKDfQZtzbUgiPOKP/R6MZIFhXaJVJIhppcruEQ==} + engines: {node: '>=14.0.0'} + cpu: [riscv64] + os: [linux] + + sass-embedded-linux-musl-x64@1.88.0: + resolution: {integrity: sha512-OGEfD6AAm68vZTazFkIN7Dsu0ZQY983GZU+mWE9zZPLTIBzvNrrEZrEE/mpM6LemkwbqR+GaFP6rxGrkDz0Mhw==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [linux] + + sass-embedded-linux-riscv64@1.88.0: + resolution: {integrity: sha512-3hBlfq4bXx0RkkNxvw/FPZSmUC1GMU8NE1Ef+2dJowxAeneRotHy5WXZIMKvH7NGpskf7U8ButK05U3OxPzrTA==} + engines: {node: '>=14.0.0'} + cpu: [riscv64] + os: [linux] + + sass-embedded-linux-x64@1.88.0: + resolution: {integrity: sha512-FzM5mCxkFE20efDDSPO5N5o0ZKPqs51zowt2JAe5tdAzmy/jUQ0t515tph40dV2mfX0flBJgoou76gZKhylHGg==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [linux] + + sass-embedded-win32-arm64@1.88.0: + resolution: {integrity: sha512-Zp3yNEzk/gCCBIClQx8ihAGZ1YqPbjWjTnLWtruS9FcVrkrSAIjhqaesoN1Hy61aaIoiRektOyeffHH54jiQ3g==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [win32] + + sass-embedded-win32-ia32@1.88.0: + resolution: {integrity: sha512-yUmD6BLb01ngw/gy+FcTdsCMFaoONGFYJcy6FhMr2OOcCHNjPVD+HqTF4ZRsLNbwna8PlP6XxHFzjPKzVw18xw==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [win32] + + sass-embedded-win32-x64@1.88.0: + resolution: {integrity: sha512-j4pOP/S9vD4enRqbfwno07Xx+j0RkfVYGV31ZxzAIF+a1+3dDBlsbwgDNP68XemJx5SjpP8yM8the6nHAnMUiQ==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [win32] + + sass-embedded@1.88.0: + resolution: {integrity: sha512-GQUxgZFuej3NZ1TSPUHU8aebtYdnIeXqYsbNEEKBtE+SC7/Gr18KH1ijTAZHPw25OUfQCdtJaRy6Fo866dHmgw==} + engines: {node: '>=16.0.0'} + hasBin: true + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -667,12 +814,27 @@ packages: resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} engines: {node: '>=16'} + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + sync-child-process@1.0.2: + resolution: {integrity: sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==} + engines: {node: '>=16.0.0'} + + sync-message-port@1.1.3: + resolution: {integrity: sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==} + engines: {node: '>=16.0.0'} + tiny-case@1.0.3: resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} toposort@2.0.2: resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} @@ -686,6 +848,9 @@ packages: engines: {node: '>=14.17'} hasBin: true + varint@6.0.0: + resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} + vee-validate@4.15.0: resolution: {integrity: sha512-PGJh1QCFwCBjbHu5aN6vB8macYVWrajbDvgo1Y/8fz9n/RVIkLmZCJDpUgu7+mUmCOPMxeyq7vXUOhbwAqdXcA==} peerDependencies: @@ -782,6 +947,8 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@bufbuild/protobuf@2.4.0': {} + '@ctrl/tinycolor@3.6.1': {} '@element-plus/icons-vue@2.3.1(vue@3.5.13(typescript@5.7.3))': @@ -945,9 +1112,9 @@ snapshots: '@types/web-bluetooth@0.0.16': {} - '@vitejs/plugin-vue@5.2.1(vite@6.2.2)(vue@3.5.13(typescript@5.7.3))': + '@vitejs/plugin-vue@5.2.1(vite@6.2.2(sass-embedded@1.88.0))(vue@3.5.13(typescript@5.7.3))': dependencies: - vite: 6.2.2 + vite: 6.2.2(sass-embedded@1.88.0) vue: 3.5.13(typescript@5.7.3) '@volar/language-core@2.4.12': @@ -1100,11 +1267,15 @@ snapshots: dependencies: balanced-match: 1.0.2 + buffer-builder@0.2.0: {} + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 + colorjs.io@0.5.2: {} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -1231,6 +1402,8 @@ snapshots: gopd@1.2.0: {} + has-flag@4.0.0: {} + has-symbols@1.1.0: {} has-tostringtag@1.0.2: @@ -1245,6 +1418,8 @@ snapshots: hookable@5.5.3: {} + immutable@5.1.2: {} + is-what@4.1.16: {} lodash-es@4.17.21: {} @@ -1326,6 +1501,102 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.35.0 fsevents: 2.3.3 + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + sass-embedded-android-arm64@1.88.0: + optional: true + + sass-embedded-android-arm@1.88.0: + optional: true + + sass-embedded-android-ia32@1.88.0: + optional: true + + sass-embedded-android-riscv64@1.88.0: + optional: true + + sass-embedded-android-x64@1.88.0: + optional: true + + sass-embedded-darwin-arm64@1.88.0: + optional: true + + sass-embedded-darwin-x64@1.88.0: + optional: true + + sass-embedded-linux-arm64@1.88.0: + optional: true + + sass-embedded-linux-arm@1.88.0: + optional: true + + sass-embedded-linux-ia32@1.88.0: + optional: true + + sass-embedded-linux-musl-arm64@1.88.0: + optional: true + + sass-embedded-linux-musl-arm@1.88.0: + optional: true + + sass-embedded-linux-musl-ia32@1.88.0: + optional: true + + sass-embedded-linux-musl-riscv64@1.88.0: + optional: true + + sass-embedded-linux-musl-x64@1.88.0: + optional: true + + sass-embedded-linux-riscv64@1.88.0: + optional: true + + sass-embedded-linux-x64@1.88.0: + optional: true + + sass-embedded-win32-arm64@1.88.0: + optional: true + + sass-embedded-win32-ia32@1.88.0: + optional: true + + sass-embedded-win32-x64@1.88.0: + optional: true + + sass-embedded@1.88.0: + dependencies: + '@bufbuild/protobuf': 2.4.0 + buffer-builder: 0.2.0 + colorjs.io: 0.5.2 + immutable: 5.1.2 + rxjs: 7.8.2 + supports-color: 8.1.1 + sync-child-process: 1.0.2 + varint: 6.0.0 + optionalDependencies: + sass-embedded-android-arm: 1.88.0 + sass-embedded-android-arm64: 1.88.0 + sass-embedded-android-ia32: 1.88.0 + sass-embedded-android-riscv64: 1.88.0 + sass-embedded-android-x64: 1.88.0 + sass-embedded-darwin-arm64: 1.88.0 + sass-embedded-darwin-x64: 1.88.0 + sass-embedded-linux-arm: 1.88.0 + sass-embedded-linux-arm64: 1.88.0 + sass-embedded-linux-ia32: 1.88.0 + sass-embedded-linux-musl-arm: 1.88.0 + sass-embedded-linux-musl-arm64: 1.88.0 + sass-embedded-linux-musl-ia32: 1.88.0 + sass-embedded-linux-musl-riscv64: 1.88.0 + sass-embedded-linux-musl-x64: 1.88.0 + sass-embedded-linux-riscv64: 1.88.0 + sass-embedded-linux-x64: 1.88.0 + sass-embedded-win32-arm64: 1.88.0 + sass-embedded-win32-ia32: 1.88.0 + sass-embedded-win32-x64: 1.88.0 + source-map-js@1.2.1: {} speakingurl@14.0.1: {} @@ -1334,29 +1605,44 @@ snapshots: dependencies: copy-anything: 3.0.5 + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + sync-child-process@1.0.2: + dependencies: + sync-message-port: 1.1.3 + + sync-message-port@1.1.3: {} + tiny-case@1.0.3: {} toposort@2.0.2: {} + tslib@2.8.1: {} + type-fest@2.19.0: {} type-fest@4.37.0: {} typescript@5.7.3: {} + varint@6.0.0: {} + vee-validate@4.15.0(vue@3.5.13(typescript@5.7.3)): dependencies: '@vue/devtools-api': 7.7.2 type-fest: 4.37.0 vue: 3.5.13(typescript@5.7.3) - vite@6.2.2: + vite@6.2.2(sass-embedded@1.88.0): dependencies: esbuild: 0.25.1 postcss: 8.5.3 rollup: 4.35.0 optionalDependencies: fsevents: 2.3.3 + sass-embedded: 1.88.0 vscode-uri@3.1.0: {} diff --git a/Front/vue-unilife/src/App.vue b/Front/vue-unilife/src/App.vue index 4d17c70..eb698a9 100644 --- a/Front/vue-unilife/src/App.vue +++ b/Front/vue-unilife/src/App.vue @@ -1,11 +1,23 @@ - - - diff --git a/Front/vue-unilife/src/assets/images/LogPage1.jpg b/Front/vue-unilife/src/assets/images/LogPage1.jpg new file mode 100644 index 0000000..f0d3c33 Binary files /dev/null and b/Front/vue-unilife/src/assets/images/LogPage1.jpg differ diff --git a/Front/vue-unilife/src/assets/images/LogPage2.jpg b/Front/vue-unilife/src/assets/images/LogPage2.jpg new file mode 100644 index 0000000..f6de13a Binary files /dev/null and b/Front/vue-unilife/src/assets/images/LogPage2.jpg differ diff --git a/Front/vue-unilife/src/assets/images/个人.png b/Front/vue-unilife/src/assets/images/个人.png new file mode 100644 index 0000000..f63e5e8 Binary files /dev/null and b/Front/vue-unilife/src/assets/images/个人.png differ diff --git a/Front/vue-unilife/src/assets/images/默认头像.jpg b/Front/vue-unilife/src/assets/images/默认头像.jpg new file mode 100644 index 0000000..11eead7 Binary files /dev/null and b/Front/vue-unilife/src/assets/images/默认头像.jpg differ diff --git a/Front/vue-unilife/src/assets/logo-carousel/1.jpeg b/Front/vue-unilife/src/assets/logo-carousel/1.jpeg new file mode 100644 index 0000000..09722e2 Binary files /dev/null and b/Front/vue-unilife/src/assets/logo-carousel/1.jpeg differ diff --git a/Front/vue-unilife/src/assets/logo-carousel/2.png b/Front/vue-unilife/src/assets/logo-carousel/2.png new file mode 100644 index 0000000..3fc82ee Binary files /dev/null and b/Front/vue-unilife/src/assets/logo-carousel/2.png differ diff --git a/Front/vue-unilife/src/assets/logo-carousel/3.jpg b/Front/vue-unilife/src/assets/logo-carousel/3.jpg new file mode 100644 index 0000000..511749e Binary files /dev/null and b/Front/vue-unilife/src/assets/logo-carousel/3.jpg differ diff --git a/Front/vue-unilife/src/assets/style/style.css b/Front/vue-unilife/src/assets/style/style.css new file mode 100644 index 0000000..935ef47 --- /dev/null +++ b/Front/vue-unilife/src/assets/style/style.css @@ -0,0 +1,118 @@ +:root { + font-family: 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; +} + + + +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:none; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + cursor: pointer; + transition: border-color 0.25s; +} + + +/*除了LogPage以外的按钮尽量使用这里的样式*/ +.btn { + outline:none; + padding: 10px 24px; + margin:10px; + border: none; + border-radius: 25px; + cursor: pointer; + font-size: 1rem; + font-weight: 500; + transition: all 0.3s ease; + background-color: #fff; +} + +.btn-primary { + background-color: #9370DB; + color: white; + box-shadow: 0 4px 10px rgba(147, 112, 219, 0.3); +} + +.btn-primary:hover { + background-color: #8a63d2; + transform: translateY(-2px); +} + +.btn-secondary { + background-color: #e6e6fa; + color: #666; + box-shadow: 0 4px 10px rgba(230, 230, 250, 0.3); +} + +.btn-secondary:hover { + background-color: #dcdcdc; + transform: translateY(-2px); +} + +/*信息展示在card上*/ +.card { + background-color: #fff; + border-radius: 20px; + padding: 30px; + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05); + transition: transform 0.3s ease, box-shadow 0.3s ease; +} + +.card:hover { + transform: translateY(-5px); + box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1); +} + +#app { + width: 100vw; + height: 100vh; + min-height: 100vh; + min-width: 100vw; + position: relative; + display: flex; + justify-content:center; + align-items:center; + flex-direction: column; + box-sizing: border-box; + overflow:auto; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/Front/vue-unilife/src/components/Carousel.vue b/Front/vue-unilife/src/components/Carousel.vue new file mode 100644 index 0000000..cce53f1 --- /dev/null +++ b/Front/vue-unilife/src/components/Carousel.vue @@ -0,0 +1,25 @@ + + + + + + diff --git a/Front/vue-unilife/src/components/HeaderBar.vue b/Front/vue-unilife/src/components/HeaderBar.vue new file mode 100644 index 0000000..26c8486 --- /dev/null +++ b/Front/vue-unilife/src/components/HeaderBar.vue @@ -0,0 +1,101 @@ + + + + + + + diff --git a/Front/vue-unilife/src/components/HotTopic.vue b/Front/vue-unilife/src/components/HotTopic.vue new file mode 100644 index 0000000..77df13d --- /dev/null +++ b/Front/vue-unilife/src/components/HotTopic.vue @@ -0,0 +1,26 @@ + + + + + + diff --git a/Front/vue-unilife/src/components/PersonLayout.vue b/Front/vue-unilife/src/components/PersonLayout.vue deleted file mode 100644 index 5e6c053..0000000 --- a/Front/vue-unilife/src/components/PersonLayout.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - \ No newline at end of file diff --git a/Front/vue-unilife/src/components/Personal/Personal.vue b/Front/vue-unilife/src/components/Personal.vue similarity index 82% rename from Front/vue-unilife/src/components/Personal/Personal.vue rename to Front/vue-unilife/src/components/Personal.vue index 2769359..91a1bb7 100644 --- a/Front/vue-unilife/src/components/Personal/Personal.vue +++ b/Front/vue-unilife/src/components/Personal.vue @@ -1,12 +1,12 @@ + + + + diff --git a/Front/vue-unilife/src/components/ScheduleCard.vue b/Front/vue-unilife/src/components/ScheduleCard.vue new file mode 100644 index 0000000..a0bd03d --- /dev/null +++ b/Front/vue-unilife/src/components/ScheduleCard.vue @@ -0,0 +1,19 @@ + + + + + diff --git a/Front/vue-unilife/src/main.ts b/Front/vue-unilife/src/main.ts index f030057..e96aa67 100644 --- a/Front/vue-unilife/src/main.ts +++ b/Front/vue-unilife/src/main.ts @@ -1,9 +1,9 @@ import { createApp } from 'vue' -import './style.css' +import '@/assets/style/style.css' import App from './App.vue' import ElementPlus from 'element-plus' import 'element-plus/dist/index.css' -import router from './routers' +import router from './routers/routers' import * as ElementPlusIconsVue from '@element-plus/icons-vue' const app = createApp(App) diff --git a/Front/vue-unilife/src/routers.ts b/Front/vue-unilife/src/routers/routers.ts similarity index 56% rename from Front/vue-unilife/src/routers.ts rename to Front/vue-unilife/src/routers/routers.ts index f2ba186..6569da5 100644 --- a/Front/vue-unilife/src/routers.ts +++ b/Front/vue-unilife/src/routers/routers.ts @@ -1,12 +1,21 @@ import type { RouteRecord, RouteRecordRaw } from 'vue-router'; import { createWebHashHistory, createRouter,createWebHistory } from 'vue-router'; -import LogPage from './components/LogPage.vue'; -import Personal from './components/Personal/Personal.vue' -import Manager from './components/Personal/AcountManager.vue'; -import PersonalLayout from './components/PersonLayout.vue' -import PersonalHome from './components/Personal/Home.vue' +import LogPage from '../views/LogPage.vue'; +import Personal from '@/components/Personal.vue'; +import Manager from '@/views/AcountManager.vue'; +import PersonalHome from '@/views/Home.vue'; +import ForumHome from '@/views/ForumHome.vue'; const routes:Array = [ + { + path: '/', + redirect: '/log', + }, + { + path: '/:pathMatch(.*)*', + name: 'NotFound', + component: () => import('@/views/404.vue'), + }, { path:'/log', name: 'LogPage', @@ -27,12 +36,16 @@ const routes:Array = [ name: 'Manager', component:Manager, }, + { + path:'ai', + redirect: '/personal', + }, ] }, { - path:"/personalLayout", - name:'Personallayout', - component:PersonalLayout, + path:'/uniLifeHome', + name: 'ForumHome', + component: ForumHome, } ]; diff --git a/Front/vue-unilife/src/style.css b/Front/vue-unilife/src/style.css deleted file mode 100644 index f691315..0000000 --- a/Front/vue-unilife/src/style.css +++ /dev/null @@ -1,79 +0,0 @@ -:root { - font-family: 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; -} - -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; - } -} diff --git a/Front/vue-unilife/src/views/404.vue b/Front/vue-unilife/src/views/404.vue new file mode 100644 index 0000000..c027108 --- /dev/null +++ b/Front/vue-unilife/src/views/404.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/Front/vue-unilife/src/components/Personal/AcountManager.vue b/Front/vue-unilife/src/views/AcountManager.vue similarity index 93% rename from Front/vue-unilife/src/components/Personal/AcountManager.vue rename to Front/vue-unilife/src/views/AcountManager.vue index 4af8e1b..9586e79 100644 --- a/Front/vue-unilife/src/components/Personal/AcountManager.vue +++ b/Front/vue-unilife/src/views/AcountManager.vue @@ -2,9 +2,9 @@ import { defineComponent, ref, nextTick ,watch,onMounted} from 'vue'; import{useForm,useField,Form} from 'vee-validate'; import * as yup from 'yup'; -import request from '../../utils/request'; +import request from '@/utils/request'; import { useGetDerivedNamespace ,ElMessage} from 'element-plus'; -import { useEmailCode } from '../useEmailCode'; +import { useEmailCode } from '@/components/useEmailCode'; export default defineComponent({ name: 'Manager', @@ -19,7 +19,7 @@ export default defineComponent({ setup() { const originData = ref({ username:"测试员", - avatarUrl:'/images/默认头像.jpg', + avatarUrl:'@/assets/images/默认头像.jpg', gender:2, introduction:'只要不出bug一切都好QAQ', birthday:'2023-10-01', @@ -459,13 +459,6 @@ export default defineComponent({ \ No newline at end of file diff --git a/Front/vue-unilife/src/components/Personal/Home.vue b/Front/vue-unilife/src/views/Home.vue similarity index 100% rename from Front/vue-unilife/src/components/Personal/Home.vue rename to Front/vue-unilife/src/views/Home.vue diff --git a/Front/vue-unilife/src/components/LogPage.vue b/Front/vue-unilife/src/views/LogPage.vue similarity index 98% rename from Front/vue-unilife/src/components/LogPage.vue rename to Front/vue-unilife/src/views/LogPage.vue index 3d68dce..615fcf5 100644 --- a/Front/vue-unilife/src/components/LogPage.vue +++ b/Front/vue-unilife/src/views/LogPage.vue @@ -86,6 +86,7 @@ const{value: login_vericode} = useField('login_vericode') //错误提示 const showErrors = ref(false) const ErrorsMessage = ref('') +//调用代码检查表单是否有错误信息提示 const checkErrors = () => { if(RegisterForm.errors.value.register_email || RegisterForm.errors.value.register_password || RegisterForm.errors.value.register_verifyPassword || RegisterForm.errors.value.register_vericode) { showErrors.value = true @@ -173,6 +174,7 @@ const onLoginSubmit = () => { //axios接口 +//多合一哈多合一 const email = computed(()=>register_email.value ?? login_password_email.value ?? login_vericode_email.value) const password = computed(()=>register_password.value ?? login_password.value) const vericode = computed(()=>register_vericode.value ?? login_vericode.value) @@ -239,6 +241,7 @@ async function login(){ @close="showErrors = false" show-icon = "true" center/> +
@@ -304,7 +307,6 @@ async function login(){ body{ height: 100vh;; /*弹性布局,水平垂直居中*/ - display:flex; justify-content: center; align-items: center; /*渐变背景*/ @@ -537,17 +539,4 @@ async function login(){ - - - \ No newline at end of file diff --git a/Front/vue-unilife/tsconfig.app.json b/Front/vue-unilife/tsconfig.app.json index 758a2e1..7dcb1b6 100644 --- a/Front/vue-unilife/tsconfig.app.json +++ b/Front/vue-unilife/tsconfig.app.json @@ -8,7 +8,12 @@ "noUnusedLocals": true, "noUnusedParameters": true, "noFallthroughCasesInSwitch": true, - "noUncheckedSideEffectImports": true + "noUncheckedSideEffectImports": true, + + "baseUrl": ".", + "paths": { + "@/*": ["src/*"] + } }, "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"], "exclude": [ diff --git a/Front/vue-unilife/tsconfig.json b/Front/vue-unilife/tsconfig.json index 1ffef60..ee24881 100644 --- a/Front/vue-unilife/tsconfig.json +++ b/Front/vue-unilife/tsconfig.json @@ -1,4 +1,10 @@ { + "compilerOptions": { + "baseUrl": "./", + "paths": { + "@/*": ["src/*"] + } + }, "files": [], "references": [ { "path": "./tsconfig.app.json" }, diff --git a/Front/vue-unilife/vite.config.ts b/Front/vue-unilife/vite.config.ts index eae1f08..ee3a120 100644 --- a/Front/vue-unilife/vite.config.ts +++ b/Front/vue-unilife/vite.config.ts @@ -4,5 +4,9 @@ import vue from '@vitejs/plugin-vue' // https://vite.dev/config/ export default defineConfig({ plugins: [vue()], - + resolve: { + alias: { + '@': '/src', + } + } }) diff --git a/Front/前端环境.md b/Front/前端环境.md index 4e311b5..f17c8a7 100644 --- a/Front/前端环境.md +++ b/Front/前端环境.md @@ -1,3 +1,4 @@ +[TOC] # 配置前端环境 --- @@ -59,4 +60,10 @@ pnpm add vue-router@4 ### 安装elementplus的icon库 ``` pnpm install @element-plus/icons-vue +``` + +### 安装scss依赖 + +```cmd +pnpm add -D sass-embedded ``` \ No newline at end of file diff --git a/图片素材/图标/ai/AI (1).png b/图片素材/图标/ai/AI (1).png new file mode 100644 index 0000000..67ea941 Binary files /dev/null and b/图片素材/图标/ai/AI (1).png differ diff --git a/图片素材/图标/ai/AI.svg b/图片素材/图标/ai/AI.svg new file mode 100644 index 0000000..7835f82 --- /dev/null +++ b/图片素材/图标/ai/AI.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/图片素材/图标/作业与资料/资料.png b/图片素材/图标/作业与资料/资料.png new file mode 100644 index 0000000..f17ebfe Binary files /dev/null and b/图片素材/图标/作业与资料/资料.png differ diff --git a/图片素材/图标/作业与资料/资料.svg b/图片素材/图标/作业与资料/资料.svg new file mode 100644 index 0000000..6dcceb1 --- /dev/null +++ b/图片素材/图标/作业与资料/资料.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/图片素材/图标/头像/008Fm8iUly1hzodj7yt25j30rs0rsta1.jpg b/图片素材/图标/头像/008Fm8iUly1hzodj7yt25j30rs0rsta1.jpg new file mode 100644 index 0000000..6ea8834 Binary files /dev/null and b/图片素材/图标/头像/008Fm8iUly1hzodj7yt25j30rs0rsta1.jpg differ diff --git a/图片素材/图标/头像/008Fm8iUly1hzodj7zu8hj30rs0rsq48.jpg b/图片素材/图标/头像/008Fm8iUly1hzodj7zu8hj30rs0rsq48.jpg new file mode 100644 index 0000000..534a37a Binary files /dev/null and b/图片素材/图标/头像/008Fm8iUly1hzodj7zu8hj30rs0rsq48.jpg differ diff --git a/图片素材/图标/头像/008Fm8iUly1hzodj7zx2fj30rs0rsjsw.jpg b/图片素材/图标/头像/008Fm8iUly1hzodj7zx2fj30rs0rsjsw.jpg new file mode 100644 index 0000000..c5afab5 Binary files /dev/null and b/图片素材/图标/头像/008Fm8iUly1hzodj7zx2fj30rs0rsjsw.jpg differ diff --git a/图片素材/图标/头像/008Fm8iUly1hzodj7zyogj30rs0rsjsw.jpg b/图片素材/图标/头像/008Fm8iUly1hzodj7zyogj30rs0rsjsw.jpg new file mode 100644 index 0000000..481b7dd Binary files /dev/null and b/图片素材/图标/头像/008Fm8iUly1hzodj7zyogj30rs0rsjsw.jpg differ diff --git a/图片素材/图标/头像/008Fm8iUly1hzodj7zzl8j30rs0rsq4s.jpg b/图片素材/图标/头像/008Fm8iUly1hzodj7zzl8j30rs0rsq4s.jpg new file mode 100644 index 0000000..0c5aadb Binary files /dev/null and b/图片素材/图标/头像/008Fm8iUly1hzodj7zzl8j30rs0rsq4s.jpg differ diff --git a/图片素材/图标/头像/008Fm8iUly1hzodj8008gj30rs0rsq4t.jpg b/图片素材/图标/头像/008Fm8iUly1hzodj8008gj30rs0rsq4t.jpg new file mode 100644 index 0000000..a0f2e3a Binary files /dev/null and b/图片素材/图标/头像/008Fm8iUly1hzodj8008gj30rs0rsq4t.jpg differ diff --git a/图片素材/图标/头像/008Fm8iUly1hzodj800d2j30rs0rstac.jpg b/图片素材/图标/头像/008Fm8iUly1hzodj800d2j30rs0rstac.jpg new file mode 100644 index 0000000..798654d Binary files /dev/null and b/图片素材/图标/头像/008Fm8iUly1hzodj800d2j30rs0rstac.jpg differ diff --git a/图片素材/图标/头像/008Fm8iUly1hzodj800fwj30rs0rsdhf.jpg b/图片素材/图标/头像/008Fm8iUly1hzodj800fwj30rs0rsdhf.jpg new file mode 100644 index 0000000..598fd61 Binary files /dev/null and b/图片素材/图标/头像/008Fm8iUly1hzodj800fwj30rs0rsdhf.jpg differ diff --git a/图片素材/图标/头像/008Fm8iUly1hzodj801t6j30rs0rsdi2.jpg b/图片素材/图标/头像/008Fm8iUly1hzodj801t6j30rs0rsdi2.jpg new file mode 100644 index 0000000..ceaefac Binary files /dev/null and b/图片素材/图标/头像/008Fm8iUly1hzodj801t6j30rs0rsdi2.jpg differ diff --git a/图片素材/图标/头像/008Fm8iUly1hzodj803q0j30rs0rsq55.jpg b/图片素材/图标/头像/008Fm8iUly1hzodj803q0j30rs0rsq55.jpg new file mode 100644 index 0000000..e14f196 Binary files /dev/null and b/图片素材/图标/头像/008Fm8iUly1hzodj803q0j30rs0rsq55.jpg differ diff --git a/图片素材/图标/头像/008Fm8iUly1hzodj81acqj30rs0rs0v6.jpg b/图片素材/图标/头像/008Fm8iUly1hzodj81acqj30rs0rs0v6.jpg new file mode 100644 index 0000000..51da824 Binary files /dev/null and b/图片素材/图标/头像/008Fm8iUly1hzodj81acqj30rs0rs0v6.jpg differ diff --git a/图片素材/图标/头像/008Fm8iUly1hzodj81actj30rs0rsq5j.jpg b/图片素材/图标/头像/008Fm8iUly1hzodj81actj30rs0rsq5j.jpg new file mode 100644 index 0000000..6e1758b Binary files /dev/null and b/图片素材/图标/头像/008Fm8iUly1hzodj81actj30rs0rsq5j.jpg differ diff --git a/图片素材/图标/头像/008Fm8iUly1hzodj81ax2j30rs0rsacs.jpg b/图片素材/图标/头像/008Fm8iUly1hzodj81ax2j30rs0rsacs.jpg new file mode 100644 index 0000000..acb9f00 Binary files /dev/null and b/图片素材/图标/头像/008Fm8iUly1hzodj81ax2j30rs0rsacs.jpg differ diff --git a/图片素材/图标/头像/008Fm8iUly1hzodj81cq1j30rs0rsgor.jpg b/图片素材/图标/头像/008Fm8iUly1hzodj81cq1j30rs0rsgor.jpg new file mode 100644 index 0000000..e96e3a2 Binary files /dev/null and b/图片素材/图标/头像/008Fm8iUly1hzodj81cq1j30rs0rsgor.jpg differ diff --git a/图片素材/图标/头像/008Fm8iUly1hzodj81yn8j30rs0rsade.jpg b/图片素材/图标/头像/008Fm8iUly1hzodj81yn8j30rs0rsade.jpg new file mode 100644 index 0000000..4859a20 Binary files /dev/null and b/图片素材/图标/头像/008Fm8iUly1hzodj81yn8j30rs0rsade.jpg differ diff --git a/图片素材/图标/头像/个人.png b/图片素材/图标/头像/个人.png new file mode 100644 index 0000000..f63e5e8 Binary files /dev/null and b/图片素材/图标/头像/个人.png differ diff --git a/图片素材/图标/头像/个人.svg b/图片素材/图标/头像/个人.svg new file mode 100644 index 0000000..17b175b --- /dev/null +++ b/图片素材/图标/头像/个人.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/图片素材/图标/头像/默认头像.jpg b/图片素材/图标/头像/默认头像.jpg new file mode 100644 index 0000000..11eead7 Binary files /dev/null and b/图片素材/图标/头像/默认头像.jpg differ diff --git a/图片素材/图标/论坛/地球1.png b/图片素材/图标/论坛/地球1.png new file mode 100644 index 0000000..09cda61 Binary files /dev/null and b/图片素材/图标/论坛/地球1.png differ diff --git a/图片素材/图标/论坛/地球1.svg b/图片素材/图标/论坛/地球1.svg new file mode 100644 index 0000000..b701dfd --- /dev/null +++ b/图片素材/图标/论坛/地球1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/图片素材/图标/论坛/学习 (1).png b/图片素材/图标/论坛/学习 (1).png new file mode 100644 index 0000000..e21c68a Binary files /dev/null and b/图片素材/图标/论坛/学习 (1).png differ diff --git a/图片素材/图标/论坛/学习.svg b/图片素材/图标/论坛/学习.svg new file mode 100644 index 0000000..ee4ce45 --- /dev/null +++ b/图片素材/图标/论坛/学习.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/图片素材/图标/论坛/论坛.png b/图片素材/图标/论坛/论坛.png new file mode 100644 index 0000000..774091b Binary files /dev/null and b/图片素材/图标/论坛/论坛.png differ diff --git a/图片素材/图标/论坛/论坛.svg b/图片素材/图标/论坛/论坛.svg new file mode 100644 index 0000000..7f6dd40 --- /dev/null +++ b/图片素材/图标/论坛/论坛.svg @@ -0,0 +1 @@ + \ No newline at end of file