Merge branch 'main' into refactor/theme

This commit is contained in:
xiaoxian521 2021-11-07 13:32:38 +08:00
commit ad2f7358db
28 changed files with 640 additions and 700 deletions

View File

@ -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
View File

@ -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

View File

@ -1,6 +0,0 @@
#
packages:
- "build/**"
- "mock/**"
- "src/**"
- "types/**"

View File

@ -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);
};

View File

@ -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";
}

File diff suppressed because one or more lines are too long

View File

@ -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
},

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 20 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 17 KiB

View 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

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 29 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -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>

View File

@ -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

View File

@ -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>

View File

@ -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",

View File

@ -194,7 +194,7 @@ export function resetRouter() {
}
// 路由白名单
const whiteList = ["/login", "/register"];
const whiteList = ["/login"];
router.beforeEach((to, _from, next) => {
if (to.meta?.keepAlive) {

View File

@ -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",

View File

@ -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
View 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;
}
}

View File

@ -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>

View File

@ -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>

View File

@ -185,7 +185,7 @@ const openDepot = (): void => {
:sm="24"
:md="24"
:lg="8"
:xl="1"
:xl="8"
style="margin-bottom: 20px"
v-motion
:initial="{

View File

@ -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