Merge branch 'main' into refactor/theme
17
package.json
@ -2,13 +2,6 @@
|
||||
"name": "vue-pure-admin",
|
||||
"version": "2.1.0",
|
||||
"private": true,
|
||||
"packageManager": "pnpm@6.20.1",
|
||||
"workspaces": [
|
||||
"build/**",
|
||||
"mock/**",
|
||||
"src/**",
|
||||
"types/**"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">= 16",
|
||||
"pnpm": ">= 6"
|
||||
@ -63,7 +56,7 @@
|
||||
"sortablejs": "1.13.0",
|
||||
"typescript-cookie": "^1.0.0",
|
||||
"v-contextmenu": "3.0.0",
|
||||
"vue": "^3.2.20",
|
||||
"vue": "^3.2.21",
|
||||
"vue-i18n": "^9.2.0-beta.3",
|
||||
"vue-json-pretty": "^2.0.2",
|
||||
"vue-router": "^4.0.11",
|
||||
@ -84,9 +77,9 @@
|
||||
"@types/nprogress": "0.2.0",
|
||||
"@typescript-eslint/eslint-plugin": "4.31.0",
|
||||
"@typescript-eslint/parser": "4.31.0",
|
||||
"@vitejs/plugin-vue": "1.6.0",
|
||||
"@vitejs/plugin-vue-jsx": "1.1.7",
|
||||
"@vue/compiler-sfc": "3.2.20",
|
||||
"@vitejs/plugin-vue": "^1.9.4",
|
||||
"@vitejs/plugin-vue-jsx": "^1.2.0",
|
||||
"@vue/compiler-sfc": "^3.2.21",
|
||||
"@vue/eslint-config-prettier": "6.0.0",
|
||||
"@vue/eslint-config-typescript": "7.0.0",
|
||||
"@zougt/vite-plugin-theme-preprocessor": "^1.3.4",
|
||||
@ -104,7 +97,7 @@
|
||||
"prettier": "2.3.2",
|
||||
"pretty-quick": "3.1.1",
|
||||
"rimraf": "3.0.2",
|
||||
"sass": "1.38.0",
|
||||
"sass": "1.32.8",
|
||||
"sass-loader": "12.1.0",
|
||||
"stylelint": "13.13.1",
|
||||
"stylelint-config-prettier": "8.0.2",
|
||||
|
516
pnpm-lock.yaml
generated
@ -1,170 +1,170 @@
|
||||
lockfileVersion: 5.3
|
||||
|
||||
importers:
|
||||
.:
|
||||
specifiers:
|
||||
"@amap/amap-jsapi-loader": ^1.0.1
|
||||
"@commitlint/cli": 13.1.0
|
||||
"@commitlint/config-conventional": 13.1.0
|
||||
"@element-plus/icons": ^0.0.11
|
||||
"@logicflow/core": 0.7.1
|
||||
"@logicflow/extension": 0.7.1
|
||||
"@types/element-resize-detector": 1.1.3
|
||||
"@types/mockjs": 1.0.3
|
||||
"@types/node": 14.14.14
|
||||
"@types/nprogress": 0.2.0
|
||||
"@typescript-eslint/eslint-plugin": 4.31.0
|
||||
"@typescript-eslint/parser": 4.31.0
|
||||
"@vitejs/plugin-vue": 1.6.0
|
||||
"@vitejs/plugin-vue-jsx": 1.1.7
|
||||
"@vue/compiler-sfc": 3.2.20
|
||||
"@vue/eslint-config-prettier": 6.0.0
|
||||
"@vue/eslint-config-typescript": 7.0.0
|
||||
"@vueuse/core": ^6.7.1
|
||||
"@vueuse/motion": ^2.0.0-beta.4
|
||||
"@zougt/vite-plugin-theme-preprocessor": ^1.3.4
|
||||
animate.css: ^4.1.1
|
||||
autoprefixer: 10.2.4
|
||||
await-to-js: ^3.0.0
|
||||
axios: ^0.21.1
|
||||
babel-plugin-transform-remove-console: 6.9.4
|
||||
chalk: 2.4.2
|
||||
cropperjs: ^1.5.11
|
||||
cross-env: 7.0.3
|
||||
dayjs: ^1.10.7
|
||||
echarts: ^5.2.1
|
||||
element-plus: ^1.2.0-beta.2
|
||||
element-resize-detector: ^1.2.3
|
||||
eslint: 7.30.0
|
||||
eslint-plugin-prettier: 3.4.0
|
||||
eslint-plugin-vue: 7.17.0
|
||||
font-awesome: ^4.7.0
|
||||
husky: 7.0.2
|
||||
lint-staged: 11.1.2
|
||||
lodash-es: ^4.17.21
|
||||
lowdb: ^3.0.0
|
||||
mitt: ^3.0.0
|
||||
mockjs: ^1.1.0
|
||||
nprogress: ^0.2.0
|
||||
path: ^0.12.7
|
||||
path-to-regexp: ^6.2.0
|
||||
pinia: ^2.0.0-rc.14
|
||||
postcss: 8.2.6
|
||||
postcss-import: 14.0.0
|
||||
prettier: 2.3.2
|
||||
pretty-quick: 3.1.1
|
||||
resize-observer-polyfill: ^1.5.1
|
||||
responsive-storage: ^1.0.11
|
||||
rimraf: 3.0.2
|
||||
sass: 1.38.0
|
||||
sass-loader: 12.1.0
|
||||
sortablejs: 1.13.0
|
||||
stylelint: 13.13.1
|
||||
stylelint-config-prettier: 8.0.2
|
||||
stylelint-config-standard: 22.0.0
|
||||
stylelint-order: 4.1.0
|
||||
typescript: 4.4.2
|
||||
typescript-cookie: ^1.0.0
|
||||
unplugin-element-plus: ^0.1.0
|
||||
v-contextmenu: 3.0.0
|
||||
vite: latest
|
||||
vite-plugin-mock: ^2.9.6
|
||||
vite-plugin-style-import: ^1.2.1
|
||||
vite-svg-loader: ^2.2.0
|
||||
vue: ^3.2.20
|
||||
vue-eslint-parser: 7.10.0
|
||||
vue-i18n: ^9.2.0-beta.3
|
||||
vue-json-pretty: ^2.0.2
|
||||
vue-router: ^4.0.11
|
||||
vue-types: ^4.1.0
|
||||
vuedraggable: 4.1.0
|
||||
vxe-table: 4.0.30
|
||||
wangeditor: 4.7.7
|
||||
xe-ajax: 4.0.5
|
||||
xe-utils: 3.4.0
|
||||
xgplayer: 2.28.0
|
||||
dependencies:
|
||||
"@amap/amap-jsapi-loader": 1.0.1
|
||||
"@element-plus/icons": 0.0.11
|
||||
"@logicflow/core": 0.7.1
|
||||
"@logicflow/extension": 0.7.1
|
||||
"@vueuse/core": 6.7.4_vue@3.2.21
|
||||
"@vueuse/motion": 2.0.0-beta.4_vue@3.2.21
|
||||
animate.css: 4.1.1
|
||||
await-to-js: 3.0.0
|
||||
axios: 0.21.4
|
||||
cropperjs: 1.5.12
|
||||
dayjs: 1.10.7
|
||||
echarts: 5.2.2
|
||||
element-plus: 1.2.0-beta.2_vue@3.2.21
|
||||
element-resize-detector: 1.2.3
|
||||
font-awesome: 4.7.0
|
||||
lodash-es: 4.17.21
|
||||
lowdb: 3.0.0
|
||||
mitt: 3.0.0
|
||||
mockjs: 1.1.0
|
||||
nprogress: 0.2.0
|
||||
path: 0.12.7
|
||||
path-to-regexp: 6.2.0
|
||||
pinia: 2.0.0_typescript@4.4.2+vue@3.2.21
|
||||
resize-observer-polyfill: 1.5.1
|
||||
responsive-storage: 1.0.11_vue@3.2.21
|
||||
sortablejs: 1.13.0
|
||||
typescript-cookie: 1.0.0
|
||||
v-contextmenu: 3.0.0_vue@3.2.21
|
||||
vue: 3.2.21
|
||||
vue-i18n: 9.2.0-beta.17_vue@3.2.21
|
||||
vue-json-pretty: 2.0.4_vue@3.2.21
|
||||
vue-router: 4.0.12_vue@3.2.21
|
||||
vue-types: 4.1.1_vue@3.2.21
|
||||
vuedraggable: 4.1.0_vue@3.2.21
|
||||
vxe-table: 4.0.30_vue@3.2.21+xe-utils@3.4.0
|
||||
wangeditor: 4.7.7
|
||||
xe-ajax: 4.0.5
|
||||
xe-utils: 3.4.0
|
||||
xgplayer: 2.28.0
|
||||
devDependencies:
|
||||
"@commitlint/cli": 13.1.0
|
||||
"@commitlint/config-conventional": 13.1.0
|
||||
"@types/element-resize-detector": 1.1.3
|
||||
"@types/mockjs": 1.0.3
|
||||
"@types/node": 14.14.14
|
||||
"@types/nprogress": 0.2.0
|
||||
"@typescript-eslint/eslint-plugin": 4.31.0_f4e6dc0776b3600ef484e3c64a523136
|
||||
"@typescript-eslint/parser": 4.31.0_eslint@7.30.0+typescript@4.4.2
|
||||
"@vitejs/plugin-vue": 1.6.0_@vue+compiler-sfc@3.2.20
|
||||
"@vitejs/plugin-vue-jsx": 1.1.7
|
||||
"@vue/compiler-sfc": 3.2.20
|
||||
"@vue/eslint-config-prettier": 6.0.0_82e4252401b0cc5be86f7c2133946f49
|
||||
"@vue/eslint-config-typescript": 7.0.0_e03d82996bd4a66fb128f33523d782ea
|
||||
"@zougt/vite-plugin-theme-preprocessor": 1.3.4_sass@1.38.0
|
||||
autoprefixer: 10.2.4_postcss@8.2.6
|
||||
babel-plugin-transform-remove-console: 6.9.4
|
||||
chalk: 2.4.2
|
||||
cross-env: 7.0.3
|
||||
eslint: 7.30.0
|
||||
eslint-plugin-prettier: 3.4.0_eslint@7.30.0+prettier@2.3.2
|
||||
eslint-plugin-vue: 7.17.0_eslint@7.30.0
|
||||
husky: 7.0.2
|
||||
lint-staged: 11.1.2
|
||||
postcss: 8.2.6
|
||||
postcss-import: 14.0.0_postcss@8.2.6
|
||||
prettier: 2.3.2
|
||||
pretty-quick: 3.1.1_prettier@2.3.2
|
||||
rimraf: 3.0.2
|
||||
sass: 1.38.0
|
||||
sass-loader: 12.1.0_sass@1.38.0
|
||||
stylelint: 13.13.1
|
||||
stylelint-config-prettier: 8.0.2_stylelint@13.13.1
|
||||
stylelint-config-standard: 22.0.0_stylelint@13.13.1
|
||||
stylelint-order: 4.1.0_stylelint@13.13.1
|
||||
typescript: 4.4.2
|
||||
unplugin-element-plus: 0.1.3_vite@2.6.13+vue@3.2.21
|
||||
vite: 2.6.13_sass@1.38.0
|
||||
vite-plugin-mock: 2.9.6_mockjs@1.1.0+vite@2.6.13
|
||||
vite-plugin-style-import: 1.3.0_vite@2.6.13
|
||||
vite-svg-loader: 2.2.0
|
||||
vue-eslint-parser: 7.10.0_eslint@7.30.0
|
||||
specifiers:
|
||||
"@amap/amap-jsapi-loader": ^1.0.1
|
||||
"@commitlint/cli": 13.1.0
|
||||
"@commitlint/config-conventional": 13.1.0
|
||||
"@element-plus/icons": ^0.0.11
|
||||
"@logicflow/core": 0.7.1
|
||||
"@logicflow/extension": 0.7.1
|
||||
"@types/element-resize-detector": 1.1.3
|
||||
"@types/mockjs": 1.0.3
|
||||
"@types/node": 14.14.14
|
||||
"@types/nprogress": 0.2.0
|
||||
"@typescript-eslint/eslint-plugin": 4.31.0
|
||||
"@typescript-eslint/parser": 4.31.0
|
||||
"@vitejs/plugin-vue": ^1.9.4
|
||||
"@vitejs/plugin-vue-jsx": ^1.2.0
|
||||
"@vue/compiler-sfc": ^3.2.21
|
||||
"@vue/eslint-config-prettier": 6.0.0
|
||||
"@vue/eslint-config-typescript": 7.0.0
|
||||
"@vueuse/core": ^6.7.1
|
||||
"@vueuse/motion": ^2.0.0-beta.4
|
||||
"@zougt/vite-plugin-theme-preprocessor": ^1.3.4
|
||||
animate.css: ^4.1.1
|
||||
autoprefixer: 10.2.4
|
||||
await-to-js: ^3.0.0
|
||||
axios: ^0.21.1
|
||||
babel-plugin-transform-remove-console: 6.9.4
|
||||
chalk: 2.4.2
|
||||
cropperjs: ^1.5.11
|
||||
cross-env: 7.0.3
|
||||
dayjs: ^1.10.7
|
||||
echarts: ^5.2.1
|
||||
element-plus: ^1.2.0-beta.2
|
||||
element-resize-detector: ^1.2.3
|
||||
eslint: 7.30.0
|
||||
eslint-plugin-prettier: 3.4.0
|
||||
eslint-plugin-vue: 7.17.0
|
||||
font-awesome: ^4.7.0
|
||||
husky: 7.0.2
|
||||
lint-staged: 11.1.2
|
||||
lodash-es: ^4.17.21
|
||||
lowdb: ^3.0.0
|
||||
mitt: ^3.0.0
|
||||
mockjs: ^1.1.0
|
||||
nprogress: ^0.2.0
|
||||
path: ^0.12.7
|
||||
path-to-regexp: ^6.2.0
|
||||
pinia: ^2.0.0-rc.14
|
||||
postcss: 8.2.6
|
||||
postcss-import: 14.0.0
|
||||
prettier: 2.3.2
|
||||
pretty-quick: 3.1.1
|
||||
resize-observer-polyfill: ^1.5.1
|
||||
responsive-storage: ^1.0.11
|
||||
rimraf: 3.0.2
|
||||
sass: 1.32.8
|
||||
sass-loader: 12.1.0
|
||||
sortablejs: 1.13.0
|
||||
stylelint: 13.13.1
|
||||
stylelint-config-prettier: 8.0.2
|
||||
stylelint-config-standard: 22.0.0
|
||||
stylelint-order: 4.1.0
|
||||
typescript: 4.4.2
|
||||
typescript-cookie: ^1.0.0
|
||||
unplugin-element-plus: ^0.1.0
|
||||
v-contextmenu: 3.0.0
|
||||
vite: latest
|
||||
vite-plugin-mock: ^2.9.6
|
||||
vite-plugin-style-import: ^1.2.1
|
||||
vite-svg-loader: ^2.2.0
|
||||
vue: ^3.2.21
|
||||
vue-eslint-parser: 7.10.0
|
||||
vue-i18n: ^9.2.0-beta.3
|
||||
vue-json-pretty: ^2.0.2
|
||||
vue-router: ^4.0.11
|
||||
vue-types: ^4.1.0
|
||||
vuedraggable: 4.1.0
|
||||
vxe-table: 4.0.30
|
||||
wangeditor: 4.7.7
|
||||
xe-ajax: 4.0.5
|
||||
xe-utils: 3.4.0
|
||||
xgplayer: 2.28.0
|
||||
|
||||
dependencies:
|
||||
"@amap/amap-jsapi-loader": 1.0.1
|
||||
"@element-plus/icons": 0.0.11
|
||||
"@logicflow/core": 0.7.1
|
||||
"@logicflow/extension": 0.7.1
|
||||
"@vueuse/core": 6.7.5_vue@3.2.21
|
||||
"@vueuse/motion": 2.0.0-beta.4_vue@3.2.21
|
||||
animate.css: 4.1.1
|
||||
await-to-js: 3.0.0
|
||||
axios: 0.21.4
|
||||
cropperjs: 1.5.12
|
||||
dayjs: 1.10.7
|
||||
echarts: 5.2.2
|
||||
element-plus: 1.2.0-beta.2_vue@3.2.21
|
||||
element-resize-detector: 1.2.3
|
||||
font-awesome: 4.7.0
|
||||
lodash-es: 4.17.21
|
||||
lowdb: 3.0.0
|
||||
mitt: 3.0.0
|
||||
mockjs: 1.1.0
|
||||
nprogress: 0.2.0
|
||||
path: 0.12.7
|
||||
path-to-regexp: 6.2.0
|
||||
pinia: 2.0.2_typescript@4.4.2+vue@3.2.21
|
||||
resize-observer-polyfill: 1.5.1
|
||||
responsive-storage: 1.0.11_vue@3.2.21
|
||||
sortablejs: 1.13.0
|
||||
typescript-cookie: 1.0.0
|
||||
v-contextmenu: 3.0.0_vue@3.2.21
|
||||
vue: 3.2.21
|
||||
vue-i18n: 9.2.0-beta.17_vue@3.2.21
|
||||
vue-json-pretty: 2.0.4_vue@3.2.21
|
||||
vue-router: 4.0.12_vue@3.2.21
|
||||
vue-types: 4.1.1_vue@3.2.21
|
||||
vuedraggable: 4.1.0_vue@3.2.21
|
||||
vxe-table: 4.0.30_vue@3.2.21+xe-utils@3.4.0
|
||||
wangeditor: 4.7.7
|
||||
xe-ajax: 4.0.5
|
||||
xe-utils: 3.4.0
|
||||
xgplayer: 2.28.0
|
||||
|
||||
devDependencies:
|
||||
"@commitlint/cli": 13.1.0
|
||||
"@commitlint/config-conventional": 13.1.0
|
||||
"@types/element-resize-detector": 1.1.3
|
||||
"@types/mockjs": 1.0.3
|
||||
"@types/node": 14.14.14
|
||||
"@types/nprogress": 0.2.0
|
||||
"@typescript-eslint/eslint-plugin": 4.31.0_f4e6dc0776b3600ef484e3c64a523136
|
||||
"@typescript-eslint/parser": 4.31.0_eslint@7.30.0+typescript@4.4.2
|
||||
"@vitejs/plugin-vue": 1.9.4_vite@2.6.13
|
||||
"@vitejs/plugin-vue-jsx": 1.2.0
|
||||
"@vue/compiler-sfc": 3.2.21
|
||||
"@vue/eslint-config-prettier": 6.0.0_82e4252401b0cc5be86f7c2133946f49
|
||||
"@vue/eslint-config-typescript": 7.0.0_e03d82996bd4a66fb128f33523d782ea
|
||||
"@zougt/vite-plugin-theme-preprocessor": 1.3.5_sass@1.32.8
|
||||
autoprefixer: 10.2.4_postcss@8.2.6
|
||||
babel-plugin-transform-remove-console: 6.9.4
|
||||
chalk: 2.4.2
|
||||
cross-env: 7.0.3
|
||||
eslint: 7.30.0
|
||||
eslint-plugin-prettier: 3.4.0_eslint@7.30.0+prettier@2.3.2
|
||||
eslint-plugin-vue: 7.17.0_eslint@7.30.0
|
||||
husky: 7.0.2
|
||||
lint-staged: 11.1.2
|
||||
postcss: 8.2.6
|
||||
postcss-import: 14.0.0_postcss@8.2.6
|
||||
prettier: 2.3.2
|
||||
pretty-quick: 3.1.1_prettier@2.3.2
|
||||
rimraf: 3.0.2
|
||||
sass: 1.32.8
|
||||
sass-loader: 12.1.0_sass@1.32.8
|
||||
stylelint: 13.13.1
|
||||
stylelint-config-prettier: 8.0.2_stylelint@13.13.1
|
||||
stylelint-config-standard: 22.0.0_stylelint@13.13.1
|
||||
stylelint-order: 4.1.0_stylelint@13.13.1
|
||||
typescript: 4.4.2
|
||||
unplugin-element-plus: 0.1.3_vite@2.6.13+vue@3.2.21
|
||||
vite: 2.6.13_sass@1.32.8
|
||||
vite-plugin-mock: 2.9.6_mockjs@1.1.0+vite@2.6.13
|
||||
vite-plugin-style-import: 1.3.0_vite@2.6.13
|
||||
vite-svg-loader: 2.2.0
|
||||
vue-eslint-parser: 7.10.0_eslint@7.30.0
|
||||
|
||||
packages:
|
||||
/@amap/amap-jsapi-loader/1.0.1:
|
||||
@ -1263,10 +1263,10 @@ packages:
|
||||
eslint-visitor-keys: 2.1.0
|
||||
dev: true
|
||||
|
||||
/@vitejs/plugin-vue-jsx/1.1.7:
|
||||
/@vitejs/plugin-vue-jsx/1.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-lomCrTZ/LXUk8L+1fBX4dpW+L/S7qY4+pzS5BRG2NuLpjo26Efh4yb8nDkYM7b8COS3ea7otis0SsqD8vGOSlg==
|
||||
integrity: sha512-Y4Er2bn8bHNiUziJizcVT1yQKTq6oOJeBrKkxvjo2yKT/RTSK1ZlkP/qnzchxxuBkx0tYG4Aaxbb9xuVnNNDEA==
|
||||
}
|
||||
engines: { node: ">=12.0.0" }
|
||||
dependencies:
|
||||
@ -1280,16 +1280,16 @@ packages:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@vitejs/plugin-vue/1.6.0_@vue+compiler-sfc@3.2.20:
|
||||
/@vitejs/plugin-vue/1.9.4_vite@2.6.13:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-n3i8htn8pTg9M+kM3cnEfsPZx/6ngInlTroth6fA1LQTJq5aTVQ8ggaE5pPoAy9vCgHPtcaXMzwpldhqRAkebQ==
|
||||
integrity: sha512-0CZqaCoChriPTTtGkERy1LGPcYjGFpi2uYRhBPIkqJqUGV5JnJFhQAgh6oH9j5XZHfrRaisX8W0xSpO4T7S78A==
|
||||
}
|
||||
engines: { node: ">=12.0.0" }
|
||||
peerDependencies:
|
||||
"@vue/compiler-sfc": ^3.2.6
|
||||
vite: ^2.5.10
|
||||
dependencies:
|
||||
"@vue/compiler-sfc": 3.2.20
|
||||
vite: 2.6.13_sass@1.32.8
|
||||
dev: true
|
||||
|
||||
/@vue/babel-helper-vue-transform-on/1.0.2:
|
||||
@ -1319,18 +1319,6 @@ packages:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/@vue/compiler-core/3.2.20:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vcEXlKXoPwBXFP5aUTHN9GTZaDfwCofa9Yu9bbW2C5O/QSa9Esdt7OG4+0RRd3EHEMxUvEdj4RZrd/KpQeiJbA==
|
||||
}
|
||||
dependencies:
|
||||
"@babel/parser": 7.16.2
|
||||
"@vue/shared": 3.2.20
|
||||
estree-walker: 2.0.2
|
||||
source-map: 0.6.1
|
||||
dev: true
|
||||
|
||||
/@vue/compiler-core/3.2.21:
|
||||
resolution:
|
||||
{
|
||||
@ -1341,17 +1329,6 @@ packages:
|
||||
"@vue/shared": 3.2.21
|
||||
estree-walker: 2.0.2
|
||||
source-map: 0.6.1
|
||||
dev: false
|
||||
|
||||
/@vue/compiler-dom/3.2.20:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-QnI77ec/JtV7R0YBbcVayYTDCRcI9OCbxiUQK6izVyqQO0658n0zQuoNwe+bYgtqnvGAIqTR3FShTd5y4oOjdg==
|
||||
}
|
||||
dependencies:
|
||||
"@vue/compiler-core": 3.2.20
|
||||
"@vue/shared": 3.2.20
|
||||
dev: true
|
||||
|
||||
/@vue/compiler-dom/3.2.21:
|
||||
resolution:
|
||||
@ -1361,25 +1338,6 @@ packages:
|
||||
dependencies:
|
||||
"@vue/compiler-core": 3.2.21
|
||||
"@vue/shared": 3.2.21
|
||||
dev: false
|
||||
|
||||
/@vue/compiler-sfc/3.2.20:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-03aZo+6tQKiFLfunHKSPZvdK4Jsn/ftRCyaro8AQIWkuxJbvSosbKK6HTTn+D2c3nPScG155akJoxKENw7rftQ==
|
||||
}
|
||||
dependencies:
|
||||
"@babel/parser": 7.16.2
|
||||
"@vue/compiler-core": 3.2.20
|
||||
"@vue/compiler-dom": 3.2.20
|
||||
"@vue/compiler-ssr": 3.2.20
|
||||
"@vue/ref-transform": 3.2.20
|
||||
"@vue/shared": 3.2.20
|
||||
estree-walker: 2.0.2
|
||||
magic-string: 0.25.7
|
||||
postcss: 8.2.6
|
||||
source-map: 0.6.1
|
||||
dev: true
|
||||
|
||||
/@vue/compiler-sfc/3.2.21:
|
||||
resolution:
|
||||
@ -1397,17 +1355,6 @@ packages:
|
||||
magic-string: 0.25.7
|
||||
postcss: 8.3.11
|
||||
source-map: 0.6.1
|
||||
dev: false
|
||||
|
||||
/@vue/compiler-ssr/3.2.20:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-rzzVVYivm+EjbfiGQvNeyiYZWzr6Hkej97RZLZvcumacQlnKv9176Xo9rRyeWwFbBlxmtNdrVMslRXtipMXk2w==
|
||||
}
|
||||
dependencies:
|
||||
"@vue/compiler-dom": 3.2.20
|
||||
"@vue/shared": 3.2.20
|
||||
dev: true
|
||||
|
||||
/@vue/compiler-ssr/3.2.21:
|
||||
resolution:
|
||||
@ -1417,12 +1364,11 @@ packages:
|
||||
dependencies:
|
||||
"@vue/compiler-dom": 3.2.21
|
||||
"@vue/shared": 3.2.21
|
||||
dev: false
|
||||
|
||||
/@vue/devtools-api/6.0.0-beta.19:
|
||||
/@vue/devtools-api/6.0.0-beta.20:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ObzQhgkoVeoyKv+e8+tB/jQBL2smtk/NmC9OmFK8UqdDpoOdv/Kf9pyDWL+IFyM7qLD2C75rszJujvGSPSpGlw==
|
||||
integrity: sha512-21u2jFOk8jbAneeGpDwZQ0W66RJa0IBDUyVl6SgKnn2cRFjLWzKj+ukXjpLhYr1KASyCe5E5U4jXwChVo0YUAw==
|
||||
}
|
||||
dev: false
|
||||
|
||||
@ -1472,19 +1418,6 @@ packages:
|
||||
"@vue/shared": 3.2.21
|
||||
dev: false
|
||||
|
||||
/@vue/ref-transform/3.2.20:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Y42d3PGlYZ1lXcF3dbd3+qU/C/a3wYEZ949fyOI5ptzkjDWlkfU6vn74fmOjsLjEcjs10BXK2qO99FqQIK2r1Q==
|
||||
}
|
||||
dependencies:
|
||||
"@babel/parser": 7.16.2
|
||||
"@vue/compiler-core": 3.2.20
|
||||
"@vue/shared": 3.2.20
|
||||
estree-walker: 2.0.2
|
||||
magic-string: 0.25.7
|
||||
dev: true
|
||||
|
||||
/@vue/ref-transform/3.2.21:
|
||||
resolution:
|
||||
{
|
||||
@ -1496,7 +1429,6 @@ packages:
|
||||
"@vue/shared": 3.2.21
|
||||
estree-walker: 2.0.2
|
||||
magic-string: 0.25.7
|
||||
dev: false
|
||||
|
||||
/@vue/runtime-core/3.2.21:
|
||||
resolution:
|
||||
@ -1532,24 +1464,16 @@ packages:
|
||||
vue: 3.2.21
|
||||
dev: false
|
||||
|
||||
/@vue/shared/3.2.20:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-FbpX+hD5BvXCQerEYO7jtAGHlhAkhTQ4KIV73kmLWNlawWhTiVuQxizgVb0BOkX5oG9cIRZ42EG++d/k/Efp0w==
|
||||
}
|
||||
dev: true
|
||||
|
||||
/@vue/shared/3.2.21:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-5EQmIPK6gw4UVYUbM959B0uPsJ58+xoMESCZs3N89XyvJ9e+fX4pqEPrOGV8OroIk3SbEvJcC+eYc8BH9JQrHA==
|
||||
}
|
||||
dev: false
|
||||
|
||||
/@vueuse/core/6.7.4_vue@3.2.21:
|
||||
/@vueuse/core/6.7.5_vue@3.2.21:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-y39SD+pxDkv7/Fe369c02FQpr/148otQr64ScPDTpw4fGnspc8ONXCNU3gTrvDFRuiylirdPBpXgmt/GDQO7RA==
|
||||
integrity: sha512-zgWai0i38TbfWGMVs1ybyEEdwwhjjMloQflRTMU0+pTmp3kEtQTDiVZiOrr758s+yRdr2OQiMQ323dyiKgKMFQ==
|
||||
}
|
||||
peerDependencies:
|
||||
"@vue/composition-api": ^1.1.0
|
||||
@ -1560,9 +1484,9 @@ packages:
|
||||
vue:
|
||||
optional: true
|
||||
dependencies:
|
||||
"@vueuse/shared": 6.7.4_vue@3.2.21
|
||||
"@vueuse/shared": 6.7.5_vue@3.2.21
|
||||
vue: 3.2.21
|
||||
vue-demi: 0.12.0_vue@3.2.21
|
||||
vue-demi: 0.12.1_vue@3.2.21
|
||||
dev: false
|
||||
|
||||
/@vueuse/motion/2.0.0-beta.4_vue@3.2.21:
|
||||
@ -1577,16 +1501,16 @@ packages:
|
||||
"@vue/composition-api":
|
||||
optional: true
|
||||
dependencies:
|
||||
"@vueuse/core": 6.7.4_vue@3.2.21
|
||||
"@vueuse/core": 6.7.5_vue@3.2.21
|
||||
popmotion: 10.0.2
|
||||
vue: 3.2.21
|
||||
vue-demi: 0.12.0_vue@3.2.21
|
||||
vue-demi: 0.12.1_vue@3.2.21
|
||||
dev: false
|
||||
|
||||
/@vueuse/shared/6.7.4_vue@3.2.21:
|
||||
/@vueuse/shared/6.7.5_vue@3.2.21:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Lkm8myEiOj0sIqSXck5EXDbu0W705Q10BxydGLMfiV6wAY4U1zu+YgEgR37Wy2/mT1545pwQqiJ7bd3kQQFCMw==
|
||||
integrity: sha512-wUDMPTGUSTYsbiftKq7dYLKD2i3n0m8utbHBCyoxdyeKsmtQGIM2/XeeXjtALB7UXD6rqPsVgCMepNrPPt8zvw==
|
||||
}
|
||||
peerDependencies:
|
||||
"@vue/composition-api": ^1.1.0
|
||||
@ -1598,10 +1522,10 @@ packages:
|
||||
optional: true
|
||||
dependencies:
|
||||
vue: 3.2.21
|
||||
vue-demi: 0.12.0_vue@3.2.21
|
||||
vue-demi: 0.12.1_vue@3.2.21
|
||||
dev: false
|
||||
|
||||
/@zougt/some-loader-utils/1.3.3_sass@1.38.0:
|
||||
/@zougt/some-loader-utils/1.3.3_sass@1.32.8:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-94xWLhku6OpnJeplK+oXH60ug5dsR8bxc0KPAN7QvM36/EpI4PqLCrgbHCdbozSPsRYwF5vKrGIyjkShN/2JIQ==
|
||||
@ -1613,17 +1537,17 @@ packages:
|
||||
dependencies:
|
||||
parse-color: 1.0.0
|
||||
postcss: 8.3.11
|
||||
sass: 1.38.0
|
||||
sass: 1.32.8
|
||||
dev: true
|
||||
|
||||
/@zougt/vite-plugin-theme-preprocessor/1.3.4_sass@1.38.0:
|
||||
/@zougt/vite-plugin-theme-preprocessor/1.3.5_sass@1.32.8:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-8XJFHl//aydnUenRJACE8u2NFe9thM2/AUAgn3AEG6AgxjoOZlE4WBHSoM2g48dy/CLE8FCLOQ/9iy7Ch6T0Ag==
|
||||
integrity: sha512-vOp/nIKLe3oKY6W50iJjPgh/vw5RwCX0hMcaDvBdEhTdQjw9jBLosvBCoe5LuM/Wx0eNmng0b/3Svw+/Iji4yw==
|
||||
}
|
||||
engines: { node: ">= 12.0.0" }
|
||||
dependencies:
|
||||
"@zougt/some-loader-utils": 1.3.3_sass@1.38.0
|
||||
"@zougt/some-loader-utils": 1.3.3_sass@1.32.8
|
||||
fs-extra: 9.1.0
|
||||
string-hash: 1.1.3
|
||||
transitivePeerDependencies:
|
||||
@ -1848,7 +1772,7 @@ packages:
|
||||
postcss: ^8.1.0
|
||||
dependencies:
|
||||
browserslist: 4.17.6
|
||||
caniuse-lite: 1.0.30001275
|
||||
caniuse-lite: 1.0.30001276
|
||||
colorette: 1.4.0
|
||||
fraction.js: 4.1.1
|
||||
normalize-range: 0.1.2
|
||||
@ -1864,7 +1788,7 @@ packages:
|
||||
hasBin: true
|
||||
dependencies:
|
||||
browserslist: 4.17.6
|
||||
caniuse-lite: 1.0.30001275
|
||||
caniuse-lite: 1.0.30001276
|
||||
normalize-range: 0.1.2
|
||||
num2fraction: 1.2.2
|
||||
picocolors: 0.2.1
|
||||
@ -1960,8 +1884,8 @@ packages:
|
||||
engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 }
|
||||
hasBin: true
|
||||
dependencies:
|
||||
caniuse-lite: 1.0.30001275
|
||||
electron-to-chromium: 1.3.887
|
||||
caniuse-lite: 1.0.30001276
|
||||
electron-to-chromium: 1.3.888
|
||||
escalade: 3.1.1
|
||||
node-releases: 2.0.1
|
||||
picocolors: 1.0.0
|
||||
@ -2028,10 +1952,10 @@ packages:
|
||||
engines: { node: ">=10" }
|
||||
dev: true
|
||||
|
||||
/caniuse-lite/1.0.30001275:
|
||||
/caniuse-lite/1.0.30001276:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ihJVvj8RX0kn9GgP43HKhb5q9s2XQn4nEQhdldEJvZhCsuiB2XOq6fAMYQZaN6FPWfsr2qU0cdL0CSbETwbJAg==
|
||||
integrity: sha512-psUNoaG1ilknZPxi8HuhQWobuhLqtYSRUxplfVkEJdgZNB9TETVYGSBtv4YyfAdGvE6gn2eb0ztiXqHoWJcGnw==
|
||||
}
|
||||
dev: true
|
||||
|
||||
@ -2702,10 +2626,10 @@ packages:
|
||||
resolution: { integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= }
|
||||
dev: true
|
||||
|
||||
/electron-to-chromium/1.3.887:
|
||||
/electron-to-chromium/1.3.888:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-QQUumrEjFDKSVYVdaeBmFdyQGoaV+fCSMyWHvfx/u22bRHSTeBQYt6P4jMY+gFd4kgKB9nqk7RMtWkDB49OYPA==
|
||||
integrity: sha512-5iD1zgyPpFER4kJ716VsA4MxQ6x405dxdFNCEK2mITL075VHO5ResjY0xzQUZguCww/KlBxCA6JmBA9sDt1PRw==
|
||||
}
|
||||
dev: true
|
||||
|
||||
@ -2719,7 +2643,7 @@ packages:
|
||||
dependencies:
|
||||
"@element-plus/icons": 0.0.11
|
||||
"@popperjs/core": 2.10.2
|
||||
"@vueuse/core": 6.7.4_vue@3.2.21
|
||||
"@vueuse/core": 6.7.5_vue@3.2.21
|
||||
async-validator: 4.0.7
|
||||
dayjs: 1.10.7
|
||||
lodash: 4.17.21
|
||||
@ -3801,7 +3725,7 @@ packages:
|
||||
array-union: 2.1.0
|
||||
dir-glob: 3.0.1
|
||||
fast-glob: 3.2.7
|
||||
ignore: 5.1.8
|
||||
ignore: 5.1.9
|
||||
merge2: 1.4.1
|
||||
slash: 3.0.0
|
||||
dev: true
|
||||
@ -3960,10 +3884,10 @@ packages:
|
||||
engines: { node: ">= 4" }
|
||||
dev: true
|
||||
|
||||
/ignore/5.1.8:
|
||||
/ignore/5.1.9:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
|
||||
integrity: sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==
|
||||
}
|
||||
engines: { node: ">= 4" }
|
||||
dev: true
|
||||
@ -5113,13 +5037,13 @@ packages:
|
||||
engines: { node: ">=0.10.0" }
|
||||
dev: true
|
||||
|
||||
/pinia/2.0.0_typescript@4.4.2+vue@3.2.21:
|
||||
/pinia/2.0.2_typescript@4.4.2+vue@3.2.21:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-pqnQv1m7oEwYExGl//EtOn9rgFn7gtXECP/hZHy+WicmHXmWWkbsvpR+9z1xxrIgDOmVYuh1eYfRULJklzOKsQ==
|
||||
integrity: sha512-ljN+9p9XHE8YrMBgxLbpo5rdVPj7Fri4Bl9qswz5dJPeoK6ra66YOLrGpBoCsHjAqu9jOBC3oJeErocicf51oA==
|
||||
}
|
||||
peerDependencies:
|
||||
"@vue/composition-api": ^1.2.4
|
||||
"@vue/composition-api": ^1.3.0
|
||||
typescript: ^4.4.4
|
||||
vue: ^2.6.14 || ^3.2.0
|
||||
peerDependenciesMeta:
|
||||
@ -5128,10 +5052,10 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
"@vue/devtools-api": 6.0.0-beta.19
|
||||
"@vue/devtools-api": 6.0.0-beta.20
|
||||
typescript: 4.4.2
|
||||
vue: 3.2.21
|
||||
vue-demi: 0.12.0_vue@3.2.21
|
||||
vue-demi: 0.12.1_vue@3.2.21
|
||||
dev: false
|
||||
|
||||
/please-upgrade-node/3.2.0:
|
||||
@ -5353,7 +5277,7 @@ packages:
|
||||
chalk: 3.0.0
|
||||
execa: 4.1.0
|
||||
find-up: 4.1.0
|
||||
ignore: 5.1.8
|
||||
ignore: 5.1.9
|
||||
mri: 1.2.0
|
||||
multimatch: 4.0.0
|
||||
prettier: 2.3.2
|
||||
@ -5666,7 +5590,7 @@ packages:
|
||||
}
|
||||
dev: true
|
||||
|
||||
/sass-loader/12.1.0_sass@1.38.0:
|
||||
/sass-loader/12.1.0_sass@1.32.8:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==
|
||||
@ -5687,13 +5611,13 @@ packages:
|
||||
dependencies:
|
||||
klona: 2.0.5
|
||||
neo-async: 2.6.2
|
||||
sass: 1.38.0
|
||||
sass: 1.32.8
|
||||
dev: true
|
||||
|
||||
/sass/1.38.0:
|
||||
/sass/1.32.8:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-WBccZeMigAGKoI+NgD7Adh0ab1HUq+6BmyBUEaGxtErbUtWUevEbdgo5EZiJQofLUGcKtlNaO2IdN73AHEua5g==
|
||||
integrity: sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ==
|
||||
}
|
||||
engines: { node: ">=8.9.0" }
|
||||
hasBin: true
|
||||
@ -6110,7 +6034,7 @@ packages:
|
||||
globby: 11.0.4
|
||||
globjoin: 0.1.4
|
||||
html-tags: 3.1.0
|
||||
ignore: 5.1.8
|
||||
ignore: 5.1.9
|
||||
import-lazy: 4.0.0
|
||||
imurmurhash: 0.1.4
|
||||
known-css-properties: 0.21.0
|
||||
@ -6537,7 +6461,7 @@ packages:
|
||||
webpack:
|
||||
optional: true
|
||||
dependencies:
|
||||
vite: 2.6.13_sass@1.38.0
|
||||
vite: 2.6.13_sass@1.32.8
|
||||
webpack-virtual-modules: 0.4.3
|
||||
dev: true
|
||||
|
||||
@ -6657,7 +6581,7 @@ packages:
|
||||
fast-glob: 3.2.7
|
||||
mockjs: 1.1.0
|
||||
path-to-regexp: 6.2.0
|
||||
vite: 2.6.13_sass@1.38.0
|
||||
vite: 2.6.13_sass@1.32.8
|
||||
transitivePeerDependencies:
|
||||
- rollup
|
||||
- supports-color
|
||||
@ -6676,7 +6600,7 @@ packages:
|
||||
debug: 4.3.2
|
||||
es-module-lexer: 0.9.3
|
||||
magic-string: 0.25.7
|
||||
vite: 2.6.13_sass@1.38.0
|
||||
vite: 2.6.13_sass@1.32.8
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
@ -6687,11 +6611,11 @@ packages:
|
||||
integrity: sha512-FP6qCN57coIOwmtah68ofpi4dewGmfzPcoKe76RMnJoz7qBTXxQVm2BlnH0YzGeCbOcjm9NKauJ1I6J9OlUUtg==
|
||||
}
|
||||
dependencies:
|
||||
"@vue/compiler-sfc": 3.2.20
|
||||
"@vue/compiler-sfc": 3.2.21
|
||||
svgo: 2.8.0
|
||||
dev: true
|
||||
|
||||
/vite/2.6.13_sass@1.38.0:
|
||||
/vite/2.6.13_sass@1.32.8:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-+tGZ1OxozRirTudl4M3N3UTNJOlxdVo/qBl2IlDEy/ZpTFcskp+k5ncNjayR3bRYTCbqSOFz2JWGN1UmuDMScA==
|
||||
@ -6714,15 +6638,15 @@ packages:
|
||||
postcss: 8.3.11
|
||||
resolve: 1.20.0
|
||||
rollup: 2.59.0
|
||||
sass: 1.38.0
|
||||
sass: 1.32.8
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.2
|
||||
dev: true
|
||||
|
||||
/vue-demi/0.12.0_vue@3.2.21:
|
||||
/vue-demi/0.12.1_vue@3.2.21:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-eggsbQSQEJKlvQrtrJLx4J44MIVq5+Z7QetIEh1Na+ZWLgt5Fq0qskQ1QmckTTEoFcUdn36c4K23EjtXZhws7w==
|
||||
integrity: sha512-QL3ny+wX8c6Xm1/EZylbgzdoDolye+VpCXRhI2hug9dJTP3OUJ3lmiKN3CsVV3mOJKwFi0nsstbgob0vG7aoIw==
|
||||
}
|
||||
engines: { node: ">=12" }
|
||||
hasBin: true
|
||||
@ -6770,7 +6694,7 @@ packages:
|
||||
"@intlify/core-base": 9.2.0-beta.17
|
||||
"@intlify/shared": 9.2.0-beta.17
|
||||
"@intlify/vue-devtools": 9.2.0-beta.17
|
||||
"@vue/devtools-api": 6.0.0-beta.19
|
||||
"@vue/devtools-api": 6.0.0-beta.20
|
||||
vue: 3.2.21
|
||||
dev: false
|
||||
|
||||
@ -6794,7 +6718,7 @@ packages:
|
||||
peerDependencies:
|
||||
vue: ^3.0.0
|
||||
dependencies:
|
||||
"@vue/devtools-api": 6.0.0-beta.19
|
||||
"@vue/devtools-api": 6.0.0-beta.20
|
||||
vue: 3.2.21
|
||||
dev: false
|
||||
|
||||
|
@ -1,6 +0,0 @@
|
||||
#
|
||||
packages:
|
||||
- "build/**"
|
||||
- "mock/**"
|
||||
- "src/**"
|
||||
- "types/**"
|
@ -15,8 +15,3 @@ export const getVerify = (): userType => {
|
||||
export const getLogin = (data: object) => {
|
||||
return http.request("post", "/login", data);
|
||||
};
|
||||
|
||||
// 注册
|
||||
export const getRegist = (data: object): userType => {
|
||||
return http.request("post", "/register", data);
|
||||
};
|
||||
|
@ -1,8 +1,8 @@
|
||||
@font-face {
|
||||
font-family: "iconfont"; /* Project id 2208059 */
|
||||
src: url("iconfont.woff2?t=1636070926069") format("woff2"),
|
||||
url("iconfont.woff?t=1636070926069") format("woff"),
|
||||
url("iconfont.ttf?t=1636070926069") format("truetype");
|
||||
src: url("iconfont.woff2?t=1636197082361") format("woff2"),
|
||||
url("iconfont.woff?t=1636197082361") format("woff"),
|
||||
url("iconfont.ttf?t=1636197082361") format("truetype");
|
||||
}
|
||||
|
||||
.iconfont {
|
||||
@ -13,11 +13,7 @@
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.team-iconshuijin::before {
|
||||
content: "\e621";
|
||||
}
|
||||
|
||||
.team-iconzu2148::before {
|
||||
.team-iconlogo::before {
|
||||
content: "\e620";
|
||||
}
|
||||
|
||||
|
@ -5,17 +5,10 @@
|
||||
"css_prefix_text": "team-icon",
|
||||
"description": "pure-admin",
|
||||
"glyphs": [
|
||||
{
|
||||
"icon_id": "11758211",
|
||||
"name": "水浸",
|
||||
"font_class": "shuijin",
|
||||
"unicode": "e621",
|
||||
"unicode_decimal": 58913
|
||||
},
|
||||
{
|
||||
"icon_id": "22129506",
|
||||
"name": "水能",
|
||||
"font_class": "zu2148",
|
||||
"font_class": "logo",
|
||||
"unicode": "e620",
|
||||
"unicode_decimal": 58912
|
||||
},
|
||||
|
1
src/assets/login/avatar.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg t="1636193306629" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1847" width="32" height="32"><path d="M410.558481 0.10861C410.558481 211.083075 109.682285 361.860579 109.682285 633.656511c0 174.943176 134.703259 316.787527 300.876196 316.787527s300.876197-141.817198 300.876197-316.787527C711.407525 361.751969 410.558481 210.974465 410.558481 0.10861z" fill="#386BF3" p-id="1848"></path><path d="M613.468671 73.664572c0 211.055922-300.876197 361.914883-300.876196 633.547901 0 174.943176 134.703259 316.787527 300.876196 316.787527s300.876197-141.817198 300.876197-316.787527c-0.054305-271.633018-300.876197-422.491979-300.876197-633.547901z" fill="#C3D2FB" p-id="1849"></path><path d="M312.592475 707.212473c0-183.713414 137.635722-312.171612 226.72288-441.390078 81.701694 106.111739 172.119322 218.740063 172.119323 367.725506a309.755045 309.755045 0 0 1-291.074166 316.516003 323.114046 323.114046 0 0 1-107.768037-242.851431z" fill="#303F5B" p-id="1850"></path></svg>
|
After Width: | Height: | Size: 1.0 KiB |
BIN
src/assets/login/bg.png
Normal file
After Width: | Height: | Size: 17 KiB |
1
src/assets/login/illustration0.svg
Normal file
After Width: | Height: | Size: 20 KiB |
1
src/assets/login/illustration1.svg
Normal file
After Width: | Height: | Size: 17 KiB |
1
src/assets/login/illustration2.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" width="500" height="380" viewBox="0 0 896 529.1129" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M832.06729,623.22778s-26.37759,9.89441-38.806,32.94348S787.06,706.69574,787.06,706.69574s26.37759-9.89447,38.806-32.94348S832.06729,623.22778,832.06729,623.22778Z" transform="translate(-158 -185.8871)" fill="#3f3d56"/><path d="M867.5,657.59637s-8.64182,26.814-31.0802,40.31373-50.17651,8.57293-50.17651,8.57293,8.64175-26.81408,31.08017-40.31378S867.5,657.59637,867.5,657.59637Z" transform="translate(-158 -185.8871)" fill="#5392f0"/><rect y="527.1129" width="896" height="2" fill="#2f2e41"/><path d="M519.87238,620.97461a95.44448,95.44448,0,0,1-35.748-14.44629L485.306,604.915a93.36283,93.36283,0,0,0,34.999,14.10547c18.93164,3.40137,47.26075,1.73144,74.707-25.52735,53.41358-53.04785,104.39307-58.39062,104.90186-58.43847l.18652,1.99219c-.50146.04687-50.76806,5.31738-103.67822,57.86621-21.61328,21.46386-43.792,27.40234-61.71777,27.40234A83.49962,83.49962,0,0,1,519.87238,620.97461Z" transform="translate(-158 -185.8871)" fill="#2f2e41"/><circle cx="515.15271" cy="381.1129" r="12" fill="#2f2e41"/><circle cx="430.15271" cy="437.1129" r="12" fill="#2f2e41"/><path d="M841.5,714s-17.46191-5.41315-52.26129-10.84192L790,692.5c6-60-34-150-34-150a401.561,401.561,0,0,1,21.4693,139.0246C772.13214,672.2124,761.82056,662.16638,742,656c0,0,25.77765,22.106,33.15918,45.10175a997.84042,997.84042,0,0,0-102.02258-8.21589L682,672.5l-17,17s-7-51-22-53l11,50s-13-10-16-9l7.39746,14.79486c-49.819-.51654-109.08453,1.7356-177.76581,8.95227L476,682l-17,17s-7-51-22-53l11,50s-13-10-16-9l8.64288,17.28583Q406.9763,708.2897,370.5,714Z" transform="translate(-158 -185.8871)" fill="#3f3d56"/><path d="M565.64813,230.37817c-10.89964,11.74783,17.59745,40.25959,17.59745,40.25959s-57.70662,9.73051-53.12783,9.14083,2.20622-49.13151,2.20622-49.13151S576.54777,218.63035,565.64813,230.37817Z" transform="translate(-158 -185.8871)" fill="#a0616a"/><path d="M605.81236,356.10945l-50.139,25.6141-27.22969,15.6059s-32.09862,40.43116-38.08709,64.39234,25.92963,68.247,29.54371,72.82286a54.36088,54.36088,0,0,1,4.98908,7.42355c1.24727,1.85589,12.02944-.541,23.80342-3.06554S547.13,518.93875,547.13,518.93875s-15.02732-38.39505-16.14686-39.25912c-1.04554-.807-4.60093-7.44631-2.04309-10.35234a25.94993,25.94993,0,0,0,5.44489-8.89825,30.09064,30.09064,0,0,1,4.18709-7.94151s45.361-36.83645,59.52776-49.37835,51.82952-4.65839,51.82952-4.65839-17.78167,68.20027-22.22979,72.80616-4.929,8.70085-2.91535,16.50759,28.28157.39078,28.28157.39078L662.766,461.6996s15.74879-34.2925,24.29946-69.67451c4.27533-17.691-3.88828-28.23462-13.12073-34.35549a41.39094,41.39094,0,0,0-30.02983-5.97766l-46.34848,8.1308,32.14706-13.84923Z" transform="translate(-158 -185.8871)" fill="#2f2e41"/><path d="M420.87777,290.19133,361.02366,271.685s-24.179-31.16689-12.78824-36.6669,25.65172,26.94419,25.65172,26.94419l41.686,2.69751Z" transform="translate(-158 -185.8871)" fill="#a0616a"/><path d="M672.49431,257.78673l53.2121-33.06768s15.49333-36.27612,3.0807-38.71059-17.98787,32.56435-17.98787,32.56435l-39.64232,13.17143Z" transform="translate(-158 -185.8871)" fill="#a0616a"/><path d="M682.45318,220.40023l1.01427,39.19147-89.68779,16.025c13.19231,28.22441,9.84118,60.34675,43.04725,74.4259L524.9027,404.78717c4.9871-43.03806-15.81748-75.456-35.263-115.75876-23.68547-8.58589-51.19594-2.29078-80.33649,10.34619l-5.237-40.66416,123.87841-8.896,20.34848,7.77932,21.81842-9.17677C602.17891,238.88953,648.22076,220.77584,682.45318,220.40023Z" transform="translate(-158 -185.8871)" fill="#5392f0"/><path d="M626.64006,486.51727c-2.72,2.36681-5.25213,21.84984-5.34982,28.92023s9.21178,8.89624,14.29855,9.2494,4.47816,3.45631,7.83678,6.04854,14.39625,2.179,28.89019-2.71238-9.75274-20.92568-11.86409-21.662-11-22.78156-11-22.78156S629.36,484.15046,626.64006,486.51727Z" transform="translate(-158 -185.8871)" fill="#2f2e41"/><path d="M547.368,531.00717c3.23089,1.60043,10.61681,19.80614,12.50274,26.62107s-6.65716,10.93994-11.48848,12.5704-3.45631,4.47816-6.04855,7.83678-13.3744,5.75546-28.63472,4.696,4.13258-22.71391,5.98847-23.96118,4.86893-24.82526,4.86893-24.82526S544.13715,529.40674,547.368,531.00717Z" transform="translate(-158 -185.8871)" fill="#2f2e41"/><circle cx="389.47074" cy="35.42904" r="23.99585" fill="#a0616a"/><path d="M519.73448,218.90923a22.82668,22.82668,0,0,1-.83378-18.59281c2.35891-5.8153,7.59174-11.65569,18.87309-13.4,24.61387-3.80572,37.71267,13.43543,37.02452,19.07449s-3.99294,19.27051-3.99294,19.27051,1.47587-12.90619-4.85883-13.362-30.90178-2.37835-37.12217,4.145a14.23268,14.23268,0,0,0-3.71042,13.82977Z" transform="translate(-158 -185.8871)" fill="#2f2e41"/></svg>
|
After Width: | Height: | Size: 4.6 KiB |
1
src/assets/login/illustration3.svg
Normal file
After Width: | Height: | Size: 11 KiB |
1
src/assets/login/illustration4.svg
Normal file
After Width: | Height: | Size: 12 KiB |
1
src/assets/login/illustration5.svg
Normal file
After Width: | Height: | Size: 29 KiB |
1
src/assets/login/illustration6.svg
Normal file
After Width: | Height: | Size: 11 KiB |
@ -1,232 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
import { ref, PropType, getCurrentInstance, watch, nextTick, toRef } from "vue";
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
import { initRouter } from "/@/router";
|
||||
import { storageSession } from "/@/utils/storage";
|
||||
|
||||
import bgText from "/@/assets/bg-text.png";
|
||||
import bgLogo from "/@/assets/bg-logo.png";
|
||||
|
||||
export interface ContextProps {
|
||||
userName: string;
|
||||
passWord: string;
|
||||
verify: number | null;
|
||||
svg: any;
|
||||
telephone?: number;
|
||||
dynamicText?: string;
|
||||
}
|
||||
|
||||
const props = defineProps({
|
||||
ruleForm: {
|
||||
type: Object as PropType<ContextProps>
|
||||
}
|
||||
});
|
||||
|
||||
const emit = defineEmits<{
|
||||
(e: "onBehavior", evt: Object): void;
|
||||
(e: "refreshVerify"): void;
|
||||
}>();
|
||||
|
||||
const instance = getCurrentInstance();
|
||||
|
||||
const model = toRef(props, "ruleForm");
|
||||
let tips = ref<string>("注册");
|
||||
let tipsFalse = ref<string>("登录");
|
||||
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
|
||||
watch(
|
||||
route,
|
||||
async ({ path }): Promise<void> => {
|
||||
await nextTick();
|
||||
path.includes("register")
|
||||
? (tips.value = "登录") && (tipsFalse.value = "注册")
|
||||
: (tips.value = "注册") && (tipsFalse.value = "登录");
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
const rules = ref<any>({
|
||||
userName: [{ required: true, message: "请输入用户名", trigger: "blur" }],
|
||||
passWord: [
|
||||
{ required: true, message: "请输入密码", trigger: "blur" },
|
||||
{ min: 6, message: "密码长度必须不小于6位", trigger: "blur" }
|
||||
],
|
||||
verify: [
|
||||
{ required: true, message: "请输入验证码", trigger: "blur" },
|
||||
{ type: "number", message: "验证码必须是数字类型", trigger: "blur" }
|
||||
]
|
||||
});
|
||||
|
||||
// 点击登录或注册
|
||||
const onBehavior = (evt: Object): void => {
|
||||
// @ts-expect-error
|
||||
instance.refs.ruleForm.validate((valid: boolean) => {
|
||||
if (valid) {
|
||||
emit("onBehavior", evt);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// 刷新验证码
|
||||
const refreshVerify = (): void => {
|
||||
emit("refreshVerify");
|
||||
};
|
||||
|
||||
// 表单重置
|
||||
const resetForm = (): void => {
|
||||
// @ts-expect-error
|
||||
instance.refs.ruleForm.resetFields();
|
||||
};
|
||||
|
||||
// 登录、注册页面切换
|
||||
const changPage = (): void => {
|
||||
tips.value === "注册" ? router.push("/register") : router.push("/login");
|
||||
};
|
||||
|
||||
const noSecret = (): void => {
|
||||
storageSession.setItem("info", {
|
||||
username: "admin",
|
||||
accessToken: "eyJhbGciOiJIUzUxMiJ9.test"
|
||||
});
|
||||
initRouter("admin").then(() => {});
|
||||
router.push("/");
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<div style="margin: 20px 0 0 10px">
|
||||
<img :src="bgLogo" width="100" height="80" />
|
||||
<img :src="bgText" width="180" height="30" style="margin-bottom: 6px" />
|
||||
</div>
|
||||
<div class="info">
|
||||
<el-form :model="model" :rules="rules" ref="ruleForm" class="rule-form">
|
||||
<el-form-item prop="userName">
|
||||
<el-input
|
||||
clearable
|
||||
v-model="model.userName"
|
||||
placeholder="请输入用户名"
|
||||
prefix-icon="el-icon-user"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item prop="passWord">
|
||||
<el-input
|
||||
clearable
|
||||
type="password"
|
||||
show-password
|
||||
v-model="model.passWord"
|
||||
placeholder="请输入密码"
|
||||
prefix-icon="el-icon-lock"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item prop="verify">
|
||||
<el-input
|
||||
maxlength="2"
|
||||
onkeyup="this.value=this.value.replace(/[^\d.]/g,'');"
|
||||
v-model.number="model.verify"
|
||||
placeholder="请输入验证码"
|
||||
></el-input>
|
||||
<span
|
||||
class="verify"
|
||||
title="刷新"
|
||||
v-html="model.svg"
|
||||
@click.prevent="refreshVerify"
|
||||
></span>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click.prevent="onBehavior">{{
|
||||
tipsFalse
|
||||
}}</el-button>
|
||||
<el-button @click="resetForm">重置</el-button>
|
||||
<span class="tips" @click="changPage">{{ tips }}</span>
|
||||
</el-form-item>
|
||||
<span title="测试用户 直接登录" class="secret" @click="noSecret"
|
||||
>免密登录</span
|
||||
>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.info {
|
||||
width: 30vw;
|
||||
height: 41vh;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
background-color: rgba($color: #fff, $alpha: 0.2);
|
||||
background-size: cover;
|
||||
border-radius: 20px;
|
||||
right: 100px;
|
||||
top: 30vh;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
@media screen and (min-width: 800px) and (max-width: 1200px) {
|
||||
height: 38vh;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 421px) and (max-width: 799px) {
|
||||
width: 45vw;
|
||||
height: 35vh;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 321px) and (max-width: 420px) {
|
||||
width: 80vw;
|
||||
height: 48vh;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 0) and (max-width: 320px) {
|
||||
width: 90vw;
|
||||
height: 55vh;
|
||||
}
|
||||
|
||||
@media screen and (min-height: 600px) and (max-height: 800px) {
|
||||
height: 48vh;
|
||||
}
|
||||
|
||||
@media screen and (min-height: 400px) and (max-height: 599px) {
|
||||
height: 58vh;
|
||||
}
|
||||
|
||||
@media screen and (min-height: 0) and (max-height: 399px) {
|
||||
height: 78vh;
|
||||
}
|
||||
|
||||
.rule-form {
|
||||
width: 80%;
|
||||
|
||||
.verify {
|
||||
position: absolute;
|
||||
margin: -10px 0 0 -120px;
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.tips {
|
||||
color: #000;
|
||||
float: right;
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.secret {
|
||||
color: #fff;
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -118,7 +118,7 @@ onMounted(() => {
|
||||
<template>
|
||||
<div class="horizontal-header">
|
||||
<div class="horizontal-header-left" @click="backHome">
|
||||
<Icon svg :width="35" :height="35" content="team-iconshuiyuandi" />
|
||||
<Icon svg :width="35" :height="35" content="team-iconlogo" />
|
||||
<h4>{{ title }}</h4>
|
||||
</div>
|
||||
<el-menu
|
||||
|
@ -19,7 +19,7 @@ const title =
|
||||
class="sidebar-logo-link"
|
||||
to="/"
|
||||
>
|
||||
<Icon svg :width="35" :height="35" content="team-iconzu2148" />
|
||||
<Icon svg :width="35" :height="35" content="team-iconlogo" />
|
||||
<span class="sidebar-title">{{ title }}</span>
|
||||
</router-link>
|
||||
<router-link
|
||||
@ -29,7 +29,7 @@ const title =
|
||||
class="sidebar-logo-link"
|
||||
to="/"
|
||||
>
|
||||
<Icon svg :width="35" :height="35" content="team-iconzu2148" />
|
||||
<Icon svg :width="35" :height="35" content="team-iconlogo" />
|
||||
<span class="sidebar-title">{{ title }}</span>
|
||||
</router-link>
|
||||
</transition>
|
||||
|
@ -92,7 +92,6 @@ export const buttonConfig = {
|
||||
hsexitfullscreen: "退出全屏",
|
||||
hsrefreshRoute: "刷新路由",
|
||||
hslogin: "登陆",
|
||||
hsregister: "注册",
|
||||
hsadd: "新增",
|
||||
hsmark: "标记/取消",
|
||||
hssave: "保存",
|
||||
@ -116,7 +115,6 @@ export const buttonConfig = {
|
||||
hsexitfullscreen: "exitFullscreen",
|
||||
hsrefreshRoute: "refreshRoute",
|
||||
hslogin: "login",
|
||||
hsregister: "register",
|
||||
hsadd: "Add",
|
||||
hsmark: "Mark/Cancel",
|
||||
hssave: "Save",
|
||||
|
@ -194,7 +194,7 @@ export function resetRouter() {
|
||||
}
|
||||
|
||||
// 路由白名单
|
||||
const whiteList = ["/login", "/register"];
|
||||
const whiteList = ["/login"];
|
||||
|
||||
router.beforeEach((to, _from, next) => {
|
||||
if (to.meta?.keepAlive) {
|
||||
|
@ -11,16 +11,6 @@ const remainingRouter = [
|
||||
rank: 101
|
||||
}
|
||||
},
|
||||
{
|
||||
path: "/register",
|
||||
name: "register",
|
||||
component: () => import("/@/views/register.vue"),
|
||||
meta: {
|
||||
title: "message.hsregister",
|
||||
showLink: false,
|
||||
rank: 102
|
||||
}
|
||||
},
|
||||
{
|
||||
path: "/redirect",
|
||||
name: "redirect",
|
||||
|
@ -65,15 +65,6 @@ ul {
|
||||
}
|
||||
}
|
||||
|
||||
.login,
|
||||
.register {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
overflow-x: hidden;
|
||||
background: url("../assets/bg.jpg") no-repeat center;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
/* 头部用户信息样式重置 */
|
||||
.hidden {
|
||||
display: none !important;
|
||||
|
227
src/style/login.css
Normal file
@ -0,0 +1,227 @@
|
||||
.wave {
|
||||
position: fixed;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
grid-gap: 18rem;
|
||||
padding: 0 2rem;
|
||||
}
|
||||
|
||||
.img {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.img img {
|
||||
width: 500px;
|
||||
}
|
||||
|
||||
.login-box {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.login-form {
|
||||
width: 360px;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 350px;
|
||||
height: 80px;
|
||||
}
|
||||
|
||||
.login-form h2 {
|
||||
text-transform: uppercase;
|
||||
margin: 15px 0;
|
||||
color: #999;
|
||||
font: bold 200% Consolas, Monaco, monospace;
|
||||
}
|
||||
|
||||
.input-group {
|
||||
position: relative;
|
||||
display: grid;
|
||||
grid-template-columns: 7% 93%;
|
||||
margin: 25px 0;
|
||||
padding: 5px 0;
|
||||
border-bottom: 2px solid #d9d9d9;
|
||||
}
|
||||
|
||||
.input-group:nth-child(1) {
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.input-group::before,
|
||||
.input-group::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: -2px;
|
||||
width: 0;
|
||||
height: 2px;
|
||||
background-color: #c5d3f7;
|
||||
transition: 0.5s;
|
||||
}
|
||||
|
||||
.input-group::after {
|
||||
right: 50%;
|
||||
}
|
||||
|
||||
.input-group::before {
|
||||
left: 50%;
|
||||
}
|
||||
|
||||
.icon {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.icon i {
|
||||
color: #d9d9d9;
|
||||
transition: 0.5s;
|
||||
}
|
||||
|
||||
.input-group > div {
|
||||
position: relative;
|
||||
height: 45px;
|
||||
}
|
||||
|
||||
.input-group > div > h5 {
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
color: #d9d9d9;
|
||||
font-size: 18px;
|
||||
transition: 0.3s;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.input-group.focus .icon i {
|
||||
color: #5392f0;
|
||||
}
|
||||
|
||||
.input-group.focus div h5 {
|
||||
top: -5px;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.input-group.focus::after,
|
||||
.input-group.focus::before {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.input {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
top: 0;
|
||||
left: 0;
|
||||
border: none;
|
||||
outline: none;
|
||||
background: none;
|
||||
padding: 0.5rem 0.7rem;
|
||||
font-size: 1.2rem;
|
||||
color: #555;
|
||||
font-family: "Roboto", sans-serif;
|
||||
}
|
||||
|
||||
a {
|
||||
display: block;
|
||||
text-align: right;
|
||||
text-decoration: none;
|
||||
color: #999;
|
||||
font-size: 0.9rem;
|
||||
transition: 0.3s;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #5392f0;
|
||||
}
|
||||
|
||||
.btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
border-radius: 25px;
|
||||
margin: 1rem 0;
|
||||
font-size: 1.2rem;
|
||||
outline: none;
|
||||
border: none;
|
||||
background-image: linear-gradient(to right, #567dbe, #5392f0, #567dbe);
|
||||
cursor: pointer;
|
||||
color: #fff;
|
||||
text-transform: uppercase;
|
||||
font-family: "Roboto", sans-serif;
|
||||
background-size: 200%;
|
||||
transition: 0.5s;
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
background-position: right;
|
||||
}
|
||||
|
||||
.copyright {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
bottom: 2px;
|
||||
color: #5392f0;
|
||||
text-align: center;
|
||||
font-size: 18px;
|
||||
font-family: "Roboto", sans-serif;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1080px) {
|
||||
.container {
|
||||
grid-gap: 9rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1024px) {
|
||||
.login-form {
|
||||
width: 290px;
|
||||
}
|
||||
|
||||
.login-form h2 {
|
||||
font-size: 2.4rem;
|
||||
margin: 8px 0;
|
||||
}
|
||||
|
||||
.img img {
|
||||
width: 360px;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 280px;
|
||||
height: 80px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
.wave {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.img {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.container {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.login-box {
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
@ -1,64 +1,179 @@
|
||||
<script setup lang="ts">
|
||||
import { infoType } from "./type";
|
||||
import { ref, computed } from "vue";
|
||||
import { useRouter } from "vue-router";
|
||||
import { reactive, onBeforeMount } from "vue";
|
||||
import { getVerify, getLogin } from "/@/api/user";
|
||||
import { initRouter } from "/@/router";
|
||||
import avatar from "/@/assets/login/avatar.svg";
|
||||
import { storageSession } from "/@/utils/storage";
|
||||
import { warnMessage, successMessage } from "/@/utils/message";
|
||||
import info, { ContextProps } from "../components/ReInfo/index.vue";
|
||||
import { addClass, removeClass } from "/@/utils/operate";
|
||||
import illustration0 from "/@/assets/login/illustration0.svg";
|
||||
import illustration1 from "/@/assets/login/illustration1.svg";
|
||||
import illustration2 from "/@/assets/login/illustration2.svg";
|
||||
import illustration3 from "/@/assets/login/illustration3.svg";
|
||||
import illustration4 from "/@/assets/login/illustration4.svg";
|
||||
import illustration5 from "/@/assets/login/illustration5.svg";
|
||||
import illustration6 from "/@/assets/login/illustration6.svg";
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
// 刷新验证码
|
||||
const refreshGetVerify = async () => {
|
||||
let { svg }: infoType = await getVerify();
|
||||
contextInfo.svg = svg;
|
||||
};
|
||||
|
||||
const contextInfo: ContextProps = reactive({
|
||||
userName: "",
|
||||
passWord: "",
|
||||
verify: null,
|
||||
svg: null
|
||||
// eslint-disable-next-line vue/return-in-computed-property
|
||||
const currentWeek = computed(() => {
|
||||
switch (String(new Date().getDay())) {
|
||||
case "0":
|
||||
return illustration0;
|
||||
case "1":
|
||||
return illustration1;
|
||||
case "2":
|
||||
return illustration2;
|
||||
case "3":
|
||||
return illustration3;
|
||||
case "4":
|
||||
return illustration4;
|
||||
case "5":
|
||||
return illustration5;
|
||||
case "6":
|
||||
return illustration6;
|
||||
default:
|
||||
return illustration4;
|
||||
}
|
||||
});
|
||||
|
||||
const toPage = (info: Object): void => {
|
||||
storageSession.setItem("info", info);
|
||||
let user = ref("admin");
|
||||
let pwd = ref("123456");
|
||||
|
||||
const onLogin = (): void => {
|
||||
storageSession.setItem("info", {
|
||||
username: "admin",
|
||||
accessToken: "eyJhbGciOiJIUzUxMiJ9.test"
|
||||
});
|
||||
initRouter("admin").then(() => {});
|
||||
router.push("/");
|
||||
};
|
||||
|
||||
// 登录
|
||||
const onLogin = async () => {
|
||||
let { userName, passWord, verify } = contextInfo;
|
||||
let { code, info, accessToken }: infoType = await getLogin({
|
||||
username: userName,
|
||||
password: passWord,
|
||||
verify: verify
|
||||
});
|
||||
code === 0
|
||||
? successMessage(info) &&
|
||||
toPage({
|
||||
username: userName,
|
||||
accessToken
|
||||
})
|
||||
: warnMessage(info);
|
||||
};
|
||||
function onUserFocus() {
|
||||
addClass(document.querySelector(".user"), "focus");
|
||||
}
|
||||
|
||||
const refreshVerify = (): void => {
|
||||
refreshGetVerify();
|
||||
};
|
||||
function onUserBlur() {
|
||||
if (user.value.length === 0)
|
||||
removeClass(document.querySelector(".user"), "focus");
|
||||
}
|
||||
|
||||
onBeforeMount(() => {
|
||||
// refreshGetVerify();
|
||||
});
|
||||
function onPwdFocus() {
|
||||
addClass(document.querySelector(".pwd"), "focus");
|
||||
}
|
||||
|
||||
function onPwdBlur() {
|
||||
if (pwd.value.length === 0)
|
||||
removeClass(document.querySelector(".pwd"), "focus");
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="login">
|
||||
<info
|
||||
:ruleForm="contextInfo"
|
||||
@on-behavior="onLogin"
|
||||
@refreshVerify="refreshVerify"
|
||||
/>
|
||||
<img src="/@/assets/login/bg.png" class="wave" />
|
||||
<div class="container">
|
||||
<div class="img">
|
||||
<component :is="currentWeek"></component>
|
||||
</div>
|
||||
<div class="login-box">
|
||||
<div class="login-form">
|
||||
<avatar class="avatar" />
|
||||
<h2
|
||||
v-motion
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
}"
|
||||
:enter="{
|
||||
opacity: 1,
|
||||
y: 0,
|
||||
transition: {
|
||||
delay: 100
|
||||
}
|
||||
}"
|
||||
>
|
||||
Pure Admin
|
||||
</h2>
|
||||
<div
|
||||
class="input-group user focus"
|
||||
v-motion
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
}"
|
||||
:enter="{
|
||||
opacity: 1,
|
||||
y: 0,
|
||||
transition: {
|
||||
delay: 200
|
||||
}
|
||||
}"
|
||||
>
|
||||
<div class="icon">
|
||||
<i class="fa fa-user"></i>
|
||||
</div>
|
||||
<div>
|
||||
<h5>用户名</h5>
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model="user"
|
||||
@focus="onUserFocus"
|
||||
@blur="onUserBlur"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="input-group pwd focus"
|
||||
v-motion
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 100
|
||||
}"
|
||||
:enter="{
|
||||
opacity: 1,
|
||||
y: 0,
|
||||
transition: {
|
||||
delay: 300
|
||||
}
|
||||
}"
|
||||
>
|
||||
<div class="icon">
|
||||
<i class="fa fa-lock"></i>
|
||||
</div>
|
||||
<div>
|
||||
<h5>密码</h5>
|
||||
<input
|
||||
type="password"
|
||||
class="input"
|
||||
v-model="pwd"
|
||||
@focus="onPwdFocus"
|
||||
@blur="onPwdBlur"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<button
|
||||
class="btn"
|
||||
v-motion
|
||||
:initial="{
|
||||
opacity: 0,
|
||||
y: 10
|
||||
}"
|
||||
:enter="{
|
||||
opacity: 1,
|
||||
y: 0,
|
||||
transition: {
|
||||
delay: 400
|
||||
}
|
||||
}"
|
||||
@click="onLogin"
|
||||
>
|
||||
登录
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
@import url("/@/style/login.css");
|
||||
</style>
|
||||
|
@ -1,53 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
import { reactive, onBeforeMount } from "vue";
|
||||
import info, { ContextProps } from "../components/ReInfo/index.vue";
|
||||
import { getRegist, getVerify } from "/@/api/user";
|
||||
import { useRouter } from "vue-router";
|
||||
import { warnMessage, successMessage } from "/@/utils/message";
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
// 刷新验证码
|
||||
const refreshGetVerify = async () => {
|
||||
let { svg } = await getVerify();
|
||||
contextInfo.svg = svg;
|
||||
};
|
||||
|
||||
const contextInfo: ContextProps = reactive({
|
||||
userName: "",
|
||||
passWord: "",
|
||||
verify: null,
|
||||
svg: null
|
||||
});
|
||||
|
||||
// 注册
|
||||
const onRegist = async () => {
|
||||
let { userName, passWord, verify } = contextInfo;
|
||||
let { code, info } = await getRegist({
|
||||
username: userName,
|
||||
password: passWord,
|
||||
verify: verify
|
||||
});
|
||||
code === 0
|
||||
? successMessage(info) && router.push("/login")
|
||||
: warnMessage(info);
|
||||
};
|
||||
|
||||
const refreshVerify = (): void => {
|
||||
refreshGetVerify();
|
||||
};
|
||||
|
||||
onBeforeMount(() => {
|
||||
// refreshGetVerify();
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="register">
|
||||
<info
|
||||
:ruleForm="contextInfo"
|
||||
@on-behavior="onRegist"
|
||||
@refreshVerify="refreshVerify"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
@ -185,7 +185,7 @@ const openDepot = (): void => {
|
||||
:sm="24"
|
||||
:md="24"
|
||||
:lg="8"
|
||||
:xl="1"
|
||||
:xl="8"
|
||||
style="margin-bottom: 20px"
|
||||
v-motion
|
||||
:initial="{
|
||||
|
@ -160,7 +160,8 @@ export default ({ command, mode }: ConfigEnv): UserConfigExport => {
|
||||
sourcemap: false,
|
||||
brotliSize: false,
|
||||
// 消除打包大小超过500kb警告
|
||||
chunkSizeWarningLimit: 2000
|
||||
chunkSizeWarningLimit: 2000,
|
||||
minify: false
|
||||
},
|
||||
define: {
|
||||
__INTLIFY_PROD_DEVTOOLS__: false
|
||||
|