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": { "node_modules/@eslint/config-array/node_modules/brace-expansion": {
"version": "1.1.11", "version": "1.1.12",
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -1108,9 +1108,9 @@
} }
}, },
"node_modules/@eslint/eslintrc/node_modules/brace-expansion": { "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
"version": "1.1.11", "version": "1.1.12",
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -3177,6 +3177,23 @@
"node": ">= 4.5.0" "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": { "node_modules/axios": {
"version": "1.8.4", "version": "1.8.4",
"resolved": "https://registry.npmmirror.com/axios/-/axios-1.8.4.tgz", "resolved": "https://registry.npmmirror.com/axios/-/axios-1.8.4.tgz",
@ -3353,9 +3370,9 @@
} }
}, },
"node_modules/brace-expansion": { "node_modules/brace-expansion": {
"version": "2.0.1", "version": "2.0.2",
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@ -4160,6 +4177,12 @@
"dev": true, "dev": true,
"license": "MIT" "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": { "node_modules/default-browser": {
"version": "5.2.1", "version": "5.2.1",
"resolved": "https://registry.npmmirror.com/default-browser/-/default-browser-5.2.1.tgz", "resolved": "https://registry.npmmirror.com/default-browser/-/default-browser-5.2.1.tgz",
@ -4255,6 +4278,12 @@
"node": ">=0.10.0" "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": { "node_modules/delayed-stream": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
@ -4276,6 +4305,12 @@
"minimalistic-assert": "^1.0.0" "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": { "node_modules/detect-libc": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz", "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz",
@ -4725,9 +4760,9 @@
} }
}, },
"node_modules/eslint/node_modules/brace-expansion": { "node_modules/eslint/node_modules/brace-expansion": {
"version": "1.1.11", "version": "1.1.12",
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "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": { "node_modules/for-in": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz", "resolved": "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz",
@ -5437,9 +5489,9 @@
} }
}, },
"node_modules/glob/node_modules/brace-expansion": { "node_modules/glob/node_modules/brace-expansion": {
"version": "1.1.11", "version": "1.1.12",
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true, "peer": true,
@ -5849,6 +5901,20 @@
"license": "MIT", "license": "MIT",
"peer": true "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": { "node_modules/is-data-descriptor": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", "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" "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": { "node_modules/is-unicode-supported": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
@ -7389,23 +7472,61 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/pbkdf2": { "node_modules/pbkdf2": {
"version": "3.1.2", "version": "3.1.3",
"resolved": "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.3.tgz",
"integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "integrity": "sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true, "peer": true,
"dependencies": { "dependencies": {
"create-hash": "^1.1.2", "create-hash": "~1.1.3",
"create-hmac": "^1.1.4", "create-hmac": "^1.1.7",
"ripemd160": "^2.0.1", "ripemd160": "=2.0.1",
"safe-buffer": "^5.0.1", "safe-buffer": "^5.2.1",
"sha.js": "^2.4.8" "sha.js": "^2.4.11",
"to-buffer": "^1.2.0"
}, },
"engines": { "engines": {
"node": ">=0.12" "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": { "node_modules/perfect-debounce": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmmirror.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz", "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": { "node_modules/pkg-dir": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz", "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz",
@ -7583,6 +7731,17 @@
"node": ">=0.10.0" "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": { "node_modules/postcss": {
"version": "8.5.3", "version": "8.5.3",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.3.tgz", "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.3.tgz",
@ -9065,13 +9224,13 @@
} }
}, },
"node_modules/tinyglobby": { "node_modules/tinyglobby": {
"version": "0.2.12", "version": "0.2.14",
"resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.12.tgz", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
"integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==", "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"fdir": "^6.4.3", "fdir": "^6.4.4",
"picomatch": "^4.0.2" "picomatch": "^4.0.2"
}, },
"engines": { "engines": {
@ -9082,9 +9241,9 @@
} }
}, },
"node_modules/tinyglobby/node_modules/fdir": { "node_modules/tinyglobby/node_modules/fdir": {
"version": "6.4.3", "version": "6.4.6",
"resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.4.3.tgz", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz",
"integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
@ -9098,7 +9257,7 @@
}, },
"node_modules/tinyglobby/node_modules/picomatch": { "node_modules/tinyglobby/node_modules/picomatch": {
"version": "4.0.2", "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==", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
@ -9117,6 +9276,30 @@
"license": "MIT", "license": "MIT",
"peer": true "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": { "node_modules/to-object-path": {
"version": "0.3.0", "version": "0.3.0",
"resolved": "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz", "resolved": "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz",
@ -9278,6 +9461,22 @@
"node": ">= 0.8.0" "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": { "node_modules/typedarray": {
"version": "0.0.6", "version": "0.0.6",
"resolved": "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz", "resolved": "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz",
@ -9786,15 +9985,18 @@
"peer": true "peer": true
}, },
"node_modules/vite": { "node_modules/vite": {
"version": "6.2.1", "version": "6.3.5",
"resolved": "https://registry.npmmirror.com/vite/-/vite-6.2.1.tgz", "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz",
"integrity": "sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q==", "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"esbuild": "^0.25.0", "esbuild": "^0.25.0",
"fdir": "^6.4.4",
"picomatch": "^4.0.2",
"postcss": "^8.5.3", "postcss": "^8.5.3",
"rollup": "^4.30.1" "rollup": "^4.34.9",
"tinyglobby": "^0.2.13"
}, },
"bin": { "bin": {
"vite": "bin/vite.js" "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" "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": { "node_modules/vm-browserify": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz", "resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz",
@ -10723,6 +10953,29 @@
"node": ">= 8" "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": { "node_modules/word-wrap": {
"version": "1.2.5", "version": "1.2.5",
"resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz", "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-box" v-if="isVisible">
<div class="login-container"> <div class="login-container">
<div class="login-close" @click="closeLoginForm"> <div class="login-close" @click="closeLoginForm">
@ -130,7 +130,7 @@ const refreshCaptcha = async () => {
const res = await GetVerifyCode({ verify_token: verify_token.value }); const res = await GetVerifyCode({ verify_token: verify_token.value });
if (res) { 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; color: #666;
} }
} }
</style> </style> -->
<template>
<div></div>
</template>

View File

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

View File

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

View File

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

View File

@ -1,67 +1,102 @@
import { defineStore } from "pinia"; 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", () => { export const useUserStore = defineStore("user", () => {
const token = ref(localStorage.getItem("token")||""); const token = ref(localStorage.getItem("token") || "");
const isLoggedIn = ref(false); const mobilePhone = ref(localStorage.getItem("mobilePhone") || "");
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; token.value = data;
isLoggedIn.value = true; const expiryTime = Date.now() + 30 * 1000; //
const expiryTime = Date.now() + 31536000 * 1000; // 当前时间 + 1 年
localStorage.setItem("token", data); localStorage.setItem("token", data);
localStorage.setItem("tokenExpiry", expiryTime.toString()); // 保存过期时间 localStorage.setItem("tokenExpiry", expiryTime.toString());
}; };
const setMobilePhone = (phone: string) => { const setMobilePhone = (phone: string) => {
mobilePhone.value = phone; mobilePhone.value = phone;
localStorage.setItem("mobilePhone", phone); localStorage.setItem("mobilePhone", phone);
}; };
const removeMobilePhone=()=>{
const removeMobilePhone = () => {
mobilePhone.value = "";
localStorage.removeItem("mobilePhone"); localStorage.removeItem("mobilePhone");
} };
// const setMerchStatus=(merchStatus:string)=>{
// localStorage.setItem("merchStatus",merchStatus)
// }
const clearToken = () => { const clearToken = () => {
try { try {
token.value = ""; token.value = "";
isLoggedIn.value = false; mobilePhone.value = ""; // 清空手机号
localStorage.removeItem("userInfo"); localStorage.removeItem("userInfo");
localStorage.removeItem("token"); localStorage.removeItem("token");
localStorage.removeItem("tokenExpiry"); // 删除过期时间 localStorage.removeItem("tokenExpiry");
localStorage.removeItem("mobilePhone"); // 确保从本地存储删除
} catch (error) { } catch (error) {
console.error("Error clearing token from localStorage:", error); console.error("清除 Token 失败:", error);
} }
}; };
const isTokenExpired = () => { const isTokenExpired = () => {
try { try {
const expiryTime = localStorage.getItem("tokenExpiry"); const expiryTime = localStorage.getItem("tokenExpiry");
if (!expiryTime) return true; // 如果没有过期时间,认为已过期 if (!expiryTime) return true;
return Date.now() > parseInt(expiryTime, 10); // 当前时间是否超过过期时间
const isExpired = Date.now() > parseInt(expiryTime, 10);
return isExpired;
} catch (error) { } catch (error) {
console.error("Error checking token expiry:", error); return true;
return true; // 默认认为已过期
} }
}; };
const setIdentity=(Identity:string)=>{
localStorage.setItem("Identity", Identity); 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("/");
} }
const removeIdentity=()=>{ });
localStorage.removeItem('Identity')
} // 初始化时检查 Token 状态
onMounted(() => { watchEffect(() => {
try { if (!localStorage.getItem("token")) {
const storedToken = localStorage.getItem("token"); // 本地存储没有 Token确保状态一致
if (storedToken && !isTokenExpired()) { token.value = "";
token.value = storedToken;
isLoggedIn.value = true;
} else {
clearToken(); // 如果 token 过期,清除 token
}
} catch (error) {
console.error("Error retrieving token from localStorage:", error);
} }
}); });

View File

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

View File

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

View File

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

View File

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