fix:修改了拦截器响应,token过期header状态,修复了长期不登录三次弹窗

This commit is contained in:
lihaoyuan 2025-07-17 16:36:41 +08:00
parent 8cef252c58
commit 8b7a9707fd
10 changed files with 457 additions and 149 deletions

323
package-lock.json generated
View File

@ -1037,9 +1037,9 @@
}
},
"node_modules/@eslint/config-array/node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -1108,9 +1108,9 @@
}
},
"node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -3177,6 +3177,23 @@
"node": ">= 4.5.0"
}
},
"node_modules/available-typed-arrays": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
"integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"possible-typed-array-names": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/axios": {
"version": "1.8.4",
"resolved": "https://registry.npmmirror.com/axios/-/axios-1.8.4.tgz",
@ -3353,9 +3370,9 @@
}
},
"node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -4160,6 +4177,12 @@
"dev": true,
"license": "MIT"
},
"node_modules/deep-pick-omit": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/deep-pick-omit/-/deep-pick-omit-1.2.1.tgz",
"integrity": "sha512-2J6Kc/m3irCeqVG42T+SaUMesaK7oGWaedGnQQK/+O0gYc+2SP5bKh/KKTE7d7SJ+GCA9UUE1GRzh6oDe0EnGw==",
"license": "MIT"
},
"node_modules/default-browser": {
"version": "5.2.1",
"resolved": "https://registry.npmmirror.com/default-browser/-/default-browser-5.2.1.tgz",
@ -4255,6 +4278,12 @@
"node": ">=0.10.0"
}
},
"node_modules/defu": {
"version": "6.1.4",
"resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
"integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
"license": "MIT"
},
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
@ -4276,6 +4305,12 @@
"minimalistic-assert": "^1.0.0"
}
},
"node_modules/destr": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz",
"integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==",
"license": "MIT"
},
"node_modules/detect-libc": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz",
@ -4725,9 +4760,9 @@
}
},
"node_modules/eslint/node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -5211,6 +5246,23 @@
}
}
},
"node_modules/for-each": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
"integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"is-callable": "^1.2.7"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz",
@ -5437,9 +5489,9 @@
}
},
"node_modules/glob/node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
"license": "MIT",
"peer": true,
@ -5849,6 +5901,20 @@
"license": "MIT",
"peer": true
},
"node_modules/is-callable": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
"integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
"dev": true,
"license": "MIT",
"peer": true,
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-data-descriptor": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz",
@ -5996,6 +6062,23 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-typed-array": {
"version": "1.1.15",
"resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
"integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"which-typed-array": "^1.1.16"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-unicode-supported": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
@ -7389,23 +7472,61 @@
"license": "MIT"
},
"node_modules/pbkdf2": {
"version": "3.1.2",
"resolved": "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz",
"integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.3.tgz",
"integrity": "sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"create-hash": "^1.1.2",
"create-hmac": "^1.1.4",
"ripemd160": "^2.0.1",
"safe-buffer": "^5.0.1",
"sha.js": "^2.4.8"
"create-hash": "~1.1.3",
"create-hmac": "^1.1.7",
"ripemd160": "=2.0.1",
"safe-buffer": "^5.2.1",
"sha.js": "^2.4.11",
"to-buffer": "^1.2.0"
},
"engines": {
"node": ">=0.12"
}
},
"node_modules/pbkdf2/node_modules/create-hash": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz",
"integrity": "sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"cipher-base": "^1.0.1",
"inherits": "^2.0.1",
"ripemd160": "^2.0.0",
"sha.js": "^2.4.0"
}
},
"node_modules/pbkdf2/node_modules/hash-base": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz",
"integrity": "sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"inherits": "^2.0.1"
}
},
"node_modules/pbkdf2/node_modules/ripemd160": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz",
"integrity": "sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"hash-base": "^2.0.0",
"inherits": "^2.0.1"
}
},
"node_modules/perfect-debounce": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
@ -7475,6 +7596,33 @@
}
}
},
"node_modules/pinia-plugin-persistedstate": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-4.4.1.tgz",
"integrity": "sha512-lmuMPpXla2zJKjxEq34e1E9P9jxkWEhcVwwioCCE0izG45kkTOvQfCzvwhW3i38cvnaWC7T1eRdkd15Re59ldw==",
"license": "MIT",
"dependencies": {
"deep-pick-omit": "^1.2.1",
"defu": "^6.1.4",
"destr": "^2.0.5"
},
"peerDependencies": {
"@nuxt/kit": ">=3.0.0",
"@pinia/nuxt": ">=0.10.0",
"pinia": ">=3.0.0"
},
"peerDependenciesMeta": {
"@nuxt/kit": {
"optional": true
},
"@pinia/nuxt": {
"optional": true
},
"pinia": {
"optional": true
}
}
},
"node_modules/pkg-dir": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz",
@ -7583,6 +7731,17 @@
"node": ">=0.10.0"
}
},
"node_modules/possible-typed-array-names": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
"integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==",
"dev": true,
"license": "MIT",
"peer": true,
"engines": {
"node": ">= 0.4"
}
},
"node_modules/postcss": {
"version": "8.5.3",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.3.tgz",
@ -9065,13 +9224,13 @@
}
},
"node_modules/tinyglobby": {
"version": "0.2.12",
"resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.12.tgz",
"integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==",
"version": "0.2.14",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
"integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"fdir": "^6.4.3",
"fdir": "^6.4.4",
"picomatch": "^4.0.2"
},
"engines": {
@ -9082,9 +9241,9 @@
}
},
"node_modules/tinyglobby/node_modules/fdir": {
"version": "6.4.3",
"resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.4.3.tgz",
"integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==",
"version": "6.4.6",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz",
"integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==",
"dev": true,
"license": "MIT",
"peerDependencies": {
@ -9098,7 +9257,7 @@
},
"node_modules/tinyglobby/node_modules/picomatch": {
"version": "4.0.2",
"resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.2.tgz",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"dev": true,
"license": "MIT",
@ -9117,6 +9276,30 @@
"license": "MIT",
"peer": true
},
"node_modules/to-buffer": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.1.tgz",
"integrity": "sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"isarray": "^2.0.5",
"safe-buffer": "^5.2.1",
"typed-array-buffer": "^1.0.3"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/to-buffer/node_modules/isarray": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
"integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
"dev": true,
"license": "MIT",
"peer": true
},
"node_modules/to-object-path": {
"version": "0.3.0",
"resolved": "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz",
@ -9278,6 +9461,22 @@
"node": ">= 0.8.0"
}
},
"node_modules/typed-array-buffer": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
"integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"call-bound": "^1.0.3",
"es-errors": "^1.3.0",
"is-typed-array": "^1.1.14"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz",
@ -9786,15 +9985,18 @@
"peer": true
},
"node_modules/vite": {
"version": "6.2.1",
"resolved": "https://registry.npmmirror.com/vite/-/vite-6.2.1.tgz",
"integrity": "sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q==",
"version": "6.3.5",
"resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz",
"integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"esbuild": "^0.25.0",
"fdir": "^6.4.4",
"picomatch": "^4.0.2",
"postcss": "^8.5.3",
"rollup": "^4.30.1"
"rollup": "^4.34.9",
"tinyglobby": "^0.2.13"
},
"bin": {
"vite": "bin/vite.js"
@ -9965,6 +10167,34 @@
"vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0"
}
},
"node_modules/vite/node_modules/fdir": {
"version": "6.4.6",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz",
"integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==",
"dev": true,
"license": "MIT",
"peerDependencies": {
"picomatch": "^3 || ^4"
},
"peerDependenciesMeta": {
"picomatch": {
"optional": true
}
}
},
"node_modules/vite/node_modules/picomatch": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/vm-browserify": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz",
@ -10723,6 +10953,29 @@
"node": ">= 8"
}
},
"node_modules/which-typed-array": {
"version": "1.1.19",
"resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz",
"integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"available-typed-arrays": "^1.0.7",
"call-bind": "^1.0.8",
"call-bound": "^1.0.4",
"for-each": "^0.3.5",
"get-proto": "^1.0.1",
"gopd": "^1.2.0",
"has-tostringtag": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/word-wrap": {
"version": "1.2.5",
"resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz",

View File

@ -1,4 +1,4 @@
<template>
<!-- <template>
<div class="login-box" v-if="isVisible">
<div class="login-container">
<div class="login-close" @click="closeLoginForm">
@ -130,7 +130,7 @@ const refreshCaptcha = async () => {
const res = await GetVerifyCode({ verify_token: verify_token.value });
if (res) {
captchaUrl.value = `https://mall.gpxscs.cn/api/admin/shop/shop-base-config/image?verify_token=${verify_token.value}`;
// captchaUrl.value = `https://mall.gpxscs.cn/api/admin/shop/shop-base-config/image?verify_token=${verify_token.value}`;
}
};
@ -284,4 +284,8 @@ onUnmounted(() => {
color: #666;
}
}
</style>
</style> -->
<template>
<div></div>
</template>

View File

@ -53,7 +53,7 @@
</el-form>
<div class="foot">
<el-button
class="btn_sumit"
class="btn_submit"
color="#ea4322"
size="large"
:disabled="!formData.phoneNumber || !formData.verificationCode"
@ -64,7 +64,7 @@
</div>
<!-- <div class="tool">
已有账号
<el-button class="btn_sumit" type="danger" text @click="openLoginForm"
<el-button class="btn_submit" type="danger" text @click="openLoginForm"
>立即登录</el-button
>
</div> -->
@ -106,11 +106,6 @@ const closeRegisterForm = () => {
emits("close-register-form");
};
const openLoginForm = () => {
closeRegisterForm();
emits("open-login-form");
};
const getVerify_code = async () => {
const params = {
number: formData.value.phoneNumber,
@ -124,7 +119,7 @@ const getVerify_code = async () => {
countdown.value = 60;
startCountdown();
} else {
console.log("获取失败");
// console.log("")
}
};
@ -153,28 +148,26 @@ const register = async () => {
formData.value.phoneNumber = "";
formData.value.verificationCode = "";
closeRegisterForm();
try {
const approvalRes = await getApproval_status();
if (approvalRes.data.code === 0 && approvalRes.data.status === 200) {
const approvalStatus = approvalRes.data.approval_status;
localStorage.setItem("approval_status", approvalStatus);
if (approvalStatus == "4" || approvalRes.data==null) {
router.push({ name: "start" });
} else {
router.push({ name: "check" });
}
}
} catch (error) {
console.error("获取审批状态失败:", error);
}
// try {
// const approvalRes = await getApproval_status();
// if (approvalRes.data.code === 0 && approvalRes.data.status === 200) {
// const approvalStatus = approvalRes.data.approval_status;
// localStorage.setItem("approval_status", approvalStatus);
// console.log("")
// if (approvalStatus == "4" || approvalRes.data==null) {
// router.push({ name: "start" });
// } else {
// router.push({ name: "check" });
// }
// }
// } catch (error) {
// console.error(":", error);
// }
} else {
if (res.status === 250) {
// 使 ElMessage
ElMessage.error("验证码错误");
} else {
console.log("操作返回的信息", res.data.msg);
console.log("hhhhh", res);
}
}
};
@ -228,7 +221,10 @@ onUnmounted(() => {
});
</script>
<style lang="scss">
<style lang="scss" scoped>
:global(.el-message) {
z-index: 1000102 !important;
}
.register-box {
position: fixed;
top: 0;
@ -247,7 +243,7 @@ onUnmounted(() => {
.foot {
padding-top: 20px;
.btn_sumit {
.btn_submit {
display: block;
width: 100%;
}

View File

@ -8,14 +8,17 @@ import App from './App.vue'
import '@/assets/css/index.css'
import '../public/xiaofa-font/iconfont.css'
const app = createApp(App);
const pinia = createPinia()
app.use(pinia)
app.use(router)
app.use(router);
(window as any).$router = router;
//启用element 国际化并且启用element-plus
app.use(ElementPlus,{
locale: zhCn,
})
app.mount('#app')

View File

@ -52,7 +52,7 @@ const routes=[
meta:{
isFullpage: true
}
},
}
];
const router = createRouter({
history:createWebHistory(),

View File

@ -1,67 +1,102 @@
import { defineStore } from "pinia";
import { ref,reactive, onMounted } from "vue";
import { ref, computed, watchEffect,onUnmounted } from "vue";
import { ElMessage } from 'element-plus';
export const useUserStore = defineStore("user", () => {
const token = ref(localStorage.getItem("token")||"");
const isLoggedIn = ref(false);
const mobilePhone = ref(localStorage.getItem("mobilePhone")||"");
const token = ref(localStorage.getItem("token") || "");
const mobilePhone = ref(localStorage.getItem("mobilePhone") || "");
const setToken = (data:any) => {
const handleStorageChange = (e:StorageEvent)=>{
if (e.key === "token") {
// 当 localStorage 的 token 变化时,更新 Pinia 的 token
token.value = e.newValue || "";
// console.log("localStorage token 变化,同步到 Pinia:", token.value);
}
}
// 定时检查 localStorage同步 token每 1 秒一次,可调整)
const syncTokenInterval = setInterval(() => {
const latestToken = localStorage.getItem("token");
if (latestToken !== token.value) {
token.value = latestToken || "";
}
}, 1000); // 1秒检查一次
window.addEventListener("storage", handleStorageChange);
onUnmounted(() => {
window.removeEventListener("storage", handleStorageChange);
clearInterval(syncTokenInterval);
});
// 改为 computed 属性,实时计算登录状态
const isLoggedIn = computed(() => {
return !!token.value && !isTokenExpired();
});
// 设置合理的 Token 有效期示例2小时
const setToken = (data: string) => {
token.value = data;
isLoggedIn.value = true;
const expiryTime = Date.now() + 31536000 * 1000; // 当前时间 + 1 年
const expiryTime = Date.now() + 30 * 1000; //
localStorage.setItem("token", data);
localStorage.setItem("tokenExpiry", expiryTime.toString()); // 保存过期时间
localStorage.setItem("tokenExpiry", expiryTime.toString());
};
const setMobilePhone = (phone: string) => {
mobilePhone.value = phone;
localStorage.setItem("mobilePhone", phone);
};
const removeMobilePhone=()=>{
const removeMobilePhone = () => {
mobilePhone.value = "";
localStorage.removeItem("mobilePhone");
}
// const setMerchStatus=(merchStatus:string)=>{
// localStorage.setItem("merchStatus",merchStatus)
// }
};
const clearToken = () => {
try {
token.value = "";
isLoggedIn.value = false;
mobilePhone.value = ""; // 清空手机号
localStorage.removeItem("userInfo");
localStorage.removeItem("token");
localStorage.removeItem("tokenExpiry"); // 删除过期时间
localStorage.removeItem("tokenExpiry");
localStorage.removeItem("mobilePhone"); // 确保从本地存储删除
} catch (error) {
console.error("Error clearing token from localStorage:", error);
console.error("清除 Token 失败:", error);
}
};
const isTokenExpired = () => {
try {
const expiryTime = localStorage.getItem("tokenExpiry");
if (!expiryTime) return true; // 如果没有过期时间,认为已过期
return Date.now() > parseInt(expiryTime, 10); // 当前时间是否超过过期时间
if (!expiryTime) return true;
const isExpired = Date.now() > parseInt(expiryTime, 10);
return isExpired;
} catch (error) {
console.error("Error checking token expiry:", error);
return true; // 默认认为已过期
return true;
}
};
const setIdentity=(Identity:string)=>{
localStorage.setItem("Identity", Identity);
}
const removeIdentity=()=>{
localStorage.removeItem('Identity')
}
onMounted(() => {
try {
const storedToken = localStorage.getItem("token");
if (storedToken && !isTokenExpired()) {
token.value = storedToken;
isLoggedIn.value = true;
} else {
clearToken(); // 如果 token 过期,清除 token
}
} catch (error) {
console.error("Error retrieving token from localStorage:", error);
const setIdentity = (identity: string) => {
localStorage.setItem("Identity", identity);
};
const removeIdentity = () => {
localStorage.removeItem("Identity");
};
// 自动监听 Token 变化并检查过期状态
watchEffect(() => {
if (token.value && isTokenExpired()) {
ElMessage.error('登录已过期,请重新登录'); // 提示用户
clearToken();
window["$router"]?.push("/");
}
});
// 初始化时检查 Token 状态
watchEffect(() => {
if (!localStorage.getItem("token")) {
// 本地存储没有 Token确保状态一致
token.value = "";
}
});

View File

@ -1,7 +1,7 @@
import axios from "axios";
import { ElMessage } from "element-plus";
// import store from '@/store'
import { useUserStore } from "@/stores/userStore";
const baseURL = import.meta.env.VUE_APP_BASE_URL;
const service = axios.create({
@ -12,6 +12,7 @@ const service = axios.create({
},
timeout: 1000 * 60 * 5, // request timeout
});
let hasShowExpiredMessage = false
// 拦截前
// request interceptor
service.interceptors.request.use(
@ -31,17 +32,18 @@ service.interceptors.request.use(
service.interceptors.response.use(
(response) => {
if(response.data.status==250){
ElMessage.error(response.data.msg || '请求异常,再重试!')
if(!hasShowExpiredMessage){
ElMessage.error(response.data.msg || '请求异常,再重试!');
hasShowExpiredMessage = true;
const userStore = useUserStore();
userStore.clearToken();
window["$router"]?.push("/");
setTimeout(() => (hasShowExpiredMessage = false), 3000);
}
}
return response.data;
},
(error) => {
if (error.response.status === 401) {
// Token 无效或过期,清除 Token 并跳转到登录页面
const userStore = useUserStore();
userStore.clearToken();
router.push("/login");
}
return Promise.reject(error);
}
);

View File

@ -76,7 +76,7 @@
</template>
<script setup lang="ts">
import { ref, onMounted, watch, onUnmounted } from "vue";
import { ref, onMounted, watch, onUnmounted ,computed} from "vue";
import { useRouter } from "vue-router";
import { useUserStore } from "@/stores/userStore";
import { Menu, Avatar } from "@element-plus/icons-vue";
@ -105,11 +105,13 @@ const router = useRouter();
const userStore = useUserStore();
// userStore
const isLoggedIn = ref(userStore.isLoggedIn);
const isLoggedIn = computed(()=>userStore.isLoggedIn);
const approval_status = ref(-1);
const token = ref(userStore.token);
const mobile = ref(userStore.mobilePhone);
const token = computed(()=>userStore.token);
const mobile = computed(() => {
//
return userStore.mobilePhone.replace(/(^\d{3})(\d+)(\d{4})/g, "$1****$3");
});
//
const fetchApprovalStatus = () => {
const mobile = localStorage.getItem("mobilePhone");
@ -117,28 +119,27 @@ const fetchApprovalStatus = () => {
getApproval_status().then((res) => {
if (res.code === 0 && res.status === 200) {
approval_status.value = res.data.approval_status;
console.log("res.data.approval_status", res.data.approval_status);
}
});
}
};
watch(userStore, (newVal) => {
token.value = newVal.token;
//
if (newVal.mobilePhone) {
mobile.value = newVal.mobilePhone.replace(
/(^\d{3})(\d+)(\d{4})/g,
"$1****$3"
);
}
isLoggedIn.value = !!token.value;
// watch(userStore, (newVal) => {
// token.value = newVal.token;
// //
// if (newVal.mobilePhone) {
// mobile.value = newVal.mobilePhone.replace(
// /(^\d{3})(\d+)(\d{4})/g,
// "$1****$3"
// );
// }
// isLoggedIn.value = !!token.value;
//
if (isLoggedIn.value) {
fetchApprovalStatus();
}
});
// // //
// // if (isLoggedIn.value) {
// // fetchApprovalStatus();
// // }
// });
//
onMounted(() => {
@ -159,10 +160,26 @@ onMounted(() => {
watch(
() => userStore.isLoggedIn,
(newVal) => {
isLoggedIn.value = newVal; // isLoggedIn userStore.isLoggedIn
if (isLoggedIn.value === null) console.log("登陆过期");
if(!newVal){
approval_status.value = -1
// console.log("🔍 isLoggedIn ", newVal);
}else{
fetchApprovalStatus();
}
},{
immediate:true//
}
);
watch(
() => userStore.token,
(newToken) => {
// token
if (!newToken) {
approval_status.value = -1;
}
},
{ immediate: true }
);
//
const handleOpenStartPage = () => {
@ -191,7 +208,6 @@ const logout = () => {
userStore.clearToken();
userStore.removeMobilePhone();
userStore.removeIdentity();
isLoggedIn.value = false; //
approval_status.value = -1; //
router.push("/"); //
};

View File

@ -3,7 +3,7 @@
<Company />
<Banner />
<Service />
<Login :isVisible="showLoginForm" @open-register-form="showRegisterForm = true" @close-login-form="showLoginForm = false" />
<!-- <Login :isVisible="showLoginForm" @open-register-form="showRegisterForm = true" @close-login-form="showLoginForm = false" /> -->
<Register :isVisible="showRegisterForm" @open-login-form="showLoginForm = true" @close-register-form="showRegisterForm = false" />
</template>

View File

@ -36,7 +36,6 @@
<el-statistic
:value="businessmanValue"
:formatter="formatter"
/>
</h3>
<p>商家数量</p>
@ -149,17 +148,17 @@ const formatter2 = (value: number) => {
return `${Math.round(value)}k+`;
};
onMounted(() => {
const mobile = localStorage.getItem("mobilePhone");
if (mobile) {
getApproval_status().then((res) => {
if (res.code === 0 && res.status === 200) {
approval_status.value = res.data.approval_status;
console.log("res.data.approval_status", res.data.approval_status);
}
});
}
});
// onMounted(() => {
// const mobile = localStorage.getItem("mobilePhone");
// if (mobile) {
// getApproval_status().then((res) => {
// if (res.code === 0 && res.status === 200) {
// approval_status.value = res.data.approval_status;
// console.log("res.data.approval_status", res.data.approval_status);
// }
// });
// }
// });
</script>
<style lang="scss" scoped>